Include the Javascript SDK like this:
<script src="https://unpkg.com/@deskpro/deskpro-api-client-javascript@2.0.0/dist/index.js"></script> copy
Or you can install it with NPM from: https://www.npmjs.com/package/@deskpro/deskpro-api-client-javascript
Initialize the client
Begin by initializing an instance of DeskproClient
, from the @deskpro/deskpro-api-client-javascript
package, with the URL to your Deskpro instance.
// If you installed with NPM, then you need to require the file
// If you are just hotlinking with a script tag, then DeskproClient will just be available on the window already
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const client = new DeskproClient('http://deskpro.company.com'); copy
Axios is used to make HTTP requests. A default Axios client will be used by the library, but a custom instance may be provided.
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const httpClient = axios.create({
timeout: 1000
});
const client = new DeskproClient('http://deskpro.company.com', httpClient);
// Or use the setter method.
// client.setHTTPClient(httpClient); copy
Requests may be logged by passing a function as the third constructor argument.
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const logger = console.log;
const client = new DeskproClient('http://deskpro.company.com', null, logger);
// Or use the setter method.
// client.setLogger(logger); copy
Authenticating
Many API methods require authentication. Set the ID of the user to authenticate with and either the auth "key" or "token".
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const client = new DeskproClient('http://deskpro.company.com');
// Use the setAuthKey method to authenticate using a key.
const personId = 1;
const authKey = 'dev-admin-code';
client.setAuthKey(personId, authKey); copy
Requests
GET
Sends a GET request to the API.
DeskproClient::get(endpoint, params = {}) : Promise
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const client = new DeskproClient('http://deskpro.company.com');
client.setAuthKey(1, 'dev-admin-code');
client.get('/articles')
.then((resp) => {
console.log(resp.data);
})
.catch((err) => {
console.error(err.message);
});
// Parameters are interpolated into the provided URL.
// The next request will be made to "/articles/101?limit=25".
const params = {
id: 101,
limit: 25
};
client.get('/articles/{id}', params); copy
POST
Sends a POST request to the API.
DeskproClient::post(endpoint, body = null, params = {}) : Promise
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const client = new DeskproClient('http://deskpro.company.com');
client.setAuthKey(1, 'dev-admin-code');
const body = {
title: 'Mary Had a Little Lamb',
content: 'Whose fleece was white as snow.'
};
client.post('/articles', body)
.then((resp) => {
console.log(resp.data);
})
.catch((err) => {
console.error(err.message);
});
```
# PUT
Sends a PUT request to the API.
*DeskproClient::put(endpoint, body = null, params = {}) : Promise*
```javascript
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const client = new DeskproClient('http://deskpro.company.com');
client.setAuthKey(1, 'dev-admin-code');
const body = {
title: 'Mary Had a Little Lamb',
content: 'Whose fleece was white as snow.'
};
const params = {
id: 101
};
client.put('/articles/{id}', body, params)
.then((resp) => {
console.log(resp.data);
})
.catch((err) => {
console.error(err.message);
}); copy
DELETE
Sends a DELETE request to the API.
DeskproClient::del(endpoint, params = {}) : Promise
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const client = new DeskproClient('http://deskpro.company.com');
client.setAuthKey(1, 'dev-admin-code');
const params = {
id: 101
};
client.del('/articles/{id}', params)
.then((resp) => {
console.log(resp.data);
})
.catch((err) => {
console.error(err.message);
}); copy
Batch
Sends a batch request to the API.
DeskproClient::batch(requests) : Promise
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const client = new DeskproClient('http://deskpro.company.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);
}); copy
Custom Request
Sends a request to the API.
DeskproClient::request(method, endpoint, body = null, params = {}, headers = {}) : Promise
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const client = new DeskproClient('http://deskpro.company.com');
client.setAuthKey(1, 'dev-admin-code');
const body = {
title: 'Mary Had a Little Lamb',
content: 'Whose fleece was white as snow.'
};
const params = {
id: 101
};
const headers = {
'X-Custom-Value': 'some value'
}
client.request('PUT', '/articles/{id}', body, params, headers)
.then((resp) => {
console.log(resp.data);
})
.catch((err) => {
console.error(err.message);
}); copy
Default Headers
Sets the headers sent with each request.
DeskproClient::setDefaultHeaders(defaultHeaders) : DeskproClient
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const client = new DeskproClient('http://deskpro.company.com');
client.setAuthKey(1, 'dev-admin-code');
// Send these headers and values with each request made to the API.
client.setDefaultHeaders({
'X-Custom-Value': 'some value'
}); copy
Response
Each of the methods get
, post
, put
, delete
, batch
, and request
returns an object with the properties data
, meta
, and linked
.
const DeskproClient = require('@deskpro/deskpro-api-client-javascript');
const client = new DeskproClient('http://deskpro.company.com');
client.setAuthKey(1, 'dev-admin-code');
client.get('/articles')
.then((resp) => {
console.log(resp.data);
console.log(resp.meta);
console.log(resp.linked);
}); copy
Browser Usage
The client library may be used in the browser as well as Node. The library may be installed using npm
or embedded in a document using the unpkg.com CDN.
<!DOCTYPE>
<html>
<head>
<!-- Import DeskproClient from node_modules -->
<script src="node_modules/@deskpro/deskpro-api-client-javascript/dist/index.js"></script>
<!-- Or import it from CDN -->
<!-- <script src="https://unpkg.com/@deskpro/deskpro-api-client-javascript@2.0.0/dist/index.js"></script> -->
</head>
<body>
<script>
var client = new DeskproClient('http://deskpro.company.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> copy
Please log in or register to submit a comment.