@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
Installing
Using npm:
$ npm install @kweli/cs-rest
Using yarn:
$ yarn add @kweli/cs-rest
Using unpkg CDN:
<script src="https://cdn.jsdelivr.net/npm/es6-promise@4/dist/es6-promise.auto.min.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="https://unpkg.com/@kweli/cs-rest"></script>
Example
Authenticate with a username and password and get the details of a node:
const { Session } = require('@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
Thin 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)
See the src/
directory for more examples.