TicketUserServices

<back to all web services

TicketOrder

Requires Authentication
Requires any of the roles:Admin, TeamAdmin, MobileAppRequires the permission:ReadData
The following routes are available for this service:
GET POST/ticketOrder
import Foundation
import ServiceStack

public class TicketOrder : Codable
{
    public var teamPass:TeamPassType?
    public var order:Ticket?
    public var orderDetails:[TicketDetails] = []
    public var ticketHolders:TicketHoldersList?
    public var seatReservationTokenId:String?
    public var cardInfo:PaymentRequestCreditCard?
    public var paymentPhoneNumber:String?
    public var paymentCardId:Int?
    public var requestUnixUTCTimeStamp:Int?
    public var signature:RequestSignature?
    public var phoneVerificationNumber:String?
    public var deviceId:String?
    public var dontReturnTickets:Bool?
    public var appMetaData:String?
    public var applePayInfo:BorgunApplePayFinalInfo?
    public var borgun3DFinalInfo:Borgun3DFinalRequest?

    required public init(){}
}

public class TeamPassType : Codable
{
    public var id:Int?
    public var name:String?
    public var price:Double?
    public var seriesId:Int?
    public var ownerId:Int?
    public var seriesTicketType:Int?
    public var seriesOwnerTicketType:Int?
    public var isActive:Bool?
    public var onlyForTeamUse:Bool?
    public var timestampCreated:Date?
    public var timestampLastChanged:Date?

    required public init(){}
}

public class Ticket : Codable
{
    public var id:Int?
    public var userId:Int?
    public var userAuthId:Int?
    public var eventId:Int?
    public var timestampBought:Date?
    public var timestampActivated:Date?
    public var timeStampOrdered:Date?
    public var deviceId:String?
    public var phoneVerificationId:Int?
    public var paymentMethodId:String?
    public var paymentReference:String?
    public var ticketStatus:String?
    public var phoneVerificationNumber:String?
    public var ticketTokenId:String?
    public var paymentPhoneNumber:String?
    public var ticketTransferredFrom:Int?
    public var originalPhoneVerificationNumber:String?
    public var teamPassId:Int?
    public var paymentId:String?
    public var isFree:Bool?
    public var freeTicketFromId:String?
    public var freeTicketFromTypeId:String?
    public var freeTicketCardTypeId:String?
    public var freeTicketCardId:Int?
    public var totalPaidForTicket:Double?
    public var seatsReservationId:String?
    public var timeStampLastStatusChange:Date?
    public var lastTicketStatus:String?
    public var scanCode:String?
    public var scanCodeType:String?
    public var scanCodeNotActive:Bool?
    public var multipleScanCodes:Bool?
    public var currency:String?
    public var ticketHasExpired:Bool?

    required public init(){}
}

public class TicketDetails : Codable
{
    public var id:Int?
    public var ticketId:Int?
    public var eventSeriesTicketType:Int?
    public var eventSeriesOwnerTicketType:Int?
    public var ticketPrice:Double?
    public var totalPrice:Double?
    public var count:Int?
    public var ticketColor:String?
    public var showUsedTickets:Bool?
    public var ticketName:String?
    public var ticketDisplayString:String?
    public var ticketDetailsTransferredFrom:Int?
    public var teamPassId:Int?
    public var isSpecialTicket:Bool?
    public var specialTicketId:String?
    public var justChangedBySQL:Bool?
    public var sqlJustChangedTimeStamp:Date?
    public var currency:String?

    required public init(){}
}

public class TicketHoldersList : Codable
{
    public var ticketHolders:[TicketHolderInfo] = []
    public var holderInfoRequired:Bool?

    required public init(){}
}

public class TicketHolderInfo : Codable
{
    public var name:String?
    public var fullPhoneNumber:String?
    public var holderId:String?
    public var seatId:Int?
    public var seatDisplayString:String?

    required public init(){}
}

public class PaymentRequestCreditCard : Codable
{
    public var paymentMethod:PaymentMethodCreditCardInfo?
    public var amount:Double?
    public var currency:String?
    public var orderId:String?
    public var transActionDate:Date?
    public var saveCardToToken:Bool?

    required public init(){}
}

public class PaymentMethodCreditCardInfo : Codable
{
    public var paymentType:String?
    public var token:String?
    public var pan:String?
    public var expYear:String?
    public var expMonth:String?
    public var cvc:String?

    required public init(){}
}

public class RequestSignature : Codable
{
    public var systemId:String?
    public var systemSecret:String?
    public var signature:String?

    required public init(){}
}

public class BorgunApplePayFinalInfo : Codable
{
    public var orderId:String?
    public var threeDSecure:BorgunApplePayThreeDSecureInfo?

    required public init(){}
}

public class BorgunApplePayThreeDSecureInfo : Codable
{
    public var dataType:String?
    public var securityLevelInd:String?
    public var cavv:String?
    public var ucaf:String?

    required public init(){}
}

public class Borgun3DFinalRequest : Codable
{
    public var transactionType:String?
    public var amount:Int?
    public var currency:String?
    public var transactionDate:Date?
    public var orderId:String?
    public var paymentMethod:Borgun3DFinalPaymentMethodInfo?
    public var threeDSecure:Borgun3DFinal3DSecureInfo?

    required public init(){}
}

public class Borgun3DFinalPaymentMethodInfo : Codable
{
    public var paymentType:String?
    public var token:String?

    required public init(){}
}

public class Borgun3DFinal3DSecureInfo : Codable
{
    public var dataType:String?
    public var mpiToken:String?

    required public init(){}
}

public class TicketOrderResult : Codable
{
    public var ticketAndDetails:EventTicketWithDetails?
    public var statusCode:Int?
    public var message:String?

    required public init(){}
}

public class EventTicketWithDetails : Codable
{
    public var eventTicket:Ticket?
    public var eventTicketDetails:[TicketDetailsInfo] = []
    public var eventInfo:EventDetails?
    public var eventIsToday:Bool?
    public var eventisLive:Bool?
    public var minutesToEvent:Int?

    required public init(){}
}

public class TicketDetailsInfo : TicketDetails
{
    public var holderInfoRequired:Bool?
    public var blockTransfer:Bool?
    public var ticketTypeImageUrl:String?
    public var ticketHolders:[TicketHolderInfo] = []
    public var gateAccessCodes:[ExternalGateAccessCodeInfo] = []

    required public init(){ super.init() }

    private enum CodingKeys : String, CodingKey {
        case holderInfoRequired
        case blockTransfer
        case ticketTypeImageUrl
        case ticketHolders
        case gateAccessCodes
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        holderInfoRequired = try container.decodeIfPresent(Bool.self, forKey: .holderInfoRequired)
        blockTransfer = try container.decodeIfPresent(Bool.self, forKey: .blockTransfer)
        ticketTypeImageUrl = try container.decodeIfPresent(String.self, forKey: .ticketTypeImageUrl)
        ticketHolders = try container.decodeIfPresent([TicketHolderInfo].self, forKey: .ticketHolders) ?? []
        gateAccessCodes = try container.decodeIfPresent([ExternalGateAccessCodeInfo].self, forKey: .gateAccessCodes) ?? []
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if holderInfoRequired != nil { try container.encode(holderInfoRequired, forKey: .holderInfoRequired) }
        if blockTransfer != nil { try container.encode(blockTransfer, forKey: .blockTransfer) }
        if ticketTypeImageUrl != nil { try container.encode(ticketTypeImageUrl, forKey: .ticketTypeImageUrl) }
        if ticketHolders.count > 0 { try container.encode(ticketHolders, forKey: .ticketHolders) }
        if gateAccessCodes.count > 0 { try container.encode(gateAccessCodes, forKey: .gateAccessCodes) }
    }
}

public class ExternalGateAccessCodeInfo : Codable
{
    public var code:String?
    public var codeType:String?
    public var codeUrl:String?
    public var validFrom:Date?
    public var validTo:Date?

    required public init(){}
}

public class EventDetails : Codable
{
    public var id:Int?
    public var name:String?
    public var Description:String?
    public var externalReference:String?
    public var timeOfEvent:Date?
    public var eventLocationId:Int?
    public var eventSeriesId:Int?
    public var eventOwnerId:Int?
    public var eventActive:Bool?
    public var eventOwnerName:String?
    public var externalOwnerId:String?
    public var teamAwayId:String?
    public var teamAwayName:String?
    public var eventSeriesName:String?
    public var eventLocationName:String?
    public var latitude:Double?
    public var longitude:Double?
    public var defaultValues:String?
    public var externalReferenceType:String?
    public var eventSeriesActive:Bool?
    public var allowedKsiCard:String?
    public var seriesId:String?
    public var seriesShowByDefault:Bool?
    public var postponedNoDate:Bool?
    public var awayTeamExternalId:String?
    public var sportGenderId:String?
    public var externalIdType:String?
    public var seriesEventSaleSuspended:Bool?
    public var seriesSaleSuspensionEventStartDate:Date?
    public var seriesSaleSuspensionEventEndDate:Date?
    public var saleIsActive:Bool?
    public var hideEvent:Bool?
    public var imageUrl2:String?
    public var directAccessCode:String?
    public var imageUrl:String?
    public var detailedDescription:String?
    public var ownerImageUrl:String?
    public var ownerImageUrl2:String?
    public var ownerCardsNotAllowed:Bool?
    public var seatingImageUrl:String?
    public var endOfEvent:Date?
    public var endOfEventUTC:Date?
    public var timeZone:String?
    public var timeOfEventUTC:Date?

    required public init(){}
}


Swift TicketOrder DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /ticketOrder HTTP/1.1 
Host: stubbur-autoupdates-live.smartnewapis.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	teamPass: 
	{
		id: 0,
		name: String,
		price: 0,
		seriesId: 0,
		ownerId: 0,
		seriesTicketType: 0,
		seriesOwnerTicketType: 0,
		isActive: False,
		onlyForTeamUse: False,
		timestampCreated: 0001-01-01,
		timestampLastChanged: 0001-01-01
	},
	order: 
	{
		id: 0,
		userId: 0,
		userAuthId: 0,
		eventId: 0,
		timestampBought: 0001-01-01,
		timestampActivated: 0001-01-01,
		timeStampOrdered: 0001-01-01,
		deviceId: String,
		phoneVerificationId: 0,
		paymentMethodId: String,
		paymentReference: String,
		ticketStatus: String,
		phoneVerificationNumber: String,
		ticketTokenId: String,
		paymentPhoneNumber: String,
		ticketTransferredFrom: 0,
		originalPhoneVerificationNumber: String,
		teamPassId: 0,
		paymentId: String,
		isFree: False,
		freeTicketFromId: String,
		freeTicketFromTypeId: String,
		freeTicketCardTypeId: String,
		freeTicketCardId: 0,
		totalPaidForTicket: 0,
		seatsReservationId: String,
		timeStampLastStatusChange: 0001-01-01,
		lastTicketStatus: String,
		scanCode: String,
		scanCodeType: String,
		scanCodeNotActive: False,
		multipleScanCodes: False,
		currency: String,
		ticketHasExpired: False
	},
	orderDetails: 
	[
		{
			id: 0,
			ticketId: 0,
			eventSeriesTicketType: 0,
			eventSeriesOwnerTicketType: 0,
			ticketPrice: 0,
			totalPrice: 0,
			count: 0,
			ticketColor: String,
			showUsedTickets: False,
			ticketName: String,
			ticketDisplayString: String,
			ticketDetailsTransferredFrom: 0,
			teamPassId: 0,
			isSpecialTicket: False,
			specialTicketId: String,
			justChangedBySQL: False,
			sqlJustChangedTimeStamp: 0001-01-01,
			currency: String
		}
	],
	ticketHolders: 
	{
		ticketHolders: 
		[
			{
				name: String,
				fullPhoneNumber: String,
				holderId: String,
				seatId: 0,
				seatDisplayString: String
			}
		],
		holderInfoRequired: False
	},
	seatReservationTokenId: String,
	cardInfo: 
	{
		paymentMethod: 
		{
			paymentType: String,
			token: String,
			pan: String,
			expYear: String,
			expMonth: String,
			cvc: String
		},
		amount: 0,
		currency: String,
		orderId: String,
		transActionDate: 0001-01-01,
		saveCardToToken: False
	},
	paymentPhoneNumber: String,
	paymentCardId: 0,
	requestUnixUTCTimeStamp: 0,
	signature: 
	{
		systemId: String,
		systemSecret: String,
		signature: String
	},
	phoneVerificationNumber: String,
	deviceId: String,
	dontReturnTickets: False,
	appMetaData: String,
	applePayInfo: 
	{
		orderId: String,
		threeDSecure: 
		{
			dataType: String,
			securityLevelInd: String,
			cavv: String,
			ucaf: String
		}
	},
	borgun3DFinalInfo: 
	{
		transactionType: String,
		amount: 0,
		currency: String,
		transactionDate: 0001-01-01,
		orderId: String,
		paymentMethod: 
		{
			paymentType: String,
			token: String
		},
		threeDSecure: 
		{
			dataType: String,
			mpiToken: String
		}
	}
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	ticketAndDetails: 
	{
		eventTicket: 
		{
			id: 0,
			userId: 0,
			userAuthId: 0,
			eventId: 0,
			timestampBought: 0001-01-01,
			timestampActivated: 0001-01-01,
			timeStampOrdered: 0001-01-01,
			deviceId: String,
			phoneVerificationId: 0,
			paymentMethodId: String,
			paymentReference: String,
			ticketStatus: String,
			phoneVerificationNumber: String,
			ticketTokenId: String,
			paymentPhoneNumber: String,
			ticketTransferredFrom: 0,
			originalPhoneVerificationNumber: String,
			teamPassId: 0,
			paymentId: String,
			isFree: False,
			freeTicketFromId: String,
			freeTicketFromTypeId: String,
			freeTicketCardTypeId: String,
			freeTicketCardId: 0,
			totalPaidForTicket: 0,
			seatsReservationId: String,
			timeStampLastStatusChange: 0001-01-01,
			lastTicketStatus: String,
			scanCode: String,
			scanCodeType: String,
			scanCodeNotActive: False,
			multipleScanCodes: False,
			currency: String,
			ticketHasExpired: False
		},
		eventTicketDetails: 
		[
			{
				
			}
		],
		eventInfo: 
		{
			id: 0,
			name: String,
			description: String,
			externalReference: String,
			timeOfEvent: 0001-01-01,
			eventLocationId: 0,
			eventSeriesId: 0,
			eventOwnerId: 0,
			eventActive: False,
			eventOwnerName: String,
			externalOwnerId: String,
			teamAwayId: String,
			teamAwayName: String,
			eventSeriesName: String,
			eventLocationName: String,
			latitude: 0,
			longitude: 0,
			defaultValues: String,
			externalReferenceType: String,
			eventSeriesActive: False,
			allowedKsiCard: String,
			seriesId: String,
			seriesShowByDefault: False,
			postponedNoDate: False,
			awayTeamExternalId: String,
			sportGenderId: String,
			externalIdType: String,
			seriesEventSaleSuspended: False,
			seriesSaleSuspensionEventStartDate: 0001-01-01,
			seriesSaleSuspensionEventEndDate: 0001-01-01,
			saleIsActive: False,
			hideEvent: False,
			imageUrl2: String,
			directAccessCode: String,
			imageUrl: String,
			detailedDescription: String,
			ownerImageUrl: String,
			ownerImageUrl2: String,
			ownerCardsNotAllowed: False,
			seatingImageUrl: String,
			endOfEvent: 0001-01-01,
			endOfEventUTC: 0001-01-01,
			timeZone: String,
			timeOfEventUTC: 0001-01-01
		},
		eventIsToday: False,
		eventisLive: False,
		minutesToEvent: 0
	},
	statusCode: 0,
	message: String
}