ticketnation-sdk 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -88,6 +88,7 @@ interface CreateEventParams {
88
88
  timezone?: string;
89
89
  absorbFees?: boolean;
90
90
  imageUrl?: string;
91
+ galleryUrls?: string[];
91
92
  callbackUrl?: string;
92
93
  venueId?: string;
93
94
  tickets?: CreateTicketParams[];
@@ -355,6 +356,110 @@ declare class WebhooksResource {
355
356
  }): Promise<PaginatedResponse<WebhookDelivery>>;
356
357
  }
357
358
 
359
+ interface CreatePerformerParams {
360
+ name: string;
361
+ description?: string;
362
+ type?: 'SOLO' | 'GROUP' | 'DJ' | 'BAND' | 'SPEAKER' | 'HOST' | 'COMEDIAN' | 'OTHER';
363
+ imageUrl?: string;
364
+ facebook?: string;
365
+ youtube?: string;
366
+ instagram?: string;
367
+ }
368
+ interface Performer {
369
+ id: string;
370
+ name: string;
371
+ description: string | null;
372
+ type: string;
373
+ slug: string | null;
374
+ facebook: string | null;
375
+ youtube: string | null;
376
+ instagram: string | null;
377
+ image: {
378
+ id: string;
379
+ url: string | null;
380
+ } | null;
381
+ }
382
+ declare class PerformersResource {
383
+ private readonly client;
384
+ constructor(client: HttpClient);
385
+ create(eventId: string, params: CreatePerformerParams): Promise<Performer>;
386
+ list(eventId: string): Promise<Performer[]>;
387
+ remove(eventId: string, performerId: string): Promise<DeletedResponse>;
388
+ }
389
+
390
+ interface CreateScheduleParams {
391
+ title: string;
392
+ description?: string;
393
+ startTime: string;
394
+ endTime: string;
395
+ icon?: string;
396
+ color?: string;
397
+ sortOrder?: number;
398
+ performerId?: string;
399
+ }
400
+ interface UpdateScheduleParams {
401
+ title?: string;
402
+ description?: string;
403
+ startTime?: string;
404
+ endTime?: string;
405
+ icon?: string;
406
+ color?: string;
407
+ sortOrder?: number;
408
+ performerId?: string;
409
+ }
410
+ interface Schedule {
411
+ id: string;
412
+ title: string;
413
+ description: string | null;
414
+ startTime: string;
415
+ endTime: string;
416
+ icon: string | null;
417
+ color: string | null;
418
+ sortOrder: number;
419
+ performerId: string | null;
420
+ performer: {
421
+ id: string;
422
+ name: string;
423
+ } | null;
424
+ createdAt: string;
425
+ updatedAt: string;
426
+ }
427
+ declare class SchedulesResource {
428
+ private readonly client;
429
+ constructor(client: HttpClient);
430
+ create(eventId: string, params: CreateScheduleParams): Promise<Schedule>;
431
+ list(eventId: string): Promise<Schedule[]>;
432
+ update(eventId: string, scheduleId: string, params: UpdateScheduleParams): Promise<Schedule>;
433
+ remove(eventId: string, scheduleId: string): Promise<DeletedResponse>;
434
+ }
435
+
436
+ interface CreateBrandParams {
437
+ name: string;
438
+ description?: string;
439
+ url?: string;
440
+ imageUrl?: string;
441
+ position?: number;
442
+ }
443
+ interface Brand {
444
+ id: string;
445
+ name: string;
446
+ description: string | null;
447
+ url: string | null;
448
+ sponsorshipColor: string | null;
449
+ image: {
450
+ id: string;
451
+ url: string | null;
452
+ } | null;
453
+ position: number | null;
454
+ }
455
+ declare class BrandsResource {
456
+ private readonly client;
457
+ constructor(client: HttpClient);
458
+ create(eventId: string, params: CreateBrandParams): Promise<Brand>;
459
+ list(eventId: string): Promise<Brand[]>;
460
+ remove(eventId: string, brandId: string): Promise<DeletedResponse>;
461
+ }
462
+
358
463
  declare class TicketnationError extends Error {
359
464
  readonly code: string;
360
465
  readonly status: number;
@@ -398,9 +503,12 @@ declare class Ticketnation {
398
503
  readonly orders: OrdersResource;
399
504
  readonly venues: VenuesResource;
400
505
  readonly webhooks: WebhooksResource;
506
+ readonly performers: PerformersResource;
507
+ readonly schedules: SchedulesResource;
508
+ readonly brands: BrandsResource;
401
509
  private readonly client;
402
510
  constructor(config: TicketnationConfig);
403
511
  me(): Promise<AccountInfo>;
404
512
  }
405
513
 
406
- export { type AccountInfo, type ApiErrorBody, type ApiErrorResponse, type ApiKeyInfo, type CreateEventParams, type CreateTicketParams, type CreateWebhookParams, type DataResponse, type DeletedResponse, type Event, type EventJourneyType, type EventLocationType, type EventStatus, type EventType, type EventVisibility, type ListEventsParams, type ListOrdersParams, type Order, type OrderItem, type OrderItemTicket, type OrderPayment, type OrderStatus, type OrderUser, type OrganizationInfo, type PaginatedResponse, type PaginationMeta, type PaginationParams, type SearchVenuesParams, type Ticket, type TicketSeatType, type TicketStatus, Ticketnation, type TicketnationConfig, TicketnationError, type UpdateEventParams, type UpdateTicketParams, type UpdateWebhookParams, type Venue, type VenueRef, type Webhook, type WebhookEventType, type WebhookWithSecret, fetchAllPages, paginate };
514
+ export { type AccountInfo, type ApiErrorBody, type ApiErrorResponse, type ApiKeyInfo, type Brand, type CreateBrandParams, type CreateEventParams, type CreatePerformerParams, type CreateScheduleParams, type CreateTicketParams, type CreateWebhookParams, type DataResponse, type DeletedResponse, type Event, type EventJourneyType, type EventLocationType, type EventStatus, type EventType, type EventVisibility, type ListEventsParams, type ListOrdersParams, type Order, type OrderItem, type OrderItemTicket, type OrderPayment, type OrderStatus, type OrderUser, type OrganizationInfo, type PaginatedResponse, type PaginationMeta, type PaginationParams, type Performer, type Schedule, type SearchVenuesParams, type Ticket, type TicketSeatType, type TicketStatus, Ticketnation, type TicketnationConfig, TicketnationError, type UpdateEventParams, type UpdateScheduleParams, type UpdateTicketParams, type UpdateWebhookParams, type Venue, type VenueRef, type Webhook, type WebhookEventType, type WebhookWithSecret, fetchAllPages, paginate };
package/dist/index.d.ts CHANGED
@@ -88,6 +88,7 @@ interface CreateEventParams {
88
88
  timezone?: string;
89
89
  absorbFees?: boolean;
90
90
  imageUrl?: string;
91
+ galleryUrls?: string[];
91
92
  callbackUrl?: string;
92
93
  venueId?: string;
93
94
  tickets?: CreateTicketParams[];
@@ -355,6 +356,110 @@ declare class WebhooksResource {
355
356
  }): Promise<PaginatedResponse<WebhookDelivery>>;
356
357
  }
357
358
 
359
+ interface CreatePerformerParams {
360
+ name: string;
361
+ description?: string;
362
+ type?: 'SOLO' | 'GROUP' | 'DJ' | 'BAND' | 'SPEAKER' | 'HOST' | 'COMEDIAN' | 'OTHER';
363
+ imageUrl?: string;
364
+ facebook?: string;
365
+ youtube?: string;
366
+ instagram?: string;
367
+ }
368
+ interface Performer {
369
+ id: string;
370
+ name: string;
371
+ description: string | null;
372
+ type: string;
373
+ slug: string | null;
374
+ facebook: string | null;
375
+ youtube: string | null;
376
+ instagram: string | null;
377
+ image: {
378
+ id: string;
379
+ url: string | null;
380
+ } | null;
381
+ }
382
+ declare class PerformersResource {
383
+ private readonly client;
384
+ constructor(client: HttpClient);
385
+ create(eventId: string, params: CreatePerformerParams): Promise<Performer>;
386
+ list(eventId: string): Promise<Performer[]>;
387
+ remove(eventId: string, performerId: string): Promise<DeletedResponse>;
388
+ }
389
+
390
+ interface CreateScheduleParams {
391
+ title: string;
392
+ description?: string;
393
+ startTime: string;
394
+ endTime: string;
395
+ icon?: string;
396
+ color?: string;
397
+ sortOrder?: number;
398
+ performerId?: string;
399
+ }
400
+ interface UpdateScheduleParams {
401
+ title?: string;
402
+ description?: string;
403
+ startTime?: string;
404
+ endTime?: string;
405
+ icon?: string;
406
+ color?: string;
407
+ sortOrder?: number;
408
+ performerId?: string;
409
+ }
410
+ interface Schedule {
411
+ id: string;
412
+ title: string;
413
+ description: string | null;
414
+ startTime: string;
415
+ endTime: string;
416
+ icon: string | null;
417
+ color: string | null;
418
+ sortOrder: number;
419
+ performerId: string | null;
420
+ performer: {
421
+ id: string;
422
+ name: string;
423
+ } | null;
424
+ createdAt: string;
425
+ updatedAt: string;
426
+ }
427
+ declare class SchedulesResource {
428
+ private readonly client;
429
+ constructor(client: HttpClient);
430
+ create(eventId: string, params: CreateScheduleParams): Promise<Schedule>;
431
+ list(eventId: string): Promise<Schedule[]>;
432
+ update(eventId: string, scheduleId: string, params: UpdateScheduleParams): Promise<Schedule>;
433
+ remove(eventId: string, scheduleId: string): Promise<DeletedResponse>;
434
+ }
435
+
436
+ interface CreateBrandParams {
437
+ name: string;
438
+ description?: string;
439
+ url?: string;
440
+ imageUrl?: string;
441
+ position?: number;
442
+ }
443
+ interface Brand {
444
+ id: string;
445
+ name: string;
446
+ description: string | null;
447
+ url: string | null;
448
+ sponsorshipColor: string | null;
449
+ image: {
450
+ id: string;
451
+ url: string | null;
452
+ } | null;
453
+ position: number | null;
454
+ }
455
+ declare class BrandsResource {
456
+ private readonly client;
457
+ constructor(client: HttpClient);
458
+ create(eventId: string, params: CreateBrandParams): Promise<Brand>;
459
+ list(eventId: string): Promise<Brand[]>;
460
+ remove(eventId: string, brandId: string): Promise<DeletedResponse>;
461
+ }
462
+
358
463
  declare class TicketnationError extends Error {
359
464
  readonly code: string;
360
465
  readonly status: number;
@@ -398,9 +503,12 @@ declare class Ticketnation {
398
503
  readonly orders: OrdersResource;
399
504
  readonly venues: VenuesResource;
400
505
  readonly webhooks: WebhooksResource;
506
+ readonly performers: PerformersResource;
507
+ readonly schedules: SchedulesResource;
508
+ readonly brands: BrandsResource;
401
509
  private readonly client;
402
510
  constructor(config: TicketnationConfig);
403
511
  me(): Promise<AccountInfo>;
404
512
  }
405
513
 
406
- export { type AccountInfo, type ApiErrorBody, type ApiErrorResponse, type ApiKeyInfo, type CreateEventParams, type CreateTicketParams, type CreateWebhookParams, type DataResponse, type DeletedResponse, type Event, type EventJourneyType, type EventLocationType, type EventStatus, type EventType, type EventVisibility, type ListEventsParams, type ListOrdersParams, type Order, type OrderItem, type OrderItemTicket, type OrderPayment, type OrderStatus, type OrderUser, type OrganizationInfo, type PaginatedResponse, type PaginationMeta, type PaginationParams, type SearchVenuesParams, type Ticket, type TicketSeatType, type TicketStatus, Ticketnation, type TicketnationConfig, TicketnationError, type UpdateEventParams, type UpdateTicketParams, type UpdateWebhookParams, type Venue, type VenueRef, type Webhook, type WebhookEventType, type WebhookWithSecret, fetchAllPages, paginate };
514
+ export { type AccountInfo, type ApiErrorBody, type ApiErrorResponse, type ApiKeyInfo, type Brand, type CreateBrandParams, type CreateEventParams, type CreatePerformerParams, type CreateScheduleParams, type CreateTicketParams, type CreateWebhookParams, type DataResponse, type DeletedResponse, type Event, type EventJourneyType, type EventLocationType, type EventStatus, type EventType, type EventVisibility, type ListEventsParams, type ListOrdersParams, type Order, type OrderItem, type OrderItemTicket, type OrderPayment, type OrderStatus, type OrderUser, type OrganizationInfo, type PaginatedResponse, type PaginationMeta, type PaginationParams, type Performer, type Schedule, type SearchVenuesParams, type Ticket, type TicketSeatType, type TicketStatus, Ticketnation, type TicketnationConfig, TicketnationError, type UpdateEventParams, type UpdateScheduleParams, type UpdateTicketParams, type UpdateWebhookParams, type Venue, type VenueRef, type Webhook, type WebhookEventType, type WebhookWithSecret, fetchAllPages, paginate };
package/dist/index.js CHANGED
@@ -277,6 +277,67 @@ var WebhooksResource = class {
277
277
  }
278
278
  };
279
279
 
280
+ // src/resources/performers.ts
281
+ var PerformersResource = class {
282
+ constructor(client) {
283
+ this.client = client;
284
+ }
285
+ async create(eventId, params) {
286
+ const res = await this.client.request("POST", `/open-api/v1/events/${eventId}/performers`, { body: params });
287
+ return res.data;
288
+ }
289
+ async list(eventId) {
290
+ const res = await this.client.request("GET", `/open-api/v1/events/${eventId}/performers`);
291
+ return res.data;
292
+ }
293
+ async remove(eventId, performerId) {
294
+ const res = await this.client.request("DELETE", `/open-api/v1/events/${eventId}/performers/${performerId}`);
295
+ return res.data;
296
+ }
297
+ };
298
+
299
+ // src/resources/schedules.ts
300
+ var SchedulesResource = class {
301
+ constructor(client) {
302
+ this.client = client;
303
+ }
304
+ async create(eventId, params) {
305
+ const res = await this.client.request("POST", `/open-api/v1/events/${eventId}/schedules`, { body: params });
306
+ return res.data;
307
+ }
308
+ async list(eventId) {
309
+ const res = await this.client.request("GET", `/open-api/v1/events/${eventId}/schedules`);
310
+ return res.data;
311
+ }
312
+ async update(eventId, scheduleId, params) {
313
+ const res = await this.client.request("PATCH", `/open-api/v1/events/${eventId}/schedules/${scheduleId}`, { body: params });
314
+ return res.data;
315
+ }
316
+ async remove(eventId, scheduleId) {
317
+ const res = await this.client.request("DELETE", `/open-api/v1/events/${eventId}/schedules/${scheduleId}`);
318
+ return res.data;
319
+ }
320
+ };
321
+
322
+ // src/resources/brands.ts
323
+ var BrandsResource = class {
324
+ constructor(client) {
325
+ this.client = client;
326
+ }
327
+ async create(eventId, params) {
328
+ const res = await this.client.request("POST", `/open-api/v1/events/${eventId}/brands`, { body: params });
329
+ return res.data;
330
+ }
331
+ async list(eventId) {
332
+ const res = await this.client.request("GET", `/open-api/v1/events/${eventId}/brands`);
333
+ return res.data;
334
+ }
335
+ async remove(eventId, brandId) {
336
+ const res = await this.client.request("DELETE", `/open-api/v1/events/${eventId}/brands/${brandId}`);
337
+ return res.data;
338
+ }
339
+ };
340
+
280
341
  // src/utils/pagination.ts
281
342
  async function* paginate(fetchPage, initialParams) {
282
343
  let page = initialParams?.page ?? 1;
@@ -305,6 +366,9 @@ var Ticketnation = class {
305
366
  orders;
306
367
  venues;
307
368
  webhooks;
369
+ performers;
370
+ schedules;
371
+ brands;
308
372
  client;
309
373
  constructor(config) {
310
374
  if (!config.apiKey) {
@@ -322,6 +386,9 @@ var Ticketnation = class {
322
386
  this.orders = new OrdersResource(this.client);
323
387
  this.venues = new VenuesResource(this.client);
324
388
  this.webhooks = new WebhooksResource(this.client);
389
+ this.performers = new PerformersResource(this.client);
390
+ this.schedules = new SchedulesResource(this.client);
391
+ this.brands = new BrandsResource(this.client);
325
392
  }
326
393
  async me() {
327
394
  const res = await this.client.request("GET", "/open-api/v1/me");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/client.ts","../src/resources/events.ts","../src/resources/tickets.ts","../src/resources/orders.ts","../src/resources/venues.ts","../src/resources/webhooks.ts","../src/utils/pagination.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { ApiErrorBody } from './types';\n\nexport class TicketnationError extends Error {\n readonly code: string;\n readonly status: number;\n readonly requestId: string | null;\n readonly details: Array<{ field: string; message: string }> | undefined;\n\n constructor(\n message: string,\n opts: {\n code: string;\n status: number;\n requestId?: string;\n details?: Array<{ field: string; message: string }>;\n },\n ) {\n super(message);\n this.name = 'TicketnationError';\n this.code = opts.code;\n this.status = opts.status;\n this.requestId = opts.requestId ?? null;\n this.details = opts.details;\n }\n\n static fromResponse(status: number, body: { error: ApiErrorBody; requestId?: string }): TicketnationError {\n return new TicketnationError(body.error.message, {\n code: body.error.code,\n status,\n requestId: body.requestId,\n details: body.error.details,\n });\n }\n\n toJSON() {\n return {\n name: this.name,\n code: this.code,\n status: this.status,\n message: this.message,\n requestId: this.requestId,\n details: this.details,\n };\n }\n}\n","import { TicketnationError } from './errors';\n\nexport interface ClientConfig {\n apiKey: string;\n baseUrl: string;\n timeout: number;\n retries: number;\n debug: boolean;\n}\n\nexport class HttpClient {\n private readonly config: ClientConfig;\n\n constructor(config: ClientConfig) {\n this.config = config;\n }\n\n async request<T>(method: string, path: string, opts?: { body?: unknown; params?: Record<string, unknown> }): Promise<T> {\n const url = this.buildUrl(path, opts?.params);\n let lastError: Error | null = null;\n\n for (let attempt = 0; attempt <= this.config.retries; attempt++) {\n if (attempt > 0) {\n const delay = Math.min(1000 * Math.pow(2, attempt - 1), 10000);\n await this.sleep(delay);\n if (this.config.debug) {\n console.log(`[Ticketnation SDK] Retry attempt ${attempt}/${this.config.retries} for ${method} ${path}`);\n }\n }\n\n try {\n const response = await this.doRequest(method, url, opts?.body);\n return response as T;\n } catch (error) {\n lastError = error as Error;\n if (error instanceof TicketnationError && error.status < 500) {\n throw error;\n }\n }\n }\n\n throw lastError;\n }\n\n private async doRequest(method: string, url: string, body?: unknown): Promise<unknown> {\n if (this.config.debug) {\n const redactedKey = this.config.apiKey.slice(0, 6) + '...' + this.config.apiKey.slice(-4);\n console.log(`[Ticketnation SDK] ${method} ${url} (key: ${redactedKey})`);\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);\n\n try {\n const headers: Record<string, string> = {\n 'api-key': this.config.apiKey,\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n 'User-Agent': 'ticketnation-sdk/1.0.2',\n };\n\n const init: RequestInit = {\n method,\n headers,\n signal: controller.signal,\n };\n\n if (body && (method === 'POST' || method === 'PATCH' || method === 'PUT')) {\n init.body = JSON.stringify(body);\n }\n\n const response = await fetch(url, init);\n\n if (!response.ok) {\n let errorBody: unknown;\n try {\n errorBody = await response.json();\n } catch {\n throw new TicketnationError(`HTTP ${response.status}: ${response.statusText}`, {\n code: 'HTTP_ERROR',\n status: response.status,\n });\n }\n\n const parsed = errorBody as { error?: { code: string; message: string; details?: Array<{ field: string; message: string }> }; requestId?: string };\n if (parsed.error) {\n throw TicketnationError.fromResponse(response.status, parsed as { error: { code: string; message: string }; requestId?: string });\n }\n\n throw new TicketnationError(`HTTP ${response.status}: ${response.statusText}`, {\n code: 'HTTP_ERROR',\n status: response.status,\n });\n }\n\n if (response.status === 204) {\n return {};\n }\n\n return await response.json();\n } catch (error) {\n if (error instanceof TicketnationError) throw error;\n\n if (error instanceof DOMException && error.name === 'AbortError') {\n throw new TicketnationError(`Request timed out after ${this.config.timeout}ms`, {\n code: 'TIMEOUT',\n status: 0,\n });\n }\n\n throw new TicketnationError(`Network error: ${(error as Error).message}`, {\n code: 'NETWORK_ERROR',\n status: 0,\n });\n } finally {\n clearTimeout(timeoutId);\n }\n }\n\n private buildUrl(path: string, params?: Record<string, unknown>): string {\n const base = this.config.baseUrl.replace(/\\/$/, '');\n const url = new URL(`${base}${path}`);\n\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n\n return url.toString();\n }\n\n private sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n}\n","import type { HttpClient } from '../client';\nimport type {\n Event,\n CreateEventParams,\n UpdateEventParams,\n ListEventsParams,\n DataResponse,\n PaginatedResponse,\n DeletedResponse,\n} from '../types';\n\nexport class EventsResource {\n constructor(private readonly client: HttpClient) {}\n\n async create(params: CreateEventParams): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('POST', '/open-api/v1/events', { body: params });\n return res.data;\n }\n\n async list(params?: ListEventsParams): Promise<PaginatedResponse<Event>> {\n return this.client.request<PaginatedResponse<Event>>('GET', '/open-api/v1/events', {\n params: params ? { page: params.page, take: params.take, status: params.status, search: params.search } : undefined,\n });\n }\n\n async get(idOrSlug: string): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('GET', `/open-api/v1/events/${encodeURIComponent(idOrSlug)}`);\n return res.data;\n }\n\n async update(eventId: string, params: UpdateEventParams): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('PATCH', `/open-api/v1/events/${eventId}`, { body: params });\n return res.data;\n }\n\n async publish(eventId: string): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('POST', `/open-api/v1/events/${eventId}/publish`);\n return res.data;\n }\n\n async unpublish(eventId: string): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('POST', `/open-api/v1/events/${eventId}/unpublish`);\n return res.data;\n }\n\n async archive(eventId: string): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('POST', `/open-api/v1/events/${eventId}/archive`);\n return res.data;\n }\n\n async delete(eventId: string): Promise<DeletedResponse> {\n const res = await this.client.request<DataResponse<DeletedResponse>>('DELETE', `/open-api/v1/events/${eventId}`);\n return res.data;\n }\n}\n","import type { HttpClient } from '../client';\nimport type {\n Ticket,\n CreateTicketParams,\n UpdateTicketParams,\n DataResponse,\n DeletedResponse,\n} from '../types';\n\nexport class TicketsResource {\n constructor(private readonly client: HttpClient) {}\n\n async create(eventId: string, params: CreateTicketParams): Promise<Ticket> {\n const res = await this.client.request<DataResponse<Ticket>>('POST', `/open-api/v1/events/${eventId}/tickets`, { body: params });\n return res.data;\n }\n\n async list(eventId: string): Promise<Ticket[]> {\n const res = await this.client.request<DataResponse<Ticket[]>>('GET', `/open-api/v1/events/${eventId}/tickets`);\n return res.data;\n }\n\n async get(eventId: string, ticketId: string): Promise<Ticket> {\n const res = await this.client.request<DataResponse<Ticket>>('GET', `/open-api/v1/events/${eventId}/tickets/${ticketId}`);\n return res.data;\n }\n\n async update(eventId: string, ticketId: string, params: UpdateTicketParams): Promise<Ticket> {\n const res = await this.client.request<DataResponse<Ticket>>('PATCH', `/open-api/v1/events/${eventId}/tickets/${ticketId}`, { body: params });\n return res.data;\n }\n\n async publish(eventId: string, ticketId: string): Promise<Ticket> {\n const res = await this.client.request<DataResponse<Ticket>>('POST', `/open-api/v1/events/${eventId}/tickets/${ticketId}/publish`);\n return res.data;\n }\n\n async markSoldOut(eventId: string, ticketId: string): Promise<Ticket> {\n const res = await this.client.request<DataResponse<Ticket>>('POST', `/open-api/v1/events/${eventId}/tickets/${ticketId}/sold-out`);\n return res.data;\n }\n\n async delete(eventId: string, ticketId: string): Promise<DeletedResponse> {\n const res = await this.client.request<DataResponse<DeletedResponse>>('DELETE', `/open-api/v1/events/${eventId}/tickets/${ticketId}`);\n return res.data;\n }\n}\n","import type { HttpClient } from '../client';\nimport type {\n Order,\n ListOrdersParams,\n DataResponse,\n PaginatedResponse,\n} from '../types';\n\nexport class OrdersResource {\n constructor(private readonly client: HttpClient) {}\n\n async list(eventId: string, params?: ListOrdersParams): Promise<PaginatedResponse<Order>> {\n return this.client.request<PaginatedResponse<Order>>('GET', `/open-api/v1/events/${eventId}/orders`, {\n params: params ? { page: params.page, take: params.take, status: params.status } : undefined,\n });\n }\n\n async get(orderId: string): Promise<Order> {\n const res = await this.client.request<DataResponse<Order>>('GET', `/open-api/v1/orders/${orderId}`);\n return res.data;\n }\n}\n","import type { HttpClient } from '../client';\nimport type {\n Venue,\n SearchVenuesParams,\n PaginatedResponse,\n} from '../types';\n\nexport class VenuesResource {\n constructor(private readonly client: HttpClient) {}\n\n async search(params: SearchVenuesParams): Promise<PaginatedResponse<Venue>> {\n return this.client.request<PaginatedResponse<Venue>>('GET', '/open-api/v1/venues/search', {\n params: { query: params.query, page: params.page, take: params.take },\n });\n }\n}\n","import type { HttpClient } from '../client';\nimport type {\n Webhook,\n WebhookWithSecret,\n CreateWebhookParams,\n UpdateWebhookParams,\n DataResponse,\n PaginatedResponse,\n DeletedResponse,\n} from '../types';\n\nexport interface WebhookDelivery {\n id: string;\n eventType: string;\n statusCode: number | null;\n success: boolean;\n attempts: number;\n createdAt: string;\n}\n\nexport interface WebhookTestResult {\n success: boolean;\n statusCode: number | null;\n message: string;\n}\n\nexport class WebhooksResource {\n constructor(private readonly client: HttpClient) {}\n\n async create(params: CreateWebhookParams): Promise<WebhookWithSecret> {\n const res = await this.client.request<DataResponse<WebhookWithSecret>>('POST', '/open-api/v1/webhooks', { body: params });\n return res.data;\n }\n\n async list(): Promise<Webhook[]> {\n const res = await this.client.request<DataResponse<Webhook[]>>('GET', '/open-api/v1/webhooks');\n return res.data;\n }\n\n async update(webhookId: string, params: UpdateWebhookParams): Promise<Webhook> {\n const res = await this.client.request<DataResponse<Webhook>>('PATCH', `/open-api/v1/webhooks/${webhookId}`, { body: params });\n return res.data;\n }\n\n async delete(webhookId: string): Promise<DeletedResponse> {\n const res = await this.client.request<DataResponse<DeletedResponse>>('DELETE', `/open-api/v1/webhooks/${webhookId}`);\n return res.data;\n }\n\n async test(webhookId: string): Promise<WebhookTestResult> {\n const res = await this.client.request<DataResponse<WebhookTestResult>>('POST', `/open-api/v1/webhooks/${webhookId}/test`);\n return res.data;\n }\n\n async deliveries(webhookId: string, params?: { page?: number; take?: number }): Promise<PaginatedResponse<WebhookDelivery>> {\n return this.client.request<PaginatedResponse<WebhookDelivery>>('GET', `/open-api/v1/webhooks/${webhookId}/deliveries`, {\n params: params ? { page: params.page, take: params.take } : undefined,\n });\n }\n}\n","import type { PaginatedResponse, PaginationParams } from '../types';\n\nexport async function* paginate<T>(\n fetchPage: (params: PaginationParams) => Promise<PaginatedResponse<T>>,\n initialParams?: PaginationParams,\n): AsyncGenerator<T[], void, undefined> {\n let page = initialParams?.page ?? 1;\n const take = initialParams?.take ?? 10;\n\n while (true) {\n const response = await fetchPage({ page, take });\n yield response.data;\n\n if (page >= response.meta.totalPages) {\n break;\n }\n page++;\n }\n}\n\nexport async function fetchAllPages<T>(\n fetchPage: (params: PaginationParams) => Promise<PaginatedResponse<T>>,\n initialParams?: PaginationParams,\n): Promise<T[]> {\n const all: T[] = [];\n for await (const batch of paginate(fetchPage, initialParams)) {\n all.push(...batch);\n }\n return all;\n}\n","import { HttpClient } from './client';\nimport { EventsResource } from './resources/events';\nimport { TicketsResource } from './resources/tickets';\nimport { OrdersResource } from './resources/orders';\nimport { VenuesResource } from './resources/venues';\nimport { WebhooksResource } from './resources/webhooks';\nimport type { TicketnationConfig, AccountInfo, DataResponse } from './types';\n\nexport class Ticketnation {\n readonly events: EventsResource;\n readonly tickets: TicketsResource;\n readonly orders: OrdersResource;\n readonly venues: VenuesResource;\n readonly webhooks: WebhooksResource;\n\n private readonly client: HttpClient;\n\n constructor(config: TicketnationConfig) {\n if (!config.apiKey) {\n throw new Error('Ticketnation SDK requires an apiKey');\n }\n\n this.client = new HttpClient({\n apiKey: config.apiKey,\n baseUrl: config.baseUrl ?? 'https://api.ticketnation.ph',\n timeout: config.timeout ?? 30000,\n retries: config.retries ?? 2,\n debug: config.debug ?? false,\n });\n\n this.events = new EventsResource(this.client);\n this.tickets = new TicketsResource(this.client);\n this.orders = new OrdersResource(this.client);\n this.venues = new VenuesResource(this.client);\n this.webhooks = new WebhooksResource(this.client);\n }\n\n async me(): Promise<AccountInfo> {\n const res = await this.client.request<DataResponse<AccountInfo>>('GET', '/open-api/v1/me');\n return res.data;\n }\n}\n\n// Re-export everything\nexport { TicketnationError } from './errors';\nexport { paginate, fetchAllPages } from './utils/pagination';\nexport type * from './types';\n"]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/client.ts","../src/resources/events.ts","../src/resources/tickets.ts","../src/resources/orders.ts","../src/resources/venues.ts","../src/resources/webhooks.ts","../src/resources/performers.ts","../src/resources/schedules.ts","../src/resources/brands.ts","../src/utils/pagination.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { ApiErrorBody } from './types';\n\nexport class TicketnationError extends Error {\n readonly code: string;\n readonly status: number;\n readonly requestId: string | null;\n readonly details: Array<{ field: string; message: string }> | undefined;\n\n constructor(\n message: string,\n opts: {\n code: string;\n status: number;\n requestId?: string;\n details?: Array<{ field: string; message: string }>;\n },\n ) {\n super(message);\n this.name = 'TicketnationError';\n this.code = opts.code;\n this.status = opts.status;\n this.requestId = opts.requestId ?? null;\n this.details = opts.details;\n }\n\n static fromResponse(status: number, body: { error: ApiErrorBody; requestId?: string }): TicketnationError {\n return new TicketnationError(body.error.message, {\n code: body.error.code,\n status,\n requestId: body.requestId,\n details: body.error.details,\n });\n }\n\n toJSON() {\n return {\n name: this.name,\n code: this.code,\n status: this.status,\n message: this.message,\n requestId: this.requestId,\n details: this.details,\n };\n }\n}\n","import { TicketnationError } from './errors';\n\nexport interface ClientConfig {\n apiKey: string;\n baseUrl: string;\n timeout: number;\n retries: number;\n debug: boolean;\n}\n\nexport class HttpClient {\n private readonly config: ClientConfig;\n\n constructor(config: ClientConfig) {\n this.config = config;\n }\n\n async request<T>(method: string, path: string, opts?: { body?: unknown; params?: Record<string, unknown> }): Promise<T> {\n const url = this.buildUrl(path, opts?.params);\n let lastError: Error | null = null;\n\n for (let attempt = 0; attempt <= this.config.retries; attempt++) {\n if (attempt > 0) {\n const delay = Math.min(1000 * Math.pow(2, attempt - 1), 10000);\n await this.sleep(delay);\n if (this.config.debug) {\n console.log(`[Ticketnation SDK] Retry attempt ${attempt}/${this.config.retries} for ${method} ${path}`);\n }\n }\n\n try {\n const response = await this.doRequest(method, url, opts?.body);\n return response as T;\n } catch (error) {\n lastError = error as Error;\n if (error instanceof TicketnationError && error.status < 500) {\n throw error;\n }\n }\n }\n\n throw lastError;\n }\n\n private async doRequest(method: string, url: string, body?: unknown): Promise<unknown> {\n if (this.config.debug) {\n const redactedKey = this.config.apiKey.slice(0, 6) + '...' + this.config.apiKey.slice(-4);\n console.log(`[Ticketnation SDK] ${method} ${url} (key: ${redactedKey})`);\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);\n\n try {\n const headers: Record<string, string> = {\n 'api-key': this.config.apiKey,\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n 'User-Agent': 'ticketnation-sdk/1.0.2',\n };\n\n const init: RequestInit = {\n method,\n headers,\n signal: controller.signal,\n };\n\n if (body && (method === 'POST' || method === 'PATCH' || method === 'PUT')) {\n init.body = JSON.stringify(body);\n }\n\n const response = await fetch(url, init);\n\n if (!response.ok) {\n let errorBody: unknown;\n try {\n errorBody = await response.json();\n } catch {\n throw new TicketnationError(`HTTP ${response.status}: ${response.statusText}`, {\n code: 'HTTP_ERROR',\n status: response.status,\n });\n }\n\n const parsed = errorBody as { error?: { code: string; message: string; details?: Array<{ field: string; message: string }> }; requestId?: string };\n if (parsed.error) {\n throw TicketnationError.fromResponse(response.status, parsed as { error: { code: string; message: string }; requestId?: string });\n }\n\n throw new TicketnationError(`HTTP ${response.status}: ${response.statusText}`, {\n code: 'HTTP_ERROR',\n status: response.status,\n });\n }\n\n if (response.status === 204) {\n return {};\n }\n\n return await response.json();\n } catch (error) {\n if (error instanceof TicketnationError) throw error;\n\n if (error instanceof DOMException && error.name === 'AbortError') {\n throw new TicketnationError(`Request timed out after ${this.config.timeout}ms`, {\n code: 'TIMEOUT',\n status: 0,\n });\n }\n\n throw new TicketnationError(`Network error: ${(error as Error).message}`, {\n code: 'NETWORK_ERROR',\n status: 0,\n });\n } finally {\n clearTimeout(timeoutId);\n }\n }\n\n private buildUrl(path: string, params?: Record<string, unknown>): string {\n const base = this.config.baseUrl.replace(/\\/$/, '');\n const url = new URL(`${base}${path}`);\n\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n\n return url.toString();\n }\n\n private sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n}\n","import type { HttpClient } from '../client';\nimport type {\n Event,\n CreateEventParams,\n UpdateEventParams,\n ListEventsParams,\n DataResponse,\n PaginatedResponse,\n DeletedResponse,\n} from '../types';\n\nexport class EventsResource {\n constructor(private readonly client: HttpClient) {}\n\n async create(params: CreateEventParams): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('POST', '/open-api/v1/events', { body: params });\n return res.data;\n }\n\n async list(params?: ListEventsParams): Promise<PaginatedResponse<Event>> {\n return this.client.request<PaginatedResponse<Event>>('GET', '/open-api/v1/events', {\n params: params ? { page: params.page, take: params.take, status: params.status, search: params.search } : undefined,\n });\n }\n\n async get(idOrSlug: string): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('GET', `/open-api/v1/events/${encodeURIComponent(idOrSlug)}`);\n return res.data;\n }\n\n async update(eventId: string, params: UpdateEventParams): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('PATCH', `/open-api/v1/events/${eventId}`, { body: params });\n return res.data;\n }\n\n async publish(eventId: string): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('POST', `/open-api/v1/events/${eventId}/publish`);\n return res.data;\n }\n\n async unpublish(eventId: string): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('POST', `/open-api/v1/events/${eventId}/unpublish`);\n return res.data;\n }\n\n async archive(eventId: string): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('POST', `/open-api/v1/events/${eventId}/archive`);\n return res.data;\n }\n\n async delete(eventId: string): Promise<DeletedResponse> {\n const res = await this.client.request<DataResponse<DeletedResponse>>('DELETE', `/open-api/v1/events/${eventId}`);\n return res.data;\n }\n}\n","import type { HttpClient } from '../client';\nimport type {\n Ticket,\n CreateTicketParams,\n UpdateTicketParams,\n DataResponse,\n DeletedResponse,\n} from '../types';\n\nexport class TicketsResource {\n constructor(private readonly client: HttpClient) {}\n\n async create(eventId: string, params: CreateTicketParams): Promise<Ticket> {\n const res = await this.client.request<DataResponse<Ticket>>('POST', `/open-api/v1/events/${eventId}/tickets`, { body: params });\n return res.data;\n }\n\n async list(eventId: string): Promise<Ticket[]> {\n const res = await this.client.request<DataResponse<Ticket[]>>('GET', `/open-api/v1/events/${eventId}/tickets`);\n return res.data;\n }\n\n async get(eventId: string, ticketId: string): Promise<Ticket> {\n const res = await this.client.request<DataResponse<Ticket>>('GET', `/open-api/v1/events/${eventId}/tickets/${ticketId}`);\n return res.data;\n }\n\n async update(eventId: string, ticketId: string, params: UpdateTicketParams): Promise<Ticket> {\n const res = await this.client.request<DataResponse<Ticket>>('PATCH', `/open-api/v1/events/${eventId}/tickets/${ticketId}`, { body: params });\n return res.data;\n }\n\n async publish(eventId: string, ticketId: string): Promise<Ticket> {\n const res = await this.client.request<DataResponse<Ticket>>('POST', `/open-api/v1/events/${eventId}/tickets/${ticketId}/publish`);\n return res.data;\n }\n\n async markSoldOut(eventId: string, ticketId: string): Promise<Ticket> {\n const res = await this.client.request<DataResponse<Ticket>>('POST', `/open-api/v1/events/${eventId}/tickets/${ticketId}/sold-out`);\n return res.data;\n }\n\n async delete(eventId: string, ticketId: string): Promise<DeletedResponse> {\n const res = await this.client.request<DataResponse<DeletedResponse>>('DELETE', `/open-api/v1/events/${eventId}/tickets/${ticketId}`);\n return res.data;\n }\n}\n","import type { HttpClient } from '../client';\nimport type {\n Order,\n ListOrdersParams,\n DataResponse,\n PaginatedResponse,\n} from '../types';\n\nexport class OrdersResource {\n constructor(private readonly client: HttpClient) {}\n\n async list(eventId: string, params?: ListOrdersParams): Promise<PaginatedResponse<Order>> {\n return this.client.request<PaginatedResponse<Order>>('GET', `/open-api/v1/events/${eventId}/orders`, {\n params: params ? { page: params.page, take: params.take, status: params.status } : undefined,\n });\n }\n\n async get(orderId: string): Promise<Order> {\n const res = await this.client.request<DataResponse<Order>>('GET', `/open-api/v1/orders/${orderId}`);\n return res.data;\n }\n}\n","import type { HttpClient } from '../client';\nimport type {\n Venue,\n SearchVenuesParams,\n PaginatedResponse,\n} from '../types';\n\nexport class VenuesResource {\n constructor(private readonly client: HttpClient) {}\n\n async search(params: SearchVenuesParams): Promise<PaginatedResponse<Venue>> {\n return this.client.request<PaginatedResponse<Venue>>('GET', '/open-api/v1/venues/search', {\n params: { query: params.query, page: params.page, take: params.take },\n });\n }\n}\n","import type { HttpClient } from '../client';\nimport type {\n Webhook,\n WebhookWithSecret,\n CreateWebhookParams,\n UpdateWebhookParams,\n DataResponse,\n PaginatedResponse,\n DeletedResponse,\n} from '../types';\n\nexport interface WebhookDelivery {\n id: string;\n eventType: string;\n statusCode: number | null;\n success: boolean;\n attempts: number;\n createdAt: string;\n}\n\nexport interface WebhookTestResult {\n success: boolean;\n statusCode: number | null;\n message: string;\n}\n\nexport class WebhooksResource {\n constructor(private readonly client: HttpClient) {}\n\n async create(params: CreateWebhookParams): Promise<WebhookWithSecret> {\n const res = await this.client.request<DataResponse<WebhookWithSecret>>('POST', '/open-api/v1/webhooks', { body: params });\n return res.data;\n }\n\n async list(): Promise<Webhook[]> {\n const res = await this.client.request<DataResponse<Webhook[]>>('GET', '/open-api/v1/webhooks');\n return res.data;\n }\n\n async update(webhookId: string, params: UpdateWebhookParams): Promise<Webhook> {\n const res = await this.client.request<DataResponse<Webhook>>('PATCH', `/open-api/v1/webhooks/${webhookId}`, { body: params });\n return res.data;\n }\n\n async delete(webhookId: string): Promise<DeletedResponse> {\n const res = await this.client.request<DataResponse<DeletedResponse>>('DELETE', `/open-api/v1/webhooks/${webhookId}`);\n return res.data;\n }\n\n async test(webhookId: string): Promise<WebhookTestResult> {\n const res = await this.client.request<DataResponse<WebhookTestResult>>('POST', `/open-api/v1/webhooks/${webhookId}/test`);\n return res.data;\n }\n\n async deliveries(webhookId: string, params?: { page?: number; take?: number }): Promise<PaginatedResponse<WebhookDelivery>> {\n return this.client.request<PaginatedResponse<WebhookDelivery>>('GET', `/open-api/v1/webhooks/${webhookId}/deliveries`, {\n params: params ? { page: params.page, take: params.take } : undefined,\n });\n }\n}\n","import type { HttpClient } from '../client';\nimport type { DataResponse, DeletedResponse } from '../types';\n\nexport interface CreatePerformerParams {\n name: string;\n description?: string;\n type?: 'SOLO' | 'GROUP' | 'DJ' | 'BAND' | 'SPEAKER' | 'HOST' | 'COMEDIAN' | 'OTHER';\n imageUrl?: string;\n facebook?: string;\n youtube?: string;\n instagram?: string;\n}\n\nexport interface Performer {\n id: string;\n name: string;\n description: string | null;\n type: string;\n slug: string | null;\n facebook: string | null;\n youtube: string | null;\n instagram: string | null;\n image: { id: string; url: string | null } | null;\n}\n\nexport class PerformersResource {\n constructor(private readonly client: HttpClient) {}\n\n async create(eventId: string, params: CreatePerformerParams): Promise<Performer> {\n const res = await this.client.request<DataResponse<Performer>>('POST', `/open-api/v1/events/${eventId}/performers`, { body: params });\n return res.data;\n }\n\n async list(eventId: string): Promise<Performer[]> {\n const res = await this.client.request<DataResponse<Performer[]>>('GET', `/open-api/v1/events/${eventId}/performers`);\n return res.data;\n }\n\n async remove(eventId: string, performerId: string): Promise<DeletedResponse> {\n const res = await this.client.request<DataResponse<DeletedResponse>>('DELETE', `/open-api/v1/events/${eventId}/performers/${performerId}`);\n return res.data;\n }\n}\n","import type { HttpClient } from '../client';\nimport type { DataResponse, DeletedResponse } from '../types';\n\nexport interface CreateScheduleParams {\n title: string;\n description?: string;\n startTime: string;\n endTime: string;\n icon?: string;\n color?: string;\n sortOrder?: number;\n performerId?: string;\n}\n\nexport interface UpdateScheduleParams {\n title?: string;\n description?: string;\n startTime?: string;\n endTime?: string;\n icon?: string;\n color?: string;\n sortOrder?: number;\n performerId?: string;\n}\n\nexport interface Schedule {\n id: string;\n title: string;\n description: string | null;\n startTime: string;\n endTime: string;\n icon: string | null;\n color: string | null;\n sortOrder: number;\n performerId: string | null;\n performer: { id: string; name: string } | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport class SchedulesResource {\n constructor(private readonly client: HttpClient) {}\n\n async create(eventId: string, params: CreateScheduleParams): Promise<Schedule> {\n const res = await this.client.request<DataResponse<Schedule>>('POST', `/open-api/v1/events/${eventId}/schedules`, { body: params });\n return res.data;\n }\n\n async list(eventId: string): Promise<Schedule[]> {\n const res = await this.client.request<DataResponse<Schedule[]>>('GET', `/open-api/v1/events/${eventId}/schedules`);\n return res.data;\n }\n\n async update(eventId: string, scheduleId: string, params: UpdateScheduleParams): Promise<Schedule> {\n const res = await this.client.request<DataResponse<Schedule>>('PATCH', `/open-api/v1/events/${eventId}/schedules/${scheduleId}`, { body: params });\n return res.data;\n }\n\n async remove(eventId: string, scheduleId: string): Promise<DeletedResponse> {\n const res = await this.client.request<DataResponse<DeletedResponse>>('DELETE', `/open-api/v1/events/${eventId}/schedules/${scheduleId}`);\n return res.data;\n }\n}\n","import type { HttpClient } from '../client';\nimport type { DataResponse, DeletedResponse } from '../types';\n\nexport interface CreateBrandParams {\n name: string;\n description?: string;\n url?: string;\n imageUrl?: string;\n position?: number;\n}\n\nexport interface Brand {\n id: string;\n name: string;\n description: string | null;\n url: string | null;\n sponsorshipColor: string | null;\n image: { id: string; url: string | null } | null;\n position: number | null;\n}\n\nexport class BrandsResource {\n constructor(private readonly client: HttpClient) {}\n\n async create(eventId: string, params: CreateBrandParams): Promise<Brand> {\n const res = await this.client.request<DataResponse<Brand>>('POST', `/open-api/v1/events/${eventId}/brands`, { body: params });\n return res.data;\n }\n\n async list(eventId: string): Promise<Brand[]> {\n const res = await this.client.request<DataResponse<Brand[]>>('GET', `/open-api/v1/events/${eventId}/brands`);\n return res.data;\n }\n\n async remove(eventId: string, brandId: string): Promise<DeletedResponse> {\n const res = await this.client.request<DataResponse<DeletedResponse>>('DELETE', `/open-api/v1/events/${eventId}/brands/${brandId}`);\n return res.data;\n }\n}\n","import type { PaginatedResponse, PaginationParams } from '../types';\n\nexport async function* paginate<T>(\n fetchPage: (params: PaginationParams) => Promise<PaginatedResponse<T>>,\n initialParams?: PaginationParams,\n): AsyncGenerator<T[], void, undefined> {\n let page = initialParams?.page ?? 1;\n const take = initialParams?.take ?? 10;\n\n while (true) {\n const response = await fetchPage({ page, take });\n yield response.data;\n\n if (page >= response.meta.totalPages) {\n break;\n }\n page++;\n }\n}\n\nexport async function fetchAllPages<T>(\n fetchPage: (params: PaginationParams) => Promise<PaginatedResponse<T>>,\n initialParams?: PaginationParams,\n): Promise<T[]> {\n const all: T[] = [];\n for await (const batch of paginate(fetchPage, initialParams)) {\n all.push(...batch);\n }\n return all;\n}\n","import { HttpClient } from './client';\nimport { EventsResource } from './resources/events';\nimport { TicketsResource } from './resources/tickets';\nimport { OrdersResource } from './resources/orders';\nimport { VenuesResource } from './resources/venues';\nimport { WebhooksResource } from './resources/webhooks';\nimport { PerformersResource } from './resources/performers';\nimport { SchedulesResource } from './resources/schedules';\nimport { BrandsResource } from './resources/brands';\nimport type { TicketnationConfig, AccountInfo, DataResponse } from './types';\n\nexport class Ticketnation {\n readonly events: EventsResource;\n readonly tickets: TicketsResource;\n readonly orders: OrdersResource;\n readonly venues: VenuesResource;\n readonly webhooks: WebhooksResource;\n readonly performers: PerformersResource;\n readonly schedules: SchedulesResource;\n readonly brands: BrandsResource;\n\n private readonly client: HttpClient;\n\n constructor(config: TicketnationConfig) {\n if (!config.apiKey) {\n throw new Error('Ticketnation SDK requires an apiKey');\n }\n\n this.client = new HttpClient({\n apiKey: config.apiKey,\n baseUrl: config.baseUrl ?? 'https://api.ticketnation.ph',\n timeout: config.timeout ?? 30000,\n retries: config.retries ?? 2,\n debug: config.debug ?? false,\n });\n\n this.events = new EventsResource(this.client);\n this.tickets = new TicketsResource(this.client);\n this.orders = new OrdersResource(this.client);\n this.venues = new VenuesResource(this.client);\n this.webhooks = new WebhooksResource(this.client);\n this.performers = new PerformersResource(this.client);\n this.schedules = new SchedulesResource(this.client);\n this.brands = new BrandsResource(this.client);\n }\n\n async me(): Promise<AccountInfo> {\n const res = await this.client.request<DataResponse<AccountInfo>>('GET', '/open-api/v1/me');\n return res.data;\n }\n}\n\n// Re-export everything\nexport { TicketnationError } from './errors';\nexport { paginate, fetchAllPages } from './utils/pagination';\nexport type * from './types';\nexport type { Performer, CreatePerformerParams } from './resources/performers';\nexport type { Schedule, CreateScheduleParams, UpdateScheduleParams } from './resources/schedules';\nexport type { Brand, CreateBrandParams } from './resources/brands';\n"]}
package/dist/index.mjs CHANGED
@@ -275,6 +275,67 @@ var WebhooksResource = class {
275
275
  }
276
276
  };
277
277
 
278
+ // src/resources/performers.ts
279
+ var PerformersResource = class {
280
+ constructor(client) {
281
+ this.client = client;
282
+ }
283
+ async create(eventId, params) {
284
+ const res = await this.client.request("POST", `/open-api/v1/events/${eventId}/performers`, { body: params });
285
+ return res.data;
286
+ }
287
+ async list(eventId) {
288
+ const res = await this.client.request("GET", `/open-api/v1/events/${eventId}/performers`);
289
+ return res.data;
290
+ }
291
+ async remove(eventId, performerId) {
292
+ const res = await this.client.request("DELETE", `/open-api/v1/events/${eventId}/performers/${performerId}`);
293
+ return res.data;
294
+ }
295
+ };
296
+
297
+ // src/resources/schedules.ts
298
+ var SchedulesResource = class {
299
+ constructor(client) {
300
+ this.client = client;
301
+ }
302
+ async create(eventId, params) {
303
+ const res = await this.client.request("POST", `/open-api/v1/events/${eventId}/schedules`, { body: params });
304
+ return res.data;
305
+ }
306
+ async list(eventId) {
307
+ const res = await this.client.request("GET", `/open-api/v1/events/${eventId}/schedules`);
308
+ return res.data;
309
+ }
310
+ async update(eventId, scheduleId, params) {
311
+ const res = await this.client.request("PATCH", `/open-api/v1/events/${eventId}/schedules/${scheduleId}`, { body: params });
312
+ return res.data;
313
+ }
314
+ async remove(eventId, scheduleId) {
315
+ const res = await this.client.request("DELETE", `/open-api/v1/events/${eventId}/schedules/${scheduleId}`);
316
+ return res.data;
317
+ }
318
+ };
319
+
320
+ // src/resources/brands.ts
321
+ var BrandsResource = class {
322
+ constructor(client) {
323
+ this.client = client;
324
+ }
325
+ async create(eventId, params) {
326
+ const res = await this.client.request("POST", `/open-api/v1/events/${eventId}/brands`, { body: params });
327
+ return res.data;
328
+ }
329
+ async list(eventId) {
330
+ const res = await this.client.request("GET", `/open-api/v1/events/${eventId}/brands`);
331
+ return res.data;
332
+ }
333
+ async remove(eventId, brandId) {
334
+ const res = await this.client.request("DELETE", `/open-api/v1/events/${eventId}/brands/${brandId}`);
335
+ return res.data;
336
+ }
337
+ };
338
+
278
339
  // src/utils/pagination.ts
279
340
  async function* paginate(fetchPage, initialParams) {
280
341
  let page = initialParams?.page ?? 1;
@@ -303,6 +364,9 @@ var Ticketnation = class {
303
364
  orders;
304
365
  venues;
305
366
  webhooks;
367
+ performers;
368
+ schedules;
369
+ brands;
306
370
  client;
307
371
  constructor(config) {
308
372
  if (!config.apiKey) {
@@ -320,6 +384,9 @@ var Ticketnation = class {
320
384
  this.orders = new OrdersResource(this.client);
321
385
  this.venues = new VenuesResource(this.client);
322
386
  this.webhooks = new WebhooksResource(this.client);
387
+ this.performers = new PerformersResource(this.client);
388
+ this.schedules = new SchedulesResource(this.client);
389
+ this.brands = new BrandsResource(this.client);
323
390
  }
324
391
  async me() {
325
392
  const res = await this.client.request("GET", "/open-api/v1/me");
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/client.ts","../src/resources/events.ts","../src/resources/tickets.ts","../src/resources/orders.ts","../src/resources/venues.ts","../src/resources/webhooks.ts","../src/utils/pagination.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import type { ApiErrorBody } from './types';\n\nexport class TicketnationError extends Error {\n readonly code: string;\n readonly status: number;\n readonly requestId: string | null;\n readonly details: Array<{ field: string; message: string }> | undefined;\n\n constructor(\n message: string,\n opts: {\n code: string;\n status: number;\n requestId?: string;\n details?: Array<{ field: string; message: string }>;\n },\n ) {\n super(message);\n this.name = 'TicketnationError';\n this.code = opts.code;\n this.status = opts.status;\n this.requestId = opts.requestId ?? null;\n this.details = opts.details;\n }\n\n static fromResponse(status: number, body: { error: ApiErrorBody; requestId?: string }): TicketnationError {\n return new TicketnationError(body.error.message, {\n code: body.error.code,\n status,\n requestId: body.requestId,\n details: body.error.details,\n });\n }\n\n toJSON() {\n return {\n name: this.name,\n code: this.code,\n status: this.status,\n message: this.message,\n requestId: this.requestId,\n details: this.details,\n };\n }\n}\n","import { TicketnationError } from './errors';\n\nexport interface ClientConfig {\n apiKey: string;\n baseUrl: string;\n timeout: number;\n retries: number;\n debug: boolean;\n}\n\nexport class HttpClient {\n private readonly config: ClientConfig;\n\n constructor(config: ClientConfig) {\n this.config = config;\n }\n\n async request<T>(method: string, path: string, opts?: { body?: unknown; params?: Record<string, unknown> }): Promise<T> {\n const url = this.buildUrl(path, opts?.params);\n let lastError: Error | null = null;\n\n for (let attempt = 0; attempt <= this.config.retries; attempt++) {\n if (attempt > 0) {\n const delay = Math.min(1000 * Math.pow(2, attempt - 1), 10000);\n await this.sleep(delay);\n if (this.config.debug) {\n console.log(`[Ticketnation SDK] Retry attempt ${attempt}/${this.config.retries} for ${method} ${path}`);\n }\n }\n\n try {\n const response = await this.doRequest(method, url, opts?.body);\n return response as T;\n } catch (error) {\n lastError = error as Error;\n if (error instanceof TicketnationError && error.status < 500) {\n throw error;\n }\n }\n }\n\n throw lastError;\n }\n\n private async doRequest(method: string, url: string, body?: unknown): Promise<unknown> {\n if (this.config.debug) {\n const redactedKey = this.config.apiKey.slice(0, 6) + '...' + this.config.apiKey.slice(-4);\n console.log(`[Ticketnation SDK] ${method} ${url} (key: ${redactedKey})`);\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);\n\n try {\n const headers: Record<string, string> = {\n 'api-key': this.config.apiKey,\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n 'User-Agent': 'ticketnation-sdk/1.0.2',\n };\n\n const init: RequestInit = {\n method,\n headers,\n signal: controller.signal,\n };\n\n if (body && (method === 'POST' || method === 'PATCH' || method === 'PUT')) {\n init.body = JSON.stringify(body);\n }\n\n const response = await fetch(url, init);\n\n if (!response.ok) {\n let errorBody: unknown;\n try {\n errorBody = await response.json();\n } catch {\n throw new TicketnationError(`HTTP ${response.status}: ${response.statusText}`, {\n code: 'HTTP_ERROR',\n status: response.status,\n });\n }\n\n const parsed = errorBody as { error?: { code: string; message: string; details?: Array<{ field: string; message: string }> }; requestId?: string };\n if (parsed.error) {\n throw TicketnationError.fromResponse(response.status, parsed as { error: { code: string; message: string }; requestId?: string });\n }\n\n throw new TicketnationError(`HTTP ${response.status}: ${response.statusText}`, {\n code: 'HTTP_ERROR',\n status: response.status,\n });\n }\n\n if (response.status === 204) {\n return {};\n }\n\n return await response.json();\n } catch (error) {\n if (error instanceof TicketnationError) throw error;\n\n if (error instanceof DOMException && error.name === 'AbortError') {\n throw new TicketnationError(`Request timed out after ${this.config.timeout}ms`, {\n code: 'TIMEOUT',\n status: 0,\n });\n }\n\n throw new TicketnationError(`Network error: ${(error as Error).message}`, {\n code: 'NETWORK_ERROR',\n status: 0,\n });\n } finally {\n clearTimeout(timeoutId);\n }\n }\n\n private buildUrl(path: string, params?: Record<string, unknown>): string {\n const base = this.config.baseUrl.replace(/\\/$/, '');\n const url = new URL(`${base}${path}`);\n\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n\n return url.toString();\n }\n\n private sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n}\n","import type { HttpClient } from '../client';\nimport type {\n Event,\n CreateEventParams,\n UpdateEventParams,\n ListEventsParams,\n DataResponse,\n PaginatedResponse,\n DeletedResponse,\n} from '../types';\n\nexport class EventsResource {\n constructor(private readonly client: HttpClient) {}\n\n async create(params: CreateEventParams): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('POST', '/open-api/v1/events', { body: params });\n return res.data;\n }\n\n async list(params?: ListEventsParams): Promise<PaginatedResponse<Event>> {\n return this.client.request<PaginatedResponse<Event>>('GET', '/open-api/v1/events', {\n params: params ? { page: params.page, take: params.take, status: params.status, search: params.search } : undefined,\n });\n }\n\n async get(idOrSlug: string): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('GET', `/open-api/v1/events/${encodeURIComponent(idOrSlug)}`);\n return res.data;\n }\n\n async update(eventId: string, params: UpdateEventParams): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('PATCH', `/open-api/v1/events/${eventId}`, { body: params });\n return res.data;\n }\n\n async publish(eventId: string): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('POST', `/open-api/v1/events/${eventId}/publish`);\n return res.data;\n }\n\n async unpublish(eventId: string): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('POST', `/open-api/v1/events/${eventId}/unpublish`);\n return res.data;\n }\n\n async archive(eventId: string): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('POST', `/open-api/v1/events/${eventId}/archive`);\n return res.data;\n }\n\n async delete(eventId: string): Promise<DeletedResponse> {\n const res = await this.client.request<DataResponse<DeletedResponse>>('DELETE', `/open-api/v1/events/${eventId}`);\n return res.data;\n }\n}\n","import type { HttpClient } from '../client';\nimport type {\n Ticket,\n CreateTicketParams,\n UpdateTicketParams,\n DataResponse,\n DeletedResponse,\n} from '../types';\n\nexport class TicketsResource {\n constructor(private readonly client: HttpClient) {}\n\n async create(eventId: string, params: CreateTicketParams): Promise<Ticket> {\n const res = await this.client.request<DataResponse<Ticket>>('POST', `/open-api/v1/events/${eventId}/tickets`, { body: params });\n return res.data;\n }\n\n async list(eventId: string): Promise<Ticket[]> {\n const res = await this.client.request<DataResponse<Ticket[]>>('GET', `/open-api/v1/events/${eventId}/tickets`);\n return res.data;\n }\n\n async get(eventId: string, ticketId: string): Promise<Ticket> {\n const res = await this.client.request<DataResponse<Ticket>>('GET', `/open-api/v1/events/${eventId}/tickets/${ticketId}`);\n return res.data;\n }\n\n async update(eventId: string, ticketId: string, params: UpdateTicketParams): Promise<Ticket> {\n const res = await this.client.request<DataResponse<Ticket>>('PATCH', `/open-api/v1/events/${eventId}/tickets/${ticketId}`, { body: params });\n return res.data;\n }\n\n async publish(eventId: string, ticketId: string): Promise<Ticket> {\n const res = await this.client.request<DataResponse<Ticket>>('POST', `/open-api/v1/events/${eventId}/tickets/${ticketId}/publish`);\n return res.data;\n }\n\n async markSoldOut(eventId: string, ticketId: string): Promise<Ticket> {\n const res = await this.client.request<DataResponse<Ticket>>('POST', `/open-api/v1/events/${eventId}/tickets/${ticketId}/sold-out`);\n return res.data;\n }\n\n async delete(eventId: string, ticketId: string): Promise<DeletedResponse> {\n const res = await this.client.request<DataResponse<DeletedResponse>>('DELETE', `/open-api/v1/events/${eventId}/tickets/${ticketId}`);\n return res.data;\n }\n}\n","import type { HttpClient } from '../client';\nimport type {\n Order,\n ListOrdersParams,\n DataResponse,\n PaginatedResponse,\n} from '../types';\n\nexport class OrdersResource {\n constructor(private readonly client: HttpClient) {}\n\n async list(eventId: string, params?: ListOrdersParams): Promise<PaginatedResponse<Order>> {\n return this.client.request<PaginatedResponse<Order>>('GET', `/open-api/v1/events/${eventId}/orders`, {\n params: params ? { page: params.page, take: params.take, status: params.status } : undefined,\n });\n }\n\n async get(orderId: string): Promise<Order> {\n const res = await this.client.request<DataResponse<Order>>('GET', `/open-api/v1/orders/${orderId}`);\n return res.data;\n }\n}\n","import type { HttpClient } from '../client';\nimport type {\n Venue,\n SearchVenuesParams,\n PaginatedResponse,\n} from '../types';\n\nexport class VenuesResource {\n constructor(private readonly client: HttpClient) {}\n\n async search(params: SearchVenuesParams): Promise<PaginatedResponse<Venue>> {\n return this.client.request<PaginatedResponse<Venue>>('GET', '/open-api/v1/venues/search', {\n params: { query: params.query, page: params.page, take: params.take },\n });\n }\n}\n","import type { HttpClient } from '../client';\nimport type {\n Webhook,\n WebhookWithSecret,\n CreateWebhookParams,\n UpdateWebhookParams,\n DataResponse,\n PaginatedResponse,\n DeletedResponse,\n} from '../types';\n\nexport interface WebhookDelivery {\n id: string;\n eventType: string;\n statusCode: number | null;\n success: boolean;\n attempts: number;\n createdAt: string;\n}\n\nexport interface WebhookTestResult {\n success: boolean;\n statusCode: number | null;\n message: string;\n}\n\nexport class WebhooksResource {\n constructor(private readonly client: HttpClient) {}\n\n async create(params: CreateWebhookParams): Promise<WebhookWithSecret> {\n const res = await this.client.request<DataResponse<WebhookWithSecret>>('POST', '/open-api/v1/webhooks', { body: params });\n return res.data;\n }\n\n async list(): Promise<Webhook[]> {\n const res = await this.client.request<DataResponse<Webhook[]>>('GET', '/open-api/v1/webhooks');\n return res.data;\n }\n\n async update(webhookId: string, params: UpdateWebhookParams): Promise<Webhook> {\n const res = await this.client.request<DataResponse<Webhook>>('PATCH', `/open-api/v1/webhooks/${webhookId}`, { body: params });\n return res.data;\n }\n\n async delete(webhookId: string): Promise<DeletedResponse> {\n const res = await this.client.request<DataResponse<DeletedResponse>>('DELETE', `/open-api/v1/webhooks/${webhookId}`);\n return res.data;\n }\n\n async test(webhookId: string): Promise<WebhookTestResult> {\n const res = await this.client.request<DataResponse<WebhookTestResult>>('POST', `/open-api/v1/webhooks/${webhookId}/test`);\n return res.data;\n }\n\n async deliveries(webhookId: string, params?: { page?: number; take?: number }): Promise<PaginatedResponse<WebhookDelivery>> {\n return this.client.request<PaginatedResponse<WebhookDelivery>>('GET', `/open-api/v1/webhooks/${webhookId}/deliveries`, {\n params: params ? { page: params.page, take: params.take } : undefined,\n });\n }\n}\n","import type { PaginatedResponse, PaginationParams } from '../types';\n\nexport async function* paginate<T>(\n fetchPage: (params: PaginationParams) => Promise<PaginatedResponse<T>>,\n initialParams?: PaginationParams,\n): AsyncGenerator<T[], void, undefined> {\n let page = initialParams?.page ?? 1;\n const take = initialParams?.take ?? 10;\n\n while (true) {\n const response = await fetchPage({ page, take });\n yield response.data;\n\n if (page >= response.meta.totalPages) {\n break;\n }\n page++;\n }\n}\n\nexport async function fetchAllPages<T>(\n fetchPage: (params: PaginationParams) => Promise<PaginatedResponse<T>>,\n initialParams?: PaginationParams,\n): Promise<T[]> {\n const all: T[] = [];\n for await (const batch of paginate(fetchPage, initialParams)) {\n all.push(...batch);\n }\n return all;\n}\n","import { HttpClient } from './client';\nimport { EventsResource } from './resources/events';\nimport { TicketsResource } from './resources/tickets';\nimport { OrdersResource } from './resources/orders';\nimport { VenuesResource } from './resources/venues';\nimport { WebhooksResource } from './resources/webhooks';\nimport type { TicketnationConfig, AccountInfo, DataResponse } from './types';\n\nexport class Ticketnation {\n readonly events: EventsResource;\n readonly tickets: TicketsResource;\n readonly orders: OrdersResource;\n readonly venues: VenuesResource;\n readonly webhooks: WebhooksResource;\n\n private readonly client: HttpClient;\n\n constructor(config: TicketnationConfig) {\n if (!config.apiKey) {\n throw new Error('Ticketnation SDK requires an apiKey');\n }\n\n this.client = new HttpClient({\n apiKey: config.apiKey,\n baseUrl: config.baseUrl ?? 'https://api.ticketnation.ph',\n timeout: config.timeout ?? 30000,\n retries: config.retries ?? 2,\n debug: config.debug ?? false,\n });\n\n this.events = new EventsResource(this.client);\n this.tickets = new TicketsResource(this.client);\n this.orders = new OrdersResource(this.client);\n this.venues = new VenuesResource(this.client);\n this.webhooks = new WebhooksResource(this.client);\n }\n\n async me(): Promise<AccountInfo> {\n const res = await this.client.request<DataResponse<AccountInfo>>('GET', '/open-api/v1/me');\n return res.data;\n }\n}\n\n// Re-export everything\nexport { TicketnationError } from './errors';\nexport { paginate, fetchAllPages } from './utils/pagination';\nexport type * from './types';\n"]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/client.ts","../src/resources/events.ts","../src/resources/tickets.ts","../src/resources/orders.ts","../src/resources/venues.ts","../src/resources/webhooks.ts","../src/resources/performers.ts","../src/resources/schedules.ts","../src/resources/brands.ts","../src/utils/pagination.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import type { ApiErrorBody } from './types';\n\nexport class TicketnationError extends Error {\n readonly code: string;\n readonly status: number;\n readonly requestId: string | null;\n readonly details: Array<{ field: string; message: string }> | undefined;\n\n constructor(\n message: string,\n opts: {\n code: string;\n status: number;\n requestId?: string;\n details?: Array<{ field: string; message: string }>;\n },\n ) {\n super(message);\n this.name = 'TicketnationError';\n this.code = opts.code;\n this.status = opts.status;\n this.requestId = opts.requestId ?? null;\n this.details = opts.details;\n }\n\n static fromResponse(status: number, body: { error: ApiErrorBody; requestId?: string }): TicketnationError {\n return new TicketnationError(body.error.message, {\n code: body.error.code,\n status,\n requestId: body.requestId,\n details: body.error.details,\n });\n }\n\n toJSON() {\n return {\n name: this.name,\n code: this.code,\n status: this.status,\n message: this.message,\n requestId: this.requestId,\n details: this.details,\n };\n }\n}\n","import { TicketnationError } from './errors';\n\nexport interface ClientConfig {\n apiKey: string;\n baseUrl: string;\n timeout: number;\n retries: number;\n debug: boolean;\n}\n\nexport class HttpClient {\n private readonly config: ClientConfig;\n\n constructor(config: ClientConfig) {\n this.config = config;\n }\n\n async request<T>(method: string, path: string, opts?: { body?: unknown; params?: Record<string, unknown> }): Promise<T> {\n const url = this.buildUrl(path, opts?.params);\n let lastError: Error | null = null;\n\n for (let attempt = 0; attempt <= this.config.retries; attempt++) {\n if (attempt > 0) {\n const delay = Math.min(1000 * Math.pow(2, attempt - 1), 10000);\n await this.sleep(delay);\n if (this.config.debug) {\n console.log(`[Ticketnation SDK] Retry attempt ${attempt}/${this.config.retries} for ${method} ${path}`);\n }\n }\n\n try {\n const response = await this.doRequest(method, url, opts?.body);\n return response as T;\n } catch (error) {\n lastError = error as Error;\n if (error instanceof TicketnationError && error.status < 500) {\n throw error;\n }\n }\n }\n\n throw lastError;\n }\n\n private async doRequest(method: string, url: string, body?: unknown): Promise<unknown> {\n if (this.config.debug) {\n const redactedKey = this.config.apiKey.slice(0, 6) + '...' + this.config.apiKey.slice(-4);\n console.log(`[Ticketnation SDK] ${method} ${url} (key: ${redactedKey})`);\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);\n\n try {\n const headers: Record<string, string> = {\n 'api-key': this.config.apiKey,\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n 'User-Agent': 'ticketnation-sdk/1.0.2',\n };\n\n const init: RequestInit = {\n method,\n headers,\n signal: controller.signal,\n };\n\n if (body && (method === 'POST' || method === 'PATCH' || method === 'PUT')) {\n init.body = JSON.stringify(body);\n }\n\n const response = await fetch(url, init);\n\n if (!response.ok) {\n let errorBody: unknown;\n try {\n errorBody = await response.json();\n } catch {\n throw new TicketnationError(`HTTP ${response.status}: ${response.statusText}`, {\n code: 'HTTP_ERROR',\n status: response.status,\n });\n }\n\n const parsed = errorBody as { error?: { code: string; message: string; details?: Array<{ field: string; message: string }> }; requestId?: string };\n if (parsed.error) {\n throw TicketnationError.fromResponse(response.status, parsed as { error: { code: string; message: string }; requestId?: string });\n }\n\n throw new TicketnationError(`HTTP ${response.status}: ${response.statusText}`, {\n code: 'HTTP_ERROR',\n status: response.status,\n });\n }\n\n if (response.status === 204) {\n return {};\n }\n\n return await response.json();\n } catch (error) {\n if (error instanceof TicketnationError) throw error;\n\n if (error instanceof DOMException && error.name === 'AbortError') {\n throw new TicketnationError(`Request timed out after ${this.config.timeout}ms`, {\n code: 'TIMEOUT',\n status: 0,\n });\n }\n\n throw new TicketnationError(`Network error: ${(error as Error).message}`, {\n code: 'NETWORK_ERROR',\n status: 0,\n });\n } finally {\n clearTimeout(timeoutId);\n }\n }\n\n private buildUrl(path: string, params?: Record<string, unknown>): string {\n const base = this.config.baseUrl.replace(/\\/$/, '');\n const url = new URL(`${base}${path}`);\n\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n\n return url.toString();\n }\n\n private sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n}\n","import type { HttpClient } from '../client';\nimport type {\n Event,\n CreateEventParams,\n UpdateEventParams,\n ListEventsParams,\n DataResponse,\n PaginatedResponse,\n DeletedResponse,\n} from '../types';\n\nexport class EventsResource {\n constructor(private readonly client: HttpClient) {}\n\n async create(params: CreateEventParams): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('POST', '/open-api/v1/events', { body: params });\n return res.data;\n }\n\n async list(params?: ListEventsParams): Promise<PaginatedResponse<Event>> {\n return this.client.request<PaginatedResponse<Event>>('GET', '/open-api/v1/events', {\n params: params ? { page: params.page, take: params.take, status: params.status, search: params.search } : undefined,\n });\n }\n\n async get(idOrSlug: string): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('GET', `/open-api/v1/events/${encodeURIComponent(idOrSlug)}`);\n return res.data;\n }\n\n async update(eventId: string, params: UpdateEventParams): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('PATCH', `/open-api/v1/events/${eventId}`, { body: params });\n return res.data;\n }\n\n async publish(eventId: string): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('POST', `/open-api/v1/events/${eventId}/publish`);\n return res.data;\n }\n\n async unpublish(eventId: string): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('POST', `/open-api/v1/events/${eventId}/unpublish`);\n return res.data;\n }\n\n async archive(eventId: string): Promise<Event> {\n const res = await this.client.request<DataResponse<Event>>('POST', `/open-api/v1/events/${eventId}/archive`);\n return res.data;\n }\n\n async delete(eventId: string): Promise<DeletedResponse> {\n const res = await this.client.request<DataResponse<DeletedResponse>>('DELETE', `/open-api/v1/events/${eventId}`);\n return res.data;\n }\n}\n","import type { HttpClient } from '../client';\nimport type {\n Ticket,\n CreateTicketParams,\n UpdateTicketParams,\n DataResponse,\n DeletedResponse,\n} from '../types';\n\nexport class TicketsResource {\n constructor(private readonly client: HttpClient) {}\n\n async create(eventId: string, params: CreateTicketParams): Promise<Ticket> {\n const res = await this.client.request<DataResponse<Ticket>>('POST', `/open-api/v1/events/${eventId}/tickets`, { body: params });\n return res.data;\n }\n\n async list(eventId: string): Promise<Ticket[]> {\n const res = await this.client.request<DataResponse<Ticket[]>>('GET', `/open-api/v1/events/${eventId}/tickets`);\n return res.data;\n }\n\n async get(eventId: string, ticketId: string): Promise<Ticket> {\n const res = await this.client.request<DataResponse<Ticket>>('GET', `/open-api/v1/events/${eventId}/tickets/${ticketId}`);\n return res.data;\n }\n\n async update(eventId: string, ticketId: string, params: UpdateTicketParams): Promise<Ticket> {\n const res = await this.client.request<DataResponse<Ticket>>('PATCH', `/open-api/v1/events/${eventId}/tickets/${ticketId}`, { body: params });\n return res.data;\n }\n\n async publish(eventId: string, ticketId: string): Promise<Ticket> {\n const res = await this.client.request<DataResponse<Ticket>>('POST', `/open-api/v1/events/${eventId}/tickets/${ticketId}/publish`);\n return res.data;\n }\n\n async markSoldOut(eventId: string, ticketId: string): Promise<Ticket> {\n const res = await this.client.request<DataResponse<Ticket>>('POST', `/open-api/v1/events/${eventId}/tickets/${ticketId}/sold-out`);\n return res.data;\n }\n\n async delete(eventId: string, ticketId: string): Promise<DeletedResponse> {\n const res = await this.client.request<DataResponse<DeletedResponse>>('DELETE', `/open-api/v1/events/${eventId}/tickets/${ticketId}`);\n return res.data;\n }\n}\n","import type { HttpClient } from '../client';\nimport type {\n Order,\n ListOrdersParams,\n DataResponse,\n PaginatedResponse,\n} from '../types';\n\nexport class OrdersResource {\n constructor(private readonly client: HttpClient) {}\n\n async list(eventId: string, params?: ListOrdersParams): Promise<PaginatedResponse<Order>> {\n return this.client.request<PaginatedResponse<Order>>('GET', `/open-api/v1/events/${eventId}/orders`, {\n params: params ? { page: params.page, take: params.take, status: params.status } : undefined,\n });\n }\n\n async get(orderId: string): Promise<Order> {\n const res = await this.client.request<DataResponse<Order>>('GET', `/open-api/v1/orders/${orderId}`);\n return res.data;\n }\n}\n","import type { HttpClient } from '../client';\nimport type {\n Venue,\n SearchVenuesParams,\n PaginatedResponse,\n} from '../types';\n\nexport class VenuesResource {\n constructor(private readonly client: HttpClient) {}\n\n async search(params: SearchVenuesParams): Promise<PaginatedResponse<Venue>> {\n return this.client.request<PaginatedResponse<Venue>>('GET', '/open-api/v1/venues/search', {\n params: { query: params.query, page: params.page, take: params.take },\n });\n }\n}\n","import type { HttpClient } from '../client';\nimport type {\n Webhook,\n WebhookWithSecret,\n CreateWebhookParams,\n UpdateWebhookParams,\n DataResponse,\n PaginatedResponse,\n DeletedResponse,\n} from '../types';\n\nexport interface WebhookDelivery {\n id: string;\n eventType: string;\n statusCode: number | null;\n success: boolean;\n attempts: number;\n createdAt: string;\n}\n\nexport interface WebhookTestResult {\n success: boolean;\n statusCode: number | null;\n message: string;\n}\n\nexport class WebhooksResource {\n constructor(private readonly client: HttpClient) {}\n\n async create(params: CreateWebhookParams): Promise<WebhookWithSecret> {\n const res = await this.client.request<DataResponse<WebhookWithSecret>>('POST', '/open-api/v1/webhooks', { body: params });\n return res.data;\n }\n\n async list(): Promise<Webhook[]> {\n const res = await this.client.request<DataResponse<Webhook[]>>('GET', '/open-api/v1/webhooks');\n return res.data;\n }\n\n async update(webhookId: string, params: UpdateWebhookParams): Promise<Webhook> {\n const res = await this.client.request<DataResponse<Webhook>>('PATCH', `/open-api/v1/webhooks/${webhookId}`, { body: params });\n return res.data;\n }\n\n async delete(webhookId: string): Promise<DeletedResponse> {\n const res = await this.client.request<DataResponse<DeletedResponse>>('DELETE', `/open-api/v1/webhooks/${webhookId}`);\n return res.data;\n }\n\n async test(webhookId: string): Promise<WebhookTestResult> {\n const res = await this.client.request<DataResponse<WebhookTestResult>>('POST', `/open-api/v1/webhooks/${webhookId}/test`);\n return res.data;\n }\n\n async deliveries(webhookId: string, params?: { page?: number; take?: number }): Promise<PaginatedResponse<WebhookDelivery>> {\n return this.client.request<PaginatedResponse<WebhookDelivery>>('GET', `/open-api/v1/webhooks/${webhookId}/deliveries`, {\n params: params ? { page: params.page, take: params.take } : undefined,\n });\n }\n}\n","import type { HttpClient } from '../client';\nimport type { DataResponse, DeletedResponse } from '../types';\n\nexport interface CreatePerformerParams {\n name: string;\n description?: string;\n type?: 'SOLO' | 'GROUP' | 'DJ' | 'BAND' | 'SPEAKER' | 'HOST' | 'COMEDIAN' | 'OTHER';\n imageUrl?: string;\n facebook?: string;\n youtube?: string;\n instagram?: string;\n}\n\nexport interface Performer {\n id: string;\n name: string;\n description: string | null;\n type: string;\n slug: string | null;\n facebook: string | null;\n youtube: string | null;\n instagram: string | null;\n image: { id: string; url: string | null } | null;\n}\n\nexport class PerformersResource {\n constructor(private readonly client: HttpClient) {}\n\n async create(eventId: string, params: CreatePerformerParams): Promise<Performer> {\n const res = await this.client.request<DataResponse<Performer>>('POST', `/open-api/v1/events/${eventId}/performers`, { body: params });\n return res.data;\n }\n\n async list(eventId: string): Promise<Performer[]> {\n const res = await this.client.request<DataResponse<Performer[]>>('GET', `/open-api/v1/events/${eventId}/performers`);\n return res.data;\n }\n\n async remove(eventId: string, performerId: string): Promise<DeletedResponse> {\n const res = await this.client.request<DataResponse<DeletedResponse>>('DELETE', `/open-api/v1/events/${eventId}/performers/${performerId}`);\n return res.data;\n }\n}\n","import type { HttpClient } from '../client';\nimport type { DataResponse, DeletedResponse } from '../types';\n\nexport interface CreateScheduleParams {\n title: string;\n description?: string;\n startTime: string;\n endTime: string;\n icon?: string;\n color?: string;\n sortOrder?: number;\n performerId?: string;\n}\n\nexport interface UpdateScheduleParams {\n title?: string;\n description?: string;\n startTime?: string;\n endTime?: string;\n icon?: string;\n color?: string;\n sortOrder?: number;\n performerId?: string;\n}\n\nexport interface Schedule {\n id: string;\n title: string;\n description: string | null;\n startTime: string;\n endTime: string;\n icon: string | null;\n color: string | null;\n sortOrder: number;\n performerId: string | null;\n performer: { id: string; name: string } | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport class SchedulesResource {\n constructor(private readonly client: HttpClient) {}\n\n async create(eventId: string, params: CreateScheduleParams): Promise<Schedule> {\n const res = await this.client.request<DataResponse<Schedule>>('POST', `/open-api/v1/events/${eventId}/schedules`, { body: params });\n return res.data;\n }\n\n async list(eventId: string): Promise<Schedule[]> {\n const res = await this.client.request<DataResponse<Schedule[]>>('GET', `/open-api/v1/events/${eventId}/schedules`);\n return res.data;\n }\n\n async update(eventId: string, scheduleId: string, params: UpdateScheduleParams): Promise<Schedule> {\n const res = await this.client.request<DataResponse<Schedule>>('PATCH', `/open-api/v1/events/${eventId}/schedules/${scheduleId}`, { body: params });\n return res.data;\n }\n\n async remove(eventId: string, scheduleId: string): Promise<DeletedResponse> {\n const res = await this.client.request<DataResponse<DeletedResponse>>('DELETE', `/open-api/v1/events/${eventId}/schedules/${scheduleId}`);\n return res.data;\n }\n}\n","import type { HttpClient } from '../client';\nimport type { DataResponse, DeletedResponse } from '../types';\n\nexport interface CreateBrandParams {\n name: string;\n description?: string;\n url?: string;\n imageUrl?: string;\n position?: number;\n}\n\nexport interface Brand {\n id: string;\n name: string;\n description: string | null;\n url: string | null;\n sponsorshipColor: string | null;\n image: { id: string; url: string | null } | null;\n position: number | null;\n}\n\nexport class BrandsResource {\n constructor(private readonly client: HttpClient) {}\n\n async create(eventId: string, params: CreateBrandParams): Promise<Brand> {\n const res = await this.client.request<DataResponse<Brand>>('POST', `/open-api/v1/events/${eventId}/brands`, { body: params });\n return res.data;\n }\n\n async list(eventId: string): Promise<Brand[]> {\n const res = await this.client.request<DataResponse<Brand[]>>('GET', `/open-api/v1/events/${eventId}/brands`);\n return res.data;\n }\n\n async remove(eventId: string, brandId: string): Promise<DeletedResponse> {\n const res = await this.client.request<DataResponse<DeletedResponse>>('DELETE', `/open-api/v1/events/${eventId}/brands/${brandId}`);\n return res.data;\n }\n}\n","import type { PaginatedResponse, PaginationParams } from '../types';\n\nexport async function* paginate<T>(\n fetchPage: (params: PaginationParams) => Promise<PaginatedResponse<T>>,\n initialParams?: PaginationParams,\n): AsyncGenerator<T[], void, undefined> {\n let page = initialParams?.page ?? 1;\n const take = initialParams?.take ?? 10;\n\n while (true) {\n const response = await fetchPage({ page, take });\n yield response.data;\n\n if (page >= response.meta.totalPages) {\n break;\n }\n page++;\n }\n}\n\nexport async function fetchAllPages<T>(\n fetchPage: (params: PaginationParams) => Promise<PaginatedResponse<T>>,\n initialParams?: PaginationParams,\n): Promise<T[]> {\n const all: T[] = [];\n for await (const batch of paginate(fetchPage, initialParams)) {\n all.push(...batch);\n }\n return all;\n}\n","import { HttpClient } from './client';\nimport { EventsResource } from './resources/events';\nimport { TicketsResource } from './resources/tickets';\nimport { OrdersResource } from './resources/orders';\nimport { VenuesResource } from './resources/venues';\nimport { WebhooksResource } from './resources/webhooks';\nimport { PerformersResource } from './resources/performers';\nimport { SchedulesResource } from './resources/schedules';\nimport { BrandsResource } from './resources/brands';\nimport type { TicketnationConfig, AccountInfo, DataResponse } from './types';\n\nexport class Ticketnation {\n readonly events: EventsResource;\n readonly tickets: TicketsResource;\n readonly orders: OrdersResource;\n readonly venues: VenuesResource;\n readonly webhooks: WebhooksResource;\n readonly performers: PerformersResource;\n readonly schedules: SchedulesResource;\n readonly brands: BrandsResource;\n\n private readonly client: HttpClient;\n\n constructor(config: TicketnationConfig) {\n if (!config.apiKey) {\n throw new Error('Ticketnation SDK requires an apiKey');\n }\n\n this.client = new HttpClient({\n apiKey: config.apiKey,\n baseUrl: config.baseUrl ?? 'https://api.ticketnation.ph',\n timeout: config.timeout ?? 30000,\n retries: config.retries ?? 2,\n debug: config.debug ?? false,\n });\n\n this.events = new EventsResource(this.client);\n this.tickets = new TicketsResource(this.client);\n this.orders = new OrdersResource(this.client);\n this.venues = new VenuesResource(this.client);\n this.webhooks = new WebhooksResource(this.client);\n this.performers = new PerformersResource(this.client);\n this.schedules = new SchedulesResource(this.client);\n this.brands = new BrandsResource(this.client);\n }\n\n async me(): Promise<AccountInfo> {\n const res = await this.client.request<DataResponse<AccountInfo>>('GET', '/open-api/v1/me');\n return res.data;\n }\n}\n\n// Re-export everything\nexport { TicketnationError } from './errors';\nexport { paginate, fetchAllPages } from './utils/pagination';\nexport type * from './types';\nexport type { Performer, CreatePerformerParams } from './resources/performers';\nexport type { Schedule, CreateScheduleParams, UpdateScheduleParams } from './resources/schedules';\nexport type { Brand, CreateBrandParams } from './resources/brands';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ticketnation-sdk",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "Official TypeScript SDK for the Ticketnation Open API — publish events, manage tickets, and receive orders programmatically.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",