dms-cmis-client
v1.0.0
Published
Lightweight CMIS DMS client for SAP DMS or any CMIS endpoint.
Downloads
30
Readme
dms-cmis-client
Lightweight CMIS DMS client for SAP DMS or any CMIS-compatible endpoint when you provide an axios-compatible HTTP client.
Install
npm install dms-cmis-clientUsage
const axios = require("axios");
const { CmisDmsClient } = require("dms-cmis-client");
const http = axios.create({
baseURL: "https://dms.example.com/cmis",
auth: { username: "user", password: "pass" }
});
const dms = new CmisDmsClient({ httpClient: http, repositoryId: "repo" });
(async () => {
const folder = await dms.createFolder("Docs");
const doc = await dms.uploadFileBase64(
folder.folderId,
"hello.txt",
"data:text/plain;base64,SGVsbG8h"
);
const file = await dms.getFileBase64(doc.documentId);
console.log(file.fileName, file.contentType);
})();Using SAP destinations (optional)
const cfAxios = require("sap-cf-axios").default;
const { CmisDmsClient } = require("dms-cmis-client");
const http = cfAxios("my-destination");
const dms = new CmisDmsClient({ httpClient: http, repositoryId: "repo" });Examples
Crear carpeta y subcarpeta
const root = await dms.createFolder("Contracts");
const year = await dms.createFolder("2026", root.folderId);
console.log(year.folderId);Subir un archivo (base64)
const folder = await dms.createFolder("Docs");
const pdf64 = "data:application/pdf;base64,JVBERi0xLjQK...";
const uploaded = await dms.uploadFileBase64(folder.folderId, "report.pdf", pdf64);
console.log(uploaded.documentId);Subir un archivo (Buffer/stream)
const fs = require("fs");
const buffer = fs.readFileSync("./local/path/report.pdf");
await dms.uploadFileBuffer(folder.folderId, "report.pdf", buffer, "application/pdf");Descargar archivo como Buffer
const fileBuffer = await dms.getFile(uploaded.documentId);
// Ejemplo: guardar en disco
require("fs").writeFileSync("./download/report.pdf", fileBuffer);Obtener archivo como base64 (incluye nombre y mime)
const file = await dms.getFileBase64(uploaded.documentId);
console.log(file.fileName, file.contentType);Listar ficheros de una carpeta
const files = await dms.getFilesInFolder(folder.folderId);
files.forEach(f => console.log(f.name, f.fileSize));Borrar ficheros o carpetas
await dms.deleteFile(uploaded.documentId);
// Elimina la carpeta y su contenido
await dms.deleteFolder(folder.folderId, true);API
createFolder(name, parentId)->{ workflowfolderId, folderId, folderName }getFile(objectId)->BuffergetFileInfo(objectId)-> CMIS metadatagetFileBase64(objectId)->{ fileName, contentType, fileContent }getFolderInfo(folderId)-> CMIS propertiesuploadFileBase64(folderId, fileName, base64Content)->{ documentId, documentName }uploadFileBuffer(folderId, fileName, buffer, contentType)->{ documentId, documentName }uploadTemporaryFileBase64(fileName, base64Content, tempFolderName?)uploadTemporaryFileBuffer(fileName, buffer, contentType?, tempFolderName?)deleteFolder(folderId, deleteAll?)deleteFile(fileId, folderPath?)getFilesInFolder(folderId)-> list of attachments
Notes
- Provide your own HTTP client (axios or sap-cf-axios). The client must be pre-configured with base URL and authentication.
- CMIS paths use
/rootor/{repositoryId}/rootdepending onrepositoryId. - Node 18+ recommended. Form-data is already bundled as a dependency.
