Deskpro API JavaScript Client
JavaScript client for use with the Deskpro API.

Installing
npm install --save @deskpro/deskpro-api-client-javascript
Basic Usage
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const client = new DeskproClient('http://deskpro-dev.com');
client.get('/articles')
.then((resp) => {
console.log(resp.data);
console.log(resp.meta);
})
.catch((err) => {
console.error(err.message);
});
Posting values
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const client = new DeskproClient('http://deskpro-dev.com');
client.setAuthKey(1, 'dev-admin-code');
const body = {
title: 'This is a title',
content: 'This is the content',
content_input_type: 'rte',
status: 'published'
};
client.post('/articles', body)
.then((resp) => {
console.log(resp.data);
})
.catch((err) => {
console.error(err.message);
});
Uploading files
Sending values using multipart/form-data, for instance to upload files, is done by passing an object with the property "multipart" to the post()
or put()
methods.
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const FormData = require('form-data');
const fs = require('fs');
const client = new DeskproClient('http://deskpro-dev.com');
client.setAuthKey(1, 'dev-admin-code');
const fileStream = fs.createReadStream('test.gif');
const form = new FormData();
form.append('file', fileStream, 'test.gif');
const body = {
multipart: form
};
client.post('/blobs/temp', body)
.then((resp) => {
console.log(resp.data);
})
.catch((err) => {
console.error(err.message);
});
Batch request
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const client = new DeskproClient('http://deskpro-dev.com');
client.setAuthKey(1, 'dev-admin-code');
client.batch({
one: {
method: 'GET',
url: '/articles/105'
},
two: '/articles/106'
}).then((resp) => {
console.log(resp.one.data);
console.log(resp.two.data);
})
.catch((err) => {
console.error(err.message);
});
Interpolating URLs
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const client = new DeskproClient('http://deskpro-dev.com');
client.setAuthKey(1, 'dev-admin-code');
const params = {
id: 5,
parentId: 101,
limit: 25,
offset: 100
};
client.get('/articles/{parentId}/{id}', params);
Browser Usage
DeskproClient may also be used in the browser.
<!DOCTYPE>
<html>
<head>
<script src="node_modules/@deskpro/deskpro-api-client-javascript/dist/index.js"></script>
</head>
<body>
<script>
var client = new DeskproClient('http://deskpro-dev.com');
client.setAuthKey(1, 'dev-admin-code');
client.get('/articles')
.then(function(resp) {
console.log(resp.data);
})
.catch(function(err) {
console.error(err.message);
});
</script>
</body>
</html>
Use the setDefaultHeaders()
method to set headers that get sent with each request.
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const client = new DeskproClient('http://deskpro-dev.com');
client.setAuthKey(1, 'dev-admin-code');
client.setDefaultHeaders({
'X-Custom-Value': 'foo'
});
client.get('/articles')
.then((resp) => {
console.log(resp.data);
})
.catch((err) => {
console.error(err.message);
});
Logging
Pass a function to the setLogger()
method to enable request logging.
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const client = new DeskproClient('http://deskpro-dev.com');
client.setAuthKey(1, 'dev-admin-code');
client.setLogger(console.log);
client.get('/articles')
.then((resp) => {
console.log(resp.data);
})
.catch((err) => {
console.error(err.message);
});
Axios
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const client = new DeskproClient('http://deskpro-dev.com');
client.setAuthKey(1, 'dev-admin-code');
client.getHTTPClient().defaults.timeout = 2500;
client.get('/articles')
.then((resp) => {
console.log(resp.data);
})
.catch((err) => {
console.error(err.message);
});
For debugging purposes, the request, response, and exception generated by the last operation may be retrieved for inspection.
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const client = new DeskproClient('http://deskpro-dev.com');
client.setAuthKey(1, 'dev-admin-code');
client.get('/articles')
.then(() => {
console.log(client.getLastHTTPRequest());
console.log(client.getLastHTTPResponse());
console.log(client.getLastHTTPRequestException());
});
Testing
Tests are run using the npm "test" script.
npm test