Node Sellsy API wrapper - works in NodeJS and in the browser.
The official Sellsy API is PHP based so here's a JavaScript handy replacement.
It can helps you automate most of Sellsy from their API.
For example i use a Stripe webhook to automate actions in Sellsy.
- Works with your oauth private app id
- Simple promise call for all methods in http://api.sellsy.fr/documentation/methodes
npm i --save node-sellsy
var Sellsy = require('node-sellsy');
var sellsy = new Sellsy({
creds: {
consumerKey: 'myConsumerKey',
consumerSecret: 'myConsumerSecret',
userToken: 'myUserToken',
userSecret: 'myUserSecret'
}
});
var params = {
search: {
contains: 'test',
}
};
sellsy.api({
method: 'Client.getList',
params: params
}).then(data => {
console.log('data', data);
}).catch(e => {
console.log('error:', e);
});
You can access the full Sellsy API using sellsy.api({ method, params })
.
This call returns a promise.
Sellsy API doesnt provide CORS access so here's a drop-in proxy you can deploy on your own to use node-bookeo
on the client : revolunet/sellsy-proxy.
Then, define the endPoint when creating your Sellsy
instance :
var sellsy = new Sellsy({
creds,
endPoint: 'http://path/to/sellsy/proxy'
});
sellsy.customers.create(data)
sellsy.customers.get({ email: '[email protected]' })
sellsy.documents.create(data)
sellsy.documents.createPayment(docType, docId, paymentData)
sellsy.documents.getList(docType, search)
sellsy.documents.getById(docType, docId)
sellsy.documents.updateStep(docType, docId, step)
- npm run readme :
node ./node_modules/node-readme/bin/node-readme.js
- npm run test :
find ./spec -iname '*.spec.js' -exec ./node_modules/.bin/babel-node {} \; | ./node_modules/.bin/tap-spec
- npm run zuul :
./node_modules/zuul/bin/zuul -- spec/**/*.spec.js
- npm run build :
babel -d ./dist ./src
let sellsy = new Sellsy({
creds: {
consumerKey: 'myConsumerKey',
consumerSecret: 'myConsumerSecret',
userToken: 'myUserToken',
userSecret: 'myUserSecret'
}
});
const customerIdent = "1234";
const amountHorsTaxes = 42;
sellsy.customers.get({ ident: customerIdent }).then(customer => {
const documentData = {
document: {
doctype: "invoice",
thirdid: customer.id,
notes: customer.email,
currency: "1",
displayedDate: new Date().getTime() / 1000,
subject: "Sujet de la facture",
tags: "bookeo,stripe"
},
row: {
"1": {
// use 'item' for object from catalog
row_type: "once",
row_name: "titre ligne facture",
row_linkedid: null,
row_notes: "notes ligne facture",
row_tax: 20,
row_unitAmount: amountHorsTaxes,
row_qt: 1
}
}
};
return sellsy.documents.create(documentData);
});
Then you can use
sellsy.documents.updateStep(createdDocument.type, createdDocument.id, 'paid')
to mark invoice as paid and sellsy.documents.createPayment
to record the payment method
Customers.create should call sellsy api
✔ should call API twice
✔ should call Client.create with correct data
✔ should call Client.getList with correct data
Customers.get should call sellsy api
✔ should call API
✔ should call get with correct data
✔ should return first result
sellsy.api should be defined
✔ should be equal
sellsy.api should init call oAuth.OAuth with correct parameters
✔ consumerKey
✔ consumerSecret
sellsy.api post correct data to API
✔ userToken
✔ userSecret
✔ request
✔ io_mode
✔ method
✔ params
Sellsy should use default api endPoint
✔ https://apifeed.sellsy.com/0/
Sellsy should use given api endPoint
✔ http://path.to/proxy/test/
total: 17
passing: 17
duration: 1.8s
Julien Bouquillon [email protected] http://github.com/revolunet and contributors