@seshn/sdk 0.1.0 → 0.1.1
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.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -196,7 +196,7 @@ var HttpClient = class {
|
|
|
196
196
|
baseUrl;
|
|
197
197
|
constructor(options) {
|
|
198
198
|
this.apiKey = options.apiKey;
|
|
199
|
-
this.baseUrl = (options.baseUrl ?? "
|
|
199
|
+
this.baseUrl = (options.baseUrl ?? "https://api.seshn.net").replace(/\/$/, "");
|
|
200
200
|
}
|
|
201
201
|
async request(method, path, body) {
|
|
202
202
|
const headers = {
|
|
@@ -644,7 +644,7 @@ var Seshn = class {
|
|
|
644
644
|
baseUrl: options?.baseUrl
|
|
645
645
|
};
|
|
646
646
|
const client = new HttpClient(opts);
|
|
647
|
-
const baseUrl = opts.baseUrl ?? "
|
|
647
|
+
const baseUrl = opts.baseUrl ?? "https://api.seshn.net";
|
|
648
648
|
this.apiKeys = new ApiKeys(client);
|
|
649
649
|
this.auditLog = new AuditLog(client);
|
|
650
650
|
this.availability = new Availability(client);
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/index.ts","../src/client.ts","../src/resources/api-keys.ts","../src/resources/audit-log.ts","../src/resources/availability.ts","../src/resources/bookings.ts","../src/resources/booking-series.ts","../src/resources/contacts.ts","../src/resources/entitlements.ts","../src/resources/locations.ts","../src/resources/organizations.ts","../src/resources/payments.ts","../src/resources/resources.ts","../src/resources/services.ts","../src/resources/users.ts","../src/resources/waitlist.ts","../src/resources/webhooks.ts"],"sourcesContent":["export interface ApiErrorBody {\n error: string;\n code: string;\n details?: { path: string; message: string }[];\n}\n\nexport class SeshnError extends Error {\n public readonly status: number;\n public readonly code: string;\n public readonly details?: { path: string; message: string }[];\n\n constructor(status: number, body: ApiErrorBody) {\n super(body.error);\n this.name = 'SeshnError';\n this.status = status;\n this.code = body.code;\n this.details = body.details;\n }\n}\n\nexport class NotFoundError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(404, body);\n this.name = 'NotFoundError';\n }\n}\n\nexport class ValidationError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(400, body);\n this.name = 'ValidationError';\n }\n}\n\nexport class UnauthorizedError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(401, body);\n this.name = 'UnauthorizedError';\n }\n}\n\nexport class ConflictError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(409, body);\n this.name = 'ConflictError';\n }\n}\n\nexport class InsufficientCapacityError extends ConflictError {\n constructor(body: ApiErrorBody) {\n super(body);\n this.name = 'InsufficientCapacityError';\n }\n}\n\nexport class InsufficientCreditsError extends ConflictError {\n constructor(body: ApiErrorBody) {\n super(body);\n this.name = 'InsufficientCreditsError';\n }\n}\n\nexport class InvalidStateError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(422, body);\n this.name = 'InvalidStateError';\n }\n}\n\nexport class CancellationDeadlineError extends InvalidStateError {\n constructor(body: ApiErrorBody) {\n super(body);\n this.name = 'CancellationDeadlineError';\n }\n}\n\nexport class ForbiddenError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(403, body);\n this.name = 'ForbiddenError';\n }\n}\n\nexport class RateLimitError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(429, body);\n this.name = 'RateLimitError';\n }\n}\n\nexport class PaymentProviderError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(502, body);\n this.name = 'PaymentProviderError';\n }\n}\n\nexport function createError(status: number, body: ApiErrorBody): SeshnError {\n switch (status) {\n case 400:\n return new ValidationError(body);\n case 401:\n return new UnauthorizedError(body);\n case 403:\n return new ForbiddenError(body);\n case 404:\n return new NotFoundError(body);\n case 409:\n if (body.code === 'INSUFFICIENT_CAPACITY') return new InsufficientCapacityError(body);\n if (body.code === 'INSUFFICIENT_CREDITS') return new InsufficientCreditsError(body);\n return new ConflictError(body);\n case 422:\n if (body.code === 'INVALID_STATE' && body.error?.toLowerCase().includes('cancellation deadline')) {\n return new CancellationDeadlineError(body);\n }\n return new InvalidStateError(body);\n case 429:\n return new RateLimitError(body);\n case 502:\n return new PaymentProviderError(body);\n default:\n return new SeshnError(status, body);\n }\n}\n\n/** @deprecated Use `SeshnError` instead */\nexport const HeadlessBookingError = SeshnError;\n","import { HttpClient } from './client.js';\nimport { ApiKeys } from './resources/api-keys.js';\nimport { AuditLog } from './resources/audit-log.js';\nimport { Availability } from './resources/availability.js';\nimport { Bookings } from './resources/bookings.js';\nimport { BookingSeries } from './resources/booking-series.js';\nimport { Contacts } from './resources/contacts.js';\nimport { Entitlements } from './resources/entitlements.js';\nimport { Locations } from './resources/locations.js';\nimport { Organizations } from './resources/organizations.js';\nimport { Payments } from './resources/payments.js';\nimport { Resources } from './resources/resources.js';\nimport { Services } from './resources/services.js';\nimport { Users } from './resources/users.js';\nimport { Waitlist } from './resources/waitlist.js';\nimport { Webhooks } from './resources/webhooks.js';\nimport type { ClientOptions } from './types.js';\n\nexport class Seshn {\n public readonly apiKeys: ApiKeys;\n public readonly auditLog: AuditLog;\n public readonly availability: Availability;\n public readonly bookings: Bookings;\n public readonly bookingSeries: BookingSeries;\n public readonly contacts: Contacts;\n public readonly entitlements: Entitlements;\n public readonly locations: Locations;\n public readonly organizations: Organizations;\n public readonly payments: Payments;\n public readonly resources: Resources;\n public readonly services: Services;\n public readonly users: Users;\n public readonly waitlist: Waitlist;\n public readonly webhooks: Webhooks;\n\n constructor(apiKey: string, options?: { baseUrl?: string }) {\n const opts: ClientOptions = {\n apiKey,\n baseUrl: options?.baseUrl,\n };\n const client = new HttpClient(opts);\n const baseUrl = opts.baseUrl ?? 'http://localhost:3000';\n\n this.apiKeys = new ApiKeys(client);\n this.auditLog = new AuditLog(client);\n this.availability = new Availability(client);\n this.bookings = new Bookings(client);\n this.bookingSeries = new BookingSeries(client);\n this.contacts = new Contacts(client);\n this.entitlements = new Entitlements(client);\n this.locations = new Locations(client);\n this.organizations = new Organizations(client, baseUrl);\n this.payments = new Payments(client);\n this.resources = new Resources(client);\n this.services = new Services(client);\n this.users = new Users(client);\n this.waitlist = new Waitlist(client);\n this.webhooks = new Webhooks(client);\n }\n}\n\n// Re-export everything\nexport { HttpClient } from './client.js';\nexport * from './errors.js';\nexport * from './types.js';\nexport { ApiKeys } from './resources/api-keys.js';\nexport { AuditLog } from './resources/audit-log.js';\nexport { Availability } from './resources/availability.js';\nexport { Bookings } from './resources/bookings.js';\nexport { BookingSeries } from './resources/booking-series.js';\nexport { Contacts } from './resources/contacts.js';\nexport { Entitlements } from './resources/entitlements.js';\nexport { Locations } from './resources/locations.js';\nexport { Organizations } from './resources/organizations.js';\nexport { Payments } from './resources/payments.js';\nexport { Resources } from './resources/resources.js';\nexport { Services } from './resources/services.js';\nexport { Users } from './resources/users.js';\nexport { Waitlist } from './resources/waitlist.js';\nexport { Webhooks } from './resources/webhooks.js';\n\n/** @deprecated Use `Seshn` instead */\nexport const HeadlessBooking = Seshn;\n","import { type ApiErrorBody, createError } from './errors.js';\nimport type { ClientOptions } from './types.js';\n\nexport class HttpClient {\n private readonly apiKey: string;\n private readonly baseUrl: string;\n\n constructor(options: ClientOptions) {\n this.apiKey = options.apiKey;\n this.baseUrl = (options.baseUrl ?? 'http://localhost:3000').replace(/\\/$/, '');\n }\n\n async request<T>(method: string, path: string, body?: unknown): Promise<T> {\n const headers: Record<string, string> = {\n 'Authorization': `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n };\n\n const response = await fetch(`${this.baseUrl}${path}`, {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n\n if (!response.ok) {\n let errorBody: ApiErrorBody;\n try {\n errorBody = await response.json() as ApiErrorBody;\n } catch {\n errorBody = { error: response.statusText, code: 'UNKNOWN_ERROR' };\n }\n throw createError(response.status, errorBody);\n }\n\n return response.json() as Promise<T>;\n }\n\n get<T>(path: string): Promise<T> {\n return this.request<T>('GET', path);\n }\n\n post<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>('POST', path, body);\n }\n\n put<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>('PUT', path, body);\n }\n\n delete<T>(path: string): Promise<T> {\n return this.request<T>('DELETE', path);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n ApiKey,\n ApiKeyWithSecret,\n CreateApiKeyRequest,\n ListApiKeysRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class ApiKeys {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateApiKeyRequest): Promise<ApiKeyWithSecret> {\n return this.client.post<ApiKeyWithSecret>('/v1/api-keys', data);\n }\n\n async list(params?: ListApiKeysRequest): Promise<PaginatedResponse<ApiKey>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/api-keys?${query}` : '/v1/api-keys';\n return this.client.get<PaginatedResponse<ApiKey>>(path);\n }\n\n async revoke(id: string): Promise<{ deleted: boolean }> {\n return this.client.delete<{ deleted: boolean }>(`/v1/api-keys/${id}`);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n AuditLogEntry,\n ListAuditLogRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class AuditLog {\n constructor(private readonly client: HttpClient) {}\n\n async list(params?: ListAuditLogRequest): Promise<PaginatedResponse<AuditLogEntry>> {\n const search = new URLSearchParams();\n if (params?.action) search.set('action', params.action);\n if (params?.resourceType) search.set('resourceType', params.resourceType);\n if (params?.userId) search.set('userId', params.userId);\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/audit-log?${query}` : '/v1/audit-log';\n return this.client.get<PaginatedResponse<AuditLogEntry>>(path);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n Slot,\n QueryAvailabilityRequest,\n GenerateSlotsRequest,\n GenerateSlotsResponse,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Availability {\n constructor(private readonly client: HttpClient) {}\n\n async query(params: QueryAvailabilityRequest): Promise<PaginatedResponse<Slot>> {\n const search = new URLSearchParams({\n serviceId: params.serviceId,\n from: params.from,\n to: params.to,\n });\n if (params.minSeats !== undefined) {\n search.set('minSeats', String(params.minSeats));\n }\n if (params.cursor) search.set('cursor', params.cursor);\n if (params.limit !== undefined) search.set('limit', String(params.limit));\n return this.client.get<PaginatedResponse<Slot>>(\n `/v1/availability?${search.toString()}`,\n );\n }\n\n async generate(data: GenerateSlotsRequest): Promise<GenerateSlotsResponse> {\n return this.client.post<GenerateSlotsResponse>('/v1/availability/generate', data);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n BookingWithDetails,\n CreateBookingRequest,\n CreateBookingResponse,\n ConfirmBookingRequest,\n ConfirmBookingResponse,\n CancelBookingRequest,\n CancelBookingResponse,\n RescheduleBookingRequest,\n RescheduleBookingResponse,\n CheckInResponse,\n ListBookingsRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Bookings {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateBookingRequest): Promise<CreateBookingResponse> {\n return this.client.post<CreateBookingResponse>('/v1/bookings', data);\n }\n\n async list(params?: ListBookingsRequest): Promise<PaginatedResponse<BookingWithDetails>> {\n const search = new URLSearchParams();\n if (params?.contactId) search.set('contactId', params.contactId);\n if (params?.slotId) search.set('slotId', params.slotId);\n if (params?.status) search.set('status', params.status);\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/bookings?${query}` : '/v1/bookings';\n return this.client.get<PaginatedResponse<BookingWithDetails>>(path);\n }\n\n async get(id: string): Promise<BookingWithDetails> {\n return this.client.get<BookingWithDetails>(`/v1/bookings/${id}`);\n }\n\n async confirm(id: string, data?: ConfirmBookingRequest): Promise<ConfirmBookingResponse> {\n return this.client.post<ConfirmBookingResponse>(`/v1/bookings/${id}/confirm`, data ?? {});\n }\n\n async cancel(id: string, data?: CancelBookingRequest): Promise<CancelBookingResponse> {\n return this.client.put<CancelBookingResponse>(`/v1/bookings/${id}/cancel`, data ?? {});\n }\n\n async reschedule(id: string, data: RescheduleBookingRequest): Promise<RescheduleBookingResponse> {\n return this.client.put<RescheduleBookingResponse>(`/v1/bookings/${id}/reschedule`, data);\n }\n\n async checkIn(id: string): Promise<CheckInResponse> {\n return this.client.post<CheckInResponse>(`/v1/bookings/${id}/checkin`);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n BookingSeriesWithDetails,\n CreateBookingSeriesRequest,\n CreateBookingSeriesResponse,\n CancelBookingSeriesResponse,\n ListBookingSeriesRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class BookingSeries {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateBookingSeriesRequest): Promise<CreateBookingSeriesResponse> {\n return this.client.post<CreateBookingSeriesResponse>('/v1/booking-series', data);\n }\n\n async list(params?: ListBookingSeriesRequest): Promise<PaginatedResponse<BookingSeriesWithDetails>> {\n const search = new URLSearchParams();\n if (params?.contactId) search.set('contactId', params.contactId);\n if (params?.serviceId) search.set('serviceId', params.serviceId);\n if (params?.status) search.set('status', params.status);\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/booking-series?${query}` : '/v1/booking-series';\n return this.client.get<PaginatedResponse<BookingSeriesWithDetails>>(path);\n }\n\n async get(id: string): Promise<BookingSeriesWithDetails> {\n return this.client.get<BookingSeriesWithDetails>(`/v1/booking-series/${id}`);\n }\n\n async cancel(id: string, scope: 'all' | 'future' = 'future'): Promise<CancelBookingSeriesResponse> {\n return this.client.delete<CancelBookingSeriesResponse>(\n `/v1/booking-series/${id}?scope=${scope}`\n );\n }\n\n async cancelOccurrence(seriesId: string, index: number): Promise<{ status: string; bookingId: string }> {\n return this.client.delete<{ status: string; bookingId: string }>(\n `/v1/booking-series/${seriesId}/occurrences/${index}`\n );\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n Contact,\n CreateContactRequest,\n UpdateContactRequest,\n ListContactsRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Contacts {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateContactRequest): Promise<Contact> {\n return this.client.post<Contact>('/v1/contacts', data);\n }\n\n async list(params?: ListContactsRequest): Promise<PaginatedResponse<Contact>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/contacts?${query}` : '/v1/contacts';\n return this.client.get<PaginatedResponse<Contact>>(path);\n }\n\n async get(id: string): Promise<Contact> {\n return this.client.get<Contact>(`/v1/contacts/${id}`);\n }\n\n async update(id: string, data: UpdateContactRequest): Promise<Contact> {\n return this.client.put<Contact>(`/v1/contacts/${id}`, data);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n EntitlementType,\n Entitlement,\n EntitlementWithDetails,\n CreateEntitlementTypeRequest,\n IssueEntitlementRequest,\n IssueEntitlementResponse,\n ListEntitlementsRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Entitlements {\n constructor(private readonly client: HttpClient) {}\n\n async createType(data: CreateEntitlementTypeRequest): Promise<EntitlementType> {\n return this.client.post<EntitlementType>('/v1/entitlements/types', data);\n }\n\n async listTypes(params?: { cursor?: string; limit?: number }): Promise<PaginatedResponse<EntitlementType>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n const query = search.toString();\n const path = query ? `/v1/entitlements/types?${query}` : '/v1/entitlements/types';\n return this.client.get<PaginatedResponse<EntitlementType>>(path);\n }\n\n async issue(data: IssueEntitlementRequest): Promise<IssueEntitlementResponse> {\n return this.client.post<IssueEntitlementResponse>('/v1/entitlements', data);\n }\n\n async list(params: ListEntitlementsRequest): Promise<PaginatedResponse<Entitlement>> {\n const search = new URLSearchParams({ contactId: params.contactId });\n if (params.serviceId) search.set('serviceId', params.serviceId);\n if (params.cursor) search.set('cursor', params.cursor);\n if (params.limit !== undefined) search.set('limit', String(params.limit));\n\n return this.client.get<PaginatedResponse<Entitlement>>(\n `/v1/entitlements?${search.toString()}`,\n );\n }\n\n async get(id: string): Promise<EntitlementWithDetails> {\n return this.client.get<EntitlementWithDetails>(`/v1/entitlements/${id}`);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n Location,\n LocationWithResources,\n CreateLocationRequest,\n PaginatedResponse,\n PaginationParams,\n} from '../types.js';\n\nexport class Locations {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateLocationRequest): Promise<Location> {\n return this.client.post<Location>('/v1/locations', data);\n }\n\n async list(params?: PaginationParams): Promise<PaginatedResponse<LocationWithResources>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n const query = search.toString();\n const path = query ? `/v1/locations?${query}` : '/v1/locations';\n return this.client.get<PaginatedResponse<LocationWithResources>>(path);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type { CreateOrganizationRequest, CreateOrganizationResponse } from '../types.js';\n\nexport class Organizations {\n private readonly baseUrl: string;\n\n constructor(private readonly client: HttpClient, baseUrl: string) {\n this.baseUrl = baseUrl.replace(/\\/$/, '');\n }\n\n async create(data: CreateOrganizationRequest): Promise<CreateOrganizationResponse> {\n // Organization creation doesn't require auth, so we make a raw fetch\n const response = await fetch(`${this.baseUrl}/organizations`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(data),\n });\n\n if (!response.ok) {\n const { createError } = await import('../errors.js');\n const body = await response.json();\n throw createError(response.status, body);\n }\n\n return response.json() as Promise<CreateOrganizationResponse>;\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type { Payment, PaginatedResponse, PaginationParams, RefundPaymentResponse } from '../types.js';\n\nexport class Payments {\n constructor(private readonly client: HttpClient) {}\n\n async list(params?: PaginationParams): Promise<PaginatedResponse<Payment>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/payments?${query}` : '/v1/payments';\n return this.client.get<PaginatedResponse<Payment>>(path);\n }\n\n async get(id: string): Promise<Payment> {\n return this.client.get<Payment>(`/v1/payments/${id}`);\n }\n\n async refund(id: string, amount?: number): Promise<RefundPaymentResponse> {\n return this.client.post<RefundPaymentResponse>(\n `/v1/payments/${id}/refund`,\n amount ? { amount } : {}\n );\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type { Resource, CreateResourceRequest } from '../types.js';\n\nexport class Resources {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateResourceRequest): Promise<Resource> {\n return this.client.post<Resource>('/v1/resources', data);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n Service,\n CreateServiceRequest,\n UpdateServiceRequest,\n LinkResourceRequest,\n ServiceResource,\n CreatePricingRuleRequest,\n PricingRule,\n CreateScheduleRequest,\n Schedule,\n CreateOverrideRequest,\n ScheduleOverride,\n PaginatedResponse,\n PaginationParams,\n} from '../types.js';\n\nexport class Services {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateServiceRequest): Promise<Service> {\n return this.client.post<Service>('/v1/services', data);\n }\n\n async list(params?: PaginationParams): Promise<PaginatedResponse<Service>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n const query = search.toString();\n const path = query ? `/v1/services?${query}` : '/v1/services';\n return this.client.get<PaginatedResponse<Service>>(path);\n }\n\n async get(id: string): Promise<Service> {\n return this.client.get<Service>(`/v1/services/${id}`);\n }\n\n async update(id: string, data: UpdateServiceRequest): Promise<Service> {\n return this.client.put<Service>(`/v1/services/${id}`, data);\n }\n\n async delete(id: string): Promise<{ deleted: boolean }> {\n return this.client.delete<{ deleted: boolean }>(`/v1/services/${id}`);\n }\n\n async linkResource(serviceId: string, data: LinkResourceRequest): Promise<ServiceResource> {\n return this.client.post<ServiceResource>(`/v1/services/${serviceId}/resources`, data);\n }\n\n async addPricing(serviceId: string, data: CreatePricingRuleRequest): Promise<PricingRule> {\n return this.client.post<PricingRule>(`/v1/services/${serviceId}/pricing`, data);\n }\n\n async createSchedule(serviceId: string, data: CreateScheduleRequest): Promise<Schedule> {\n return this.client.post<Schedule>(`/v1/services/${serviceId}/schedules`, data);\n }\n\n async addOverride(\n serviceId: string,\n scheduleId: string,\n data: CreateOverrideRequest,\n ): Promise<ScheduleOverride> {\n return this.client.post<ScheduleOverride>(\n `/v1/services/${serviceId}/schedules/${scheduleId}/overrides`,\n data,\n );\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n User,\n CreateUserRequest,\n UpdateUserRequest,\n ListUsersRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Users {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateUserRequest): Promise<User> {\n return this.client.post<User>('/v1/users', data);\n }\n\n async list(params?: ListUsersRequest): Promise<PaginatedResponse<User>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/users?${query}` : '/v1/users';\n return this.client.get<PaginatedResponse<User>>(path);\n }\n\n async get(id: string): Promise<User> {\n return this.client.get<User>(`/v1/users/${id}`);\n }\n\n async update(id: string, data: UpdateUserRequest): Promise<User> {\n return this.client.put<User>(`/v1/users/${id}`, data);\n }\n\n async delete(id: string): Promise<{ deleted: boolean }> {\n return this.client.delete<{ deleted: boolean }>(`/v1/users/${id}`);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n WaitlistEntry,\n JoinWaitlistRequest,\n ListWaitlistRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Waitlist {\n constructor(private readonly client: HttpClient) {}\n\n async join(data: JoinWaitlistRequest): Promise<{ id: string }> {\n return this.client.post<{ id: string }>('/v1/waitlist', data);\n }\n\n async list(params?: ListWaitlistRequest): Promise<PaginatedResponse<WaitlistEntry>> {\n const search = new URLSearchParams();\n if (params?.slotId) search.set('slotId', params.slotId);\n if (params?.contactId) search.set('contactId', params.contactId);\n if (params?.status) search.set('status', params.status);\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/waitlist?${query}` : '/v1/waitlist';\n return this.client.get<PaginatedResponse<WaitlistEntry>>(path);\n }\n\n async cancel(id: string): Promise<{ status: 'cancelled' }> {\n return this.client.delete<{ status: 'cancelled' }>(`/v1/waitlist/${id}`);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n WebhookEndpoint,\n WebhookDelivery,\n CreateWebhookRequest,\n ListDeliveriesRequest,\n PaginatedResponse,\n PaginationParams,\n} from '../types.js';\n\nexport class Webhooks {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateWebhookRequest): Promise<WebhookEndpoint> {\n return this.client.post<WebhookEndpoint>('/v1/webhooks', data);\n }\n\n async list(params?: PaginationParams): Promise<PaginatedResponse<WebhookEndpoint>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n const query = search.toString();\n const path = query ? `/v1/webhooks?${query}` : '/v1/webhooks';\n return this.client.get<PaginatedResponse<WebhookEndpoint>>(path);\n }\n\n async delete(id: string): Promise<{ deleted: boolean }> {\n return this.client.delete<{ deleted: boolean }>(`/v1/webhooks/${id}`);\n }\n\n async listDeliveries(\n webhookId: string,\n params?: ListDeliveriesRequest,\n ): Promise<PaginatedResponse<WebhookDelivery>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query\n ? `/v1/webhooks/${webhookId}/deliveries?${query}`\n : `/v1/webhooks/${webhookId}/deliveries`;\n return this.client.get<PaginatedResponse<WebhookDelivery>>(path);\n }\n}\n"],"mappings":"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","names":["createError"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/index.ts","../src/client.ts","../src/resources/api-keys.ts","../src/resources/audit-log.ts","../src/resources/availability.ts","../src/resources/bookings.ts","../src/resources/booking-series.ts","../src/resources/contacts.ts","../src/resources/entitlements.ts","../src/resources/locations.ts","../src/resources/organizations.ts","../src/resources/payments.ts","../src/resources/resources.ts","../src/resources/services.ts","../src/resources/users.ts","../src/resources/waitlist.ts","../src/resources/webhooks.ts"],"sourcesContent":["export interface ApiErrorBody {\n error: string;\n code: string;\n details?: { path: string; message: string }[];\n}\n\nexport class SeshnError extends Error {\n public readonly status: number;\n public readonly code: string;\n public readonly details?: { path: string; message: string }[];\n\n constructor(status: number, body: ApiErrorBody) {\n super(body.error);\n this.name = 'SeshnError';\n this.status = status;\n this.code = body.code;\n this.details = body.details;\n }\n}\n\nexport class NotFoundError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(404, body);\n this.name = 'NotFoundError';\n }\n}\n\nexport class ValidationError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(400, body);\n this.name = 'ValidationError';\n }\n}\n\nexport class UnauthorizedError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(401, body);\n this.name = 'UnauthorizedError';\n }\n}\n\nexport class ConflictError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(409, body);\n this.name = 'ConflictError';\n }\n}\n\nexport class InsufficientCapacityError extends ConflictError {\n constructor(body: ApiErrorBody) {\n super(body);\n this.name = 'InsufficientCapacityError';\n }\n}\n\nexport class InsufficientCreditsError extends ConflictError {\n constructor(body: ApiErrorBody) {\n super(body);\n this.name = 'InsufficientCreditsError';\n }\n}\n\nexport class InvalidStateError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(422, body);\n this.name = 'InvalidStateError';\n }\n}\n\nexport class CancellationDeadlineError extends InvalidStateError {\n constructor(body: ApiErrorBody) {\n super(body);\n this.name = 'CancellationDeadlineError';\n }\n}\n\nexport class ForbiddenError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(403, body);\n this.name = 'ForbiddenError';\n }\n}\n\nexport class RateLimitError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(429, body);\n this.name = 'RateLimitError';\n }\n}\n\nexport class PaymentProviderError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(502, body);\n this.name = 'PaymentProviderError';\n }\n}\n\nexport function createError(status: number, body: ApiErrorBody): SeshnError {\n switch (status) {\n case 400:\n return new ValidationError(body);\n case 401:\n return new UnauthorizedError(body);\n case 403:\n return new ForbiddenError(body);\n case 404:\n return new NotFoundError(body);\n case 409:\n if (body.code === 'INSUFFICIENT_CAPACITY') return new InsufficientCapacityError(body);\n if (body.code === 'INSUFFICIENT_CREDITS') return new InsufficientCreditsError(body);\n return new ConflictError(body);\n case 422:\n if (body.code === 'INVALID_STATE' && body.error?.toLowerCase().includes('cancellation deadline')) {\n return new CancellationDeadlineError(body);\n }\n return new InvalidStateError(body);\n case 429:\n return new RateLimitError(body);\n case 502:\n return new PaymentProviderError(body);\n default:\n return new SeshnError(status, body);\n }\n}\n\n/** @deprecated Use `SeshnError` instead */\nexport const HeadlessBookingError = SeshnError;\n","import { HttpClient } from './client.js';\nimport { ApiKeys } from './resources/api-keys.js';\nimport { AuditLog } from './resources/audit-log.js';\nimport { Availability } from './resources/availability.js';\nimport { Bookings } from './resources/bookings.js';\nimport { BookingSeries } from './resources/booking-series.js';\nimport { Contacts } from './resources/contacts.js';\nimport { Entitlements } from './resources/entitlements.js';\nimport { Locations } from './resources/locations.js';\nimport { Organizations } from './resources/organizations.js';\nimport { Payments } from './resources/payments.js';\nimport { Resources } from './resources/resources.js';\nimport { Services } from './resources/services.js';\nimport { Users } from './resources/users.js';\nimport { Waitlist } from './resources/waitlist.js';\nimport { Webhooks } from './resources/webhooks.js';\nimport type { ClientOptions } from './types.js';\n\nexport class Seshn {\n public readonly apiKeys: ApiKeys;\n public readonly auditLog: AuditLog;\n public readonly availability: Availability;\n public readonly bookings: Bookings;\n public readonly bookingSeries: BookingSeries;\n public readonly contacts: Contacts;\n public readonly entitlements: Entitlements;\n public readonly locations: Locations;\n public readonly organizations: Organizations;\n public readonly payments: Payments;\n public readonly resources: Resources;\n public readonly services: Services;\n public readonly users: Users;\n public readonly waitlist: Waitlist;\n public readonly webhooks: Webhooks;\n\n constructor(apiKey: string, options?: { baseUrl?: string }) {\n const opts: ClientOptions = {\n apiKey,\n baseUrl: options?.baseUrl,\n };\n const client = new HttpClient(opts);\n const baseUrl = opts.baseUrl ?? 'https://api.seshn.net';\n\n this.apiKeys = new ApiKeys(client);\n this.auditLog = new AuditLog(client);\n this.availability = new Availability(client);\n this.bookings = new Bookings(client);\n this.bookingSeries = new BookingSeries(client);\n this.contacts = new Contacts(client);\n this.entitlements = new Entitlements(client);\n this.locations = new Locations(client);\n this.organizations = new Organizations(client, baseUrl);\n this.payments = new Payments(client);\n this.resources = new Resources(client);\n this.services = new Services(client);\n this.users = new Users(client);\n this.waitlist = new Waitlist(client);\n this.webhooks = new Webhooks(client);\n }\n}\n\n// Re-export everything\nexport { HttpClient } from './client.js';\nexport * from './errors.js';\nexport * from './types.js';\nexport { ApiKeys } from './resources/api-keys.js';\nexport { AuditLog } from './resources/audit-log.js';\nexport { Availability } from './resources/availability.js';\nexport { Bookings } from './resources/bookings.js';\nexport { BookingSeries } from './resources/booking-series.js';\nexport { Contacts } from './resources/contacts.js';\nexport { Entitlements } from './resources/entitlements.js';\nexport { Locations } from './resources/locations.js';\nexport { Organizations } from './resources/organizations.js';\nexport { Payments } from './resources/payments.js';\nexport { Resources } from './resources/resources.js';\nexport { Services } from './resources/services.js';\nexport { Users } from './resources/users.js';\nexport { Waitlist } from './resources/waitlist.js';\nexport { Webhooks } from './resources/webhooks.js';\n\n/** @deprecated Use `Seshn` instead */\nexport const HeadlessBooking = Seshn;\n","import { type ApiErrorBody, createError } from './errors.js';\nimport type { ClientOptions } from './types.js';\n\nexport class HttpClient {\n private readonly apiKey: string;\n private readonly baseUrl: string;\n\n constructor(options: ClientOptions) {\n this.apiKey = options.apiKey;\n this.baseUrl = (options.baseUrl ?? 'https://api.seshn.net').replace(/\\/$/, '');\n }\n\n async request<T>(method: string, path: string, body?: unknown): Promise<T> {\n const headers: Record<string, string> = {\n 'Authorization': `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n };\n\n const response = await fetch(`${this.baseUrl}${path}`, {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n\n if (!response.ok) {\n let errorBody: ApiErrorBody;\n try {\n errorBody = await response.json() as ApiErrorBody;\n } catch {\n errorBody = { error: response.statusText, code: 'UNKNOWN_ERROR' };\n }\n throw createError(response.status, errorBody);\n }\n\n return response.json() as Promise<T>;\n }\n\n get<T>(path: string): Promise<T> {\n return this.request<T>('GET', path);\n }\n\n post<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>('POST', path, body);\n }\n\n put<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>('PUT', path, body);\n }\n\n delete<T>(path: string): Promise<T> {\n return this.request<T>('DELETE', path);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n ApiKey,\n ApiKeyWithSecret,\n CreateApiKeyRequest,\n ListApiKeysRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class ApiKeys {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateApiKeyRequest): Promise<ApiKeyWithSecret> {\n return this.client.post<ApiKeyWithSecret>('/v1/api-keys', data);\n }\n\n async list(params?: ListApiKeysRequest): Promise<PaginatedResponse<ApiKey>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/api-keys?${query}` : '/v1/api-keys';\n return this.client.get<PaginatedResponse<ApiKey>>(path);\n }\n\n async revoke(id: string): Promise<{ deleted: boolean }> {\n return this.client.delete<{ deleted: boolean }>(`/v1/api-keys/${id}`);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n AuditLogEntry,\n ListAuditLogRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class AuditLog {\n constructor(private readonly client: HttpClient) {}\n\n async list(params?: ListAuditLogRequest): Promise<PaginatedResponse<AuditLogEntry>> {\n const search = new URLSearchParams();\n if (params?.action) search.set('action', params.action);\n if (params?.resourceType) search.set('resourceType', params.resourceType);\n if (params?.userId) search.set('userId', params.userId);\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/audit-log?${query}` : '/v1/audit-log';\n return this.client.get<PaginatedResponse<AuditLogEntry>>(path);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n Slot,\n QueryAvailabilityRequest,\n GenerateSlotsRequest,\n GenerateSlotsResponse,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Availability {\n constructor(private readonly client: HttpClient) {}\n\n async query(params: QueryAvailabilityRequest): Promise<PaginatedResponse<Slot>> {\n const search = new URLSearchParams({\n serviceId: params.serviceId,\n from: params.from,\n to: params.to,\n });\n if (params.minSeats !== undefined) {\n search.set('minSeats', String(params.minSeats));\n }\n if (params.cursor) search.set('cursor', params.cursor);\n if (params.limit !== undefined) search.set('limit', String(params.limit));\n return this.client.get<PaginatedResponse<Slot>>(\n `/v1/availability?${search.toString()}`,\n );\n }\n\n async generate(data: GenerateSlotsRequest): Promise<GenerateSlotsResponse> {\n return this.client.post<GenerateSlotsResponse>('/v1/availability/generate', data);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n BookingWithDetails,\n CreateBookingRequest,\n CreateBookingResponse,\n ConfirmBookingRequest,\n ConfirmBookingResponse,\n CancelBookingRequest,\n CancelBookingResponse,\n RescheduleBookingRequest,\n RescheduleBookingResponse,\n CheckInResponse,\n ListBookingsRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Bookings {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateBookingRequest): Promise<CreateBookingResponse> {\n return this.client.post<CreateBookingResponse>('/v1/bookings', data);\n }\n\n async list(params?: ListBookingsRequest): Promise<PaginatedResponse<BookingWithDetails>> {\n const search = new URLSearchParams();\n if (params?.contactId) search.set('contactId', params.contactId);\n if (params?.slotId) search.set('slotId', params.slotId);\n if (params?.status) search.set('status', params.status);\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/bookings?${query}` : '/v1/bookings';\n return this.client.get<PaginatedResponse<BookingWithDetails>>(path);\n }\n\n async get(id: string): Promise<BookingWithDetails> {\n return this.client.get<BookingWithDetails>(`/v1/bookings/${id}`);\n }\n\n async confirm(id: string, data?: ConfirmBookingRequest): Promise<ConfirmBookingResponse> {\n return this.client.post<ConfirmBookingResponse>(`/v1/bookings/${id}/confirm`, data ?? {});\n }\n\n async cancel(id: string, data?: CancelBookingRequest): Promise<CancelBookingResponse> {\n return this.client.put<CancelBookingResponse>(`/v1/bookings/${id}/cancel`, data ?? {});\n }\n\n async reschedule(id: string, data: RescheduleBookingRequest): Promise<RescheduleBookingResponse> {\n return this.client.put<RescheduleBookingResponse>(`/v1/bookings/${id}/reschedule`, data);\n }\n\n async checkIn(id: string): Promise<CheckInResponse> {\n return this.client.post<CheckInResponse>(`/v1/bookings/${id}/checkin`);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n BookingSeriesWithDetails,\n CreateBookingSeriesRequest,\n CreateBookingSeriesResponse,\n CancelBookingSeriesResponse,\n ListBookingSeriesRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class BookingSeries {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateBookingSeriesRequest): Promise<CreateBookingSeriesResponse> {\n return this.client.post<CreateBookingSeriesResponse>('/v1/booking-series', data);\n }\n\n async list(params?: ListBookingSeriesRequest): Promise<PaginatedResponse<BookingSeriesWithDetails>> {\n const search = new URLSearchParams();\n if (params?.contactId) search.set('contactId', params.contactId);\n if (params?.serviceId) search.set('serviceId', params.serviceId);\n if (params?.status) search.set('status', params.status);\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/booking-series?${query}` : '/v1/booking-series';\n return this.client.get<PaginatedResponse<BookingSeriesWithDetails>>(path);\n }\n\n async get(id: string): Promise<BookingSeriesWithDetails> {\n return this.client.get<BookingSeriesWithDetails>(`/v1/booking-series/${id}`);\n }\n\n async cancel(id: string, scope: 'all' | 'future' = 'future'): Promise<CancelBookingSeriesResponse> {\n return this.client.delete<CancelBookingSeriesResponse>(\n `/v1/booking-series/${id}?scope=${scope}`\n );\n }\n\n async cancelOccurrence(seriesId: string, index: number): Promise<{ status: string; bookingId: string }> {\n return this.client.delete<{ status: string; bookingId: string }>(\n `/v1/booking-series/${seriesId}/occurrences/${index}`\n );\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n Contact,\n CreateContactRequest,\n UpdateContactRequest,\n ListContactsRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Contacts {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateContactRequest): Promise<Contact> {\n return this.client.post<Contact>('/v1/contacts', data);\n }\n\n async list(params?: ListContactsRequest): Promise<PaginatedResponse<Contact>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/contacts?${query}` : '/v1/contacts';\n return this.client.get<PaginatedResponse<Contact>>(path);\n }\n\n async get(id: string): Promise<Contact> {\n return this.client.get<Contact>(`/v1/contacts/${id}`);\n }\n\n async update(id: string, data: UpdateContactRequest): Promise<Contact> {\n return this.client.put<Contact>(`/v1/contacts/${id}`, data);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n EntitlementType,\n Entitlement,\n EntitlementWithDetails,\n CreateEntitlementTypeRequest,\n IssueEntitlementRequest,\n IssueEntitlementResponse,\n ListEntitlementsRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Entitlements {\n constructor(private readonly client: HttpClient) {}\n\n async createType(data: CreateEntitlementTypeRequest): Promise<EntitlementType> {\n return this.client.post<EntitlementType>('/v1/entitlements/types', data);\n }\n\n async listTypes(params?: { cursor?: string; limit?: number }): Promise<PaginatedResponse<EntitlementType>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n const query = search.toString();\n const path = query ? `/v1/entitlements/types?${query}` : '/v1/entitlements/types';\n return this.client.get<PaginatedResponse<EntitlementType>>(path);\n }\n\n async issue(data: IssueEntitlementRequest): Promise<IssueEntitlementResponse> {\n return this.client.post<IssueEntitlementResponse>('/v1/entitlements', data);\n }\n\n async list(params: ListEntitlementsRequest): Promise<PaginatedResponse<Entitlement>> {\n const search = new URLSearchParams({ contactId: params.contactId });\n if (params.serviceId) search.set('serviceId', params.serviceId);\n if (params.cursor) search.set('cursor', params.cursor);\n if (params.limit !== undefined) search.set('limit', String(params.limit));\n\n return this.client.get<PaginatedResponse<Entitlement>>(\n `/v1/entitlements?${search.toString()}`,\n );\n }\n\n async get(id: string): Promise<EntitlementWithDetails> {\n return this.client.get<EntitlementWithDetails>(`/v1/entitlements/${id}`);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n Location,\n LocationWithResources,\n CreateLocationRequest,\n PaginatedResponse,\n PaginationParams,\n} from '../types.js';\n\nexport class Locations {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateLocationRequest): Promise<Location> {\n return this.client.post<Location>('/v1/locations', data);\n }\n\n async list(params?: PaginationParams): Promise<PaginatedResponse<LocationWithResources>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n const query = search.toString();\n const path = query ? `/v1/locations?${query}` : '/v1/locations';\n return this.client.get<PaginatedResponse<LocationWithResources>>(path);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type { CreateOrganizationRequest, CreateOrganizationResponse } from '../types.js';\n\nexport class Organizations {\n private readonly baseUrl: string;\n\n constructor(private readonly client: HttpClient, baseUrl: string) {\n this.baseUrl = baseUrl.replace(/\\/$/, '');\n }\n\n async create(data: CreateOrganizationRequest): Promise<CreateOrganizationResponse> {\n // Organization creation doesn't require auth, so we make a raw fetch\n const response = await fetch(`${this.baseUrl}/organizations`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(data),\n });\n\n if (!response.ok) {\n const { createError } = await import('../errors.js');\n const body = await response.json();\n throw createError(response.status, body);\n }\n\n return response.json() as Promise<CreateOrganizationResponse>;\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type { Payment, PaginatedResponse, PaginationParams, RefundPaymentResponse } from '../types.js';\n\nexport class Payments {\n constructor(private readonly client: HttpClient) {}\n\n async list(params?: PaginationParams): Promise<PaginatedResponse<Payment>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/payments?${query}` : '/v1/payments';\n return this.client.get<PaginatedResponse<Payment>>(path);\n }\n\n async get(id: string): Promise<Payment> {\n return this.client.get<Payment>(`/v1/payments/${id}`);\n }\n\n async refund(id: string, amount?: number): Promise<RefundPaymentResponse> {\n return this.client.post<RefundPaymentResponse>(\n `/v1/payments/${id}/refund`,\n amount ? { amount } : {}\n );\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type { Resource, CreateResourceRequest } from '../types.js';\n\nexport class Resources {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateResourceRequest): Promise<Resource> {\n return this.client.post<Resource>('/v1/resources', data);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n Service,\n CreateServiceRequest,\n UpdateServiceRequest,\n LinkResourceRequest,\n ServiceResource,\n CreatePricingRuleRequest,\n PricingRule,\n CreateScheduleRequest,\n Schedule,\n CreateOverrideRequest,\n ScheduleOverride,\n PaginatedResponse,\n PaginationParams,\n} from '../types.js';\n\nexport class Services {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateServiceRequest): Promise<Service> {\n return this.client.post<Service>('/v1/services', data);\n }\n\n async list(params?: PaginationParams): Promise<PaginatedResponse<Service>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n const query = search.toString();\n const path = query ? `/v1/services?${query}` : '/v1/services';\n return this.client.get<PaginatedResponse<Service>>(path);\n }\n\n async get(id: string): Promise<Service> {\n return this.client.get<Service>(`/v1/services/${id}`);\n }\n\n async update(id: string, data: UpdateServiceRequest): Promise<Service> {\n return this.client.put<Service>(`/v1/services/${id}`, data);\n }\n\n async delete(id: string): Promise<{ deleted: boolean }> {\n return this.client.delete<{ deleted: boolean }>(`/v1/services/${id}`);\n }\n\n async linkResource(serviceId: string, data: LinkResourceRequest): Promise<ServiceResource> {\n return this.client.post<ServiceResource>(`/v1/services/${serviceId}/resources`, data);\n }\n\n async addPricing(serviceId: string, data: CreatePricingRuleRequest): Promise<PricingRule> {\n return this.client.post<PricingRule>(`/v1/services/${serviceId}/pricing`, data);\n }\n\n async createSchedule(serviceId: string, data: CreateScheduleRequest): Promise<Schedule> {\n return this.client.post<Schedule>(`/v1/services/${serviceId}/schedules`, data);\n }\n\n async addOverride(\n serviceId: string,\n scheduleId: string,\n data: CreateOverrideRequest,\n ): Promise<ScheduleOverride> {\n return this.client.post<ScheduleOverride>(\n `/v1/services/${serviceId}/schedules/${scheduleId}/overrides`,\n data,\n );\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n User,\n CreateUserRequest,\n UpdateUserRequest,\n ListUsersRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Users {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateUserRequest): Promise<User> {\n return this.client.post<User>('/v1/users', data);\n }\n\n async list(params?: ListUsersRequest): Promise<PaginatedResponse<User>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/users?${query}` : '/v1/users';\n return this.client.get<PaginatedResponse<User>>(path);\n }\n\n async get(id: string): Promise<User> {\n return this.client.get<User>(`/v1/users/${id}`);\n }\n\n async update(id: string, data: UpdateUserRequest): Promise<User> {\n return this.client.put<User>(`/v1/users/${id}`, data);\n }\n\n async delete(id: string): Promise<{ deleted: boolean }> {\n return this.client.delete<{ deleted: boolean }>(`/v1/users/${id}`);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n WaitlistEntry,\n JoinWaitlistRequest,\n ListWaitlistRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Waitlist {\n constructor(private readonly client: HttpClient) {}\n\n async join(data: JoinWaitlistRequest): Promise<{ id: string }> {\n return this.client.post<{ id: string }>('/v1/waitlist', data);\n }\n\n async list(params?: ListWaitlistRequest): Promise<PaginatedResponse<WaitlistEntry>> {\n const search = new URLSearchParams();\n if (params?.slotId) search.set('slotId', params.slotId);\n if (params?.contactId) search.set('contactId', params.contactId);\n if (params?.status) search.set('status', params.status);\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/waitlist?${query}` : '/v1/waitlist';\n return this.client.get<PaginatedResponse<WaitlistEntry>>(path);\n }\n\n async cancel(id: string): Promise<{ status: 'cancelled' }> {\n return this.client.delete<{ status: 'cancelled' }>(`/v1/waitlist/${id}`);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n WebhookEndpoint,\n WebhookDelivery,\n CreateWebhookRequest,\n ListDeliveriesRequest,\n PaginatedResponse,\n PaginationParams,\n} from '../types.js';\n\nexport class Webhooks {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateWebhookRequest): Promise<WebhookEndpoint> {\n return this.client.post<WebhookEndpoint>('/v1/webhooks', data);\n }\n\n async list(params?: PaginationParams): Promise<PaginatedResponse<WebhookEndpoint>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n const query = search.toString();\n const path = query ? `/v1/webhooks?${query}` : '/v1/webhooks';\n return this.client.get<PaginatedResponse<WebhookEndpoint>>(path);\n }\n\n async delete(id: string): Promise<{ deleted: boolean }> {\n return this.client.delete<{ deleted: boolean }>(`/v1/webhooks/${id}`);\n }\n\n async listDeliveries(\n webhookId: string,\n params?: ListDeliveriesRequest,\n ): Promise<PaginatedResponse<WebhookDelivery>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query\n ? `/v1/webhooks/${webhookId}/deliveries?${query}`\n : `/v1/webhooks/${webhookId}/deliveries`;\n return this.client.get<PaginatedResponse<WebhookDelivery>>(path);\n }\n}\n"],"mappings":"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","names":["createError"]}
|
package/dist/index.js
CHANGED
|
@@ -146,7 +146,7 @@ var HttpClient = class {
|
|
|
146
146
|
baseUrl;
|
|
147
147
|
constructor(options) {
|
|
148
148
|
this.apiKey = options.apiKey;
|
|
149
|
-
this.baseUrl = (options.baseUrl ?? "
|
|
149
|
+
this.baseUrl = (options.baseUrl ?? "https://api.seshn.net").replace(/\/$/, "");
|
|
150
150
|
}
|
|
151
151
|
async request(method, path, body) {
|
|
152
152
|
const headers = {
|
|
@@ -594,7 +594,7 @@ var Seshn = class {
|
|
|
594
594
|
baseUrl: options?.baseUrl
|
|
595
595
|
};
|
|
596
596
|
const client = new HttpClient(opts);
|
|
597
|
-
const baseUrl = opts.baseUrl ?? "
|
|
597
|
+
const baseUrl = opts.baseUrl ?? "https://api.seshn.net";
|
|
598
598
|
this.apiKeys = new ApiKeys(client);
|
|
599
599
|
this.auditLog = new AuditLog(client);
|
|
600
600
|
this.availability = new Availability(client);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/client.ts","../src/resources/api-keys.ts","../src/resources/audit-log.ts","../src/resources/availability.ts","../src/resources/bookings.ts","../src/resources/booking-series.ts","../src/resources/contacts.ts","../src/resources/entitlements.ts","../src/resources/locations.ts","../src/resources/organizations.ts","../src/resources/payments.ts","../src/resources/resources.ts","../src/resources/services.ts","../src/resources/users.ts","../src/resources/waitlist.ts","../src/resources/webhooks.ts","../src/index.ts"],"sourcesContent":["export interface ApiErrorBody {\n error: string;\n code: string;\n details?: { path: string; message: string }[];\n}\n\nexport class SeshnError extends Error {\n public readonly status: number;\n public readonly code: string;\n public readonly details?: { path: string; message: string }[];\n\n constructor(status: number, body: ApiErrorBody) {\n super(body.error);\n this.name = 'SeshnError';\n this.status = status;\n this.code = body.code;\n this.details = body.details;\n }\n}\n\nexport class NotFoundError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(404, body);\n this.name = 'NotFoundError';\n }\n}\n\nexport class ValidationError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(400, body);\n this.name = 'ValidationError';\n }\n}\n\nexport class UnauthorizedError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(401, body);\n this.name = 'UnauthorizedError';\n }\n}\n\nexport class ConflictError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(409, body);\n this.name = 'ConflictError';\n }\n}\n\nexport class InsufficientCapacityError extends ConflictError {\n constructor(body: ApiErrorBody) {\n super(body);\n this.name = 'InsufficientCapacityError';\n }\n}\n\nexport class InsufficientCreditsError extends ConflictError {\n constructor(body: ApiErrorBody) {\n super(body);\n this.name = 'InsufficientCreditsError';\n }\n}\n\nexport class InvalidStateError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(422, body);\n this.name = 'InvalidStateError';\n }\n}\n\nexport class CancellationDeadlineError extends InvalidStateError {\n constructor(body: ApiErrorBody) {\n super(body);\n this.name = 'CancellationDeadlineError';\n }\n}\n\nexport class ForbiddenError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(403, body);\n this.name = 'ForbiddenError';\n }\n}\n\nexport class RateLimitError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(429, body);\n this.name = 'RateLimitError';\n }\n}\n\nexport class PaymentProviderError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(502, body);\n this.name = 'PaymentProviderError';\n }\n}\n\nexport function createError(status: number, body: ApiErrorBody): SeshnError {\n switch (status) {\n case 400:\n return new ValidationError(body);\n case 401:\n return new UnauthorizedError(body);\n case 403:\n return new ForbiddenError(body);\n case 404:\n return new NotFoundError(body);\n case 409:\n if (body.code === 'INSUFFICIENT_CAPACITY') return new InsufficientCapacityError(body);\n if (body.code === 'INSUFFICIENT_CREDITS') return new InsufficientCreditsError(body);\n return new ConflictError(body);\n case 422:\n if (body.code === 'INVALID_STATE' && body.error?.toLowerCase().includes('cancellation deadline')) {\n return new CancellationDeadlineError(body);\n }\n return new InvalidStateError(body);\n case 429:\n return new RateLimitError(body);\n case 502:\n return new PaymentProviderError(body);\n default:\n return new SeshnError(status, body);\n }\n}\n\n/** @deprecated Use `SeshnError` instead */\nexport const HeadlessBookingError = SeshnError;\n","import { type ApiErrorBody, createError } from './errors.js';\nimport type { ClientOptions } from './types.js';\n\nexport class HttpClient {\n private readonly apiKey: string;\n private readonly baseUrl: string;\n\n constructor(options: ClientOptions) {\n this.apiKey = options.apiKey;\n this.baseUrl = (options.baseUrl ?? 'http://localhost:3000').replace(/\\/$/, '');\n }\n\n async request<T>(method: string, path: string, body?: unknown): Promise<T> {\n const headers: Record<string, string> = {\n 'Authorization': `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n };\n\n const response = await fetch(`${this.baseUrl}${path}`, {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n\n if (!response.ok) {\n let errorBody: ApiErrorBody;\n try {\n errorBody = await response.json() as ApiErrorBody;\n } catch {\n errorBody = { error: response.statusText, code: 'UNKNOWN_ERROR' };\n }\n throw createError(response.status, errorBody);\n }\n\n return response.json() as Promise<T>;\n }\n\n get<T>(path: string): Promise<T> {\n return this.request<T>('GET', path);\n }\n\n post<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>('POST', path, body);\n }\n\n put<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>('PUT', path, body);\n }\n\n delete<T>(path: string): Promise<T> {\n return this.request<T>('DELETE', path);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n ApiKey,\n ApiKeyWithSecret,\n CreateApiKeyRequest,\n ListApiKeysRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class ApiKeys {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateApiKeyRequest): Promise<ApiKeyWithSecret> {\n return this.client.post<ApiKeyWithSecret>('/v1/api-keys', data);\n }\n\n async list(params?: ListApiKeysRequest): Promise<PaginatedResponse<ApiKey>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/api-keys?${query}` : '/v1/api-keys';\n return this.client.get<PaginatedResponse<ApiKey>>(path);\n }\n\n async revoke(id: string): Promise<{ deleted: boolean }> {\n return this.client.delete<{ deleted: boolean }>(`/v1/api-keys/${id}`);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n AuditLogEntry,\n ListAuditLogRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class AuditLog {\n constructor(private readonly client: HttpClient) {}\n\n async list(params?: ListAuditLogRequest): Promise<PaginatedResponse<AuditLogEntry>> {\n const search = new URLSearchParams();\n if (params?.action) search.set('action', params.action);\n if (params?.resourceType) search.set('resourceType', params.resourceType);\n if (params?.userId) search.set('userId', params.userId);\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/audit-log?${query}` : '/v1/audit-log';\n return this.client.get<PaginatedResponse<AuditLogEntry>>(path);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n Slot,\n QueryAvailabilityRequest,\n GenerateSlotsRequest,\n GenerateSlotsResponse,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Availability {\n constructor(private readonly client: HttpClient) {}\n\n async query(params: QueryAvailabilityRequest): Promise<PaginatedResponse<Slot>> {\n const search = new URLSearchParams({\n serviceId: params.serviceId,\n from: params.from,\n to: params.to,\n });\n if (params.minSeats !== undefined) {\n search.set('minSeats', String(params.minSeats));\n }\n if (params.cursor) search.set('cursor', params.cursor);\n if (params.limit !== undefined) search.set('limit', String(params.limit));\n return this.client.get<PaginatedResponse<Slot>>(\n `/v1/availability?${search.toString()}`,\n );\n }\n\n async generate(data: GenerateSlotsRequest): Promise<GenerateSlotsResponse> {\n return this.client.post<GenerateSlotsResponse>('/v1/availability/generate', data);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n BookingWithDetails,\n CreateBookingRequest,\n CreateBookingResponse,\n ConfirmBookingRequest,\n ConfirmBookingResponse,\n CancelBookingRequest,\n CancelBookingResponse,\n RescheduleBookingRequest,\n RescheduleBookingResponse,\n CheckInResponse,\n ListBookingsRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Bookings {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateBookingRequest): Promise<CreateBookingResponse> {\n return this.client.post<CreateBookingResponse>('/v1/bookings', data);\n }\n\n async list(params?: ListBookingsRequest): Promise<PaginatedResponse<BookingWithDetails>> {\n const search = new URLSearchParams();\n if (params?.contactId) search.set('contactId', params.contactId);\n if (params?.slotId) search.set('slotId', params.slotId);\n if (params?.status) search.set('status', params.status);\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/bookings?${query}` : '/v1/bookings';\n return this.client.get<PaginatedResponse<BookingWithDetails>>(path);\n }\n\n async get(id: string): Promise<BookingWithDetails> {\n return this.client.get<BookingWithDetails>(`/v1/bookings/${id}`);\n }\n\n async confirm(id: string, data?: ConfirmBookingRequest): Promise<ConfirmBookingResponse> {\n return this.client.post<ConfirmBookingResponse>(`/v1/bookings/${id}/confirm`, data ?? {});\n }\n\n async cancel(id: string, data?: CancelBookingRequest): Promise<CancelBookingResponse> {\n return this.client.put<CancelBookingResponse>(`/v1/bookings/${id}/cancel`, data ?? {});\n }\n\n async reschedule(id: string, data: RescheduleBookingRequest): Promise<RescheduleBookingResponse> {\n return this.client.put<RescheduleBookingResponse>(`/v1/bookings/${id}/reschedule`, data);\n }\n\n async checkIn(id: string): Promise<CheckInResponse> {\n return this.client.post<CheckInResponse>(`/v1/bookings/${id}/checkin`);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n BookingSeriesWithDetails,\n CreateBookingSeriesRequest,\n CreateBookingSeriesResponse,\n CancelBookingSeriesResponse,\n ListBookingSeriesRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class BookingSeries {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateBookingSeriesRequest): Promise<CreateBookingSeriesResponse> {\n return this.client.post<CreateBookingSeriesResponse>('/v1/booking-series', data);\n }\n\n async list(params?: ListBookingSeriesRequest): Promise<PaginatedResponse<BookingSeriesWithDetails>> {\n const search = new URLSearchParams();\n if (params?.contactId) search.set('contactId', params.contactId);\n if (params?.serviceId) search.set('serviceId', params.serviceId);\n if (params?.status) search.set('status', params.status);\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/booking-series?${query}` : '/v1/booking-series';\n return this.client.get<PaginatedResponse<BookingSeriesWithDetails>>(path);\n }\n\n async get(id: string): Promise<BookingSeriesWithDetails> {\n return this.client.get<BookingSeriesWithDetails>(`/v1/booking-series/${id}`);\n }\n\n async cancel(id: string, scope: 'all' | 'future' = 'future'): Promise<CancelBookingSeriesResponse> {\n return this.client.delete<CancelBookingSeriesResponse>(\n `/v1/booking-series/${id}?scope=${scope}`\n );\n }\n\n async cancelOccurrence(seriesId: string, index: number): Promise<{ status: string; bookingId: string }> {\n return this.client.delete<{ status: string; bookingId: string }>(\n `/v1/booking-series/${seriesId}/occurrences/${index}`\n );\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n Contact,\n CreateContactRequest,\n UpdateContactRequest,\n ListContactsRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Contacts {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateContactRequest): Promise<Contact> {\n return this.client.post<Contact>('/v1/contacts', data);\n }\n\n async list(params?: ListContactsRequest): Promise<PaginatedResponse<Contact>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/contacts?${query}` : '/v1/contacts';\n return this.client.get<PaginatedResponse<Contact>>(path);\n }\n\n async get(id: string): Promise<Contact> {\n return this.client.get<Contact>(`/v1/contacts/${id}`);\n }\n\n async update(id: string, data: UpdateContactRequest): Promise<Contact> {\n return this.client.put<Contact>(`/v1/contacts/${id}`, data);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n EntitlementType,\n Entitlement,\n EntitlementWithDetails,\n CreateEntitlementTypeRequest,\n IssueEntitlementRequest,\n IssueEntitlementResponse,\n ListEntitlementsRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Entitlements {\n constructor(private readonly client: HttpClient) {}\n\n async createType(data: CreateEntitlementTypeRequest): Promise<EntitlementType> {\n return this.client.post<EntitlementType>('/v1/entitlements/types', data);\n }\n\n async listTypes(params?: { cursor?: string; limit?: number }): Promise<PaginatedResponse<EntitlementType>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n const query = search.toString();\n const path = query ? `/v1/entitlements/types?${query}` : '/v1/entitlements/types';\n return this.client.get<PaginatedResponse<EntitlementType>>(path);\n }\n\n async issue(data: IssueEntitlementRequest): Promise<IssueEntitlementResponse> {\n return this.client.post<IssueEntitlementResponse>('/v1/entitlements', data);\n }\n\n async list(params: ListEntitlementsRequest): Promise<PaginatedResponse<Entitlement>> {\n const search = new URLSearchParams({ contactId: params.contactId });\n if (params.serviceId) search.set('serviceId', params.serviceId);\n if (params.cursor) search.set('cursor', params.cursor);\n if (params.limit !== undefined) search.set('limit', String(params.limit));\n\n return this.client.get<PaginatedResponse<Entitlement>>(\n `/v1/entitlements?${search.toString()}`,\n );\n }\n\n async get(id: string): Promise<EntitlementWithDetails> {\n return this.client.get<EntitlementWithDetails>(`/v1/entitlements/${id}`);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n Location,\n LocationWithResources,\n CreateLocationRequest,\n PaginatedResponse,\n PaginationParams,\n} from '../types.js';\n\nexport class Locations {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateLocationRequest): Promise<Location> {\n return this.client.post<Location>('/v1/locations', data);\n }\n\n async list(params?: PaginationParams): Promise<PaginatedResponse<LocationWithResources>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n const query = search.toString();\n const path = query ? `/v1/locations?${query}` : '/v1/locations';\n return this.client.get<PaginatedResponse<LocationWithResources>>(path);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type { CreateOrganizationRequest, CreateOrganizationResponse } from '../types.js';\n\nexport class Organizations {\n private readonly baseUrl: string;\n\n constructor(private readonly client: HttpClient, baseUrl: string) {\n this.baseUrl = baseUrl.replace(/\\/$/, '');\n }\n\n async create(data: CreateOrganizationRequest): Promise<CreateOrganizationResponse> {\n // Organization creation doesn't require auth, so we make a raw fetch\n const response = await fetch(`${this.baseUrl}/organizations`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(data),\n });\n\n if (!response.ok) {\n const { createError } = await import('../errors.js');\n const body = await response.json();\n throw createError(response.status, body);\n }\n\n return response.json() as Promise<CreateOrganizationResponse>;\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type { Payment, PaginatedResponse, PaginationParams, RefundPaymentResponse } from '../types.js';\n\nexport class Payments {\n constructor(private readonly client: HttpClient) {}\n\n async list(params?: PaginationParams): Promise<PaginatedResponse<Payment>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/payments?${query}` : '/v1/payments';\n return this.client.get<PaginatedResponse<Payment>>(path);\n }\n\n async get(id: string): Promise<Payment> {\n return this.client.get<Payment>(`/v1/payments/${id}`);\n }\n\n async refund(id: string, amount?: number): Promise<RefundPaymentResponse> {\n return this.client.post<RefundPaymentResponse>(\n `/v1/payments/${id}/refund`,\n amount ? { amount } : {}\n );\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type { Resource, CreateResourceRequest } from '../types.js';\n\nexport class Resources {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateResourceRequest): Promise<Resource> {\n return this.client.post<Resource>('/v1/resources', data);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n Service,\n CreateServiceRequest,\n UpdateServiceRequest,\n LinkResourceRequest,\n ServiceResource,\n CreatePricingRuleRequest,\n PricingRule,\n CreateScheduleRequest,\n Schedule,\n CreateOverrideRequest,\n ScheduleOverride,\n PaginatedResponse,\n PaginationParams,\n} from '../types.js';\n\nexport class Services {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateServiceRequest): Promise<Service> {\n return this.client.post<Service>('/v1/services', data);\n }\n\n async list(params?: PaginationParams): Promise<PaginatedResponse<Service>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n const query = search.toString();\n const path = query ? `/v1/services?${query}` : '/v1/services';\n return this.client.get<PaginatedResponse<Service>>(path);\n }\n\n async get(id: string): Promise<Service> {\n return this.client.get<Service>(`/v1/services/${id}`);\n }\n\n async update(id: string, data: UpdateServiceRequest): Promise<Service> {\n return this.client.put<Service>(`/v1/services/${id}`, data);\n }\n\n async delete(id: string): Promise<{ deleted: boolean }> {\n return this.client.delete<{ deleted: boolean }>(`/v1/services/${id}`);\n }\n\n async linkResource(serviceId: string, data: LinkResourceRequest): Promise<ServiceResource> {\n return this.client.post<ServiceResource>(`/v1/services/${serviceId}/resources`, data);\n }\n\n async addPricing(serviceId: string, data: CreatePricingRuleRequest): Promise<PricingRule> {\n return this.client.post<PricingRule>(`/v1/services/${serviceId}/pricing`, data);\n }\n\n async createSchedule(serviceId: string, data: CreateScheduleRequest): Promise<Schedule> {\n return this.client.post<Schedule>(`/v1/services/${serviceId}/schedules`, data);\n }\n\n async addOverride(\n serviceId: string,\n scheduleId: string,\n data: CreateOverrideRequest,\n ): Promise<ScheduleOverride> {\n return this.client.post<ScheduleOverride>(\n `/v1/services/${serviceId}/schedules/${scheduleId}/overrides`,\n data,\n );\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n User,\n CreateUserRequest,\n UpdateUserRequest,\n ListUsersRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Users {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateUserRequest): Promise<User> {\n return this.client.post<User>('/v1/users', data);\n }\n\n async list(params?: ListUsersRequest): Promise<PaginatedResponse<User>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/users?${query}` : '/v1/users';\n return this.client.get<PaginatedResponse<User>>(path);\n }\n\n async get(id: string): Promise<User> {\n return this.client.get<User>(`/v1/users/${id}`);\n }\n\n async update(id: string, data: UpdateUserRequest): Promise<User> {\n return this.client.put<User>(`/v1/users/${id}`, data);\n }\n\n async delete(id: string): Promise<{ deleted: boolean }> {\n return this.client.delete<{ deleted: boolean }>(`/v1/users/${id}`);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n WaitlistEntry,\n JoinWaitlistRequest,\n ListWaitlistRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Waitlist {\n constructor(private readonly client: HttpClient) {}\n\n async join(data: JoinWaitlistRequest): Promise<{ id: string }> {\n return this.client.post<{ id: string }>('/v1/waitlist', data);\n }\n\n async list(params?: ListWaitlistRequest): Promise<PaginatedResponse<WaitlistEntry>> {\n const search = new URLSearchParams();\n if (params?.slotId) search.set('slotId', params.slotId);\n if (params?.contactId) search.set('contactId', params.contactId);\n if (params?.status) search.set('status', params.status);\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/waitlist?${query}` : '/v1/waitlist';\n return this.client.get<PaginatedResponse<WaitlistEntry>>(path);\n }\n\n async cancel(id: string): Promise<{ status: 'cancelled' }> {\n return this.client.delete<{ status: 'cancelled' }>(`/v1/waitlist/${id}`);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n WebhookEndpoint,\n WebhookDelivery,\n CreateWebhookRequest,\n ListDeliveriesRequest,\n PaginatedResponse,\n PaginationParams,\n} from '../types.js';\n\nexport class Webhooks {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateWebhookRequest): Promise<WebhookEndpoint> {\n return this.client.post<WebhookEndpoint>('/v1/webhooks', data);\n }\n\n async list(params?: PaginationParams): Promise<PaginatedResponse<WebhookEndpoint>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n const query = search.toString();\n const path = query ? `/v1/webhooks?${query}` : '/v1/webhooks';\n return this.client.get<PaginatedResponse<WebhookEndpoint>>(path);\n }\n\n async delete(id: string): Promise<{ deleted: boolean }> {\n return this.client.delete<{ deleted: boolean }>(`/v1/webhooks/${id}`);\n }\n\n async listDeliveries(\n webhookId: string,\n params?: ListDeliveriesRequest,\n ): Promise<PaginatedResponse<WebhookDelivery>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query\n ? `/v1/webhooks/${webhookId}/deliveries?${query}`\n : `/v1/webhooks/${webhookId}/deliveries`;\n return this.client.get<PaginatedResponse<WebhookDelivery>>(path);\n }\n}\n","import { HttpClient } from './client.js';\nimport { ApiKeys } from './resources/api-keys.js';\nimport { AuditLog } from './resources/audit-log.js';\nimport { Availability } from './resources/availability.js';\nimport { Bookings } from './resources/bookings.js';\nimport { BookingSeries } from './resources/booking-series.js';\nimport { Contacts } from './resources/contacts.js';\nimport { Entitlements } from './resources/entitlements.js';\nimport { Locations } from './resources/locations.js';\nimport { Organizations } from './resources/organizations.js';\nimport { Payments } from './resources/payments.js';\nimport { Resources } from './resources/resources.js';\nimport { Services } from './resources/services.js';\nimport { Users } from './resources/users.js';\nimport { Waitlist } from './resources/waitlist.js';\nimport { Webhooks } from './resources/webhooks.js';\nimport type { ClientOptions } from './types.js';\n\nexport class Seshn {\n public readonly apiKeys: ApiKeys;\n public readonly auditLog: AuditLog;\n public readonly availability: Availability;\n public readonly bookings: Bookings;\n public readonly bookingSeries: BookingSeries;\n public readonly contacts: Contacts;\n public readonly entitlements: Entitlements;\n public readonly locations: Locations;\n public readonly organizations: Organizations;\n public readonly payments: Payments;\n public readonly resources: Resources;\n public readonly services: Services;\n public readonly users: Users;\n public readonly waitlist: Waitlist;\n public readonly webhooks: Webhooks;\n\n constructor(apiKey: string, options?: { baseUrl?: string }) {\n const opts: ClientOptions = {\n apiKey,\n baseUrl: options?.baseUrl,\n };\n const client = new HttpClient(opts);\n const baseUrl = opts.baseUrl ?? 'http://localhost:3000';\n\n this.apiKeys = new ApiKeys(client);\n this.auditLog = new AuditLog(client);\n this.availability = new Availability(client);\n this.bookings = new Bookings(client);\n this.bookingSeries = new BookingSeries(client);\n this.contacts = new Contacts(client);\n this.entitlements = new Entitlements(client);\n this.locations = new Locations(client);\n this.organizations = new Organizations(client, baseUrl);\n this.payments = new Payments(client);\n this.resources = new Resources(client);\n this.services = new Services(client);\n this.users = new Users(client);\n this.waitlist = new Waitlist(client);\n this.webhooks = new Webhooks(client);\n }\n}\n\n// Re-export everything\nexport { HttpClient } from './client.js';\nexport * from './errors.js';\nexport * from './types.js';\nexport { ApiKeys } from './resources/api-keys.js';\nexport { AuditLog } from './resources/audit-log.js';\nexport { Availability } from './resources/availability.js';\nexport { Bookings } from './resources/bookings.js';\nexport { BookingSeries } from './resources/booking-series.js';\nexport { Contacts } from './resources/contacts.js';\nexport { Entitlements } from './resources/entitlements.js';\nexport { Locations } from './resources/locations.js';\nexport { Organizations } from './resources/organizations.js';\nexport { Payments } from './resources/payments.js';\nexport { Resources } from './resources/resources.js';\nexport { Services } from './resources/services.js';\nexport { Users } from './resources/users.js';\nexport { Waitlist } from './resources/waitlist.js';\nexport { Webhooks } from './resources/webhooks.js';\n\n/** @deprecated Use `Seshn` instead */\nexport const HeadlessBooking = Seshn;\n"],"mappings":"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","names":["createError"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/client.ts","../src/resources/api-keys.ts","../src/resources/audit-log.ts","../src/resources/availability.ts","../src/resources/bookings.ts","../src/resources/booking-series.ts","../src/resources/contacts.ts","../src/resources/entitlements.ts","../src/resources/locations.ts","../src/resources/organizations.ts","../src/resources/payments.ts","../src/resources/resources.ts","../src/resources/services.ts","../src/resources/users.ts","../src/resources/waitlist.ts","../src/resources/webhooks.ts","../src/index.ts"],"sourcesContent":["export interface ApiErrorBody {\n error: string;\n code: string;\n details?: { path: string; message: string }[];\n}\n\nexport class SeshnError extends Error {\n public readonly status: number;\n public readonly code: string;\n public readonly details?: { path: string; message: string }[];\n\n constructor(status: number, body: ApiErrorBody) {\n super(body.error);\n this.name = 'SeshnError';\n this.status = status;\n this.code = body.code;\n this.details = body.details;\n }\n}\n\nexport class NotFoundError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(404, body);\n this.name = 'NotFoundError';\n }\n}\n\nexport class ValidationError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(400, body);\n this.name = 'ValidationError';\n }\n}\n\nexport class UnauthorizedError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(401, body);\n this.name = 'UnauthorizedError';\n }\n}\n\nexport class ConflictError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(409, body);\n this.name = 'ConflictError';\n }\n}\n\nexport class InsufficientCapacityError extends ConflictError {\n constructor(body: ApiErrorBody) {\n super(body);\n this.name = 'InsufficientCapacityError';\n }\n}\n\nexport class InsufficientCreditsError extends ConflictError {\n constructor(body: ApiErrorBody) {\n super(body);\n this.name = 'InsufficientCreditsError';\n }\n}\n\nexport class InvalidStateError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(422, body);\n this.name = 'InvalidStateError';\n }\n}\n\nexport class CancellationDeadlineError extends InvalidStateError {\n constructor(body: ApiErrorBody) {\n super(body);\n this.name = 'CancellationDeadlineError';\n }\n}\n\nexport class ForbiddenError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(403, body);\n this.name = 'ForbiddenError';\n }\n}\n\nexport class RateLimitError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(429, body);\n this.name = 'RateLimitError';\n }\n}\n\nexport class PaymentProviderError extends SeshnError {\n constructor(body: ApiErrorBody) {\n super(502, body);\n this.name = 'PaymentProviderError';\n }\n}\n\nexport function createError(status: number, body: ApiErrorBody): SeshnError {\n switch (status) {\n case 400:\n return new ValidationError(body);\n case 401:\n return new UnauthorizedError(body);\n case 403:\n return new ForbiddenError(body);\n case 404:\n return new NotFoundError(body);\n case 409:\n if (body.code === 'INSUFFICIENT_CAPACITY') return new InsufficientCapacityError(body);\n if (body.code === 'INSUFFICIENT_CREDITS') return new InsufficientCreditsError(body);\n return new ConflictError(body);\n case 422:\n if (body.code === 'INVALID_STATE' && body.error?.toLowerCase().includes('cancellation deadline')) {\n return new CancellationDeadlineError(body);\n }\n return new InvalidStateError(body);\n case 429:\n return new RateLimitError(body);\n case 502:\n return new PaymentProviderError(body);\n default:\n return new SeshnError(status, body);\n }\n}\n\n/** @deprecated Use `SeshnError` instead */\nexport const HeadlessBookingError = SeshnError;\n","import { type ApiErrorBody, createError } from './errors.js';\nimport type { ClientOptions } from './types.js';\n\nexport class HttpClient {\n private readonly apiKey: string;\n private readonly baseUrl: string;\n\n constructor(options: ClientOptions) {\n this.apiKey = options.apiKey;\n this.baseUrl = (options.baseUrl ?? 'https://api.seshn.net').replace(/\\/$/, '');\n }\n\n async request<T>(method: string, path: string, body?: unknown): Promise<T> {\n const headers: Record<string, string> = {\n 'Authorization': `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n };\n\n const response = await fetch(`${this.baseUrl}${path}`, {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n\n if (!response.ok) {\n let errorBody: ApiErrorBody;\n try {\n errorBody = await response.json() as ApiErrorBody;\n } catch {\n errorBody = { error: response.statusText, code: 'UNKNOWN_ERROR' };\n }\n throw createError(response.status, errorBody);\n }\n\n return response.json() as Promise<T>;\n }\n\n get<T>(path: string): Promise<T> {\n return this.request<T>('GET', path);\n }\n\n post<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>('POST', path, body);\n }\n\n put<T>(path: string, body?: unknown): Promise<T> {\n return this.request<T>('PUT', path, body);\n }\n\n delete<T>(path: string): Promise<T> {\n return this.request<T>('DELETE', path);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n ApiKey,\n ApiKeyWithSecret,\n CreateApiKeyRequest,\n ListApiKeysRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class ApiKeys {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateApiKeyRequest): Promise<ApiKeyWithSecret> {\n return this.client.post<ApiKeyWithSecret>('/v1/api-keys', data);\n }\n\n async list(params?: ListApiKeysRequest): Promise<PaginatedResponse<ApiKey>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/api-keys?${query}` : '/v1/api-keys';\n return this.client.get<PaginatedResponse<ApiKey>>(path);\n }\n\n async revoke(id: string): Promise<{ deleted: boolean }> {\n return this.client.delete<{ deleted: boolean }>(`/v1/api-keys/${id}`);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n AuditLogEntry,\n ListAuditLogRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class AuditLog {\n constructor(private readonly client: HttpClient) {}\n\n async list(params?: ListAuditLogRequest): Promise<PaginatedResponse<AuditLogEntry>> {\n const search = new URLSearchParams();\n if (params?.action) search.set('action', params.action);\n if (params?.resourceType) search.set('resourceType', params.resourceType);\n if (params?.userId) search.set('userId', params.userId);\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/audit-log?${query}` : '/v1/audit-log';\n return this.client.get<PaginatedResponse<AuditLogEntry>>(path);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n Slot,\n QueryAvailabilityRequest,\n GenerateSlotsRequest,\n GenerateSlotsResponse,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Availability {\n constructor(private readonly client: HttpClient) {}\n\n async query(params: QueryAvailabilityRequest): Promise<PaginatedResponse<Slot>> {\n const search = new URLSearchParams({\n serviceId: params.serviceId,\n from: params.from,\n to: params.to,\n });\n if (params.minSeats !== undefined) {\n search.set('minSeats', String(params.minSeats));\n }\n if (params.cursor) search.set('cursor', params.cursor);\n if (params.limit !== undefined) search.set('limit', String(params.limit));\n return this.client.get<PaginatedResponse<Slot>>(\n `/v1/availability?${search.toString()}`,\n );\n }\n\n async generate(data: GenerateSlotsRequest): Promise<GenerateSlotsResponse> {\n return this.client.post<GenerateSlotsResponse>('/v1/availability/generate', data);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n BookingWithDetails,\n CreateBookingRequest,\n CreateBookingResponse,\n ConfirmBookingRequest,\n ConfirmBookingResponse,\n CancelBookingRequest,\n CancelBookingResponse,\n RescheduleBookingRequest,\n RescheduleBookingResponse,\n CheckInResponse,\n ListBookingsRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Bookings {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateBookingRequest): Promise<CreateBookingResponse> {\n return this.client.post<CreateBookingResponse>('/v1/bookings', data);\n }\n\n async list(params?: ListBookingsRequest): Promise<PaginatedResponse<BookingWithDetails>> {\n const search = new URLSearchParams();\n if (params?.contactId) search.set('contactId', params.contactId);\n if (params?.slotId) search.set('slotId', params.slotId);\n if (params?.status) search.set('status', params.status);\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/bookings?${query}` : '/v1/bookings';\n return this.client.get<PaginatedResponse<BookingWithDetails>>(path);\n }\n\n async get(id: string): Promise<BookingWithDetails> {\n return this.client.get<BookingWithDetails>(`/v1/bookings/${id}`);\n }\n\n async confirm(id: string, data?: ConfirmBookingRequest): Promise<ConfirmBookingResponse> {\n return this.client.post<ConfirmBookingResponse>(`/v1/bookings/${id}/confirm`, data ?? {});\n }\n\n async cancel(id: string, data?: CancelBookingRequest): Promise<CancelBookingResponse> {\n return this.client.put<CancelBookingResponse>(`/v1/bookings/${id}/cancel`, data ?? {});\n }\n\n async reschedule(id: string, data: RescheduleBookingRequest): Promise<RescheduleBookingResponse> {\n return this.client.put<RescheduleBookingResponse>(`/v1/bookings/${id}/reschedule`, data);\n }\n\n async checkIn(id: string): Promise<CheckInResponse> {\n return this.client.post<CheckInResponse>(`/v1/bookings/${id}/checkin`);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n BookingSeriesWithDetails,\n CreateBookingSeriesRequest,\n CreateBookingSeriesResponse,\n CancelBookingSeriesResponse,\n ListBookingSeriesRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class BookingSeries {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateBookingSeriesRequest): Promise<CreateBookingSeriesResponse> {\n return this.client.post<CreateBookingSeriesResponse>('/v1/booking-series', data);\n }\n\n async list(params?: ListBookingSeriesRequest): Promise<PaginatedResponse<BookingSeriesWithDetails>> {\n const search = new URLSearchParams();\n if (params?.contactId) search.set('contactId', params.contactId);\n if (params?.serviceId) search.set('serviceId', params.serviceId);\n if (params?.status) search.set('status', params.status);\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/booking-series?${query}` : '/v1/booking-series';\n return this.client.get<PaginatedResponse<BookingSeriesWithDetails>>(path);\n }\n\n async get(id: string): Promise<BookingSeriesWithDetails> {\n return this.client.get<BookingSeriesWithDetails>(`/v1/booking-series/${id}`);\n }\n\n async cancel(id: string, scope: 'all' | 'future' = 'future'): Promise<CancelBookingSeriesResponse> {\n return this.client.delete<CancelBookingSeriesResponse>(\n `/v1/booking-series/${id}?scope=${scope}`\n );\n }\n\n async cancelOccurrence(seriesId: string, index: number): Promise<{ status: string; bookingId: string }> {\n return this.client.delete<{ status: string; bookingId: string }>(\n `/v1/booking-series/${seriesId}/occurrences/${index}`\n );\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n Contact,\n CreateContactRequest,\n UpdateContactRequest,\n ListContactsRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Contacts {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateContactRequest): Promise<Contact> {\n return this.client.post<Contact>('/v1/contacts', data);\n }\n\n async list(params?: ListContactsRequest): Promise<PaginatedResponse<Contact>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/contacts?${query}` : '/v1/contacts';\n return this.client.get<PaginatedResponse<Contact>>(path);\n }\n\n async get(id: string): Promise<Contact> {\n return this.client.get<Contact>(`/v1/contacts/${id}`);\n }\n\n async update(id: string, data: UpdateContactRequest): Promise<Contact> {\n return this.client.put<Contact>(`/v1/contacts/${id}`, data);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n EntitlementType,\n Entitlement,\n EntitlementWithDetails,\n CreateEntitlementTypeRequest,\n IssueEntitlementRequest,\n IssueEntitlementResponse,\n ListEntitlementsRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Entitlements {\n constructor(private readonly client: HttpClient) {}\n\n async createType(data: CreateEntitlementTypeRequest): Promise<EntitlementType> {\n return this.client.post<EntitlementType>('/v1/entitlements/types', data);\n }\n\n async listTypes(params?: { cursor?: string; limit?: number }): Promise<PaginatedResponse<EntitlementType>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n const query = search.toString();\n const path = query ? `/v1/entitlements/types?${query}` : '/v1/entitlements/types';\n return this.client.get<PaginatedResponse<EntitlementType>>(path);\n }\n\n async issue(data: IssueEntitlementRequest): Promise<IssueEntitlementResponse> {\n return this.client.post<IssueEntitlementResponse>('/v1/entitlements', data);\n }\n\n async list(params: ListEntitlementsRequest): Promise<PaginatedResponse<Entitlement>> {\n const search = new URLSearchParams({ contactId: params.contactId });\n if (params.serviceId) search.set('serviceId', params.serviceId);\n if (params.cursor) search.set('cursor', params.cursor);\n if (params.limit !== undefined) search.set('limit', String(params.limit));\n\n return this.client.get<PaginatedResponse<Entitlement>>(\n `/v1/entitlements?${search.toString()}`,\n );\n }\n\n async get(id: string): Promise<EntitlementWithDetails> {\n return this.client.get<EntitlementWithDetails>(`/v1/entitlements/${id}`);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n Location,\n LocationWithResources,\n CreateLocationRequest,\n PaginatedResponse,\n PaginationParams,\n} from '../types.js';\n\nexport class Locations {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateLocationRequest): Promise<Location> {\n return this.client.post<Location>('/v1/locations', data);\n }\n\n async list(params?: PaginationParams): Promise<PaginatedResponse<LocationWithResources>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n const query = search.toString();\n const path = query ? `/v1/locations?${query}` : '/v1/locations';\n return this.client.get<PaginatedResponse<LocationWithResources>>(path);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type { CreateOrganizationRequest, CreateOrganizationResponse } from '../types.js';\n\nexport class Organizations {\n private readonly baseUrl: string;\n\n constructor(private readonly client: HttpClient, baseUrl: string) {\n this.baseUrl = baseUrl.replace(/\\/$/, '');\n }\n\n async create(data: CreateOrganizationRequest): Promise<CreateOrganizationResponse> {\n // Organization creation doesn't require auth, so we make a raw fetch\n const response = await fetch(`${this.baseUrl}/organizations`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(data),\n });\n\n if (!response.ok) {\n const { createError } = await import('../errors.js');\n const body = await response.json();\n throw createError(response.status, body);\n }\n\n return response.json() as Promise<CreateOrganizationResponse>;\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type { Payment, PaginatedResponse, PaginationParams, RefundPaymentResponse } from '../types.js';\n\nexport class Payments {\n constructor(private readonly client: HttpClient) {}\n\n async list(params?: PaginationParams): Promise<PaginatedResponse<Payment>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/payments?${query}` : '/v1/payments';\n return this.client.get<PaginatedResponse<Payment>>(path);\n }\n\n async get(id: string): Promise<Payment> {\n return this.client.get<Payment>(`/v1/payments/${id}`);\n }\n\n async refund(id: string, amount?: number): Promise<RefundPaymentResponse> {\n return this.client.post<RefundPaymentResponse>(\n `/v1/payments/${id}/refund`,\n amount ? { amount } : {}\n );\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type { Resource, CreateResourceRequest } from '../types.js';\n\nexport class Resources {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateResourceRequest): Promise<Resource> {\n return this.client.post<Resource>('/v1/resources', data);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n Service,\n CreateServiceRequest,\n UpdateServiceRequest,\n LinkResourceRequest,\n ServiceResource,\n CreatePricingRuleRequest,\n PricingRule,\n CreateScheduleRequest,\n Schedule,\n CreateOverrideRequest,\n ScheduleOverride,\n PaginatedResponse,\n PaginationParams,\n} from '../types.js';\n\nexport class Services {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateServiceRequest): Promise<Service> {\n return this.client.post<Service>('/v1/services', data);\n }\n\n async list(params?: PaginationParams): Promise<PaginatedResponse<Service>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n const query = search.toString();\n const path = query ? `/v1/services?${query}` : '/v1/services';\n return this.client.get<PaginatedResponse<Service>>(path);\n }\n\n async get(id: string): Promise<Service> {\n return this.client.get<Service>(`/v1/services/${id}`);\n }\n\n async update(id: string, data: UpdateServiceRequest): Promise<Service> {\n return this.client.put<Service>(`/v1/services/${id}`, data);\n }\n\n async delete(id: string): Promise<{ deleted: boolean }> {\n return this.client.delete<{ deleted: boolean }>(`/v1/services/${id}`);\n }\n\n async linkResource(serviceId: string, data: LinkResourceRequest): Promise<ServiceResource> {\n return this.client.post<ServiceResource>(`/v1/services/${serviceId}/resources`, data);\n }\n\n async addPricing(serviceId: string, data: CreatePricingRuleRequest): Promise<PricingRule> {\n return this.client.post<PricingRule>(`/v1/services/${serviceId}/pricing`, data);\n }\n\n async createSchedule(serviceId: string, data: CreateScheduleRequest): Promise<Schedule> {\n return this.client.post<Schedule>(`/v1/services/${serviceId}/schedules`, data);\n }\n\n async addOverride(\n serviceId: string,\n scheduleId: string,\n data: CreateOverrideRequest,\n ): Promise<ScheduleOverride> {\n return this.client.post<ScheduleOverride>(\n `/v1/services/${serviceId}/schedules/${scheduleId}/overrides`,\n data,\n );\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n User,\n CreateUserRequest,\n UpdateUserRequest,\n ListUsersRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Users {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateUserRequest): Promise<User> {\n return this.client.post<User>('/v1/users', data);\n }\n\n async list(params?: ListUsersRequest): Promise<PaginatedResponse<User>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/users?${query}` : '/v1/users';\n return this.client.get<PaginatedResponse<User>>(path);\n }\n\n async get(id: string): Promise<User> {\n return this.client.get<User>(`/v1/users/${id}`);\n }\n\n async update(id: string, data: UpdateUserRequest): Promise<User> {\n return this.client.put<User>(`/v1/users/${id}`, data);\n }\n\n async delete(id: string): Promise<{ deleted: boolean }> {\n return this.client.delete<{ deleted: boolean }>(`/v1/users/${id}`);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n WaitlistEntry,\n JoinWaitlistRequest,\n ListWaitlistRequest,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Waitlist {\n constructor(private readonly client: HttpClient) {}\n\n async join(data: JoinWaitlistRequest): Promise<{ id: string }> {\n return this.client.post<{ id: string }>('/v1/waitlist', data);\n }\n\n async list(params?: ListWaitlistRequest): Promise<PaginatedResponse<WaitlistEntry>> {\n const search = new URLSearchParams();\n if (params?.slotId) search.set('slotId', params.slotId);\n if (params?.contactId) search.set('contactId', params.contactId);\n if (params?.status) search.set('status', params.status);\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query ? `/v1/waitlist?${query}` : '/v1/waitlist';\n return this.client.get<PaginatedResponse<WaitlistEntry>>(path);\n }\n\n async cancel(id: string): Promise<{ status: 'cancelled' }> {\n return this.client.delete<{ status: 'cancelled' }>(`/v1/waitlist/${id}`);\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n WebhookEndpoint,\n WebhookDelivery,\n CreateWebhookRequest,\n ListDeliveriesRequest,\n PaginatedResponse,\n PaginationParams,\n} from '../types.js';\n\nexport class Webhooks {\n constructor(private readonly client: HttpClient) {}\n\n async create(data: CreateWebhookRequest): Promise<WebhookEndpoint> {\n return this.client.post<WebhookEndpoint>('/v1/webhooks', data);\n }\n\n async list(params?: PaginationParams): Promise<PaginatedResponse<WebhookEndpoint>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n const query = search.toString();\n const path = query ? `/v1/webhooks?${query}` : '/v1/webhooks';\n return this.client.get<PaginatedResponse<WebhookEndpoint>>(path);\n }\n\n async delete(id: string): Promise<{ deleted: boolean }> {\n return this.client.delete<{ deleted: boolean }>(`/v1/webhooks/${id}`);\n }\n\n async listDeliveries(\n webhookId: string,\n params?: ListDeliveriesRequest,\n ): Promise<PaginatedResponse<WebhookDelivery>> {\n const search = new URLSearchParams();\n if (params?.cursor) search.set('cursor', params.cursor);\n if (params?.limit !== undefined) search.set('limit', String(params.limit));\n\n const query = search.toString();\n const path = query\n ? `/v1/webhooks/${webhookId}/deliveries?${query}`\n : `/v1/webhooks/${webhookId}/deliveries`;\n return this.client.get<PaginatedResponse<WebhookDelivery>>(path);\n }\n}\n","import { HttpClient } from './client.js';\nimport { ApiKeys } from './resources/api-keys.js';\nimport { AuditLog } from './resources/audit-log.js';\nimport { Availability } from './resources/availability.js';\nimport { Bookings } from './resources/bookings.js';\nimport { BookingSeries } from './resources/booking-series.js';\nimport { Contacts } from './resources/contacts.js';\nimport { Entitlements } from './resources/entitlements.js';\nimport { Locations } from './resources/locations.js';\nimport { Organizations } from './resources/organizations.js';\nimport { Payments } from './resources/payments.js';\nimport { Resources } from './resources/resources.js';\nimport { Services } from './resources/services.js';\nimport { Users } from './resources/users.js';\nimport { Waitlist } from './resources/waitlist.js';\nimport { Webhooks } from './resources/webhooks.js';\nimport type { ClientOptions } from './types.js';\n\nexport class Seshn {\n public readonly apiKeys: ApiKeys;\n public readonly auditLog: AuditLog;\n public readonly availability: Availability;\n public readonly bookings: Bookings;\n public readonly bookingSeries: BookingSeries;\n public readonly contacts: Contacts;\n public readonly entitlements: Entitlements;\n public readonly locations: Locations;\n public readonly organizations: Organizations;\n public readonly payments: Payments;\n public readonly resources: Resources;\n public readonly services: Services;\n public readonly users: Users;\n public readonly waitlist: Waitlist;\n public readonly webhooks: Webhooks;\n\n constructor(apiKey: string, options?: { baseUrl?: string }) {\n const opts: ClientOptions = {\n apiKey,\n baseUrl: options?.baseUrl,\n };\n const client = new HttpClient(opts);\n const baseUrl = opts.baseUrl ?? 'https://api.seshn.net';\n\n this.apiKeys = new ApiKeys(client);\n this.auditLog = new AuditLog(client);\n this.availability = new Availability(client);\n this.bookings = new Bookings(client);\n this.bookingSeries = new BookingSeries(client);\n this.contacts = new Contacts(client);\n this.entitlements = new Entitlements(client);\n this.locations = new Locations(client);\n this.organizations = new Organizations(client, baseUrl);\n this.payments = new Payments(client);\n this.resources = new Resources(client);\n this.services = new Services(client);\n this.users = new Users(client);\n this.waitlist = new Waitlist(client);\n this.webhooks = new Webhooks(client);\n }\n}\n\n// Re-export everything\nexport { HttpClient } from './client.js';\nexport * from './errors.js';\nexport * from './types.js';\nexport { ApiKeys } from './resources/api-keys.js';\nexport { AuditLog } from './resources/audit-log.js';\nexport { Availability } from './resources/availability.js';\nexport { Bookings } from './resources/bookings.js';\nexport { BookingSeries } from './resources/booking-series.js';\nexport { Contacts } from './resources/contacts.js';\nexport { Entitlements } from './resources/entitlements.js';\nexport { Locations } from './resources/locations.js';\nexport { Organizations } from './resources/organizations.js';\nexport { Payments } from './resources/payments.js';\nexport { Resources } from './resources/resources.js';\nexport { Services } from './resources/services.js';\nexport { Users } from './resources/users.js';\nexport { Waitlist } from './resources/waitlist.js';\nexport { Webhooks } from './resources/webhooks.js';\n\n/** @deprecated Use `Seshn` instead */\nexport const HeadlessBooking = Seshn;\n"],"mappings":"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","names":["createError"]}
|