--- title: "Overview" url: https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/overview/ description: "Node.js SDK Overview" last_updated: 2026-09-08T11:07:33Z service: All Services type: general related_links: - name: "Catalyst Java SDK" url: /en/sdk/java/v1/overview/ - name: "JavaScript SDK" url: /en/sdk/javascript/v1/auth-config/node-consideration/ - name: "API Code Reference" url: /en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser - name: "Catalyst Functions" url: /en/serverless/help/functions/introduction --- # Node JS SDK > **Note:** This SDK is currently in deprecation. Migrate to [JavaScript SDK](https://docs.catalyst.zoho.com/en/sdk/javascript/v1/auth-config/node-consideration/) now. ## Overview Node JS SDk has all the necessary methods to access the Catalyst Components and services. It allows you to declare and define Catalyst components whose behavior are predefined. For example, each Catalyst component has its equivalent NodeJS object in SDK and API equivalents are called methods in NodeJS. ### Include Catalyst SDK in Project If you choose **install dependencies** option in the CLI while initializing a Node.js function, the Node.js SDK will automatically be included in the generated sample boilerplate code. However, you can also manually include it in your project, by executing the following command from the function's root directory in the CLI: ```json npm install zcatalyst-sdk-node ``` You can also install the latest supported version in this way: ```json npm install zcatalyst-sdk-node@2.5.0 ``` > **Note:** All versions of the `zcatalyst-sdk-node` package earlier than 2.5.0, including beta releases, are now deprecated. Please upgrade to the latest version to ensure full access to all Node.js methods in your application. ### Initialize the SDK Catalyst Node.js SDK must be initialized which would return an object. You can access the catalyst components of the current project thrugh this returned object. The different initialization methods for different type of functions are as given below. **SDK Initialization in Advanced I/O Functions with the Basic Template** ```javascript var catalyst = require('zcatalyst-sdk-node'); module.exports = (req, res) => { var app = catalyst.initialize(req); //This app variable is used to access the catalyst components. //You can refer the SDK docs for code samples. //Your business logic comes here } ``` **SDK Initialization in Advanced I/O Functions with Express.js** ```javascript var catalyst = require('zcatalyst-sdk-node'); const express = require('express'); const expressApp = express(); expressApp.get('/',(req,res)=> { var app = catalyst.initialize(req); //This app variable is used to access the catalyst components. //You can refer the SDK docs for code samples. //Your business logic comes here }); module.exports=expressApp; ``` **SDK Initialization in BasicIO Functions** ```javascript const catalyst = require('zcatalyst-sdk-node'); module.exports = (context, basicIO) => { const app = catalyst.initialize(context); //This app variable is used to access the catalyst components. //You can refer the SDK docs for code samples. //Your business logic comes here } ``` **SDK Initialization in Event Functions** ```javascript const catalyst = require('zcatalyst-sdk-node'); module.exports = (event, context) => { const app = catalyst.initialize(context); //This app variable is used to access the catalyst components. //You can refer the SDK docs for code samples. //Your business logic comes here } ``` **SDK Intialization in Cron Functions** ```javascript const catalyst = require('zcatalyst-sdk-node'); module.exports = (cronDetails, context) => { const app = catalyst.initialize(context); //This app variable is used to access the catalyst components. //You can refer the SDK docs for code samples. //Your business logic comes here } ``` Now you can access the components using the initialized variable. ### Initialize SDK With Scopes Catalyst allows you to initialize the SDK in a project using the following scopes: * **Admin**: You have unrestricted access to all the components and their respective functionalities. For example, you have complete access to the [Data Store](https://docs.catalyst.zoho.com/en/cloud-scale/help/data-store/introduction/) to perform all operations like Read, Write, Delete, etc. * **User**: You can restrict access to components, and specific functionalities. For example, you can provide Read access alone to Data Store. > **Note:** * It is not mandatory for you to initialize the projects with scopes. By default, a project that is initialized will have *Admin* privileges. * Ensure you have initialized the Catalyst SDK with the appropriate scope while you engineer your business logic. The permissions you define for your scope control your end-user's actions. * Scopes only apply to operations related [Data Store](https://docs.catalyst.zoho.com/en/cloud-scale/help/data-store/introduction/), and [ZCQL](https://docs.catalyst.zoho.com/en/cloud-scale/help/zcql/introduction/). * Depending on how you engineer your business logic, you can decide if your end-users can perform *Admin* or *User* actions. This is decided based on the [role](https://docs.catalyst.zoho.com/en/cloud-scale/help/authentication/user-management/roles/introduction/) assigned to your end-user when they sign up to your application in Catalyst Authentication. The permissions for the roles can be configured in the *Scopes & Permissions* section of the [Data Store](https://docs.catalyst.zoho.com/en/cloud-scale/help/data-store/scopes-and-permissions/). The SDK snippets below will allow you to initialize the SDK using either *Admin* or *User* scope, and perform a **SELECT** query in the Data Store: * **Initialize the SDK with Admin Scope** ```javascript const catalyst = require('zcatalyst-sdk-node'); module.exports = async (req, res) => { const app = catalyst.initialize(req); const adminApp = catalyst.initialize(req, { scope: 'admin'}); // catalyst app object with admin scope await adminApp.zcql().executeZCQLQuery('select * from test'); } ``` * **Initialize the Catalyst project with User Scope** ```javascript const catalyst = require('zcatalyst-sdk-node'); module.exports = async (req, res) => { const app = catalyst.initialize(req); const userApp = catalyst.initialize(req, { scope: 'user'}); // catalyst app object with user scope await userApp.zcql().executeZCQLQuery('select * from test'); } ```