import { api } from '@/services/api'; export type AdminPlatform = { id: string; code: string; name: string; status: string; source: { configured: boolean; client_id_hint: string | null; updated_at: string | null }; summary: { category_count: number; last_tree_sync_at: string | null; last_error: string | null }; }; export type CatalogCategory = { id: string; parent_id: string | null; external_category_id: string; external_type_id: string | null; name: string; path: string; is_active: boolean; synced_at: string | null; }; export type CatalogAttribute = { id: string; platform_attribute_id: string; complex_id: string; name: string; description: string | null; group_id: string | null; group_name: string | null; value_type: string; is_required: boolean; is_aspect: boolean; is_collection: boolean; max_value_count: number; dictionary_id: string | null; category_dependent: boolean; is_active: boolean; synced_at: string | null; dictionary_value_count: number; }; export type CatalogValue = { id: string; external_value_id: string; value: string; info: string | null; picture: string | null; }; export type CatalogRun = { id: string; platform_id: string; scope: 'tree' | 'attributes' | 'dictionary'; scope_key: string; category_id: string | null; attribute_id: string | null; trigger: string; status: string; result: Record; error_code: string | null; error_message: string | null; attempt_count: number; created_at: string; started_at: string | null; completed_at: string | null; }; export type SyncRequest = | { scope: 'tree' } | { scope: 'attributes'; category_id: string } | { scope: 'dictionary'; attribute_id: string }; export const platformCatalogAdminApi = { access: () => api.get<{ is_system_admin: boolean }>('/system/access'), platforms: () => api.get('/system/platform-catalog/platforms'), configureSource: (platformId: string, input: { client_id: string; api_key: string }) => api.put<{ configured: boolean; client_id_hint: string; revision: number; changed: boolean }>( `/system/platform-catalog/platforms/${platformId}/source`, input, ), categories: (platformId: string) => api.get(`/system/platform-catalog/platforms/${platformId}/categories`), attributes: (platformId: string, categoryId: string) => api.get( `/system/platform-catalog/platforms/${platformId}/categories/${categoryId}/attributes`, ), values: (platformId: string, attributeId: string, page: number, keyword: string) => api.getList( `/system/platform-catalog/platforms/${platformId}/attributes/${attributeId}/values`, { params: { page, q: keyword } }, ), sync: (platformId: string, input: SyncRequest) => api.post<{ id: string; status: string }>( `/system/platform-catalog/platforms/${platformId}/syncs`, input, { headers: { 'Idempotency-Key': crypto.randomUUID() } }, ), runs: (platformId: string) => api.get(`/system/platform-catalog/platforms/${platformId}/syncs?limit=20`), };