import { getJson, getText, postBytes, postJson, postText, } from "../../shared/api/client"; import type { AuthProfile, DraftGenerationResult, GrpcServiceSummary, OperationRecord, OperationSummary, TestRunResult, } from "./types"; export function listOperations() { return getJson<{ items: OperationSummary[] }>("/api/admin/operations"); } export function getOperation(operationId: string) { return getJson(`/api/admin/operations/${operationId}`); } export function getOperationVersion(operationId: string, version: number) { return getJson( `/api/admin/operations/${operationId}/versions/${version}`, ); } export function createOperation(payload: unknown) { return postJson<{ operation_id: string; version: number; status: string; }>("/api/admin/operations", payload); } export function publishOperation(operationId: string, version: number) { return postJson<{ published_version: number; published_at: string }>( `/api/admin/operations/${operationId}/publish`, { version }, ); } export function runOperationTest( operationId: string, version: number, input: unknown, ) { return postJson(`/api/admin/operations/${operationId}/test-runs`, { version, input, }); } export function uploadInputJsonSample(operationId: string, payload: unknown) { return postJson(`/api/admin/operations/${operationId}/samples/input-json`, payload); } export function uploadOutputJsonSample(operationId: string, payload: unknown) { return postJson( `/api/admin/operations/${operationId}/samples/output-json`, payload, ); } export function generateDraft(operationId: string) { return postJson( `/api/admin/operations/${operationId}/drafts/generate`, { sources: ["input_json_sample", "output_json_sample"], }, ); } export function exportOperationYaml(operationId: string, version?: number) { const query = version === undefined ? "" : `?version=${version}`; return getText(`/api/admin/operations/${operationId}/export${query}`); } export function importOperationYaml(yamlText: string, mode: "create" | "upsert") { return postText<{ operation_id: string; version: number; import_mode: string }>( `/api/admin/operations/import?mode=${mode}`, yamlText, ); } export function listAuthProfiles() { return getJson<{ items: AuthProfile[] }>("/api/admin/auth-profiles"); } export function uploadProtoDescriptor( operationId: string, fileName: string, bytes: ArrayBuffer, ) { return postBytes<{ descriptor_id: string; version: number }>( `/api/admin/operations/${operationId}/descriptors/proto`, bytes, { "Content-Type": "application/octet-stream", "x-file-name": fileName, }, ); } export function uploadDescriptorSet( operationId: string, fileName: string, bytes: ArrayBuffer, ) { return postBytes<{ descriptor_id: string; version: number }>( `/api/admin/operations/${operationId}/descriptors/descriptor-set`, bytes, { "Content-Type": "application/octet-stream", "x-file-name": fileName, }, ); } export function listGrpcServices(operationId: string, version?: number) { const query = version === undefined ? "" : `?version=${version}`; return getJson<{ services: GrpcServiceSummary[] }>( `/api/admin/operations/${operationId}/grpc/services${query}`, ); }