- TypeScript 97.7%
- JavaScript 2.3%
Fork of @kweli/cs-rest, renamed so the OpenText Content Server n8n nodes depend on a package we control. The source is unchanged from upstream v3.1.4 — this commit only re-badges the package and points it at the Forgejo repository. MIT licence and the Kwe.li copyright notice are retained, and the README credits the original author. Adds CI mirroring the n8n node repo: build on pull requests, and staged publishing to npmjs on v* tags for a maintainer to approve with 2FA. Both use yarn via Corepack, since this package has a yarn v1 lockfile and no package-lock.json for `npm ci` to consume. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| .github/workflows | ||
| lib | ||
| src | ||
| .gitignore | ||
| LICENSE | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| yarn.lock | ||
@ulyxie/cs-rest
Simple authentication and REST calls for OpenText Content Server.
Note
This is a fork of
@kweli/cs-restby Christopher Meyer / Kwe.li GmbH, republished under the@ulyxiescope so that the OpenText Content Server n8n nodes depend on a package we control. MIT licensed; the original copyright notice is retained in LICENSE.Version 3.1.4 of this fork is byte-identical to upstream 3.1.4 — no functional changes yet. If you are not tied to the n8n nodes, use the original.
Features
- Provides a simplified interface for managing authentication with the OpenText Content Server REST API
- Refreshes the
OTCSTickettoken automatically (minimising token expiration errors) - Simplifies POST, PUT, & PATCH requests (since Content Server doesn't support the
application/jsoncontent type) - Based on the axios HTTP client
- Works with Node.js and the browser
Breaking Changes v2
- The
baseURLparameter was renamedbaseUrl.
Installing
Using npm:
npm install @ulyxie/cs-rest
Using yarn:
yarn add @ulyxie/cs-rest
Example
Authenticate with a username and password and get the details of a node:
import { Session } from "@ulyxie/cs-rest";
// session wraps an axios instance
const session = new Session({
baseUrl: "https://.../cs.exe",
username: "Admin",
password: "******",
});
// a Session instance can issue authenticated requests to Content Server
const response = await session.get("/api/v1/nodes/2000");
Authenticate with an OTCSTicket:
const session = new Session({
baseUrl: "https://.../cs.exe",
otcsticket: "<token>",
});
cs-rest API
Requests can be made with the get, post, put, patch, delete, and options methods on the Session instance. These have the same interface as the respective methods in axios.
Content Server returns a fresh OTCSTicket with each successful API call. The Session instance automatically retains it for the subsequent request.
POST, PUT, & PATCH
The OpenText Content Server REST API doesn't accept requests that use the application/json content type. This means POST, PUT, & PATCH requests need to use a content type of multipart/form-data, which makes writing a request a little more verbose. For example, to create a new folder:
const formData = new FormData();
formData.append("type", 0);
formData.append("parent_id", 2000);
formDAta.append("name", "My New Folder");
const response = await session.post("api/v2/nodes", formData);
The Session class provides a postForm (also putForm and patchForm) method to simplify this:
const response = await session.postForm("api/v2/nodes", {
type: 0,
parent_id: 2000,
name: "My New Folder",
});
axios instance
The underlying axios instance is available if these methods don't suffice:
const axios = session.axios;
Wrapper
The Session class provides a few convenience methods for performing commonly used REST requests. By no means is this complete, and it's possible the API will change in the future.
For example, there is a method for creating a new folder:
const response = await session.nodes.addFolder(2000, "My New Folder");
A method also exists for uploading a document, where file is either:
- a browser File object (e.g,. from drag and drop); or
- a local file path, when using Node.js (e.g.,
c:/temp/file.pdf.
const response = await session.nodes.addDocument(2000, file);