Improved markers and descriptions for iOS 18 properties and added venueOpenDate

This commit is contained in:
Alexander Cerutti
2025-01-09 01:49:49 +01:00
parent 7ccae18077
commit 02165d18ac
4 changed files with 404 additions and 225 deletions

View File

@@ -19,6 +19,14 @@ export interface PassFields {
primaryFields: Field[]; primaryFields: Field[];
secondaryFields: Field[]; secondaryFields: Field[];
transitType?: TransitType; transitType?: TransitType;
/**
* @iOSVersion 18
* @passStyle eventTicket (new layout)
* @passDomain dashboard
*
* @see \<undiclosed>
*/
additionalInfoFields?: Field[]; additionalInfoFields?: Field[];
} }
@@ -29,5 +37,13 @@ export const PassFields = Joi.object<PassFields>().keys({
primaryFields: Joi.array().items(Field), primaryFields: Joi.array().items(Field),
secondaryFields: Joi.array().items(Field), secondaryFields: Joi.array().items(Field),
transitType: TransitType, transitType: TransitType,
/**
* @iOSVersion 18
* @passStyle eventTicket (new layout)
* @passDomain dashboard
*
* @see \<undiclosed>
*/
additionalInfoFields: Joi.array().items(Field), additionalInfoFields: Joi.array().items(Field),
}); });

View File

@@ -22,8 +22,8 @@ export const CurrencyAmount = Joi.object<CurrencyAmount>().keys({
}); });
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18. * @passStyle eventTicket (new layout)
* *
* @see \<undiclosed> * @see \<undiclosed>
*/ */
@@ -88,20 +88,20 @@ export interface Seat {
seatDescription?: string; seatDescription?: string;
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
seatAisle?: string; seatAisle?: string;
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
seatLevel?: string; seatLevel?: string;
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
seatSectionColor?: string; seatSectionColor?: string;
} }
@@ -115,20 +115,20 @@ export const Seat = Joi.object<Seat>().keys({
seatDescription: Joi.string(), seatDescription: Joi.string(),
/** /**
* Newly-introduced in iOS 18 * @iOSVersion 18
* Used in poster event tickets * @passStyle eventTicket (new layout)
*/ */
seatAisle: Joi.string(), seatAisle: Joi.string(),
/** /**
* Newly-introduced in iOS 18 * @iOSVersion 18
* Used in poster event tickets * @passStyle eventTicket (new layout)
*/ */
seatLevel: Joi.string(), seatLevel: Joi.string(),
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
seatSectionColor: Joi.string().regex(RGB_HEX_COLOR_REGEX), seatSectionColor: Joi.string().regex(RGB_HEX_COLOR_REGEX),
}); });

View File

@@ -15,14 +15,14 @@ import * as SemanticTagType from "./SemanticTagType";
export interface Semantics { export interface Semantics {
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
admissionLevel?: string; admissionLevel?: string;
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
admissionLevelAbbreviation?: string; admissionLevelAbbreviation?: string;
@@ -30,22 +30,22 @@ export interface Semantics {
artistIDs?: string[]; artistIDs?: string[];
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
albumIDs?: string[]; albumIDs?: string[];
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
airplay?: { airplay?: {
airPlayDeviceGroupToken: string; airPlayDeviceGroupToken: string;
}[]; }[];
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
attendeeName?: string; attendeeName?: string;
@@ -54,8 +54,8 @@ export interface Semantics {
awayTeamName?: string; awayTeamName?: string;
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
additionalTicketAttributes?: string; additionalTicketAttributes?: string;
@@ -88,16 +88,16 @@ export interface Semantics {
duration?: number; duration?: number;
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
entranceDescription?: string; entranceDescription?: string;
eventEndDate?: string; eventEndDate?: string;
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
* *
* Shows a message in the live activity * Shows a message in the live activity
* when the activity starts. * when the activity starts.
@@ -108,8 +108,8 @@ export interface Semantics {
eventStartDate?: string; eventStartDate?: string;
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18. * @passStyle eventTicket (new layout).
* *
* Can be used as an alternative way to * Can be used as an alternative way to
* show show start date, with more control * show show start date, with more control
@@ -119,15 +119,33 @@ export interface Semantics {
*/ */
eventStartDateInfo?: SemanticTagType.EventDateInfo; eventStartDateInfo?: SemanticTagType.EventDateInfo;
/**
* @iOSVersion < 18
* Since iOS 18, for the event tickets these determine
* the template to be used when rendering the pass.
*
* - Generic Template
* - "PKEventTypeGeneric"
* - "PKEventTypeMovie"
* - "PKEventTypeConference"
* - "PKEventTypeConvention"
* - "PKEventTypeWorkshop"
* - "PKEventTypeSocialGathering"
* - Sport Template
* - "PKEventTypeSports"
* - Live Performance Template
* - "PKEventTypeLivePerformance";
*/
eventType?: eventType?:
| "PKEventTypeGeneric" | "PKEventTypeGeneric"
| "PKEventTypeLivePerformance"
| "PKEventTypeMovie" | "PKEventTypeMovie"
| "PKEventTypeSports"
| "PKEventTypeConference" | "PKEventTypeConference"
| "PKEventTypeConvention" | "PKEventTypeConvention"
| "PKEventTypeWorkshop" | "PKEventTypeWorkshop"
| "PKEventTypeSocialGathering"; | "PKEventTypeSocialGathering"
| "PKEventTypeSports"
| "PKEventTypeLivePerformance";
flightCode?: string; flightCode?: string;
flightNumber?: number; flightNumber?: number;
@@ -152,8 +170,8 @@ export interface Semantics {
priorityStatus?: string; priorityStatus?: string;
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
playlistIDs?: string[]; playlistIDs?: string[];
@@ -163,8 +181,8 @@ export interface Semantics {
sportName?: string; sportName?: string;
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
tailgatingAllowed?: boolean; tailgatingAllowed?: boolean;
@@ -181,40 +199,46 @@ export interface Semantics {
venueLocation?: SemanticTagType.Location; venueLocation?: SemanticTagType.Location;
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
venueGatesOpenDate?: string; venueGatesOpenDate?: string;
venueName?: string; venueName?: string;
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
venueParkingLotsOpenDate?: string; venueParkingLotsOpenDate?: string;
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
venueBoxOfficeOpenDate?: string; venueBoxOfficeOpenDate?: string;
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
venueDoorsOpenDate?: string; venueDoorsOpenDate?: string;
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
venueFanZoneOpenDate?: string; venueFanZoneOpenDate?: string;
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/
venueOpenDate?: string;
/**
* @iOSVersion 18
* @passStyle eventTicket (new layout)
*/ */
venueCloseDate?: string; venueCloseDate?: string;
@@ -222,26 +246,26 @@ export interface Semantics {
venueRoom?: string; venueRoom?: string;
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
venueRegionName?: string; venueRegionName?: string;
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
venueEntranceGate?: string; venueEntranceGate?: string;
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
venueEntranceDoor?: string; venueEntranceDoor?: string;
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
venueEntrancePortal?: string; venueEntrancePortal?: string;
@@ -250,14 +274,14 @@ export interface Semantics {
export const Semantics = Joi.object<Semantics>().keys({ export const Semantics = Joi.object<Semantics>().keys({
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
admissionLevel: Joi.string(), admissionLevel: Joi.string(),
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
admissionLevelAbbreviation: Joi.string(), admissionLevelAbbreviation: Joi.string(),
@@ -265,22 +289,22 @@ export const Semantics = Joi.object<Semantics>().keys({
artistIDs: Joi.array().items(Joi.string()), artistIDs: Joi.array().items(Joi.string()),
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
albumIDs: Joi.array().items(Joi.string()), albumIDs: Joi.array().items(Joi.string()),
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
airplay: Joi.array().items({ airplay: Joi.array().items({
airplayDeviceGroupToken: Joi.string(), airplayDeviceGroupToken: Joi.string(),
}), }),
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
attendeeName: Joi.string(), attendeeName: Joi.string(),
@@ -319,8 +343,8 @@ export const Semantics = Joi.object<Semantics>().keys({
duration: Joi.number(), duration: Joi.number(),
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
entranceDescription: Joi.string(), entranceDescription: Joi.string(),
@@ -328,8 +352,8 @@ export const Semantics = Joi.object<Semantics>().keys({
eventName: Joi.string(), eventName: Joi.string(),
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
* *
* Shows a message in the live activity * Shows a message in the live activity
* when the activity starts. * when the activity starts.
@@ -337,8 +361,8 @@ export const Semantics = Joi.object<Semantics>().keys({
eventLiveMessage: Joi.string(), eventLiveMessage: Joi.string(),
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18. * @passStyle eventTicket (new layout).
* *
* Can be used as an alternative way to * Can be used as an alternative way to
* show show start date, with more control * show show start date, with more control
@@ -396,8 +420,8 @@ export const Semantics = Joi.object<Semantics>().keys({
venueEntrance: Joi.string(), venueEntrance: Joi.string(),
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
venueGatesOpenDate: Joi.string(), venueGatesOpenDate: Joi.string(),
@@ -405,32 +429,38 @@ export const Semantics = Joi.object<Semantics>().keys({
venueName: Joi.string(), venueName: Joi.string(),
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
venueParkingLotsOpenDate: Joi.string(), venueParkingLotsOpenDate: Joi.string(),
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
venueBoxOfficeOpenDate: Joi.string(), venueBoxOfficeOpenDate: Joi.string(),
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
venueDoorsOpenDate: Joi.string(), venueDoorsOpenDate: Joi.string(),
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
venueFanZoneOpenDate: Joi.string(), venueFanZoneOpenDate: Joi.string(),
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/
venueOpenDate: Joi.string(),
/**
* @iOSVersion 18
* @passStyle eventTicket (new layout)
*/ */
venueCloseDate: Joi.string(), venueCloseDate: Joi.string(),
@@ -438,26 +468,26 @@ export const Semantics = Joi.object<Semantics>().keys({
venueRoom: Joi.string(), venueRoom: Joi.string(),
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
venueRegionName: Joi.string(), venueRegionName: Joi.string(),
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
venueEntranceGate: Joi.string(), venueEntranceGate: Joi.string(),
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
venueEntranceDoor: Joi.string(), venueEntranceDoor: Joi.string(),
/** /**
* For newly-introduced event tickets * @iOSVersion 18
* in iOS 18 * @passStyle eventTicket (new layout)
*/ */
venueEntrancePortal: Joi.string(), venueEntrancePortal: Joi.string(),

View File

@@ -42,7 +42,8 @@ export interface RelevancyEntry {
} }
/** /**
* Newly introduced in iOS 18. * @iOSVersion 18
*
* Using a RelevancyInterval, will trigger a live activity on * Using a RelevancyInterval, will trigger a live activity on
* new event ticket passes. * new event ticket passes.
* *
@@ -122,152 +123,208 @@ export interface PassProps {
storeCard?: PassFields; storeCard?: PassFields;
/** /**
* New field for iOS 18 * @iOSVersion 18
* Event Ticket * @passStyle eventTicket (new layout)
*/ */
preferredStyleSchemes?: PreferredStyleSchemes; preferredStyleSchemes?: PreferredStyleSchemes;
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @domain event guide * @passStyle eventTicket (new layout)
* @passDomain Event Guide
* *
* To show buttons in the event guide, * To show buttons in the event guide,
* at least two among those marked with * at least two among those marked with
* "@domain event guide" must be used. * "@passDomain event guide" must be used.
*/ */
bagPolicyURL?: string; bagPolicyURL?: string;
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @domain event guide * @passStyle eventTicket (new layout)
* @passDomain Event Guide
* *
* To show buttons in the event guide, * To show buttons in the event guide,
* at least two among those marked with * at least two among those marked with
* "@domain event guide" must be used. * "@passDomain Event Guide" must be used.
*/ */
orderFoodURL?: string; orderFoodURL?: string;
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @domain event guide * @passStyle eventTicket (new layout)
* @passDomain Event Guide
* *
* To show buttons in the event guide, * To show buttons in the event guide,
* at least two among those marked with * at least two among those marked with
* "@domain event guide" must be used. * "@passDomain Event Guide" must be used.
*/ */
parkingInformationURL?: string; parkingInformationURL?: string;
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @domain event guide * @passStyle eventTicket (new layout)
* @passDomain Event Guide
* *
* To show buttons in the event guide, * To show buttons in the event guide,
* at least two among those marked with * at least two among those marked with
* "@domain event guide" must be used. * "@passDomain Event Guide" must be used.
*/ */
directionsInformationURL?: string; directionsInformationURL?: string;
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @domain event guide * @passStyle eventTicket (new layout)
* @passDomain Event Guide
*
* @description
*
* URL to a resource to buy or access
* the parking spot.
* *
* To show buttons in the event guide, * To show buttons in the event guide,
* at least two among those marked with * at least two among those marked with
* "@domain event guide" must be used. * "@passDomain Event Guide" must be used.
*/
contactVenueEmail?: string;
/**
* New field for iOS 18 Event Ticket.
* @domain event guide
*
* To show buttons in the event guide,
* at least two among those marked with
* "@domain event guide" must be used.
*/
contactVenuePhoneNumber?: string;
/**
* New field for iOS 18 Event Ticket.
* @domain event guide
*
* To show buttons in the event guide,
* at least two among those marked with
* "@domain event guide" must be used.
*/
contactVenueWebsite?: string;
/**
* New field for iOS 18 Event Ticket.
* @domain event guide
*
* To show buttons in the event guide,
* at least two among those marked with
* "@domain event guide" must be used.
*/ */
purchaseParkingURL?: string; purchaseParkingURL?: string;
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @domain event guide * @passStyle eventTicket (new layout)
* @passDomain Event Guide
*
* @description
*
* URL to a resource to buy the
* merchandise.
* *
* To show buttons in the event guide, * To show buttons in the event guide,
* at least two among those marked with * at least two among those marked with
* "@domain event guide" must be used. * "@passDomain Event Guide" must be used.
*/ */
merchandiseURL?: string; merchandiseURL?: string;
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @domain event guide * @passStyle eventTicket (new layout)
* @passDomain Event Guide
*
* @description
*
* URL to a resource about public or
* private transportation to reach the
* venue.
* *
* To show buttons in the event guide, * To show buttons in the event guide,
* at least two among those marked with * at least two among those marked with
* "@domain event guide" must be used. * "@passDomain Event Guide" must be used.
*/ */
transitInformationURL?: string; transitInformationURL?: string;
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @domain event guide * @passStyle eventTicket (new layout)
* @passDomain Event Guide
*
* @description
*
* URL to a resource about accessibility
* in the events venue.
* *
* To show buttons in the event guide, * To show buttons in the event guide,
* at least two among those marked with * at least two among those marked with
* "@domain event guide" must be used. * "@passDomain Event Guide" must be used.
*/ */
accessibilityURL?: string; accessibilityURL?: string;
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @domain event guide * @passStyle eventTicket (new layout)
* @passDomain Event Guide
*
* @description
*
* An URL to link experiences to the
* pass (upgrades and more).
* *
* To show buttons in the event guide, * To show buttons in the event guide,
* at least two among those marked with * at least two among those marked with
* "@domain event guide" must be used. * "@passDomain Event Guide" must be used.
*/ */
addOnURL?: string; addOnURL?: string;
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @passStyle eventTicket (new layout)
* @passDomain Event Guide
*
* To show buttons in the event guide,
* at least two among those marked with
* "@passDomain Event Guide" must be used.
*/
contactVenueEmail?: string;
/**
* @iOSVersion 18
* @passStyle eventTicket (new layout)
* @passDomain Event Guide
*
* To show buttons in the event guide,
* at least two among those marked with
* "@passDomain Event Guide" must be used.
*/
contactVenuePhoneNumber?: string;
/**
* @iOSVersion 18
* @passStyle eventTicket (new layout)
* @passDomain Event Guide
*
* To show buttons in the event guide,
* at least two among those marked with
* "@passDomain Event Guide" must be used.
*/
contactVenueWebsite?: string;
/**
* @iOSVersion 18
* @passStyle eventTicket (new layout)
* @passDomain Menu dropdown
*
* @description
*
* Will add a button among options near "share" * Will add a button among options near "share"
*/ */
transferURL?: string; transferURL?: string;
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @passStyle eventTicket (new layout)
* @passDomain Menu dropdown
*
* @description
*
* Will add a button among options near "share" * Will add a button among options near "share"
*/ */
sellURL?: string; sellURL?: string;
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @passStyle eventTicket (new layout)
*
* @description
*
* Will remove an automatic shadow in the new * Will remove an automatic shadow in the new
* event ticket layouts. * event ticket layouts.
*/ */
suppressHeaderDarkening?: boolean; suppressHeaderDarkening?: boolean;
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @passStyle eventTicket (new layout)
*
* @description
*
* By default, the chin is colored with a * By default, the chin is colored with a
* blur. Through this option, it is possible * blur. Through this option, it is possible
* to specify a different and specific color * to specify a different and specific color
@@ -276,7 +333,11 @@ export interface PassProps {
footerBackgroundColor?: string; footerBackgroundColor?: string;
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @passStyle eventTicket (new layout)
*
* @description
*
* Enables the automatic calculation of the * Enables the automatic calculation of the
* `foregroundColor` and `labelColor` based * `foregroundColor` and `labelColor` based
* on the background image in the new event * on the background image in the new event
@@ -288,7 +349,11 @@ export interface PassProps {
useAutomaticColor?: boolean; useAutomaticColor?: boolean;
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @passStyle eventTicket (new layout)
*
* @description
*
* Applications AppStore Identifiers * Applications AppStore Identifiers
* related to the event ticket. * related to the event ticket.
* *
@@ -299,7 +364,7 @@ export interface PassProps {
* the passes users has (probably differently * the passes users has (probably differently
* by `associatedStoreIdentifiers`). * by `associatedStoreIdentifiers`).
*/ */
auxiliaryStoreIdentifiers: number[]; auxiliaryStoreIdentifiers?: number[];
} }
/** /**
@@ -383,146 +448,206 @@ export const OverridablePassProps = Joi.object<OverridablePassProps>({
webServiceURL: Joi.string().regex(URL_REGEX), webServiceURL: Joi.string().regex(URL_REGEX),
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @domain event guide * @passStyle eventTicket (new layout)
* @passDomain Event Guide
* *
* To show buttons in the event guide, * To show buttons in the event guide,
* at least two among those marked with * at least two among those marked with
* "@domain event guide" must be used. * "@passDomain Event Guide" must be used.
*/ */
bagPolicyURL: Joi.string().regex(URL_REGEX), bagPolicyURL: Joi.string().regex(URL_REGEX),
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @domain event guide * @passStyle eventTicket (new layout)
* @passDomain Event Guide
* *
* To show buttons in the event guide, * To show buttons in the event guide,
* at least two among those marked with * at least two among those marked with
* "@domain event guide" must be used. * "@passDomain Event Guide" must be used.
*/ */
orderFoodURL: Joi.string().regex(URL_REGEX), orderFoodURL: Joi.string().regex(URL_REGEX),
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @domain event guide * @passStyle eventTicket (new layout)
* @passDomain Event Guide
* *
* To show buttons in the event guide, * To show buttons in the event guide,
* at least two among those marked with * at least two among those marked with
* "@domain event guide" must be used. * "@passDomain Event Guide" must be used.
*/ */
parkingInformationURL: Joi.string().regex(URL_REGEX), parkingInformationURL: Joi.string().regex(URL_REGEX),
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @domain event guide * @passStyle eventTicket (new layout)
* @passDomain Event Guide
* *
* To show buttons in the event guide, * To show buttons in the event guide,
* at least two among those marked with * at least two among those marked with
* "@domain event guide" must be used. * "@passDomain Event Guide" must be used.
*/ */
directionsInformationURL: Joi.string(), directionsInformationURL: Joi.string(),
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @domain event guide * @passStyle eventTicket (new layout)
* @passDomain Event Guide
*
* @description
*
* URL to a resource to buy or access
* the parking spot.
* *
* To show buttons in the event guide, * To show buttons in the event guide,
* at least two among those marked with * at least two among those marked with
* "@domain event guide" must be used. * "@passDomain Event Guide" must be used.
*/
contactVenueEmail: Joi.string(),
/**
* New field for iOS 18 Event Ticket.
* @domain event guide
*
* To show buttons in the event guide,
* at least two among those marked with
* "@domain event guide" must be used.
*/
contactVenuePhoneNumber: Joi.string(),
/**
* New field for iOS 18 Event Ticket.
* @domain event guide
*
* To show buttons in the event guide,
* at least two among those marked with
* "@domain event guide" must be used.
*/
contactVenueWebsite: Joi.string(),
/**
* New field for iOS 18 Event Ticket.
* @domain event guide
*
* To show buttons in the event guide,
* at least two among those marked with
* "@domain event guide" must be used.
*/ */
purchaseParkingURL: Joi.string(), purchaseParkingURL: Joi.string(),
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @domain event guide * @passStyle eventTicket (new layout)
* @passDomain Event Guide
*
* @description
*
* URL to a resource to buy the
* merchandise.
* *
* To show buttons in the event guide, * To show buttons in the event guide,
* at least two among those marked with * at least two among those marked with
* "@domain event guide" must be used. * "@passDomain Event Guide" must be used.
*/ */
merchandiseURL: Joi.string(), merchandiseURL: Joi.string(),
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @domain event guide * @passStyle eventTicket (new layout)
* @passDomain Event Guide
*
* @description
*
* URL to a resource about public or
* private transportation to reach the
* venue.
* *
* To show buttons in the event guide, * To show buttons in the event guide,
* at least two among those marked with * at least two among those marked with
* "@domain event guide" must be used. * "@passDomain Event Guide" must be used.
*/ */
transitInformationURL: Joi.string(), transitInformationURL: Joi.string(),
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @domain event guide * @passStyle eventTicket (new layout)
* @passDomain Event Guide
*
* @description
*
* URL to a resource about accessibility
* in the events venue.
* *
* To show buttons in the event guide, * To show buttons in the event guide,
* at least two among those marked with * at least two among those marked with
* "@domain event guide" must be used. * "@passDomain Event Guide" must be used.
*/ */
accessibilityURL: Joi.string(), accessibilityURL: Joi.string(),
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @domain event guide * @passStyle eventTicket (new layout)
* @passDomain Event Guide
*
* @description
*
* An URL to link experiences to the
* pass (upgrades and more).
* *
* To show buttons in the event guide, * To show buttons in the event guide,
* at least two among those marked with * at least two among those marked with
* "@domain event guide" must be used. * "@passDomain Event Guide" must be used.
*/ */
addOnURL: Joi.string(), addOnURL: Joi.string(),
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @passStyle eventTicket (new layout)
* @passDomain Event Guide
*
* @description
*
* To show buttons in the event guide,
* at least two among those marked with
* "@passDomain Event Guide" must be used.
*/
contactVenueEmail: Joi.string(),
/**
* @iOSVersion 18
* @passStyle eventTicket (new layout)
* @passDomain Event Guide
*
* @description
*
* To show buttons in the event guide,
* at least two among those marked with
* "@passDomain Event Guide" must be used.
*/
contactVenuePhoneNumber: Joi.string(),
/**
* @iOSVersion 18
* @passStyle eventTicket (new layout)
* @passDomain Event Guide
*
* @description
*
* To show buttons in the event guide,
* at least two among those marked with
* "@passDomain Event Guide" must be used.
*/
contactVenueWebsite: Joi.string(),
/**
* @iOSVersion 18
* @passStyle eventTicket (new layout)
*
* @description
*
* Will add a button among options near "share" * Will add a button among options near "share"
*/ */
transferURL: Joi.string(), transferURL: Joi.string(),
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @passStyle eventTicket (new layout)
*
* @description
*
* Will add a button among options near "share" * Will add a button among options near "share"
*/ */
sellURL: Joi.string(), sellURL: Joi.string(),
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @passStyle eventTicket (new layout)
*
* @description
*
* Will remove an automatic shadow in the new * Will remove an automatic shadow in the new
* event ticket layouts. * event ticket layouts.
*/ */
suppressHeaderDarkening: Joi.boolean(), suppressHeaderDarkening: Joi.boolean(),
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @passStyle eventTicket (new layout)
*
* @description
*
* By default, the chin is colored with a * By default, the chin is colored with a
* blur. Through this option, it is possible * blur. Through this option, it is possible
* to specify a different and specific color * to specify a different and specific color
@@ -531,7 +656,11 @@ export const OverridablePassProps = Joi.object<OverridablePassProps>({
footerBackgroundColor: Joi.string().regex(RGB_HEX_COLOR_REGEX), footerBackgroundColor: Joi.string().regex(RGB_HEX_COLOR_REGEX),
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @passStyle eventTicket (new layout)
*
* @description
*
* Enables the automatic calculation of the * Enables the automatic calculation of the
* `foregroundColor` and `labelColor` based * `foregroundColor` and `labelColor` based
* on the background image in the new event * on the background image in the new event
@@ -543,7 +672,11 @@ export const OverridablePassProps = Joi.object<OverridablePassProps>({
useAutomaticColor: Joi.boolean(), useAutomaticColor: Joi.boolean(),
/** /**
* New field for iOS 18 Event Ticket. * @iOSVersion 18
* @passStyle eventTicket (new layout)
*
* @description
*
* Applications AppStore Identifiers * Applications AppStore Identifiers
* related to the event ticket. * related to the event ticket.
* *