> For the complete documentation index, see [llms.txt](https://docs.thewalletcrew.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.thewalletcrew.io/api-reference/advanced/pass-types.md).

# Pass Types

## GET /api/{tenantId}/admin/passTypes

> List pass templates

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"PassTypes"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"security":[{"admin-bearer":["tenant.passType:read"]},{"apiKey":[]}],"components":{"securitySchemes":{"admin-bearer":{"type":"oauth2","flows":{"implicit":{"authorizationUrl":"https://auth.neostore.cloud/authorize?audience=https://app.neostore.cloud/api/","scopes":{}}}},"apiKey":{"type":"apiKey","name":"X-API-KEY","in":"header"}},"schemas":{"PassTypeListItem":{"required":["appearance","apple","creationDate","google","image","kind","languages","lastModificationDate","metadata","name","tags"],"type":"object","properties":{"name":{"type":"string","description":"Name of the template, unique within the tenant."},"tags":{"type":"array","items":{"type":"string"},"description":"The labels the template is filed under. Empty when it carries none."},"creationDate":{"oneOf":[{"type":"string","format":"date-time"},{"type":"integer","format":"int64"}],"description":"When the template was created. Null when unknown. Accepts ISO 8601 date-time string or Unix epoch seconds in request inputs. Responses are serialized as ISO 8601 date-time strings."},"lastModificationDate":{"oneOf":[{"type":"string","format":"date-time"},{"type":"integer","format":"int64"}],"description":"When the template was last saved. Null when unknown. Accepts ISO 8601 date-time string or Unix epoch seconds in request inputs. Responses are serialized as ISO 8601 date-time strings."},"kind":{"description":"Which of the six templates this is, or null when the stored template cannot be read and needs\nrepairing.","$ref":"#/components/schemas/PassTypeKind"},"apple":{"type":"boolean","description":"Whether the template configures an Apple Wallet pass."},"google":{"type":"boolean","description":"Whether the template configures a Google Wallet card."},"image":{"type":["null","string"],"description":"The Apple image that best represents the template, exactly as configured — an image path such as\n`public/passes/loyalty/apple-strip.png`, or a remote URL. Null when the\ntemplate configures no Apple image at all."},"languages":{"type":"array","items":{"type":"string"},"description":"Languages this template has wording in, as language codes."},"appearance":{"description":"The colours the Apple card is drawn in, or null when the template configures no Apple half.","$ref":"#/components/schemas/PassTypeAppearance"},"metadata":{"type":"array","items":{"description":"One metadata field computed on every pass of the template.","$ref":"#/components/schemas/PassTypeMetadataDefinition"},"description":"The metadata keys the template declares, which callers use to offer them as pass fields to filter\nand display on. Empty when the template declares none."}},"additionalProperties":false,"description":"A pass template as it appears in the list."},"PassTypeKind":{"enum":["customerCard","eventTicket","giftCard","offer","generic","stampCard"],"type":"string","description":"Which of the six templates a pass type is. Fixed when it is created."},"PassTypeAppearance":{"type":"object","properties":{"background":{"type":["null","string"],"description":"The card's background, as configured — `rgb(...)` or `#rrggbb`."},"foreground":{"type":["null","string"],"description":"The colour field values are drawn in."},"label":{"type":["null","string"],"description":"The colour field labels are drawn in."}},"additionalProperties":false,"description":"The colours a pass is drawn in, which is what tells two templates apart at a glance."},"PassTypeMetadataDefinition":{"type":"object","properties":{"key":{"type":["null","string"],"description":"Key of the value on each pass, and what passes are filtered on."},"type":{"type":["null","string"],"description":"Data type of the value. One of: string, number, boolean, datetime. Omitted reads as string."},"value":{"type":["null","string"],"description":"Liquid template computing the value whenever a pass is updated."}},"additionalProperties":false,"description":"One metadata field computed on every pass of the template."},"ProblemDetails":{"type":"object","properties":{"type":{"type":["null","string"]},"title":{"type":["null","string"]},"status":{"type":["null","integer"],"format":"int32"},"detail":{"type":["null","string"]},"instance":{"type":["null","string"]}},"additionalProperties":{}},"HttpValidationProblemDetails":{"type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"properties":{"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"additionalProperties":{}}}},"paths":{"/api/{tenantId}/admin/passTypes":{"get":{"tags":["PassTypes"],"summary":"List pass templates","parameters":[{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Templates returned, in name order.","content":{"text/plain":{"schema":{"type":"array","items":{"description":"A pass template as it appears in the list.","$ref":"#/components/schemas/PassTypeListItem"}}},"application/json":{"schema":{"type":"array","items":{"description":"A pass template as it appears in the list.","$ref":"#/components/schemas/PassTypeListItem"}}},"text/json":{"schema":{"type":"array","items":{"description":"A pass template as it appears in the list.","$ref":"#/components/schemas/PassTypeListItem"}}}}},"401":{"description":"The caller is not authenticated.","content":{"application/problem+json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"403":{"description":"The caller lacks the <c>tenant.passType:read</c> scope.","content":{"application/problem+json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"429":{"description":"Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after <c>Retry-After</c>.","headers":{"Retry-After":{"description":"Seconds to wait before retrying. Sent when the limiter knows it.","schema":{"type":"integer"}}},"content":{"application/problem+json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}}}}}}}
```

## Get a pass template

> Wording included.

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"PassTypes"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"security":[{"admin-bearer":["tenant.passType:read"]},{"apiKey":[]}],"components":{"securitySchemes":{"admin-bearer":{"type":"oauth2","flows":{"implicit":{"authorizationUrl":"https://auth.neostore.cloud/authorize?audience=https://app.neostore.cloud/api/","scopes":{}}}},"apiKey":{"type":"apiKey","name":"X-API-KEY","in":"header"}},"schemas":{"PassTypeDetail":{"required":["configuration","languages","name"],"type":"object","properties":{"name":{"type":"string","description":"Name of the template, unique within the tenant."},"configuration":{"description":"The template itself, with every translatable value carrying its wording.","$ref":"#/components/schemas/PassTypeModel"},"languages":{"type":"array","items":{"type":"string"},"description":"Languages this template has wording in, as language codes."}},"additionalProperties":false,"description":"One pass template in full."},"PassTypeModel":{"type":"object","properties":{"kind":{"description":"Which of the six templates this is. Cannot be changed after creation.","$ref":"#/components/schemas/PassTypeKind"},"tags":{"type":["null","array"],"items":{"type":"string"},"description":"Free-form back-office labels. Nothing here reaches the holder."},"creationDate":{"oneOf":[{"type":"string","format":"date-time"},{"type":"integer","format":"int64"}],"description":"When the template was created. Set by the platform; ignored on write. Accepts ISO 8601 date-time string or Unix epoch seconds in request inputs. Responses are serialized as ISO 8601 date-time strings."},"lastModificationDate":{"oneOf":[{"type":"string","format":"date-time"},{"type":"integer","format":"int64"}],"description":"When the template was last saved. Set by the platform on every save; ignored on write. Accepts ISO 8601 date-time string or Unix epoch seconds in request inputs. Responses are serialized as ISO 8601 date-time strings."},"passLayoutName":{"type":["null","string"],"description":"Download page the template's passes are presented from, by name. Omitted, `pass`. Must name an existing download page."},"trackLinks":{"type":["null","boolean"],"description":"Whether links on the pass go through a tracking redirect so opens can be counted. Omitted, links are tracked."},"optimizeImages":{"type":["null","boolean"],"description":"Whether images are optimized when a pass is built. Omitted, they are. Images uploaded through the template image endpoint are always optimized on upload."},"notification":{"description":"How long a message sent to the template's passes stays displayed on them.","$ref":"#/components/schemas/PassTypeNotification"},"previewData":{"type":["null","array"],"items":{"description":"One named set of values a template is previewed against.","$ref":"#/components/schemas/PassTypePreviewData"},"description":"Named sets of sample values the editor renders the template's Liquid against, so a preview shows\nwords rather than expressions."},"extensions":{"description":"The two wallets and the sections that configure neither of them on its own.","$ref":"#/components/schemas/PassTypeExtensions"}},"additionalProperties":false,"description":"Everything a pass template configures."},"PassTypeKind":{"enum":["customerCard","eventTicket","giftCard","offer","generic","stampCard"],"type":"string","description":"Which of the six templates a pass type is. Fixed when it is created."},"PassTypeNotification":{"type":"object","properties":{"duration":{"type":["null","string"],"description":"How long a message stays on a pass of this template, as a .NET `TimeSpan` (`d.hh:mm:ss`, `7.00:00:00` for a week). Omitted, 7 days; always present on read."}},"additionalProperties":false,"description":"How long a message sent to the template's passes stays displayed on them."},"PassTypePreviewData":{"type":"object","properties":{"name":{"type":["null","string"],"description":"What the editor calls this set, such as `Gold member`. Unique within the template."},"type":{"description":"Whether the values are written here (`custom`) or come from an issued pass (`real`).","$ref":"#/components/schemas/PassTypePreviewDataType"},"isDefault":{"type":"boolean","description":"Whether the editor previews this set first, `custom` or `real`. Only one set can be. Omitted,\nthe first `custom` set is."},"data":{"type":["null","object"],"description":"The values of a `custom` set. Free-form: the keys are whatever the tenant's own passes carry. Absent\non a `real` set."},"passId":{"type":["null","string"],"description":"The identifier of the issued pass a `real` set previews. Absent on a `custom` set."}},"additionalProperties":false,"description":"One named set of values a template is previewed against."},"PassTypePreviewDataType":{"enum":["custom","real"],"type":"string","description":"Where a preview data set takes its values from."},"PassTypeExtensions":{"type":"object","properties":{"apple":{"description":"The Apple Wallet pass. Configured the same way whatever the kind.","$ref":"#/components/schemas/PassTypeApple"},"google":{"description":"The Google Wallet card. Each kind accepts only the properties it declares — every property that is\nnot common to all six says which kinds it applies to.","$ref":"#/components/schemas/PassTypeGoogle"},"preview":{"description":"How an issued pass of this template is summarised in the back office.","$ref":"#/components/schemas/PassTypePreview"},"scannableData":{"description":"What a scanner reads off an issued pass.","$ref":"#/components/schemas/PassTypeScannableData"},"stamps":{"description":"The stamp mechanic. Only a Neo.Web.Api.Wallet.Controllers.PassTypes.PassTypeKind.StampCard has one.","$ref":"#/components/schemas/PassTypeStamps"},"metadata":{"description":"Values computed whenever a pass is updated, which issued passes can then be searched and filtered\nby. Nothing here is shown to the holder.","$ref":"#/components/schemas/PassTypeMetadata"}},"additionalProperties":false,"description":"The two wallets and the sections that configure neither of them on its own."},"PassTypeApple":{"type":"object","properties":{"actionLinks":{"description":"Configuration for action links associated with the pass.","$ref":"#/components/schemas/PassTypeAppleActionLinks"},"additionalInfoFields":{"type":["null","array"],"items":{"description":"Information about a field.","$ref":"#/components/schemas/PassTypeAppleField"},"description":"Fields displayed in the Additional Info section below the pass content. Used for poster event ticket passes (iOS 18+)."},"appLaunchUrl":{"type":["null","string"],"description":"URL passed to the associated app at launch (from associatedStoreIdentifiers). Not supported on watchOS."},"associatedStoreIdentifiers":{"type":["null","array"],"items":{"type":"integer","format":"int64"},"description":"App Store identifiers of apps associated with the pass; the first one compatible with the device is used, with a\nlink on the back of the pass (it opens the App Store when the app is not installed). Payment passes only; not\nsupported on watchOS."},"auxiliaryFields":{"type":["null","array"],"items":{"description":"Information about a field.","$ref":"#/components/schemas/PassTypeAppleField"},"description":"Additional fields to be displayed on the front of the pass."},"auxiliaryStoreIdentifiers":{"type":["null","array"],"items":{"type":"integer","format":"int64"},"description":"Additional App Store identifiers of associated apps, linked in the event guide. Poster event tickets only; not supported on watchOS."},"backFields":{"type":["null","array"],"items":{"description":"Information about a field.","$ref":"#/components/schemas/PassTypeAppleField"},"description":"Fields to be on the back of the pass."},"backgroundColor":{"type":["null","string"],"description":"Background color of the pass, specified as an CSS-style RGB triple."},"barCodeAlternateText":{"type":["null","string"],"description":"Text displayed near the barcode, such as a human-readable version of its data. A Liquid template, not a translatable string."},"barCodeFormat":{"type":["null","string"],"description":"Bar code format. One of: qr, pdf417, aztec, code128, code39, codabar, ean13, i2of5. code39, codabar, ean13 and\ni2of5 need iOS 27; the pass also carries a QR code of the same value for older devices. No bar code is drawn\nwhen `barCodeValue` renders empty."},"barCodeValue":{"type":["null","string"],"description":"Bar code field value (ex: `id.y2.customerId`)."},"beacons":{"type":["null","array"],"items":{"description":"Configuration for a beacon device","$ref":"#/components/schemas/PassTypeAppleBeacon"},"description":"Beacons marking locations where the pass is relevant. At most 10."},"description":{"description":"A simple description of the pass","$ref":"#/components/schemas/PassTypeLocalizedString"},"eventLogoText":{"description":"Text next to the logo on poster event tickets; takes precedence over `logoText`.","$ref":"#/components/schemas/PassTypeLocalizedString"},"expirationDate":{"type":["null","string"],"description":"Date and time when the pass expires, with hours and minutes and optional seconds."},"featuredActions":{"type":["null","array"],"items":{"description":"A featured action card displayed when viewing the pass in the Wallet app (iOS 27+). Each featured action includes an icon, a predefined action type, and a destination.","$ref":"#/components/schemas/PassTypeAppleFeaturedAction"},"description":"Featured actions displayed below the pass in Wallet (iOS 27+). Maximum 2 entries."},"footerBackgroundColor":{"type":["null","string"],"description":"Background color of the footer, as a CSS-style RGB triple such as rgb(100, 10, 110). Poster event tickets only."},"footerFields":{"type":["null","array"],"items":{"description":"Information about a field.","$ref":"#/components/schemas/PassTypeAppleField"},"description":"Fields displayed in the footer of the pass. Used for poster layouts (iOS 27+)."},"foregroundColor":{"type":["null","string"],"description":"Foreground color of the pass, specified as a CSS-style RGB triple."},"groupingIdentifier":{"type":["null","string"],"description":"Identifier grouping related passes (same groupingIdentifier, passTypeIdentifier and type), such as boarding passes for connections on one trip."},"headerFields":{"type":["null","array"],"items":{"description":"Information about a field.","$ref":"#/components/schemas/PassTypeAppleField"},"description":"Fields displayed in the header on the front of the pass. Use sparingly: unlike other fields, they stay visible in a stack of passes."},"images":{"description":"Configuration of image for this pass.","$ref":"#/components/schemas/PassTypeAppleImage"},"labelColor":{"type":["null","string"],"description":"Color of the label text, specified as a CSS-style RGB triple."},"locations":{"type":["null","array"],"items":{"description":"Configuration for a location","$ref":"#/components/schemas/PassTypeAppleLocation"},"description":"Locations where the pass is relevant, such as a store. At most 10."},"logoText":{"description":"Text displayed next to the logo on the pass.","$ref":"#/components/schemas/PassTypeLocalizedString"},"maxDistance":{"type":["null","integer"],"description":"Maximum distance in meters from a relevant location at which the pass is relevant; the smaller of this and the pass's default distance is used.","format":"int32"},"nfc":{"description":"NFC-enabled pass keys support sending reward card information as part of an Apple Pay transaction.","$ref":"#/components/schemas/PassTypeAppleNfc"},"organizationName":{"type":["null","string"],"description":"Display name of the organization that originated and signed the pass."},"primaryFields":{"type":["null","array"],"items":{"description":"Information about a field.","$ref":"#/components/schemas/PassTypeAppleField"},"description":"Fields to be displayed prominently on the front of the pass."},"relevantDate":{"type":["null","string"],"description":"Date and time when the pass becomes relevant, such as a movie's start, with hours and minutes and optional seconds. Recommended for event tickets and boarding passes."},"relevantDates":{"type":["null","array"],"items":{"description":"Configuration for a relevantDates entry. Use `StartDate` alone to let Wallet compute the interval, or with `EndDate` for an explicit one.","$ref":"#/components/schemas/PassTypeAppleRelevantDate"},"description":"An array of date intervals during which the pass is relevant. Supersedes `RelevantDate` when non-empty."},"secondaryFields":{"type":["null","array"],"items":{"description":"Information about a field.","$ref":"#/components/schemas/PassTypeAppleField"},"description":"Fields to be displayed on the front of the pass."},"semantics":{"description":"Semantics configuration for the pass.","$ref":"#/components/schemas/PassTypeAppleSemantics"},"sharing":{"description":"What the Share button of the pass sends. Omitted, a link to the install page of the pass.","$ref":"#/components/schemas/PassTypeAppleSharing"},"summaryFields":{"type":["null","array"],"items":{"description":"Information about a field.","$ref":"#/components/schemas/PassTypeAppleField"},"description":"Up to three values displayed below the barcode on the poster generic layout (iOS 27+). Edited separately from `PrimaryFields`, which stays classic-only."},"suppressHeaderDarkening":{"type":["null","boolean"],"description":"Whether to display the header darkening gradient. Default false. Poster event tickets only."},"suppressStripShine":{"type":["null","boolean"],"description":"A Boolean value that controls whether to display the strip image without a shine effect. The default value is true."},"type":{"type":["null","string"],"description":"Type of pass. One of: generic, boardingPass, coupon, eventTicket, storeCard."},"upcomingPassInformation":{"type":["null","array"],"items":{"description":"Part of the Apple configuration.","$ref":"#/components/schemas/PassTypeAppleUpcomingPassInformation"},"description":"Further events the ticket admits to, each shown as its own entry in the event guide."},"useAutomaticColors":{"type":["null","boolean"],"description":"Whether Wallet computes the foreground and label colors from the background image, ignoring `foregroundColor` and `labelColor`. Poster event tickets only."},"usePosterLayout":{"type":["null","boolean"],"description":"When true, a customer card pass uses the iOS 27+ poster generic layout instead of the standard store card layout."},"voided":{"type":["null","string"],"description":"Indicates the pass is void, such as a redeemed one-time coupon."}},"additionalProperties":false,"description":"Configuration of an Apple pass. See [Apple's PassKit bundle\nreference](https://developer.apple.com/library/archive/documentation/UserExperience/Reference/PassKit_Bundle/Chapters/TopLevel.html)."},"PassTypeAppleActionLinks":{"type":"object","properties":{"accessibilityURL":{"type":["null","string"],"description":"A URL that links to your accessiblity content, or the venue's. Poster event tickets only."},"addOnURL":{"type":["null","string"],"description":"A URL that can link to experiences that someone can add to the pass. Poster event tickets only."},"bagPolicyURL":{"type":["null","string"],"description":"A URL that links to the bag policy of the venue for the event that the pass represents. Poster event tickets only."},"contactVenueEmail":{"type":["null","string"],"description":"The preferred email address to contact the venue, event, or issuer. Poster event tickets only."},"contactVenuePhoneNumber":{"type":["null","string"],"description":"The phone number for contacting the venue, event, or issuer. Poster event tickets only."},"contactVenueWebsite":{"type":["null","string"],"description":"A URL that links to the website of the venue, event, or issuer. Poster event tickets only."},"directionsInformationURL":{"type":["null","string"],"description":"A URL that links to directions for the event. Poster event tickets only."},"merchandiseURL":{"type":["null","string"],"description":"A URL that links to a site for ordering merchandise for the event that the pass represents. Poster event tickets only."},"orderFoodURL":{"type":["null","string"],"description":"A URL that links to the food ordering page for the event that the pass represents. Poster event tickets only."},"parkingInformationURL":{"type":["null","string"],"description":"A URL that links to parking information for the event that the pass represents. Poster event tickets only."},"purchaseParkingURL":{"type":["null","string"],"description":"A URL that links to a site to purchase parking for the event that the pass represents. Poster event tickets only."},"sellURL":{"type":["null","string"],"description":"A URL that links to the selling flow for the ticket the pass represents. Poster event tickets only."},"transferURL":{"type":["null","string"],"description":"A URL that links to the transferring flow for the ticket that the pass represents. Poster event tickets only."},"managementURL":{"type":["null","string"],"description":"A URL that links to the site for managing the ticket that the pass represents."},"transitInformationURL":{"type":["null","string"],"description":"A URL that links to information about transit options in the area of the event that the pass represents. Poster event tickets only."}},"additionalProperties":false,"description":"Part of the Apple configuration."},"PassTypeAppleField":{"type":"object","properties":{"changeMessage":{"description":"Alert text shown when the pass is updated, containing `%@` for the field's new value (for example <c>Gate\nchanged to %@.</c>). Without it, the user is not notified of changes.","$ref":"#/components/schemas/PassTypeLocalizedString"},"type":{"type":["null","string"],"description":"Kind of field. One of: number, date. Omitted for a plain text field."},"key":{"type":["null","string"],"description":"The key must be unique within the scope of the entire pass. For example, 'departure-gate.'."},"label":{"description":"Label text for the field.","$ref":"#/components/schemas/PassTypeLocalizedString"},"textAlignment":{"type":["null","string"],"description":"Text alignment for the field. One of: left, center, right, natural."},"currencyCode":{"type":["null","string"],"description":"ISO 4217 currency code for a number field. When set, Apple Wallet formats the value as a currency and ignores Neo.Web.Api.Wallet.Controllers.PassTypes.PassTypeAppleField.NumberStyle."},"numberStyle":{"type":["null","string"],"description":"Number style for a number field. One of: decimal, percent, scientific, spellOut."},"dateStyle":{"type":["null","string"],"description":"Date part style for a date field. One of: none, short, medium, long, full."},"timeStyle":{"type":["null","string"],"description":"Time part style for a date field. One of: none, short, medium, long, full."},"isRelative":{"type":["null","boolean"],"description":"Show the date field as a relative value such as \"tomorrow\" when a date or time style is set."},"ignoresTimeZone":{"type":["null","boolean"],"description":"Keep the value's own time zone for a date field when a date or time style is set."},"automaticallyDetectDataDetectorTypes":{"type":["null","boolean"],"description":"Whether iOS turns phone numbers, links, addresses and dates found in the value into tappable links. Omitted, it\ndoes; `false` shows the value as plain text. Applies to a field with no Neo.Web.Api.Wallet.Controllers.PassTypes.PassTypeAppleField.Type."},"value":{"description":"Value of the field, for example 42. May contain HTML links: only the <a> tag and its href attribute are supported.","$ref":"#/components/schemas/PassTypeLocalizedString"}},"additionalProperties":false,"description":"Information about a field."},"PassTypeLocalizedString":{"type":"object","properties":{"value":{"type":["null","string"],"description":"Wording in the tenant's default language, used for any language Neo.Web.Api.Wallet.Controllers.PassTypes.PassTypeLocalizedString.Values does not cover."},"values":{"type":["null","object"],"additionalProperties":{"type":"string"},"description":"Wording per language, keyed by ISO 639-1 code with an optional region (`en`, `fr-FR`). A missing language falls back to Neo.Web.Api.Wallet.Controllers.PassTypes.PassTypeLocalizedString.Value."}},"additionalProperties":false,"description":"A value shown to the holder, with one entry per language."},"PassTypeAppleBeacon":{"type":"object","properties":{"label":{"description":"Text displayed on the lock screen when the pass is relevant, such as 'Store nearby on 1st and Main.'","$ref":"#/components/schemas/PassTypeLocalizedString"},"major":{"type":["null","integer"],"description":"Major identifier of a Bluetooth Low Energy location beacon.","format":"int32"},"minor":{"type":["null","integer"],"description":"Minor identifier of a Bluetooth Low Energy location beacon.","format":"int32"},"uuid":{"type":["null","string"],"description":"Unique identifier of a Bluetooth Low Energy location beacon."}},"additionalProperties":false,"description":"Configuration for a beacon device"},"PassTypeAppleFeaturedAction":{"type":"object","properties":{"icon":{"type":["null","string"],"description":"SF Symbol name of the card's icon; prefer circular, filled variants. Omitted, a default icon for the action type is used."},"type":{"type":["null","string"],"description":"The predefined action type that determines the label and behavior of the featured action card."},"url":{"type":["null","string"],"description":"URL opened when the action is tapped: a website, a deep link into your app, or a `tel:` URI for `call` actions."},"placeIdentifier":{"type":["null","string"],"description":"The Apple Maps Place ID opened by `place` actions."}},"additionalProperties":false,"description":"A featured action card displayed when viewing the pass in the Wallet app (iOS 27+). Each featured action includes an icon, a predefined action type, and a destination."},"PassTypeAppleImage":{"type":"object","properties":{"artWork":{"type":["null","string"],"description":"Poster background image (artwork.png) for poster event tickets (iOS 18+) and poster generic passes (iOS 27+).\nSetting it on a generic pass activates the posterGeneric layout, on an event ticket posterEventTicket. Falls\nback to the strip image on older devices. 358x448 pts."},"background":{"type":["null","string"],"description":"Blurred background (background.png) behind the front of non-poster event tickets, 343 x 503 points. Poster layouts use ArtWork instead."},"footer":{"type":["null","string"],"description":"The image displayed on the front of the pass near the barcode. The allotted space is 858 x 45 points."},"icon":{"type":["null","string"],"description":"The pass's icon, shown in notifications, emails with a pass attached and on the lock screen with a shine effect and rounded corners. 87 x 87 points."},"logo":{"type":["null","string"],"description":"Image at the top left of the front, in a 480 x 150 points space; usually narrower."},"primaryLogo":{"type":["null","string"],"description":"Top-left logo for poster layouts (posterGeneric iOS 27+ and posterEventTicket iOS 18+). 126x30 pts."},"reuseExisting":{"type":["null","boolean"],"description":"For an upcoming event's header image or venue map: reuse the image the pass already carries rather than download one. `urls` takes precedence when set."},"secondaryLogo":{"type":["null","string"],"description":"Logo image that is displayed on bottom right footer inset of the pass. Ticket issuer or event company logo 135x12 pts."},"stampImages":{"type":["null","array"],"items":{"description":"The Apple images a stamp card shows at one exact stamp count.","$ref":"#/components/schemas/PassTypeAppleStampImage"},"description":"Per-stamp-count overrides of `Strip` and `ArtWork`, for a stamp card."},"strip":{"type":["null","string"],"description":"Image behind the primary fields: 1125 x 296 points for event tickets, 1125 x 432 for gift cards and coupons,\n1125 x 369 otherwise. Older hardware: 960 x 252, 960 x 330 (square barcode on 3.5 inch screens) or 960 x 369."},"thumbnail":{"type":["null","string"],"description":"Additional image on the front, such as a cardholder picture, 270 x 270 points. Aspect ratio between 2:3 and 3:2, otherwise cropped."},"urls":{"type":["null","array"],"items":{"description":"Part of the Apple configuration.","$ref":"#/components/schemas/PassTypeAppleImageUrl"},"description":"For an upcoming event's header image or venue map: the remote copies of the image the device downloads."},"venueMap":{"type":["null","string"],"description":"Issuer-provided static map of the venue, which will be shown in the event guide."}},"additionalProperties":false,"description":"Image configuration for the pass"},"PassTypeAppleStampImage":{"type":"object","properties":{"artWork":{"type":["null","string"],"description":"Poster artwork, used only when the template enables the poster layout."},"count":{"type":["null","integer"],"description":"The stamp count these images are shown at.","format":"int32"},"strip":{"type":["null","string"],"description":"Strip image for the classic store-card layout."}},"additionalProperties":false,"description":"The Apple images a stamp card shows at one exact stamp count."},"PassTypeAppleImageUrl":{"type":"object","properties":{"scale":{"type":["null","number"],"description":"The scale of the image. If unspecified, defaults to 1.","format":"double"},"sha256":{"type":["null","string"],"description":"(Required) The SHA256 hash of the image."},"size":{"type":["null","string"],"description":"Size of the image asset in bytes. The maximum allowed size is 2 megabytes."},"url":{"type":["null","string"],"description":"URL of the image to download. Required; https only."}},"additionalProperties":false,"description":"Part of the Apple configuration."},"PassTypeAppleLocation":{"type":"object","properties":{"altitude":{"type":["null","string"],"description":"Altitude, in meters, of the location."},"label":{"description":"Text displayed on the lock screen when the pass is relevant, such as 'Store nearby on 1st and Main.'","$ref":"#/components/schemas/PassTypeLocalizedString"},"latitude":{"type":["null","string"],"description":"Latitude, in degrees, of the location."},"longitude":{"type":["null","string"],"description":"Longitude, in degrees, of the location."}},"additionalProperties":false,"description":"Configuration for a location"},"PassTypeAppleNfc":{"type":"object","properties":{"message":{"type":["null","string"],"description":"Payload sent to the Apple Pay terminal, at most 64 bytes (longer is truncated)."},"requiresAuthentication":{"type":["null","boolean"],"description":"Whether the NFC pass requires authentication for each use. Default false."}},"additionalProperties":false,"description":"Information about the NFC payload passed to an Apple Pay terminal. It is encrypted with the tenant's NFC key; without one, passes are issued without NFC."},"PassTypeAppleRelevantDate":{"type":"object","properties":{"endDate":{"type":["null","string"],"description":"Template-evaluated ISO-8601 date string for the end of the relevancy interval. Optional."},"startDate":{"type":["null","string"],"description":"Template-evaluated ISO-8601 date string for the start of the relevancy interval."}},"additionalProperties":false,"description":"Configuration for a relevantDates entry. Use `StartDate` alone to let Wallet compute the interval, or with `EndDate` for an explicit one."},"PassTypeAppleSemantics":{"type":"object","properties":{"additionalTicketAttributes":{"type":["null","string"],"description":"Additional ticket attributes that other tags or keys in the pass don't include."},"admissionLevel":{"type":["null","string"],"description":"The level of admission the ticket provides, such as general admission, VIP, and so forth."},"admissionLevelAbbreviation":{"type":["null","string"],"description":"An abbreviation of the level of admission the ticket provides, such as GA or VIP."},"albumIDs":{"type":["null","array"],"items":{"type":"string"},"description":"An array of the Apple Music persistent ID for each album corresponding to the event, in decreasing order of significance."},"artistIDs":{"type":["null","array"],"items":{"type":"string"},"description":"An array of the Apple Music persistent ID for each artist performing at the event, in decreasing order of significance."},"attendeeName":{"type":["null","string"],"description":"The name of the person the ticket grants admission to."},"awayTeamAbbreviation":{"type":["null","string"],"description":"The unique abbreviation of the away team's name. Use this key only for a sports event ticket."},"awayTeamLocation":{"type":["null","string"],"description":"The home location of the away team. Use this key only for a sports event ticket."},"awayTeamName":{"type":["null","string"],"description":"The name of the away team. Use this key only for a sports event ticket."},"balance":{"description":"The current balance redeemable with the pass. Use this key only for a store card pass.","$ref":"#/components/schemas/PassTypeAppleCurrencyAmount"},"duration":{"type":["null","string"],"description":"The duration of the event or transit journey, in seconds. Sent as a string: whole seconds or a Liquid template."},"entranceDescription":{"type":["null","string"],"description":"The long description of the entrance information."},"eventLiveMessage":{"type":["null","string"],"description":"The message Wallet shows in the Lock Screen Live Activity when the event starts."},"eventEndDate":{"type":["null","string"],"description":"The date and time the event ends. ISO 8601 date as string."},"eventName":{"description":"The full name of the event, such as the title of a movie.","$ref":"#/components/schemas/PassTypeLocalizedString"},"eventStartDate":{"type":["null","string"],"description":"The date and time the event starts. ISO 8601 date as string."},"eventStartDateInfo":{"description":"An object that provides information for the date and time the event starts. See SemanticTagType.EventDateInfo (iOS 18.0+).","$ref":"#/components/schemas/PassTypeAppleEventDateInfoValue"},"eventType":{"type":["null","string"],"description":"Type of event: PKEventTypeGeneric, PKEventTypeLivePerformance, PKEventTypeMovie, PKEventTypeSports,\nPKEventTypeConference, PKEventTypeConvention, PKEventTypeWorkshop or PKEventTypeSocialGathering."},"genre":{"type":["null","string"],"description":"The genre of the performance, such as classical."},"homeTeamAbbreviation":{"type":["null","string"],"description":"The unique abbreviation of the home team's name. Use this key only for a sports event ticket."},"homeTeamLocation":{"type":["null","string"],"description":"The home location of the home team. Use this key only for a sports event ticket."},"homeTeamName":{"type":["null","string"],"description":"The name of the home team. Use this key only for a sports event ticket."},"leagueAbbreviation":{"type":["null","string"],"description":"The abbreviated league name for a sports event. Use this key only for a sports event ticket."},"leagueName":{"type":["null","string"],"description":"The unabbreviated league name for a sports event. Use this key only for a sports event ticket."},"performerNames":{"type":["null","array"],"items":{"type":"string"},"description":"An array of the full names of the performers and opening acts at the event, in decreasing order of significance."},"playlistIDs":{"type":["null","array"],"items":{"type":"string"},"description":"An array of the Apple Music persistent ID for each playlist corresponding to the event, in decreasing order of significance."},"seats":{"type":["null","array"],"items":{"description":"Identification of a seat for a transit journey or an event. See SemanticTagType.Seat.","$ref":"#/components/schemas/PassTypeAppleSeat"},"description":"An array of objects that represent the details for each seat at an event or on a transit journey. See SemanticTagType.Seat."},"silenceRequested":{"type":["null","string"],"description":"Whether the person's device stays silent during an event or transit journey (the system may override the\nperiod). Sent as a string: `true`, `false` or a Liquid template."},"sportName":{"type":["null","string"],"description":"The commonly used name of the sport. Use this key only for a sports event ticket."},"tailgatingAllowed":{"type":["null","string"],"description":"A Boolean value that indicates whether tailgating is allowed at the event. Sent as a string: `true`, `false` or a Liquid template."},"totalPrice":{"description":"The total price for the pass. Use this key for any pass type.","$ref":"#/components/schemas/PassTypeAppleCurrencyAmount"},"venueBoxOfficeOpenDate":{"type":["null","string"],"description":"The date when the box office opens (ISO 8601)."},"venueCloseDate":{"type":["null","string"],"description":"The date when the venue closes (ISO 8601)."},"venueDoorsOpenDate":{"type":["null","string"],"description":"The date the doors to the venue open (ISO 8601)."},"venueEntrance":{"type":["null","string"],"description":"The full name of the entrance, such as Gate A, to use to gain access to the ticketed event."},"venueEntranceDoor":{"type":["null","string"],"description":"The venue entrance door."},"venueEntranceGate":{"type":["null","string"],"description":"The venue entrance gate."},"venueEntrancePortal":{"type":["null","string"],"description":"The venue entrance portal."},"venueFanZoneOpenDate":{"type":["null","string"],"description":"The date the fan zone opens (ISO 8601)."},"venueGatesOpenDate":{"type":["null","string"],"description":"The date the gates to the venue open (ISO 8601)."},"venueLocation":{"description":"An object that represents the geographic coordinates of the venue. See SemanticTagType.Location.","$ref":"#/components/schemas/PassTypeLocation"},"venueName":{"type":["null","string"],"description":"The full name of the venue."},"venueOpenDate":{"type":["null","string"],"description":"The date when the venue opens (ISO 8601). Use this if none of the more specific venue open tags apply."},"venueParkingLotsOpenDate":{"type":["null","string"],"description":"The date the parking lots open (ISO 8601)."},"venuePhoneNumber":{"type":["null","string"],"description":"The phone number for inquiries about the venue's ticketed event."},"venueRegionName":{"type":["null","string"],"description":"The name of the city or hosting region of the venue."},"venueRoom":{"type":["null","string"],"description":"The full name of the room where the ticketed event is to take place."},"wifiAccess":{"type":["null","array"],"items":{"description":"An object that contains information required to connect to a Wi-Fi network. See SemanticTagType.WifiNetwork.","$ref":"#/components/schemas/PassTypeAppleWifiNetwork"},"description":"Wi-Fi networks associated with the event, such as the network name and password of a conference. See SemanticTagType.WifiNetwork."}},"additionalProperties":false,"description":"Apple Wallet semantic tags of the pass, as documented in Apple's SemanticTags specification."},"PassTypeAppleCurrencyAmount":{"type":"object","properties":{"amount":{"type":["null","string"],"description":"Amount in currency units."},"currencyCode":{"type":["null","string"],"description":"Three-letter currency code (ISO 4217), e.g., \"USD\"."}},"additionalProperties":false,"description":"An amount of money and its currency. See SemanticTagType.CurrencyAmount."},"PassTypeAppleEventDateInfoValue":{"type":"object","properties":{"date":{"type":["null","string"],"description":"The date (ISO 8601 date as string)."},"ignoreTimeComponents":{"type":["null","string"],"description":"A Boolean value that indicates whether the system ignores the time components of the date. Sent as a string: `true`, `false` or a Liquid template."},"timeZone":{"type":["null","string"],"description":"The time zone to display in the date. Uses IANA time zone database identifiers (e.g. \"America/Los_Angeles\")."},"unannounced":{"type":["null","string"],"description":"A Boolean value that indicates whether the date of the event is announced. Sent as a string: `true`, `false` or a Liquid template."},"undetermined":{"type":["null","string"],"description":"A Boolean value that indicates whether the date of the event is determined. Sent as a string: `true`, `false` or a Liquid template."}},"additionalProperties":false,"description":"Date and time of an event. See SemanticTagType.EventDateInfo (iOS 18+)."},"PassTypeAppleSeat":{"type":"object","properties":{"seatAisle":{"type":["null","string"],"description":"The aisle that contains the seat."},"seatDescription":{"type":["null","string"],"description":"A description of the seat, such as 'A flat bed seat'."},"seatIdentifier":{"type":["null","string"],"description":"The identifier code for the seat."},"seatLevel":{"type":["null","string"],"description":"The level that contains the seat."},"seatNumber":{"type":["null","string"],"description":"The number of the seat."},"seatRow":{"type":["null","string"],"description":"The row that contains the seat."},"seatSection":{"type":["null","string"],"description":"The section that contains the seat."},"seatSectionColor":{"type":["null","string"],"description":"A color associated with identifying the seat, specified as a CSS-style RGB triple, such as rgb(23, 187, 82)."},"seatType":{"type":["null","string"],"description":"The type of seat, such as 'Reserved seating'."}},"additionalProperties":false,"description":"Identification of a seat for a transit journey or an event. See SemanticTagType.Seat."},"PassTypeLocation":{"type":"object","properties":{"latitude":{"type":["null","string"],"description":"Latitude in degrees."},"longitude":{"type":["null","string"],"description":"Longitude in degrees."}},"additionalProperties":false,"description":"An object that represents the coordinates of a location. See SemanticTagType.Location."},"PassTypeAppleWifiNetwork":{"type":"object","properties":{"password":{"type":["null","string"],"description":"Wi-Fi password (if any)."},"ssid":{"type":["null","string"],"description":"Wi-Fi SSID (network name)."}},"additionalProperties":false,"description":"An object that contains information required to connect to a Wi-Fi network. See SemanticTagType.WifiNetwork."},"PassTypeAppleSharing":{"type":"object","properties":{"method":{"type":["null","string"],"description":"What the Share button sends. One of: url (the text followed by the URL, the default), pkpass (the .pkpass file), disabled (no Share button)."},"url":{"type":["null","string"],"description":"URL shared by the `url` method, a template rendered with the pass's values. Omitted, the install page of the pass."},"text":{"type":["null","string"],"description":"Text sent ahead of the URL with the `url` method, a template rendered with the pass's values. Not translatable. Shown by some share targets, always included when the link is copied."}},"additionalProperties":false,"description":"What the Share button of an Apple pass sends."},"PassTypeAppleUpcomingPassInformation":{"type":"object","properties":{"actionLinks":{"description":"A collection of URLs used to populate UI elements in the details view.","$ref":"#/components/schemas/PassTypeAppleActionLinks"},"additionalInfoFields":{"type":["null","array"],"items":{"description":"Information about a field.","$ref":"#/components/schemas/PassTypeAppleField"},"description":"The fields of information displayed on the Additional Info section below a pass."},"backFields":{"type":["null","array"],"items":{"description":"Information about a field.","$ref":"#/components/schemas/PassTypeAppleField"},"description":"The fields of information displayed on the details view of the upcoming pass information entry."},"dateInformation":{"description":"Information about the start and end time of the upcoming pass information entry. If omitted, the entry is labeled as TBD.","$ref":"#/components/schemas/PassTypeAppleDateInformation"},"identifier":{"type":["null","string"],"description":"Required. Unique identifier of the upcoming pass information entry."},"images":{"description":"A collection of image names used to populate images in the details view.","$ref":"#/components/schemas/PassTypeAppleImages"},"isActive":{"type":["null","string"],"description":"Indicates whether the upcoming pass information entry is currently active. The default value is false."},"name":{"type":["null","string"],"description":"(Required) The name of the upcoming pass information entry. A Liquid template, not a translatable string: one value for every language."},"semantics":{"description":"The semantic, machine-readable metadata about the upcoming pass information entry.","$ref":"#/components/schemas/PassTypeAppleSemantics"},"type":{"type":["null","string"],"description":"(Required) The type of upcoming pass information entry. Value: event."}},"additionalProperties":false,"description":"Part of the Apple configuration."},"PassTypeAppleDateInformation":{"type":"object","properties":{"date":{"type":["null","string"],"description":"The start date of the upcoming pass information entry. If omitted, the entry lists the Time and Date as TBD."},"ignoreTimeComponents":{"type":["null","boolean"],"description":"Indicates whether the entry should ignore the time components of the date."},"isAllDay":{"type":["null","boolean"],"description":"Indicates whether the entry spans the entire day and that the time components should be ignored."},"isUnannounced":{"type":["null","boolean"],"description":"Indicates whether the provided time of the event hasn't been announced (commonly referred to as TBA)."},"isUndetermined":{"type":["null","boolean"],"description":"Indicates whether the provided time of the event hasn't been determined (commonly referred to as TBD)."},"timeZone":{"type":["null","string"],"description":"The time zone to adjust the date into. If omitted, the entry uses the current time zone of the device."}},"additionalProperties":false,"description":"Part of the Apple configuration."},"PassTypeAppleImages":{"type":"object","properties":{"headerImage":{"description":"The name of the image file used for the header image on the details screen. This can be a remote asset.","$ref":"#/components/schemas/PassTypeAppleImage"},"venueMap":{"description":"The name of the image file used for the venue map in the event guide for each upcoming pass information entry.\nThis can be a remote asset and is available for event entries.","$ref":"#/components/schemas/PassTypeAppleImage"}},"additionalProperties":false,"description":"Part of the Apple configuration."},"PassTypeGoogle":{"type":"object","properties":{"accountId":{"type":["null","string"],"description":"The loyalty account identifier. Recommended maximum 20 characters. Applies to: customerCard, stampCard."},"accountIdLabel":{"description":"The account ID label, such as \"Member ID.\" Recommended maximum 15 characters. Applies to: customerCard, stampCard.","$ref":"#/components/schemas/PassTypeLocalizedString"},"accountName":{"type":["null","string"],"description":"The loyalty account holder name, such as \"John Smith.\" Recommended maximum 20 characters. Applies to: customerCard, stampCard."},"accountNameLabel":{"description":"The account name label, such as \"Member Name.\" Recommended maximum 15 characters. Applies to: customerCard, stampCard.","$ref":"#/components/schemas/PassTypeLocalizedString"},"additionalLinks":{"type":["null","array"],"items":{"description":"Part of the Google configuration.","$ref":"#/components/schemas/PassTypeGoogleUri"},"description":"Links module data."},"allowBarCodeRedemption":{"type":["null","boolean"],"description":"Whether the merchant supports redeeming the gift card by barcode. If true, the app displays a barcode on the\ndetails screen; if false, `barcode` is not displayed. Applies to: giftCard."},"appLinks":{"description":"Optional information about the partner app link.","$ref":"#/components/schemas/PassTypeGoogleAppLinkInfos"},"balance":{"description":"The card's monetary balance. Applies to: giftCard.","$ref":"#/components/schemas/PassTypeGoogleMoney"},"balanceUpdateTime":{"type":["null","string"],"description":"When the balance was last updated; defaults to the current time when the balance is updated without it. Applies to: giftCard."},"barCode":{"description":"The barcode type and value.","$ref":"#/components/schemas/PassTypeGoogleBarCode"},"cardNumber":{"type":["null","string"],"description":"The card's number. Applies to: giftCard."},"cardNumberLabel":{"type":["null","string"],"description":"Label shown with the card number. Applies to: giftCard."},"confirmationCode":{"type":["null","string"],"description":"Confirmation code of the event reservation (order, confirmation or reservation number). Applies to: eventTicket."},"confirmationCodeLabel":{"type":["null","string"],"description":"Label for the confirmation code. Each option maps to localized strings. Not combinable with\n`customConfirmationCodeLabel`; when neither is set, \"Confirmation Code\" is used. Applies to: eventTicket.\nOne of: CONFIRMATION_CODE_LABEL_UNSPECIFIED, CONFIRMATION_CODE, CONFIRMATION_NUMBER, ORDER_NUMBER,\nRESERVATION_NUMBER."},"countryCode":{"type":["null","string"],"description":"ISO 3166-1 alpha-2 country code used to display and localize the pass. Applies to: customerCard, eventTicket, giftCard, offer, stampCard."},"customConfirmationLabel":{"description":"Custom label for the confirmation code, for when the default or a `confirmationCodeLabel` option is not\nsufficient. Not combinable with `confirmationCodeLabel`. Applies to: eventTicket.","$ref":"#/components/schemas/PassTypeLocalizedString"},"dateTimeDetails":{"description":"Date time details of the pass. Applies to: eventTicket.","$ref":"#/components/schemas/PassTypeGoogleDateTimeDetails"},"details":{"description":"The details of the offer. Applies to: offer.","$ref":"#/components/schemas/PassTypeLocalizedString"},"disableExpirationNotification":{"type":["null","boolean"],"description":"Indicates whether Google Wallet should suppress expiration notifications for the offer. Applies to: offer."},"discoverableProgram":{"description":"Information about how the class may be discovered and instantiated from within the Google Wallet app. Applies to: customerCard, stampCard.","$ref":"#/components/schemas/PassTypeGoogleDiscoverableProgram"},"eventId":{"type":["null","string"],"description":"ID of the event, unique per event in an account (at most 64 characters). Groups tickets the user saved for the\nsame event; when omitted, the platform groups by other data, possibly unstable. With one class per event, use\nthe classId (with or without the issuer ID). Avoid collisions, which group tickets that should not be grouped.\nApplies to: eventTicket."},"eventName":{"description":"The name of the event, such as \"LA Dodgers at SF Giants\". Applies to: eventTicket.","$ref":"#/components/schemas/PassTypeLocalizedString"},"eventNumber":{"type":["null","string"],"description":"The card's event number, an optional field used by some gift cards. Applies to: giftCard."},"eventNumberLabel":{"description":"The label to display for event number, such as \"Target Event #\". Applies to: giftCard.","$ref":"#/components/schemas/PassTypeLocalizedString"},"expiryNotification":{"type":["null","boolean"],"description":"Indicates that the issuer would like GooglePay to send expiry notifications 2 days prior to the card expiration. Applies to: generic."},"faceValue":{"description":"The face value of the ticket, matching what would be printed on a physical version of the ticket. Applies to: eventTicket.","$ref":"#/components/schemas/PassTypeGoogleMoney"},"finePrint":{"description":"The fine print or terms of the pass, such as \"20% off any t-shirt at Adam's Apparel.\" Applies to: eventTicket, offer.","$ref":"#/components/schemas/PassTypeLocalizedString"},"gate":{"description":"Gate seat information. Applies to: eventTicket.","$ref":"#/components/schemas/PassTypeGoogleGate"},"header":{"description":"Required. The title of the pass, such as \"50% off coupon\" or \"Library card\" or \"Voucher\". This field is required\nand appears in the title row of the pass detail view. Applies to: generic.","$ref":"#/components/schemas/PassTypeLocalizedString"},"helpUrl":{"description":"The help link for the offer, such as http://myownpersonaldomain.com/help. Applies to: offer.","$ref":"#/components/schemas/PassTypeGoogleUri"},"heroImage":{"type":["null","string"],"description":"Optional banner image displayed on the front of the card. If none is present, nothing will be displayed. The image will display at 100% width."},"hexBackgroundColor":{"type":["null","string"],"description":"Background color as `#rrggbb` or `#rgb`. Defaults to the dominant color of the hero image, else of the logo."},"homepage":{"description":"URI of your application's home page, shown as a link like `linksModuleData`. Applies to: customerCard, eventTicket, giftCard, offer, stampCard.","$ref":"#/components/schemas/PassTypeGoogleUri"},"identifier":{"type":["null","string"],"description":"Name of the Google Wallet class the passes belong to. Advanced: leave null unless the class already exists in\nGoogle Wallet, for example when passes are imported from another system."},"issuerName":{"description":"The issuer name. Recommended maximum 20 characters. Applies to: customerCard, eventTicket, giftCard, offer, stampCard.","$ref":"#/components/schemas/PassTypeLocalizedString"},"locations":{"type":["null","array"],"items":{"description":"An object that represents the coordinates of a location. See SemanticTagType.Location.","$ref":"#/components/schemas/PassTypeLocation"},"description":"The list of locations where the object can be used. The platform uses this information to trigger geolocated notifications to users."},"logo":{"type":["null","string"],"description":"Logo shown in the card detail view (upper left) and the list view; without it, the first letter of cardTitle. Applies to: eventTicket, generic."},"loyaltyPoints":{"description":"The loyalty reward points label, balance, and type. Applies to: customerCard, stampCard.","$ref":"#/components/schemas/PassTypeGoogleLoyaltyPoint"},"merchantName":{"description":"Merchant name, such as \"Adam's Apparel\". The app may display an ellipsis after the first 20 characters to ensure\nfull string is displayed on smaller screens. Applies to: giftCard.","$ref":"#/components/schemas/PassTypeLocalizedString"},"messages":{"type":["null","array"],"items":{"description":"Part of the Google configuration.","$ref":"#/components/schemas/PassTypeGoogleMessage"},"description":"Messages displayed in the app to all users of this object. At most 10."},"multipleDevicesAndHoldersAllowedStatus":{"type":["null","string"],"description":"Identifies whether multiple users and devices will save the same object referencing this class. One of: multipleHolder, oneUserAllDevices, oneUserOneDevice."},"screenshotEligibility":{"type":["null","string"],"description":"Whether the holder can take a screenshot of the pass in Google Wallet on Android. One of: unspecified, eligible, ineligible."},"nfcConstraints":{"type":["null","array"],"items":{"type":"string"},"description":"What the phone must not hand out over NFC while the pass is open. Each one of: blockPayment, blockClosedLoopTransit."},"grouping":{"description":"How passes are grouped together in Google Wallet.","$ref":"#/components/schemas/PassTypeGoogleGrouping"},"imageModule":{"description":"An image shown at full width among the details of the pass.","$ref":"#/components/schemas/PassTypeGoogleImageModule"},"pin":{"type":["null","string"],"description":"The card's PIN. Applies to: giftCard."},"pinLabel":{"description":"The label to display for the PIN, such as \"4-digit PIN\". Applies to: giftCard.","$ref":"#/components/schemas/PassTypeLocalizedString"},"programLogo":{"type":["null","string"],"description":"Required. The logo of the loyalty program or company. This logo is displayed in both the details and list views of the app. Applies to: customerCard, giftCard, stampCard."},"programName":{"description":"The program name, such as \"Adam's Apparel\". The app may display an ellipsis after the first 20 characters to\nensure full string is displayed on smaller screens. Applies to: customerCard, stampCard.","$ref":"#/components/schemas/PassTypeLocalizedString"},"provider":{"description":"The offer provider (either the aggregator name or merchant name). Recommended maximum 12 characters. Applies to: offer.","$ref":"#/components/schemas/PassTypeLocalizedString"},"redemptionChannel":{"type":["null","string"],"description":"The redemption channels applicable to this offer. Applies to: offer. One of: REDEMPTION_CHANNEL_UNSPECIFIED, INSTORE, ONLINE, BOTH, TEMPORARY_PRICE_REDUCTION."},"rewardsTier":{"type":["null","string"],"description":"The rewards tier, such as \"Gold\" or \"Platinum.\" Recommended maximum 7 characters. Applies to: customerCard, stampCard."},"rewardsTierLabel":{"description":"The rewards tier label, such as \"Rewards Tier.\" Recommended maximum 9 characters. Applies to: customerCard, stampCard.","$ref":"#/components/schemas/PassTypeLocalizedString"},"row":{"description":"Row seat information. Applies to: eventTicket.","$ref":"#/components/schemas/PassTypeGoogleRow"},"seat":{"description":"Seat information. Applies to: eventTicket.","$ref":"#/components/schemas/PassTypeGoogleSeat"},"secondaryLoyaltyPoints":{"description":"The secondary loyalty reward points label, balance, and type. Shown in addition to the primary loyalty points. Applies to: customerCard, stampCard.","$ref":"#/components/schemas/PassTypeGoogleLoyaltyPoint"},"secondaryRewardsTier":{"type":["null","string"],"description":"The secondary rewards tier, such as \"Gold\" or \"Platinum.\". Applies to: customerCard, stampCard."},"secondaryRewardsTierLabel":{"description":"The secondary rewards tier label, such as \"Rewards Tier.\". Applies to: customerCard, stampCard.","$ref":"#/components/schemas/PassTypeLocalizedString"},"section":{"description":"Section seat information. Applies to: eventTicket.","$ref":"#/components/schemas/PassTypeGoogleSection"},"securityAnimation":{"type":["null","string"],"description":"Security animation rendered on pass details. One of: unspecified, foilShimmer."},"shortTitle":{"description":"A shortened version of the title of the offer, such as \"20% off,\" shown to users as a quick reference to the\noffer contents. Recommended maximum 20 characters. Applies to: offer.","$ref":"#/components/schemas/PassTypeLocalizedString"},"smartTap":{"description":"Identifies whether this class supports Smart Tap.","$ref":"#/components/schemas/PassTypeGoogleSmartTap"},"stampImages":{"type":["null","array"],"items":{"description":"The Google image a stamp card shows at one exact stamp count.","$ref":"#/components/schemas/PassTypeGoogleStampImage"},"description":"The hero image to show at each stamp count. The entry matching the holder's current count replaces the class-level hero image. Applies to: stampCard."},"state":{"type":["null","string"],"description":"State of the object, which decides how the app displays it (an inactive object moves to \"Expired passes\"). One of: ACTIVE, COMPLETED, EXPIRED, INACTIVE."},"subheader":{"description":"The title label of the pass, such as location where this pass can be used. Appears right above the title in the title row in the pass detail view. Applies to: generic.","$ref":"#/components/schemas/PassTypeLocalizedString"},"templateOverride":{"description":"Which values the card shows where, in place of Google's default layout.","$ref":"#/components/schemas/PassTypeGoogleTemplateOverride"},"texts":{"type":["null","array"],"items":{"description":"Part of the Google configuration.","$ref":"#/components/schemas/PassTypeGoogleText"},"description":"Text module data."},"ticketHolderName":{"type":["null","string"],"description":"Name of the ticket holder, if the ticket is assigned to a person. E.g. \"John Doe\" or \"Jane Doe\". Applies to: eventTicket."},"ticketNumber":{"type":["null","string"],"description":"The number of the ticket. This can be a unique identifier across all tickets in an issuer's system, all tickets\nfor the event (e.g. XYZ1234512345), or all tickets in the order (1, 2, 3, etc.). Applies to: eventTicket."},"ticketType":{"description":"The type of the ticket, such as \"Adult\" or \"Child\", or \"VIP\" or \"Standard\". Applies to: eventTicket.","$ref":"#/components/schemas/PassTypeLocalizedString"},"title":{"description":"The title of the offer, such as \"20% off any t-shirt.\" Recommended maximum 60 characters. Applies to: generic, offer.","$ref":"#/components/schemas/PassTypeLocalizedString"},"titleImage":{"type":["null","string"],"description":"The title image of the offer. This image is displayed in both the details and list views of the app. Applies to: offer."},"upcomingNotification":{"type":["null","boolean"],"description":"Indicates that the issuer would like GooglePay send an upcoming card validity notification 1 day before card becomes valid/usable. Applies to: generic."},"validTimeInterval":{"description":"The time period this object will be active and object can be used. An object's state will be changed to expired when this time period has passed.","$ref":"#/components/schemas/PassTypeGoogleTimeInterval"},"valueAddedOpportunities":{"type":["null","array"],"items":{"description":"Part of the Google configuration.","$ref":"#/components/schemas/PassTypeGoogleValueAddedItem"},"description":"Optional value added module data. Maximum of ten on the object."},"venue":{"description":"Event venue details. Applies to: eventTicket.","$ref":"#/components/schemas/PassTypeGoogleVenue"},"viewUnlockRequirement":{"type":["null","string"],"description":"View Unlock Requirement. One of: unspecified, requiredToView, notRequired."},"wideLogo":{"type":["null","string"],"description":"The wide logo of the pass. When provided, this will be used in place of the logo in the top left of the card view. Applies to: eventTicket, generic."},"wideProgramLogo":{"type":["null","string"],"description":"The wide logo of the loyalty program or company. When provided, this will be used in place of the program logo\nin the top left of the card view. Applies to: customerCard, giftCard, stampCard."},"wideTitleImage":{"type":["null","string"],"description":"The wide title image used in place of the title image in the top left of the card view. Applies to: offer."}},"additionalProperties":false,"description":"The Google Wallet card. Not every pass kind accepts every property, and one that only some kinds accept says so."},"PassTypeGoogleUri":{"type":"object","properties":{"label":{"description":"The URI's title appearing in the app as text. Recommended maximum 20 characters.","$ref":"#/components/schemas/PassTypeLocalizedString"},"uri":{"type":["null","string"],"description":"Location of a web page, image or other resource, with a scheme (web link, map, telephone number or email address). A templated string that renders a valid URI."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleAppLinkInfos":{"type":"object","properties":{"androidAppLinkInfo":{"description":"Partner app link rendered on the valuable details of the Android client.","$ref":"#/components/schemas/PassTypeGoogleAndroidAppLinkInfo"},"displayText":{"description":"Optional display text for the app link button. Character limit is 30.","$ref":"#/components/schemas/PassTypeLocalizedString"},"webAppLinkInfo":{"description":"Partner app link rendered on the valuable details of the web client.","$ref":"#/components/schemas/PassTypeGoogleWebAppLinkInfo"}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleAndroidAppLinkInfo":{"type":"object","properties":{"packageName":{"type":["null","string"],"description":"Package name for AppTarget. For example: com.google.android.gm."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleWebAppLinkInfo":{"type":"object","properties":{"targetUri":{"description":"URI for AppTarget, with a description. Prefer the package field when the target is defined for your application.","$ref":"#/components/schemas/PassTypeGoogleUri"}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleMoney":{"type":"object","properties":{"currencyCode":{"type":["null","string"],"description":"The currency code, such as \"USD\" or \"EUR.\"."},"value":{"type":["null","string"],"description":"Amount, as a number or a Liquid template rendering one. Not a translatable string: one value for every language."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleBarCode":{"type":"object","properties":{"alternateText":{"type":["null","string"],"description":"A human readable equivalent of the barcode value, shown under the barcode in place of the default text. Not allowed on a TEXT_ONLY barcode."},"showCodeText":{"description":"Text shown when a Smart Tap barcode is hidden behind a click action.","$ref":"#/components/schemas/PassTypeLocalizedString"},"type":{"type":["null","string"],"description":"The type of barcode. Only QR_CODE is supported for rotating barcodes. One of: AZTEC, CODE_39, CODE_128, CODABAR,\nDATA_MATRIX, EAN_8, EAN_13, ITF_14, PDF_417, QR_CODE, UPC_A, TEXT_ONLY."},"value":{"type":["null","string"],"description":"The value encoded in the barcode."},"rotating":{"type":["null","boolean"],"description":"The phone recomputes the code every period from a one-time password (QR_CODE and PDF_417 only). The value must hold {totp_value_0}, replaced by the current password."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleDateTimeDetails":{"type":"object","properties":{"customDoorsOpenLabel":{"description":"Custom label for the doors open value, for when the default \"Doors Open\" or a `doorsOpenLabel` option is not sufficient. Not combinable with `doorsOpenLabel`.","$ref":"#/components/schemas/PassTypeLocalizedString"},"doorsOpen":{"type":["null","string"],"description":"When the doors open at the venue. ISO 8601 extended format, with or without an offset, up to nanosecond\nprecision (`2018-06-05T20:00:00-04:00`). Without an offset it is the venue's local date/time; some rich\nfeatures need the offset."},"doorsOpenLabel":{"type":["null","string"],"description":"Label for the doors open value. Each option maps to localized strings. Not combinable with\n`customDoorsOpenLabel`; when neither is set, \"Doors Open\" is used. One of: DOORS_OPEN_LABEL_UNSPECIFIED,\nDOORS_OPEN, GATES_OPEN."},"end":{"type":["null","string"],"description":"When the event ends (on the last day, if it spans several). ISO 8601 extended format, with or without an offset,\nup to nanosecond precision (`2018-06-05T20:00:00-04:00`). Without an offset it is the venue's local\ndate/time; some rich features need the offset."},"start":{"type":["null","string"],"description":"When the event starts (on the first day, if it spans several). ISO 8601 extended format, with or without an\noffset, up to nanosecond precision (`2018-06-05T20:00:00-04:00`). Without an offset it is the venue's local\ndate/time; some rich features need the offset."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleDiscoverableProgram":{"type":"object","properties":{"signinUrl":{"type":["null","string"],"description":"The URL to direct the user to for the merchant's signin site. Used when MERCHANT_HOSTED_SIGNIN is enabled."},"signupSharedDatas":{"type":["null","array"],"items":{"type":"string"},"description":"User data sent in a POST to the sign-up URL: Google Wallet SharedDataType strings such as FIRST_NAME, LAST_NAME, EMAIL."},"signupUrl":{"type":["null","string"],"description":"The URL to direct the user to for the merchant's signup site. Used when MERCHANT_HOSTED_SIGNUP is enabled."},"state":{"type":["null","string"],"description":"Visibility state of the discoverable program. One of: trustedTesters, live, disabled."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleGate":{"type":"object","properties":{"customGateLabel":{"description":"Custom label for the gate value, for when the default \"Gate\" or a `gateLabel` option is not sufficient. Not combinable with `gateLabel`.","$ref":"#/components/schemas/PassTypeLocalizedString"},"gate":{"type":["null","string"],"description":"The gate the ticket holder should enter to get to their seat, such as \"A\" or \"West\"."},"gateLabel":{"type":["null","string"],"description":"Label for the gate value. Each option maps to localized strings. Not combinable with `customGateLabel`;\nwhen neither is set, \"Gate\" is used. One of: GATE_LABEL_UNSPECIFIED, GATE, DOOR, ENTRANCE."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleLoyaltyPoint":{"type":"object","properties":{"balance":{"description":"The account holder's loyalty point balance, such as \"500\" or \"$10.00\". Recommended maximum 7 characters. This is\na required field of loyaltyPoints and secondaryLoyaltyPoints.","$ref":"#/components/schemas/PassTypeGoogleBalanceConfigurationBase"},"label":{"description":"The loyalty points label, such as \"Points\". Recommended maximum 9 characters.","$ref":"#/components/schemas/PassTypeLocalizedString"}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleBalanceConfigurationBase":{"type":"object","properties":{"value":{"type":["null","string"],"description":"Value of the pass. A Liquid template, not a translatable string: one value for every language."},"type":{"type":["null","string"],"description":"How Google reads Neo.Web.Api.Wallet.Controllers.PassTypes.PassTypeGoogleBalanceConfigurationBase.Value: `string`, `integer`, `double` or `money`.\nOmitted, `string`."},"currencyCode":{"type":["null","string"],"description":"The currency of a `money` balance, such as `USD` or `EUR`. Required for `money`, ignored otherwise."}},"additionalProperties":false,"description":"A loyalty balance: its value, and how Google reads and displays it."},"PassTypeGoogleMessage":{"type":"object","properties":{"body":{"description":"The message body.","$ref":"#/components/schemas/PassTypeLocalizedString"},"displayInterval":{"description":"Period during which the message is displayed: from `startTime` (else immediately after insertion) to `endTime` (else indefinitely).","$ref":"#/components/schemas/PassTypeGoogleTimeInterval"},"header":{"description":"The message header.","$ref":"#/components/schemas/PassTypeLocalizedString"},"id":{"type":["null","string"],"description":"Optional identifier."},"notify":{"type":["null","boolean"],"description":"Whether a notification appears when the body changes."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleTimeInterval":{"type":"object","properties":{"end":{"type":["null","string"],"description":"End time of the interval."},"start":{"type":["null","string"],"description":"Start time of the interval."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleGrouping":{"type":"object","properties":{"id":{"type":["null","string"],"description":"The group the pass belongs to: passes with the same id are shown stacked together."},"sortIndex":{"type":["null","string"],"description":"The pass's position in its group, lower first."}},"additionalProperties":false,"description":"How passes are grouped together in Google Wallet."},"PassTypeGoogleImageModule":{"type":"object","properties":{"description":{"description":"What the image shows, read by screen readers. Carries one value per language.","$ref":"#/components/schemas/PassTypeLocalizedString"},"image":{"type":["null","string"],"description":"The image."}},"additionalProperties":false,"description":"An image shown at full width among the details of the pass."},"PassTypeGoogleRow":{"type":"object","properties":{"customRowLabel":{"description":"Custom label for the row value, for when the default \"Row\" or a `rowLabel` option is not sufficient. Not combinable with `rowLabel`.","$ref":"#/components/schemas/PassTypeLocalizedString"},"row":{"type":["null","string"],"description":"The row of the seat, such as \"1\", E\", \"BB\", or \"A5\"."},"rowLabel":{"type":["null","string"],"description":"Label for the row value. Each option maps to localized strings. Not combinable with `customRowLabel`; when\nneither is set, \"Row\" is used. One of: ROW_LABEL_UNSPECIFIED, ROW."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleSeat":{"type":"object","properties":{"customSeatLabel":{"description":"Custom label for the seat value, for when the default \"Seat\" or a `seatLabel` option is not sufficient. Not combinable with `seatLabel`.","$ref":"#/components/schemas/PassTypeLocalizedString"},"seat":{"type":["null","string"],"description":"The seat number, such as \"1\", \"2\", \"3\", or any other seat identifier."},"seatLabel":{"type":["null","string"],"description":"Label for the seat value. Each option maps to localized strings. Not combinable with `customSeatLabel`;\nwhen neither is set, \"Seat\" is used. One of: SEAT_LABEL_UNSPECIFIED, SEAT."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleSection":{"type":"object","properties":{"customSectionLabel":{"description":"Custom label for the section value, for when the default \"Section\" or a `sectionLabel` option is not sufficient. Not combinable with `sectionLabel`.","$ref":"#/components/schemas/PassTypeLocalizedString"},"section":{"type":["null","string"],"description":"The section of the seat, such as \"121\"."},"sectionLabel":{"type":["null","string"],"description":"Label for the section value. Each option maps to localized strings. Not combinable with\n`customSectionLabel`; when neither is set, \"Section\" is used. One of: SECTION_LABEL_UNSPECIFIED, SECTION,\nTHEATRE."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleSmartTap":{"type":"object","properties":{"value":{"type":["null","string"],"description":"Value transmitted to a Smart Tap terminal over NFC (ASCII only). A Liquid template, not a translatable string."}},"additionalProperties":false,"description":"Smart Tap: lets a Smart Tap terminal read a value from the pass over NFC. The tenant's issuer redeems it, and without a Smart Tap key on the tenant it is not enabled."},"PassTypeGoogleStampImage":{"type":"object","properties":{"count":{"type":["null","integer"],"description":"The stamp count this image is shown at.","format":"int32"},"heroImage":{"type":["null","string"],"description":"Hero image for that count (1032x336)."}},"additionalProperties":false,"description":"The Google image a stamp card shows at one exact stamp count."},"PassTypeGoogleTemplateOverride":{"type":"object","properties":{"barcodeInfo":{"description":"The values shown around the barcode.","$ref":"#/components/schemas/PassTypeGoogleBarcodeInfo"},"cardTemplateInfo":{"description":"The rows of values on the front of the card.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfo"},"detailsTemplateInfo":{"description":"The order and content of the details view.","$ref":"#/components/schemas/PassTypeGoogleDetailsTemplateOverride"},"listTemplateInfo":{"description":"How the card reads in the holder's list of passes.","$ref":"#/components/schemas/PassTypeGoogleListTemplateInfo"}},"additionalProperties":false,"description":"Which values the card shows where, in place of Google's default layout."},"PassTypeGoogleBarcodeInfo":{"type":"object","properties":{"firstBottomDetail":{"description":"Value shown below the barcode.","$ref":"#/components/schemas/PassTypeGoogleDetail"},"firstTopDetail":{"description":"First value shown above the barcode.","$ref":"#/components/schemas/PassTypeGoogleDetail"},"secondTopDetail":{"description":"Second value shown above the barcode.","$ref":"#/components/schemas/PassTypeGoogleDetail"}},"additionalProperties":false,"description":"The values shown around the barcode of the card."},"PassTypeGoogleDetail":{"type":"object","properties":{"paths":{"type":["null","array"],"items":{"type":"string"},"description":"Google field paths to read the value from. The first one holding a value is shown."}},"additionalProperties":false,"description":"A value shown next to the barcode, read from a field of the Google object or class."},"PassTypeGoogleCardTemplateInfo":{"type":"object","properties":{"firstLine":{"description":"First row. Required once the card layout is overridden.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfoRow"},"lines":{"type":["null","array"],"items":{"description":"One row on the front of the card: one to three slots, left to right.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfoRow"},"description":"The configured rows in display order. Read-only: derived from `firstLine`, `secondLine` and `thirdLine`, and ignored on save."},"secondLine":{"description":"Second row.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfoRow"},"thirdLine":{"description":"Third row. Shown only when `secondLine` is set.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfoRow"}},"additionalProperties":false,"description":"The rows of values on the front of the card, top to bottom."},"PassTypeGoogleCardTemplateInfoRow":{"type":"object","properties":{"firstItem":{"description":"First slot. Required.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfoItem"},"items":{"type":["null","array"],"items":{"description":"One slot of a row on the front of the card.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfoItem"},"description":"The configured slots in display order. Read-only: derived from `firstItem`, `secondItem` and `thirdItem`, and ignored on save."},"secondItem":{"description":"Second slot.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfoItem"},"thirdItem":{"description":"Third slot. Shown only when `secondItem` is set.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfoItem"}},"additionalProperties":false,"description":"One row on the front of the card: one to three slots, left to right."},"PassTypeGoogleCardTemplateInfoItem":{"type":"object","properties":{"primary":{"description":"Value shown in the slot.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfoItemValue"},"secondary":{"description":"Value shown beside the primary one in the same slot, separated by a slash.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfoItemValue"}},"additionalProperties":false,"description":"One slot of a row on the front of the card."},"PassTypeGoogleCardTemplateInfoItemValue":{"type":"object","properties":{"dateFormat":{"type":["null","string"],"description":"How a date value is rendered. One of: DATE_FORMAT_UNSPECIFIED, DATE_TIME, DATE_ONLY, TIME_ONLY, DATE_TIME_YEAR, DATE_YEAR, YEAR_MONTH, YEAR_MONTH_DAY."},"paths":{"type":["null","array"],"items":{"type":"string"},"description":"Google field paths to read the value from, such as `object.textModulesData['points']`. The first one holding a value is shown."}},"additionalProperties":false,"description":"A value on the front of the card, read from a field of the Google object or class."},"PassTypeGoogleDetailsTemplateOverride":{"type":"object","properties":{"items":{"type":["null","array"],"items":{"description":"One entry of the card's details view.","$ref":"#/components/schemas/PassTypeGoogleDetailsItem"},"description":"The entries, in display order."}},"additionalProperties":false,"description":"The order and content of the card's details view."},"PassTypeGoogleDetailsItem":{"type":"object","properties":{"firstValuePaths":{"type":["null","array"],"items":{"type":"string"},"description":"Google field paths of the entry's value. The first one holding a value is shown."},"secondValuePaths":{"type":["null","array"],"items":{"type":"string"},"description":"Google field paths of a second value shown beside the first, separated by a slash."}},"additionalProperties":false,"description":"One entry of the card's details view."},"PassTypeGoogleListTemplateInfo":{"type":"object","properties":{"rows":{"type":["null","array"],"items":{"description":"One line of the card in the list of passes.","$ref":"#/components/schemas/PassTypeGoogleListTemplateInfoRow"},"description":"The lines under the card's title. Only the first two are shown."}},"additionalProperties":false,"description":"How the card reads in the holder's list of passes."},"PassTypeGoogleListTemplateInfoRow":{"type":"object","properties":{"paths":{"type":["null","array"],"items":{"type":"string"},"description":"Google field paths to read the line from. The first one holding a value is shown."}},"additionalProperties":false,"description":"One line of the card in the list of passes."},"PassTypeGoogleText":{"type":"object","properties":{"body":{"description":"The body of the Text Module, which is defined as an uninterrupted string. Recommended maximum 500 characters.","$ref":"#/components/schemas/PassTypeLocalizedString"},"header":{"description":"The header of the Text Module. Recommended maximum 35 characters.","$ref":"#/components/schemas/PassTypeLocalizedString"}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleValueAddedItem":{"type":"object","properties":{"body":{"description":"Body to be displayed on the module. Character limit is 50 and longer strings will be truncated.","$ref":"#/components/schemas/PassTypeLocalizedString"},"displayInterval":{"description":"Period during which the module is displayed: from `startTime` (else immediately after insertion) to `endTime` (else indefinitely).","$ref":"#/components/schemas/PassTypeGoogleTimeInterval"},"header":{"description":"Header to be displayed on the module. Character limit is 60 and longer strings will be truncated.","$ref":"#/components/schemas/PassTypeLocalizedString"},"logo":{"type":["null","string"],"description":"Image to be displayed on the module. Recommended image ratio is 1:1. Images will be resized to fit this ratio."},"uri":{"type":["null","string"],"description":"URI the module leads to on click: a web link or a deep link. A templated string that renders a valid URI."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleVenue":{"type":"object","properties":{"address":{"description":"Address of the venue, such as \"24 Willie Mays Plaza\\nSan Francisco, CA 94107\"; lines are separated by `\\n`.","$ref":"#/components/schemas/PassTypeLocalizedString"},"name":{"description":"The name of the venue, such as \"AT&T Park\".","$ref":"#/components/schemas/PassTypeLocalizedString"}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypePreview":{"type":"object","properties":{"subTitle":{"description":"Sub title of the pass.","$ref":"#/components/schemas/PassTypeLocalizedString"},"title":{"description":"Title of the pass.","$ref":"#/components/schemas/PassTypeLocalizedString"}},"additionalProperties":false,"description":"Part of the pass configuration."},"PassTypeScannableData":{"type":"object","properties":{"persistScannableData":{"type":["null","boolean"],"description":"Whether scannable data is kept on the pass, for compatible systems."}},"additionalProperties":false,"description":"Part of the pass configuration."},"PassTypeStamps":{"type":"object","properties":{"behaviour":{"type":["null","string"],"description":"What happens to the card once `Target` is reached. One of: resetOnNextStamp, resetImmediately, stayAtGoal."},"rewardBenefitTemplateId":{"type":["null","string"],"description":"Id of the benefit template granted when the goal is reached, or `null` for a card that rewards nothing on its own."},"target":{"type":["null","integer"],"description":"Number of stamps that reaches the goal.","format":"int32"}},"additionalProperties":false,"description":"The stamp mechanic carried by a `stampCard` pass: how many stamps reach the goal, what the card shows on the way there, and what happens once it arrives."},"PassTypeMetadata":{"type":"object","properties":{"entries":{"type":["null","array"],"items":{"description":"One metadata field computed on every pass of the template.","$ref":"#/components/schemas/PassTypeMetadataDefinition"},"description":"One entry per value computed."}},"additionalProperties":false,"description":"Values computed whenever a pass is updated, which issued passes can be searched by."},"PassTypeMetadataDefinition":{"type":"object","properties":{"key":{"type":["null","string"],"description":"Key of the value on each pass, and what passes are filtered on."},"type":{"type":["null","string"],"description":"Data type of the value. One of: string, number, boolean, datetime. Omitted reads as string."},"value":{"type":["null","string"],"description":"Liquid template computing the value whenever a pass is updated."}},"additionalProperties":false,"description":"One metadata field computed on every pass of the template."},"ProblemDetails":{"type":"object","properties":{"type":{"type":["null","string"]},"title":{"type":["null","string"]},"status":{"type":["null","integer"],"format":"int32"},"detail":{"type":["null","string"]},"instance":{"type":["null","string"]}},"additionalProperties":{}},"HttpValidationProblemDetails":{"type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"properties":{"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"additionalProperties":{}}}},"paths":{"/api/{tenantId}/admin/passTypes/{name}":{"get":{"tags":["PassTypes"],"summary":"Get a pass template","description":"Wording included.","parameters":[{"name":"name","in":"path","description":"Template name, the `passType` its passes carry.","required":true,"schema":{"type":"string"}},{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Template returned.","content":{"text/plain":{"schema":{"description":"One pass template in full.","$ref":"#/components/schemas/PassTypeDetail"}},"application/json":{"schema":{"description":"One pass template in full.","$ref":"#/components/schemas/PassTypeDetail"}},"text/json":{"schema":{"description":"One pass template in full.","$ref":"#/components/schemas/PassTypeDetail"}}}},"400":{"description":"The name is not valid: 1 to 100 letters, digits, underscores, hyphens, dots or spaces.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"401":{"description":"The caller is not authenticated.","content":{"application/problem+json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"403":{"description":"The caller lacks the <c>tenant.passType:read</c> scope.","content":{"application/problem+json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"404":{"description":"No such template.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"409":{"description":"The stored template cannot be read (type `#unreadable-configuration-file`); repair it in the Advanced Configuration editor.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"429":{"description":"Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after <c>Retry-After</c>.","headers":{"Retry-After":{"description":"Seconds to wait before retrying. Sent when the limiter knows it.","schema":{"type":"integer"}}},"content":{"application/problem+json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}}}}}}}
```

## Save a pass template

> Creates the template when none exists under the route name, otherwise replaces it. Send the configuration whole: anything left out, wording in every language included, is removed. Idempotent. \`kind\` is fixed at creation. \`If-None-Match: \*\` restricts the request to creating (412 when it exists).

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"PassTypes"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"security":[{"admin-bearer":["tenant.passType:write"]},{"apiKey":[]}],"components":{"securitySchemes":{"admin-bearer":{"type":"oauth2","flows":{"implicit":{"authorizationUrl":"https://auth.neostore.cloud/authorize?audience=https://app.neostore.cloud/api/","scopes":{}}}},"apiKey":{"type":"apiKey","name":"X-API-KEY","in":"header"}},"schemas":{"SavePassTypeRequest":{"required":["configuration"],"type":"object","properties":{"configuration":{"description":"The template itself, in the same shape Neo.Web.Api.Wallet.Controllers.PassTypes.PassTypeDetail.Configuration returns. Send it\nwhole: a save replaces the stored template rather than merging into it, so anything left out is\nremoved, and wording left out is deleted in every language.","$ref":"#/components/schemas/PassTypeModel"}},"additionalProperties":false,"description":"A pass template to create or replace."},"PassTypeModel":{"type":"object","properties":{"kind":{"description":"Which of the six templates this is. Cannot be changed after creation.","$ref":"#/components/schemas/PassTypeKind"},"tags":{"type":["null","array"],"items":{"type":"string"},"description":"Free-form back-office labels. Nothing here reaches the holder."},"creationDate":{"oneOf":[{"type":"string","format":"date-time"},{"type":"integer","format":"int64"}],"description":"When the template was created. Set by the platform; ignored on write. Accepts ISO 8601 date-time string or Unix epoch seconds in request inputs. Responses are serialized as ISO 8601 date-time strings."},"lastModificationDate":{"oneOf":[{"type":"string","format":"date-time"},{"type":"integer","format":"int64"}],"description":"When the template was last saved. Set by the platform on every save; ignored on write. Accepts ISO 8601 date-time string or Unix epoch seconds in request inputs. Responses are serialized as ISO 8601 date-time strings."},"passLayoutName":{"type":["null","string"],"description":"Download page the template's passes are presented from, by name. Omitted, `pass`. Must name an existing download page."},"trackLinks":{"type":["null","boolean"],"description":"Whether links on the pass go through a tracking redirect so opens can be counted. Omitted, links are tracked."},"optimizeImages":{"type":["null","boolean"],"description":"Whether images are optimized when a pass is built. Omitted, they are. Images uploaded through the template image endpoint are always optimized on upload."},"notification":{"description":"How long a message sent to the template's passes stays displayed on them.","$ref":"#/components/schemas/PassTypeNotification"},"previewData":{"type":["null","array"],"items":{"description":"One named set of values a template is previewed against.","$ref":"#/components/schemas/PassTypePreviewData"},"description":"Named sets of sample values the editor renders the template's Liquid against, so a preview shows\nwords rather than expressions."},"extensions":{"description":"The two wallets and the sections that configure neither of them on its own.","$ref":"#/components/schemas/PassTypeExtensions"}},"additionalProperties":false,"description":"Everything a pass template configures."},"PassTypeKind":{"enum":["customerCard","eventTicket","giftCard","offer","generic","stampCard"],"type":"string","description":"Which of the six templates a pass type is. Fixed when it is created."},"PassTypeNotification":{"type":"object","properties":{"duration":{"type":["null","string"],"description":"How long a message stays on a pass of this template, as a .NET `TimeSpan` (`d.hh:mm:ss`, `7.00:00:00` for a week). Omitted, 7 days; always present on read."}},"additionalProperties":false,"description":"How long a message sent to the template's passes stays displayed on them."},"PassTypePreviewData":{"type":"object","properties":{"name":{"type":["null","string"],"description":"What the editor calls this set, such as `Gold member`. Unique within the template."},"type":{"description":"Whether the values are written here (`custom`) or come from an issued pass (`real`).","$ref":"#/components/schemas/PassTypePreviewDataType"},"isDefault":{"type":"boolean","description":"Whether the editor previews this set first, `custom` or `real`. Only one set can be. Omitted,\nthe first `custom` set is."},"data":{"type":["null","object"],"description":"The values of a `custom` set. Free-form: the keys are whatever the tenant's own passes carry. Absent\non a `real` set."},"passId":{"type":["null","string"],"description":"The identifier of the issued pass a `real` set previews. Absent on a `custom` set."}},"additionalProperties":false,"description":"One named set of values a template is previewed against."},"PassTypePreviewDataType":{"enum":["custom","real"],"type":"string","description":"Where a preview data set takes its values from."},"PassTypeExtensions":{"type":"object","properties":{"apple":{"description":"The Apple Wallet pass. Configured the same way whatever the kind.","$ref":"#/components/schemas/PassTypeApple"},"google":{"description":"The Google Wallet card. Each kind accepts only the properties it declares — every property that is\nnot common to all six says which kinds it applies to.","$ref":"#/components/schemas/PassTypeGoogle"},"preview":{"description":"How an issued pass of this template is summarised in the back office.","$ref":"#/components/schemas/PassTypePreview"},"scannableData":{"description":"What a scanner reads off an issued pass.","$ref":"#/components/schemas/PassTypeScannableData"},"stamps":{"description":"The stamp mechanic. Only a Neo.Web.Api.Wallet.Controllers.PassTypes.PassTypeKind.StampCard has one.","$ref":"#/components/schemas/PassTypeStamps"},"metadata":{"description":"Values computed whenever a pass is updated, which issued passes can then be searched and filtered\nby. Nothing here is shown to the holder.","$ref":"#/components/schemas/PassTypeMetadata"}},"additionalProperties":false,"description":"The two wallets and the sections that configure neither of them on its own."},"PassTypeApple":{"type":"object","properties":{"actionLinks":{"description":"Configuration for action links associated with the pass.","$ref":"#/components/schemas/PassTypeAppleActionLinks"},"additionalInfoFields":{"type":["null","array"],"items":{"description":"Information about a field.","$ref":"#/components/schemas/PassTypeAppleField"},"description":"Fields displayed in the Additional Info section below the pass content. Used for poster event ticket passes (iOS 18+)."},"appLaunchUrl":{"type":["null","string"],"description":"URL passed to the associated app at launch (from associatedStoreIdentifiers). Not supported on watchOS."},"associatedStoreIdentifiers":{"type":["null","array"],"items":{"type":"integer","format":"int64"},"description":"App Store identifiers of apps associated with the pass; the first one compatible with the device is used, with a\nlink on the back of the pass (it opens the App Store when the app is not installed). Payment passes only; not\nsupported on watchOS."},"auxiliaryFields":{"type":["null","array"],"items":{"description":"Information about a field.","$ref":"#/components/schemas/PassTypeAppleField"},"description":"Additional fields to be displayed on the front of the pass."},"auxiliaryStoreIdentifiers":{"type":["null","array"],"items":{"type":"integer","format":"int64"},"description":"Additional App Store identifiers of associated apps, linked in the event guide. Poster event tickets only; not supported on watchOS."},"backFields":{"type":["null","array"],"items":{"description":"Information about a field.","$ref":"#/components/schemas/PassTypeAppleField"},"description":"Fields to be on the back of the pass."},"backgroundColor":{"type":["null","string"],"description":"Background color of the pass, specified as an CSS-style RGB triple."},"barCodeAlternateText":{"type":["null","string"],"description":"Text displayed near the barcode, such as a human-readable version of its data. A Liquid template, not a translatable string."},"barCodeFormat":{"type":["null","string"],"description":"Bar code format. One of: qr, pdf417, aztec, code128, code39, codabar, ean13, i2of5. code39, codabar, ean13 and\ni2of5 need iOS 27; the pass also carries a QR code of the same value for older devices. No bar code is drawn\nwhen `barCodeValue` renders empty."},"barCodeValue":{"type":["null","string"],"description":"Bar code field value (ex: `id.y2.customerId`)."},"beacons":{"type":["null","array"],"items":{"description":"Configuration for a beacon device","$ref":"#/components/schemas/PassTypeAppleBeacon"},"description":"Beacons marking locations where the pass is relevant. At most 10."},"description":{"description":"A simple description of the pass","$ref":"#/components/schemas/PassTypeLocalizedString"},"eventLogoText":{"description":"Text next to the logo on poster event tickets; takes precedence over `logoText`.","$ref":"#/components/schemas/PassTypeLocalizedString"},"expirationDate":{"type":["null","string"],"description":"Date and time when the pass expires, with hours and minutes and optional seconds."},"featuredActions":{"type":["null","array"],"items":{"description":"A featured action card displayed when viewing the pass in the Wallet app (iOS 27+). Each featured action includes an icon, a predefined action type, and a destination.","$ref":"#/components/schemas/PassTypeAppleFeaturedAction"},"description":"Featured actions displayed below the pass in Wallet (iOS 27+). Maximum 2 entries."},"footerBackgroundColor":{"type":["null","string"],"description":"Background color of the footer, as a CSS-style RGB triple such as rgb(100, 10, 110). Poster event tickets only."},"footerFields":{"type":["null","array"],"items":{"description":"Information about a field.","$ref":"#/components/schemas/PassTypeAppleField"},"description":"Fields displayed in the footer of the pass. Used for poster layouts (iOS 27+)."},"foregroundColor":{"type":["null","string"],"description":"Foreground color of the pass, specified as a CSS-style RGB triple."},"groupingIdentifier":{"type":["null","string"],"description":"Identifier grouping related passes (same groupingIdentifier, passTypeIdentifier and type), such as boarding passes for connections on one trip."},"headerFields":{"type":["null","array"],"items":{"description":"Information about a field.","$ref":"#/components/schemas/PassTypeAppleField"},"description":"Fields displayed in the header on the front of the pass. Use sparingly: unlike other fields, they stay visible in a stack of passes."},"images":{"description":"Configuration of image for this pass.","$ref":"#/components/schemas/PassTypeAppleImage"},"labelColor":{"type":["null","string"],"description":"Color of the label text, specified as a CSS-style RGB triple."},"locations":{"type":["null","array"],"items":{"description":"Configuration for a location","$ref":"#/components/schemas/PassTypeAppleLocation"},"description":"Locations where the pass is relevant, such as a store. At most 10."},"logoText":{"description":"Text displayed next to the logo on the pass.","$ref":"#/components/schemas/PassTypeLocalizedString"},"maxDistance":{"type":["null","integer"],"description":"Maximum distance in meters from a relevant location at which the pass is relevant; the smaller of this and the pass's default distance is used.","format":"int32"},"nfc":{"description":"NFC-enabled pass keys support sending reward card information as part of an Apple Pay transaction.","$ref":"#/components/schemas/PassTypeAppleNfc"},"organizationName":{"type":["null","string"],"description":"Display name of the organization that originated and signed the pass."},"primaryFields":{"type":["null","array"],"items":{"description":"Information about a field.","$ref":"#/components/schemas/PassTypeAppleField"},"description":"Fields to be displayed prominently on the front of the pass."},"relevantDate":{"type":["null","string"],"description":"Date and time when the pass becomes relevant, such as a movie's start, with hours and minutes and optional seconds. Recommended for event tickets and boarding passes."},"relevantDates":{"type":["null","array"],"items":{"description":"Configuration for a relevantDates entry. Use `StartDate` alone to let Wallet compute the interval, or with `EndDate` for an explicit one.","$ref":"#/components/schemas/PassTypeAppleRelevantDate"},"description":"An array of date intervals during which the pass is relevant. Supersedes `RelevantDate` when non-empty."},"secondaryFields":{"type":["null","array"],"items":{"description":"Information about a field.","$ref":"#/components/schemas/PassTypeAppleField"},"description":"Fields to be displayed on the front of the pass."},"semantics":{"description":"Semantics configuration for the pass.","$ref":"#/components/schemas/PassTypeAppleSemantics"},"sharing":{"description":"What the Share button of the pass sends. Omitted, a link to the install page of the pass.","$ref":"#/components/schemas/PassTypeAppleSharing"},"summaryFields":{"type":["null","array"],"items":{"description":"Information about a field.","$ref":"#/components/schemas/PassTypeAppleField"},"description":"Up to three values displayed below the barcode on the poster generic layout (iOS 27+). Edited separately from `PrimaryFields`, which stays classic-only."},"suppressHeaderDarkening":{"type":["null","boolean"],"description":"Whether to display the header darkening gradient. Default false. Poster event tickets only."},"suppressStripShine":{"type":["null","boolean"],"description":"A Boolean value that controls whether to display the strip image without a shine effect. The default value is true."},"type":{"type":["null","string"],"description":"Type of pass. One of: generic, boardingPass, coupon, eventTicket, storeCard."},"upcomingPassInformation":{"type":["null","array"],"items":{"description":"Part of the Apple configuration.","$ref":"#/components/schemas/PassTypeAppleUpcomingPassInformation"},"description":"Further events the ticket admits to, each shown as its own entry in the event guide."},"useAutomaticColors":{"type":["null","boolean"],"description":"Whether Wallet computes the foreground and label colors from the background image, ignoring `foregroundColor` and `labelColor`. Poster event tickets only."},"usePosterLayout":{"type":["null","boolean"],"description":"When true, a customer card pass uses the iOS 27+ poster generic layout instead of the standard store card layout."},"voided":{"type":["null","string"],"description":"Indicates the pass is void, such as a redeemed one-time coupon."}},"additionalProperties":false,"description":"Configuration of an Apple pass. See [Apple's PassKit bundle\nreference](https://developer.apple.com/library/archive/documentation/UserExperience/Reference/PassKit_Bundle/Chapters/TopLevel.html)."},"PassTypeAppleActionLinks":{"type":"object","properties":{"accessibilityURL":{"type":["null","string"],"description":"A URL that links to your accessiblity content, or the venue's. Poster event tickets only."},"addOnURL":{"type":["null","string"],"description":"A URL that can link to experiences that someone can add to the pass. Poster event tickets only."},"bagPolicyURL":{"type":["null","string"],"description":"A URL that links to the bag policy of the venue for the event that the pass represents. Poster event tickets only."},"contactVenueEmail":{"type":["null","string"],"description":"The preferred email address to contact the venue, event, or issuer. Poster event tickets only."},"contactVenuePhoneNumber":{"type":["null","string"],"description":"The phone number for contacting the venue, event, or issuer. Poster event tickets only."},"contactVenueWebsite":{"type":["null","string"],"description":"A URL that links to the website of the venue, event, or issuer. Poster event tickets only."},"directionsInformationURL":{"type":["null","string"],"description":"A URL that links to directions for the event. Poster event tickets only."},"merchandiseURL":{"type":["null","string"],"description":"A URL that links to a site for ordering merchandise for the event that the pass represents. Poster event tickets only."},"orderFoodURL":{"type":["null","string"],"description":"A URL that links to the food ordering page for the event that the pass represents. Poster event tickets only."},"parkingInformationURL":{"type":["null","string"],"description":"A URL that links to parking information for the event that the pass represents. Poster event tickets only."},"purchaseParkingURL":{"type":["null","string"],"description":"A URL that links to a site to purchase parking for the event that the pass represents. Poster event tickets only."},"sellURL":{"type":["null","string"],"description":"A URL that links to the selling flow for the ticket the pass represents. Poster event tickets only."},"transferURL":{"type":["null","string"],"description":"A URL that links to the transferring flow for the ticket that the pass represents. Poster event tickets only."},"managementURL":{"type":["null","string"],"description":"A URL that links to the site for managing the ticket that the pass represents."},"transitInformationURL":{"type":["null","string"],"description":"A URL that links to information about transit options in the area of the event that the pass represents. Poster event tickets only."}},"additionalProperties":false,"description":"Part of the Apple configuration."},"PassTypeAppleField":{"type":"object","properties":{"changeMessage":{"description":"Alert text shown when the pass is updated, containing `%@` for the field's new value (for example <c>Gate\nchanged to %@.</c>). Without it, the user is not notified of changes.","$ref":"#/components/schemas/PassTypeLocalizedString"},"type":{"type":["null","string"],"description":"Kind of field. One of: number, date. Omitted for a plain text field."},"key":{"type":["null","string"],"description":"The key must be unique within the scope of the entire pass. For example, 'departure-gate.'."},"label":{"description":"Label text for the field.","$ref":"#/components/schemas/PassTypeLocalizedString"},"textAlignment":{"type":["null","string"],"description":"Text alignment for the field. One of: left, center, right, natural."},"currencyCode":{"type":["null","string"],"description":"ISO 4217 currency code for a number field. When set, Apple Wallet formats the value as a currency and ignores Neo.Web.Api.Wallet.Controllers.PassTypes.PassTypeAppleField.NumberStyle."},"numberStyle":{"type":["null","string"],"description":"Number style for a number field. One of: decimal, percent, scientific, spellOut."},"dateStyle":{"type":["null","string"],"description":"Date part style for a date field. One of: none, short, medium, long, full."},"timeStyle":{"type":["null","string"],"description":"Time part style for a date field. One of: none, short, medium, long, full."},"isRelative":{"type":["null","boolean"],"description":"Show the date field as a relative value such as \"tomorrow\" when a date or time style is set."},"ignoresTimeZone":{"type":["null","boolean"],"description":"Keep the value's own time zone for a date field when a date or time style is set."},"automaticallyDetectDataDetectorTypes":{"type":["null","boolean"],"description":"Whether iOS turns phone numbers, links, addresses and dates found in the value into tappable links. Omitted, it\ndoes; `false` shows the value as plain text. Applies to a field with no Neo.Web.Api.Wallet.Controllers.PassTypes.PassTypeAppleField.Type."},"value":{"description":"Value of the field, for example 42. May contain HTML links: only the <a> tag and its href attribute are supported.","$ref":"#/components/schemas/PassTypeLocalizedString"}},"additionalProperties":false,"description":"Information about a field."},"PassTypeLocalizedString":{"type":"object","properties":{"value":{"type":["null","string"],"description":"Wording in the tenant's default language, used for any language Neo.Web.Api.Wallet.Controllers.PassTypes.PassTypeLocalizedString.Values does not cover."},"values":{"type":["null","object"],"additionalProperties":{"type":"string"},"description":"Wording per language, keyed by ISO 639-1 code with an optional region (`en`, `fr-FR`). A missing language falls back to Neo.Web.Api.Wallet.Controllers.PassTypes.PassTypeLocalizedString.Value."}},"additionalProperties":false,"description":"A value shown to the holder, with one entry per language."},"PassTypeAppleBeacon":{"type":"object","properties":{"label":{"description":"Text displayed on the lock screen when the pass is relevant, such as 'Store nearby on 1st and Main.'","$ref":"#/components/schemas/PassTypeLocalizedString"},"major":{"type":["null","integer"],"description":"Major identifier of a Bluetooth Low Energy location beacon.","format":"int32"},"minor":{"type":["null","integer"],"description":"Minor identifier of a Bluetooth Low Energy location beacon.","format":"int32"},"uuid":{"type":["null","string"],"description":"Unique identifier of a Bluetooth Low Energy location beacon."}},"additionalProperties":false,"description":"Configuration for a beacon device"},"PassTypeAppleFeaturedAction":{"type":"object","properties":{"icon":{"type":["null","string"],"description":"SF Symbol name of the card's icon; prefer circular, filled variants. Omitted, a default icon for the action type is used."},"type":{"type":["null","string"],"description":"The predefined action type that determines the label and behavior of the featured action card."},"url":{"type":["null","string"],"description":"URL opened when the action is tapped: a website, a deep link into your app, or a `tel:` URI for `call` actions."},"placeIdentifier":{"type":["null","string"],"description":"The Apple Maps Place ID opened by `place` actions."}},"additionalProperties":false,"description":"A featured action card displayed when viewing the pass in the Wallet app (iOS 27+). Each featured action includes an icon, a predefined action type, and a destination."},"PassTypeAppleImage":{"type":"object","properties":{"artWork":{"type":["null","string"],"description":"Poster background image (artwork.png) for poster event tickets (iOS 18+) and poster generic passes (iOS 27+).\nSetting it on a generic pass activates the posterGeneric layout, on an event ticket posterEventTicket. Falls\nback to the strip image on older devices. 358x448 pts."},"background":{"type":["null","string"],"description":"Blurred background (background.png) behind the front of non-poster event tickets, 343 x 503 points. Poster layouts use ArtWork instead."},"footer":{"type":["null","string"],"description":"The image displayed on the front of the pass near the barcode. The allotted space is 858 x 45 points."},"icon":{"type":["null","string"],"description":"The pass's icon, shown in notifications, emails with a pass attached and on the lock screen with a shine effect and rounded corners. 87 x 87 points."},"logo":{"type":["null","string"],"description":"Image at the top left of the front, in a 480 x 150 points space; usually narrower."},"primaryLogo":{"type":["null","string"],"description":"Top-left logo for poster layouts (posterGeneric iOS 27+ and posterEventTicket iOS 18+). 126x30 pts."},"reuseExisting":{"type":["null","boolean"],"description":"For an upcoming event's header image or venue map: reuse the image the pass already carries rather than download one. `urls` takes precedence when set."},"secondaryLogo":{"type":["null","string"],"description":"Logo image that is displayed on bottom right footer inset of the pass. Ticket issuer or event company logo 135x12 pts."},"stampImages":{"type":["null","array"],"items":{"description":"The Apple images a stamp card shows at one exact stamp count.","$ref":"#/components/schemas/PassTypeAppleStampImage"},"description":"Per-stamp-count overrides of `Strip` and `ArtWork`, for a stamp card."},"strip":{"type":["null","string"],"description":"Image behind the primary fields: 1125 x 296 points for event tickets, 1125 x 432 for gift cards and coupons,\n1125 x 369 otherwise. Older hardware: 960 x 252, 960 x 330 (square barcode on 3.5 inch screens) or 960 x 369."},"thumbnail":{"type":["null","string"],"description":"Additional image on the front, such as a cardholder picture, 270 x 270 points. Aspect ratio between 2:3 and 3:2, otherwise cropped."},"urls":{"type":["null","array"],"items":{"description":"Part of the Apple configuration.","$ref":"#/components/schemas/PassTypeAppleImageUrl"},"description":"For an upcoming event's header image or venue map: the remote copies of the image the device downloads."},"venueMap":{"type":["null","string"],"description":"Issuer-provided static map of the venue, which will be shown in the event guide."}},"additionalProperties":false,"description":"Image configuration for the pass"},"PassTypeAppleStampImage":{"type":"object","properties":{"artWork":{"type":["null","string"],"description":"Poster artwork, used only when the template enables the poster layout."},"count":{"type":["null","integer"],"description":"The stamp count these images are shown at.","format":"int32"},"strip":{"type":["null","string"],"description":"Strip image for the classic store-card layout."}},"additionalProperties":false,"description":"The Apple images a stamp card shows at one exact stamp count."},"PassTypeAppleImageUrl":{"type":"object","properties":{"scale":{"type":["null","number"],"description":"The scale of the image. If unspecified, defaults to 1.","format":"double"},"sha256":{"type":["null","string"],"description":"(Required) The SHA256 hash of the image."},"size":{"type":["null","string"],"description":"Size of the image asset in bytes. The maximum allowed size is 2 megabytes."},"url":{"type":["null","string"],"description":"URL of the image to download. Required; https only."}},"additionalProperties":false,"description":"Part of the Apple configuration."},"PassTypeAppleLocation":{"type":"object","properties":{"altitude":{"type":["null","string"],"description":"Altitude, in meters, of the location."},"label":{"description":"Text displayed on the lock screen when the pass is relevant, such as 'Store nearby on 1st and Main.'","$ref":"#/components/schemas/PassTypeLocalizedString"},"latitude":{"type":["null","string"],"description":"Latitude, in degrees, of the location."},"longitude":{"type":["null","string"],"description":"Longitude, in degrees, of the location."}},"additionalProperties":false,"description":"Configuration for a location"},"PassTypeAppleNfc":{"type":"object","properties":{"message":{"type":["null","string"],"description":"Payload sent to the Apple Pay terminal, at most 64 bytes (longer is truncated)."},"requiresAuthentication":{"type":["null","boolean"],"description":"Whether the NFC pass requires authentication for each use. Default false."}},"additionalProperties":false,"description":"Information about the NFC payload passed to an Apple Pay terminal. It is encrypted with the tenant's NFC key; without one, passes are issued without NFC."},"PassTypeAppleRelevantDate":{"type":"object","properties":{"endDate":{"type":["null","string"],"description":"Template-evaluated ISO-8601 date string for the end of the relevancy interval. Optional."},"startDate":{"type":["null","string"],"description":"Template-evaluated ISO-8601 date string for the start of the relevancy interval."}},"additionalProperties":false,"description":"Configuration for a relevantDates entry. Use `StartDate` alone to let Wallet compute the interval, or with `EndDate` for an explicit one."},"PassTypeAppleSemantics":{"type":"object","properties":{"additionalTicketAttributes":{"type":["null","string"],"description":"Additional ticket attributes that other tags or keys in the pass don't include."},"admissionLevel":{"type":["null","string"],"description":"The level of admission the ticket provides, such as general admission, VIP, and so forth."},"admissionLevelAbbreviation":{"type":["null","string"],"description":"An abbreviation of the level of admission the ticket provides, such as GA or VIP."},"albumIDs":{"type":["null","array"],"items":{"type":"string"},"description":"An array of the Apple Music persistent ID for each album corresponding to the event, in decreasing order of significance."},"artistIDs":{"type":["null","array"],"items":{"type":"string"},"description":"An array of the Apple Music persistent ID for each artist performing at the event, in decreasing order of significance."},"attendeeName":{"type":["null","string"],"description":"The name of the person the ticket grants admission to."},"awayTeamAbbreviation":{"type":["null","string"],"description":"The unique abbreviation of the away team's name. Use this key only for a sports event ticket."},"awayTeamLocation":{"type":["null","string"],"description":"The home location of the away team. Use this key only for a sports event ticket."},"awayTeamName":{"type":["null","string"],"description":"The name of the away team. Use this key only for a sports event ticket."},"balance":{"description":"The current balance redeemable with the pass. Use this key only for a store card pass.","$ref":"#/components/schemas/PassTypeAppleCurrencyAmount"},"duration":{"type":["null","string"],"description":"The duration of the event or transit journey, in seconds. Sent as a string: whole seconds or a Liquid template."},"entranceDescription":{"type":["null","string"],"description":"The long description of the entrance information."},"eventLiveMessage":{"type":["null","string"],"description":"The message Wallet shows in the Lock Screen Live Activity when the event starts."},"eventEndDate":{"type":["null","string"],"description":"The date and time the event ends. ISO 8601 date as string."},"eventName":{"description":"The full name of the event, such as the title of a movie.","$ref":"#/components/schemas/PassTypeLocalizedString"},"eventStartDate":{"type":["null","string"],"description":"The date and time the event starts. ISO 8601 date as string."},"eventStartDateInfo":{"description":"An object that provides information for the date and time the event starts. See SemanticTagType.EventDateInfo (iOS 18.0+).","$ref":"#/components/schemas/PassTypeAppleEventDateInfoValue"},"eventType":{"type":["null","string"],"description":"Type of event: PKEventTypeGeneric, PKEventTypeLivePerformance, PKEventTypeMovie, PKEventTypeSports,\nPKEventTypeConference, PKEventTypeConvention, PKEventTypeWorkshop or PKEventTypeSocialGathering."},"genre":{"type":["null","string"],"description":"The genre of the performance, such as classical."},"homeTeamAbbreviation":{"type":["null","string"],"description":"The unique abbreviation of the home team's name. Use this key only for a sports event ticket."},"homeTeamLocation":{"type":["null","string"],"description":"The home location of the home team. Use this key only for a sports event ticket."},"homeTeamName":{"type":["null","string"],"description":"The name of the home team. Use this key only for a sports event ticket."},"leagueAbbreviation":{"type":["null","string"],"description":"The abbreviated league name for a sports event. Use this key only for a sports event ticket."},"leagueName":{"type":["null","string"],"description":"The unabbreviated league name for a sports event. Use this key only for a sports event ticket."},"performerNames":{"type":["null","array"],"items":{"type":"string"},"description":"An array of the full names of the performers and opening acts at the event, in decreasing order of significance."},"playlistIDs":{"type":["null","array"],"items":{"type":"string"},"description":"An array of the Apple Music persistent ID for each playlist corresponding to the event, in decreasing order of significance."},"seats":{"type":["null","array"],"items":{"description":"Identification of a seat for a transit journey or an event. See SemanticTagType.Seat.","$ref":"#/components/schemas/PassTypeAppleSeat"},"description":"An array of objects that represent the details for each seat at an event or on a transit journey. See SemanticTagType.Seat."},"silenceRequested":{"type":["null","string"],"description":"Whether the person's device stays silent during an event or transit journey (the system may override the\nperiod). Sent as a string: `true`, `false` or a Liquid template."},"sportName":{"type":["null","string"],"description":"The commonly used name of the sport. Use this key only for a sports event ticket."},"tailgatingAllowed":{"type":["null","string"],"description":"A Boolean value that indicates whether tailgating is allowed at the event. Sent as a string: `true`, `false` or a Liquid template."},"totalPrice":{"description":"The total price for the pass. Use this key for any pass type.","$ref":"#/components/schemas/PassTypeAppleCurrencyAmount"},"venueBoxOfficeOpenDate":{"type":["null","string"],"description":"The date when the box office opens (ISO 8601)."},"venueCloseDate":{"type":["null","string"],"description":"The date when the venue closes (ISO 8601)."},"venueDoorsOpenDate":{"type":["null","string"],"description":"The date the doors to the venue open (ISO 8601)."},"venueEntrance":{"type":["null","string"],"description":"The full name of the entrance, such as Gate A, to use to gain access to the ticketed event."},"venueEntranceDoor":{"type":["null","string"],"description":"The venue entrance door."},"venueEntranceGate":{"type":["null","string"],"description":"The venue entrance gate."},"venueEntrancePortal":{"type":["null","string"],"description":"The venue entrance portal."},"venueFanZoneOpenDate":{"type":["null","string"],"description":"The date the fan zone opens (ISO 8601)."},"venueGatesOpenDate":{"type":["null","string"],"description":"The date the gates to the venue open (ISO 8601)."},"venueLocation":{"description":"An object that represents the geographic coordinates of the venue. See SemanticTagType.Location.","$ref":"#/components/schemas/PassTypeLocation"},"venueName":{"type":["null","string"],"description":"The full name of the venue."},"venueOpenDate":{"type":["null","string"],"description":"The date when the venue opens (ISO 8601). Use this if none of the more specific venue open tags apply."},"venueParkingLotsOpenDate":{"type":["null","string"],"description":"The date the parking lots open (ISO 8601)."},"venuePhoneNumber":{"type":["null","string"],"description":"The phone number for inquiries about the venue's ticketed event."},"venueRegionName":{"type":["null","string"],"description":"The name of the city or hosting region of the venue."},"venueRoom":{"type":["null","string"],"description":"The full name of the room where the ticketed event is to take place."},"wifiAccess":{"type":["null","array"],"items":{"description":"An object that contains information required to connect to a Wi-Fi network. See SemanticTagType.WifiNetwork.","$ref":"#/components/schemas/PassTypeAppleWifiNetwork"},"description":"Wi-Fi networks associated with the event, such as the network name and password of a conference. See SemanticTagType.WifiNetwork."}},"additionalProperties":false,"description":"Apple Wallet semantic tags of the pass, as documented in Apple's SemanticTags specification."},"PassTypeAppleCurrencyAmount":{"type":"object","properties":{"amount":{"type":["null","string"],"description":"Amount in currency units."},"currencyCode":{"type":["null","string"],"description":"Three-letter currency code (ISO 4217), e.g., \"USD\"."}},"additionalProperties":false,"description":"An amount of money and its currency. See SemanticTagType.CurrencyAmount."},"PassTypeAppleEventDateInfoValue":{"type":"object","properties":{"date":{"type":["null","string"],"description":"The date (ISO 8601 date as string)."},"ignoreTimeComponents":{"type":["null","string"],"description":"A Boolean value that indicates whether the system ignores the time components of the date. Sent as a string: `true`, `false` or a Liquid template."},"timeZone":{"type":["null","string"],"description":"The time zone to display in the date. Uses IANA time zone database identifiers (e.g. \"America/Los_Angeles\")."},"unannounced":{"type":["null","string"],"description":"A Boolean value that indicates whether the date of the event is announced. Sent as a string: `true`, `false` or a Liquid template."},"undetermined":{"type":["null","string"],"description":"A Boolean value that indicates whether the date of the event is determined. Sent as a string: `true`, `false` or a Liquid template."}},"additionalProperties":false,"description":"Date and time of an event. See SemanticTagType.EventDateInfo (iOS 18+)."},"PassTypeAppleSeat":{"type":"object","properties":{"seatAisle":{"type":["null","string"],"description":"The aisle that contains the seat."},"seatDescription":{"type":["null","string"],"description":"A description of the seat, such as 'A flat bed seat'."},"seatIdentifier":{"type":["null","string"],"description":"The identifier code for the seat."},"seatLevel":{"type":["null","string"],"description":"The level that contains the seat."},"seatNumber":{"type":["null","string"],"description":"The number of the seat."},"seatRow":{"type":["null","string"],"description":"The row that contains the seat."},"seatSection":{"type":["null","string"],"description":"The section that contains the seat."},"seatSectionColor":{"type":["null","string"],"description":"A color associated with identifying the seat, specified as a CSS-style RGB triple, such as rgb(23, 187, 82)."},"seatType":{"type":["null","string"],"description":"The type of seat, such as 'Reserved seating'."}},"additionalProperties":false,"description":"Identification of a seat for a transit journey or an event. See SemanticTagType.Seat."},"PassTypeLocation":{"type":"object","properties":{"latitude":{"type":["null","string"],"description":"Latitude in degrees."},"longitude":{"type":["null","string"],"description":"Longitude in degrees."}},"additionalProperties":false,"description":"An object that represents the coordinates of a location. See SemanticTagType.Location."},"PassTypeAppleWifiNetwork":{"type":"object","properties":{"password":{"type":["null","string"],"description":"Wi-Fi password (if any)."},"ssid":{"type":["null","string"],"description":"Wi-Fi SSID (network name)."}},"additionalProperties":false,"description":"An object that contains information required to connect to a Wi-Fi network. See SemanticTagType.WifiNetwork."},"PassTypeAppleSharing":{"type":"object","properties":{"method":{"type":["null","string"],"description":"What the Share button sends. One of: url (the text followed by the URL, the default), pkpass (the .pkpass file), disabled (no Share button)."},"url":{"type":["null","string"],"description":"URL shared by the `url` method, a template rendered with the pass's values. Omitted, the install page of the pass."},"text":{"type":["null","string"],"description":"Text sent ahead of the URL with the `url` method, a template rendered with the pass's values. Not translatable. Shown by some share targets, always included when the link is copied."}},"additionalProperties":false,"description":"What the Share button of an Apple pass sends."},"PassTypeAppleUpcomingPassInformation":{"type":"object","properties":{"actionLinks":{"description":"A collection of URLs used to populate UI elements in the details view.","$ref":"#/components/schemas/PassTypeAppleActionLinks"},"additionalInfoFields":{"type":["null","array"],"items":{"description":"Information about a field.","$ref":"#/components/schemas/PassTypeAppleField"},"description":"The fields of information displayed on the Additional Info section below a pass."},"backFields":{"type":["null","array"],"items":{"description":"Information about a field.","$ref":"#/components/schemas/PassTypeAppleField"},"description":"The fields of information displayed on the details view of the upcoming pass information entry."},"dateInformation":{"description":"Information about the start and end time of the upcoming pass information entry. If omitted, the entry is labeled as TBD.","$ref":"#/components/schemas/PassTypeAppleDateInformation"},"identifier":{"type":["null","string"],"description":"Required. Unique identifier of the upcoming pass information entry."},"images":{"description":"A collection of image names used to populate images in the details view.","$ref":"#/components/schemas/PassTypeAppleImages"},"isActive":{"type":["null","string"],"description":"Indicates whether the upcoming pass information entry is currently active. The default value is false."},"name":{"type":["null","string"],"description":"(Required) The name of the upcoming pass information entry. A Liquid template, not a translatable string: one value for every language."},"semantics":{"description":"The semantic, machine-readable metadata about the upcoming pass information entry.","$ref":"#/components/schemas/PassTypeAppleSemantics"},"type":{"type":["null","string"],"description":"(Required) The type of upcoming pass information entry. Value: event."}},"additionalProperties":false,"description":"Part of the Apple configuration."},"PassTypeAppleDateInformation":{"type":"object","properties":{"date":{"type":["null","string"],"description":"The start date of the upcoming pass information entry. If omitted, the entry lists the Time and Date as TBD."},"ignoreTimeComponents":{"type":["null","boolean"],"description":"Indicates whether the entry should ignore the time components of the date."},"isAllDay":{"type":["null","boolean"],"description":"Indicates whether the entry spans the entire day and that the time components should be ignored."},"isUnannounced":{"type":["null","boolean"],"description":"Indicates whether the provided time of the event hasn't been announced (commonly referred to as TBA)."},"isUndetermined":{"type":["null","boolean"],"description":"Indicates whether the provided time of the event hasn't been determined (commonly referred to as TBD)."},"timeZone":{"type":["null","string"],"description":"The time zone to adjust the date into. If omitted, the entry uses the current time zone of the device."}},"additionalProperties":false,"description":"Part of the Apple configuration."},"PassTypeAppleImages":{"type":"object","properties":{"headerImage":{"description":"The name of the image file used for the header image on the details screen. This can be a remote asset.","$ref":"#/components/schemas/PassTypeAppleImage"},"venueMap":{"description":"The name of the image file used for the venue map in the event guide for each upcoming pass information entry.\nThis can be a remote asset and is available for event entries.","$ref":"#/components/schemas/PassTypeAppleImage"}},"additionalProperties":false,"description":"Part of the Apple configuration."},"PassTypeGoogle":{"type":"object","properties":{"accountId":{"type":["null","string"],"description":"The loyalty account identifier. Recommended maximum 20 characters. Applies to: customerCard, stampCard."},"accountIdLabel":{"description":"The account ID label, such as \"Member ID.\" Recommended maximum 15 characters. Applies to: customerCard, stampCard.","$ref":"#/components/schemas/PassTypeLocalizedString"},"accountName":{"type":["null","string"],"description":"The loyalty account holder name, such as \"John Smith.\" Recommended maximum 20 characters. Applies to: customerCard, stampCard."},"accountNameLabel":{"description":"The account name label, such as \"Member Name.\" Recommended maximum 15 characters. Applies to: customerCard, stampCard.","$ref":"#/components/schemas/PassTypeLocalizedString"},"additionalLinks":{"type":["null","array"],"items":{"description":"Part of the Google configuration.","$ref":"#/components/schemas/PassTypeGoogleUri"},"description":"Links module data."},"allowBarCodeRedemption":{"type":["null","boolean"],"description":"Whether the merchant supports redeeming the gift card by barcode. If true, the app displays a barcode on the\ndetails screen; if false, `barcode` is not displayed. Applies to: giftCard."},"appLinks":{"description":"Optional information about the partner app link.","$ref":"#/components/schemas/PassTypeGoogleAppLinkInfos"},"balance":{"description":"The card's monetary balance. Applies to: giftCard.","$ref":"#/components/schemas/PassTypeGoogleMoney"},"balanceUpdateTime":{"type":["null","string"],"description":"When the balance was last updated; defaults to the current time when the balance is updated without it. Applies to: giftCard."},"barCode":{"description":"The barcode type and value.","$ref":"#/components/schemas/PassTypeGoogleBarCode"},"cardNumber":{"type":["null","string"],"description":"The card's number. Applies to: giftCard."},"cardNumberLabel":{"type":["null","string"],"description":"Label shown with the card number. Applies to: giftCard."},"confirmationCode":{"type":["null","string"],"description":"Confirmation code of the event reservation (order, confirmation or reservation number). Applies to: eventTicket."},"confirmationCodeLabel":{"type":["null","string"],"description":"Label for the confirmation code. Each option maps to localized strings. Not combinable with\n`customConfirmationCodeLabel`; when neither is set, \"Confirmation Code\" is used. Applies to: eventTicket.\nOne of: CONFIRMATION_CODE_LABEL_UNSPECIFIED, CONFIRMATION_CODE, CONFIRMATION_NUMBER, ORDER_NUMBER,\nRESERVATION_NUMBER."},"countryCode":{"type":["null","string"],"description":"ISO 3166-1 alpha-2 country code used to display and localize the pass. Applies to: customerCard, eventTicket, giftCard, offer, stampCard."},"customConfirmationLabel":{"description":"Custom label for the confirmation code, for when the default or a `confirmationCodeLabel` option is not\nsufficient. Not combinable with `confirmationCodeLabel`. Applies to: eventTicket.","$ref":"#/components/schemas/PassTypeLocalizedString"},"dateTimeDetails":{"description":"Date time details of the pass. Applies to: eventTicket.","$ref":"#/components/schemas/PassTypeGoogleDateTimeDetails"},"details":{"description":"The details of the offer. Applies to: offer.","$ref":"#/components/schemas/PassTypeLocalizedString"},"disableExpirationNotification":{"type":["null","boolean"],"description":"Indicates whether Google Wallet should suppress expiration notifications for the offer. Applies to: offer."},"discoverableProgram":{"description":"Information about how the class may be discovered and instantiated from within the Google Wallet app. Applies to: customerCard, stampCard.","$ref":"#/components/schemas/PassTypeGoogleDiscoverableProgram"},"eventId":{"type":["null","string"],"description":"ID of the event, unique per event in an account (at most 64 characters). Groups tickets the user saved for the\nsame event; when omitted, the platform groups by other data, possibly unstable. With one class per event, use\nthe classId (with or without the issuer ID). Avoid collisions, which group tickets that should not be grouped.\nApplies to: eventTicket."},"eventName":{"description":"The name of the event, such as \"LA Dodgers at SF Giants\". Applies to: eventTicket.","$ref":"#/components/schemas/PassTypeLocalizedString"},"eventNumber":{"type":["null","string"],"description":"The card's event number, an optional field used by some gift cards. Applies to: giftCard."},"eventNumberLabel":{"description":"The label to display for event number, such as \"Target Event #\". Applies to: giftCard.","$ref":"#/components/schemas/PassTypeLocalizedString"},"expiryNotification":{"type":["null","boolean"],"description":"Indicates that the issuer would like GooglePay to send expiry notifications 2 days prior to the card expiration. Applies to: generic."},"faceValue":{"description":"The face value of the ticket, matching what would be printed on a physical version of the ticket. Applies to: eventTicket.","$ref":"#/components/schemas/PassTypeGoogleMoney"},"finePrint":{"description":"The fine print or terms of the pass, such as \"20% off any t-shirt at Adam's Apparel.\" Applies to: eventTicket, offer.","$ref":"#/components/schemas/PassTypeLocalizedString"},"gate":{"description":"Gate seat information. Applies to: eventTicket.","$ref":"#/components/schemas/PassTypeGoogleGate"},"header":{"description":"Required. The title of the pass, such as \"50% off coupon\" or \"Library card\" or \"Voucher\". This field is required\nand appears in the title row of the pass detail view. Applies to: generic.","$ref":"#/components/schemas/PassTypeLocalizedString"},"helpUrl":{"description":"The help link for the offer, such as http://myownpersonaldomain.com/help. Applies to: offer.","$ref":"#/components/schemas/PassTypeGoogleUri"},"heroImage":{"type":["null","string"],"description":"Optional banner image displayed on the front of the card. If none is present, nothing will be displayed. The image will display at 100% width."},"hexBackgroundColor":{"type":["null","string"],"description":"Background color as `#rrggbb` or `#rgb`. Defaults to the dominant color of the hero image, else of the logo."},"homepage":{"description":"URI of your application's home page, shown as a link like `linksModuleData`. Applies to: customerCard, eventTicket, giftCard, offer, stampCard.","$ref":"#/components/schemas/PassTypeGoogleUri"},"identifier":{"type":["null","string"],"description":"Name of the Google Wallet class the passes belong to. Advanced: leave null unless the class already exists in\nGoogle Wallet, for example when passes are imported from another system."},"issuerName":{"description":"The issuer name. Recommended maximum 20 characters. Applies to: customerCard, eventTicket, giftCard, offer, stampCard.","$ref":"#/components/schemas/PassTypeLocalizedString"},"locations":{"type":["null","array"],"items":{"description":"An object that represents the coordinates of a location. See SemanticTagType.Location.","$ref":"#/components/schemas/PassTypeLocation"},"description":"The list of locations where the object can be used. The platform uses this information to trigger geolocated notifications to users."},"logo":{"type":["null","string"],"description":"Logo shown in the card detail view (upper left) and the list view; without it, the first letter of cardTitle. Applies to: eventTicket, generic."},"loyaltyPoints":{"description":"The loyalty reward points label, balance, and type. Applies to: customerCard, stampCard.","$ref":"#/components/schemas/PassTypeGoogleLoyaltyPoint"},"merchantName":{"description":"Merchant name, such as \"Adam's Apparel\". The app may display an ellipsis after the first 20 characters to ensure\nfull string is displayed on smaller screens. Applies to: giftCard.","$ref":"#/components/schemas/PassTypeLocalizedString"},"messages":{"type":["null","array"],"items":{"description":"Part of the Google configuration.","$ref":"#/components/schemas/PassTypeGoogleMessage"},"description":"Messages displayed in the app to all users of this object. At most 10."},"multipleDevicesAndHoldersAllowedStatus":{"type":["null","string"],"description":"Identifies whether multiple users and devices will save the same object referencing this class. One of: multipleHolder, oneUserAllDevices, oneUserOneDevice."},"screenshotEligibility":{"type":["null","string"],"description":"Whether the holder can take a screenshot of the pass in Google Wallet on Android. One of: unspecified, eligible, ineligible."},"nfcConstraints":{"type":["null","array"],"items":{"type":"string"},"description":"What the phone must not hand out over NFC while the pass is open. Each one of: blockPayment, blockClosedLoopTransit."},"grouping":{"description":"How passes are grouped together in Google Wallet.","$ref":"#/components/schemas/PassTypeGoogleGrouping"},"imageModule":{"description":"An image shown at full width among the details of the pass.","$ref":"#/components/schemas/PassTypeGoogleImageModule"},"pin":{"type":["null","string"],"description":"The card's PIN. Applies to: giftCard."},"pinLabel":{"description":"The label to display for the PIN, such as \"4-digit PIN\". Applies to: giftCard.","$ref":"#/components/schemas/PassTypeLocalizedString"},"programLogo":{"type":["null","string"],"description":"Required. The logo of the loyalty program or company. This logo is displayed in both the details and list views of the app. Applies to: customerCard, giftCard, stampCard."},"programName":{"description":"The program name, such as \"Adam's Apparel\". The app may display an ellipsis after the first 20 characters to\nensure full string is displayed on smaller screens. Applies to: customerCard, stampCard.","$ref":"#/components/schemas/PassTypeLocalizedString"},"provider":{"description":"The offer provider (either the aggregator name or merchant name). Recommended maximum 12 characters. Applies to: offer.","$ref":"#/components/schemas/PassTypeLocalizedString"},"redemptionChannel":{"type":["null","string"],"description":"The redemption channels applicable to this offer. Applies to: offer. One of: REDEMPTION_CHANNEL_UNSPECIFIED, INSTORE, ONLINE, BOTH, TEMPORARY_PRICE_REDUCTION."},"rewardsTier":{"type":["null","string"],"description":"The rewards tier, such as \"Gold\" or \"Platinum.\" Recommended maximum 7 characters. Applies to: customerCard, stampCard."},"rewardsTierLabel":{"description":"The rewards tier label, such as \"Rewards Tier.\" Recommended maximum 9 characters. Applies to: customerCard, stampCard.","$ref":"#/components/schemas/PassTypeLocalizedString"},"row":{"description":"Row seat information. Applies to: eventTicket.","$ref":"#/components/schemas/PassTypeGoogleRow"},"seat":{"description":"Seat information. Applies to: eventTicket.","$ref":"#/components/schemas/PassTypeGoogleSeat"},"secondaryLoyaltyPoints":{"description":"The secondary loyalty reward points label, balance, and type. Shown in addition to the primary loyalty points. Applies to: customerCard, stampCard.","$ref":"#/components/schemas/PassTypeGoogleLoyaltyPoint"},"secondaryRewardsTier":{"type":["null","string"],"description":"The secondary rewards tier, such as \"Gold\" or \"Platinum.\". Applies to: customerCard, stampCard."},"secondaryRewardsTierLabel":{"description":"The secondary rewards tier label, such as \"Rewards Tier.\". Applies to: customerCard, stampCard.","$ref":"#/components/schemas/PassTypeLocalizedString"},"section":{"description":"Section seat information. Applies to: eventTicket.","$ref":"#/components/schemas/PassTypeGoogleSection"},"securityAnimation":{"type":["null","string"],"description":"Security animation rendered on pass details. One of: unspecified, foilShimmer."},"shortTitle":{"description":"A shortened version of the title of the offer, such as \"20% off,\" shown to users as a quick reference to the\noffer contents. Recommended maximum 20 characters. Applies to: offer.","$ref":"#/components/schemas/PassTypeLocalizedString"},"smartTap":{"description":"Identifies whether this class supports Smart Tap.","$ref":"#/components/schemas/PassTypeGoogleSmartTap"},"stampImages":{"type":["null","array"],"items":{"description":"The Google image a stamp card shows at one exact stamp count.","$ref":"#/components/schemas/PassTypeGoogleStampImage"},"description":"The hero image to show at each stamp count. The entry matching the holder's current count replaces the class-level hero image. Applies to: stampCard."},"state":{"type":["null","string"],"description":"State of the object, which decides how the app displays it (an inactive object moves to \"Expired passes\"). One of: ACTIVE, COMPLETED, EXPIRED, INACTIVE."},"subheader":{"description":"The title label of the pass, such as location where this pass can be used. Appears right above the title in the title row in the pass detail view. Applies to: generic.","$ref":"#/components/schemas/PassTypeLocalizedString"},"templateOverride":{"description":"Which values the card shows where, in place of Google's default layout.","$ref":"#/components/schemas/PassTypeGoogleTemplateOverride"},"texts":{"type":["null","array"],"items":{"description":"Part of the Google configuration.","$ref":"#/components/schemas/PassTypeGoogleText"},"description":"Text module data."},"ticketHolderName":{"type":["null","string"],"description":"Name of the ticket holder, if the ticket is assigned to a person. E.g. \"John Doe\" or \"Jane Doe\". Applies to: eventTicket."},"ticketNumber":{"type":["null","string"],"description":"The number of the ticket. This can be a unique identifier across all tickets in an issuer's system, all tickets\nfor the event (e.g. XYZ1234512345), or all tickets in the order (1, 2, 3, etc.). Applies to: eventTicket."},"ticketType":{"description":"The type of the ticket, such as \"Adult\" or \"Child\", or \"VIP\" or \"Standard\". Applies to: eventTicket.","$ref":"#/components/schemas/PassTypeLocalizedString"},"title":{"description":"The title of the offer, such as \"20% off any t-shirt.\" Recommended maximum 60 characters. Applies to: generic, offer.","$ref":"#/components/schemas/PassTypeLocalizedString"},"titleImage":{"type":["null","string"],"description":"The title image of the offer. This image is displayed in both the details and list views of the app. Applies to: offer."},"upcomingNotification":{"type":["null","boolean"],"description":"Indicates that the issuer would like GooglePay send an upcoming card validity notification 1 day before card becomes valid/usable. Applies to: generic."},"validTimeInterval":{"description":"The time period this object will be active and object can be used. An object's state will be changed to expired when this time period has passed.","$ref":"#/components/schemas/PassTypeGoogleTimeInterval"},"valueAddedOpportunities":{"type":["null","array"],"items":{"description":"Part of the Google configuration.","$ref":"#/components/schemas/PassTypeGoogleValueAddedItem"},"description":"Optional value added module data. Maximum of ten on the object."},"venue":{"description":"Event venue details. Applies to: eventTicket.","$ref":"#/components/schemas/PassTypeGoogleVenue"},"viewUnlockRequirement":{"type":["null","string"],"description":"View Unlock Requirement. One of: unspecified, requiredToView, notRequired."},"wideLogo":{"type":["null","string"],"description":"The wide logo of the pass. When provided, this will be used in place of the logo in the top left of the card view. Applies to: eventTicket, generic."},"wideProgramLogo":{"type":["null","string"],"description":"The wide logo of the loyalty program or company. When provided, this will be used in place of the program logo\nin the top left of the card view. Applies to: customerCard, giftCard, stampCard."},"wideTitleImage":{"type":["null","string"],"description":"The wide title image used in place of the title image in the top left of the card view. Applies to: offer."}},"additionalProperties":false,"description":"The Google Wallet card. Not every pass kind accepts every property, and one that only some kinds accept says so."},"PassTypeGoogleUri":{"type":"object","properties":{"label":{"description":"The URI's title appearing in the app as text. Recommended maximum 20 characters.","$ref":"#/components/schemas/PassTypeLocalizedString"},"uri":{"type":["null","string"],"description":"Location of a web page, image or other resource, with a scheme (web link, map, telephone number or email address). A templated string that renders a valid URI."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleAppLinkInfos":{"type":"object","properties":{"androidAppLinkInfo":{"description":"Partner app link rendered on the valuable details of the Android client.","$ref":"#/components/schemas/PassTypeGoogleAndroidAppLinkInfo"},"displayText":{"description":"Optional display text for the app link button. Character limit is 30.","$ref":"#/components/schemas/PassTypeLocalizedString"},"webAppLinkInfo":{"description":"Partner app link rendered on the valuable details of the web client.","$ref":"#/components/schemas/PassTypeGoogleWebAppLinkInfo"}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleAndroidAppLinkInfo":{"type":"object","properties":{"packageName":{"type":["null","string"],"description":"Package name for AppTarget. For example: com.google.android.gm."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleWebAppLinkInfo":{"type":"object","properties":{"targetUri":{"description":"URI for AppTarget, with a description. Prefer the package field when the target is defined for your application.","$ref":"#/components/schemas/PassTypeGoogleUri"}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleMoney":{"type":"object","properties":{"currencyCode":{"type":["null","string"],"description":"The currency code, such as \"USD\" or \"EUR.\"."},"value":{"type":["null","string"],"description":"Amount, as a number or a Liquid template rendering one. Not a translatable string: one value for every language."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleBarCode":{"type":"object","properties":{"alternateText":{"type":["null","string"],"description":"A human readable equivalent of the barcode value, shown under the barcode in place of the default text. Not allowed on a TEXT_ONLY barcode."},"showCodeText":{"description":"Text shown when a Smart Tap barcode is hidden behind a click action.","$ref":"#/components/schemas/PassTypeLocalizedString"},"type":{"type":["null","string"],"description":"The type of barcode. Only QR_CODE is supported for rotating barcodes. One of: AZTEC, CODE_39, CODE_128, CODABAR,\nDATA_MATRIX, EAN_8, EAN_13, ITF_14, PDF_417, QR_CODE, UPC_A, TEXT_ONLY."},"value":{"type":["null","string"],"description":"The value encoded in the barcode."},"rotating":{"type":["null","boolean"],"description":"The phone recomputes the code every period from a one-time password (QR_CODE and PDF_417 only). The value must hold {totp_value_0}, replaced by the current password."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleDateTimeDetails":{"type":"object","properties":{"customDoorsOpenLabel":{"description":"Custom label for the doors open value, for when the default \"Doors Open\" or a `doorsOpenLabel` option is not sufficient. Not combinable with `doorsOpenLabel`.","$ref":"#/components/schemas/PassTypeLocalizedString"},"doorsOpen":{"type":["null","string"],"description":"When the doors open at the venue. ISO 8601 extended format, with or without an offset, up to nanosecond\nprecision (`2018-06-05T20:00:00-04:00`). Without an offset it is the venue's local date/time; some rich\nfeatures need the offset."},"doorsOpenLabel":{"type":["null","string"],"description":"Label for the doors open value. Each option maps to localized strings. Not combinable with\n`customDoorsOpenLabel`; when neither is set, \"Doors Open\" is used. One of: DOORS_OPEN_LABEL_UNSPECIFIED,\nDOORS_OPEN, GATES_OPEN."},"end":{"type":["null","string"],"description":"When the event ends (on the last day, if it spans several). ISO 8601 extended format, with or without an offset,\nup to nanosecond precision (`2018-06-05T20:00:00-04:00`). Without an offset it is the venue's local\ndate/time; some rich features need the offset."},"start":{"type":["null","string"],"description":"When the event starts (on the first day, if it spans several). ISO 8601 extended format, with or without an\noffset, up to nanosecond precision (`2018-06-05T20:00:00-04:00`). Without an offset it is the venue's local\ndate/time; some rich features need the offset."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleDiscoverableProgram":{"type":"object","properties":{"signinUrl":{"type":["null","string"],"description":"The URL to direct the user to for the merchant's signin site. Used when MERCHANT_HOSTED_SIGNIN is enabled."},"signupSharedDatas":{"type":["null","array"],"items":{"type":"string"},"description":"User data sent in a POST to the sign-up URL: Google Wallet SharedDataType strings such as FIRST_NAME, LAST_NAME, EMAIL."},"signupUrl":{"type":["null","string"],"description":"The URL to direct the user to for the merchant's signup site. Used when MERCHANT_HOSTED_SIGNUP is enabled."},"state":{"type":["null","string"],"description":"Visibility state of the discoverable program. One of: trustedTesters, live, disabled."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleGate":{"type":"object","properties":{"customGateLabel":{"description":"Custom label for the gate value, for when the default \"Gate\" or a `gateLabel` option is not sufficient. Not combinable with `gateLabel`.","$ref":"#/components/schemas/PassTypeLocalizedString"},"gate":{"type":["null","string"],"description":"The gate the ticket holder should enter to get to their seat, such as \"A\" or \"West\"."},"gateLabel":{"type":["null","string"],"description":"Label for the gate value. Each option maps to localized strings. Not combinable with `customGateLabel`;\nwhen neither is set, \"Gate\" is used. One of: GATE_LABEL_UNSPECIFIED, GATE, DOOR, ENTRANCE."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleLoyaltyPoint":{"type":"object","properties":{"balance":{"description":"The account holder's loyalty point balance, such as \"500\" or \"$10.00\". Recommended maximum 7 characters. This is\na required field of loyaltyPoints and secondaryLoyaltyPoints.","$ref":"#/components/schemas/PassTypeGoogleBalanceConfigurationBase"},"label":{"description":"The loyalty points label, such as \"Points\". Recommended maximum 9 characters.","$ref":"#/components/schemas/PassTypeLocalizedString"}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleBalanceConfigurationBase":{"type":"object","properties":{"value":{"type":["null","string"],"description":"Value of the pass. A Liquid template, not a translatable string: one value for every language."},"type":{"type":["null","string"],"description":"How Google reads Neo.Web.Api.Wallet.Controllers.PassTypes.PassTypeGoogleBalanceConfigurationBase.Value: `string`, `integer`, `double` or `money`.\nOmitted, `string`."},"currencyCode":{"type":["null","string"],"description":"The currency of a `money` balance, such as `USD` or `EUR`. Required for `money`, ignored otherwise."}},"additionalProperties":false,"description":"A loyalty balance: its value, and how Google reads and displays it."},"PassTypeGoogleMessage":{"type":"object","properties":{"body":{"description":"The message body.","$ref":"#/components/schemas/PassTypeLocalizedString"},"displayInterval":{"description":"Period during which the message is displayed: from `startTime` (else immediately after insertion) to `endTime` (else indefinitely).","$ref":"#/components/schemas/PassTypeGoogleTimeInterval"},"header":{"description":"The message header.","$ref":"#/components/schemas/PassTypeLocalizedString"},"id":{"type":["null","string"],"description":"Optional identifier."},"notify":{"type":["null","boolean"],"description":"Whether a notification appears when the body changes."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleTimeInterval":{"type":"object","properties":{"end":{"type":["null","string"],"description":"End time of the interval."},"start":{"type":["null","string"],"description":"Start time of the interval."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleGrouping":{"type":"object","properties":{"id":{"type":["null","string"],"description":"The group the pass belongs to: passes with the same id are shown stacked together."},"sortIndex":{"type":["null","string"],"description":"The pass's position in its group, lower first."}},"additionalProperties":false,"description":"How passes are grouped together in Google Wallet."},"PassTypeGoogleImageModule":{"type":"object","properties":{"description":{"description":"What the image shows, read by screen readers. Carries one value per language.","$ref":"#/components/schemas/PassTypeLocalizedString"},"image":{"type":["null","string"],"description":"The image."}},"additionalProperties":false,"description":"An image shown at full width among the details of the pass."},"PassTypeGoogleRow":{"type":"object","properties":{"customRowLabel":{"description":"Custom label for the row value, for when the default \"Row\" or a `rowLabel` option is not sufficient. Not combinable with `rowLabel`.","$ref":"#/components/schemas/PassTypeLocalizedString"},"row":{"type":["null","string"],"description":"The row of the seat, such as \"1\", E\", \"BB\", or \"A5\"."},"rowLabel":{"type":["null","string"],"description":"Label for the row value. Each option maps to localized strings. Not combinable with `customRowLabel`; when\nneither is set, \"Row\" is used. One of: ROW_LABEL_UNSPECIFIED, ROW."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleSeat":{"type":"object","properties":{"customSeatLabel":{"description":"Custom label for the seat value, for when the default \"Seat\" or a `seatLabel` option is not sufficient. Not combinable with `seatLabel`.","$ref":"#/components/schemas/PassTypeLocalizedString"},"seat":{"type":["null","string"],"description":"The seat number, such as \"1\", \"2\", \"3\", or any other seat identifier."},"seatLabel":{"type":["null","string"],"description":"Label for the seat value. Each option maps to localized strings. Not combinable with `customSeatLabel`;\nwhen neither is set, \"Seat\" is used. One of: SEAT_LABEL_UNSPECIFIED, SEAT."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleSection":{"type":"object","properties":{"customSectionLabel":{"description":"Custom label for the section value, for when the default \"Section\" or a `sectionLabel` option is not sufficient. Not combinable with `sectionLabel`.","$ref":"#/components/schemas/PassTypeLocalizedString"},"section":{"type":["null","string"],"description":"The section of the seat, such as \"121\"."},"sectionLabel":{"type":["null","string"],"description":"Label for the section value. Each option maps to localized strings. Not combinable with\n`customSectionLabel`; when neither is set, \"Section\" is used. One of: SECTION_LABEL_UNSPECIFIED, SECTION,\nTHEATRE."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleSmartTap":{"type":"object","properties":{"value":{"type":["null","string"],"description":"Value transmitted to a Smart Tap terminal over NFC (ASCII only). A Liquid template, not a translatable string."}},"additionalProperties":false,"description":"Smart Tap: lets a Smart Tap terminal read a value from the pass over NFC. The tenant's issuer redeems it, and without a Smart Tap key on the tenant it is not enabled."},"PassTypeGoogleStampImage":{"type":"object","properties":{"count":{"type":["null","integer"],"description":"The stamp count this image is shown at.","format":"int32"},"heroImage":{"type":["null","string"],"description":"Hero image for that count (1032x336)."}},"additionalProperties":false,"description":"The Google image a stamp card shows at one exact stamp count."},"PassTypeGoogleTemplateOverride":{"type":"object","properties":{"barcodeInfo":{"description":"The values shown around the barcode.","$ref":"#/components/schemas/PassTypeGoogleBarcodeInfo"},"cardTemplateInfo":{"description":"The rows of values on the front of the card.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfo"},"detailsTemplateInfo":{"description":"The order and content of the details view.","$ref":"#/components/schemas/PassTypeGoogleDetailsTemplateOverride"},"listTemplateInfo":{"description":"How the card reads in the holder's list of passes.","$ref":"#/components/schemas/PassTypeGoogleListTemplateInfo"}},"additionalProperties":false,"description":"Which values the card shows where, in place of Google's default layout."},"PassTypeGoogleBarcodeInfo":{"type":"object","properties":{"firstBottomDetail":{"description":"Value shown below the barcode.","$ref":"#/components/schemas/PassTypeGoogleDetail"},"firstTopDetail":{"description":"First value shown above the barcode.","$ref":"#/components/schemas/PassTypeGoogleDetail"},"secondTopDetail":{"description":"Second value shown above the barcode.","$ref":"#/components/schemas/PassTypeGoogleDetail"}},"additionalProperties":false,"description":"The values shown around the barcode of the card."},"PassTypeGoogleDetail":{"type":"object","properties":{"paths":{"type":["null","array"],"items":{"type":"string"},"description":"Google field paths to read the value from. The first one holding a value is shown."}},"additionalProperties":false,"description":"A value shown next to the barcode, read from a field of the Google object or class."},"PassTypeGoogleCardTemplateInfo":{"type":"object","properties":{"firstLine":{"description":"First row. Required once the card layout is overridden.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfoRow"},"lines":{"type":["null","array"],"items":{"description":"One row on the front of the card: one to three slots, left to right.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfoRow"},"description":"The configured rows in display order. Read-only: derived from `firstLine`, `secondLine` and `thirdLine`, and ignored on save."},"secondLine":{"description":"Second row.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfoRow"},"thirdLine":{"description":"Third row. Shown only when `secondLine` is set.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfoRow"}},"additionalProperties":false,"description":"The rows of values on the front of the card, top to bottom."},"PassTypeGoogleCardTemplateInfoRow":{"type":"object","properties":{"firstItem":{"description":"First slot. Required.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfoItem"},"items":{"type":["null","array"],"items":{"description":"One slot of a row on the front of the card.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfoItem"},"description":"The configured slots in display order. Read-only: derived from `firstItem`, `secondItem` and `thirdItem`, and ignored on save."},"secondItem":{"description":"Second slot.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfoItem"},"thirdItem":{"description":"Third slot. Shown only when `secondItem` is set.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfoItem"}},"additionalProperties":false,"description":"One row on the front of the card: one to three slots, left to right."},"PassTypeGoogleCardTemplateInfoItem":{"type":"object","properties":{"primary":{"description":"Value shown in the slot.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfoItemValue"},"secondary":{"description":"Value shown beside the primary one in the same slot, separated by a slash.","$ref":"#/components/schemas/PassTypeGoogleCardTemplateInfoItemValue"}},"additionalProperties":false,"description":"One slot of a row on the front of the card."},"PassTypeGoogleCardTemplateInfoItemValue":{"type":"object","properties":{"dateFormat":{"type":["null","string"],"description":"How a date value is rendered. One of: DATE_FORMAT_UNSPECIFIED, DATE_TIME, DATE_ONLY, TIME_ONLY, DATE_TIME_YEAR, DATE_YEAR, YEAR_MONTH, YEAR_MONTH_DAY."},"paths":{"type":["null","array"],"items":{"type":"string"},"description":"Google field paths to read the value from, such as `object.textModulesData['points']`. The first one holding a value is shown."}},"additionalProperties":false,"description":"A value on the front of the card, read from a field of the Google object or class."},"PassTypeGoogleDetailsTemplateOverride":{"type":"object","properties":{"items":{"type":["null","array"],"items":{"description":"One entry of the card's details view.","$ref":"#/components/schemas/PassTypeGoogleDetailsItem"},"description":"The entries, in display order."}},"additionalProperties":false,"description":"The order and content of the card's details view."},"PassTypeGoogleDetailsItem":{"type":"object","properties":{"firstValuePaths":{"type":["null","array"],"items":{"type":"string"},"description":"Google field paths of the entry's value. The first one holding a value is shown."},"secondValuePaths":{"type":["null","array"],"items":{"type":"string"},"description":"Google field paths of a second value shown beside the first, separated by a slash."}},"additionalProperties":false,"description":"One entry of the card's details view."},"PassTypeGoogleListTemplateInfo":{"type":"object","properties":{"rows":{"type":["null","array"],"items":{"description":"One line of the card in the list of passes.","$ref":"#/components/schemas/PassTypeGoogleListTemplateInfoRow"},"description":"The lines under the card's title. Only the first two are shown."}},"additionalProperties":false,"description":"How the card reads in the holder's list of passes."},"PassTypeGoogleListTemplateInfoRow":{"type":"object","properties":{"paths":{"type":["null","array"],"items":{"type":"string"},"description":"Google field paths to read the line from. The first one holding a value is shown."}},"additionalProperties":false,"description":"One line of the card in the list of passes."},"PassTypeGoogleText":{"type":"object","properties":{"body":{"description":"The body of the Text Module, which is defined as an uninterrupted string. Recommended maximum 500 characters.","$ref":"#/components/schemas/PassTypeLocalizedString"},"header":{"description":"The header of the Text Module. Recommended maximum 35 characters.","$ref":"#/components/schemas/PassTypeLocalizedString"}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleValueAddedItem":{"type":"object","properties":{"body":{"description":"Body to be displayed on the module. Character limit is 50 and longer strings will be truncated.","$ref":"#/components/schemas/PassTypeLocalizedString"},"displayInterval":{"description":"Period during which the module is displayed: from `startTime` (else immediately after insertion) to `endTime` (else indefinitely).","$ref":"#/components/schemas/PassTypeGoogleTimeInterval"},"header":{"description":"Header to be displayed on the module. Character limit is 60 and longer strings will be truncated.","$ref":"#/components/schemas/PassTypeLocalizedString"},"logo":{"type":["null","string"],"description":"Image to be displayed on the module. Recommended image ratio is 1:1. Images will be resized to fit this ratio."},"uri":{"type":["null","string"],"description":"URI the module leads to on click: a web link or a deep link. A templated string that renders a valid URI."}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypeGoogleVenue":{"type":"object","properties":{"address":{"description":"Address of the venue, such as \"24 Willie Mays Plaza\\nSan Francisco, CA 94107\"; lines are separated by `\\n`.","$ref":"#/components/schemas/PassTypeLocalizedString"},"name":{"description":"The name of the venue, such as \"AT&T Park\".","$ref":"#/components/schemas/PassTypeLocalizedString"}},"additionalProperties":false,"description":"Part of the Google configuration."},"PassTypePreview":{"type":"object","properties":{"subTitle":{"description":"Sub title of the pass.","$ref":"#/components/schemas/PassTypeLocalizedString"},"title":{"description":"Title of the pass.","$ref":"#/components/schemas/PassTypeLocalizedString"}},"additionalProperties":false,"description":"Part of the pass configuration."},"PassTypeScannableData":{"type":"object","properties":{"persistScannableData":{"type":["null","boolean"],"description":"Whether scannable data is kept on the pass, for compatible systems."}},"additionalProperties":false,"description":"Part of the pass configuration."},"PassTypeStamps":{"type":"object","properties":{"behaviour":{"type":["null","string"],"description":"What happens to the card once `Target` is reached. One of: resetOnNextStamp, resetImmediately, stayAtGoal."},"rewardBenefitTemplateId":{"type":["null","string"],"description":"Id of the benefit template granted when the goal is reached, or `null` for a card that rewards nothing on its own."},"target":{"type":["null","integer"],"description":"Number of stamps that reaches the goal.","format":"int32"}},"additionalProperties":false,"description":"The stamp mechanic carried by a `stampCard` pass: how many stamps reach the goal, what the card shows on the way there, and what happens once it arrives."},"PassTypeMetadata":{"type":"object","properties":{"entries":{"type":["null","array"],"items":{"description":"One metadata field computed on every pass of the template.","$ref":"#/components/schemas/PassTypeMetadataDefinition"},"description":"One entry per value computed."}},"additionalProperties":false,"description":"Values computed whenever a pass is updated, which issued passes can be searched by."},"PassTypeMetadataDefinition":{"type":"object","properties":{"key":{"type":["null","string"],"description":"Key of the value on each pass, and what passes are filtered on."},"type":{"type":["null","string"],"description":"Data type of the value. One of: string, number, boolean, datetime. Omitted reads as string."},"value":{"type":["null","string"],"description":"Liquid template computing the value whenever a pass is updated."}},"additionalProperties":false,"description":"One metadata field computed on every pass of the template."},"PassTypeDetail":{"required":["configuration","languages","name"],"type":"object","properties":{"name":{"type":"string","description":"Name of the template, unique within the tenant."},"configuration":{"description":"The template itself, with every translatable value carrying its wording.","$ref":"#/components/schemas/PassTypeModel"},"languages":{"type":"array","items":{"type":"string"},"description":"Languages this template has wording in, as language codes."}},"additionalProperties":false,"description":"One pass template in full."},"ProblemDetails":{"type":"object","properties":{"type":{"type":["null","string"]},"title":{"type":["null","string"]},"status":{"type":["null","integer"],"format":"int32"},"detail":{"type":["null","string"]},"instance":{"type":["null","string"]}},"additionalProperties":{}},"HttpValidationProblemDetails":{"type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"properties":{"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"additionalProperties":{}}}},"paths":{"/api/{tenantId}/admin/passTypes/{name}":{"put":{"tags":["PassTypes"],"summary":"Save a pass template","description":"Creates the template when none exists under the route name, otherwise replaces it. Send the configuration whole: anything left out, wording in every language included, is removed. Idempotent. `kind` is fixed at creation. `If-None-Match: *` restricts the request to creating (412 when it exists).","parameters":[{"name":"name","in":"path","description":"Template name, the `passType` its passes carry. A new name is 2 to 100 letters, digits, underscores,\nspaces or hyphens, starting and ending with a letter, digit or underscore; an existing template may keep\na name with dots.","required":true,"schema":{"type":"string"}},{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Template payload.","content":{"application/json":{"schema":{"description":"A pass template to create or replace.","$ref":"#/components/schemas/SavePassTypeRequest"}},"text/json":{"schema":{"description":"A pass template to create or replace.","$ref":"#/components/schemas/SavePassTypeRequest"}},"application/*+json":{"schema":{"description":"A pass template to create or replace.","$ref":"#/components/schemas/SavePassTypeRequest"}}}},"responses":{"200":{"description":"Template replaced.","content":{"text/plain":{"schema":{"description":"One pass template in full.","$ref":"#/components/schemas/PassTypeDetail"}},"application/json":{"schema":{"description":"One pass template in full.","$ref":"#/components/schemas/PassTypeDetail"}},"text/json":{"schema":{"description":"One pass template in full.","$ref":"#/components/schemas/PassTypeDetail"}}}},"201":{"description":"Template created.","content":{"text/plain":{"schema":{"description":"One pass template in full.","$ref":"#/components/schemas/PassTypeDetail"}},"application/json":{"schema":{"description":"One pass template in full.","$ref":"#/components/schemas/PassTypeDetail"}},"text/json":{"schema":{"description":"One pass template in full.","$ref":"#/components/schemas/PassTypeDetail"}}}},"400":{"description":"The name is not usable, the payload is invalid or incomplete for its kind, it carries wording in a\nlanguage code that is not 1 to 10 letters, digits or hyphens, or it changes `kind`.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"401":{"description":"The caller is not authenticated.","content":{"application/problem+json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"403":{"description":"The caller lacks the <c>tenant.passType:write</c> scope.","content":{"application/problem+json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"409":{"description":"The stored template cannot be read (type `#unreadable-configuration-file`); repair it before replacing it. Or another pass template write is in progress: retry.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"412":{"description":"A template of that name exists and the request asked to create only (type `#name-already-taken`).","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"429":{"description":"Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after <c>Retry-After</c>.","headers":{"Retry-After":{"description":"Seconds to wait before retrying. Sent when the limiter knows it.","schema":{"type":"integer"}}},"content":{"application/problem+json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}}}}}}}
```

## Delete a pass template

> Also deletes its translations and images. Refused while any pass is still issued from the template.

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"PassTypes"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"security":[{"admin-bearer":["tenant.passType:write"]},{"apiKey":[]}],"components":{"securitySchemes":{"admin-bearer":{"type":"oauth2","flows":{"implicit":{"authorizationUrl":"https://auth.neostore.cloud/authorize?audience=https://app.neostore.cloud/api/","scopes":{}}}},"apiKey":{"type":"apiKey","name":"X-API-KEY","in":"header"}},"schemas":{"ProblemDetails":{"type":"object","properties":{"type":{"type":["null","string"]},"title":{"type":["null","string"]},"status":{"type":["null","integer"],"format":"int32"},"detail":{"type":["null","string"]},"instance":{"type":["null","string"]}},"additionalProperties":{}},"HttpValidationProblemDetails":{"type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"properties":{"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"additionalProperties":{}}}},"paths":{"/api/{tenantId}/admin/passTypes/{name}":{"delete":{"tags":["PassTypes"],"summary":"Delete a pass template","description":"Also deletes its translations and images. Refused while any pass is still issued from the template.","parameters":[{"name":"name","in":"path","description":"Template name, the `passType` its passes carry.","required":true,"schema":{"type":"string"}},{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Template deleted, with its translations and images."},"400":{"description":"The name is not valid: 1 to 100 letters, digits, underscores, hyphens, dots or spaces.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"401":{"description":"The caller is not authenticated.","content":{"application/problem+json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"403":{"description":"The caller lacks the <c>tenant.passType:write</c> scope.","content":{"application/problem+json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"404":{"description":"No such template.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"409":{"description":"Passes are still issued from the template (type `#pass-template-in-use`), or another pass template write is in progress: retry.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"429":{"description":"Over 1200 requests per minute to this endpoint for the tenant (default limit); retry after <c>Retry-After</c>.","headers":{"Retry-After":{"description":"Seconds to wait before retrying. Sent when the limiter knows it.","schema":{"type":"integer"}}},"content":{"application/problem+json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.thewalletcrew.io/api-reference/advanced/pass-types.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
