@papra/api-sdk
Version:
Api SDK for Papra, the document archiving platform.
73 lines (69 loc) • 1.96 kB
JavaScript
import { injectArguments } from "@corentinth/chisels";
import { ofetch } from "ofetch";
//#region package.json
var version = "1.1.3";
//#endregion
//#region src/http-client.ts
function createApiClient({ apiKey, apiBaseUrl }) {
const apiClient = ofetch.create({
headers: {
"Authorization": `Bearer ${apiKey}`,
"X-Papra-Source": `papra-api-sdk-javascript/${version}`
},
baseURL: apiBaseUrl
});
return { apiClient };
}
//#endregion
//#region src/api-client.ts
const PAPRA_API_URL = "https://api.papra.app";
function createClient({ apiKey, apiBaseUrl = PAPRA_API_URL }) {
const { apiClient } = createApiClient({
apiKey,
apiBaseUrl
});
const methods = injectArguments({
uploadDocument,
listOrganizations,
listTags,
createTag,
addTagToDocument
}, { apiClient });
return {
...methods,
forOrganization: (organizationId) => injectArguments(methods, { organizationId })
};
}
async function uploadDocument({ file, organizationId, apiClient }) {
const formData = new FormData();
formData.append("file", file);
return await apiClient(`/api/organizations/${organizationId}/documents`, {
method: "POST",
body: formData
});
}
async function listOrganizations({ apiClient }) {
return await apiClient("/api/organizations", { method: "GET" });
}
async function listTags({ organizationId, apiClient }) {
return await apiClient(`/api/organizations/${organizationId}/tags`, { method: "GET" });
}
async function createTag({ organizationId, name, color, description, apiClient }) {
return await apiClient(`/api/organizations/${organizationId}/tags`, {
method: "POST",
body: {
name,
color,
description
}
});
}
async function addTagToDocument({ organizationId, documentId, tagId, apiClient }) {
return await apiClient(`/api/organizations/${organizationId}/documents/${documentId}/tags`, {
method: "POST",
body: { tagId }
});
}
//#endregion
export { PAPRA_API_URL, createClient };
//# sourceMappingURL=index.js.map