tickethead-sdk
Version:
SDK for the Tickethead API
896 lines • 21.8 kB
TypeScript
import { IdParam, PagingQuery } from '../common/types';
import { CategoryAttribute, EventAttribute, InformationEmailAttribute, QuestionnaireAttribute, SectorAttribute, SendTicketRequestAttribute, TicketConfigAttribute, TicketDiscountAttribute, TimeslotAttribute } from '../common/attributes';
import { Organizer } from '../account';
import { Venue } from '../venue';
import { Query } from '../common/query';
/**
* Event interface
*/
export interface Event {
id: number;
name: string;
status: EventStatus;
type: string;
startAt: Date;
endAt: Date;
gateTime: Date;
presaleEndAt?: Date;
createdAt: Date;
mainImageUri: string;
sectorsMapImageUri: string;
description: string;
tos: string;
contactEmail: string;
contactPhone: string;
venueId: string;
organizerId: string;
enrollmentId: string;
chartKey: string;
rulesetKey: string;
kycLevelId: number;
ticketActivationPeriod?: number;
localTicketValidation?: boolean;
localValidationServerUrl?: string;
ticketConfig: TicketConfig[];
subcategory: Subcategory;
sector: Sector[];
ticketDiscount: TicketDiscount[];
occurrence: Occurrence[];
timeslot: Timeslot[];
ticketFormat: TicketFormat[];
visible: boolean;
timezoneName?: string;
pdfTemplateId?: number;
redirectUrl?: string;
displayPriority?: number;
venue?: Venue;
offerInsurance?: boolean;
}
export interface UpdatableEvent {
name?: string;
startAt?: Date;
endAt?: Date;
presaleEndAt?: Date;
mainImageUri?: string;
sectorsMapImageUri?: string;
description?: string;
tos?: string;
contactEmail?: string;
contactPhone?: string;
gateTime?: Date;
venueId?: string;
chartKey?: string;
rulesetKey?: string;
kycLevelId?: number;
ticketActivationPeriod?: number;
localTicketValidation?: boolean;
localValidationServerUrl?: string;
visible?: boolean;
timezoneName?: string;
pdfTemplateId?: number;
redirectUrl?: string;
displayPriority?: number;
parentId?: number;
offerInsurance?: boolean;
}
export interface NewEvent {
startAt: Date;
endAt: Date;
gateTime: Date;
presaleEndAt?: Date;
name: string;
venueId: string;
mainImageUri?: string;
sectorsMapImageUri?: string;
description?: string;
tos?: string;
contactEmail?: string;
contactPhone?: string;
kycLevelId?: number;
ticketActivationPeriod?: number;
localTicketValidation?: boolean;
localValidationServerUrl?: string;
ticketConfig: TicketConfig[];
ticketDiscount?: TicketDiscount[];
sector?: Sector[];
subcategory: Subcategory;
occurrence?: Occurrence[];
timeslot?: Timeslot[];
ticketFormat?: TicketFormat[];
visible?: boolean;
timezoneName?: string;
pdfTemplateId?: number;
redirectUrl?: string;
displayPriority?: number;
offerInsurance?: boolean;
}
/**
* Occurrence interface
*/
export interface Occurrence {
id: number;
status: EventStatus;
type: string;
createdAt: Date;
startAt: Date;
endAt: Date;
gateTime: Date;
venueId: string;
organizerId: string;
enrollmentId: string;
chartKey: string;
rulesetKey: string;
ticketActivationPeriod?: number;
ticketConfig: TicketConfig[];
sector: Sector[];
subcategory: Subcategory;
timeslot: Timeslot[];
visible?: boolean;
redirectUrl?: string;
offerInsurance?: boolean;
}
/**
* Sector interface
*/
export interface Sector {
id: number;
name: string;
capacity: number;
displayOrder?: number;
ticketConfig: TicketConfig[];
reservedTickets: number;
availableTickets: number;
}
/**
* Subcategory interface
*/
export interface Subcategory {
id: number;
name: string;
}
/**
* Category interface
*/
export interface Category {
id: number;
name: string;
activeEvents?: number;
subcategory: Subcategory[];
}
export interface ListCategoryQuery extends PagingQuery {
with?: CategoryAttribute;
active_events?: boolean;
sort_by?: string;
direction?: string;
subcategory_id?: number;
}
/**
* Ticket discount interface
*/
export interface TicketDiscount {
id: number;
name: string;
type: string;
value: number;
quantity: number;
reservedTickets: number;
availableTickets: number;
startAt: Date;
endAt: Date;
code?: string;
minQuantity?: number;
maxQuantity?: number;
ticketConfig?: TicketConfig[];
}
/**
* Ticket configuration interface
*/
export interface TicketConfig {
id: number;
availableTickets: number;
createdAt: Date;
startSaleAt: Date;
endSaleAt: Date;
ticketsValidFrom: Date;
ticketsValidTo: Date;
status?: TicketConfigStatus;
faceValue: number;
taxRate?: number;
taxIncluded?: boolean;
visible?: boolean;
pricingType: PricingType;
name: string;
description?: string;
quantity: number;
currency: string;
absorbFees: boolean;
ticketsPerUser: number;
secondaryMarketRulesetId?: string;
imageUri?: string;
videoUri?: string;
thumbnailUri?: string;
kycLevelId?: number;
questionnaireId?: number;
pdfTemplateId?: number;
showSaleEndTimer?: boolean;
displayOrder?: number;
ticketDiscount?: TicketDiscount[];
sector?: Sector[];
timeslot?: Timeslot[];
promoSection?: PromoSection[];
dependsOn?: TicketConfig[];
questionnaire?: Questionnaire;
accessPass?: boolean;
totalUses?: number;
onSiteSale?: boolean;
}
/**
* Timeslot interface
*
* @param capacity the total number of ticket which can be sold in the timeslot
* @param ticketConfigCapacity maximum number of different ticket configs which can be sold in the timeslot
* @param associatedTicketConfig Ticket configs already sold in the timeslot, if it is a limited timeslot
*/
export interface Timeslot {
id: number;
name: string;
capacity: number;
startAt: Date;
endAt: Date;
ticketConfig: TicketConfig[];
displayOrder?: number;
ticketConfigCapacity?: number;
reservedTickets: number;
availableTickets: number;
associatedTicketConfig?: number[];
ticket?: Ticket[];
}
/**
* Ticket format interface
*/
export interface TicketFormat {
id: number;
name?: string;
displayName?: string;
}
export interface Questionnaire {
id: number;
name: string;
organizerId: string;
questionnaireItem: QuestionnaireItem[];
}
export interface QuestionnaireItem {
id: number;
questionId: number;
questionnaireId: number;
required: boolean;
ordinalNumber: number;
question: Question;
}
export interface Question {
id: number;
key: string;
type: string;
content: string;
organizerId: string;
}
export interface TicketHolder {
id: number;
response: Record<string, any>;
questionnaire?: Questionnaire;
}
export interface Ticket {
id: number;
seqNum: number;
status: TicketStatus;
kycStatus: string;
enrollmentId: string;
seatId: string;
format: string;
ticketConfig: TicketConfig;
sector: Sector;
ticketHolder: TicketHolder;
ticketDiscount: TicketDiscount[];
timeslot: Timeslot;
updatedAt: Date;
usesRemaining: number;
}
export interface OrganizerSpecificId {
id: number;
organizerId: string;
}
export interface InformationEmailId {
id: number;
eventId: number;
organizerId: string;
}
export interface OrganizerName {
name: string;
}
export interface TicketConfigId {
eventId: number;
organizerId: string;
ticketConfigId: number;
}
export interface ExternalTicketIdParam {
organizerId: string;
eventId: number;
id: number;
}
export interface TicketDiscountIdParam {
id: number;
organizerId: string;
eventId: number;
}
export interface PrivateEventParam {
id: number;
access_token: string;
}
export interface CommonEventQuery {
query?: string;
include_occurrences?: boolean;
with?: EventAttribute;
organizer_id?: string;
}
export interface ListEventsQuery extends CommonEventQuery, PagingQuery {
start_at?: [Date, Date];
sort_by?: string;
direction?: string;
future_events?: boolean;
name?: string;
category_id?: number;
subcategory_id?: number;
}
export interface ListOrganizerEventsQuery extends PagingQuery {
statuses?: EventStatus[];
with?: EventAttribute;
include_ticket_availability?: boolean;
include_occurrences?: boolean;
name?: string;
sort_by?: string;
venue_id?: number;
category_id?: number;
subcategory_id?: number;
organizer_id?: string;
enrollment_id?: string;
created_at?: string;
}
export interface SingleOrganizerEventQuery {
with?: EventAttribute;
include_ticket_availability?: boolean;
include_occurrences?: boolean;
}
export interface ListOrganizerEventTicketConfigsQuery {
with?: TicketConfigAttribute;
sort_by?: string;
name?: string;
id?: number;
created_at?: string;
}
export interface SingleEventQuery extends IdParam, CommonEventQuery {
}
export interface PrivateEventQuery extends PrivateEventParam, CommonEventQuery {
}
export interface MyEventsQuery {
date?: MyEventsEventDateFilter | string;
}
export declare enum MyEventsEventDateFilter {
Future = "future",
Past = "past",
All = "all"
}
export interface PublicKey {
publicKey: string;
}
export interface TicketCount {
id: number;
name: string;
issuedTickets: number;
activatedTickets: number;
invalidatedTickets: number;
}
export interface TicketQrCode {
content: string;
ticketId: number;
}
export interface QrCodeTicket {
id: number;
status: TicketStatus;
seqNum: number;
enrollmentId: string;
seatId?: string;
kycStatus: string;
updatedAt?: Date;
orderId?: number;
usesRemaining: number;
ticketQrCode: TicketQrCode;
ticketDiscount?: {
name: string;
}[];
ticketHolder?: TicketHolder;
}
export interface QrCodeTicketConfig extends TicketConfig {
status: TicketConfigStatus;
taxRate: number;
taxIncluded: boolean;
visible: boolean;
description: string;
secondaryMarketRulesetId: string;
imageUri: string;
videoUri: string;
kycLevelId: number;
questionnaireId: number;
ticket: QrCodeTicket[];
}
export interface MyEventsPromoSection {
id: number;
name: string;
content: string;
visible: boolean;
ordinalNumber: number;
}
export interface MyEventsTicketConfig extends Omit<QrCodeTicketConfig, 'promoSection'> {
userHolds: number;
promoSection: MyEventsPromoSection[];
}
export interface MyEventsEvent extends Omit<Event, 'ticketConfig'> {
organizer: Organizer;
venue: Venue;
ticketConfig: MyEventsTicketConfig[];
}
export interface NftDrop {
id?: number;
senderId?: string;
organizerId: string;
createdAt?: string;
chaincodeId: string;
dropId?: number;
note?: string;
nftId: number;
sentAt?: string;
nftDropFilter?: NftDropFilter[];
}
export type CreateNftDrop = {
organizerId: string;
chaincodeId: string;
note?: string;
nftId: number;
nftDropFilter: CreateNftDropFilter[];
};
export type UpdateNftDrop = {
organizerId: string;
id: number;
chaincodeId?: string;
note?: string;
nftId?: number;
nftDropFilter?: CreateNftDropFilter[];
};
export interface NftDropFilterRelations extends Query {
event?: boolean;
ticket_config?: boolean;
}
export interface NftDropRelations extends Query {
nft_drop_filter: NftDropFilterRelations;
}
export interface NftDropQuery extends PagingQuery {
with?: NftDropRelations;
sort_by?: string;
}
export declare class NftDropFilter {
id?: number;
ticketStatuses?: string[];
eventId?: number;
ticketConfigId?: number;
userId?: string;
nftDrop?: NftDrop;
event?: Event;
ticketConfig?: TicketConfig;
}
export interface NftDropFilterId {
id: number;
organizerId: string;
nftDropId: number;
}
export interface SingleNftDropQuery {
with?: NftDropRelations;
}
export type CreateNftDropFilter = {
ticketStatuses?: string[];
eventId?: number;
ticketConfigId?: number;
userId?: string;
};
export declare enum EventStatus {
Draft = "draft",
Committed = "committed",
Published = "published",
Updated = "updated",
Canceled = "canceled"
}
export declare enum TicketStatus {
Draft = "draft",
Available = "available",
Reserved = "reserved",
Confirmed = "confirmed",
Issued = "issued",
Activated = "activated",
Invalidated = "invalidated",
Unavailable = "unavailable"
}
export declare enum ExternalTicketStatus {
Issued = "issued",
Invalidated = "invalidated"
}
export declare enum TicketConfigStatus {
Draft = "draft",
Updated = "updated",
Committed = "committed",
Published = "published"
}
export declare enum DiscountType {
Amount = "amount",
Percent = "percent"
}
export declare enum PricingType {
Paid = "paid",
Free = "free",
Donation = "donation"
}
export declare enum DispatchedInfoStatus {
Draft = 1,
Sent = 2,
Delivered = 3
}
export interface SingleTicketDiscountQuery {
with?: TicketDiscountAttribute;
}
export interface ListTicketDiscountQuery extends PagingQuery {
with?: TicketDiscountAttribute;
id?: number;
type?: DiscountType;
name?: string;
code?: string;
sort_by?: string;
}
/**
* Create ticket discount type
*/
export type CreateTicketDiscount = {
name: string;
type: DiscountType;
value: number;
quantity: number;
startAt: Date;
endAt: Date;
code?: string;
minQuantity?: number;
maxQuantity?: number;
ticketConfig?: AppliedTicketConfig[];
};
/**
* Update ticket discount type
*/
export type UpdateTicketDiscount = {
id: number;
name?: string;
type?: DiscountType;
value?: number;
quantity?: number;
startAt?: Date;
endAt?: Date;
code?: string;
minQuantity?: number;
maxQuantity?: number;
ticketConfig?: TicketConfig[];
};
/**
* Create discount batch type
*/
export type CreateDiscountBatch = {
quantity: number;
};
export type PromoSection = {
id: number;
name: string;
content: string;
visible: boolean;
ordinalNumber: number;
createdBy: string;
createdAt: string;
updatedBy?: string;
updatedAt?: string;
};
export type CreatePromoSection = {
name: string;
content: string;
visible: boolean;
ordinalNumber: number;
};
export type UpdatePromoSection = {
name?: string;
content?: string;
visible?: boolean;
ordinalNumber?: number;
};
export type PromoSectionId = {
eventId: number;
organizerId: string;
ticketConfigId: number;
id: number;
};
/**
* Create ticket configuration interface
*/
export interface CreateTicketConfig {
startSaleAt?: Date;
endSaleAt?: Date;
ticketsValidFrom?: Date;
ticketsValidTo?: Date;
faceValue: number;
taxRate?: number;
taxIncluded?: boolean;
pricingType: PricingType;
name: string;
description?: string;
quantity: number;
currency: string;
absorbFees: boolean;
ticketsPerUser?: number;
secondaryMarketRulesetId?: string;
imageUri?: string;
videoUri?: string;
thumbnailUri?: string;
kycLevelId?: number;
questionnaireId?: number;
status?: TicketConfigStatus;
ticketDiscount?: TicketDiscount[];
sector?: Sector[];
timeslot?: Timeslot[];
promoSection?: PromoSection[];
dependsOn?: AppliedTicketConfig[];
visible?: boolean;
pdfTemplateId?: number;
showSaleEndTimer?: boolean;
displayOrder?: number;
accessPass?: boolean;
totalUses?: number;
onSiteSale?: boolean;
}
export type AppliedTicketConfig = Pick<TicketConfig, 'id'>;
export type CreateSector = {
name: string;
capacity: number;
displayOrder?: number;
ticketConfig: AppliedTicketConfig[];
};
export type UpdateSector = {
name?: string;
capacity?: number;
displayOrder?: number;
ticketConfig?: AppliedTicketConfig[];
};
export type SectorId = {
eventId: number;
organizerId: string;
id: number;
};
export type SingleSectorQuery = {
with?: SectorAttribute;
};
export type ListSectorQuery = {
with?: SectorAttribute;
};
export type CreateTimeslot = {
name: string;
capacity: number;
startAt: Date;
endAt: Date;
displayOrder?: number;
ticketConfigCapacity?: number;
ticketConfig?: AppliedTicketConfig[];
};
export type UpdateTimeslot = {
name?: string;
capacity?: number;
startAt?: Date;
endAt?: Date;
displayOrder?: number;
ticketConfigCapacity?: number;
ticketConfig?: AppliedTicketConfig[];
};
export type TimeslotId = {
eventId: number;
organizerId: string;
id: number;
};
export type SingleTimeslotQuery = {
with?: TimeslotAttribute;
};
export type ListTimeslotsQuery = {
with?: TimeslotAttribute;
};
export interface ListInformationEmailQuery extends PagingQuery {
with?: InformationEmailAttribute;
sort_by?: string;
}
export type SingleInformationEmailQuery = {
with?: InformationEmailAttribute;
};
export type CreateInformationEmail = {
subject: string;
body: string;
template?: string;
informationEmailFilter?: InformationEmailFilter[];
};
export type UpdateInformationEmail = {
subject?: string;
body?: string;
template?: string;
};
export interface InformationEmail {
id: number;
subject: string;
body: string;
createdBy: string;
dispatchedInfo: DispatchedInfoStatus;
sentAt: string;
createdAt: string;
template: string;
informationEmailFilter: InformationEmailFilter[];
}
export interface InformationEmailFilter {
id: number;
ticketConfigId: number;
ticketConfig: TicketConfig;
}
export interface EventHolderList {
id: number;
name: string;
organizerId: string;
ticketConfig: TicketConfigHolderList[];
}
export interface TicketConfigHolderList {
id: number;
name: string;
holders: string[];
}
export interface ListQuestionnaireQuery extends PagingQuery {
with?: QuestionnaireAttribute;
sort_by?: string;
}
export type QuestionnaireQuery = {
with?: QuestionnaireAttribute;
};
export interface CreateQuestionnaireItem {
questionId: number;
questionnaireId?: number;
required?: boolean;
}
export interface CreateQuestionnaire {
name: string;
questionnaireItem: CreateQuestionnaireItem[];
}
export interface UpdateQuestionnaireItem extends CreateQuestionnaireItem {
id?: number;
ordinalNumber?: number;
}
export interface UpdateQuestionnaire {
name?: string;
questionnaireItem: UpdateQuestionnaireItem[];
}
export interface ListQuestionQuery extends PagingQuery {
sort_by?: string;
}
export interface CreateQuestion {
key: string;
type: string;
content: string;
questionnaireItem?: QuestionnaireItem;
}
export interface SendTicketItem {
quantity: number;
timeslotId?: number;
sectorId?: number;
ticketConfigId: number;
ticketDiscount?: number[];
selectedSeats?: string[];
}
export interface SendTicketsData {
eventId: number;
format: string;
ownerEmails: string[];
sendTicketItems: SendTicketItem[];
note?: string;
holdToken?: string;
}
export interface SentTicket {
id: number;
seqNum: number;
ticketConfigId: number;
timeslotId?: number;
sectorId?: number;
seatId?: string;
sendTicketRequestId: number;
}
export interface SendTicketsResponse {
tickets: SentTicket[];
}
export interface SendTicketRequestQuery extends PagingQuery {
recipient_email?: string[];
recipient_username?: string[];
sort_by?: string;
with?: SendTicketRequestAttribute;
}
export interface SingleSendTicketRequestQuery {
with?: SendTicketRequestAttribute;
}
export interface SendTicketRequestId {
organizerId: string;
eventId: number;
id: number;
}
export interface SendTicketRequestResponse {
id: number;
recipientUsername: string;
recipientEmail: string;
recipientId: string;
senderId: string;
sentAt: string;
note: string;
ticket: Ticket[];
}
export interface ExternalTicket {
id: number;
eventId: number;
code: string;
category?: string;
ticketHolder?: string;
discount?: string;
status: ExternalTicketStatus;
createdAt: Date;
updatedAt: Date;
}
export interface ExternalTicketData {
code: string;
category?: string;
ticketHolder?: string;
discount?: string;
}
export interface ExternalTicketImportData {
tickets: ExternalTicketData[];
}
export interface ExternalTicketInvalidation {
code: string;
}
export interface AccessCode {
id: number;
eventId: number;
code: string;
maxTickets: number;
}
export interface AccessCodeData {
code: string;
maxTickets: number;
}
export interface AccessCodeImportData {
accessCode: AccessCodeData[];
}
export type EventSubresourceId = {
eventId: number;
organizerId: string;
id: number;
};
/**
* Access code batch creation body
* Used for generating multiple access codes in a single request
*
* @property {number} quantity - The number of access codes to generate
* @property {number} maxTickets - Maximum number of tickets that can be purchased using each access code
* @property {number} [length] - Optional length of the generated access code string. Defaults to 6.
*/
export interface AccessCodeBatchBody {
quantity: number;
maxTickets: number;
length?: number;
}
//# sourceMappingURL=types.d.ts.map