From 40955e694b49ae08ae04f363d5e65707a338511a Mon Sep 17 00:00:00 2001 From: Alexander Cerutti Date: Mon, 7 Oct 2024 01:27:29 +0200 Subject: [PATCH] Added support to new semantics --- src/schemas/Semantics.ts | 174 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 173 insertions(+), 1 deletion(-) diff --git a/src/schemas/Semantics.ts b/src/schemas/Semantics.ts index eac979f..def88a1 100644 --- a/src/schemas/Semantics.ts +++ b/src/schemas/Semantics.ts @@ -39,6 +39,24 @@ declare namespace SemanticTagType { seatIdentifier?: string; seatType?: string; seatDescription?: string; + + /** + * For newly-introduced event tickets + * in iOS 18 + */ + seatAisle?: string; + + /** + * For newly-introduced event tickets + * in iOS 18 + */ + seatLevel?: string; + + /** + * For newly-introduced event tickets + * in iOS 18 + */ + seatSectionColor?: string; } interface WifiNetwork { @@ -70,6 +88,24 @@ const SeatSemantics = Joi.object().keys({ seatIdentifier: Joi.string(), seatType: Joi.string(), seatDescription: Joi.string(), + + /** + * Newly-introduced in iOS 18 + * Used in poster event tickets + */ + seatAisle: Joi.string(), + + /** + * Newly-introduced in iOS 18 + * Used in poster event tickets + */ + seatLevel: Joi.string(), + + /** + * For newly-introduced event tickets + * in iOS 18 + */ + seatSectionColor: Joi.string(), }); const LocationSemantics = Joi.object().keys({ @@ -94,9 +130,29 @@ export interface Semantics { */ admissionLevel?: string; + /** + * For newly-introduced event tickets + * in iOS 18 + */ + admissionLevelAbbreviation?: string; + airlineCode?: string; artistIDs?: string[]; + /** + * For newly-introduced event tickets + * in iOS 18 + */ + albumIDs?: string[]; + + /** + * For newly-introduced event tickets + * in iOS 18 + */ + airplay?: { + airPlayDeviceGroupToken: string; + }[]; + /** * For newly-introduced event tickets * in iOS 18 @@ -107,6 +163,12 @@ export interface Semantics { awayTeamLocation?: string; awayTeamName?: string; + /** + * For newly-introduced event tickets + * in iOS 18 + */ + additionalTicketAttributes?: string; + balance?: SemanticTagType.CurrencyAmount; boardingGroup?: string; boardingSequenceNumber?: string; @@ -186,11 +248,23 @@ export interface Semantics { performerNames?: string[]; priorityStatus?: string; + /** + * For newly-introduced event tickets + * in iOS 18 + */ + playlistIDs?: string[]; + seats?: SemanticTagType.Seat[]; securityScreening?: string; silenceRequested?: boolean; sportName?: string; + /** + * For newly-introduced event tickets + * in iOS 18 + */ + tailgatingAllowed?: number; + totalPrice?: SemanticTagType.CurrencyAmount; transitProvider?: string; transitStatus?: string; @@ -199,6 +273,7 @@ export interface Semantics { vehicleName?: string; vehicleNumber?: string; vehicleType?: string; + venueEntrance?: string; venueLocation?: SemanticTagType.Location; @@ -216,6 +291,30 @@ export interface Semantics { */ venueParkingLotsOpenDate?: string; + /** + * For newly-introduced event tickets + * in iOS 18 + */ + venueBoxOfficeOpenDate?: string; + + /** + * For newly-introduced event tickets + * in iOS 18 + */ + venueDoorsOpenDate?: string; + + /** + * For newly-introduced event tickets + * in iOS 18 + */ + venueFanZoneOpenDate?: string; + + /** + * For newly-introduced event tickets + * in iOS 18 + */ + venueCloseDate?: string; + venuePhoneNumber?: string; venueRoom?: string; @@ -231,6 +330,18 @@ export interface Semantics { */ venueEntranceGate?: string; + /** + * For newly-introduced event tickets + * in iOS 18 + */ + venueEntranceDoor?: string; + + /** + * For newly-introduced event tickets + * in iOS 18 + */ + venueEntrancePortal?: string; + wifiAccess?: SemanticTagType.WifiNetwork[]; } @@ -241,9 +352,29 @@ export const Semantics = Joi.object().keys({ */ admissionLevel: Joi.string(), + /** + * For newly-introduced event tickets + * in iOS 18 + */ + admissionLevelAbbreviation: Joi.string(), + airlineCode: Joi.string(), artistIDs: Joi.array().items(Joi.string()), + /** + * For newly-introduced event tickets + * in iOS 18 + */ + albumIDs: Joi.array().items(Joi.string()), + + /** + * For newly-introduced event tickets + * in iOS 18 + */ + airplay: Joi.array().items({ + airplayDeviceGroupToken: Joi.string(), + }), + /** * For newly-introduced event tickets * in iOS 18 @@ -254,6 +385,8 @@ export const Semantics = Joi.object().keys({ awayTeamLocation: Joi.string(), awayTeamName: Joi.string(), + additionalTicketAttributes: Joi.string(), + balance: CurrencyAmount, boardingGroup: Joi.string(), boardingSequenceNumber: Joi.string(), @@ -327,11 +460,15 @@ export const Semantics = Joi.object().keys({ performerNames: Joi.array().items(Joi.string()), priorityStatus: Joi.string(), + playlistIDs: Joi.array().items(Joi.string()), + seats: Joi.array().items(SeatSemantics), securityScreening: Joi.string(), silenceRequested: Joi.boolean(), sportName: Joi.string(), + tailgatingAllowed: Joi.number(), + totalPrice: CurrencyAmount, transitProvider: Joi.string(), transitStatus: Joi.string(), @@ -358,8 +495,31 @@ export const Semantics = Joi.object().keys({ */ venueParkingLotsOpenDate: Joi.string(), - venuePhoneNumber: Joi.string(), + /** + * For newly-introduced event tickets + * in iOS 18 + */ + venueBoxOfficeOpenDate: Joi.string(), + /** + * For newly-introduced event tickets + * in iOS 18 + */ + venueDoorsOpenDate: Joi.string(), + + /** + * For newly-introduced event tickets + * in iOS 18 + */ + venueFanZoneOpenDate: Joi.string(), + + /** + * For newly-introduced event tickets + * in iOS 18 + */ + venueCloseDate: Joi.string(), + + venuePhoneNumber: Joi.string(), venueRoom: Joi.string(), /** @@ -374,5 +534,17 @@ export const Semantics = Joi.object().keys({ */ venueEntranceGate: Joi.string(), + /** + * For newly-introduced event tickets + * in iOS 18 + */ + venueEntranceDoor: Joi.string(), + + /** + * For newly-introduced event tickets + * in iOS 18 + */ + venueEntrancePortal: Joi.string(), + wifiAccess: Joi.array().items(WifiNetwork), });