import apiClient from './client' import type { ScriptCategoryResponse, ScriptTemplateListItem, ScriptTemplateDetail, ScriptGenerateRequest, ScriptGenerateResponse, ScriptGenerationRecord, ScriptTemplateCreateRequest, ScriptTemplateUpdateRequest, } from '@/types' export const scriptsApi = { async getCategories(): Promise { const response = await apiClient.get('/scripts/categories') return response.data }, async getTemplates(params?: { category_slug?: string search?: string tags?: string // Phase 3: comma-separated tag filter mine?: boolean shared?: boolean }): Promise { const response = await apiClient.get('/scripts/templates', { params }) return response.data }, async getTemplateDetail(id: string): Promise { const response = await apiClient.get(`/scripts/templates/${id}`) return response.data }, async generate(req: ScriptGenerateRequest): Promise { const response = await apiClient.post('/scripts/generate', req) return response.data }, // Phase 3: fetch generation history for the current user async getGenerations(): Promise { const response = await apiClient.get('/scripts/generations') return response.data }, async getManagedTemplates(params?: { category_slug?: string search?: string }): Promise { const response = await apiClient.get('/scripts/templates', { params: { ...params, managed: true }, }) return response.data }, async createTemplate(data: ScriptTemplateCreateRequest): Promise { const response = await apiClient.post('/scripts/templates', data) return response.data }, async updateTemplate(id: string, data: ScriptTemplateUpdateRequest): Promise { const response = await apiClient.put(`/scripts/templates/${id}`, data) return response.data }, async deleteTemplate(id: string): Promise { await apiClient.delete(`/scripts/templates/${id}`) }, async shareTemplate(id: string, shared: boolean): Promise { const response = await apiClient.patch( `/scripts/templates/${id}/share`, null, { params: { shared } }, ) return response.data }, } export default scriptsApi