# Data Formats JSON schemas for API requests and responses. Schemas define the structure, types, and validation rules for data exchanged with the API. # Adaptive Links > Adaptive links detect the user's platform and install the correct pass for their device vendor. An adaptive link can specify an Apple and Google template. ## Adaptive Link request {#adaptivelinkrequest} An adaptive link request contains identifiers for the templates you used to generate passes from the link and any fields you want to set when users create passes from the link. If you need to create a boarding pass adaptive link, go to the [boarding pass object](/docs/developer/rest-api/wallet/schemas/flights-and-boarding-passes/). [Jump to examples ↓](#adaptivelinkrequest-examples) **All of:** - **`androidTemplateExternalId`** `string` The custom identifier of the Google template for passes issued from this adaptive link. - **`androidTemplateId`** `integer` The Google template for passes issued from the adaptive link. - **`availablePasses`** `integer` The total number of passes that can be created from this link. If absent, the link supports 1,000,000 passes. Default: `1000000` - **`iosTemplateExternalId`** `string` The custom identifier of the Apple template for passes issued from the adaptive link, if assigned. - **`iosTemplateId`** `integer` The iOS template for passes issued from the adaptive link. - **`isPersonalized`** `boolean` If true, each request (when a recipient uses an adaptive link) generates a new pass. You can update any of the individual passes generated from the adaptive link. If you generate the adaptive link using any request parameters, `isPersonalized` is automatically set to `true`. If false, only the first request generates a pass; subsequent requests generate a new instance of the same pass. When `isPersonalized` is `false`, you cannot update passes generated from an adaptive link by updating the adaptive link itself. Rather, you must use the Bulk Update Passes endpoint to push updates to the pass instances generated from the adaptive link. - **`landingPageUrl`** `string` The address users are redirected to if their device type cannot be detected or they cannot install the pass for another reason. Format: `url` - **`parameterEncoding`** `string` When set, allows url-encoded parameters to set or modify values when creating passes from the adaptive link. Possible values: `base64` - **`androidPassLinkId`** `string` A dynamic link for Android passes. Format: `uuid` - **`expirationDate`** `string` When set, indicates the date this adaptive link expires. An expired adaptive link will return a JSON object with an error message instead of a pass. Format: `date-time` - **`installLimit`** `integer` The number of times a user can install the pass. When the pass reaches its limit, attempts to install the pass are met with errors. This limit only affects the adaptive link itself, not actual Apple pass files. If you want to prevent users from installing shared passes on Apple devices, you should also set `sharingStatus` to prohibit sharing. - **`installLimitPerPassExternalId`** `integer` The number of times a user can install the pass that has an `externalId`. When the pass reaches its limit, attempts to install the pass are met with errors. This limit only affects the adaptive link itself, not actual Apple pass files. If you want to prevent users from installing shared passes on Apple devices, you should also set `sharingStatus` to prohibit sharing. - **`iosPassLinkId`** `string` A dynamic link for iOS passes. Format: `uuid` - **`locationRadius`** `integer` Determines the range, in miles, that a pass holder can be from a location to associate their pass with a location. If absent, the default location radius is 10 miles. Write only: true - **`locations`** `array` <[Location object]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#locationobject)> An array of up to 10,000 locations associated with the adaptive link. Each pass supports up to 10 locations. If you exceed this limit, the passes will use the 10 locations nearest to a user (located by IP address) when they install the pass. You can also include a location radius and the maximum number of locations to be matched upon pass creation. Wallet sorts locations to be matched in order from closest to/furthest from the location provided by the device. Write only: true - **`maxResultLocations`** `integer` The maximum number of locations the pass recipient can match. If the pass holder matches multiple locations, locations are returned in order from closest to farthest. - **`payload`** `object` **REQUIRED** The field names and values you want to update for those pass fields. Changing a value will result in a change message notifying the user of the changed value. While the payload object is required, it can be an empty object. Write only: true **OBJECT PROPERTIES** - **`sharingStatus`** `object` A `field` determining whether passes can be shared across users, devices, or not at all. By default, there are no restrictions with regard to users or devices (`multipleHolders`). While this setting uses the same format as other `fields`, you only need to set the `value` within the object. Most other keys are irrelevant this setting, even though they appear in responses; this field should not be visible on passes, so you should not populate label, order, etc. On iOS devices, `oneUserOneDevice` prohibits sharing (`"sharingProhibited": true`); all other values allow sharing. You can override the template setting on Apple Wallet passes. If you set this field in an adaptive link payload, it will only apply to Apple Wallet passes resulting from the adaptive link; Google Wallet passes will always use the sharing setting set at the template level. **OBJECT PROPERTIES** - **`changeMessage`** `string` The message that appears when you update this field. Nullable: true - **`value`** `string` **REQUIRED** Determines whether a pass supports sharing across users, devices, or both. iOS interprets this as a boolean setting: `oneUserOneDevice` prohibits sharing; all other values allow sharing. Possible values: `multipleHolders`, `oneUserAllDevices`, `oneUserOneDevice` Default: `multipleHolders` **Used in:** - [Create Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createadaptivelink) - [Create Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#createadaptivelinkexternalid) - [Create Adaptive Link in project]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#createadaptivelinkexternalprojectid) - [Update Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#updateadaptivelink) **Examples** *Example Adaptive Link* ```json { "iosTemplateId": 12345, "androidTemplateId": 154321, "isPersonalized": "true", "iosPassLinkId": "44e128a5-ac7a-4c9a-be4c-224b6bf81b20", "androidPassLinkId": "44e128a5-ac7a-4c9a-be4c-224b6bf81b20", "landingPageUrl": "https://example.com/landing.html", "expirationDate": "2022-10-01", "availablePasses": 100000, "ttlInDays": 30, "parameterEncoding": "base64", "locationRadius": 10, "maxResultLocations": 5, "payload": {}, "locations": [ { "latitude": 45.5898, "longitude": -122.5951, "city": "Portland", "country": "US", "region": "OR", "regionCode": "97218", "relevantText": "Welcome to Portland... Voodoo Donuts is only 11 miles away", "streetAddress1": "7000 NE Airport Way" }, { "latitude": 45.525492, "longitude": -122.686092, "city": "San Francisco", "country": "US", "region": "CA", "regionCode": "94104", "relevantText": "Welcome to the Ship!", "streetAddress1": "548 Market St. Suite 698370", "streetAddress2": "" }, { "latitude": 45.5205, "longitude": -122.6788, "relevantText": "See you at dinner tonight...or did you already fill up on donuts?" } ] } ``` --- ## Adaptive Link response {#adaptivelinkresponse} An adaptive link response includes URLs that users can access to detect and install a pass. [Jump to examples ↓](#adaptivelinkresponse-examples) **All of:** - **`androidTemplateExternalId`** `string` The custom identifier of the Google template for passes issued from this adaptive link. - **`androidTemplateId`** `integer` The Google template for passes issued from the adaptive link. - **`availablePasses`** `integer` The total number of passes that can be created from this link. If absent, the link supports 1,000,000 passes. Default: `1000000` - **`iosTemplateExternalId`** `string` The custom identifier of the Apple template for passes issued from the adaptive link, if assigned. - **`iosTemplateId`** `integer` The iOS template for passes issued from the adaptive link. - **`isPersonalized`** `boolean` If true, each request (when a recipient uses an adaptive link) generates a new pass. You can update any of the individual passes generated from the adaptive link. If you generate the adaptive link using any request parameters, `isPersonalized` is automatically set to `true`. If false, only the first request generates a pass; subsequent requests generate a new instance of the same pass. When `isPersonalized` is `false`, you cannot update passes generated from an adaptive link by updating the adaptive link itself. Rather, you must use the Bulk Update Passes endpoint to push updates to the pass instances generated from the adaptive link. - **`landingPageUrl`** `string` The address users are redirected to if their device type cannot be detected or they cannot install the pass for another reason. Format: `url` - **`parameterEncoding`** `string` When set, allows url-encoded parameters to set or modify values when creating passes from the adaptive link. Possible values: `base64` - **`adaptiveLinkId`** `integer` A unique identifier for the adaptive link. Use this value to reference the adaptive link in future operations. Read only: true - **`androidPassLinkId`** `string` A dynamic link for Android passes. This field cannot be provided for `links/adaptive/multiple` requests, nor is it provided in those responses (e.g., boarding passes, event tickets, etc.). Format: `uuid` - **`androidUrl`** `string` A pass URL specific to Android users. Format: `url` Read only: true - **`createdAt`** `string` The date and time when the item was created. Format: `date-time` Read only: true - **`expirationDate`** `string` The date this adaptive link expires. This property appears in the response only if it has been explicitly set with a previous API request. Cannot be set to a date more than 1,080 days in the future. Format: `date` - **`iosPassLinkId`** `string` A dynamic link for iOS passes. This field cannot be provided for `links/adaptive/multiple` requests, nor is it provided in those responses (e.g., boarding passes, event tickets, etc.). Format: `uuid` - **`iosUrl`** `string` A pass URL specific to iOS users. Format: `url` Read only: true - **`isExpired`** `boolean` If true, the adaptive link is expired. An expired adaptive link will return a JSON object with an error message instead of a pass. - **`projectId`** `integer` The ID of the project. - **`ttlInDays`** `integer` The number of days of inactivity before this adaptive link automatically expires. Read only: true - **`updatedAt`** `string` The date and time when the item was last updated. Format: `date-time` Read only: true - **`url`** `string` The adaptive link URL itself; using this URL on an Android or iOS device will detect device types and install the correct pass. Format: `url` Read only: true **Used in:** - [Create Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createadaptivelink) - [Create Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#createadaptivelinkexternalid) - [Create Adaptive Link in project]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#createadaptivelinkexternalprojectid) - [Create boarding pass or event ticket Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createboardingpassoreventticketadaptivelinks) - [Get Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#getadaptivelinkexternalid) - [Get Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#getadaptivelink) - [Get Adaptive Link from project]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#getadaptivelinkexternalprojectid) - [List Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#listadaptivelinks) - [List Adaptive Links for a project]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#listadaptivelinksforproject) - [List Adaptive Links for a template]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#listadaptivelinksfortemplate) - [Update Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#updateadaptivelink) **Examples** *Example Adaptive Link response object* ```json { "adaptiveLinkId": "abchd345678", "url": "https://wallet-api.urbanairship.com/v1/pass/adaptive/abchd345678", "iosUrl": "https://wallet-api.urbanairship.com/v1/pass/adaptive/abchd345678/ios", "androidUrl": "https://wallet-api.urbanairship.com/v1/pass/adaptive/abchd345678/android", "landingPageUrl": "https://example.com/landing.html", "isPersonalized": "true", "isExpired": true, "expirationDate": "2020-10-01", "availablePasses": 100000, "ttlInDays": 730 } ``` --- # Audience selection > Select an audience of passes for scheduled updates or other operations. ## Atomic selector {#atomicselector} Determines the property type you want to target. This can be tag, segment, template, pass or externalId. [Jump to examples ↓](#atomicselector-examples) - **`externalId`** `string[string]` The pass external ID. Must also include a template. Example: `1234` - **`passId`** `number[number]` The pass ID. Example: `1234` - **`segment`** `array[string]` The segment ID. Example: `00256e0b-b02f-4f12-a77f-4c3d57078330` - **`tag`** `array[string]` A tag is arbitrary metadata string used to identify and target passes. Example: `cool_tag,cool_cool_tag` - **`templateId`** `number[string]` The template ID. Example: `1234` **Used in:** - [Get schedule]({{< ref "/developer/rest-api/wallet/operations/schedules/" >}}#getschedule) - [List schedules]({{< ref "/developer/rest-api/wallet/operations/schedules/" >}}#listschedules) - [Schedule an update or push notification]({{< ref "/developer/rest-api/wallet/operations/schedules/" >}}#scheduleupdate) - [Update schedule]({{< ref "/developer/rest-api/wallet/operations/schedules/" >}}#updateschedule) **Examples** *Example atomic selector tag* ```json { "audience": { "tag": "TZ_PST" } } ``` *Example atomic selector segment* ```json { "audience": { "segment": "3b13666df-e5b3-4e42-8919-f8d63bd7ce2a" } } ``` *Example atomic selector template* ```json { "audience": { "templateId": 1234 } } ``` *Example atomic selector pass* ```json { "audience": { "passId": 1234 } } ``` *Example atomic selector external ID* ```json { "audience": { "and": [ { "externalId": "test_ext_id" }, { "templateId": "12345" } ] } } ``` --- ## Audience selector {#audienceselector} Determines the passes you want to target. [Jump to examples ↓](#audienceselector-examples) **One of:** - [Compound selector]({{< ref "/developer/rest-api/wallet/schemas/audience-selection/" >}}#compoundselector) Compound selectors combine boolean operators (AND, OR, or NOT) with atomic or nested compound selectors. The syntax can be either implicit, using an array of values associated with an atomic selector, or explicit, employing a boolean operator followed by an array of atomic expression objects. - [Atomic selector]({{< ref "/developer/rest-api/wallet/schemas/audience-selection/" >}}#atomicselector) Determines the property type you want to target. This can be tag, segment, template, pass or externalId. - `string` All passes. **Used in:** - [Get schedule]({{< ref "/developer/rest-api/wallet/operations/schedules/" >}}#getschedule) - [List schedules]({{< ref "/developer/rest-api/wallet/operations/schedules/" >}}#listschedules) - [Schedule an update or push notification]({{< ref "/developer/rest-api/wallet/operations/schedules/" >}}#scheduleupdate) - [Update schedule]({{< ref "/developer/rest-api/wallet/operations/schedules/" >}}#updateschedule) **Examples** *Example pass objects tagged for baseball or basketball and in time zone PST* ```json { "audience": { "AND": [ { "OR": [ { "tag": "baseball" }, { "tag": "basketball" } ] }, { "tag": "TZ_PST" } ] } } ``` *Example pass objects tagged for time zone ET and not for time zone PST* ```json { "audience": { "AND": [ { "tag": "TZ_ET" }, { "NOT": { "tag": "TZ_PST" } } ] } } ``` --- ## Compound selector {#compoundselector} Compound selectors combine boolean operators (AND, OR, or NOT) with atomic or nested compound selectors. The syntax can be either implicit, using an array of values associated with an atomic selector, or explicit, employing a boolean operator followed by an array of atomic expression objects. [Jump to examples ↓](#compoundselector-examples) **One of:** - [Atomic selector]({{< ref "/developer/rest-api/wallet/schemas/audience-selection/" >}}#atomicselector) Determines the property type you want to target. This can be tag, segment, template, pass or externalId. AND selector - **`AND`** `array` **One of:** - [Compound selector]({{< ref "/developer/rest-api/wallet/schemas/audience-selection/" >}}#compoundselector) Compound selectors combine boolean operators (AND, OR, or NOT) with atomic or nested compound selectors. The syntax can be either implicit, using an array of values associated with an atomic selector, or explicit, employing a boolean operator followed by an array of atomic expression objects. - [Atomic selector]({{< ref "/developer/rest-api/wallet/schemas/audience-selection/" >}}#atomicselector) Determines the property type you want to target. This can be tag, segment, template, pass or externalId. OR selector - **`OR`** `array` **One of:** - [Compound selector]({{< ref "/developer/rest-api/wallet/schemas/audience-selection/" >}}#compoundselector) Compound selectors combine boolean operators (AND, OR, or NOT) with atomic or nested compound selectors. The syntax can be either implicit, using an array of values associated with an atomic selector, or explicit, employing a boolean operator followed by an array of atomic expression objects. - [Atomic selector]({{< ref "/developer/rest-api/wallet/schemas/audience-selection/" >}}#atomicselector) Determines the property type you want to target. This can be tag, segment, template, pass or externalId. NOT selector - **`NOT`** `array` **One of:** - [Compound selector]({{< ref "/developer/rest-api/wallet/schemas/audience-selection/" >}}#compoundselector) Compound selectors combine boolean operators (AND, OR, or NOT) with atomic or nested compound selectors. The syntax can be either implicit, using an array of values associated with an atomic selector, or explicit, employing a boolean operator followed by an array of atomic expression objects. - [Atomic selector]({{< ref "/developer/rest-api/wallet/schemas/audience-selection/" >}}#atomicselector) Determines the property type you want to target. This can be tag, segment, template, pass or externalId. **Used in:** - [Get schedule]({{< ref "/developer/rest-api/wallet/operations/schedules/" >}}#getschedule) - [List schedules]({{< ref "/developer/rest-api/wallet/operations/schedules/" >}}#listschedules) - [Schedule an update or push notification]({{< ref "/developer/rest-api/wallet/operations/schedules/" >}}#scheduleupdate) - [Update schedule]({{< ref "/developer/rest-api/wallet/operations/schedules/" >}}#updateschedule) **Examples** *Example implicit OR* ```json { "audience": { "tag": [ "apples", "oranges", "bananas" ] } } ``` *Example explicit OR* ```json { "audience": { "OR": [ { "tag": "apples" }, { "tag": "oranges" }, { "tag": "bananas" } ] } } ``` --- # Event tickets > Schemas for creating events and event ticket adaptive links. An event ticket includes both event information and an array of attendees. ## Attendees {#attendees} An array of attendees for an event. Each object in the array represents a single attendee. [Jump to examples ↓](#attendees-examples) - **`adaptiveLinkExternalId`** `string` A custom identifier for a particular attendee's adaptive link. - **`fields`** `object` The information about or for the individual attendee's event ticket. **OBJECT PROPERTIES** - **`barcodeAltText`** `object` <[Pass field updates]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#fields)> Like other pass creation operations, when providing barcode information, you need only provide the value. When updating a field on a pass or an adaptive link, you need only provide the following items. You cannot update the position of the field or other information held by the template — only the field label, value, and the message the user receives when their pass is updated. - **`barcode_value`** `object` <[Pass field updates]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#fields)> Like other pass creation operations, when providing barcode information, you need only provide the value. When updating a field on a pass or an adaptive link, you need only provide the following items. You cannot update the position of the field or other information held by the template — only the field label, value, and the message the user receives when their pass is updated. - **`confirmationCode`** `object` The confirmation code for the ticket holder's event reservation. **OBJECT PROPERTIES** - **`label`** `string` The label for this field, as you want it to appear on the pass. If you do not provide a label, the event will use a default based off the parent object name. - **`value`** `string` The value for this field. - **`faceValue`** `object` The face value of the ticket, matching what would be printed on a physical version of the ticket. **OBJECT PROPERTIES** - **`currencyCode`** `string` Determines the type of currency if the `formatType` is set to `currency`. Possible values: `USD`, `EUR`, `CNY`, `JPY`, `GPB`, `RUB`, `AUD`, `CHF`, `CAD`, `HKD`, `SEK`, `NZD`, `KRW`, `SGD`, `NOK`, `MXN`, `INR` - **`micros`** `integer` The face value amount in micros. Format: `int64` - **`gate`** `object` The gate the ticket holder should use to enter the venue. **OBJECT PROPERTIES** - **`label`** `string` The label for this field, as you want it to appear on the pass. If you do not provide a label, the event will use a default based off the parent object name. - **`value`** `string` The value for this field. - **`row`** `object` The row of the ticket holder's seat. **OBJECT PROPERTIES** - **`label`** `string` The label for this field, as you want it to appear on the pass. If you do not provide a label, the event will use a default based off the parent object name. - **`value`** `string` The value for this field. - **`seat`** `object` The seat number for the ticket holder. **OBJECT PROPERTIES** - **`label`** `string` The label for this field, as you want it to appear on the pass. If you do not provide a label, the event will use a default based off the parent object name. - **`value`** `string` The value for this field. - **`section`** `object` The section that the ticket holder's seat is in. **OBJECT PROPERTIES** - **`label`** `string` The label for this field, as you want it to appear on the pass. If you do not provide a label, the event will use a default based off the parent object name. - **`value`** `string` The value for this field. - **`sharingStatus`** `object` A `field` determining whether passes can be shared across users, devices, or not at all. By default, there are no restrictions with regard to users or devices (`multipleHolders`). While this setting uses the same format as other `fields`, you only need to set the `value` within the object. Most other keys are irrelevant this setting, even though they appear in responses; this field should not be visible on passes, so you should not populate label, order, etc. On iOS devices, `oneUserOneDevice` prohibits sharing (`"sharingProhibited": true`); all other values allow sharing. You can override the template setting on Apple Wallet passes. If you set this field in an adaptive link payload, it will only apply to Apple Wallet passes resulting from the adaptive link; Google Wallet passes will always use the sharing setting set at the template level. **OBJECT PROPERTIES** - **`changeMessage`** `string` The message that appears when you update this field. Nullable: true - **`value`** `string` **REQUIRED** Determines whether a pass supports sharing across users, devices, or both. iOS interprets this as a boolean setting: `oneUserOneDevice` prohibits sharing; all other values allow sharing. Possible values: `multipleHolders`, `oneUserAllDevices`, `oneUserOneDevice` Default: `multipleHolders` - **`ticketHolderName`** `object` The name of the ticket holder, if the ticket is assigned to a person. **OBJECT PROPERTIES** - **`label`** `string` The label for this field, as you want it to appear on the pass. If you do not provide a label, the event will use a default based off the parent object name. - **`value`** `string` The value for this field. - **`ticketNumber`** `object` The number of the ticket. **OBJECT PROPERTIES** - **`label`** `string` The label for this field, as you want it to appear on the pass. If you do not provide a label, the event will use a default based off the parent object name. - **`value`** `string` The value for this field. - **`ticketType`** `object` The type of ticket, if applicable. Use this field to include information like "Adult", "Child", "VIP", etc. **OBJECT PROPERTIES** - **`label`** `string` The label for this field, as you want it to appear on the pass. If you do not provide a label, the event will use a default based off the parent object name. - **`value`** `string` The value for this field. **Used in:** - [Create boarding pass or event ticket Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createboardingpassoreventticketadaptivelinks) **Examples** *Array of attendees* ```json { "attendees": [ { "adaptiveLinkExternalId": "abch3ExtId4", "fields": { "ticketHolderName": { "label": "Name", "value":"SMITH/SAM" }, "seat": { "value":"11" }, "ticketType": { "value":"VIP" }, "ticketNumber": { "value":"20595923485" }, "barcode_value": { "value": "1237" }, "barcodeAltText": { "value": "1237" }, "faceValue": { "value": "100" } } }, { "adaptiveLinkExternalId": "abch3ExtId5", "fields":{ "ticketHolderName": { "label": "Name", "value":"SMITH/MARY" }, "seat": { "value":"12" }, "ticketType": { "value":"VIP" }, "ticketNumber": { "value":"20595923486" }, "barcode_value": { "value": "1238" }, "barcodeAltText": { "value": "1238" }, "faceValue": { "value": "100" } } }, { "fields": { "ticketHolderName": { "label": "Name", "value":"SMITH/SARA" }, "seat":{ "value":"13" }, "ticketType":{ "value":"VIP" }, "ticketNumber":{ "value":"20595923487" }, "barcode_value": { "value": "1239" }, "barcodeAltText": { "value": "1239" }, "faceValue": { "value": "100" } } } ] } ``` --- ## Event request {#eventrequest} Represents an event scheduled at a specific time and venue. [Jump to examples ↓](#eventrequest-examples) - **`fields`** `object` **REQUIRED** Contains the objects representing an event. **OBJECT PROPERTIES** - **`doorsOpen`** `object` The date and time when ticket holders can begin to enter the venue. **OBJECT PROPERTIES** - **`label`** `string` The title for this event field as you want it to appear on a pass. Defaults to `Doors Open`. Example: `Doors Open` - **`value`** `string` Format: `date-time` - **`endTime`** `object` The date and time when the event ends. **OBJECT PROPERTIES** - **`label`** `string` The title for this event field, as you want it to appear on a pass. Defaults to `End Time`. Example: `End Time` - **`value`** `string` Format: `date-time` - **`eventName`** `object` **REQUIRED** The value represents the event name. **OBJECT PROPERTIES** - **`label`** `string` The label for this field, as you want it to appear on the pass. If you do not provide a label, the event will use a default based off the parent object name. - **`value`** `string` - **`startTime`** `object` The date and time when the event begins. **OBJECT PROPERTIES** - **`label`** `string` The title for this event field, as you want it to appear on a pass. Defaults to `Start Time`. Example: `Start Time` - **`value`** `string` Format: `date-time` - **`venueAddress`** `object` **REQUIRED** The address of the venue. **OBJECT PROPERTIES** - **`label`** `string` The label for this field, as you want it to appear on the pass. If you do not provide a label, the event will use a default based off the parent object name. - **`value`** `string` - **`venueTitle`** `object` **REQUIRED** The name of the venue where the event will take place. **OBJECT PROPERTIES** - **`label`** `string` The label for this field, as you want it to appear on the pass. If you do not provide a label, the event will use a default based off the parent object name. - **`value`** `string` - **`passGroups`** `array[string]` An array of eventId or eventExternalId values representing a group. You can reference the group to make changes to all associated events. You can set pass groups when creating an event or when creating an event ticket adaptive link. **Used in:** - [Create boarding pass or event ticket Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createboardingpassoreventticketadaptivelinks) - [Create event]({{< ref "/developer/rest-api/wallet/operations/events/" >}}#createevent) - [Create event with external ID]({{< ref "/developer/rest-api/wallet/operations/events/" >}}#createeventexternalid) - [Get event]({{< ref "/developer/rest-api/wallet/operations/events/" >}}#getevent) - [Update event]({{< ref "/developer/rest-api/wallet/operations/events/" >}}#updateevent) **Examples** *Example event request object* ```json { "passGroups": ["giants_2019-09-25"], "fields": { "eventName": { "label": "Event", "value": "LA Dodgers at SF Giants" }, "venueTitle": { "label": "Venue", "value": "AT&T Park" }, "venueAddress": { "label": "Address", "value": "24 Willie Mays Plaza\nSan Francisco, CA 94107" }, "doorsOpen": { "label": "Doors Open", "value": "2019-09-25T08:35:00" }, "startTime": { "label": "Start Time", "value": "2019-09-25T09:00:00" }, "endTime": { "label": "End Time", "value": "2019-09-25T11:00:00" } } } ``` --- ## Event response {#eventresponse} An event response returns identifiers that you can use to reference the event in other endpoints, along with the complete event request body. [Jump to examples ↓](#eventresponse-examples) **All of:** - [Event request]({{< ref "/developer/rest-api/wallet/schemas/event-tickets/" >}}#eventrequest) Represents an event scheduled at a specific time and venue. - **`createdAt`** `string` The date and time when the item was created. Format: `date-time` Read only: true - **`eventExternalId`** `string` An external identifier for an event. You can only assign an external identifier when creating an event. If you do assign an external identifier, requests for events or passes referencing the event will return the external ID in addition to the `eventId` created within Airship. - **`eventId`** `integer` The Airship-created identifier for an event. Read only: true - **`projectExternalId`** `string` Returned if you created the event using an external ID for the project. - **`projectId`** `integer` The ID of the Wallet project. - **`updatedAt`** `string` The date and time when the item was last updated. Format: `date-time` Read only: true **Used in:** - [Create event]({{< ref "/developer/rest-api/wallet/operations/events/" >}}#createevent) - [Create event with external ID]({{< ref "/developer/rest-api/wallet/operations/events/" >}}#createeventexternalid) - [Get event]({{< ref "/developer/rest-api/wallet/operations/events/" >}}#getevent) - [Update event]({{< ref "/developer/rest-api/wallet/operations/events/" >}}#updateevent) **Examples** *Response object* ```json { "eventId": 1234, "eventExternalId": "event123ExtId", "projectId": 12345, "projectExternalId": "project123ExtId", "createdAt": "2018-09-24T09:12:32Z", "updatedAt": "2018-09-24T09:12:32Z", "passGroups": ["giants_2019-09-25"], "fields": { "eventName": { "label": "Event", "value": "LA Dodgers at SF Giants" }, "venueTitle": { "label": "Venue", "value": "AT&T Park" }, "venueAddress": { "label": "Address", "value": "24 Willie Mays Plaza\nSan Francisco, CA 94107" }, "doorsOpen": { "label": "Doors Open", "value": "2019-09-25T08:35:00" }, "startTime": { "label": "Start Time", "value": "2019-09-25T09:00:00" }, "endTime": { "label": "End Time", "value": "2019-09-25T11:00:00" } } } ``` --- ## Event ticket Adaptive Link request {#eventticketrequest} An event ticket requires similar information to other adaptive link types, but does not support some of the same fields, and requires event and attendee information. Like other adaptive links, you must provide the `id` or `externalId` of an iOS or Android template. You can create the event within this request or specify an event by `eventId` or `eventExternalId`. In either case, you must also provide an array of attendees for the event. [Jump to examples ↓](#eventticketrequest-examples) **All of:** - **`androidTemplateExternalId`** `string` The custom identifier of the Google template for passes issued from this adaptive link. - **`androidTemplateId`** `integer` The Google template for passes issued from the adaptive link. - **`availablePasses`** `integer` The total number of passes that can be created from this link. If absent, the link supports 1,000,000 passes. Default: `1000000` - **`iosTemplateExternalId`** `string` The custom identifier of the Apple template for passes issued from the adaptive link, if assigned. - **`iosTemplateId`** `integer` The iOS template for passes issued from the adaptive link. - **`isPersonalized`** `boolean` If true, each request (when a recipient uses an adaptive link) generates a new pass. You can update any of the individual passes generated from the adaptive link. If you generate the adaptive link using any request parameters, `isPersonalized` is automatically set to `true`. If false, only the first request generates a pass; subsequent requests generate a new instance of the same pass. When `isPersonalized` is `false`, you cannot update passes generated from an adaptive link by updating the adaptive link itself. Rather, you must use the Bulk Update Passes endpoint to push updates to the pass instances generated from the adaptive link. - **`landingPageUrl`** `string` The address users are redirected to if their device type cannot be detected or they cannot install the pass for another reason. Format: `url` - **`parameterEncoding`** `string` When set, allows url-encoded parameters to set or modify values when creating passes from the adaptive link. Possible values: `base64` - **`payload`** `object` **OBJECT PROPERTIES** - **`events`** `array` Each object in the array represents an event. Each event object must specify the `eventId` or `eventExternalId` of an existing event, or contain the `fields` object sufficient to create a new event. You can also provide the `eventExternalId` in conjunction with the `fields` object to assign an eventExternalId to a new event. **One of:** - `allOf` If you specify the `eventId` or `eventExternalId` of an existing event, you need only provide the attendees for the event ticket. - `allOf` If creating an event, you can provide an external ID for the event. You must then provide a complete event object. **Used in:** - [Create boarding pass or event ticket Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createboardingpassoreventticketadaptivelinks) **Examples** *Example event ticket request object* ```json { "iosTemplateExternalId": "ios123ExtId", "androidTemplateExternalId": "android123ExtId", "payload": { "events": [ { "eventExternalId": "event123ExtId", "passGroups": [ "giants_2019-09-25" ], "fields": { "eventName": { "value": "LA Dodgers at SF Giants" }, "venueTitle": { "value": "AT&T Park" }, "venueAddress": { "label": "Address", "value": "24 Willie Mays Plaza\nSan Francisco, CA 94107" }, "doorsOpen": { "label": "Doors Open", "value": "2019-09-25T08:35:00" }, "startTime": { "label": "Start Time", "value": "2019-09-25T09:00:00" }, "endTime": { "label": "End Time", "value": "2019-09-25T11:00:00" } }, "attendees": [ { "adaptiveLinkExternalId": "abch3ExtId1", "fields": { "ticketHolderName": { "label": "Name", "value": "SMITH/JOE" }, "seat": { "value": "33" }, "ticketType": { "value": "VIP" }, "barcode_value": { "value": "1234" }, "barcodeAltText": { "value": "1234" }, "faceValue": { "value": "50" } } }, { "adaptiveLinkExternalId": "abch3ExtId2", "fields": { "ticketHolderName": { "label": "Name", "value": "SMITH/SALLY" }, "seat": { "value": "34" }, "ticketType": { "value": "VIP" }, "barcode_value": { "value": "1235" }, "barcodeAltText": { "value": "1235" }, "faceValue": { "value": "50" } } }, { "adaptiveLinkExternalId": "abch3ExtId2", "fields": { "ticketHolderName": { "label": "Name", "value": "SMITH/JACK" }, "seat": { "value": "35" }, "ticketType": { "value": "VIP" }, "barcode_value": { "value": "1236" }, "barcodeAltText": { "value": "1236" }, "faceValue": { "value": "50" } } } ] } ] } } ``` --- ## Event ticket Adaptive Link response {#eventticketresponse} The response for event ticket operations is much like any other adaptive link, with the addition of the identifier of the event and an HTTP status for each individual adaptive link. [Jump to examples ↓](#eventticketresponse-examples) **All of:** - [Adaptive Link response]({{< ref "/developer/rest-api/wallet/schemas/adaptive-links/" >}}#adaptivelinkresponse) An adaptive link response includes URLs that users can access to detect and install a pass. - **`eventExternalId`** `string` An external identifier for an event. You can only assign an external identifier when creating an event. If you do assign an external identifier, requests for events or passes referencing the event will return the external ID in addition to the `eventId` created within Airship. - **`eventId`** `integer` The Airship-created identifier for an event. Read only: true - **`status`** `integer` The HTTP status code for the adaptive link operation. Example: `200` **Used in:** - [Create boarding pass or event ticket Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createboardingpassoreventticketadaptivelinks) **Examples** *Example event ticket response array* ```json [ { "adaptiveLinkId": "abchd345678", "adaptiveLinkExternalId": "abch3ExtId1", "iosTemplateId": 12345, "iosTemplateExternalId": "ios123ExtId", "androidTemplateId": 154321, "androidTemplateExternalId": "android123ExtId", "eventId": 476, "eventExternalId": "event123ExtId", "url": "https://wallet-api.urbanairship.com/v1/pass/adaptive/abchd345678", "iosUrl": "https://wallet-api.urbanairship.com/v1/pass/adaptive/abchd345678/ios", "androidUrl": "https://wallet-api.urbanairship.com/v1/pass/adaptive/abchd345678/android", "createdAt": "2018-09-24T09:12:32Z", "updatedAt": "2018-09-24T09:15:32Z", "isPersonalized": "false", "availablePasses": 1000000, "iosPassLinkId": "a5711a29-7b38-41f2-8202-8f792df89b0b", "androidPassLinkId": "c1f512e5-fda3-4ddf-82c6-066c5681161d", "status": 200 }, {...}, {...} ] ``` --- # Flights and boarding passes > Schemas for creating flights and boarding pass adaptive links. A Boarding pass includes both flight information and an array of passengers. ## Boarding pass Adaptive Link request {#boardingpassrequest} A boarding pass adaptive link requires similar information to other adaptive link types, but the payload includes flight information and an array of passengers for each flight. Like other adaptive links, you must provide the `id` or `externalId` of an iOS or Android template. [Jump to examples ↓](#boardingpassrequest-examples) **All of:** - **`androidTemplateExternalId`** `string` The custom identifier of the Google template for passes issued from this adaptive link. - **`androidTemplateId`** `integer` The Google template for passes issued from the adaptive link. - **`availablePasses`** `integer` The total number of passes that can be created from this link. If absent, the link supports 1,000,000 passes. Default: `1000000` - **`iosTemplateExternalId`** `string` The custom identifier of the Apple template for passes issued from the adaptive link, if assigned. - **`iosTemplateId`** `integer` The iOS template for passes issued from the adaptive link. - **`isPersonalized`** `boolean` If true, each request (when a recipient uses an adaptive link) generates a new pass. You can update any of the individual passes generated from the adaptive link. If you generate the adaptive link using any request parameters, `isPersonalized` is automatically set to `true`. If false, only the first request generates a pass; subsequent requests generate a new instance of the same pass. When `isPersonalized` is `false`, you cannot update passes generated from an adaptive link by updating the adaptive link itself. Rather, you must use the Bulk Update Passes endpoint to push updates to the pass instances generated from the adaptive link. - **`landingPageUrl`** `string` The address users are redirected to if their device type cannot be detected or they cannot install the pass for another reason. Format: `url` - **`parameterEncoding`** `string` When set, allows url-encoded parameters to set or modify values when creating passes from the adaptive link. Possible values: `base64` - **`payload`** `object` A boarding pass adaptive link object takes both flight and passenger information. You can provide the `flightId` or `flightExternalId` of an existing flight. Or, you can define a new flight using the `flights` object. If defining a new flight, you can provide a `flightExternalId`. Write only: true **OBJECT PROPERTIES** - **`flights`** `array` Each object in the array represents an event. Each event object must specify the `flightId` or `flightExternalId` of an existing event, or contain the `fields` object sufficient to create a new event. You can also provide the `eventExternalId` in conjunction with the `fields` object to assign an eventExternalId to a new event. **One of:** - `allOf` You can specify the `flightId` or `flightExternalId` of an existing flight, and then you need only populate the passengers for the flight. - `allOf` You can create a flight as a part of a boarding pass request. You can provide a `flightExternalId` for the flight you are creating, and then provide a complete flight object in addition to the array of `passengers` for the flight. - **`isEventTicketUpdatePermitted`** `boolean` True by default. If false, event information for existing events will not be updated as part of the POST call to the Adaptive Link API; a new event will still be created if it does not yet exist. Default: `true` - **`isFlightUpdatePermitted`** `boolean` True by default. If false, flight information for existing flights will not be updated as part of the POST call to the Adaptive Link API; a new flight will still be created if it does not yet exist. Default: `true` **Used in:** - [Create boarding pass or event ticket Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createboardingpassoreventticketadaptivelinks) **Examples** *Example boarding pass Adaptive Link* ```json { "iosTemplateExternalId": "ios123ExtId", "androidTemplateExternalId": "android123ExtId", "payload": { "isEventTicketUpdatePermitted": false, "flights": [ { "flightExternalId": "flight123ExtId", "fields": { "flightNumber": { "value": "815" }, "airlineCode": { "value": "OA" }, "airlineName": { "value": "Sabine Airlines" }, "departureAirport": { "label": "San Francisco", "value": "SFO" }, "departureGate": { "label": "Gate #", "value": "25" }, "boardingTime": { "value": "2018-07-30T08:35:00" }, "departureTime": { "value": "2018-07-30T09:00:00" }, "arrivalAirport": { "label": "Portland", "value": "PDX" }, "arrivalTime": { "value": "2018-07-30T11:00:00" }, "flightStatus": { "value": "scheduled" } }, "passGroups": ["sfo-pdx-20180730"], "passengers": [ { "adaptiveLinkExternalId": "abch3ExtId1", "fields": { "seatNumber": { "value": "13A" }, "confirmationCode": { "value": "E4583B" }, "passengerName": { "value": "SMITH/JOE" }, "specialAssistance": { "label": "Special Assistance", "value": "Wheelchair" }, "barcode_value": { "value": "12345" }, "barcodeAltText": { "value": "12345" } } }, { "adaptiveLinkExternalId": "abch3ExtId2", "fields": { "seatNumber": { "value": "13B" }, "confirmationCode": { "value": "E4583B" }, "passengerName": { "value": "SMITH/SALLY" }, "barcode_value": { "value": "12346" }, "barcodeAltText": { "value": "12346" } } }, { "adaptiveLinkExternalId": "abch3ExtId2", "fields": { "seatNumber": { "value": "13C" }, "confirmationCode": { "value": "E4583B" }, "passengerName": { "value": "SMITH/SAM" }, "barcode_value": { "value": "12347" }, "barcodeAltText": { "value": "12347" } } } ] } ] } } ``` --- ## Boarding pass Adaptive Link response {#boardingpassresponse} The boarding pass operations return responses like other adaptive links, with the addition of the identifier of the event and an HTTP status for each individual adaptive link. Like other adaptive links, you must provide the `id` or `externalId` of an iOS or Android template. [Jump to examples ↓](#boardingpassresponse-examples) **All of:** - [Adaptive Link response]({{< ref "/developer/rest-api/wallet/schemas/adaptive-links/" >}}#adaptivelinkresponse) An adaptive link response includes URLs that users can access to detect and install a pass. - **`flightExternalId`** `string` An external, custom identifier for a flight. You can reference flights by `flightExternalId` rather than the Airship-generated `flightId`. When creating boarding passes, if you specify an existing flight by `flightExternalId`, you do not need to provide flight information in the `fields` object. If creating a new flight in the `fields` object, you can assign a new `flightExternalId` to the new flight. - **`flightId`** `integer` A unique, auto-generated identifier for a flight. When creating boarding passes, if you specify a flight by ID, you do not need to define the flight in the `fields` object. - **`status`** `integer` The HTTP status code for the adaptive link operation. Example: `200` **Used in:** - [Create boarding pass or event ticket Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createboardingpassoreventticketadaptivelinks) **Examples** *Example boarding pass response* ```http HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 { "links": [ { "status": 201, "adaptiveLinkId": "abchd345678", "adaptiveLinkExternalId": "abch3ExtId1", "iosTemplateId": 12345, "iosTemplateExternalId": "ios123ExtId", "androidTemplateId": 154321, "androidTemplateExternalId": "android123ExtId", "url": "https://wallet-api.urbanairship.com/v1/pass/adaptive/abchd345678", "iosUrl": "https://wallet-api.urbanairship.com/v1/pass/adaptive/abchd345678/ios", "androidUrl": "https://wallet-api.urbanairship.com/v1/pass/adaptive/abchd345678/android", "createdAt": "2018-07-05T09:12:32Z", "updatedAt": "2018-07-05T09:12:32Z", "isPersonalized": "false", "availablePasses": 1000000, "ttlInDays": 30, "flightId": 465, "flightExternalId": "flight123ExtId", "iosPassLinkId": "eb94e8e0-4353-4e0b-bfe9-cfd21c52a540", "androidPassLinkId": "41c1ea48-f469-4968-b610-a98629ea19bc" }, { "status": 201, "adaptiveLinkId": "abchd345Id2", "adaptiveLinkExternalId": "abch3ExtId2", "iosTemplateId": 12345, "iosTemplateExternalId": "ios123ExtId", "androidTemplateId": 154321, "androidTemplateExternalId": "android123ExtId", "url": "https://wallet-api.urbanairship.com/v1/pass/adaptive/abchd345Id2", "iosUrl": "https://wallet-api.urbanairship.com/v1/pass/adaptive/abchd345Id2/ios", "androidUrl": "https://wallet-api.urbanairship.com/v1/pass/adaptive/abchd345Id2/android", "createdAt": "2018-07-05T09:12:32Z", "updatedAt": "2018-07-05T09:12:32Z", "isPersonalized": "false", "availablePasses": 1000000, "ttlInDays": 30, "flightId": 465, "flightExternalId": "flight123ExtId", "iosPassLinkId": "5d370e0d-0aa9-45c3-b7ab-eff0a3d4995b", "androidPassLinkId": "c60bd6c0-8f1e-4419-abb0-9f6fcb8a6fab" }, { "status": 201, "adaptiveLinkId": "abchd345Id2", "adaptiveLinkExternalId": "abch3ExtId2", "iosTemplateId": 12345, "iosTemplateExternalId": "ios123ExtId", "androidTemplateId": 154321, "androidTemplateExternalId": "android123ExtId", "url": "https://wallet-api.urbanairship.com/v1/pass/adaptive/abchd345Id2", "iosUrl": "https://wallet-api.urbanairship.com/v1/pass/adaptive/abchd345Id2/ios", "androidUrl": "https://wallet-api.urbanairship.com/v1/pass/adaptive/abchd345Id2/android", "createdAt": "2018-07-05T09:12:32Z", "updatedAt": "2018-07-05T09:12:32Z", "isPersonalized": "false", "availablePasses": 1000000, "ttlInDays": 30, "flightId": 465, "flightExternalId": "flight123ExtId", "iosPassLinkId": "5d370e0d-0aa9-45c3-b7ab-eff0a3d4995b", "androidPassLinkId": "c60bd6c0-8f1e-4419-abb0-9f6fcb8a6fab" } ] } ``` --- ## Boarding pass semantics {#boardingpasssemantics} For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data that enhances passes. You can nest this object within `fields`. **Any of:** - [Passenger semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#passengersemantics) For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `passengerName` and `seats`, that enhances passes. You can nest this object within `fields`. - [Flight semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#flightsemantics) For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `flightNumber` and `originalDepartureTime`, that enhances passes. You can nest this object within `fields`. **Used in:** - [Create boarding pass or event ticket Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createboardingpassoreventticketadaptivelinks) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassexternalid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createpass) - [Create pass from a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassfromtemplateexternalid) - [Generates a pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createdynamiclink) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#getpassfromtemplateexternalid) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#getpass) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassexternalid) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#updatepass) - [Update pass for a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassfromtemplateexternalid) - [Update passes from Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesexternalid) - [Update passes from Adaptive Link for an external project]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesfromadaptivelinkexternalid) --- ## Flight object {#flightrequest} A complete flight request object. The presence or absence of fields in the flight object may slightly affect the design of boarding passes. See [Google Wallet Boarding Pass Design](https://developers.google.com/pay/passes/guides/pass-verticals/boarding-passes/design) for more information on rendering logic for Google Wallet Boarding Passes. [Jump to examples ↓](#flightrequest-examples) - **`fields`** `object` **OBJECT PROPERTIES** - **`actualArrivalTime`** `object` The date and time when the flight actually lands. This field is normally populated in updates to the flight, as real-time information becomes available for the benefit of ticket holders. **OBJECT PROPERTIES** - **`label`** `string` A label representing the field on the pass. Read only: true - **`semantics`** `object` <[Flight semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#flightsemantics)> **APPLE ONLY** Field-level flight semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `flightNumber` and `originalDepartureTime`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` Format: `date-time` - **`actualDepartureTime`** `object` The date and time when the flight actually departs. This field is normally populated in updates to the flight, as real-time information becomes available. **OBJECT PROPERTIES** - **`label`** `string` A label representing the field on the pass. Read only: true - **`semantics`** `object` <[Flight semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#flightsemantics)> **APPLE ONLY** Field-level flight semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `flightNumber` and `originalDepartureTime`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` Format: `date-time` - **`airlineAllianceLogo`** `object` A URL for the airline alliance logo, if the airline belongs to an alliance. **OBJECT PROPERTIES** - **`label`** `string` A label representing the field on the pass. Read only: true - **`value`** `string` Format: `url` - **`airlineCode`** `object` **REQUIRED** The airline code. **OBJECT PROPERTIES** - **`label`** `string` A label representing the field on the pass. Read only: true - **`semantics`** `object` <[Flight semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#flightsemantics)> **APPLE ONLY** Field-level flight semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `flightNumber` and `originalDepartureTime`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` - **`airlineLogo`** `object` A URL for the airline logo, shown on the front of the pass. **OBJECT PROPERTIES** - **`label`** `string` A label representing the field on the pass. Read only: true - **`value`** `string` Format: `url` - **`airlineName`** `object` **REQUIRED** The airline name. **OBJECT PROPERTIES** - **`label`** `string` A label representing the field on the pass. Read only: true - **`semantics`** `object` <[Flight semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#flightsemantics)> **APPLE ONLY** Field-level flight semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `flightNumber` and `originalDepartureTime`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` - **`arrivalAirport`** `object` **REQUIRED** The airport the flight arrives at. **OBJECT PROPERTIES** - **`label`** `string` A label representing the field on the pass. Read only: true - **`semantics`** `object` <[Flight semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#flightsemantics)> **APPLE ONLY** Field-level flight semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `flightNumber` and `originalDepartureTime`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` - **`arrivalGate`** `object` The gate that the flight arrives at. **OBJECT PROPERTIES** - **`label`** `string` A label representing the field on the pass. Read only: true - **`semantics`** `object` <[Flight semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#flightsemantics)> **APPLE ONLY** Field-level flight semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `flightNumber` and `originalDepartureTime`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` - **`arrivalTerminal`** `object` The terminal that the flight arrives at. **OBJECT PROPERTIES** - **`label`** `string` A label representing the field on the pass. Read only: true - **`semantics`** `object` <[Flight semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#flightsemantics)> **APPLE ONLY** Field-level flight semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `flightNumber` and `originalDepartureTime`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` - **`arrivalTime`** `object` The date and time the flight is scheduled to arrive at the `arrivalAirport`. **OBJECT PROPERTIES** - **`label`** `string` A label representing the field on the pass. Read only: true - **`semantics`** `object` <[Flight semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#flightsemantics)> **APPLE ONLY** Field-level flight semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `flightNumber` and `originalDepartureTime`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` Format: `date-time` - **`boardingPolicy`** `object` The boarding policy for the airline and flight. If unset, Google will use `zoneBased`. **OBJECT PROPERTIES** - **`label`** `string` A label representing the field on the pass. Read only: true - **`semantics`** `object` <[Flight semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#flightsemantics)> **APPLE ONLY** Field-level flight semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `flightNumber` and `originalDepartureTime`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` Possible values: `boardingPolicyOther`, `groupBased`, `zoneBased` - **`boardingTime`** `object` The date and time when the flight boards. **OBJECT PROPERTIES** - **`label`** `string` A label representing the field on the pass. Read only: true - **`semantics`** `object` <[Flight semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#flightsemantics)> **APPLE ONLY** Field-level flight semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `flightNumber` and `originalDepartureTime`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` Format: `date-time` - **`departureAirport`** `object` **REQUIRED** The airport that the flight departs from. **OBJECT PROPERTIES** - **`label`** `string` A label representing the field on the pass. Read only: true - **`semantics`** `object` <[Flight semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#flightsemantics)> **APPLE ONLY** Field-level flight semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `flightNumber` and `originalDepartureTime`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` - **`departureGate`** `object` The airport gate the flight departs from. **OBJECT PROPERTIES** - **`label`** `string` A label representing the field on the pass. Read only: true - **`semantics`** `object` <[Flight semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#flightsemantics)> **APPLE ONLY** Field-level flight semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `flightNumber` and `originalDepartureTime`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` - **`departureTerminal`** `object` The airport terminal the flight departs from. **OBJECT PROPERTIES** - **`label`** `string` A label representing the field on the pass. Read only: true - **`semantics`** `object` <[Flight semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#flightsemantics)> **APPLE ONLY** Field-level flight semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `flightNumber` and `originalDepartureTime`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` - **`departureTime`** `object` The date and time when the flight is scheduled to depart. **OBJECT PROPERTIES** - **`label`** `string` A label representing the field on the pass. Read only: true - **`semantics`** `object` <[Flight semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#flightsemantics)> **APPLE ONLY** Field-level flight semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `flightNumber` and `originalDepartureTime`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` Format: `date-time` - **`flightNumber`** `object` **REQUIRED** The flight number. **OBJECT PROPERTIES** - **`label`** `string` A label representing the field on the pass. Read only: true - **`semantics`** `object` <[Flight semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#flightsemantics)> **APPLE ONLY** Field-level flight semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `flightNumber` and `originalDepartureTime`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` - **`flightStatus`** `object` The status of the flight. **OBJECT PROPERTIES** - **`label`** `string` A label representing the field on the pass. Read only: true - **`semantics`** `object` <[Flight semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#flightsemantics)> **APPLE ONLY** Field-level flight semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `flightNumber` and `originalDepartureTime`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` Possible values: `active`, `cancelled`, `landed`, `redirected`, `scheduled` - **`seatingPolicy`** `object` The seating policy for the airline and flight. If unset, Google will use `cabinBased`. **OBJECT PROPERTIES** - **`label`** `string` A label representing the field on the pass. Read only: true - **`semantics`** `object` <[Flight semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#flightsemantics)> **APPLE ONLY** Field-level flight semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `flightNumber` and `originalDepartureTime`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` Possible values: `cabinBased`, `classBased`, `seatClassPolicyOther`, `tierBased` - **`semantics`** `object` <[Flight semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#flightsemantics)> **APPLE ONLY** Top-level flight semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `flightNumber` and `originalDepartureTime`, that enhances passes. You can nest this object within `fields`. - **`universalLinks`** `object` <[Universal links]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#universallinksobject)> Special web links containing JSON key-value pairs used by Wallet to render buttons in the relevant sections of the pass. A list of key-value pairs that represents partner URLs. - **`passGroups`** `array[string]` An array of eventId or eventExternalId values representing a group. You can reference the group to make changes to all associated events. You can set pass groups when creating an event or when creating an event ticket adaptive link. **Used in:** - [Create boarding pass or event ticket Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createboardingpassoreventticketadaptivelinks) - [Create flight]({{< ref "/developer/rest-api/wallet/operations/flights/" >}}#createflight) - [Create flight with external ID]({{< ref "/developer/rest-api/wallet/operations/flights/" >}}#createflightexternalid) - [Get flight]({{< ref "/developer/rest-api/wallet/operations/flights/" >}}#getflight) - [Update flight]({{< ref "/developer/rest-api/wallet/operations/flights/" >}}#updateflight) **Examples** *Example flight request object* ```json { "passGroups": ["sfo-pdx-20180730"], "fields": { "flightNumber": { "value": "815" }, "airlineCode": { "value": "OA" }, "airlineName": { "value": "Sabine Airlines" }, "departureAirport": { "label": "San Francisco", "value": "SFO" }, "departureGate": { "label": "Gate #", "value": "25" }, "boardingTime": { "value": "2018-07-30T08:35:00" }, "departureTime": { "value": "2018-07-30T09:00:00" }, "arrivalAirport": { "label": "Portland", "value": "PDX" }, "arrivalTime": { "value": "2018-07-30T11:00:00" }, "flightStatus": { "value": "scheduled" } } } ``` --- ## Flight response {#flightresponse} A complete flight response, including identifiers to reference the flight and the fields defined within the flight. [Jump to examples ↓](#flightresponse-examples) **All of:** - [Flight object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#flightrequest) A complete flight request object. The presence or absence of fields in the flight object may slightly affect the design of boarding passes. See [Google Wallet Boarding Pass Design](https://developers.google.com/pay/passes/guides/pass-verticals/boarding-passes/design) for more information on rendering logic for Google Wallet Boarding Passes. - **`createdAt`** `string` The date and time when the item was created. Format: `date-time` Read only: true - **`flightId`** `integer` A unique, auto-generated identifier for the flight. Use this ID to reference the flight in future operations. Read only: true - **`projectExternalId`** `string` The identifier for the external project that the flight is associated with. Presently only if the project uses an external identifier. Read only: true - **`projectId`** `string` The project the flight is associated with. Read only: true - **`updatedAt`** `string` The date and time when the item was last updated. Format: `date-time` Read only: true **Used in:** - [Create flight]({{< ref "/developer/rest-api/wallet/operations/flights/" >}}#createflight) - [Create flight with external ID]({{< ref "/developer/rest-api/wallet/operations/flights/" >}}#createflightexternalid) - [Get flight]({{< ref "/developer/rest-api/wallet/operations/flights/" >}}#getflight) - [Update flight]({{< ref "/developer/rest-api/wallet/operations/flights/" >}}#updateflight) **Examples** *Example flight response object* ```json { "flightId": 465, "flightExternalId": "flight123ExtId", "projectId": "12345", "projectExternalId": "project123ExtId", "createdAt": "2018-07-05T09:12:32Z", "updatedAt": "2018-07-05T09:12:32Z", "passGroups": ["sfo-pdx-20180730"], "fields": { "flightNumber": { "label": "Flight Number", "value": "815" }, "airlineCode": { "label": "Airline Code", "value": "OA" }, "airlineName": { "label": "Airline Name", "value": "Sabine Airlines" }, "departureAirport": { "label": "San Francisco", "value": "SFO" }, "departureGate": { "label": "Gate #", "value": "25" }, "boardingTime": { "label": "Boarding Time", "value": "2018-07-30T08:35:00" }, "departureTime": { "label": "Departure Time", "value": "2018-07-30T09:00:00" }, "arrivalAirport": { "label": "Portland", "value": "PDX" }, "arrivalGate": { "label": "Arrival Gate", "value": "" }, "arrivalTime": { "label": "Arrival Time", "value": "2018-07-30T11:00:00" }, "flightStatus": { "label": "Flight Status", "value": "scheduled" } } } ``` --- ## Flight semantics object {#flightsemantics} For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `flightNumber` and `originalDepartureTime`, that enhances passes. You can nest this object within `fields`. [Jump to examples ↓](#flightsemantics-examples) - **`airlineCode`** `string` The two-character IATA airline code. - **`currentArrivalDate`** `string` The ISO 8601 date-time the flight is currently scheduled to arrive. Format: `date-time` - **`currentBoardingDate`** `string` The ISO 8601 date-time the flight is currently scheduled to begin boarding. Format: `date-time` - **`currentDepartureDate`** `string` The ISO 8601 date-time the flight is currently scheduled to depart. Format: `date-time` - **`departureAirportCode`** `string` **REQUIRED** The three-letter IATA airport code the flight is departing from. - **`departureCityName`** `string` **REQUIRED** The name of the departure city. - **`departureGate`** `string` The gate number or letters of the departure gate. - **`departureLocation`** `object` The geographic coordinates of the transit departure location. - **`departureLocationSecurityPrograms`** `object` A list of security programs that exist in the departure airport. **Any of:** - [Transit security programs]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#securityprograms) Security program names. - **`departureLocationTimeZone`** `string` **REQUIRED** The time zone for the departure location, such as America/Los_Angeles. - **`departureTerminal`** `string` The name or letter of the departure terminal. - **`destinationAirportCode`** `string` **REQUIRED** The three-letter IATA airport code the flight is going to. - **`destinationCityName`** `string` **REQUIRED** The name of the destination city. - **`destinationGate`** `string` The gate number or letters of the arrival gate. - **`destinationLocation`** `object` The geographic coordinates of the transit destination location. - **`destinationLocationSecurityPrograms`** `object` A list of security programs that exist in the destination airport. **Any of:** - [Transit security programs]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#securityprograms) Security program names. - **`destinationLocationTimeZone`** `string` **REQUIRED** The time zone for the destination location, such as America/Los_Angeles. - **`destinationTerminal`** `string` The name or letter of the arrival terminal. - **`flightNumber`** `number` The one- to four-digit IATA flight number. - **`loungePlaceIDs`** `array[string]` A list of place IDs that reference the lounge locations. - **`originalArrivalDate`** `string` **REQUIRED** The ISO 8601 date-time the flight is originally scheduled to arrive. Format: `date-time` - **`originalBoardingDate`** `string` The ISO 8601 date-time the flight is originally scheduled to begin boarding. Format: `date-time` - **`originalDepartureDate`** `string` The ISO 8601 date-time the flight is originally scheduled to depart. Format: `date-time` **Used in:** - [Create boarding pass or event ticket Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createboardingpassoreventticketadaptivelinks) - [Create flight]({{< ref "/developer/rest-api/wallet/operations/flights/" >}}#createflight) - [Create flight with external ID]({{< ref "/developer/rest-api/wallet/operations/flights/" >}}#createflightexternalid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassexternalid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createpass) - [Create pass from a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassfromtemplateexternalid) - [Generates a pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createdynamiclink) - [Get flight]({{< ref "/developer/rest-api/wallet/operations/flights/" >}}#getflight) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#getpassfromtemplateexternalid) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#getpass) - [Update flight]({{< ref "/developer/rest-api/wallet/operations/flights/" >}}#updateflight) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassexternalid) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#updatepass) - [Update pass for a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassfromtemplateexternalid) - [Update passes from Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesexternalid) - [Update passes from Adaptive Link for an external project]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesfromadaptivelinkexternalid) **Examples** *Example flight semantics object* ```json { "airlineCode": "OA", "flightNumber": 2214, "originalBoardingDate": "2025-03-19T20:30:00-08:00", "currentBoardingDate": "2025-03-19T20:59:00-08:00", "originalDepartureDate": "2025-03-19T09:00:00-08:00", "currentDepartureDate": "2025-03-20T09:30:00-08:00", "originalArrivalDate": "2025-03-20T02:00:00-05:00", "currentArrivalDate": "2025-03-20T02:00:00-05:00", "departureAirportCode": "SFO", "departureCityName": "San Francisco", "departureLocationTimeZone": "America/Los_Angeles", "departureAirportLocation": { "latitude": 37.6191, "longitude": 122.3816 }, "departureLocationSecurityPrograms": [ "tsaPreCheck" ], "departureGate": "17B", "departureTerminal": "2", "destinationAirportCode": "JFK", "destinationCityName": "New York", "destinationLocationTimeZone": "America/New_York", "destinationAirportLocation": { "latitude": 40.6446, "longitude": 73.7797 }, "destinationGate": "6", "destinationTerminal": "1" } ``` --- ## Passenger semantics object {#passengersemantics} For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `passengerName` and `seats`, that enhances passes. You can nest this object within `fields`. [Jump to examples ↓](#passengersemantics-examples) - **`boardingGroup`** `string` A group number for boarding. - **`boardingSequenceNumber`** `string` A sequence number for boarding. - **`boardingZone`** `string` A zone number for boarding. - **`internationalDocumentsAreVerified`** `boolean` Denotes whether the ticket/passenger has met all the requirements for international travel. - **`internationalDocumentsVerifiedDeclarationName`** `string` The affirmation string that is displayed if the passenger meets the requirements for international travel. - **`membershipProgramName`** `string` The name of a frequent flyer or loyalty program. - **`membershipProgramNumber`** `string` The ticketed passenger's frequent flyer or loyalty number. - **`membershipProgramStatus`** `string` The ticketed passenger's frequent flyer or loyalty program status. - **`passengerAirlineSSRs`** `array` A list of airline-specific special service requests. **Any of:** - `object` The airline-specific service request. - **`passengerCapabilities`** `array` <[Passenger capabilities]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#passengercapabilities)> List of passenger capabilities. - **`passengerEligibleSecurityPrograms`** `array` <[Transit security programs]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#securityprograms)> A list of security programs that the passenger is eligible for. Security program names. - **`passengerInformationSSRs`** `array` <[Passenger information SSRs]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#passengerinformationssrs)> A list of Special Service Requests (SSRs) information for passengers; supports any valid four-letter IATA SSR code in addition to those listed. - **`passengerName`** `object` <[Passenger name object]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#passengernamesemanticsobject)> **REQUIRED** - **`passengerServiceSSRs`** `array` <[Passenger service SSRs]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#passengerservicessrs)> A list of Special Service Requests (SSRs) for passengers; supports any valid four-letter IATA SSR code in addition to those listed. - **`priorityStatus`** `string` Additional priority status the ticketed passenger holds. - **`seats`** `array` **Any of:** - [Passenger seat object]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#seatsemanticsobject) Seating information, including cabin class. - **`ticketFareClass`** `string` A localizable string that denotes the ticket fare class. This value displays as a badge on the boarding pass. **Used in:** - [Create boarding pass or event ticket Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createboardingpassoreventticketadaptivelinks) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassexternalid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createpass) - [Create pass from a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassfromtemplateexternalid) - [Generates a pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createdynamiclink) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#getpassfromtemplateexternalid) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#getpass) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassexternalid) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#updatepass) - [Update pass for a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassfromtemplateexternalid) - [Update passes from Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesexternalid) - [Update passes from Adaptive Link for an external project]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesfromadaptivelinkexternalid) **Examples** *Example passenger semantics object* ```json { "passengerName": { "givenName": "Foo", "familyName": "Bar" }, "boardingGroup": "3", "passengerCapabilities": [ "priorityBoarding", "carryOn", "personalItem" ], "passengerEligibleSecurityPrograms": [ "tsaPreCheck", "tsaPrecheckTouchlessId" ], "seats": [ { "seatType": "Comfort+", "seatRow": "23", "seatNumber": "A" } ], "passengerServiceSSRs": [ "wheelChair" ], "membershipProgramName": "Fleet Rewards", "membershipProgramNumber": "12345", "membershipProgramStatus": "Gold", "priorityStatus": "Fleet Priority" } ``` --- ## Passengers {#passengers} An array of objects, each object representing a passenger/seat on a flight. Passengers are a part of the payload for boarding pass adaptive links. [Jump to examples ↓](#passengers-examples) - **`adaptiveLinkExternalId`** `string` The external ID you want to assign to a passenger's adaptive link. - **`fields`** `object` **OBJECT PROPERTIES** - **`barcodeAltText`** `object` <[Pass field updates]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#fields)> Like other pass creation operations, when providing barcode information, you need only provide the value. When updating a field on a pass or an adaptive link, you need only provide the following items. You cannot update the position of the field or other information held by the template — only the field label, value, and the message the user receives when their pass is updated. - **`barcode_value`** `object` <[Pass field updates]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#fields)> Like other pass creation operations, when providing barcode information, you need only provide the value. When updating a field on a pass or an adaptive link, you need only provide the following items. You cannot update the position of the field or other information held by the template — only the field label, value, and the message the user receives when their pass is updated. - **`boardingDoor`** `object` The door the passenger uses to board the plane. **OBJECT PROPERTIES** - **`semantics`** `object` <[Passenger semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#passengersemantics)> **APPLE ONLY** Field-level passenger semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `passengerName` and `seats`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` Possible values: `front`, `back` - **`boardingGroup`** `object` The boarding group for the passenger. **OBJECT PROPERTIES** - **`semantics`** `object` <[Passenger semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#passengersemantics)> **APPLE ONLY** Field-level passenger semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `passengerName` and `seats`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` - **`boardingPosition`** `object` The value of the boarding position. **OBJECT PROPERTIES** - **`semantics`** `object` <[Passenger semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#passengersemantics)> **APPLE ONLY** Field-level passenger semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `passengerName` and `seats`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` - **`boardingPrivilegeImage`** `object` The URL of the image; recommended size is 80 px tall by 80-780 px wide. **OBJECT PROPERTIES** - **`value`** `string` Format: `url` - **`confirmationCode`** `string` **REQUIRED** Confirmation code needed to check into this flight. This is the number that the passenger would enter into a kiosk at the airport to look up the flight and print a boarding pass. - **`eticketNumber`** `object` The eTicket Number for the passenger's boarding pass. **OBJECT PROPERTIES** - **`semantics`** `object` <[Passenger semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#passengersemantics)> **APPLE ONLY** Field-level passenger semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `passengerName` and `seats`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` - **`frequentFlyerNumber`** `object` The passenger's frequent flyer number. **OBJECT PROPERTIES** - **`semantics`** `object` <[Passenger semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#passengersemantics)> **APPLE ONLY** Field-level passenger semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `passengerName` and `seats`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` - **`frequentFlyerProgramName`** `object` The name of the frequent flyer program the passenger belongs to. **OBJECT PROPERTIES** - **`semantics`** `object` <[Passenger semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#passengersemantics)> **APPLE ONLY** Field-level passenger semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `passengerName` and `seats`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` - **`passengerName`** `object` **REQUIRED** The name of the passenger as it will appear on the pass. **OBJECT PROPERTIES** - **`value`** `string` - **`seatClass`** `object` The passenger's seat class. **OBJECT PROPERTIES** - **`semantics`** `object` <[Passenger semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#passengersemantics)> **APPLE ONLY** Field-level passenger semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `passengerName` and `seats`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` - **`seatNumber`** `object` The seat number the passenger will sit in. **OBJECT PROPERTIES** - **`semantics`** `object` <[Passenger semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#passengersemantics)> **APPLE ONLY** Field-level passenger semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `passengerName` and `seats`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` - **`securityProgramLogo`** `string` The URL of the logo for the security program. Recommended size is 80 px tall and 80-780 px wide. Format: `url` - **`semantics`** `object` <[Boarding pass semantics]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#boardingpasssemantics)> Top-level semantics for a passenger, which can include passenger and/or flight semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data that enhances passes. You can nest this object within `fields`. - **`sequenceNumber`** `object` The sequence number on the boarding pass. This usually matches the sequence in which the passengers checked in. **OBJECT PROPERTIES** - **`semantics`** `object` <[Passenger semantics object]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#passengersemantics)> **APPLE ONLY** Field-level passenger semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data, such as `passengerName` and `seats`, that enhances passes. You can nest this object within `fields`. - **`value`** `string` - **`sharingStatus`** `object` A `field` determining whether passes can be shared across users, devices, or not at all. By default, there are no restrictions with regard to users or devices (`multipleHolders`). While this setting uses the same format as other `fields`, you only need to set the `value` within the object. Most other keys are irrelevant this setting, even though they appear in responses; this field should not be visible on passes, so you should not populate label, order, etc. On iOS devices, `oneUserOneDevice` prohibits sharing (`"sharingProhibited": true`); all other values allow sharing. You can override the template setting on Apple Wallet passes. If you set this field in an adaptive link payload, it will only apply to Apple Wallet passes resulting from the adaptive link; Google Wallet passes will always use the sharing setting set at the template level. **OBJECT PROPERTIES** - **`changeMessage`** `string` The message that appears when you update this field. Nullable: true - **`value`** `string` **REQUIRED** Determines whether a pass supports sharing across users, devices, or both. iOS interprets this as a boolean setting: `oneUserOneDevice` prohibits sharing; all other values allow sharing. Possible values: `multipleHolders`, `oneUserAllDevices`, `oneUserOneDevice` Default: `multipleHolders` **Used in:** - [Create boarding pass or event ticket Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createboardingpassoreventticketadaptivelinks) **Examples** *Example array of passengers* ```json { "passengers": [ { "adaptiveLinkExternalId": "abch3ExtId1", "fields": { "seatNumber": { "value": "13A" }, "confirmationCode": { "value": "E4583B" }, "passengerName": { "value": "SMITH/JOE" }, "specialAssistance": { "label": "Special Assistance", "value": "Wheelchair" }, "barcode_value": { "value": "12345" }, "barcodeAltText": { "value": "12345" } } }, { "adaptiveLinkExternalId": "abch3ExtId2", "fields": { "seatNumber": { "value": "13B" }, "confirmationCode": { "value": "E4583B" }, "passengerName": { "value": "SMITH/SALLY" }, "barcode_value": { "value": "12346" }, "barcodeAltText": { "value": "12346" } } }, { "adaptiveLinkExternalId": "abch3ExtId2", "fields": { "seatNumber": { "value": "13C" }, "confirmationCode": { "value": "E4583B" }, "passengerName": { "value": "SMITH/SAM" }, "barcode_value": { "value": "12347" }, "barcodeAltText": { "value": "12347" } } } ] } ``` --- # OAuth > Schemas for OAuth token requests, including scopes, assertion JWTs, and subject identifiers. ## Assertion JWT {#assertionjwt} A JSON Web Token (JWT) used for authorization in [OAuth token requests](/docs/developer/rest-api/wallet/operations/oauth/#requestoauthtoken). The JWT must be signed with the private key corresponding to the `client_id` in the `kid` header using the ES384 algorithm. **All of:** - **Headers** `object` Assertion JWT headers - **`alg`** `string` **REQUIRED** The signing algorithm. Possible values: `ES384` - **`kid`** `string` **REQUIRED** The key used to sign the JWT, the `client_id`. - **Claims** `object` Assertion JWT claims - **`aud`** `string` **REQUIRED** The valid request endpoint. Example: `https://oauth2.asnapius.com/token` - **`exp`** `integer` **REQUIRED** The `assertion`'s expiration timestamp in seconds since epoch, after which it is not valid. The expiry must not be more than 10 minutes in the future. This is for the `assertion`, not for the token that will be returned. Example: `1681862754` - **`iat`** `integer` **REQUIRED** The issue timestamp in seconds since epoch. Example: `168186250` - **`ipaddr`** `string` A space-delimited list of CIDR representations of valid IP addresses to which the issued token is restricted. - **`iss`** `string` **REQUIRED** The issuer, the `client_id`. - **`nonce`** `string` **REQUIRED** A unique string that must not have been used recently with this `client_id`. We will store this for a minimum of 2 hours. If you are relying on the nonce to defend against replay attacks, it is recommended to also enforce a narrow *ipaddr* range in order to prevent requests that utilize the returned access token from being replayed by an outside client. Min length: 1, Max length: 50 - **`scope`** `string` <[OAuth Scope]({{< ref "/developer/rest-api/wallet/schemas/oauth/" >}}#oauthscope)> A space-delimited list of scopes to which the returned claim should be restricted. If not provided, the full list of scopes the `client_id` is granted will be in the returned claim. The value of the scope parameter is a list of space-delimited, case-sensitive strings. If multiple scopes are specified, their order does not matter. Each string adds an additional access range to the requested scope. For more information about scope values, see [OAuth token scopes](/docs/developer/rest-api/wallet/api-auth-reference/#oauth-token-scopes) in the *Wallet API Authorization Reference* documentation. * `wadl`: Adaptive Links * `wevt`: Events * `wfli`: Flights * `wnot`: Notifications * `wpas`: Passes * `wprj`: Projects * `wsch`: Schedules * `wseg`: Segments * `wrpt`: Statistics * `wtmp`: Templates Possible values: `wadl`, `wevt`, `wfli`, `wnot`, `wpas`, `wprj`, `wsch`, `wseg`, `wrpt`, `wtmp` - **`sub`** `object` <[Subject]({{< ref "/developer/rest-api/wallet/schemas/oauth/" >}}#subject)> **REQUIRED** A space-delimited set of identifiers for which subjects a token is allowed. An `app` subject is required. Example: `app:`. A space-delimited set of identifiers for which subjects a token is allowed. Example: `app:` * `app`: May operate on the given app **Used in:** - [Request token]({{< ref "/developer/rest-api/wallet/operations/oauth/" >}}#requestoauthtoken) --- ## OAuth Scope {#oauthscope} The value of the scope parameter is a list of space-delimited, case-sensitive strings. If multiple scopes are specified, their order does not matter. Each string adds an additional access range to the requested scope. For more information about scope values, see [OAuth token scopes](/docs/developer/rest-api/wallet/api-auth-reference/#oauth-token-scopes) in the *Wallet API Authorization Reference* documentation. * `wadl`: Adaptive Links * `wevt`: Events * `wfli`: Flights * `wnot`: Notifications * `wpas`: Passes * `wprj`: Projects * `wsch`: Schedules * `wseg`: Segments * `wrpt`: Statistics * `wtmp`: Templates `string` Allowed values: `wadl`, `wevt`, `wfli`, `wnot`, `wpas`, `wprj`, `wsch`, `wseg`, `wrpt`, `wtmp` **Used in:** - [Request token]({{< ref "/developer/rest-api/wallet/operations/oauth/" >}}#requestoauthtoken) --- ## Subject {#subject} A space-delimited set of identifiers for which subjects a token is allowed. Example: `app:` * `app`: May operate on the given app **Used in:** - [Request token]({{< ref "/developer/rest-api/wallet/operations/oauth/" >}}#requestoauthtoken) --- # Passes > Schemas used when creating passes (as opposed to adaptive links). ## Apple Wallet pass request {#createpassapplewalletrequest} A pass for Apple Wallet. [Jump to examples ↓](#createpassapplewalletrequest-examples) - **`beacons`** `array` <[Beacon object]({{< ref "/developer/rest-api/wallet/schemas/passes/" >}}#beacon)> Beacons for an Apple pass. - **`fields`** `object` Fields for an Apple Wallet pass. Provide only the field objects and values you want to differentiate or personalize from the template. - **`headers`** `object` Headers on an Apple Wallet pass. Provide only the header objects and values you want to differentiate or personalize from the template. See [Apple Template Headers](/docs/developer/rest-api/wallet/schemas/others/#iostemplateheaderobject) for information about available header objects for Apple Wallet templates and passes. **OBJECT PROPERTIES** - **`expirationDate`** `string` May contain `value` and `label` fields. `value` indicates the expiration date of the pass. `label` can be set to either `valid` or `voided`, where `valid` indicates a non-expired pass and `voided` indicates that the pass is no longer accepted. Format: `date-time` - **`sharingStatus`** `object` A `field` determining whether passes can be shared across users, devices, or not at all. By default, there are no restrictions with regard to users or devices (`multipleHolders`). While this setting uses the same format as other `fields`, you only need to set the `value` within the object. Most other keys are irrelevant this setting, even though they appear in responses; this field should not be visible on passes, so you should not populate label, order, etc. On iOS devices, `oneUserOneDevice` prohibits sharing (`"sharingProhibited": true`); all other values allow sharing. You can override the template setting on Apple Wallet passes. If you set this field in an adaptive link payload, it will only apply to Apple Wallet passes resulting from the adaptive link; Google Wallet passes will always use the sharing setting set at the template level. **OBJECT PROPERTIES** - **`changeMessage`** `string` The message that appears when you update this field. Nullable: true - **`value`** `string` **REQUIRED** Determines whether a pass supports sharing across users, devices, or both. iOS interprets this as a boolean setting: `oneUserOneDevice` prohibits sharing; all other values allow sharing. Possible values: `multipleHolders`, `oneUserAllDevices`, `oneUserOneDevice` Default: `multipleHolders` - **`locations`** `array` <[Location object]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#locationobject)> A list of locations associated with a pass. - **`nfc`** `object` If your Apple certificate is NFC-enabled, and your terminals use Apple's Value Added Services protocol, you can include this object in Loyalty passes to identify pass holders and provide their credentials over NFC. See [Enable NFC Support for your Passes](/docs/guides/wallet/user-guide/design-template/nfc/) for setup instructions. **OBJECT PROPERTIES** - **`encryptionPublicKey`** `string` **REQUIRED** The public encryption key for NFC communications. Use a Base64 encoded X.509 `SubjectPublicKeyInfo` structure containing a ECDH public key for group P256. - **`message`** `string` **REQUIRED** The payload for an Apple Pay terminal, 64 bytes or less. Messages longer than 64 bytes are truncated. - **`publicUrl`** `object` A public URL from which users can download a pass. For Google Wallet, the public URL deep-links to the Google Wallet store with credentials to download a pass, facilitating pass installation without a browser window. When creating Google Wallet passes, this field is required and you must specify `type: single` in the request to create a pass. If the request does not contain a Public URL, the operation will not return a URL and users will not be able to access the resulting pass. For Apple Wallet, this URL points to a .pkpass file. We recommend using a Public URL when creating Apple Wallet passes. If you do not provide a public URL, users will not be able to install the pass without the API key. Example: `[object Object]` **OBJECT PROPERTIES** - **`installs`** `integer` The number of users who have installed the pass from the URL specified in the `path` field. Read only: true - **`path`** `string` The URL for the pass. - **`type`** `string` **REQUIRED** Determines whether a user can access the link to install a pass one time or multiple times. The response indicates the number of times the publicUrl has been used to install a pass. Possible values: `single`, `multiple` - **`used`** `boolean` If true, a user has accessed the `path` URL. Read only: true - **`semantics`** `object` <[Boarding pass semantics]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#boardingpasssemantics)> Apple boarding pass only, top-level semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data that enhances passes. You can nest this object within `fields`. - **`tags`** `array[string]` An array of tags associated with the pass. - **`templateId`** `integer` The identifier for the template. You can recall the template by ID in other operations. Read only: true **Used in:** - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassexternalid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createpass) - [Create pass from a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassfromtemplateexternalid) - [Generates a pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createdynamiclink) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#getpassfromtemplateexternalid) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#getpass) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#updatepass) - [Update pass for a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassfromtemplateexternalid) **Examples** *Example pass for Apple Wallet* ```json { "headers": { "expirationDate": { "value": "2014-08-20T09:41-08:00" }, "barcodeAltText": { "changeMessage": null, "value": "abc1234567890", "label": "" }, "barcode_value": { "changeMessage": null, "value": "abc1234567890", "label": "" } }, "fields": { "Coupon": { "changeMessage": "Enjoy %@ off your next order!", "value": "20%", "label": "Coupon" }, "SiteAddress": { "changeMessage": "Check out things we think you would like at %@", "value": "https://www.example.com/new?custnumb=123456", "label": "personal deals" }, "InStore": { "changeMessage": "Or visit your nearest store at %@", "value": "1234 Fake St.", "label": "nearestStore" }, "thumbnail_image": { "value": "https:\/\/example.com\/assets\/favicon.png" } }, "beacons":[ { "uuid": "55502220-A123-A88A-F321-555A444B333C", "relevantText": "You are near the Ship", "major": 2, "minor": 346 } ], "locations":[ { "longitude": -122.374, "latitude": 37.618, "relevantText": "Hello loc0", "streetAddress1": "address line #1", "streetAddress2": "address line #2", "city": "San Francisco", "region": "CA", "regionCode": "94404", "country": "US" } ], "publicUrl": { "type": "single" } } ``` --- ## Apple Wallet pass response {#createpassapplewalletresponse} A pass response includes both identifiers and the content of all fields on a pass. [Jump to examples ↓](#createpassapplewalletresponse-examples) **All of:** - [Apple Wallet pass request]({{< ref "/developer/rest-api/wallet/schemas/passes/" >}}#createpassapplewalletrequest) A pass for Apple Wallet. - **`createdAt`** `string` The date and time when the item was created. Format: `date-time` Read only: true - **`externalId`** `string` The external ID for the pass, returned only if you created the pass using an external ID. Read only: true - **`id`** `integer` The internal identifier for the pass. Use this ID to get or modify the pass in other calls. Read only: true - **`publicUrl`** `object` A public URL from which users can download a pass. For Google Wallet, the public URL deep-links to the Google Wallet store with credentials to download a pass, facilitating pass installation without a browser window. When creating Google Wallet passes, this field is required and you must specify `type: single` in the request to create a pass. If the request does not contain a Public URL, the operation will not return a URL and users will not be able to access the resulting pass. For Apple Wallet, this URL points to a .pkpass file. We recommend using a Public URL when creating Apple Wallet passes. If you do not provide a public URL, users will not be able to install the pass without the API key. Example: `[object Object]` **OBJECT PROPERTIES** - **`installs`** `integer` The number of users who have installed the pass from the URL specified in the `path` field. Read only: true - **`path`** `string` The URL for the pass. - **`type`** `string` **REQUIRED** Determines whether a user can access the link to install a pass one time or multiple times. The response indicates the number of times the publicUrl has been used to install a pass. Possible values: `single`, `multiple` - **`used`** `boolean` If true, a user has accessed the `path` URL. Read only: true - **`serialNumber`** `string` Format: `uuid` Read only: true - **`status`** `string` Indicates whether a pass has been installed or not. Possible values: `installed`, `not_been_installed` Read only: true - **`tags`** `array[string]` Tags associated with the pass. - **`uaEntityId`** `string` Format: `uuid` Read only: true - **`updatedAt`** `string` The date and time when the item was last updated. Format: `date-time` Read only: true - **`url`** `string` The URL for the pass. Format: `url` **Used in:** - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassexternalid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createpass) - [Create pass from a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassfromtemplateexternalid) - [Generates a pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createdynamiclink) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#getpassfromtemplateexternalid) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#getpass) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#updatepass) **Examples** *Example Apple Wallet pass response* ```json { "id": 12345, "templateId": 123, "createdAt": "2012-11-01 12:37:07.0", "url": "https:\/\/wallet-api.urbanairship.com\/v1\/pass\/888\/download", "publicUrl": { "path": "https:\/\/wallet-api.urbanairship.com\/v1\/download\/pass\/9c9c9c7d-c6b6-9c9c-9d2b-9c9c9c54c89c", "used": false, "type": "Single", "installs": 0 }, "passFields": { "sale": { "changeMessage": "Hey %@, check out our new sale!", "fieldType": "HEADER", "value": "20%", "label": "Percent off", "required": false }, "logo_text": { "changeMessage": null, "fieldType": "TOP_LEVEL", "value": "Test Value", "label": "", "required": false }, "boarding_time": { "changeMessage": "Be at your new gate by %@", "fieldType": "PRIMARY", "value": "08:45", "label": "", "required": false }, "thumbnail_image": { "formatType": "String", "changeMessage": null, "fieldType": "image", "value": "https:\/\/example.com\/passtools...0bb4_favicon.png", "label": "", "required": false, "hideEmpty": false } }, "beacons":[ { "uuid": "55502220-A123-A88A-F321-555A444B333C", "relevantText": "You are near the Ship", "major": 2, "minor": 346 } ], "locations":[ { "relevantText":"Hello loc0", "latitude":37.618, "id":30473906, "longitude":-122.374 } ] } ``` --- ## Beacon object {#beacon} Associates a pass with an iBeacon. Apple Wallet supports up to 10 beacons per pass. When the pass holder comes into proximity with an iBeacon bearing the same UUID, the pass becomes relevant (displayed on the lock screen). [Jump to examples ↓](#beacon-examples) - **`major`** `integer` **REQUIRED** Major identifier of a beacon. Format: `int32` Example: `2` - **`minor`** `integer` **REQUIRED** Minor identifier of a beacon. Format: `int32` Example: `346` - **`relevantText`** `string` **REQUIRED** Text displayed on the lock screen. Example: `You are near the Ship` - **`uuid`** `string` **REQUIRED** Unique identifier of a beacon. Example: `55502220-A123-A88A-F321-555A444B333C` **Used in:** - [Add or update beacons for Apple Wallet pass]({{< ref "/developer/rest-api/wallet/operations/apple-passes-only/" >}}#addreplacebeaconsforpassexternalid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassexternalid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createpass) - [Create pass from a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassfromtemplateexternalid) - [Generates a pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createdynamiclink) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#getpassfromtemplateexternalid) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#getpass) - [List beacons on Apple Wallet pass]({{< ref "/developer/rest-api/wallet/operations/apple-passes-only/" >}}#getbeaconsforpassexternalid) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassexternalid) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#updatepass) - [Update pass for a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassfromtemplateexternalid) - [Update passes from Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesexternalid) - [Update passes from Adaptive Link for an external project]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesfromadaptivelinkexternalid) **Examples** *Example beacon object* ```json { "uuid": "55502220-A123-A88A-F321-555A444B333C", "relevantText": "You are near the Ship", "major": 2, "minor": 346 } ``` --- ## Google Wallet pass request {#createpassandroidpayrequest} A pass for Google Wallet. Unlike templates, in which the `fieldsModel` contains fields nested inside `module` objects, fields are collapsed in pass requests and responses. The `fieldType` corresponds to the template field module that the field belongs to. Aside from differences in field composition, and a lack of beacons, Google Wallet passes are very similar to Apple Wallet passes. [Jump to examples ↓](#createpassandroidpayrequest-examples) - **`fields`** `object` Fields for the pass. The template defines a field's location on the pass and its default value(s). When creating a pass, you only need to populate the fields you want to update, and even then, you only need to provide the `value` you want to change for the field and the `changeMessage` if you want to notify pass holders of the change in the value. - **`headers`** `object` Include objects from the template `headers` object if you want to change the `label`, `value`, or `changeMessage` for fields in the pass header — like barcodes and titles. **OBJECT PROPERTIES** - **`expirationDate`** `string` May contain `value` and `label` fields. `value` indicates the expiration date of the pass. `label` can be set to either `valid` or `voided`, where `valid` indicates a non-expired pass and `voided` indicates that the pass is no longer accepted. Format: `date-time` - **`locations`** `array` <[Location object]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#locationobject)> A list of locations associated with a pass. - **`publicUrl`** `object` **REQUIRED** A public URL from which users can download a pass. For Google Wallet, the public URL deep-links to the Google Wallet store with credentials to download a pass, facilitating pass installation without a browser window. When creating Google Wallet passes, this field is required and you must specify `type: single` in the request to create a pass. If the request does not contain a Public URL, the operation will not return a URL and users will not be able to access the resulting pass. For Apple Wallet, this URL points to a .pkpass file. We recommend using a Public URL when creating Apple Wallet passes. If you do not provide a public URL, users will not be able to install the pass without the API key. Example: `[object Object]` **OBJECT PROPERTIES** - **`installs`** `integer` The number of users who have installed the pass from the URL specified in the `path` field. Read only: true - **`path`** `string` The URL for the pass. - **`type`** `string` **REQUIRED** Determines whether a user can access the link to install a pass one time or multiple times. The response indicates the number of times the publicUrl has been used to install a pass. Possible values: `single`, `multiple` - **`used`** `boolean` If true, a user has accessed the `path` URL. Read only: true - **`templateId`** `integer` The identifier for the template. You can recall the template by ID in other operations. Read only: true **Used in:** - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassexternalid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createpass) - [Create pass from a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassfromtemplateexternalid) - [Generates a pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createdynamiclink) - [Update pass for a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassfromtemplateexternalid) **Examples** *Example Google pass request* ```json { "headers": { "expirationDate":{ "value":"2014-08-20T9:41-08:00" }, "barcodeAltText": { "changeMessage": null, "value": "abc1234567890", "label": "" }, "barcode_value": { "changeMessage": null, "value": "abc1234567890", "label": "" } }, "fields": { "Coupon": { "changeMessage": "Enjoy %@ off your next order!", "value": "20%", "label": "Coupon" }, "SiteAddress": { "changeMessage": "Check out things we think you would like at %@", "value": "https://www.example.com/new?custnumb=123456", "label": "personal deals" }, "InStore": { "changeMessage": "Or visit your nearest store at %@", "value": "1234 Fake St.", "label": "nearestStore" } }, "locations":[ { "longitude": -122.374, "latitude": 37.618, "relevantText": "Hello loc0", "streetAddress1": "address line #1", "streetAddress2": "address line #2", "city": "San Francisco", "region": "CA", "regionCode": "94404", "country": "US" } ], "publicUrl": { "type": "single" } } ``` --- ## Google Wallet pass response {#createpassandroidpayresponse} A pass response for Google Wallet. A pass is a populated template. Therefore, the pass includes all headers and fields from the template, along with identifiers for the pass and URLs to access it. Unlike templates, in which the `fieldsModel` contains fields nested inside `module` objects, fields are collapsed in pass requests and responses. The `fieldType` corresponds to the template field module (an object) that the field belongs to. Aside from differences in field composition, and a lack of beacons, Google Wallet passes are very similar to Apple Wallet passes. [Jump to examples ↓](#createpassandroidpayresponse-examples) - **`createdAt`** `string` The date and time when the item was created. Format: `date-time` Read only: true - **`externalId`** `string` The external ID for the pass, returned only if you created the pass using an external ID. Read only: true - **`fields`** `object` Contains all populated fields from the template. The `fieldType` within each object indicates the `module` it belonged to. While all fields take a similar shape, the response may contain different keys to represent the `value` or `label` from the originating template field. This has to do with the way that Google Wallet interprets templates and passes. **OBJECT PROPERTIES** - **`offerModule`** `object` Specific to google coupons, this module contains information about redeeming the coupon. **OBJECT PROPERTIES** - **`endTime`** `string` The expiration date for the offer. Format: `date-time` - **`multiUseOffer`** `boolean` Indicates whether the coupon/offer is available for multiple users or just a single user. - **`provider`** `string` The offer provider name. - **`redemptionChannel`** `string` Indicates whether the user can redeem the offer at a physical location or online. Possible values: `online`, `instore`, `both`, `temporaryPriceReduction` - **`headers`** `object` <[Google headers]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#googleheaders)> Fields appearing in the `headers` object for a Google pass template. Header fields typically follow the same model as other fields for Google Wallet templates and passes, but often have specific `value`, `fieldType`, and `formatType` values. - **`id`** `integer` The internal identifier for the pass. Use this ID to get or modify the pass in other calls. Read only: true - **`publicUrl`** `object` A public URL from which users can download a pass. For Google Wallet, the public URL deep-links to the Google Wallet store with credentials to download a pass, facilitating pass installation without a browser window. When creating Google Wallet passes, this field is required and you must specify `type: single` in the request to create a pass. If the request does not contain a Public URL, the operation will not return a URL and users will not be able to access the resulting pass. For Apple Wallet, this URL points to a .pkpass file. We recommend using a Public URL when creating Apple Wallet passes. If you do not provide a public URL, users will not be able to install the pass without the API key. Example: `[object Object]` **OBJECT PROPERTIES** - **`installs`** `integer` The number of users who have installed the pass from the URL specified in the `path` field. Read only: true - **`path`** `string` The URL for the pass. - **`type`** `string` **REQUIRED** Determines whether a user can access the link to install a pass one time or multiple times. The response indicates the number of times the publicUrl has been used to install a pass. Possible values: `single`, `multiple` - **`used`** `boolean` If true, a user has accessed the `path` URL. Read only: true - **`serialNumber`** `string` Format: `uuid` Read only: true - **`status`** `string` Indicates whether a pass has been installed or not. Possible values: `installed`, `not_been_installed` Read only: true - **`tags`** `array[string]` Tags associated with the pass. - **`uaEntityId`** `string` Format: `uuid` Read only: true - **`updatedAt`** `string` The date and time when the item was last updated. Format: `date-time` Read only: true - **`url`** `string` The URL for the pass. Format: `url` **Used in:** - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassexternalid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createpass) - [Create pass from a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassfromtemplateexternalid) - [Generates a pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createdynamiclink) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#getpassfromtemplateexternalid) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#getpass) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#updatepass) **Examples** *Example Google pass response* ```json { "createdAt": "2018-10-25T19:13:14Z", "headers": { "background_color": { "ignoresTimeZone": null, "changeMessage": null, "label": "", "hideEmpty": false, "formatType": "String", "value": "#006491", "fieldType": "topLevel", "required": false }, "strip_image": { "ignoresTimeZone": null, "changeMessage": null, "label": "", "hideEmpty": false, "formatType": "String", "value": "https://example.com/passtools_prod/1169167/images/587ac4e3d188b0fcd4f05038d8814fefd82ac834_iOS_Logo_320x100_WHITE.png", "fieldType": "image", "required": false }, "expirationDate": { "ignoresTimeZone": null, "changeMessage": null, "label": "", "hideEmpty": false, "formatType": "String", "value": "2019-10-25T19:13:14Z", "fieldType": "topLevel", "required": false } }, "serialNumber": "06bad8bd-b399-4c86-83b6-06fcee2e52b6", "uaEntityId": "9e3bf713-f6e6-4d6e-b2d4-c9ab6028892e", "id": "47400533", "templateId": "63621", "fields": { "image": { "ignoresTimeZone": null, "title.string": "https://example.com/passtools_prod/1169167/images/9af688aea35f473e29ca187438c12083202f1eeb_Android_Logo_660x660.png", "hideEmpty": false, "formatType": "String", "fieldType": "titleModule", "description.string": "Logo Image" }, "Details": { "col": 0, "ignoresTimeZone": null, "header": "Coupon Details", "hideEmpty": false, "row": 0, "formatType": "String", "body": "25% off when you spend £20 or more online using code WNTRBLOG", "fieldType": "textModulesData" }, "FinePrint": { "col": 0, "ignoresTimeZone": null, "header": "Terms & Conditions ", "hideEmpty": false, "row": 0, "formatType": "String", "body": "Please go to http://www.dominos.co.uk and click on “Boring Legal Stuff”", "fieldType": "textModulesData" }, "offerModule": { "multiUserOffer": false, "redemptionChannel": "both", "provider": "Domino's Snap Offer", "endTime": "2018-01-31T00:00:00.000Z" }, "Merchant Website": { "ignoresTimeZone": null, "description": "Visit Us Online", "hideEmpty": false, "formatType": "URL", "uri": "https://www.dominos.co.uk/?vc=WNTRBLOG", "fieldType": "linksModuleData", "order": 1 }, "imageModulesData": { "image": "https://example.com/passtools_prod/1169167/images/834420d3cbf287f56c8be46806e58e23e8296e94_Android_Hero_1032x336_Opt1.png", "ignoresTimeZone": null, "imageDescription": "Logo Image", "hideEmpty": false, "formatType": "String", "fieldType": "imageModulesData" }, "Coupon Title": { "col": 0, "ignoresTimeZone": null, "title.string": "Coupon", "hideEmpty": false, "row": 0, "formatType": "String", "fieldType": "titleModule", "description.string": "25% Off Online " } }, "url": "https://wallet-api.urbanairship.com/v1/pass/47400533/download", "updatedAt": "2018-10-25T19:13:14Z", "tags": [], "status": "installed" } ``` --- # Project objects > Request and Response schemas for `/project` endpoints. ## Project request {#projectrequest} A project request determines the type of passes you can create and the types of barcode your passes will use. [Jump to examples ↓](#projectrequest-examples) - **`description`** `string` **REQUIRED** A description for the project. - **`name`** `string` **REQUIRED** The name of your project. - **`projectType`** `string` **REQUIRED** The type of pass the template supports; matches the `type` setting for the parent project. Possible values: `memberCard`, `coupon`, `boardingPass`, `eventTicket`, `generic`, `loyalty`, `giftCard` - **`settings`** `object` Contains barcode information for the project. **OBJECT PROPERTIES** - **`barcode_alt_text`** `string` Alternate text for the barcode. This text assists the user if they hover over the barcode or the barcode doesn't render. - **`barcode_default_value`** `string` The default value for the barcode. If you do not set a new value when creating a pass, the pass will use this value. - **`barcode_encoding`** `string` Barcode encoding is set at the project level and inherited by templates and passes. Possible values: `iso-8859-1` - **`barcode_label`** `string` The title of the barcode; appears above the barcode in templates. You can change this value when creating or updating templates or passes. - **`barcode_type`** `string` The format of the barcode supported by the project and resulting passes. Possible values: `pdf417`, `aztec`, `code128`, `qr`, `upc-a`, `ean-13`, `code-39` **Used in:** - [Create project]({{< ref "/developer/rest-api/wallet/operations/projects/" >}}#createproject) - [Create project with external ID]({{< ref "/developer/rest-api/wallet/operations/projects/" >}}#createprojectexternalid) - [Duplicate project]({{< ref "/developer/rest-api/wallet/operations/projects/" >}}#duplicateproject) - [Get project]({{< ref "/developer/rest-api/wallet/operations/projects/" >}}#getproject) - [List projects]({{< ref "/developer/rest-api/wallet/operations/projects/" >}}#listprojects) - [Update project]({{< ref "/developer/rest-api/wallet/operations/projects/" >}}#updateproject) **Examples** *Example project request* ```json { "name": "Aztec Barcode", "projectType": "loyalty", "description": "Aztec Barcode", "settings": { "barcode_alt_text": "123json=456789", "barcode_label": "Member ID", "barcode_default_value": "123456789", "barcode_encoding": "iso-8859-1", "barcode_type": "pdf417" } } ``` --- ## Project response {#projectpayload} A project response includes all fields in a project request, along with identifiers for the project and a list of templates created within the project. [Jump to examples ↓](#projectpayload-examples) **All of:** - [Project request]({{< ref "/developer/rest-api/wallet/schemas/project-objects/" >}}#projectrequest) A project request determines the type of passes you can create and the types of barcode your passes will use. - **`contextId`** `string` Append this value to `go.urbanairship.com/projects/` to access your project. Read only: true - **`createdAt`** `string` The date and time when the item was created. Format: `date-time` Read only: true - **`externalId`** `string` The custom, external identifier of the project. This key only appears if you assigned an external ID to the project. - **`id`** `integer` The identifier for the project, used to reference the project in other payloads. Read only: true - **`templates`** `array` An array of templates belonging to the project. When creating a new project, this array is empty. Read only: true **All of:** - **`createdAt`** `string` The date and time when the item was created. Format: `date-time` Read only: true - **`id`** `integer` The identifier for the template. You can recall the template by ID in other operations. Read only: true - **`updatedAt`** `string` The date and time when the item was last updated. Format: `date-time` Read only: true - [General template headers]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#templaterequestheaders) Meta information about templates; this object appears on all templates and identifies templates associated with a project. - **`updatedAt`** `string` The date and time when the item was last updated. Format: `date-time` Read only: true **Used in:** - [Create project]({{< ref "/developer/rest-api/wallet/operations/projects/" >}}#createproject) - [Create project with external ID]({{< ref "/developer/rest-api/wallet/operations/projects/" >}}#createprojectexternalid) - [Duplicate project]({{< ref "/developer/rest-api/wallet/operations/projects/" >}}#duplicateproject) - [Get project]({{< ref "/developer/rest-api/wallet/operations/projects/" >}}#getproject) - [List projects]({{< ref "/developer/rest-api/wallet/operations/projects/" >}}#listprojects) - [Update project]({{< ref "/developer/rest-api/wallet/operations/projects/" >}}#updateproject) **Examples** *Example project response* ```json { "updatedAt": "2013-06-27T20:55:06.000Z", "id": "12345", "contextId":"myvWLcm8QN3Iq2K4fXT-Bv", "templates": [ { "vendor": "Apple", "projectType": "loyalty", "projectId": "12345", "type": "Store Card", "vendorId": "1", "deleted": "False", "id": "1234", "updatedAt": "2013-06-27T20:58:05.000Z", "description": "Template 1", "createdAt": "2013-06-27T20:51:09.000Z", "name": "Template 1", "disabled": "False" } ], "description": "Aztec Barcode", "createdAt": "2013-06-27T20:51:02.000Z", "settings": { "barcode_alt_text": "123456789", "barcode_default_value": "123456789", "barcode_encoding": "iso-8859-1", "barcode_label": "Member ID", "barcode_type_text": "Aztec", "barcode_type": "aztec" }, "name": "Aztec Barcode", "projectType": "loyalty" } ``` --- # Template objects > Template objects vary based on the vendor they're intended for and the types of passes you want to create. ## Apple Pass personalization requirements {#personalizationrequirements} [Jump to examples ↓](#personalizationrequirements-examples) - **`description`** `string` **REQUIRED** A brief description of the rewards program that the recipient is signing up for. The description appears on the signup sheet, under the personalization logo. - **`imageUrl`** `string` The URL of the image you want to appear at the top of the signup form. This image must be a 150 x 40 point PNG image. Format: `url` - **`requiredPersonalizationFields`** `array[string]` **REQUIRED** An array of strings representing fields that a customer must provide to sign up for your rewards/loyalty program. Some keys populate multiple fields in the personalization callback or on passes. * name - requires the user to enter their `fullName`. This also populates the `givenName` and `familyName` fields on passes and/or personalization callbacks. * postalCode - prompts the user for their postal code. This populates both `postalCode` and `ISOCountryCode` on passes and/or personalization callbacks. * emailAddress - requires the user's email address. * phoneNumber - requires the user's phone number. Min items: 1, Max items: 4 Possible values: `name`, `postalCode`, `emailAddress`, `phoneNumber` - **`termsAndConditions`** `string` The terms and conditions for the reward program. If present, this information appears after the user enters their personal information and taps Next. The user then has the option to agree to the terms, or to cancel the signup process. **Used in:** - [Add personalization requirements]({{< ref "/developer/rest-api/wallet/operations/apple-wallet-pass-personalization/" >}}#addpersonalizationrequirements) - [Delete personalization requirements]({{< ref "/developer/rest-api/wallet/operations/apple-wallet-pass-personalization/" >}}#removepersonalizationrequirements) - [Get personalization requirements]({{< ref "/developer/rest-api/wallet/operations/apple-wallet-pass-personalization/" >}}#getpersonalizationrequirements) - [Update personalization requirements]({{< ref "/developer/rest-api/wallet/operations/apple-wallet-pass-personalization/" >}}#updatepersonalizationrequirements) **Examples** *Example Apple loyalty personalization requirements* ```json { "requiredPersonalizationFields": ["name", "postalCode", "emailAddress", "phoneNumber" ], "description": "Enter your information to sign up and earn points.", "termsAndConditions": "Terms and conditions go here" } ``` --- ## Apple Wallet template request {#iostemplate} A complete iOS template includes template meta information, headers, and fields. [Jump to examples ↓](#iostemplate-examples) **All of:** - [General template headers]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#templaterequestheaders) Meta information about templates; this object appears on all templates and identifies templates associated with a project. - [iOS template headers]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#iosheaders) The iOS template `headers` object can contain the following objects. Each object has a `formatType`, `fieldType`, and `value`. * `formatType` is always `1`, indicating that the `value` is a string. * `fieldType` is `topLevel` — a text or color value on the top-front of the pass, `image`, or `barcode`. * `value` is the default value for the header field. - [iOS fields]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#iosfieldobject) Defines fields on iOS templates and subsequent passes generated from the template. **Used in:** - [Create template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#createtemplate) - [Create template with external ID]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#createexternaltemplate) - [Get template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#gettemplate) - [Get template v2]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#gettemplatesv2) - [Patch template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#patchtemplates) - [Update template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#updatetemplate) - [Update template v2]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#updatetemplatesv2) **Examples** *Example Apple Wallet template request* ```json { "headers": { "logo_color": { "formatType": 1, "fieldType": "topLevel", "value": "rgb(24,86,148)" }, "icon_image": { "formatType": 1, "fieldType": "image", "value": "https:\/\/example.com\/passtools_prod\/1\/images\/default-pass-icon.png" }, "logo_text": { "formatType": 1, "fieldType": "topLevel", "value": "Logo Text" }, "barcode_encoding": { "formatType": 1, "fieldType": "barcode", "value": "iso-8859-1" }, "suppress_strip_shine": { "formatType": 1, "fieldType": "topLevel", "value": "true" }, "logo_image": { "formatType": 1, "fieldType": "image", "value": "https:\/\/example.com\/passtools_prod\/1\/images\/default-pass-logo.png" }, "foreground_color": { "formatType": 1, "fieldType": "topLevel", "value": "rgb(255,255,255)" }, "background_color": { "formatType": 1, "fieldType": "topLevel", "value": "rgb(49,159,196)" } }, "fields": { "Coupon": { "formatType": "String", "changeMessage": "Enjoy %@ off your next order!", "order": 1, "fieldType": "primary", "textAlignment": "textAlignmentRight", "value": "20%", "label": "coupon", "required": false, "hideEmpty": true }, "SiteAddress": { "formatType": "Number", "changeMessage": "New stuff, just for you at %@", "order": 2, "textAlignment": "textAlignmentCenter", "fieldType": "secondary", "value": "https://www.example.com/new?custnumb=123456", "label": "personalDeals", "required": false, "hideEmpty": true }, "InStore": { "formatType": "String", "changeMessage": "Or visit your nearest store at %@", "order": 1, "fieldType": "secondary", "value": "1234 Fake St.", "label": "nearestStore", "required": false, "hideEmpty": false } }, "vendor": "Apple", "projectType": "memberCard", "projectId": 1234, "type": "Store Card", "vendorId": 1, "deleted": "False", "description": "Description", "name": "Loyalty Card", "disabled": "False" } ``` --- ## Google Wallet template request {#googletemplate} A google template organizes fields into a series of module objects. Include only the objects you want to populate for a particular template; some modules may not apply to your template type. [Jump to examples ↓](#googletemplate-examples) **All of:** - [General template headers]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#templaterequestheaders) Meta information about templates; this object appears on all templates and identifies templates associated with a project. - [Google fields]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#googletemplaterequestfieldsmodel) Fields on a Google pass are organized into modules. Modules define how fields on the pass are organized and appear. Fields within each module are objects with a string names. **Used in:** - [Create template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#createtemplate) - [Create template with external ID]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#createexternaltemplate) - [Get template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#gettemplate) - [Get template v2]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#gettemplatesv2) - [Patch template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#patchtemplates) - [Update template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#updatetemplate) - [Update template v2]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#updatetemplatesv2) **Examples** *Example Google template request* ```json { "infoModuleData": { "hexFontColor": "#666666", "hexBackgroundColor": "#0096e1", "Program ID": { "label": "Program ID", "value": "12345678", "row": 0, "col": 0, "formatType": "String" }, "Tier Name": { "label": "Tier Name", "value": "Silver", "row": 0, "col": 1, "formatType": "String" }, "Last Updated": { "label": "Last Updated", "value": "Five days ago", "row": 1, "col": 0, "formatType": "String" } }, "headers": { "barcode_type": { "fieldType": "barcode", "value": "", "notShared": true }, "barcode_value": { "fieldType": "barcode", "value": "", "notShared": true }, "barcode_label": { "fieldType": "barcode", "value": "", "notShared": true }, "barcode_encoding": { "fieldType": "barcode", "value": "", "notShared": true }, "barcodeAltText": { "fieldType": "barcode", "value": "", "notShared": true } }, "textModulesData": { "Program Details": { "header": "Program Details", "body": "Some Basic Text", "row": 0, "col": 0, "formatType": "String" } }, "linksModuleData": { "Merchant Website": { "description": "Merchant Website", "uri": "http:\/\/www.example.com", "order": 1, "formatType": "URL" } }, "messageModule": { }, "imageModulesData": { }, "pointsModule": { "Tier": { "label": "Tier", "value": 2, "row": 0, "col": 1, "formatType": "Number", "numberStyle": "PKNumberStyleDecimal" }, "Points": { "label": "Points", "value": 1234, "row": 0, "col": 0, "formatType": "Number" } }, "notAssigned": { }, "titleModule": { "image": "https:\/\/example.com\/passtools_prod\/1\/images\/default-pass-icon.png", "imageDescription": "Logo Image", "Program Name": { "label": "Program Name", "value": "UA", "row": 0, "col": 0, "formatType": "String" } }, "vendor": "Google", "projectType": "memberCard", "type": "Loyalty1", "vendorId": 2, "deleted": "False", "description": "description", "name": "Adding Google" } ``` --- ## Optional fields for Google headers {#googleheaderitemshared} Header objects for Google Wallet templates use many of the same keys as fields on the template/pass. Populate these keys as necessary. Template responses include these keys with their default values. [Jump to examples ↓](#googleheaderitemshared-examples) - **`changeMessage`** `string` The message that appears when you update this field. Nullable: true - **`hideEmpty`** `boolean` If true, the field is hidden if empty. - **`ignoresTimeZone`** `boolean` if true, the date-time value in a field on an Apple Wallet pass is not offset to account for the pass recipient's time zone. This may be helpful for things like boarding passes or events, where your times are set local to an airport or venue and should not change based on a user's device. When applied to a non-date-time field or a Google template, this setting is ignored. - **`label`** `string` In most cases, you should not set a label for a Google template header. In responses, the label is typically an empty string. - **`required`** `boolean` Indicates whether or not the field is required on passes created from this template. - **`textAlignment`** `string` The alignment of text on the pass. Possible values: `textAlignmentLeft`, `textAlignmentCenter`, `textAlignmentRight`, `textAlignmentNatural` **Used in:** - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassexternalid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createpass) - [Create pass from a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassfromtemplateexternalid) - [Create template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#createtemplate) - [Create template with external ID]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#createexternaltemplate) - [Generates a pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createdynamiclink) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#getpassfromtemplateexternalid) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#getpass) - [Get template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#gettemplate) - [Get template v2]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#gettemplatesv2) - [Patch template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#patchtemplates) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#updatepass) - [Update template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#updatetemplate) - [Update template v2]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#updatetemplatesv2) **Examples** *Example Google header object with optional keys* ```json { "background_color": { "ignoresTimeZone": null, "changeMessage": null, "label": "", "hideEmpty": false, "formatType": "String", "value": "#006491", "fieldType": "topLevel", "required": false } } ``` --- # Additional Schemas > Schemas that are not grouped by a specific tag. These include core data objects and shared schemas used across multiple operations. ## Apple template header object {#iostemplateheaderobject} An object in `headers` for an iOS template or pass contains the following items. - **`fieldType`** `string` The type of field for the iOS header. Possible values: `topLevel`, `image`, `barcode` - **`formatType`** `integer` Indicates that the `formatType` for the field is a string. Possible values: `1` - **`value`** `string` The default value for the field/header. While the value is always a string, it takes on a different format based on the `fieldType` and purpose. --- ## Callback object {#callbackobject} [Jump to examples ↓](#callbackobject-examples) - **`createdAt`** `string` The date-time when the pass was created. Format: `date-time` - **`externalId`** `string` The external ID for the pass, if set. - **`passId`** `integer` The ID of the pass installed or uninstalled. - **`platform`** `string` The platform on which the pass is installed. Possible values: `android`, `ios` - **`serialNumber`** `string` The serial number of the pass. This string is generated by the vendor — Apple or Google. - **`templateId`** `integer` The ID of the template the pass was created from. - **`updatedAt`** `string` The date-time when the pass was last updated. Format: `date-time` **Examples** *Example callback object* ```json { "passId": 149440311, "templateId": 158327, "serialNumber": "3388000000005047792.158327_92a3e4d1-5110-3aca-a26e-fb21618aa5f2_149440311", "createdAt": "2020-09-11T22:47:22.000Z", "updatedAt": "2020-09-11T22:47:22.000Z", "externalId": "coolexample", "platform": "android" } ``` --- ## Callback personalization object {#callbackpersonalizationobject} You must [add personalization requirements](/docs/developer/rest-api/wallet/operations/apple-wallet-pass-personalization/) to Apple templates before users can personalize passes created from them. [Jump to examples ↓](#callbackpersonalizationobject-examples) **All of:** - [Callback object]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#callbackobject) - **`personalizationInfo`** `object` **Examples** *Example callback with personalization object* ```json { "passId": "12345", "templateId": "25035", "serialNumber": "6779a823-7c8f-4145-a640-c688069a3465", "createdAt": "2022-01-23T20:46:50Z", "platform": "ios", "personalizationInfo": { "fullName": "John LastName", "givenName": "John", "familyName": "LastName", "emailAddress": "test@example.com", "postalCode": "95051", "ISOCountryCode": "US", "phoneNumber": "408-409-1234" } } ``` --- ## Certificate object {#certificateobject} [Jump to examples ↓](#certificateobject-examples) - **`baseName`** `string` Read only: true - **`certificate`** `string` A base64-encoded string of the p12 certificate with the private key. - **`comment`** `string` A description for the certificate. - **`createdAt`** `string` The date and time when the item was created. Format: `date-time` Read only: true - **`default`** `boolean` If true, the certificate is the default for new projects. If you have multiple certificates and set a new default to `true`, the current default is set to `false`. Default: `false` - **`enabled`** `boolean` Indicates whether or not the certificate is in use. Default: `true` - **`expired`** `boolean` If true, the certificate has expired and cannot be used to generate new passes. Read only: true - **`name`** `string` A name for the certificate. - **`nfcSupport`** `boolean` If true, the certificate supports passes that can make use of NFC. Read only: true - **`password`** `string` The password for the p12 file, if the certificate was exported with a password. - **`teamIdentifier`** `string` Read only: true - **`updatedAt`** `string` The date and time when the item was last updated. Format: `date-time` Read only: true - **`vendor`** `string` The vendor of the certificate. Possible values: `Apple` **Used in:** - [Add new certificate]({{< ref "/developer/rest-api/wallet/operations/certificates/" >}}#addcertificate) - [Get certificate]({{< ref "/developer/rest-api/wallet/operations/certificates/" >}}#getcertificate) - [List certificates]({{< ref "/developer/rest-api/wallet/operations/certificates/" >}}#getcertificates) - [Update certificate]({{< ref "/developer/rest-api/wallet/operations/certificates/" >}}#updatecertificate) **Examples** *Example Apple certificate response* ```json { "id": "40adce15-5c52-479d-8620-54c21cd851a6", "vendor": "Apple", "baseName": "pass.com.myName.test", "name": "editable name", "comment": "something about this cert", "teamIdentifier": "9M8MY376H5", "nfcSupport": false, "enabled": false, "createdAt": "2018-05-26T23:23:21Z", "updatedAt": "2019-05-26T22:23:21Z", "expired": false, "validityStart": "2018-05-26T23:45:00Z", "validityEnd": "2019-05-26T23:45:00Z", "templates": [ {"id": 123,"name": "templateName1"}, {"id": 221,"name": "templateName2"} ] } ``` --- ## General template headers {#templaterequestheaders} Meta information about templates; this object appears on all templates and identifies templates associated with a project. [Jump to examples ↓](#templaterequestheaders-examples) - **`deleted`** `boolean` If true, the template is deleted. You can no longer create passes from this template. - **`description`** `string` A description for the template. - **`disabled`** `boolean` If true, the template is disabled; you cannot create new passes for this template until you update the template and enable it again. - **`expiryInfo`** `object` Determine when passes generated from the template should expire. **One of:** - **Expire on a date** `object` Set the specific expiration date for passes generated from this template. Passes expire at 12:00 AM on the date you provide. - **`expiryDate`** `string` The date when passes expire. Format: `date` - **`expiryTimeZone`** `string` Passes expire at 12:00 AM in the time zone you set. - **Expire after** `object` Expire passes generated from this template after the specified number of minutes after creation. - **`expiryDuration`** `integer` The number of days after creation that passes will expire. - **Never expire** `object` Passes generated from the template will never expire. - **`expireNever`** `string` Any string value (or null) will prevent passes generated from this template from expiring. - **`name`** `string` **REQUIRED** The name of the template. - **`projectId`** `integer` The ID of the Wallet project. - **`projectType`** `string` The type of pass the template supports; matches the `type` setting for the parent project. Possible values: `memberCard`, `coupon`, `boardingPass`, `eventTicket`, `generic`, `loyalty`, `giftCard` - **`type`** `string` The type of pass the template supports. This value corresponds to the `projectType`. Possible values: `memberCard`, `coupon`, `boardingPass`, `eventTicket`, `generic`, `loyalty`, `giftCard` - **`vendor`** `string` **REQUIRED** The device vendor the template is designed for. Possible values: `Apple`, `Google` - **`vendorId`** `integer` **REQUIRED** Corresponds to the `vendor` the template supports. `1` indicates an Apple template; `2` indicates a Google template. Possible values: `1`, `2` **Used in:** - [Create project]({{< ref "/developer/rest-api/wallet/operations/projects/" >}}#createproject) - [Create project with external ID]({{< ref "/developer/rest-api/wallet/operations/projects/" >}}#createprojectexternalid) - [Create template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#createtemplate) - [Create template with external ID]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#createexternaltemplate) - [Duplicate project]({{< ref "/developer/rest-api/wallet/operations/projects/" >}}#duplicateproject) - [Get project]({{< ref "/developer/rest-api/wallet/operations/projects/" >}}#getproject) - [Get template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#gettemplate) - [Get template v2]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#gettemplatesv2) - [List projects]({{< ref "/developer/rest-api/wallet/operations/projects/" >}}#listprojects) - [List templates]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#listtemplates) - [Patch template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#patchtemplates) - [Update project]({{< ref "/developer/rest-api/wallet/operations/projects/" >}}#updateproject) - [Update template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#updatetemplate) - [Update template v2]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#updatetemplatesv2) **Examples** *Example template headers* ```json { "vendor": "Google", "projectType": "memberCard", "type": "Loyalty1", "vendorId": 2, "deleted": "False", "description": "description", "name": "Adding Google" } ``` --- ## Google fields {#googletemplaterequestfieldsmodel} Fields on a Google pass are organized into modules. Modules define how fields on the pass are organized and appear. Fields within each module are objects with a string names. [Jump to examples ↓](#googletemplaterequestfieldsmodel-examples) - **`acctModule`** `object` Information associated with an account or membership. These are typically items like the `accountIdLabel` on Loyalty cards or `balance` items on a gift card. - **`headers`** `object` <[Google headers]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#googleheaders)> Google template headers define barcode and top-level information for passes. Fields appearing in the `headers` object for a Google pass template. Header fields typically follow the same model as other fields for Google Wallet templates and passes, but often have specific `value`, `fieldType`, and `formatType` values. - **`imageModulesData`** `object` Contains an image on the pass outside the header. - **`infoModuleData`** `object` Info module - **`linkModulesData`** `object` Contains links including URLs, phone numbers, and email addresses, that you want to make available on the pass. This module typically appears at the bottom of the pass. - **`offerModule`** `object` Specific to google coupons, this module contains information about redeeming the coupon. **OBJECT PROPERTIES** - **`endTime`** `string` The expiration date for the offer. Format: `date-time` - **`multiUseOffer`** `boolean` Indicates whether the coupon/offer is available for multiple users or just a single user. - **`provider`** `string` The offer provider name. - **`redemptionChannel`** `string` Indicates whether the user can redeem the offer at a physical location or online. Possible values: `online`, `instore`, `both`, `temporaryPriceReduction` - **`pointsModule`** `object` Contains information related to `points` that pass users accrue or spend. This module is typically used on loyalty passes. - **`textModulesData`** `object` Contains text information for a pass. The text module typically has information in a header-body format. - **`titleModule`** `object` Contains title and header information specific to each pass type (as opposed to common items held within `headers`). These are items typically referenced by `class` in Google pass designs. **Used in:** - [Create template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#createtemplate) - [Create template with external ID]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#createexternaltemplate) - [Get template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#gettemplate) - [Get template v2]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#gettemplatesv2) - [Patch template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#patchtemplates) - [Update template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#updatetemplate) - [Update template v2]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#updatetemplatesv2) **Examples** *Example Google fields* ```json { "infoModuleData": { "hexFontColor": "#666666", "hexBackgroundColor": "#0096e1", "Program ID": { "label": "Program ID", "value": "12345678", "row": 0, "col": 0, "formatType": "String" }, "Tier Name": { "label": "Tier Name", "value": "Silver", "row": 0, "col": 1, "formatType": "String" }, "Last Updated": { "label": "Last Updated", "value": "Five days ago", "row": 1, "col": 0, "formatType": "String" } }, "textModulesData": { "Program Details": { "header": "Program Details", "body": "Some Basic Text", "row": 0, "col": 0, "formatType": "String" } }, "linksModuleData": { "Merchant Website": { "description": "Merchant Website", "uri": "http:\/\/www.example.com", "order": 1, "formatType": "URL" } }, "messageModule": { }, "imageModulesData": { }, "pointsModule": { "Tier": { "label": "Tier", "value": 2, "row": 0, "col": 1, "formatType": "Number", "numberStyle": "PKNumberStyleDecimal" }, "Points": { "label": "Points", "value": 1234, "row": 0, "col": 0, "formatType": "Number" } }, "notAssigned": { }, "titleModule": { "image": "https:\/\/example.com\/passtools_prod\/1\/images\/default-pass-icon.png", "imageDescription": "Logo Image", "Program Name": { "label": "Program Name", "value": "UA", "row": 0, "col": 0, "formatType": "String" } } } ``` --- ## Google headers {#googleheaders} Fields appearing in the `headers` object for a Google pass template. Header fields typically follow the same model as other fields for Google Wallet templates and passes, but often have specific `value`, `fieldType`, and `formatType` values. [Jump to examples ↓](#googleheaders-examples) - **`background_color`** `object` Sets the background color for the pass. **All of:** - [Optional fields for Google headers]({{< ref "/developer/rest-api/wallet/schemas/template-objects/" >}}#googleheaderitemshared) Header objects for Google Wallet templates use many of the same keys as fields on the template/pass. Populate these keys as necessary. Template responses include these keys with their default values. - - **`fieldType`** `string` Set to `topLevel` for `color` and `text` headers. Possible values: `topLevel` - **`value`** `string` The `color` objects take an rgb value in the format `rgb(255, 255, 255)`. Format: `rgb` - **`background_image`** `object` A background image for the pass. **All of:** - [Optional fields for Google headers]({{< ref "/developer/rest-api/wallet/schemas/template-objects/" >}}#googleheaderitemshared) Header objects for Google Wallet templates use many of the same keys as fields on the template/pass. Populate these keys as necessary. Template responses include these keys with their default values. - - **`fieldType`** `string` Indicates that the `value` is an image. Possible values: `image` - **`formatType`** `string` Indicates that the field takes a string value. While the `formatType` for non-header fields can be another data type, header fields always take string values. In general, you do not have to set this value. Airship can determine the `formatType` from the `fieldType`, and objects in the `headers` array are always String types. Possible values: `String` - **`value`** `string` The URL for the header image. Format: `url` - **`barcodeAltText`** `object` Alternate text displayed below the barcode. **All of:** - [Optional fields for Google headers]({{< ref "/developer/rest-api/wallet/schemas/template-objects/" >}}#googleheaderitemshared) Header objects for Google Wallet templates use many of the same keys as fields on the template/pass. Populate these keys as necessary. Template responses include these keys with their default values. - - **`fieldType`** `string` Set to `barcode` for all barcode headers. Possible values: `barcode` - **`formatType`** `string` Indicates that the field takes a string value. While the `formatType` for non-header fields can be another data type, header fields always take string values. In general, you do not have to set this value. Airship can determine the `formatType` from the `fieldType`, and objects in the `headers` array are always String types. Possible values: `String` - **`value`** `string` The alternate text for the barcode on the template. - **`barcode_encoding`** `object` The encoding format for the barcode. **All of:** - [Optional fields for Google headers]({{< ref "/developer/rest-api/wallet/schemas/template-objects/" >}}#googleheaderitemshared) Header objects for Google Wallet templates use many of the same keys as fields on the template/pass. Populate these keys as necessary. Template responses include these keys with their default values. - - **`fieldType`** `string` Set to `barcode` for all barcode headers. Possible values: `barcode` - **`formatType`** `string` Indicates that the field takes a string value. While the `formatType` for non-header fields can be another data type, header fields always take string values. In general, you do not have to set this value. Airship can determine the `formatType` from the `fieldType`, and objects in the `headers` array are always String types. Possible values: `String` - **`value`** `string` Presently, `iso-8859-1` is the only supported value. Possible values: `iso-8859-1` - **`barcode_type`** `object` The type of barcode supported by the template. This value must be the same as the `barcode_type` set at the project level. **All of:** - [Optional fields for Google headers]({{< ref "/developer/rest-api/wallet/schemas/template-objects/" >}}#googleheaderitemshared) Header objects for Google Wallet templates use many of the same keys as fields on the template/pass. Populate these keys as necessary. Template responses include these keys with their default values. - - **`fieldType`** `string` Set to `barcode` for all barcode headers. Possible values: `barcode` - **`formatType`** `string` Indicates that the field takes a string value. While the `formatType` for non-header fields can be another data type, header fields always take string values. In general, you do not have to set this value. Airship can determine the `formatType` from the `fieldType`, and objects in the `headers` array are always String types. Possible values: `String` - **`value`** `string` The format of the barcode supported by the project and resulting passes. Possible values: `pdf417`, `aztec`, `code128`, `qr`, `upc-a`, `ean-13`, `code-39` - **`barcode_value`** `object` The default value for the barcode used by the template. **All of:** - [Optional fields for Google headers]({{< ref "/developer/rest-api/wallet/schemas/template-objects/" >}}#googleheaderitemshared) Header objects for Google Wallet templates use many of the same keys as fields on the template/pass. Populate these keys as necessary. Template responses include these keys with their default values. - - **`fieldType`** `string` Set to `barcode` for all barcode headers. Possible values: `barcode` - **`formatType`** `string` Indicates that the field takes a string value. While the `formatType` for non-header fields can be another data type, header fields always take string values. In general, you do not have to set this value. Airship can determine the `formatType` from the `fieldType`, and objects in the `headers` array are always String types. Possible values: `String` - **`value`** `string` This value is a default for the barcode. You may set a new or personalized value when creating adaptive links or passes. - **`footer_image`** `object` The footer image for a template. **All of:** - [Optional fields for Google headers]({{< ref "/developer/rest-api/wallet/schemas/template-objects/" >}}#googleheaderitemshared) Header objects for Google Wallet templates use many of the same keys as fields on the template/pass. Populate these keys as necessary. Template responses include these keys with their default values. - - **`fieldType`** `string` Indicates that the `value` is an image. Possible values: `image` - **`formatType`** `string` Indicates that the field takes a string value. While the `formatType` for non-header fields can be another data type, header fields always take string values. In general, you do not have to set this value. Airship can determine the `formatType` from the `fieldType`, and objects in the `headers` array are always String types. Possible values: `String` - **`value`** `string` The URL for the header image. Format: `url` - **`foreground_color`** `object` Sets the foreground color for the template. **All of:** - [Optional fields for Google headers]({{< ref "/developer/rest-api/wallet/schemas/template-objects/" >}}#googleheaderitemshared) Header objects for Google Wallet templates use many of the same keys as fields on the template/pass. Populate these keys as necessary. Template responses include these keys with their default values. - - **`fieldType`** `string` Set to `topLevel` for `color` and `text` headers. Possible values: `topLevel` - **`value`** `string` The `color` objects take an rgb value in the format `rgb(255, 255, 255)`. Format: `rgb` - **`header`** `object` Sets the generic pass header. Required for the generic pass type. **All of:** - [Optional fields for Google headers]({{< ref "/developer/rest-api/wallet/schemas/template-objects/" >}}#googleheaderitemshared) Header objects for Google Wallet templates use many of the same keys as fields on the template/pass. Populate these keys as necessary. Template responses include these keys with their default values. - - **`fieldType`** `string` Set to `topLevel` for `text` headers. Possible values: `topLevel` - **`formatType`** `string` Indicates that the field takes a string value. While the `formatType` for non-header fields can be another data type, header fields always take string values. In general, you do not have to set this value. Airship can determine the `formatType` from the `fieldType`, and objects in the `headers` array are always String types. Possible values: `String` - **`value`** `string` Header text field. Format: `text` - **`icon_image`** `object` The icon image for the template. **All of:** - [Optional fields for Google headers]({{< ref "/developer/rest-api/wallet/schemas/template-objects/" >}}#googleheaderitemshared) Header objects for Google Wallet templates use many of the same keys as fields on the template/pass. Populate these keys as necessary. Template responses include these keys with their default values. - - **`fieldType`** `string` Indicates that the `value` is an image. Possible values: `image` - **`formatType`** `string` Indicates that the field takes a string value. While the `formatType` for non-header fields can be another data type, header fields always take string values. In general, you do not have to set this value. Airship can determine the `formatType` from the `fieldType`, and objects in the `headers` array are always String types. Possible values: `String` - **`value`** `string` The URL for the header image. Format: `url` - **`logo_image`** `object` Specifies the template logo image. **All of:** - [Optional fields for Google headers]({{< ref "/developer/rest-api/wallet/schemas/template-objects/" >}}#googleheaderitemshared) Header objects for Google Wallet templates use many of the same keys as fields on the template/pass. Populate these keys as necessary. Template responses include these keys with their default values. - - **`fieldType`** `string` Indicates that the `value` is an image. Possible values: `image` - **`formatType`** `string` Indicates that the field takes a string value. While the `formatType` for non-header fields can be another data type, header fields always take string values. In general, you do not have to set this value. Airship can determine the `formatType` from the `fieldType`, and objects in the `headers` array are always String types. Possible values: `String` - **`value`** `string` The URL for the header image. Format: `url` - **`logo_text`** `object` Sets the text under the logo image. **OBJECT PROPERTIES** - **`fieldType`** `string` Indicates that the `value` is an image. Possible values: `image` - **`formatType`** `string` Indicates that the field takes a string value. While the `formatType` for non-header fields can be another data type, header fields always take string values. In general, you do not have to set this value. Airship can determine the `formatType` from the `fieldType`, and objects in the `headers` array are always String types. Possible values: `String` - **`value`** `string` The alternate text for the `logo_image`. - **`sharingStatus`** `object` A `field` determining whether passes can be shared across users, devices, or not at all. By default, there are no restrictions with regard to users or devices (`multipleHolders`). While this setting uses the same format as other `fields`, you only need to set the `value` within the object. Most other keys are irrelevant this setting, even though they appear in responses; this field should not be visible on passes, so you should not populate label, order, etc. On iOS devices, `oneUserOneDevice` prohibits sharing (`"sharingProhibited": true`); all other values allow sharing. You can override the template setting on Apple Wallet passes. If you set this field in an adaptive link payload, it will only apply to Apple Wallet passes resulting from the adaptive link; Google Wallet passes will always use the sharing setting set at the template level. **OBJECT PROPERTIES** - **`changeMessage`** `string` The message that appears when you update this field. Nullable: true - **`value`** `string` **REQUIRED** Determines whether a pass supports sharing across users, devices, or both. iOS interprets this as a boolean setting: `oneUserOneDevice` prohibits sharing; all other values allow sharing. Possible values: `multipleHolders`, `oneUserAllDevices`, `oneUserOneDevice` Default: `multipleHolders` - **`strip_image`** `object` The image residing in the barcode strip. **All of:** - [Optional fields for Google headers]({{< ref "/developer/rest-api/wallet/schemas/template-objects/" >}}#googleheaderitemshared) Header objects for Google Wallet templates use many of the same keys as fields on the template/pass. Populate these keys as necessary. Template responses include these keys with their default values. - - **`fieldType`** `string` Indicates that the `value` is an image. Possible values: `image` - **`formatType`** `string` Indicates that the field takes a string value. While the `formatType` for non-header fields can be another data type, header fields always take string values. In general, you do not have to set this value. Airship can determine the `formatType` from the `fieldType`, and objects in the `headers` array are always String types. Possible values: `String` - **`value`** `string` The URL for the header image. Format: `url` - **`subheader`** `object` Sets the optional generic pass subheader. **All of:** - [Optional fields for Google headers]({{< ref "/developer/rest-api/wallet/schemas/template-objects/" >}}#googleheaderitemshared) Header objects for Google Wallet templates use many of the same keys as fields on the template/pass. Populate these keys as necessary. Template responses include these keys with their default values. - - **`fieldType`** `string` Set to `topLevel` for `text` headers. Possible values: `topLevel` - **`formatType`** `string` Indicates that the field takes a string value. While the `formatType` for non-header fields can be another data type, header fields always take string values. In general, you do not have to set this value. Airship can determine the `formatType` from the `fieldType`, and objects in the `headers` array are always String types. Possible values: `String` - **`value`** `string` Header text field. Format: `text` - **`suppress_strip_shine`** `object` Determines whether or not to suppress the strip shine effect on barcodes. **All of:** - [Optional fields for Google headers]({{< ref "/developer/rest-api/wallet/schemas/template-objects/" >}}#googleheaderitemshared) Header objects for Google Wallet templates use many of the same keys as fields on the template/pass. Populate these keys as necessary. Template responses include these keys with their default values. - - **`fieldType`** `string` Set to `barcode` for all barcode headers. Possible values: `barcode` - **`formatType`** `string` Indicates that the field takes a string value. While the `formatType` for non-header fields can be another data type, header fields always take string values. In general, you do not have to set this value. Airship can determine the `formatType` from the `fieldType`, and objects in the `headers` array are always String types. Possible values: `String` - **`value`** `boolean` - **`thumbnail_image`** `object` An object containing the URL for the thumbnail image. **All of:** - [Optional fields for Google headers]({{< ref "/developer/rest-api/wallet/schemas/template-objects/" >}}#googleheaderitemshared) Header objects for Google Wallet templates use many of the same keys as fields on the template/pass. Populate these keys as necessary. Template responses include these keys with their default values. - - **`fieldType`** `string` Indicates that the `value` is an image. Possible values: `image` - **`formatType`** `string` Indicates that the field takes a string value. While the `formatType` for non-header fields can be another data type, header fields always take string values. In general, you do not have to set this value. Airship can determine the `formatType` from the `fieldType`, and objects in the `headers` array are always String types. Possible values: `String` - **`value`** `string` The URL for the header image. Format: `url` **Used in:** - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassexternalid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createpass) - [Create pass from a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassfromtemplateexternalid) - [Create template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#createtemplate) - [Create template with external ID]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#createexternaltemplate) - [Generates a pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createdynamiclink) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#getpassfromtemplateexternalid) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#getpass) - [Get template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#gettemplate) - [Get template v2]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#gettemplatesv2) - [Patch template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#patchtemplates) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#updatepass) - [Update template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#updatetemplate) - [Update template v2]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#updatetemplatesv2) **Examples** *Example Google headers* ```json { "headers": { "barcode_type": { "fieldType": "barcode", "value": "", "notShared": true }, "barcode_value": { "fieldType": "barcode", "value": "", "notShared": true }, "barcode_label": { "fieldType": "barcode", "value": "", "notShared": true }, "barcode_encoding": { "fieldType": "barcode", "value": "", "notShared": true }, "barcodeAltText": { "fieldType": "barcode", "value": "", "notShared": true } } } ``` --- ## iOS fields {#iosfieldobject} Defines fields on iOS templates and subsequent passes generated from the template. [Jump to examples ↓](#iosfieldobject-examples) - **`fields`** `object` All non-header fields on an iOS template sit inside this object. **Used in:** - [Create template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#createtemplate) - [Create template with external ID]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#createexternaltemplate) - [Get template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#gettemplate) - [Get template v2]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#gettemplatesv2) - [Patch template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#patchtemplates) - [Update template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#updatetemplate) - [Update template v2]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#updatetemplatesv2) **Examples** *Example iOS field* ```json { "fields": { "Coupon": { "formatType": "String", "changeMessage": "Enjoy %@ off your next order!", "order": 1, "fieldType": "primary", "textAlignment": "textAlignmentRight", "value": "20%", "label": "coupon", "required": false, "hideEmpty": true } } } ``` --- ## iOS template headers {#iosheaders} The iOS template `headers` object can contain the following objects. Each object has a `formatType`, `fieldType`, and `value`. * `formatType` is always `1`, indicating that the `value` is a string. * `fieldType` is `topLevel` — a text or color value on the top-front of the pass, `image`, or `barcode`. * `value` is the default value for the header field. [Jump to examples ↓](#iosheaders-examples) - **`background_color`** `object` Sets the background color for the pass. **OBJECT PROPERTIES** - **`fieldType`** `string` Set to `topLevel` for `color` and `text` headers. Possible values: `topLevel` - **`formatType`** `integer` For iOS, a value of `1` indicates that the `formatType` for the field is a string. Possible values: `1` - **`value`** `string` The `color` objects take an rgb value in the format `rgb(255, 255, 255)`. Format: `rgb` - **`background_image`** `object` A background image for the pass. **OBJECT PROPERTIES** - **`fieldType`** `string` Indicates that the `value` is an image. Possible values: `image` - **`formatType`** `integer` For iOS, a value of `1` indicates that the `formatType` for the field is a string. Possible values: `1` - **`value`** `string` The URL for the header image. Format: `url` - **`barcodeAltText`** `object` Alternate text displayed below the barcode. **OBJECT PROPERTIES** - **`fieldType`** `string` Set to `barcode` for all barcode headers. Possible values: `barcode` - **`formatType`** `integer` For iOS, a value of `1` indicates that the `formatType` for the field is a string. Possible values: `1` - **`value`** `string` The alternate text for the barcode on the template. - **`barcode_encoding`** `object` The encoding format for the barcode. **OBJECT PROPERTIES** - **`fieldType`** `string` Set to `barcode` for all barcode headers. Possible values: `barcode` - **`formatType`** `integer` For iOS, a value of `1` indicates that the `formatType` for the field is a string. Possible values: `1` - **`value`** `string` Presently, `iso-8859-1` is the only supported value. Possible values: `iso-8859-1` - **`barcode_type`** `object` The type of barcode supported by the template. This value must be the same as the `barcode_type` set at the project level. **OBJECT PROPERTIES** - **`fieldType`** `string` Set to `barcode` for all barcode headers. Possible values: `barcode` - **`formatType`** `integer` For iOS, a value of `1` indicates that the `formatType` for the field is a string. Possible values: `1` - **`value`** `string` The format of the barcode supported by the project and resulting passes. Possible values: `pdf417`, `aztec`, `code128`, `qr`, `upc-a`, `ean-13`, `code-39` - **`barcode_value`** `object` The default value for the barcode used by the template. **OBJECT PROPERTIES** - **`fieldType`** `string` Set to `barcode` for all barcode headers. Possible values: `barcode` - **`formatType`** `integer` For iOS, a value of `1` indicates that the `formatType` for the field is a string. Possible values: `1` - **`value`** `string` This value is a default for the barcode. You may set a new or personalized value when creating adaptive links or passes. - **`footer_image`** `object` The footer image for a template. **OBJECT PROPERTIES** - **`fieldType`** `string` Indicates that the `value` is an image. Possible values: `image` - **`formatType`** `integer` For iOS, a value of `1` indicates that the `formatType` for the field is a string. Possible values: `1` - **`value`** `string` The URL for the header image. Format: `url` - **`foreground_color`** `object` Sets the foreground color for the template. **OBJECT PROPERTIES** - **`fieldType`** `string` Set to `topLevel` for `color` and `text` headers. Possible values: `topLevel` - **`formatType`** `integer` For iOS, a value of `1` indicates that the `formatType` for the field is a string. Possible values: `1` - **`value`** `string` The `color` objects take an rgb value in the format `rgb(255, 255, 255)`. Format: `rgb` - **`icon_image`** `object` The icon image for the template. **OBJECT PROPERTIES** - **`fieldType`** `string` Indicates that the `value` is an image. Possible values: `image` - **`formatType`** `integer` For iOS, a value of `1` indicates that the `formatType` for the field is a string. Possible values: `1` - **`value`** `string` The URL for the header image. Format: `url` - **`logo_color`** `object` Specifies the color of the logo on the template. **OBJECT PROPERTIES** - **`fieldType`** `string` Set to `topLevel` for `color` and `text` headers. Possible values: `topLevel` - **`formatType`** `integer` For iOS, a value of `1` indicates that the `formatType` for the field is a string. Possible values: `1` - **`value`** `string` The `color` objects take an rgb value in the format `rgb(255, 255, 255)`. Format: `rgb` - **`logo_image`** `object` Specifies the template logo image. **OBJECT PROPERTIES** - **`fieldType`** `string` Indicates that the `value` is an image. Possible values: `image` - **`formatType`** `integer` For iOS, a value of `1` indicates that the `formatType` for the field is a string. Possible values: `1` - **`value`** `string` The URL for the header image. Format: `url` - **`logo_text`** `object` Sets the text under the logo image. **OBJECT PROPERTIES** - **`fieldType`** `string` Indicates that the `value` is an image. Possible values: `image` - **`formatType`** `integer` For iOS, a value of `1` indicates that the `formatType` for the field is a string. Possible values: `1` - **`value`** `string` The alternate text for the `logo_image`. - **`relevantDate`** `object` Sets the relevant date value that serves as the notification trigger for time-based pass relevance. **OBJECT PROPERTIES** - **`fieldType`** `string` Indicates that the `value` is a top-level pass attribute. Possible values: `topLevel` - **`formatType`** `integer` For iOS, a value of `1` indicates that the `formatType` for the field is a string. Possible values: `1` - **`value`** `string` The [date-time](/docs/developer/rest-api/wallet/introduction/#datetime-format) string indicating when the pass becomes relevant. - **`sharingStatus`** `object` A `field` determining whether passes can be shared across users, devices, or not at all. By default, there are no restrictions with regard to users or devices (`multipleHolders`). While this setting uses the same format as other `fields`, you only need to set the `value` within the object. Most other keys are irrelevant this setting, even though they appear in responses; this field should not be visible on passes, so you should not populate label, order, etc. On iOS devices, `oneUserOneDevice` prohibits sharing (`"sharingProhibited": true`); all other values allow sharing. You can override the template setting on Apple Wallet passes. If you set this field in an adaptive link payload, it will only apply to Apple Wallet passes resulting from the adaptive link; Google Wallet passes will always use the sharing setting set at the template level. **OBJECT PROPERTIES** - **`changeMessage`** `string` The message that appears when you update this field. Nullable: true - **`value`** `string` **REQUIRED** Determines whether a pass supports sharing across users, devices, or both. iOS interprets this as a boolean setting: `oneUserOneDevice` prohibits sharing; all other values allow sharing. Possible values: `multipleHolders`, `oneUserAllDevices`, `oneUserOneDevice` Default: `multipleHolders` - **`strip_image`** `object` The image residing in the barcode strip. **OBJECT PROPERTIES** - **`fieldType`** `string` Indicates that the `value` is an image. Possible values: `image` - **`formatType`** `integer` For iOS, a value of `1` indicates that the `formatType` for the field is a string. Possible values: `1` - **`value`** `string` The URL for the header image. Format: `url` - **`suppress_strip_shine`** `object` Determines whether or not to suppress the strip shine effect on barcodes. **OBJECT PROPERTIES** - **`fieldType`** `string` Set to `barcode` for all barcode headers. Possible values: `barcode` - **`formatType`** `integer` For iOS, a value of `1` indicates that the `formatType` for the field is a string. Possible values: `1` - **`value`** `boolean` - **`thumbnail_image`** `object` An object containing the URL for the thumbnail image. **OBJECT PROPERTIES** - **`fieldType`** `string` Indicates that the `value` is an image. Possible values: `image` - **`formatType`** `integer` For iOS, a value of `1` indicates that the `formatType` for the field is a string. Possible values: `1` - **`value`** `string` The URL for the header image. Format: `url` **Used in:** - [Create template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#createtemplate) - [Create template with external ID]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#createexternaltemplate) - [Get template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#gettemplate) - [Get template v2]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#gettemplatesv2) - [Patch template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#patchtemplates) - [Update template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#updatetemplate) - [Update template v2]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#updatetemplatesv2) **Examples** *Example iOS headers* ```json { "headers": { "logo_color": { "formatType": 1, "fieldType": "topLevel", "value": "rgb(24,86,148)" }, "icon_image": { "formatType": 1, "fieldType": "image", "value": "https:\/\/example.com\/passtools_prod\/1\/images\/default-pass-icon.png" }, "logo_text": { "formatType": 1, "fieldType": "topLevel", "value": "Logo Text" }, "barcode_encoding": { "formatType": 1, "fieldType": "barcode", "value": "iso-8859-1" }, "suppress_strip_shine": { "formatType": 1, "fieldType": "topLevel", "value": "true" }, "logo_image": { "formatType": 1, "fieldType": "image", "value": "https:\/\/example.com\/passtools_prod\/1\/images\/default-pass-logo.png" }, "foreground_color": { "formatType": 1, "fieldType": "topLevel", "value": "rgb(255,255,255)" }, "background_color": { "formatType": 1, "fieldType": "topLevel", "value": "rgb(49,159,196)" } } } ``` --- ## Linked Passes {#linkedpasses} An object containing a `passURIs` array of passes to link. [Jump to examples ↓](#linkedpasses-examples) - **`passURIs`** `array` <[Pass URIs]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#passuris)> A list of URIs identifying wallet passes to link. **Used in:** - [Auto link passes to existing Google Pass]({{< ref "/developer/rest-api/wallet/operations/google-passes-only/" >}}#autolinkedpassesforpassid) - [Auto link passes to Google Pass with external ID]({{< ref "/developer/rest-api/wallet/operations/google-passes-only/" >}}#autolinkedpassesforpassexternalid) - [Auto link passes to Google Pass with external template ID]({{< ref "/developer/rest-api/wallet/operations/google-passes-only/" >}}#autolinkedpassesforpassandtemplateexternalid) **Examples** *Example linked passes object* ```json { "passURIs" : ["v1/pass/adaptive/fqsl9UyW3O7", "v1/pass/12345"] } ``` --- ## Location object {#locationobject} Represents a location on a pass or an adaptive link. Place objects in the locations array to add location information to passes and templates. Updating locations on a pass or template will replace all locations on that pass; if you want to add to the locations on a pass, you must provide all locations already included on the pass and any additional locations you want to add. Apple Wallet Each pass supports up to 10 locations. If you exceed this limit for an iOS pass, we will use the 10 locations nearest to a user (located by IP address) when they install the pass. [Jump to examples ↓](#locationobject-examples) - **`city`** `string` The location city. - **`country`** `string` The country abbreviation or name. - **`latitude`** `number` **REQUIRED** The latitude of the location. Format: `double` - **`longitude`** `number` **REQUIRED** The longitude of the location. Format: `double` - **`region`** `string` The region or state name. - **`regionCode`** `string` The region or zip code. - **`relevantText`** `string` An optional value shown as lock screen text for iOS when the device is close to this location. - **`streetAddress1`** `string` The first line of the location address. - **`streetAddress2`** `string` The second line of the location address. **Used in:** - [Add locations to pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#addlocationstopassfromtemplateexternalid) - [Add locations to pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#addlocationstopass) - [Add locations to template]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#addlocationstotemplate) - [Create Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createadaptivelink) - [Create Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#createadaptivelinkexternalid) - [Create Adaptive Link in project]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#createadaptivelinkexternalprojectid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassexternalid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createpass) - [Create pass from a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassfromtemplateexternalid) - [Delete locations from pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#deletelocationfrompassfromtemplateexternalid) - [Delete locations from pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#deletelocationfrompass) - [Generates a pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createdynamiclink) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#getpassfromtemplateexternalid) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#getpass) - [Update Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#updateadaptivelink) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassexternalid) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#updatepass) - [Update pass for a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassfromtemplateexternalid) - [Update passes from Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesexternalid) - [Update passes from Adaptive Link for an external project]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesfromadaptivelinkexternalid) **Examples** *Example location object* ```json { "longitude": -122.374, "latitude": 37.618, "relevantText": "Hello loc0", "streetAddress1": "address line #1", "streetAddress2": "address line #2", "city": "San Francisco", "region": "CA", "regionCode": "94404", "country": "US" } ``` --- ## Pagination object {#paginationobject} Contains information about pagination, according to your query parameters. [Jump to examples ↓](#paginationobject-examples) - **`direction`** `string` The direction of results, ascending, or descending. Possible values: `ASC`, `DESC` - **`order`** `string` The key in the result set that you want to order results by. Defaults to `id`. - **`page`** `integer` The page you are on. Multiply by the page size to determine the result set on the page. - **`pageSize`** `integer` The number of results per page. - **`start`** `integer` The first result on the page; results begin with 0. **Used in:** - [Get template passes]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#getpassesbytemplate) - [List all tags]({{< ref "/developer/rest-api/wallet/operations/tags/" >}}#listalltags) - [List certificates]({{< ref "/developer/rest-api/wallet/operations/certificates/" >}}#getcertificates) - [List event passes]({{< ref "/developer/rest-api/wallet/operations/event-passes/" >}}#getpassesbyevent) - [List flight passes]({{< ref "/developer/rest-api/wallet/operations/flight-passes/" >}}#getpassesbyflight) - [List passes]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#getpasses) - [List passes for a tag]({{< ref "/developer/rest-api/wallet/operations/tags/" >}}#listpassesfortag) - [List passes for a tag]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#listpassesfortag) - [List passes for an Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#getpassesbyadaptivelink) - [List passes for an Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#getpassesbyadaptivelink) - [List passes for an Adaptive Link for a project]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#getpassesbyadaptivelinkforproject) - [List passes for an Adaptive Link for an external project]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#getpassesbyadaptivelinkforexternalproject) - [List projects]({{< ref "/developer/rest-api/wallet/operations/projects/" >}}#listprojects) - [List templates]({{< ref "/developer/rest-api/wallet/operations/templates/" >}}#listtemplates) **Examples** *Example list pagination* ```json { "pagination": { "order": "id", "page": 1, "start": 0, "direction": "DESC", "pageSize": 10 } } ``` --- ## Pass field updates {#fields} When updating a field on a pass or an adaptive link, you need only provide the following items. You cannot update the position of the field or other information held by the template — only the field label, value, and the message the user receives when their pass is updated. [Jump to examples ↓](#fields-examples) - **`changeMessage`** `string` The message that appears when you change the value or label for a field. Use `%@` to pass variables to the field. - **`label`** `string` The field label, usually represented as a title on the pass. Only provide the label if you want to use a different label than is provided by the template. - **`semantics`** `object` <[Boarding pass semantics]({{< ref "/developer/rest-api/wallet/schemas/flights-and-boarding-passes/" >}}#boardingpasssemantics)> **APPLE ONLY** Field-level semantics. For Apple boarding passes only, a JSON object that uses key-value pairs to add rich, machine-readable data that enhances passes. You can nest this object within `fields`. - **`value`** `string` **REQUIRED** The default value for the field. **Used in:** - [Create boarding pass or event ticket Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createboardingpassoreventticketadaptivelinks) **Examples** *Example update to a field called "Coupon"* ```json { "Coupon": { "changeMessage": "Enjoy %@ off your next order!", "value": "20%", "label": "Coupon" } } ``` --- ## Pass URIs {#passuris} A list of URIs identifying wallet passes to link. **Used in:** - [Auto link passes to existing Google Pass]({{< ref "/developer/rest-api/wallet/operations/google-passes-only/" >}}#autolinkedpassesforpassid) - [Auto link passes to Google Pass with external ID]({{< ref "/developer/rest-api/wallet/operations/google-passes-only/" >}}#autolinkedpassesforpassexternalid) - [Auto link passes to Google Pass with external template ID]({{< ref "/developer/rest-api/wallet/operations/google-passes-only/" >}}#autolinkedpassesforpassandtemplateexternalid) --- ## Passenger capabilities {#passengercapabilities} List of passenger capabilities. **Array items — Any of:** Possible values: `preBoarding` The passenger is eligible for pre-boarding. Possible values: `priorityBoarding` The passenger is eligible for priority boarding. Possible values: `carryOn` The passenger's fare allows them to bring a carry-on item. Possible values: `personalItem` The passenger's fare allows them to bring a personal item. **Used in:** - [Create boarding pass or event ticket Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createboardingpassoreventticketadaptivelinks) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassexternalid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createpass) - [Create pass from a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassfromtemplateexternalid) - [Generates a pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createdynamiclink) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#getpassfromtemplateexternalid) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#getpass) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassexternalid) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#updatepass) - [Update pass for a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassfromtemplateexternalid) - [Update passes from Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesexternalid) - [Update passes from Adaptive Link for an external project]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesfromadaptivelinkexternalid) --- ## Passenger information SSRs {#passengerinformationssrs} A list of Special Service Requests (SSRs) information for passengers; supports any valid four-letter IATA SSR code in addition to those listed. `string` Allowed values: `infantLap` **Used in:** - [Create boarding pass or event ticket Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createboardingpassoreventticketadaptivelinks) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassexternalid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createpass) - [Create pass from a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassfromtemplateexternalid) - [Generates a pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createdynamiclink) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#getpassfromtemplateexternalid) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#getpass) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassexternalid) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#updatepass) - [Update pass for a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassfromtemplateexternalid) - [Update passes from Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesexternalid) - [Update passes from Adaptive Link for an external project]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesfromadaptivelinkexternalid) --- ## Passenger name object {#passengernamesemanticsobject} - **`familyName`** `string` The person's family name or last name. - **`givenName`** `string` The person's given name; also called the forename or first name in some countries. - **`middleName`** `string` The person's middle name. - **`namePrefix`** `string` The prefix for the person's name, such as "Dr". - **`nameSuffix`** `string` The suffix for the person's name, such as "Junior". - **`nickname`** `string` The person's nickname. - **`phoneticRepresentation`** `string` The phonetic representation of the person's name. **Used in:** - [Create boarding pass or event ticket Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createboardingpassoreventticketadaptivelinks) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassexternalid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createpass) - [Create pass from a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassfromtemplateexternalid) - [Generates a pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createdynamiclink) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#getpassfromtemplateexternalid) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#getpass) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassexternalid) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#updatepass) - [Update pass for a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassfromtemplateexternalid) - [Update passes from Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesexternalid) - [Update passes from Adaptive Link for an external project]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesfromadaptivelinkexternalid) --- ## Passenger seat object {#seatsemanticsobject} Seating information, including cabin class. - **`seatAisle`** `string` The aisle that contains the seat. - **`seatDescription`** `string` A description of the seat, such as a flat bed seat. - **`seatIdentifier`** `string` The identifier code for the seat. - **`seatLevel`** `string` The level that contains the seat. - **`seatNumber`** `string` The number of the seat. - **`seatRow`** `string` The row that contains the seat. - **`seatSection`** `string` The section that contains the seat. - **`seatSectionColor`** `string` A color associated with identifying the seat, specified as a CSS-style RGB triple, such as `rgb(23, 187, 82)`. - **`seatType`** `string` The type of seat, such as reserved seating. **Used in:** - [Create boarding pass or event ticket Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createboardingpassoreventticketadaptivelinks) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassexternalid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createpass) - [Create pass from a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassfromtemplateexternalid) - [Generates a pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createdynamiclink) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#getpassfromtemplateexternalid) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#getpass) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassexternalid) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#updatepass) - [Update pass for a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassfromtemplateexternalid) - [Update passes from Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesexternalid) - [Update passes from Adaptive Link for an external project]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesfromadaptivelinkexternalid) --- ## Passenger service SSRs {#passengerservicessrs} A list of Special Service Requests (SSRs) for passengers; supports any valid four-letter IATA SSR code in addition to those listed. `string` Allowed values: `wheelChair`, `serviceAnimal`, `carryOnPet`, `unAccompaniedMinor` **Used in:** - [Create boarding pass or event ticket Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createboardingpassoreventticketadaptivelinks) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassexternalid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createpass) - [Create pass from a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassfromtemplateexternalid) - [Generates a pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createdynamiclink) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#getpassfromtemplateexternalid) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#getpass) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassexternalid) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#updatepass) - [Update pass for a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassfromtemplateexternalid) - [Update passes from Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesexternalid) - [Update passes from Adaptive Link for an external project]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesfromadaptivelinkexternalid) --- ## Schedule update object {#scheduleupdateobject} Specifies updates to passes or adaptive links at a particular date and time. [Jump to examples ↓](#scheduleupdateobject-examples) - **`name`** `string` A name for the schedule. - **`schedule`** `object` **OBJECT PROPERTIES** - **`scheduled_time`** `string` The ISO 8601 inclusive date, optionally including an offset, e.g., 2007-03-01T13:00:00+08:00. The value will be converted and stored as UTC. Format: `date-time` - **`update`** `object` The updates you want to make to an `audience` or `pass`, generated from a `template` within the project. Cannot also use the "notify" object when using "update". **OBJECT PROPERTIES** - **`audience`** `object` <[Audience selector]({{< ref "/developer/rest-api/wallet/schemas/audience-selection/" >}}#audienceselector)> Determines the passes you want to target. - **`pass`** `object` **OBJECT PROPERTIES** - **`fields`** `object` - **`url`** `string` A URL to get the schedule object. Format: `url` Read only: true **Used in:** - [Get schedule]({{< ref "/developer/rest-api/wallet/operations/schedules/" >}}#getschedule) - [List schedules]({{< ref "/developer/rest-api/wallet/operations/schedules/" >}}#listschedules) - [Schedule an update or push notification]({{< ref "/developer/rest-api/wallet/operations/schedules/" >}}#scheduleupdate) - [Update schedule]({{< ref "/developer/rest-api/wallet/operations/schedules/" >}}#updateschedule) **Examples** *Scheduled pass update* ```json { "name": "New Offer Update", "schedule": { "scheduled_time": "2017-04-10T18:45:00" }, "update": { "audience": { "tag": "TZ_ET" }, "pass": { "fields": { "primary1": { "value": "$20 Off" }, "secondary1": { "value": "Mega Offer" } } }, "template": "12345" } } ``` --- ## Segment selector {#segmentselector} Boolean tag selectors specifying a group of passes. You can nest `AND` and `OR` selectors. [Jump to examples ↓](#segmentselector-examples) **Any of:** AND selector - **`and`** `array` **One of:** - **`tag`** `string` - [Segment selector]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#segmentselector) Boolean tag selectors specifying a group of passes. You can nest `AND` and `OR` selectors. OR selector - **`or`** `array` **One of:** - **`tag`** `string` - [Segment selector]({{< ref "/developer/rest-api/wallet/schemas/others/" >}}#segmentselector) Boolean tag selectors specifying a group of passes. You can nest `AND` and `OR` selectors. NOT selector - **`not`** `object[object]` Defines an event value to match. **Used in:** - [Create segment]({{< ref "/developer/rest-api/wallet/operations/segments/" >}}#createsegment) - [Look up segment]({{< ref "/developer/rest-api/wallet/operations/segments/" >}}#getsegment) - [Update segment]({{< ref "/developer/rest-api/wallet/operations/segments/" >}}#updatesegment) **Examples** *Segment selector* ```json { "and": [ { "tag": "TZ_PST" }, { "not": { "tag": "TZ_ET" } } ] } ``` --- ## Transit security programs {#securityprograms} Security program names. **Array items — Any of:** Possible values: `tsaPreCheck` Wallet will display a TSA PreCheck icon on the boarding pass. Possible values: `tsaPrecheckTouchlessId` If present, Wallet will display a TSA PreCheck Touchless ID icon on the boarding pass. Possible values: `oss` One Stop Security. Possible values: `iti` International to International. Possible values: `itd` International to Domestic. Possible values: `globalEntry` Global Entry. Possible values: `clear` CLEAR **Used in:** - [Create boarding pass or event ticket Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createboardingpassoreventticketadaptivelinks) - [Create flight]({{< ref "/developer/rest-api/wallet/operations/flights/" >}}#createflight) - [Create flight with external ID]({{< ref "/developer/rest-api/wallet/operations/flights/" >}}#createflightexternalid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassexternalid) - [Create pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createpass) - [Create pass from a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#createpassfromtemplateexternalid) - [Generates a pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#createdynamiclink) - [Get flight]({{< ref "/developer/rest-api/wallet/operations/flights/" >}}#getflight) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#getpassfromtemplateexternalid) - [Get pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#getpass) - [Update flight]({{< ref "/developer/rest-api/wallet/operations/flights/" >}}#updateflight) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassexternalid) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#updatepass) - [Update pass for a template]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassfromtemplateexternalid) - [Update passes from Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesexternalid) - [Update passes from Adaptive Link for an external project]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesfromadaptivelinkexternalid) --- ## Universal links {#universallinksobject} A list of key-value pairs that represents partner URLs. - **`accessibilityURL`** `string` The URL for special assistance. Format: `url` - **`bagPolicyURL`** `string` The URL for the bag policy information. Format: `url` - **`changeSeatURL`** `string` The URL for seat change. Format: `url` - **`entertainmentURL`** `string` The URL for inflight entertainment. Format: `url` - **`managementURL`** `string` The URL for managing the reservation. Format: `url` - **`orderFoodURL`** `string` The URL for ordering a meal. Format: `url` - **`purchaseAdditionalBaggageURL`** `string` The URL for adding/purchasing additional bags. Format: `url` - **`purchaseLoungeAccessURL`** `string` The URL for purchasing lounge access. Format: `url` - **`purchaseWifiURL`** `string` The URL for purchasing inflight Wi-Fi. Format: `url` - **`registerServiceAnimalURL`** `string` The URL for registering a service animal. Format: `url` - **`reportLostBagURL`** `string` The URL for reporting a lost bag. Format: `url` - **`requestWheelchairURL`** `string` The URL for requesting a wheelchair. Format: `url` - **`transitProviderEmail`** `string` The URL for the airline email address. Format: `email` - **`transitProviderPhoneNumber`** `string` The URL for the airline phone number. Format: `url` - **`transitProviderWebsiteURL`** `string` The URL for the airline website. Format: `url` - **`upgradeURL`** `string` The URL for upgrading a seat or fare. Format: `url` **Used in:** - [Create boarding pass or event ticket Adaptive Links]({{< ref "/developer/rest-api/wallet/operations/adaptive-links/" >}}#createboardingpassoreventticketadaptivelinks) - [Create flight]({{< ref "/developer/rest-api/wallet/operations/flights/" >}}#createflight) - [Create flight with external ID]({{< ref "/developer/rest-api/wallet/operations/flights/" >}}#createflightexternalid) - [Get flight]({{< ref "/developer/rest-api/wallet/operations/flights/" >}}#getflight) - [Update flight]({{< ref "/developer/rest-api/wallet/operations/flights/" >}}#updateflight) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes-with-external-ids/" >}}#updatepassexternalid) - [Update pass]({{< ref "/developer/rest-api/wallet/operations/passes/" >}}#updatepass) - [Update passes from Adaptive Link]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesexternalid) - [Update passes from Adaptive Link for an external project]({{< ref "/developer/rest-api/wallet/operations/adaptive-links-with-external-ids/" >}}#updatepassesfromadaptivelinkexternalid) ---