Never Play Metal

    node-sellsy

    1.5.5 • Public • Published

    node-sellsy

    npm license github-issues

    nodei.co

    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.

    Features

    QuickStart

    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);
      });

    API

    You can access the full Sellsy API using sellsy.api({ method, params }).

    This call returns a promise.

    Browser usage

    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",
    });

    Higher-level API methods :

    Customer

    • sellsy.customers.create(data)
    • sellsy.customers.get({ email: 'customer@gmail.com' })

    Document

    • 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)

    Scripts

    • 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

    Examples

    Create an invoice

    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

    Tests

      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
    

    Author

    Julien Bouquillon julien@bouquillon.com http://github.com/revolunet and contributors

    License

    Keywords

    Install

    npm i node-sellsy

    DownloadsWeekly Downloads

    785

    Version

    1.5.5

    License

    MIT

    Unpacked Size

    17.5 kB

    Total Files

    7

    Last publish

    Collaborators

    • revolunet