@kweli/cs-rest
v3.1.4
Published
Simple authentication and REST calls for OpenText Content Server.
Downloads
207
Maintainers
Readme
@kweli/cs-rest
Simple authentication and REST calls for OpenText Content Server.
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 renamedbaseUrl
.
Installing
Using npm:
npm install @kweli/cs-rest
Using yarn:
yarn add @kweli/cs-rest
Example
Authenticate with a username and password and get the details of a node:
import { Session } from "@kweli/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);