BREAKING CHANGES (row-comments routes): - POST /v1/row-comments/list → GET /v1/row-comments (query params) - POST /v1/row-comments/create → POST /v1/row-comments (201 Created) - POST /v1/row-comments/update → PATCH /v1/row-comments/:id - POST /v1/row-comments/resolve → PATCH /v1/row-comments/:id/resolve - POST /v1/row-comments/delete → DELETE /v1/row-comments/:id (204) - POST /v1/row-comments/count → GET /v1/row-comments/count (query params) - UpdateRowCommentDto/ResolveRowCommentDto: removed commentId field (now path param) REST patches (non-breaking): - POST /v1/sync-blocks: added explicit @HttpCode(201) - POST /v1/slash-commands: added explicit @HttpCode(201) - POST /v1/templates: added explicit @HttpCode(201) - POST /v1/templates/:id/instantiate: added explicit @HttpCode(201) Pre-existing test fixes: - clipper-client.test.ts: jest.mock/jest.fn → vi.mock/vi.fn (Vitest compat) - templates-client.ts + clipper-client.ts + slash-commands-client.ts + sync-blocks-client.ts: removed double-unwrap .data.data → .data Tests: 366/366 client vitest pass, 448/453 server jest pass (5 pre-existing infra failures) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import axios from 'axios';
|
|
|
|
export interface SyncBlockDto {
|
|
id: string;
|
|
workspaceId: string;
|
|
content: Record<string, unknown>;
|
|
createdBy: string;
|
|
createdAt: string;
|
|
updatedAt: string;
|
|
}
|
|
|
|
export interface SyncBlockUsageDto {
|
|
pageId: string;
|
|
pageTitle: string | null;
|
|
slugId: string;
|
|
spaceId: string;
|
|
workspaceId: string;
|
|
}
|
|
|
|
const BASE = '/api/v1/sync-blocks';
|
|
|
|
export const syncBlocksClient = {
|
|
create(content: Record<string, unknown> = {}): Promise<SyncBlockDto> {
|
|
return axios.post<SyncBlockDto>(BASE, { content }).then((r) => r.data);
|
|
},
|
|
|
|
get(id: string): Promise<SyncBlockDto> {
|
|
return axios.get<SyncBlockDto>(`${BASE}/${id}`).then((r) => r.data);
|
|
},
|
|
|
|
update(id: string, content: Record<string, unknown>): Promise<SyncBlockDto> {
|
|
return axios.patch<SyncBlockDto>(`${BASE}/${id}`, { content }).then((r) => r.data);
|
|
},
|
|
|
|
delete(id: string): Promise<void> {
|
|
return axios.delete(`${BASE}/${id}`).then(() => undefined);
|
|
},
|
|
|
|
usages(id: string): Promise<SyncBlockUsageDto[]> {
|
|
return axios.get<SyncBlockUsageDto[]>(`${BASE}/${id}/usages`).then((r) => r.data);
|
|
},
|
|
};
|