TicketUserServices

<back to all web services

OwnerCardsUpgradeRequest

Requires Authentication
Requires any of the roles:Admin, TeamAdminRequires the permission:ReadData
The following routes are available for this service:
POST/OrderOwnerCards/upgradeCharge the delta, issue the target card (PricePaid = delta), revoke the source card, re-link future tickets — one transaction, idempotent
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 GeneralOrderResponse:
    status_code: Optional[int] = None
    message: Optional[str] = None
    success: Optional[bool] = None
    payment_is_pending: Optional[bool] = None
    order_token_id: 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
    order_reference: Optional[str] = None
    upgraded_from_owner_card_id: Optional[int] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class OwnerCardsOrderResult(GeneralOrderResponse):
    cards: Optional[List[OwnerCards]] = None
    order_reference: Optional[str] = None
    is_subscription: Optional[bool] = None
    monthly_price: Optional[Decimal] = None
    transaction_fee: Optional[Decimal] = None
    months: Optional[int] = None
    payment_token_id: Optional[str] = None
    subscription_token_missing: Optional[bool] = None
    price_total: Optional[int] = None
    discount_amount: Optional[int] = None
    gift_card_amount: Optional[int] = None
    donation_amount: Optional[int] = None
    charged_amount: Optional[int] = None
    reason: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class OwnerCardsUpgradeResult(OwnerCardsOrderResult):
    source_owner_card_id: Optional[int] = None
    source_owner_card_type_id: Optional[int] = None
    source_type_name: Optional[str] = None
    new_owner_card_id: Optional[int] = None
    target_owner_card_type_id: Optional[int] = None
    target_type_name: Optional[str] = None
    relinked_tickets: Optional[int] = None
    payment_reference: Optional[str] = None
    refund_pending: Optional[bool] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Borgun3DFinalPaymentMethodInfo:
    payment_type: Optional[str] = None
    token: Optional[str] = None
    virtual_number: Optional[str] = None
    exp_year: Optional[str] = None
    exp_month: Optional[str] = None
    pan_last_four: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Borgun3DFinal3DSecureInfo:
    data_type: Optional[str] = None
    mpi_token: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Borgun3DFinalRequest:
    transaction_type: Optional[str] = None
    amount: Optional[int] = None
    currency: Optional[str] = None
    transaction_date: Optional[datetime.datetime] = None
    order_id: Optional[str] = None
    payment_method: Optional[Borgun3DFinalPaymentMethodInfo] = None
    three_d_secure: Optional[Borgun3DFinal3DSecureInfo] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class OrderTender:
    kind: Optional[str] = None
    code: Optional[str] = None
    amount_minor: Optional[int] = None
    idempotency_key: Optional[str] = None
    hold_id: Optional[int] = None
    applied_minor: Optional[int] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class OwnerCardsUpgradeRequest:
    buyer_phone: Optional[str] = None
    source_owner_card_id: Optional[int] = None
    target_owner_card_type_id: Optional[int] = None
    idempotency_key: Optional[str] = None
    payment_method_id: Optional[str] = None
    borgun3_d_final_info: Optional[Borgun3DFinalRequest] = None
    tenders: Optional[List[OrderTender]] = None
    holder_name: Optional[str] = None
    holder_email: Optional[str] = None
    device_id: Optional[str] = None
    return_cards: Optional[bool] = None

Python OwnerCardsUpgradeRequest DTOs

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

To embed the response in a jsonp callback, append ?callback=myCallback

HTTP + JSON

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

POST /OrderOwnerCards/upgrade HTTP/1.1 
Host: stubbur-app.azurewebsites.net 
Accept: application/json
Content-Type: application/json
Content-Length: length

{"buyerPhone":"String","sourceOwnerCardId":0,"targetOwnerCardTypeId":0,"idempotencyKey":"String","paymentMethodId":"String","borgun3DFinalInfo":{"transactionType":"String","amount":0,"currency":"String","transactionDate":"0001-01-01T00:00:00.0000000","orderId":"String","paymentMethod":{"paymentType":"String","token":"String","virtualNumber":"String","expYear":"String","expMonth":"String","panLastFour":"String"},"threeDSecure":{"dataType":"String","mpiToken":"String"}},"tenders":[{"kind":"String","code":"String","amountMinor":0,"idempotencyKey":"String","holdId":0,"appliedMinor":0}],"holderName":"String","holderEmail":"String","deviceId":"String","returnCards":false}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{"sourceOwnerCardId":0,"sourceOwnerCardTypeId":0,"sourceTypeName":"String","newOwnerCardId":0,"targetOwnerCardTypeId":0,"targetTypeName":"String","relinkedTickets":0,"paymentReference":"String","refundPending":false,"cards":[{"id":0,"ownerId":0,"ownerCardTypeId":0,"phoneVerificationId":0,"initialMaxTickets":0,"currentAvailableTickets":0,"timeStampCreatedUTC":"0001-01-01T00:00:00.0000000","timeStampLastChangedUTC":"0001-01-01T00:00:00.0000000","timeStampBoughtUTC":"0001-01-01T00:00:00.0000000","timeStampOrderedUTC":"0001-01-01T00:00:00.0000000","cardValidFromUTC":"0001-01-01T00:00:00.0000000","cardValidToUTC":"0001-01-01T00:00:00.0000000","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","orderReference":"String","upgradedFromOwnerCardId":0}],"orderReference":"String","isSubscription":false,"monthlyPrice":0,"transactionFee":0,"months":0,"paymentTokenId":"String","subscriptionTokenMissing":false,"priceTotal":0,"discountAmount":0,"giftCardAmount":0,"donationAmount":0,"chargedAmount":0,"reason":"String","statusCode":0,"message":"String","success":false,"paymentIsPending":false,"orderTokenId":"String"}