### Complete Store Card Pass Example Source: https://developer.apple.com/documentation/walletpasses/creating-a-store-card-pass A comprehensive example of a `pass.json` file for a store card pass, demonstrating the use of `storeCard` with primary, auxiliary, and back fields. ```json { "formatVersion": 1, "passTypeIdentifier": "pass.com.example.loyalty-card", "serialNumber": "123A4b5Z7p", "teamIdentifier": "ABCD1234", "webServiceURL": "https://example.com/passes/", "authenticationToken": "xyz18vnkabn3789dtoBsk77v", "barcodes": { "message": "12345678", "format": "PKBarcodeFormatCode128", "messageEncoding": "iso-8859-1" }, "organizationName": "My coffee company" "description": "Coffee shop loyalty card.", "logoText": "My coffee shop", "foregroundColor": "rgb(222, 173, 40)", "backgroundColor": "rgb(24, 44, 82)", "storeCard": { "primaryFields": [ { "key": "rewardsBalance", "label": "Rewards Value", "value": "10", "currencyCode": "USD" } ], "auxiliaryFields" : [ { "key": "status", "label": "Coffee Status" "value": "Coffee Champ" }, { "key" : "totalPoints", "label": "Points", "value" : "75" } ], "backFields": [ { "key": "terms", "label": "Rewards Terms and Conditions", "value": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam fermentum vestibulum est. Cras rhoncus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed quis tortor. Donec non ipsum. Mauris condimentum, odio nec porta tristique, ante neque malesuada massa, in dignissim eros velit at tellus. Donec et risus in ligula eleifend consectetur. Donec volutpat eleifend augue. Integer gravida sodales leo. Nunc vehicula neque ac erat. Vivamus non nisl. Fusce ac magna. Suspendisse euismod libero eget mauris" } ] } } ``` -------------------------------- ### Full Coupon Pass Example Source: https://developer.apple.com/documentation/walletpasses/creating-a-coupon-pass A comprehensive example of a `pass.json` file for a coupon pass, demonstrating the 'coupon' object with primary, auxiliary, and back fields, along with other pass properties like barcodes and styling. ```json { "formatVersion": 1, "passTypeIdentifier": "pass.com.example.coupon-pass", "serialNumber": "123A4b5Z7p", "teamIdentifier": "ABCD1234", "webServiceURL": "https://example.com/passes/", "authenticationToken": "xyz18vnkabn3789dtoBsk77v", "barcodes": { "message": "12345678", "format": "PKBarcodeFormatCode128", "messageEncoding": "iso-8859-1" }, "organizationName": "My company name" "description": "Winter holiday coupon", "logoText": "My company", "foregroundColor": "rgb(245, 237, 95)", "backgroundColor": "rgb(34, 107, 72)", "coupon": { "primaryFields": [ { "key": "offer", "label": "All holiday items.", "value": "25% off" } ], "auxiliaryFields": [ { "key": "expires", "label": "EXPIRES", "value": "2026-03-01T10:00-05:00", "isRelative": true, "dateStyle": "PKDateStyleShort" } ], "backFields": [ { "key": "customer-service", "label": "Customer service", "value": "(800) 555-5555" }, { "key": "terms", "label": "Terms and Conditions", "value": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam fermentum vestibulum est. Cras rhoncus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed quis tortor. Donec non ipsum. Mauris condimentum, odio nec porta tristique, ante neque malesuada massa, in dignissim eros velit at tellus. Donec et risus in ligula eleifend consectetur. Donec volutpat eleifend augue. Integer gravida sodales leo. Nunc vehicula neque ac erat. Vivamus non nisl. Fusce ac magna. Suspendisse euismod libero eget mauris" } ] } } ``` -------------------------------- ### Example manifest.json for a localized pass Source: https://developer.apple.com/documentation/walletpasses/building-a-pass This JSON file lists the source files for a pass and their SHA1 hashes. It's used to generate the manifest for signing. Include this in the pass bundle. ```json { "icon.png" : "2a1625e1e1b3b38573d086b5ec158f72f11283a0", "icon@2x.png" : "7321a3b7f47d1971910db486330c172a720c3e4b", "icon@3x.png" : "7321a3b7f47d1971910db486330c172a720c3e4b", "pass.json" : "ef3f648e787a16ac49fff2c0daa8615e1fa15df9", "strip.png" : "25b737727194b5c7b26a86d57e859a054eada240", "en.lproj\/logo.png" : "cff02680b9041b7bf637960f9f2384738c935347", "en.lproj\/logo@2x.png" : "0e12af882204c3661fd937f6594c6b5ffc6b8a49", "en.lproj\/logo@3x.png" : "1f103c8a07fb979ea33adfbfd031e26305fd616b", "en.lproj\/pass.strings" : "aaf7d9598f6a792755be71f492a3523d507bc212", "zh-Hans.lproj\/logo.png" : "eca86d8a474ccd33978f6aaf98a564669d45c7ae", "zh-Hans.lproj\/logo@2x.png" : "b6556bc2fa795d11262f17cdff04f80350398f5f", "zh-Hans.lproj\/logo@3x.png" : "124f8381721b44b2b57bf33e30b8a9a2e0404bce", "zh-Hans.lproj\/pass.strings" : "b0b4499ba7369e4cc15bad45c251e7b9bbcad6a4", } ``` -------------------------------- ### Sports Event Pass with Semantic Tags Source: https://developer.apple.com/documentation/walletpasses/creating-an-event-pass-using-semantic-tags This example demonstrates a `pass.json` configuration for a sports event pass, including team abbreviations and other relevant semantic tags. ```json { // Traditional pass.json keys and structure. "description" : "MLS Messi Pass", "teamIdentifier" : "T5742Z534D", "serialNumber" : "messi1", "formatVersion" : 1, "foregroundColor" : "rgb(255, 255, 255)", "labelColor" : "rgb(255, 255, 255)", "backgroundColor" : "rgb(215, 154, 172)", "passTypeIdentifier" : "pass.com.sports.event", "groupingIdentifier" : "Season Opener", "organizationName" : "Game", "nfc" : { "message" : "MESSAGE", "encryptionPublicKey" : "PUBLICKEY" }, // Retains the same eventTicket style key. "eventTicket": { // Legacy fields for backwards compatibility. "primaryFields": [ ... ], "secondaryFields": [ ... ], "backFields": [ ], }, "relevantDates": [ { "startDate": "2025-12-09T13:00-07:00", "endDate": "2025-12-09T23:00-07:00" } ], // The preferred style schemes. "preferredStyleSchemes": [ "posterEventTicket", "eventTicket" ], // Use semantic tags to give metadata to the system and to the UI. "semantics": { ``` -------------------------------- ### General Event Pass with Semantic Tags Source: https://developer.apple.com/documentation/walletpasses/creating-an-event-pass-using-semantic-tags This example shows a `pass.json` configuration for a general event pass, including the required semantic tags for event name, venue, and location. ```json { // Traditional pass.json keys and structure. "description" : "General Event Pass", "teamIdentifier" : "T5742Z534D", "serialNumber" : "general1", "formatVersion" : 1, "foregroundColor" : "rgb(255, 255, 255)", "labelColor" : "rgb(255, 255, 255)", "backgroundColor" : "rgb(215, 154, 172)", "passTypeIdentifier" : "pass.com.sports.event", "groupingIdentifier" : "General event", "organizationName" : "Organization", "nfc" : { "message" : "MESSAGE", "encryptionPublicKey" : "PUBLICKEY" }, // Retains the same eventTicket style key. "eventTicket": { // Legacy fields for backwards compatibility. "primaryFields": [ ... ], "secondaryFields": [ ... ], "backFields": [ ], }, "relevantDates": [ { "startDate": "2025-12-09T13:00-07:00", "endDate": "2025-12-09T23:00-07:00" } ], // The preferred style schemes. "preferredStyleSchemes": [ "posterEventTicket", "eventTicket" ], // Use semantic tags to give metadata to the system and to the UI. "semantics": { "eventType": "PKEventTypeGeneric", "eventStartDate": "2023-08-10T19:30:00.000Z", "seats": [ { "seatDescription": "General Seat", "seatIdentifier": "117-02-9", "seatNumber": "9", "seatRow": "02", "seatSection": "117", "seatType": "SeatType" } ], "eventName": "General event name", "venueName": "Venue name", "venueRegionName": "City or hosting name", "venueRoom": "Venue room" } } ``` -------------------------------- ### Complete Generic Pass with Fields Source: https://developer.apple.com/documentation/walletpasses/creating-a-generic-pass A comprehensive example of a `pass.json` file using the `generic` pass style. It includes all essential top-level keys and defines primary, secondary, auxiliary, and back fields with their respective labels and values. ```json { "formatVersion": 1, "passTypeIdentifier": "pass.com.example.membership-pass", "serialNumber": "123A4b5Z7p", "teamIdentifier": "ABCD1234", "webServiceURL": "https://example.com/passes/", "authenticationToken": "xyz18vnkabn3789dtoBsk77v", "barcodes": { "message": "12345678", "format": "PKBarcodeFormatCode128", "messageEncoding": "iso-8859-1" }, "organizationName": "My gym name" "description": "Gym membership pass", "logoText": "My gym", "foregroundColor": "rgb(0, 0, 0)", "backgroundColor": "rgb(245, 197, 67)", "generic": { "primaryFields": [ { "key": "memberName", "label": "Name", "value": "Maria Ruiz" } ], "secondaryFields": [ { "key": "memberNumber", "label": "Member Number", "value": "7337", } ], "auxiliaryFields" : [ { "key" : "memberSince", "dateStyle" : "PKDateStyleShort", "label" : "Joined", "value" : "2026-01-02T00:00-7:00" } ], "backFields": [ { "key": "customer-service", "label": "Customer service", "value": "(800) 555-5555" }, { "key": "terms", "label": "Membership Terms and Conditions", "value": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam fermentum vestibulum est. Cras rhoncus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed quis tortor. Donec non ipsum. Mauris condimentum, odio nec porta tristique, ante neque malesuada massa, in dignissim eros velit at tellus. Donec et risus in ligula eleifend consectetur. Donec volutpat eleifend augue. Integer gravida sodales leo. Nunc vehicula neque ac erat. Vivamus non nisl. Fusce ac magna. Suspendisse euismod libero eget mauris" } ] } } ``` -------------------------------- ### Get the List of Updatable Passes Source: https://developer.apple.com/documentation/walletpasses/get-the-list-of-updatable-passes Send the serial numbers for updated passes to a device. ```APIDOC ## GET https://yourpasshost.example.com/v1/devices/{deviceLibraryIdentifier}/registrations/{passTypeIdentifier}?passesUpdatedSince={previousLastUpdated} ### Description Send the serial numbers for updated passes to a device. ### Method GET ### Endpoint https://yourpasshost.example.com/v1/devices/{deviceLibraryIdentifier}/registrations/{passTypeIdentifier}?passesUpdatedSince={previousLastUpdated} ### Parameters #### Path Parameters - **deviceLibraryIdentifier** (string) - Required - The unique identifier for the device. - **passTypeIdentifier** (string) - Required - The pass type identifier of the pass to check for updates. This value corresponds to the value of the `passTypeIdentifier` key of the pass. #### Query Parameters - **passesUpdatedSince** (string) - Required - The value of the `lastUpdated` key from the `SerialNumbers` object returned in a previous request. This value limits the results of the current request to the passes updated since that previous request. ### Response #### Success Response (200) - Return Matching Passes - **SerialNumbers** (object) - An object that contains serial numbers for the updatable passes on a device. #### Success Response (204) - No Matching Passes There are no matching passes. ``` -------------------------------- ### GET Request to Retrieve Updatable Passes Source: https://developer.apple.com/documentation/walletpasses/get-the-list-of-updatable-passes Use this URL to request a list of passes that have been updated since a specified time. Ensure you replace placeholders with actual values. ```http GET https://yourpasshost.example.com/v1/devices/{deviceLibraryIdentifier}/registrations/{passTypeIdentifier}?passesUpdatedSince={previousLastUpdated} ``` -------------------------------- ### Populate Multiday Events with Relevant Dates Source: https://developer.apple.com/documentation/walletpasses/creating-an-event-pass-using-semantic-tags Use the `relevantDates` object to specify date ranges for events spanning multiple days, such as festivals or season tickets. This example shows a two-day event. ```json "relevantDates": [ { "startDate": "2025-08-21T13:00-08:00", "endDate": "2025-08-21T23:00-08:00" }, { "startDate": "2025-08-22T13:00-08:00", "endDate": "2025-08-22T23:00-08:00" } ] ``` -------------------------------- ### UpcomingPassInformationEntryType Source: https://developer.apple.com/documentation/walletpasses/upcomingpassinformationentrytype Represents an upcoming pass information entry for a specific event. Available on iOS, iPadOS, and watchOS starting from version 26.0. ```APIDOC ## Object: UpcomingPassInformationEntryType An object that represents a upcoming pass information entry for an specific upcoming event. **Availability:** iOS 26.0+, iPadOS 26.0+, watchOS 26.0+ ```object UpcomingPassInformationEntryType ``` ### Properties * `image` (UpcomingPassInformationEntryType.Image) - An object that represents the the image shown on the pass. * `imageURLEntry` (UpcomingPassInformationEntryType.ImageURLEntry) - An object that represents the image speficiations for the pass. ``` -------------------------------- ### WifiNetwork Data Type Source: https://developer.apple.com/documentation/walletpasses/semantictagtype Contains information to connect to a WiFi network, optionally including authentication details for captive portals. ```swift object SemanticTagType.WifiNetwork ``` -------------------------------- ### Configure Number Formatting Styles Source: https://developer.apple.com/documentation/walletpasses/passfieldcontent Use `numberStyle` to specify how numeric values are formatted, similar to `NumberFormatter` styles in Foundation. Supported styles include decimal, percent, scientific, and spell out. ```json "numberStyle": "PKNumberStylePercent" ``` -------------------------------- ### Set Preferred Style Scheme for Poster Event Tickets Source: https://developer.apple.com/documentation/walletpasses/creating-an-event-pass-using-semantic-tags Use the `preferredStyleSchemes` key to designate a pass as a poster event ticket. Wallet validates this scheme and applies the appropriate display or falls back to a legacy event ticket. ```json "preferredStyleSchemes": [ "posterEventTicket", "eventTicket" ] ``` -------------------------------- ### Define Event Ticket Pass Style Source: https://developer.apple.com/documentation/walletpasses/creating-an-event-pass-using-semantic-tags Specify the `eventTicket` key at the top level of your `pass.json` file to define the pass style. This controls the visual appearance and information layout on the Wallet pass. ```json { "description": "A concert event pass.", "formatVersion": 1, "passTypeIdentifier": "pass.com.example.event-pass", "serialNumber": "123A4b5Z7p", "eventTicket": { ... } } ``` -------------------------------- ### UpcomingPassInformationEntry.DateInformation Source: https://developer.apple.com/documentation/walletpasses/upcomingpassinformationentry/dateinformation-data.dictionary Represents the date and time information for an upcoming pass. It includes properties to specify the start date, whether it's an all-day event, if the time is unannounced or undetermined, and the relevant time zone. ```APIDOC ## UpcomingPassInformationEntry.DateInformation ### Description Information about the start and end time of the upcoming pass information entry. ### Properties - **date** (string) - The start date of the upcoming pass information entry. If omitted, the entry lists the `Time` and `Date` as TBD. - **ignoreTimeComponents** (boolean) - Indicates whether the entry should ignore the time components of the date. - **isAllDay** (boolean) - Indicates whether the entry spans the entire day and that the time components should be ignored. - **isUnannounced** (boolean) - Indicates whether the provided time of the event hasn’t been announced (commonly referred to as TBA). - **isUndetermined** (boolean) - Indicates whether the provided time of the event hasn’t been determined (commonly referred to as TBD). - **timeZone** (string) - The time zone to adjust the date into. If omitted, the entry uses the current time zone of the device. ``` -------------------------------- ### Define Localized String Keys in Pass.json Source: https://developer.apple.com/documentation/walletpasses/creating-the-source-for-a-pass Set the 'value' and 'label' properties of pass fields to keys that will be defined in the pass.strings files for localization. ```json "primaryFields": [ { "key": "offer", "value": "OfferAmount" "label": "OfferAmountLabel", } ] ``` -------------------------------- ### Add Semantic Tags to Secondary Fields Source: https://developer.apple.com/documentation/walletpasses/supporting-semantic-tags-in-wallet-passes Use semantic tags within secondary fields to represent specific data like event start and end dates, enhancing the contextual understanding of secondary information. ```json "secondaryFields": [ { "key": "runtime", "label": "Run Time", "value": "1:21", "semantics": { "eventStartDate": "1995-11-22T19:00-08:00", "eventEndDate": "1995-11-22T20:21-08:00" } } ] ``` -------------------------------- ### Coupon Pass Structure Source: https://developer.apple.com/documentation/walletpasses/creating-a-coupon-pass Defines the basic structure of a `pass.json` file for a coupon pass, including essential top-level keys and the 'coupon' object for style-specific content. ```json { "description": "Coupon for winter holiday event.", "formatVersion": 1, "passTypeIdentifier": "pass.com.example.coupon-pass", "serialNumber": "123A4b5Z7p", "coupon": { ... } } ``` -------------------------------- ### Localize Date and Time in Pass.json Source: https://developer.apple.com/documentation/walletpasses/creating-the-source-for-a-pass Use ISO 8601 format for date and time values in pass.json to enable system localization. ```json { "dateStyle": "PKDateStyleShort", "isRelative": true, "key": "expires", "label": "ExpiresLabel", "value": "2019-06-26T12:00:00+00:00" } ``` -------------------------------- ### Provide English Localized Strings Source: https://developer.apple.com/documentation/walletpasses/creating-the-source-for-a-pass Define English translations for keys used in pass.json within the en.lproj/pass.strings file. ```strings /* English Localization */ /* Offer strings */ "OfferAmount" = "100% off"; "OfferAmountLabel" = "Anything you want!"; ``` -------------------------------- ### SemanticTags Object Source: https://developer.apple.com/documentation/walletpasses/semantictagtype Contains machine-readable metadata for pass suggestions and actions. Use this to provide system-interpretable data. ```swift object SemanticTags ``` -------------------------------- ### Log a Message Source: https://developer.apple.com/documentation/walletpasses/log-a-message Records a message on your server. This endpoint is available for iOS 10.0+, iPadOS 10.0+, and watchOS 3.0+. ```APIDOC ## POST /v1/log ### Description Record a message on your server. ### Method POST ### Endpoint https://yourpasshost.example.com/v1/log ### Parameters #### Request Body - **LogEntries** (object) - Required - An object that contains an array of messages. Content-Type: application/json ### Response #### Success Response (200 OK) OK The request is successful. ``` -------------------------------- ### Set Date and Time Styles for Pass Fields Source: https://developer.apple.com/documentation/walletpasses/passfieldcontent Use `dateStyle` and `timeStyle` to control how dates and times are displayed in a pass field. Options range from no display to full, detailed formats. These styles are not applicable to watchOS. ```json "dateStyle": "PKDateStyleShort" ``` ```json "timeStyle": "PKDateStyleMedium" ``` -------------------------------- ### Set Preferred Style Scheme for Semantic Boarding Pass Source: https://developer.apple.com/documentation/walletpasses/creating-an-airline-boarding-pass-using-semantic-tags Use this structure to define the preferred style schemes for your boarding pass. Including 'semanticBoardingPass' enables Wallet to recognize and process it as a semantic boarding pass, falling back to 'boardingPass' if necessary. ```json "preferredStyleSchemes": [ "semanticBoardingPass", "boardingPass" ] ``` -------------------------------- ### Provide Simplified Chinese Localized Strings Source: https://developer.apple.com/documentation/walletpasses/creating-the-source-for-a-pass Define Simplified Chinese translations for keys used in pass.json within the zh-Hans.lproj/pass.strings file. ```strings /* Simplified Chinese Localization */ /* Offer strings */ "OfferAmount" = "100% 折扣"; "OfferAmountLabel" = "尽享所需一切!"; ``` -------------------------------- ### Log a Message Endpoint Source: https://developer.apple.com/documentation/walletpasses/log-a-message Use this POST endpoint to log messages. The request body must be a JSON object containing an array of messages. ```http POST https://yourpasshost.example.com/v1/log ``` -------------------------------- ### PushToken Object Definition Source: https://developer.apple.com/documentation/walletpasses/pushtoken Defines the structure of the PushToken object. ```APIDOC ## PushToken An object that contains the push notification token for a registered pass on a device. ### Properties `pushToken` (string) - A push token the server uses to send update notifications for a registered pass to a device. ``` -------------------------------- ### Configure Data Detectors for Pass Fields Source: https://developer.apple.com/documentation/walletpasses/passfieldcontent The `dataDetectorTypes` array specifies which types of data (phone number, link, address, calendar event) should be automatically detected in a field on the back of a pass. An empty array disables all detectors. This is not used for watchOS. ```json "dataDetectorTypes": [ PKDataDetectorTypePhoneNumber, PKDataDetectorTypeLink, PKDataDetectorTypeAddress, PKDataDetectorTypeCalendarEvent ] ``` -------------------------------- ### Return a Personalized Pass Source: https://developer.apple.com/documentation/walletpasses/return-a-personalized-pass Creates and signs a personalized pass, and sends it to a device. This endpoint is available for iOS 10.0+, iPadOS 10.0+, and watchOS 3.0+. ```APIDOC ## POST https://yourpasshost.example.com/v1/passes/{passTypeIdentifier}/{serialNumber}/personalize ### Description Creates and signs a personalized pass, and sends it to a device. ### Method POST ### Endpoint https://yourpasshost.example.com/v1/passes/{passTypeIdentifier}/{serialNumber}/personalize ### Parameters #### Path Parameters - **passTypeIdentifier** (string) - Required - The pass type identifier of the pass. This value corresponds to the value of the `passTypeIdentifier` key of the pass. - **serialNumber** (string) - Required - The serial number of the pass. This value corresponds to the `serialNumber` key of the pass. #### Request Body - **PersonalizationDictionary** (object) - Required - An object that contains the personalization information for the pass. Content-Type: application/json ### Response #### Success Response (200 OK) - **Signed personalization token** (binary stream) - The request is successful and returns a signed personalization token. Content-Type: application/octet-stream ``` -------------------------------- ### Live Performance Event Pass Semantics Source: https://developer.apple.com/documentation/walletpasses/creating-an-event-pass-using-semantic-tags Define live performance event details using semantic tags, including performer names and venue information. This ensures the Wallet app can present the event data clearly. ```json { // Traditional pass.json keys and structure. "description" : "Concert", "teamIdentifier" : "T5742Z534D", "serialNumber" : "concert1", "formatVersion" : 1, "foregroundColor" : "rgb(255, 255, 255)", "labelColor" : "rgb(255, 255, 255)", "backgroundColor" : "rgb(215, 154, 172)", "passTypeIdentifier" : "pass.com.sports.event", "groupingIdentifier" : "Opening night", "organizationName" : "Concert", "nfc" : { "message" : "MESSAGE", "encryptionPublicKey" : "PUBLICKEY" }, // Retains the same eventTicket style key. "eventTicket": { // Legacy fields for backwards compatibility. "primaryFields": [ ... ], "secondaryFields": [ ... ], "backFields": [ ] }, // Populate a multi day event. "relevantDates": [ { "startDate": "2025-08-21T13:00-08:00", "endDate": "2025-08-21T23:00-08:00" }, { "startDate": "2025-08-22T13:00-08:00", "endDate": "2025-08-22T23:00-08:00" } ], // The preferred style schemes. "preferredStyleSchemes": [ "posterEventTicket", "eventTicket" ], // Use semantic tags to give metadata to the system and to the UI. "semantics": { "eventType": "PKEventTypeLivePerformance", "eventStartDate": "2023-08-10T19:30:00.000Z", "seats": [ { "seatDescription": "General Seat", "seatIdentifier": "117-02-9", "seatNumber": "9", "seatRow": "02", "seatSection": "117", "seatType": "SeatType" } ], "performerNames": ["Performer Names"], "eventName": "General event name", "venueName": "Venue name", "venueRegionName": "City or hosting name", "venueRoom": "Venue room" } } ``` -------------------------------- ### Add Basic Semantic Tags to Pass Dictionary Source: https://developer.apple.com/documentation/walletpasses/supporting-semantic-tags-in-wallet-passes Add essential semantic tags like event type and silence request directly to the top-level Pass dictionary for general pass context. ```json "semantics": { "eventType": "PKEventTypeMovie", "silenceRequested": true } ``` -------------------------------- ### Pass.Beacons Object Source: https://developer.apple.com/documentation/walletpasses/pass/beacons-data.dictionary Represents a Bluetooth Low Energy beacon for pass relevance. Requires iOS 7.0+. ```APIDOC ## Pass.Beacons Object An object that represents the identifier of a Bluetooth Low Energy beacon the system uses to show a relevant pass. ### Properties - **major** (16-bit unsigned integer) - The major identifier of a Bluetooth Low Energy location beacon. - **minor** (16-bit unsigned integer) - The minor identifier of a Bluetooth Low Energy location beacon. - **proximityUUID** (string) - Required. The unique identifier of a Bluetooth Low Energy location beacon. - **relevantText** (string) - The text to display on the lock screen when the pass is relevant. For example, a description of a nearby location, such as `“Store nearby on 1st and Main”`. ``` -------------------------------- ### Partial Store Card Pass Structure Source: https://developer.apple.com/documentation/walletpasses/creating-a-store-card-pass Defines the basic structure of a store card pass, including essential top-level keys and the `storeCard` object. ```json { "description": "Coffee shop loyalty card.", "formatVersion": 1, "passTypeIdentifier": "pass.com.example.loyalty-card", "serialNumber": "123A4b5Z7p", "storeCard": { ... } } ``` -------------------------------- ### Partial Generic Pass Structure Source: https://developer.apple.com/documentation/walletpasses/creating-a-generic-pass Defines the basic top-level keys for a generic pass, including description, format version, pass type identifier, and serial number. The `generic` key is used to specify the pass style. ```json { "description": "A gym membership pass.", "formatVersion": 1, "passTypeIdentifier": "pass.com.example.membership-pass", "serialNumber": "123A4b5Z7p", "generic": { ... } } ``` -------------------------------- ### EventDateInfo Data Type Source: https://developer.apple.com/documentation/walletpasses/semantictagtype Represents a date for an event. Use this to specify event timings. ```swift object SemanticTagType.EventDateInfo ``` -------------------------------- ### PersonalizationDictionary Object Definition Source: https://developer.apple.com/documentation/walletpasses/personalizationdictionary Defines the structure of the PersonalizationDictionary object. This object is used to personalize passes and requires a personalization token and user-entered information. ```swift object PersonalizationDictionary ``` -------------------------------- ### LogEntries Object Source: https://developer.apple.com/documentation/walletpasses/logentries Represents an object that contains an array of log messages. Available on iOS 10.0+, iPadOS 10.0+, and watchOS 3.0+. ```APIDOC object LogEntries Properties: `logs` `[string]` (Required) An array of log messages. ``` -------------------------------- ### PersonalizationDictionary Object Source: https://developer.apple.com/documentation/walletpasses/personalizationdictionary The PersonalizationDictionary object is used to provide user-specific information for personalizing a pass. It requires a personalization token and an object containing the user's entered information. ```APIDOC ## PersonalizationDictionary An object that contains the information you use to personalize a pass. ### Properties `personalizationToken` (Required) `string` - The personalization token for this request. The server must sign and return the token. `requiredPersonalizationInfo` (Required) `PersonalizationDictionary.RequiredPersonalizationInfo` - An object that contains the user-entered information for a personalized pass. ``` -------------------------------- ### Personalize Object Source: https://developer.apple.com/documentation/walletpasses/personalize Defines the personalization information for a rewards pass, including a description, required fields, and terms and conditions. ```APIDOC ## Personalize Object An object that contains the personalization information for a rewards pass. ### Properties `description` string (Required) A brief description of the program for a pass that appears on the signup sheet, under the personalization logo. `requiredPersonalizationFields` [string] (Required) An array that identifies the signup data required from the user the system shows on the generated signup form. Possible Values: `PKPassPersonalizationFieldName, PKPassPersonalizationFieldPostalCode, PKPassPersonalizationFieldEmailAddress, PKPassPersonalizationFieldPhoneNumber` `termsAndConditions` string A description of the program’s terms and conditions. This string can contain HTML link tags to external content. If present, this information appears after the user enters their personal information and taps the Next button. The user then has the option to agree to the terms, or to cancel the sign-up process. ``` -------------------------------- ### Personalize Object Definition Source: https://developer.apple.com/documentation/walletpasses/personalize Defines the structure of the Personalize object for rewards passes. Use this to specify user signup requirements. ```swift object Personalize ``` -------------------------------- ### PersonNameComponents Data Type Source: https://developer.apple.com/documentation/walletpasses/semantictagtype Represents the parts of a person's name. Use this for structured name data. ```swift object SemanticTagType.PersonNameComponents ``` -------------------------------- ### CurrencyAmount Data Type Source: https://developer.apple.com/documentation/walletpasses/semantictagtype Represents an amount of money and its currency. Use this for financial values. ```swift object SemanticTagType.CurrencyAmount ``` -------------------------------- ### Location Data Type Source: https://developer.apple.com/documentation/walletpasses/semantictagtype Represents the coordinates of a location. Use this for geographical data. ```swift object SemanticTagType.Location ``` -------------------------------- ### Register a Pass for Update Notifications Source: https://developer.apple.com/documentation/walletpasses/register-a-pass-for-update-notifications This endpoint allows you to register a pass on a device to receive update notifications. You need to provide device-specific and pass-specific identifiers, along with your authentication token and the device's push token. ```APIDOC ## POST https://yourpasshost.example.com/v1/devices/{deviceLibraryIdentifier}/registrations/{passTypeIdentifier}/{serialNumber) ### Description Set up change notifications for a pass on a device. ### Method POST ### Endpoint https://yourpasshost.example.com/v1/devices/{deviceLibraryIdentifier}/registrations/{passTypeIdentifier}/{serialNumber} ### Parameters #### Path Parameters - **deviceLibraryIdentifier** (string) - Required - A unique identifier you use to identify and authenticate the device. - **passTypeIdentifier** (string) - Required - The pass type identifier of the pass to register for update notifications. This value corresponds to the value of the `passTypeIdentifier` key of the pass. - **serialNumber** (string) - Required - The serial number of the pass to register. This value corresponds to the `serialNumber` key of the pass. #### Header Parameters - **Authorization** (string) - Required - The authentication for a pass. The value is the word `ApplePass`, followed by a space, followed by the `authenticationToken` key of the pass. Value: `ApplePass {passAuthorizationToken}` ### Request Body #### PushToken (object) - **token** (string) - Required - The push notification token for the registered pass on the device. ### Response Codes - **200** - Serial Number Already Registered for Device - **201** - Registration Successful - **401** - Request Not Authorized ```