apiClient
This commit is contained in:
@@ -9,6 +9,8 @@ import type {
|
||||
FolderTreeNode,
|
||||
Identifier,
|
||||
PasskeySummary,
|
||||
TenantSnippet,
|
||||
TagResponse,
|
||||
} from './apiTypes';
|
||||
|
||||
const normalizeNumber = (value: unknown): number | undefined => {
|
||||
@@ -75,6 +77,176 @@ export const listPasskeys = async (): Promise<PasskeySummary[]> => {
|
||||
return Array.isArray(data) ? data : [];
|
||||
};
|
||||
|
||||
export const moveDocumentsBulk = async (documentIds: Identifier[], folderId: Identifier | null): Promise<void> => {
|
||||
await api.post('/documents/bulk/move', {
|
||||
document_ids: documentIds,
|
||||
folder_id: folderId,
|
||||
});
|
||||
};
|
||||
|
||||
export const queueDocumentReanalysis = async (
|
||||
documentId: Identifier,
|
||||
options: { force?: boolean } = {},
|
||||
): Promise<void> => {
|
||||
const { force = false } = options;
|
||||
await api.post(`/documents/${documentId}/assets`, null, { params: { force } });
|
||||
};
|
||||
|
||||
export const trashDocument = async (documentId: Identifier): Promise<void> => {
|
||||
await api.post(`/documents/${documentId}/trash`);
|
||||
};
|
||||
|
||||
export const addDocumentTags = async (documentId: Identifier, tagIds: Identifier[]): Promise<void> => {
|
||||
await api.post(`/documents/${documentId}/tags`, { tag_ids: tagIds });
|
||||
};
|
||||
|
||||
export const createTag = async (payload: { label: string; color?: string | null }): Promise<TagResponse> => {
|
||||
const { data } = await api.post<TagResponse>('/tags', payload);
|
||||
return data;
|
||||
};
|
||||
|
||||
export const createFolder = async (payload: { name: string; parent_id?: Identifier | null }): Promise<unknown> => {
|
||||
const { data } = await api.post('/folders', payload);
|
||||
return data;
|
||||
};
|
||||
|
||||
export const assignCorrespondentsBulk = async <T = unknown>(
|
||||
payload: Record<string, unknown>,
|
||||
): Promise<T> => {
|
||||
const { data } = await api.post<T>('/documents/bulk/correspondents', payload);
|
||||
return data;
|
||||
};
|
||||
|
||||
export const createApiToken = async (payload: {
|
||||
capability_set_id: Identifier;
|
||||
label?: string;
|
||||
expires_at?: string;
|
||||
}): Promise<{ token_info?: ApiTokenRecord; token?: string }> => {
|
||||
const { data } = await api.post('/profile/api-tokens', payload);
|
||||
return data as { token_info?: ApiTokenRecord; token?: string };
|
||||
};
|
||||
|
||||
export const regenerateApiToken = async (
|
||||
tokenId: Identifier,
|
||||
): Promise<{ token_info?: ApiTokenRecord; token?: string }> => {
|
||||
const { data } = await api.post(`/profile/api-tokens/${tokenId}/regenerate`);
|
||||
return data as { token_info?: ApiTokenRecord; token?: string };
|
||||
};
|
||||
|
||||
export const startPasskeyRegistration = async (): Promise<unknown> => {
|
||||
const { data } = await api.post('/auth/passkeys/register/start', {});
|
||||
return data;
|
||||
};
|
||||
|
||||
export const finishPasskeyRegistration = async (payload: unknown): Promise<unknown> => {
|
||||
const { data } = await api.post('/auth/passkeys/register/finish', payload);
|
||||
return data;
|
||||
};
|
||||
|
||||
export const startPasskeyLogin = async (username: string): Promise<unknown> => {
|
||||
const { data } = await api.post('/auth/passkeys/login/start', { username });
|
||||
return data;
|
||||
};
|
||||
|
||||
export const finishPasskeyLogin = async (payload: unknown): Promise<unknown> => {
|
||||
const { data } = await api.post('/auth/passkeys/login/finish', payload);
|
||||
return data;
|
||||
};
|
||||
|
||||
export const performLogin = async (payload: Record<string, unknown>): Promise<unknown> => {
|
||||
const { data } = await api.post('/auth/login', payload);
|
||||
return data;
|
||||
};
|
||||
|
||||
export const selectTenant = async (
|
||||
payload: { tenant_id: Identifier },
|
||||
selectionToken: string,
|
||||
): Promise<unknown> => {
|
||||
const { data } = await api.post('/auth/select-tenant', payload, {
|
||||
headers: {
|
||||
Authorization: `Bearer ${selectionToken}`,
|
||||
},
|
||||
});
|
||||
return data;
|
||||
};
|
||||
|
||||
export const startSignup = async (username: string): Promise<unknown> => {
|
||||
const { data } = await api.post('/auth/signup/start', { username });
|
||||
return data;
|
||||
};
|
||||
|
||||
export const finishSignup = async (payload: unknown): Promise<unknown> => {
|
||||
const { data } = await api.post('/auth/signup/finish', payload);
|
||||
return data;
|
||||
};
|
||||
|
||||
export const updateDocument = async (
|
||||
id: Identifier,
|
||||
payload: Record<string, unknown>,
|
||||
): Promise<DocumentResponse> => {
|
||||
const { data } = await api.patch<DocumentResponse>(`/documents/${id}`, payload);
|
||||
return data;
|
||||
};
|
||||
|
||||
export const moveDocumentToFolder = async (id: Identifier, folderId: Identifier | null): Promise<void> => {
|
||||
await api.patch(`/documents/${id}/folder`, { folder_id: folderId });
|
||||
};
|
||||
|
||||
export const deleteDocumentTag = async (documentId: Identifier, tagId: Identifier): Promise<void> => {
|
||||
await api.delete(`/documents/${documentId}/tags/${tagId}`);
|
||||
};
|
||||
|
||||
export const deleteFolder = async (folderId: Identifier): Promise<void> => {
|
||||
await api.delete(`/folders/${folderId}`);
|
||||
};
|
||||
|
||||
export const moveFolder = async (folderId: Identifier, parentId: Identifier | null): Promise<void> => {
|
||||
await api.patch(`/folders/${folderId}`, { parent_id: parentId });
|
||||
};
|
||||
|
||||
export const renameFolder = async (folderId: Identifier, name: string): Promise<void> => {
|
||||
await api.patch(`/folders/${folderId}`, { name });
|
||||
};
|
||||
|
||||
export const createCapabilitySet = async (
|
||||
payload: { slug?: string; label?: string; capabilities: string[] },
|
||||
): Promise<CapabilitySetResponse & { label?: string }> => {
|
||||
const { data } = await api.post<CapabilitySetResponse & { label?: string }>('/capability-sets', payload);
|
||||
return data;
|
||||
};
|
||||
|
||||
export const updateCapabilitySet = async (
|
||||
id: Identifier,
|
||||
payload: { slug?: string; label?: string; capabilities?: string[] },
|
||||
): Promise<CapabilitySetResponse & { label?: string }> => {
|
||||
const { data } = await api.patch<CapabilitySetResponse & { label?: string }>(`/capability-sets/${id}`, payload);
|
||||
return data;
|
||||
};
|
||||
|
||||
export const deleteCapabilitySet = async (id: Identifier): Promise<void> => {
|
||||
await api.delete(`/capability-sets/${id}`);
|
||||
};
|
||||
|
||||
export const deleteApiToken = async (tokenId: Identifier): Promise<void> => {
|
||||
await api.delete(`/profile/api-tokens/${tokenId}`);
|
||||
};
|
||||
|
||||
export const deletePasskey = async (
|
||||
passkeyId: Identifier,
|
||||
options: { reason?: string } = {},
|
||||
): Promise<void> => {
|
||||
const query = options.reason ? `?reason=${encodeURIComponent(options.reason)}` : '';
|
||||
await api.delete(`/profile/passkeys/${passkeyId}${query}`);
|
||||
};
|
||||
|
||||
export const listTenants = async (): Promise<TenantSnippet[]> => {
|
||||
const { data } = await api.get<{ tenants?: TenantSnippet[] } | TenantSnippet[]>('/tenants');
|
||||
if (Array.isArray(data)) {
|
||||
return data;
|
||||
}
|
||||
return Array.isArray(data?.tenants) ? data.tenants : [];
|
||||
};
|
||||
|
||||
export type {
|
||||
DownloadLink,
|
||||
DocumentResponse,
|
||||
@@ -85,4 +257,5 @@ export type {
|
||||
ApiTokenRecord,
|
||||
PasskeySummary,
|
||||
Identifier,
|
||||
TenantSnippet,
|
||||
} from './apiTypes';
|
||||
|
||||
Reference in New Issue
Block a user