No description
  • TypeScript 99.9%
  • JavaScript 0.1%
Find a file
ulysia e785974cf4 fix: restore git-URL installs and make the deprecation notice version-neutral
Two things surfaced while auditing this branch for a major release.

lib/ stopped being committed in 04dc178 but nothing rebuilds it on
install, so `npm install git+ssh://git.derg.cz/content-server/cs-rest`
would have produced a package with no lib/ at all - every entry point
missing. That path worked before, and the repository/homepage fields
point at it. A `prepare` script fixes it: npm and yarn run it for git
dependencies and local installs, and not for registry tarballs, which
already ship a built lib/.

The deprecation notice named 4.0.0 as the removal point, which
self-contradicts if this branch ships as 4.0.0 - the shims would arrive
in 4.0.0 announcing their removal in 4.0.0. Reworded to "a future major
release", which also survives the removal point moving.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 14:01:33 +02:00
.github/workflows fix: keep emitted declarations free of the untyped schema import 2026-09-01 10:56:46 +02:00
scripts feat: add API spec 2.0.2 and regenerate schema types 2026-08-04 10:08:07 +02:00
specs feat: add API spec 2.0.2 and regenerate schema types 2026-08-04 10:08:07 +02:00
src fix: restore git-URL installs and make the deprecation notice version-neutral 2026-09-01 14:01:33 +02:00
.gitignore build: stop tracking lib/, ship it via a files allowlist 2026-08-04 10:37:56 +02:00
LICENSE session $get 2023-12-20 15:31:46 +01:00
package.json fix: restore git-URL installs and make the deprecation notice version-neutral 2026-09-01 14:01:33 +02:00
README.md feat: republish as @ulyxie/cs-rest 2026-08-02 23:14:09 +02:00
tsconfig.json refactor for v3 2024-05-01 14:21:53 +02:00
yarn.lock fixed issue with add document 2024-06-07 10:14:08 +02:00

@ulyxie/cs-rest

Simple authentication and REST calls for OpenText Content Server.

Note

This is a fork of @kweli/cs-rest by Christopher Meyer / Kwe.li GmbH, republished under the @ulyxie scope 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 OTCSTicket token automatically (minimising token expiration errors)
  • Simplifies POST, PUT, & PATCH requests (since Content Server doesn't support the application/json content type)
  • Based on the axios HTTP client
  • Works with Node.js and the browser

Breaking Changes v2

  • The baseURL parameter was renamed baseUrl.

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);

Credits

License

MIT