bam-ticketing-sdk
Version:
SDK for B.A.M Ticketing API
135 lines (121 loc) • 3.13 kB
text/typescript
import { OrderAttribute } from '../common/attributes'
import { IdParam, PagingQuery } from '../common/types'
import { Ticket } from '../event/types'
export type TicketFormatType = 'PDF' | 'SECURE' | 'PKPASS'
/**
* Payload for order creation
*
* @param orderItem Array of `OrderItem`s
* @param format Format of the tickets (PDF, SECURE or PKPASS)
* @param holdToken Hold token for seat reservation generated on Seats.io (if seating chart is used)
*/
export interface OrderRequest {
orderItem: OrderItemRequest[]
format: TicketFormatType
holdToken?: string
orderContact?: OrderContactRequest
}
/**
* Single order item inside the order
*
* @param quantity Number of tickets inside the order item
* @param ticketConfigId Id of the ticket configuration
* @param timeslotId Id of the timeslot where the ticket is reserved
* @param sectorId Id of the sector where the ticket is reserved
* @param ticketDiscount Array of ticket discount IDs applied to the order item
* @param selectedSeats Array of seat labels generated on Seats.io (if seating chart is used)
*/
export interface OrderItemRequest {
quantity: number
ticketConfigId: number
timeslotId?: number
sectorId?: number
ticketDiscount?: number[]
selectedSeats?: string[]
}
export interface OrderContactRequest {
firstName: string
lastName: string
email: string
billingEmail: string
phone?: string
street1?: string
street2?: string
city?: string
zip?: string
state?: string
country?: string
vatNumber?: string
businessName?: string
}
export interface OrderItem {
id: number
price: number
ticket: Ticket[]
}
export interface Order {
id: number
ownerId: string
ownerType: string
paymentId?: string
format: string
status?: OrderStatus
total?: number
refundedAmount?: number
paymentCreatedAt?: Date
createdAt: Date
currency?: string
holdToken?: string
orderItem?: OrderItem[]
orderContact?: OrderContact
}
export interface OrderContact extends OrderContactRequest {
id: number
}
export interface OrderGet extends IdParam {
with?: OrderAttribute
}
export enum OrderStatus {
/**
* Initial order state
*/
Draft = 'draft',
/**
* The state of the payment after a payment is associated to it
*/
PaymentProcessing = 'payment_processing',
/**
* The state of the order after the payment wasn't made in the payment window
* or if the payment has timed out
* or if the payment has been manually canceled
* This is an end state
*/
Canceled = 'payment_failed',
/**
* State after a successful payment confirmation
*/
Paid = 'paid',
/**
* State when some tickets were refunded, but not all
* The only further state is `refunded`
*/
PartiallyRefunded = 'partially_refunded',
/**
* State of order after its payment is refunded
* Should release the associated tickets
* This is an end state
*/
Refunded = 'refunded',
}
export interface OrderListQuery extends PagingQuery {
organizer_id?: string
include_not_owned?: boolean
id?: number
contact_email?: string
event_id?: number
sort_by?: string
with?: OrderAttribute
}
export interface RefundOrderBody {
ticketIds?: number[]
}