TicketUserServices

<back to all web services

SupportCustomer360Request

Requires Authentication
Requires the role:AdminRequires the permission:ReadData
The following routes are available for this service:
POST/Support/Customer360
import Foundation
import ServiceStack

public class SupportCustomer360Request : Codable
{
    public var phone:String?
    public var email:String?

    required public init(){}
}

public class SupportCustomer360Result : Codable
{
    public var phone:String?
    public var email:String?
    public var tickets:[SupportTicketRow] = []
    public var ownerCards:[SupportOwnerCardRow] = []
    public var webshopOrders:[SupportWebshopOrderRow] = []
    public var giftCards:[SupportGiftCardRow] = []
    public var sharedTicketLinks:[SupportSharedLinkRow] = []
    public var totals:SupportCustomerTotals?
    public var warnings:[String] = []
    public var statusCode:Int?
    public var message:String?

    required public init(){}
}

public class SupportTicketRow : Codable
{
    public var ticketId:Int?
    public var ticketTokenId:String?
    public var eventId:Int?
    public var event:String?
    public var timeOfEventUTC:Date?
    public var eventOwnerId:Int?
    public var eventOwnerName:String?
    public var ticketStatus:String?
    public var ticketName:String?
    public var paymentMethodId:String?
    public var paymentId:String?
    public var paymentReference:String?
    public var timestampBought:Date?
    public var timestampActivated:Date?
    public var holderName:String?
    public var phoneVerificationNumber:String?
    public var paymentPhoneNumber:String?
    public var seatDisplayString:String?
    public var sectionName:String?
    public var rowName:String?
    public var seatName:String?
    public var totalPrice:Double?
    public var count:Int?
    public var ticketTransferredFrom:Int?
    public var originalPhoneVerificationNumber:String?
    public var deviceId:String?
    public var neverOpened:Bool?

    required public init(){}
}

public class SupportOwnerCardRow : Codable
{
    public var id:Int?
    public var ownerId:Int?
    public var ownerName:String?
    public var ownerCardTypeId:Int?
    public var ownerCardTypeName:String?
    public var holderName:String?
    public var holderEmail:String?
    public var phoneVerificationNumber:String?
    public var paymentPhoneNumber:String?
    public var paymentStatus:String?
    public var paymentMethodId:String?
    public var paymentId:String?
    public var paymentReference:String?
    public var timeStampBoughtUTC:Date?
    public var cardValidFromUTC:Date?
    public var cardValidToUTC:Date?
    public var initialMaxTickets:Int?
    public var currentAvailableTickets:Int?
    public var cardPrice:Double?
    public var pricePaid:Double?
    public var currentStoreCredit:Double?

    required public init(){}
}

public class SupportWebshopOrderRow : Codable
{
    public var id:Int?
    public var orderReference:String?
    public var ownerId:Int?
    public var ownerName:String?
    public var status:String?
    public var totalMinor:Int?
    public var deliveryFeeMinor:Int?
    public var totalDiscountMinor:Int?
    public var giftPaidMinor:Int?
    public var currency:String?
    public var deliveryType:String?
    public var paymentMethodId:String?
    public var paymentId:String?
    public var paymentReference:String?
    public var createdAt:Date?
    public var updatedAt:Date?
    public var buyerName:String?
    public var buyerEmail:String?
    public var buyerPhone:String?
    public var lines:[WebshopOrderLine] = []

    required public init(){}
}

public class WebshopOrderLine : Codable
{
    public var id:Int?
    public var orderId:Int?
    public var productId:Int?
    public var variantId:Int?
    // @StringLength(200)
    public var productName:String?

    // @StringLength(50)
    public var size:String?

    // @StringLength(50)
    public var color:String?

    public var unitPriceMinor:Int?
    public var quantity:Int?
    public var lineTotalMinor:Int?
    // @StringLength(20)
    public var status:String?

    public var legacyDetailId:Int?
    public var createdAt:Date?

    required public init(){}
}

public class SupportGiftCardRow : Codable
{
    public var id:Int?
    public var codeLast4:String?
    public var codeMasked:String?
    public var status:String?
    public var scope:String?
    public var scopeOwnerId:Int?
    public var scopeOwnerName:String?
    public var purchaseOwnerId:Int?
    public var purchaseOwnerName:String?
    public var currency:String?
    public var initialValueMinor:Int?
    public var currentBalanceMinor:Int?
    public var createdAt:Date?
    public var activatedAt:Date?
    public var expiresAt:Date?
    public var purchasePaymentReference:String?
    public var paymentId:String?
    public var paymentMethodId:String?
    public var buyerName:String?
    public var buyerEmail:String?
    public var buyerPhone:String?

    required public init(){}
}

public class SupportSharedLinkRow : Codable
{
    public var id:Int?
    public var eventId:Int?
    public var eventName:String?
    public var eventOwnerId:Int?
    public var eventOwnerName:String?
    public var status:String?
    public var recipientPhone:String?
    public var recipientEmail:String?
    public var ticketCount:Int?
    public var createdAt:Date?
    public var validTo:Date?
    public var soldAt:Date?
    public var soldTicketOrderId:Int?

    required public init(){}
}

public class SupportCustomerTotals : Codable
{
    public var ticketSpend:Double?
    public var ticketSpendLive:Double?
    public var webshopSpendMinor:Int?
    public var giftCardSpendMinor:Int?

    required public init(){}
}


Swift SupportCustomer360Request 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 /Support/Customer360 HTTP/1.1 
Host: stubbur-app.azurewebsites.net 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	phone: String,
	email: String
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	phone: String,
	email: String,
	tickets: 
	[
		{
			ticketId: 0,
			ticketTokenId: String,
			eventId: 0,
			event: String,
			timeOfEventUTC: 0001-01-01,
			eventOwnerId: 0,
			eventOwnerName: String,
			ticketStatus: String,
			ticketName: String,
			paymentMethodId: String,
			paymentId: String,
			paymentReference: String,
			timestampBought: 0001-01-01,
			timestampActivated: 0001-01-01,
			holderName: String,
			phoneVerificationNumber: String,
			paymentPhoneNumber: String,
			seatDisplayString: String,
			sectionName: String,
			rowName: String,
			seatName: String,
			totalPrice: 0,
			count: 0,
			ticketTransferredFrom: 0,
			originalPhoneVerificationNumber: String,
			deviceId: String,
			neverOpened: False
		}
	],
	ownerCards: 
	[
		{
			id: 0,
			ownerId: 0,
			ownerName: String,
			ownerCardTypeId: 0,
			ownerCardTypeName: String,
			holderName: String,
			holderEmail: String,
			phoneVerificationNumber: String,
			paymentPhoneNumber: String,
			paymentStatus: String,
			paymentMethodId: String,
			paymentId: String,
			paymentReference: String,
			timeStampBoughtUTC: 0001-01-01,
			cardValidFromUTC: 0001-01-01,
			cardValidToUTC: 0001-01-01,
			initialMaxTickets: 0,
			currentAvailableTickets: 0,
			cardPrice: 0,
			pricePaid: 0,
			currentStoreCredit: 0
		}
	],
	webshopOrders: 
	[
		{
			id: 0,
			orderReference: String,
			ownerId: 0,
			ownerName: String,
			status: String,
			totalMinor: 0,
			deliveryFeeMinor: 0,
			totalDiscountMinor: 0,
			giftPaidMinor: 0,
			currency: String,
			deliveryType: String,
			paymentMethodId: String,
			paymentId: String,
			paymentReference: String,
			createdAt: 0001-01-01,
			updatedAt: 0001-01-01,
			buyerName: String,
			buyerEmail: String,
			buyerPhone: String,
			lines: 
			[
				{
					id: 0,
					orderId: 0,
					productId: 0,
					variantId: 0,
					productName: String,
					size: String,
					color: String,
					unitPriceMinor: 0,
					quantity: 0,
					lineTotalMinor: 0,
					status: String,
					legacyDetailId: 0,
					createdAt: 0001-01-01
				}
			]
		}
	],
	giftCards: 
	[
		{
			id: 0,
			codeLast4: String,
			codeMasked: String,
			status: String,
			scope: String,
			scopeOwnerId: 0,
			scopeOwnerName: String,
			purchaseOwnerId: 0,
			purchaseOwnerName: String,
			currency: String,
			initialValueMinor: 0,
			currentBalanceMinor: 0,
			createdAt: 0001-01-01,
			activatedAt: 0001-01-01,
			expiresAt: 0001-01-01,
			purchasePaymentReference: String,
			paymentId: String,
			paymentMethodId: String,
			buyerName: String,
			buyerEmail: String,
			buyerPhone: String
		}
	],
	sharedTicketLinks: 
	[
		{
			id: 0,
			eventId: 0,
			eventName: String,
			eventOwnerId: 0,
			eventOwnerName: String,
			status: String,
			recipientPhone: String,
			recipientEmail: String,
			ticketCount: 0,
			createdAt: 0001-01-01,
			validTo: 0001-01-01,
			soldAt: 0001-01-01,
			soldTicketOrderId: 0
		}
	],
	totals: 
	{
		ticketSpend: 0,
		ticketSpendLive: 0,
		webshopSpendMinor: 0,
		giftCardSpendMinor: 0
	},
	warnings: 
	[
		String
	],
	statusCode: 0,
	message: String
}