export type SellerId = string; export type TicketId = string; export type Topic = 'QUESTION' | 'FEEDBACK' | 'DELIVERY' | 'RETURN' | 'REFUND' | 'INCIDENT'; export type TicketReference = {type: 'OFFER' | 'CHANNELOFFER' | 'ORDERID' | 'ORDERITEMID', id: string} | null; export type TicketFrom = {role: 'BUYER' | 'SELLER' | 'CHANNEL', name?: string | undefined}; export type TicketAttachment = {filename: string, contentType: string}; export type Ticket = {sellerId: SellerId, ticketId: TicketId, topic: Topic, reference?: TicketReference | undefined, replyRequested?: boolean | undefined, createdAt: string, from: TicketFrom, subject: string, message: string, attachment?: Array | undefined}; export type CreateApiV1ChannelTicketArgs = {body: Ticket}; export type CreateApiV1ChannelTicketOptions = {baseUrl?: string | undefined, ChannelAuth?: string | undefined, fetch?: typeof fetch | undefined}; /** * Create Ticket * * POST /v1/channel/ticket */ export const createApiV1ChannelTicket = async (args: CreateApiV1ChannelTicketArgs, options?: CreateApiV1ChannelTicketOptions) => { const {baseUrl = "https://scx-sbx.api.jtl-software.com", fetch: fetchFn = fetch, ChannelAuth} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") if (ChannelAuth !== undefined) headers.set('authorization', `Bearer ${ChannelAuth}`) const url = `${baseUrl.replace(/\/+$/, '')}/v1/channel/ticket${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return undefined };