129 lines
3.3 KiB
TypeScript
129 lines
3.3 KiB
TypeScript
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<OperationSummary>(`/api/admin/operations/${operationId}`);
|
|
}
|
|
|
|
export function getOperationVersion(operationId: string, version: number) {
|
|
return getJson<OperationRecord>(
|
|
`/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<TestRunResult>(`/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<DraftGenerationResult>(
|
|
`/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}`,
|
|
);
|
|
}
|