TicketUserServices

<back to all web services

PaymentCardsRequest

Requires Authentication
Requires any of the roles:Admin, TeamAdmin, MobileAppRequires the permission:ReadData
The following routes are available for this service:
POST/paymentCardsGet All Credit, Debit and KSI cards for this phone
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BorgunSavedCards:
    id: Optional[int] = None
    creation_date: Optional[datetime.datetime] = None
    last_token_date: Optional[datetime.datetime] = None
    is_debit: Optional[bool] = None
    phone_verification_number: Optional[str] = None
    device_id: Optional[str] = None
    virtual_card_number: Optional[str] = None
    pan_last_four: Optional[str] = None
    exp_year: Optional[str] = None
    exp_month: Optional[str] = None
    token: Optional[str] = None
    card_type: Optional[str] = None
    deleted_by_user: Optional[bool] = None
    deleted_from_origin: Optional[bool] = None
    date_deleted_by_user: Optional[datetime.datetime] = None
    date_deleted_from_origin: Optional[datetime.datetime] = None
    is_deleted: Optional[bool] = None
    date_deleted_by_system: Optional[datetime.datetime] = None
    deleted_by_system: Optional[bool] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class KsiCards:
    id: Optional[int] = None
    creation_date: Optional[datetime.datetime] = None
    phone_full_verification_number: Optional[str] = None
    device_id: Optional[str] = None
    ksi_card_type_id: Optional[str] = None
    ksi_club_id: Optional[str] = None
    holder_name: Optional[str] = None
    can_transfer_to_phone_full_number: Optional[str] = None
    can_transfer_to_n_name: Optional[str] = None
    exp_year: Optional[str] = None
    exp_month: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class OwnerCards:
    id: Optional[int] = None
    owner_id: Optional[int] = None
    owner_card_type_id: Optional[int] = None
    phone_verification_id: Optional[int] = None
    initial_max_tickets: Optional[int] = None
    current_available_tickets: Optional[int] = None
    time_stamp_created_u_t_c: Optional[datetime.datetime] = None
    time_stamp_last_changed_u_t_c: Optional[datetime.datetime] = None
    time_stamp_bought_u_t_c: Optional[datetime.datetime] = None
    time_stamp_ordered_u_t_c: Optional[datetime.datetime] = None
    card_valid_from_u_t_c: Optional[datetime.datetime] = None
    card_valid_to_u_t_c: Optional[datetime.datetime] = None
    has_store_credit: Optional[bool] = None
    card_price: Optional[Decimal] = None
    price_paid: Optional[Decimal] = None
    initial_store_credit: Optional[Decimal] = None
    current_store_credit: Optional[Decimal] = None
    phone_full_verification_number: Optional[str] = None
    holder_id: Optional[str] = None
    holder_name: Optional[str] = None
    holder_email: Optional[str] = None
    card_price_currency: Optional[str] = None
    price_paid_currency: Optional[str] = None
    device_id: Optional[str] = None
    payment_method_id: Optional[str] = None
    payment_reference: Optional[str] = None
    phone_verification_number: Optional[str] = None
    payment_phone_number: Optional[str] = None
    payment_id: Optional[str] = None
    payment_status: Optional[str] = None
    payment_token_id: Optional[str] = None
    max_tickets_per_event: Optional[int] = None
    multiple_payments_id: Optional[str] = None
    image_url: Optional[str] = None
    background_image_url: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class KsiCardTypes:
    ksi_card_type_id: Optional[str] = None
    ksi_card_type_name: Optional[str] = None
    ksi_card_type_description: Optional[str] = None
    card_type_owner: Optional[str] = None
    max_tickets_per_event: Optional[int] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class KsiCardInfo:
    card: Optional[KsiCards] = None
    card_type: Optional[KsiCardTypes] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class OwnerCardType:
    id: Optional[int] = None
    owner_id: Optional[int] = None
    max_tickets: Optional[int] = None
    time_stamp_created_u_t_c: Optional[datetime.datetime] = None
    time_stamp_last_changed_u_t_c: Optional[datetime.datetime] = None
    sale_start_date_u_t_c: Optional[datetime.datetime] = None
    sale_end_date_u_t_c: Optional[datetime.datetime] = None
    valid_start_date_for_new_cards_u_t_c: Optional[datetime.datetime] = None
    valid_end_date_for_new_cards_u_t_c: Optional[datetime.datetime] = None
    has_store_credit: Optional[bool] = None
    is_active: Optional[bool] = None
    only_for_team_use: Optional[bool] = None
    price: Optional[Decimal] = None
    initial_store_credit: Optional[Decimal] = None
    description: Optional[str] = None
    name: Optional[str] = None
    image_url: Optional[str] = None
    currency: Optional[str] = None
    max_tickets_per_event: Optional[int] = None
    background_image_url: Optional[str] = None
    valid_for_connected_owners: Optional[bool] = None
    super_owner_id: Optional[int] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class OwnerCardInfo:
    card: Optional[OwnerCards] = None
    card_type: Optional[OwnerCardType] = None
    owner_name: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PaymentCardsResult:
    cards: Optional[List[BorgunSavedCards]] = None
    ksi_cards: Optional[List[KsiCards]] = None
    owner_cards: Optional[List[OwnerCards]] = None
    ksi_card_info_list: Optional[List[KsiCardInfo]] = None
    owner_card_info_list: Optional[List[OwnerCardInfo]] = None
    status_code: Optional[int] = None
    message: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RequestSignature:
    system_id: Optional[str] = None
    system_secret: Optional[str] = None
    signature: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PaymentCardsRequest:
    phone_verification_number: Optional[str] = None
    device_id: Optional[str] = None
    only_for_event_id: Optional[int] = None
    check_for_expiry: Optional[bool] = None
    exclude_hidden_cards: Optional[bool] = None
    request_unix_u_t_c_time_stamp: Optional[int] = None
    include_deleted_cards: Optional[bool] = None
    signature: Optional[RequestSignature] = None

Python PaymentCardsRequest 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 /paymentCards HTTP/1.1 
Host: stubbur-autoupdates-live.smartnewapis.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	phoneVerificationNumber: String,
	deviceId: String,
	onlyForEventId: 0,
	checkForExpiry: False,
	excludeHiddenCards: False,
	requestUnixUTCTimeStamp: 0,
	includeDeletedCards: False,
	signature: 
	{
		systemId: String,
		systemSecret: String,
		signature: String
	}
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	cards: 
	[
		{
			id: 0,
			creationDate: 0001-01-01,
			lastTokenDate: 0001-01-01,
			isDebit: False,
			phoneVerificationNumber: String,
			deviceId: String,
			virtualCardNumber: String,
			panLastFour: String,
			expYear: String,
			expMonth: String,
			token: String,
			cardType: String,
			deletedByUser: False,
			deletedFromOrigin: False,
			dateDeletedByUser: 0001-01-01,
			dateDeletedFromOrigin: 0001-01-01,
			isDeleted: False,
			dateDeletedBySystem: 0001-01-01,
			deletedBySystem: False
		}
	],
	ksiCards: 
	[
		{
			id: 0,
			creationDate: 0001-01-01,
			phoneFullVerificationNumber: String,
			deviceId: String,
			ksiCardTypeId: String,
			ksiClubId: String,
			holderName: String,
			canTransferToPhoneFullNumber: String,
			canTransferToNName: String,
			expYear: String,
			expMonth: String
		}
	],
	ownerCards: 
	[
		{
			id: 0,
			ownerId: 0,
			ownerCardTypeId: 0,
			phoneVerificationId: 0,
			initialMaxTickets: 0,
			currentAvailableTickets: 0,
			timeStampCreatedUTC: 0001-01-01,
			timeStampLastChangedUTC: 0001-01-01,
			timeStampBoughtUTC: 0001-01-01,
			timeStampOrderedUTC: 0001-01-01,
			cardValidFromUTC: 0001-01-01,
			cardValidToUTC: 0001-01-01,
			hasStoreCredit: False,
			cardPrice: 0,
			pricePaid: 0,
			initialStoreCredit: 0,
			currentStoreCredit: 0,
			phoneFullVerificationNumber: String,
			holderId: String,
			holderName: String,
			holderEmail: String,
			cardPriceCurrency: String,
			pricePaidCurrency: String,
			deviceId: String,
			paymentMethodId: String,
			paymentReference: String,
			phoneVerificationNumber: String,
			paymentPhoneNumber: String,
			paymentId: String,
			paymentStatus: String,
			paymentTokenId: String,
			maxTicketsPerEvent: 0,
			multiplePaymentsId: String,
			imageUrl: String,
			backgroundImageUrl: String
		}
	],
	ksiCardInfoList: 
	[
		{
			card: 
			{
				id: 0,
				creationDate: 0001-01-01,
				phoneFullVerificationNumber: String,
				deviceId: String,
				ksiCardTypeId: String,
				ksiClubId: String,
				holderName: String,
				canTransferToPhoneFullNumber: String,
				canTransferToNName: String,
				expYear: String,
				expMonth: String
			},
			cardType: 
			{
				ksiCardTypeId: String,
				ksiCardTypeName: String,
				ksiCardTypeDescription: String,
				cardTypeOwner: String,
				maxTicketsPerEvent: 0
			}
		}
	],
	ownerCardInfoList: 
	[
		{
			card: 
			{
				id: 0,
				ownerId: 0,
				ownerCardTypeId: 0,
				phoneVerificationId: 0,
				initialMaxTickets: 0,
				currentAvailableTickets: 0,
				timeStampCreatedUTC: 0001-01-01,
				timeStampLastChangedUTC: 0001-01-01,
				timeStampBoughtUTC: 0001-01-01,
				timeStampOrderedUTC: 0001-01-01,
				cardValidFromUTC: 0001-01-01,
				cardValidToUTC: 0001-01-01,
				hasStoreCredit: False,
				cardPrice: 0,
				pricePaid: 0,
				initialStoreCredit: 0,
				currentStoreCredit: 0,
				phoneFullVerificationNumber: String,
				holderId: String,
				holderName: String,
				holderEmail: String,
				cardPriceCurrency: String,
				pricePaidCurrency: String,
				deviceId: String,
				paymentMethodId: String,
				paymentReference: String,
				phoneVerificationNumber: String,
				paymentPhoneNumber: String,
				paymentId: String,
				paymentStatus: String,
				paymentTokenId: String,
				maxTicketsPerEvent: 0,
				multiplePaymentsId: String,
				imageUrl: String,
				backgroundImageUrl: String
			},
			cardType: 
			{
				id: 0,
				ownerId: 0,
				maxTickets: 0,
				timeStampCreatedUTC: 0001-01-01,
				timeStampLastChangedUTC: 0001-01-01,
				saleStartDateUTC: 0001-01-01,
				saleEndDateUTC: 0001-01-01,
				validStartDateForNewCardsUTC: 0001-01-01,
				validEndDateForNewCardsUTC: 0001-01-01,
				hasStoreCredit: False,
				isActive: False,
				onlyForTeamUse: False,
				price: 0,
				initialStoreCredit: 0,
				description: String,
				name: String,
				imageUrl: String,
				currency: String,
				maxTicketsPerEvent: 0,
				backgroundImageUrl: String,
				validForConnectedOwners: False,
				superOwnerId: 0
			},
			ownerName: String
		}
	],
	statusCode: 0,
	message: String
}