{"id":13665,"library":"node-sellsy","title":"Sellsy API Wrapper","description":"The `node-sellsy` library serves as a JavaScript wrapper for the Sellsy API, designed for both Node.js and browser environments. It provides a promise-based interface to interact with Sellsy's largely PHP-centric API, facilitating automation of tasks within the Sellsy platform. Developers can utilize a generic `sellsy.api({ method, params })` call for direct access to all documented Sellsy API methods, alongside higher-level abstractions for common operations on customer and document entities, such as `sellsy.customers.create` or `sellsy.documents.getList`. The latest stable version is 1.5.5, with the last update released in November 2021. A key differentiator is enabling JavaScript developers to integrate with Sellsy without relying on PHP, offering features like OAuth private app authentication. It handles the underlying HTTP requests and response parsing, returning data in a structured JavaScript object format.","status":"abandoned","version":"1.5.5","language":"javascript","source_language":"en","source_url":"https://github.com/revolunet/node-sellsy","tags":["javascript","sellsy"],"install":[{"cmd":"npm install node-sellsy","lang":"bash","label":"npm"},{"cmd":"yarn add node-sellsy","lang":"bash","label":"yarn"},{"cmd":"pnpm add node-sellsy","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"This package is a CommonJS module. Use `require` to import the main `Sellsy` class for Node.js environments.","symbol":"Sellsy","correct":"const Sellsy = require('node-sellsy');"},{"note":"Direct ES module `import` syntax (e.g., `import Sellsy from 'node-sellsy'`) is not officially supported and will likely result in `undefined` or a module error without specific build tooling or dynamic import.","wrong":"import Sellsy from 'node-sellsy';","symbol":"Sellsy","correct":"// For ESM, you might need a wrapper or dynamic import: const Sellsy = (await import('node-sellsy')).default;"},{"note":"This library does not use named exports. Attempting a named `import` will result in `Sellsy` being `undefined`.","wrong":"import { Sellsy } from 'node-sellsy';","symbol":"Sellsy","correct":"// No named exports are provided by this CommonJS module."}],"quickstart":{"code":"const Sellsy = require(\"node-sellsy\");\n\nconst sellsy = new Sellsy({\n  creds: {\n    consumerKey: process.env.SELLSY_CONSUMER_KEY ?? \"YOUR_CONSUMER_KEY\",\n    consumerSecret: process.env.SELLSY_CONSUMER_SECRET ?? \"YOUR_CONSUMER_SECRET\",\n    userToken: process.env.SELLSY_USER_TOKEN ?? \"YOUR_USER_TOKEN\",\n    userSecret: process.env.SELLSY_USER_SECRET ?? \"YOUR_USER_SECRET\",\n  },\n});\n\nconst params = {\n  search: {\n    contains: \"test\",\n  },\n};\n\nsellsy\n  .api({\n    method: \"Client.getList\",\n    params: params,\n  })\n  .then((data) => {\n    console.log(\"Successfully fetched client data:\", data);\n  })\n  .catch((e) => {\n    console.error(\"Error fetching client data:\", e);\n  });","lang":"javascript","description":"Initializes the Sellsy API client with credentials from environment variables and fetches a list of clients matching a 'test' search term using the generic API method."},"warnings":[{"fix":"Deploy and configure a proxy server (e.g., `revolunet/sellsy-proxy` from GitHub) and specify its endpoint in the `Sellsy` client configuration using the `endPoint` option.","message":"Using `node-sellsy` directly in a browser environment requires a custom proxy to circumvent Sellsy API's lack of CORS support, adding operational complexity.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Run in an environment with an older Node.js version compatible with the library, or consider migrating to an actively maintained alternative if available. Proceed with caution on modern Node.js.","message":"The library's `engines` configuration specifies Node.js `>=0.10.0`, indicating it has not been tested or updated for modern Node.js versions (e.g., v16, v18, v20+). Compatibility issues or security vulnerabilities may arise on newer runtimes.","severity":"breaking","affected_versions":"*"},{"fix":"Evaluate the ongoing need for Sellsy API integration and investigate alternative, actively maintained libraries or consider building direct API integrations if maintenance is critical.","message":"The `node-sellsy` library appears to be unmaintained, with its last release in November 2021. This implies a lack of future updates, bug fixes, or security patches, making it unsuitable for new projects or critical applications.","severity":"deprecated","affected_versions":">=1.5.5"},{"fix":"Use CommonJS `require()` syntax. For ES modules, consider dynamic `import()` or configuring your build system (e.g., Webpack, Rollup) to handle CommonJS modules.","message":"The library is exclusively a CommonJS module. It does not provide native ES module exports, which can lead to import errors or require additional transpilation/bundling steps in modern ES module-driven Node.js or browser projects.","severity":"gotcha","affected_versions":"*"},{"fix":"Always store API credentials securely using environment variables (e.g., `process.env.SELLSY_CONSUMER_KEY`), a secrets management service, or a dedicated configuration system, injecting them at runtime.","message":"Credentials (consumerKey, consumerSecret, userToken, userSecret) are shown directly in code examples. Storing sensitive API credentials directly in source code or public repositories is a severe security risk.","severity":"gotcha","affected_versions":"*"}],"env_vars":null,"search_vec":"'1.5.5':91 '2021':99 'abstract':72 'access':61 'alongsid':68 'api':2,17,41,66 'app':120 'authent':121 'autom':43 'base':30 'browser':23 'call':58 'centric':40 'common':74 'custom':77 'data':132 'design':18 'develop':50,106 'differenti':102 'direct':60 'document':64,79 'enabl':104 'entiti':80 'environ':24 'facilit':42 'featur':116 'format':138 'generic':54 'handl':123 'higher':70 'higher-level':69 'http':126 'integr':108 'interact':33 'interfac':31 'javascript':12,105,136,139 'key':101 'larg':37 'last':94 'latest':87 'level':71 'librari':8 'like':117 'method':56,67 'node':6 'node-sellsi':5 'node.js':21 'novemb':98 'oauth':118 'object':137 'offer':115 'oper':75 'param':57 'pars':130 'php':39,114 'php-centric':38 'platform':49 'privat':119 'promis':29 'promise-bas':28 'provid':26 'releas':96 'reli':112 'request':127 'respons':129 'return':131 'sellsi':1,7,16,35,48,65,110,140 'sellsy.api':55 'sellsy.customers.create':83 'sellsy.documents.getlist':85 'serv':9 'stabl':88 'structur':135 'task':45 'under':125 'updat':95 'util':52 'version':89 'within':46 'without':111 'wrapper':3,13","created_at":"2026-04-20T01:55:40.411201+00:00","updated_at":"2026-04-20T01:55:40.411201+00:00","problems":[{"fix":"Either convert your module to CommonJS (`.js` file without `\"type\": \"module\"` in `package.json` or `.cjs` extension) or use dynamic `import()`: `const Sellsy = (await import('node-sellsy')).default;`","cause":"Attempting to use `require` in an ES module context in Node.js.","error":"ReferenceError: require is not defined"},{"fix":"Ensure you are using the correct CommonJS `require` syntax: `const Sellsy = require('node-sellsy');`","cause":"Incorrect ES module import syntax (e.g., `import { Sellsy } from 'node-sellsy';` or `import Sellsy from 'node-sellsy';`) for a CommonJS module, or trying to destructure a default export.","error":"TypeError: Sellsy is not a constructor"},{"fix":"Deploy a CORS proxy (e.g., `revolunet/sellsy-proxy`) and configure the `endPoint` option when initializing the `Sellsy` client.","cause":"Attempting to use the `Sellsy` client directly from a browser environment without a proxy.","error":"Error: Sellsy API doesnt provide CORS access"},{"fix":"Double-check all four OAuth credentials for typos or ensure they are up-to-date and valid in your Sellsy API application settings.","cause":"Incorrect or expired OAuth credentials (consumerKey, consumerSecret, userToken, userSecret) provided to the Sellsy client.","error":"error: invalid signature"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"","cli_version":null,"type":"library","homepage":"https://www.sellsy.com","github":"https://github.com/revolunet/node-sellsy","docs":null,"changelog":null,"pypi":null,"npm":"https://www.npmjs.com/package/node-sellsy","openapi_spec":null,"status_page":null,"smithery":null,"categories":["crm-productivity","http-networking","auth-security"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-17","next_check":"2026-07-18","install_tag":null}}