b39a676e1a
CI / test (push) Successful in 5m53s
CI / push-image (push) Successful in 10m1s
CI / ci-done (push) Successful in 0s
CI / deploy-ift (push) Successful in 47s
CI / e2e-ift (push) Successful in 2m49s
CI / deploy-stage (push) Successful in 7m58s
CI / e2e-stage (push) Successful in 1m20s
38 lines
1.4 KiB
TypeScript
38 lines
1.4 KiB
TypeScript
import apiClient from './client';
|
|
import { Ticket, TicketListParams, TicketStats, PaginatedResponse } from '../types/api';
|
|
|
|
export type TicketSource = 'backend' | 'frontend' | 'manual';
|
|
|
|
export interface CreateTicketPayload {
|
|
error_message: string;
|
|
stacktrace?: string;
|
|
context?: Record<string, unknown> | string;
|
|
source?: TicketSource;
|
|
}
|
|
|
|
export const ticketsApi = {
|
|
getTickets: async (params: TicketListParams): Promise<PaginatedResponse<Ticket>> => {
|
|
const { data, headers } = await apiClient.get('/v1/admin/tickets', { params });
|
|
const total = parseInt(headers['x-total-count'] || '0', 10);
|
|
return { data, total };
|
|
},
|
|
getTicket: async (id: string): Promise<Ticket> => {
|
|
const { data } = await apiClient.get(`/v1/admin/tickets/${id}`);
|
|
return data;
|
|
},
|
|
createTicket: async (payload: CreateTicketPayload): Promise<Ticket> => {
|
|
const { data } = await apiClient.post('/v1/tickets', payload);
|
|
return data;
|
|
},
|
|
updateTicket: async (id: string, payload: Partial<Ticket>): Promise<void> => {
|
|
await apiClient.put(`/v1/admin/tickets/${id}`, payload);
|
|
},
|
|
deleteTicket: async (id: string): Promise<void> => {
|
|
await apiClient.delete(`/v1/admin/tickets/${id}`);
|
|
},
|
|
getTicketStats: async (): Promise<TicketStats> => {
|
|
const { data } = await apiClient.get('/v1/admin/tickets/stats');
|
|
return data;
|
|
},
|
|
};
|