# v2 -------------------------------------------------------------------------------- title: "Overview" description: "Node.js SDK Overview" last_updated: "2026-09-29T06:07:16.251Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/overview/" service: "All Services" related: - Catalyst Java SDK (/en/sdk/java/v1/overview/) - JavaScript SDK (/en/sdk/javascript/v1/auth-config/node-consideration/) - API Code Reference (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) - Catalyst Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Node JS SDK Note: This SDK is currently in deprecation. Migrate to JavaScript SDK 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: npm install zcatalyst-sdk-node You can also install the latest supported version in this way: npm install zcatalyst-sdk-node@2.5.0 <br> 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. 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 } 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; 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 } 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 } 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 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, and ZCQL. * 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 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. 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** 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** 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'); } -------------------------------------------------------------------------------- title: "Upgrade Node.js SDK" description: "This page describes the steps to upgrade the Node.js SDK to the latest supported version in your code" last_updated: "2026-09-29T06:07:16.252Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/upgrade-sdk/" service: "All Services" related: - Catalyst Java SDK (/en/sdk/java/v1/overview/) - JavaScript SDK (/en/sdk/javascript/v1/auth-config/node-consideration/) - API Code Reference (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) - Catalyst Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Upgrade Node.js SDK Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst constantly endeavours to provide you with the latest, most relevant, and secure SDK packages to ensure you code your applications with as much ease as possible. We also upgrade our SDK support based on the upgrades in the technology. That is, when a new version of Node.js is released, Catalyst ensures we implement it in our SDK toolkit. This means that from time to time, Catalyst will upgrade its SDK version to provide you with the best coding support. We strongly urge you to keep track of the latest developments in Catalyst SDKs from our Release Notes section and upgrade your SDK packages to the latest versions. We will also be posting our *bug fixes*, should any arise, in our **Release Notes**. Note: If an immediate upgrade is required due to deprecation reasons, we will ensure you are notified on time via email to perform the necessary upgrades. Generally, it is highly recommended that you always upgrade your SDK to the latest version. ### Steps to Upgrade Your SDK There are two methods you can use to upgrade your Node.js SDK: 1. Using the npm update command. 2. Using the npm install command. #### Using npm update Command 1. Launch your terminal and navigate to the Node.js function's source directory. For example, consider you have an application named "*Pets Conglomerate*" in the directory **/Users/user/apps/petsConglomerate**. In this application, you have a function named "*dogs_spotted*". You need to navigate to the function's source directory, which would appear like this: **/Users/user/apps/petsConglomerate/functions/dogs_spotted** 2. Execute the following command npm update zcatalyst-sdk-node This will perform the required update, and the latest version of zcatalyst-sdk-node can be used. Note: You need to apply the same steps for every Node.js function present in your project. #### Using npm install command Note: The npm install command can be used to both install a new package and update an existing package. 1. Launch your terminal and navigate to the Node.js function's source directory. For example, consider you have an application named "*Pets Conglomerate*" in the directory **/Users/user/apps/petsConglomerate**. In this application, you have a function named "*dogs_spotted*". You need to navigate to the function's source directory, which would appear like this: **/Users/user/apps/petsConglomerate/functions/dogs_spotted** 2. Execute the following command npm install -save zcatalyst-sdk-node@latest<br /> Note: * The @latest tag is optional. However, we do recommend that you include it while performing the install. * You need to apply the same steps for every Node.js function present in your project. ### Install a Specific Package To install a specific SDK version's package: 1. Launch your terminal and navigate to the Node.js functions source directory. 2. Execute the following command with your required SDK version npm install -save zcatalyst-sdk-node@2.5.1<br /><br /> Note: It is always recommended that you install the latest and more stable version of the SDK rather than a specific version. -------------------------------------------------------------------------------- title: "Integrate SDK in Third-Party Apps" last_updated: "2026-09-29T06:07:16.252Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/integrate-sdk-in-third-party-apps/" service: "All Services" related: - Catalyst Environments (/en/deployment-and-billing/environments/introduction/) - Catalyst Cloud Scale Authentication (/en/cloud-scale/help/authentication/introduction/) - Catalyst Cloud Scale Stratus (/en/cloud-scale/help/stratus/introduction/) -------------------------------------------------------------------------------- # Catalyst Node.js SDK Integration in Third-Party Applications Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. You can integrate and use the Catalyst Node.js SDK methods in applications deployed outside the Catalyst environment. Say, a React app hosted on Vercel using a Flask backend (running outside Catalyst) can upload documents to Catalyst Cloud Scale Stratus or a data pipeline running on Amazon Web Services EC2 can push customer data into Catalyst Cloud Scale Data Store using Catalyst Cloud Scale ZCQL queries using the respective Node.js SDK operations. These are just a few common use cases where external applications can securely interact with Catalyst components without being deployed within the Catalyst platform. We have provided the code snippet to help you integrate the Catalyst Node.js SDK with external applications. However, before implementing the code in your application, please review the following prerequisites. ### Prerequisites for the SDK Integration To integrate the Catalyst Node.js SDK with your external application, ensure you have the following information: * **Project ID:** The unique identifier of your Catalyst project. * **ZAID (Zoho Account ID):** A unique portal identifier assigned by Catalyst to link your project with the Catalyst environment (development or production). * **Environment:** The target environment (development or production) of your Catalyst project. * **OAuth Credentials:** This is required to authenticate and authorize your external application via Catalyst’s self-client portal to access Catalyst components. You will need the following: 1. Client ID 2. Client Secret 3. Refresh Token After you fetch these values , you can proceed with integrating the Node.js SDK into your application. <br> ### Steps to Integrate Now, let's look at how to fetch each of these values and configure them in the code snippet. Please ensure you follow the steps outlined below: 1. **Create a project in the Catalyst Console:** You can create a new Catalyst project in the console by using the steps mentioned in this help page. 2. **Retrieve the Project ID:** Once you have created your project, you will need to make a note of the **Project ID**. The Project ID is the unique ID of your project that will be created automatically during the project’s creation. You can find it by clicking the **Settings** icon located in the top-right corner of the Catalyst console. In the **Settings** screen, navigate to **Project Settings** and select **General**. You can view and make a note of the Project ID from this section, as shown in the screenshot below. <br> 3. **Retrieve the ZAID:** You will need to include your project’s **ZAID** in the code snippet provided in this section. The **ZAID** is a unique portal identifier assigned by Catalyst to link your project with the required Catalyst environment (development or production). Learn more about Catalys environments. To retrieve the ZAID, setting up the Catalyst CloudScale Authentication component is mandatory. However, using it for your application's authentication flow is optional. To fetch the ZAID: i. Navigate to the Catalyst CloudScale service in the console and under **Security & Identity**, select **Authentication**. <br> ii. You will need to set up Native Catalyst Authentication, where Catalyst manages the entire authentication process for you, eliminating the need for any additional coding or infrastructure management on your part. iii. Click **Set Up**. <br> iv. Select the **Hosted authentication** type, which enables you to host your login element on dedicated pages of your application. You can configure and design the authentication from the console, and Catalyst will render it for your application and handle all the backend requirements. <br> v. You must enable the Public Signup option to display the signup feature in your login component, allowing new users to register and access your application. You can refer to the hosted authentication help page for a detailed step-by-step setup guide. <br> vi. In the confirmation screen, click **Yes, proceed**. <br> vii. You can enable any of the supported social login options listed below and retrieve the corresponding **ZAID** value from the selected provider. Learn how to obtain the ZAID for a specific social login. Note: Social login providers, such as Google, Microsoft, LinkedIn, and Facebook, are supported for retrieving the ZAID; however, Zoho login is not supported for this purpose. <br> Learn more about this hosted authentication type.<br> 4. **Register a Self Client Application:** You will need to obtain the **Refresh Token**, **Client ID**, and **Client Secret** to authenticate and authorize your application to access Catalyst resources on behalf of your application's user. For fetching the above required items, you must first register your application as a self-client in API console. i. Log in to the API console and click on **Self-client**. ii. Configure the scope of the self-client application based on the operations your application needs to perform in Catalyst. Learn more about available scopes. iii. Provide the required scope, add an appropriate description, and click **Create**. iv. The grant token will be generated. Make sure to copy and store it securely, as this is a one-time process, and the token cannot be retrieved from the console again. Learn more about generating a grant token. v. Switch to the **Client Secret** tab and note down the client ID and the client secret details. vi. You can generate the access and refresh token by using the request in this help page. You can also refresh the access token by using the steps listed in this page. After you have noted all the values mentioned above, you can configure them in the code snippet as shown below and integrate Node.js SDK into your application. The code below demonstrates this with the example of fetching buckets from Catalyst CloudScale Stratus. <br> ### Code Snippet var catalyst = require("zcatalyst-sdk-node"); const express = require("express"); const app = express(); const port = 3006; const project_id = "PROJECT_ID"; //Provide Project ID value here const project_key = "ZAID"; //Provide ZAID value here const environment = "Development"; //Provide value as either "Development" or "Production" const credentials = { refresh_token: "YOUR_REFRESH_TOKEN", //Provide refresh token value here client_id: "CLIENT_ID", //Provide client ID value here client_secret: "CLIENT_SECRET", //Provide client secret value here }; const CatalystCred = catalyst.credential.refreshToken(credentials); app.get("/listbuckets", async (req, res) => { try { req.project_id = project_id; req.project_key = project_key; req.environment = environment; req.credential = CatalystCred; let catalystApp = catalyst.initializeApp(req); const stratus = catalystApp.stratus(); const bucket_data = await stratus.listBuckets(); res.send(bucket_data); res.end(); } catch (err) { console.log(err.toString()); res.send(err); res.end(); } }); app.listen(port, async () => { console.log(`Server running on http://localhost:${port}`); }); ## Cloud Scale ### Authentication -------------------------------------------------------------------------------- title: "Get Authentication Instance" description: "This page describes the method to create a component instance in your NodeJS application with sample code snippets.." last_updated: "2026-09-29T06:07:16.253Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/authentication/get-component-instance/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Authentication Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst Authentication features in Node.js SDK enable you to add end-users to your Catalyst serverless applications, fetch user details, manage their passwords, or delete them permanently. You can perform additional configurations on user accounts and roles, and manage the authentication of your application from the remote console. ### Get a Component Instance You can create a userManagement component reference as shown below. This will not fire a server-side call. We will refer to this component instance in various code snippets of working with Authentication. //Get a UserManagement Instance let userManagement = app.userManagement(); -------------------------------------------------------------------------------- title: "Add New User" description: "This page describes the method to add new end-users to your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.253Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/authentication/add-new-user/" service: "Cloud Scale" related: - Add new user - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Add New User Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. You can add end users to your Catalyst serverless applications, fetch their details, or manage their accounts easily. When a user has signed up to a Catalyst application, unique identification values like ZUID and User ID are created for them. The user is also assigned to an organization automatically in this method. #### Create a JSON Configuration Before you add a new end-user to your Catalyst application, you must create a JSON object that contains the registration details of a particular user, such as their email address, last name, the application platform and the role they must be added to, as shown below. You can then pass the configuration to the user registration method. Note: * You must provide the values for email_id and first_name to register a user mandatorily. * You can obtain the role_id from the _Roles_ section in _Authentication_ in the Catalyst console. //Create a JSON object for adding a new user const signupConfig = { platform_type: 'web', template_details: { senders_mail:'dogogetu@tutuapp.bid', subject:'Welcome to %APP_NAME% ', message:'&lt;p&gt;Hello ,&lt;/p&gt; &lt;p&gt;Follow this link to join in %APP_NAME% .&lt;/p&gt; &lt;p&gt; &lt;a href=\'%LINK%\'&gt;%LINK%&lt;/a&gt; &lt;/p&gt; &lt;p&gt;If you did not ask to join the application, you can ignore this email.&lt;/p&gt; &lt;p&gt;Thanks,&lt;/p&gt; &lt;p&gt;Your %APP_NAME% team&lt;/p&gt;' }, redirect_url: 'home.html' // The user will be directed to this page once they are authenticated. You can also provide mapped custom domains you configured as your invite URL. }; var userConfig = { first_name: 'Dannie', last_name: 'Boyle', email_id: 'p.boyle@zylker.com', role_id : '3376000000159024' }; ### Add a New User You can now add a new end-user to your Catalyst application using the code below. You must pass the JSON objects you created in the previous section as arguments to the registerUser() method. The registerUser() method handles the user sign-up process and returns a promise. This promise will be resolved to a JSON object. The userManagement reference used below is defined in the component instance page. Note : You will be able to add only 25 users in your application in the development environment. After you deploy your application to production, you can include any number of end-users in it. let userManagement = app.userManagement(); let registerPromise = userManagement.registerUser(signupConfig, userConfig); //Pass the JSON configration to the method registerPromise.then(userDetails =&gt; { //Returns a promise console.log(userDetails); }); A sample response that you will receive for each version is shown below: { zaid: "1005634498", user_details: { zuid: "1005641290", zaaid: "1005641456", org_id: "1005641456", status: "ACTIVE", is_confirmed: false, email_id: "p.boylie@zylker.com", first_name: "Dannie", last_name: "Boyle", created_time: "Aug 12, 2021 12:33 PM", modified_time: "Aug 12, 2021 12:33 PM", invited_time: "Aug 12, 2021 12:33 PM", role_details: { role_name: "App User", role_id: "2305000000006024" }, user_type: "App User", user_id: "2305000000007752", project_profiles: [] }, redirect_url: "https://aliencity-66446133.development.catalystserverless.com/app/", platform_type: "web", org_id: null } { zaid: 1005634498, user_details: { zuid: 1005641433, zaaid: 1005641434, org_id: 1005641434, status: "ACTIVE", is_confirmed: false, email_id: "p.boyle@zylker.com", last_name: "Boyle", first_name: "Dannie", created_time: "Aug 12, 2021 12:27 PM", modified_time: "Aug 12, 2021 12:27 PM", invited_time: "Aug 12, 2021 12:27 PM", role_details: { role_name: "App User", role_id: 2305000000006024 }, user_type: "App User", user_id: 2305000000007745, project_profiles: [] }, redirect_url: "https://aliencity-66446133.development.catalystserverless.com/app/", platform_type: "web", org_id: null } -------------------------------------------------------------------------------- title: "Get All Org IDs" description: "This page describes the method to add get all the Org IDs associated with the users signed to your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.253Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/authentication/get-org-id/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - User Management (/en/cloud-scale/help/authentication/user-management/users/introduction/) -------------------------------------------------------------------------------- # Get All Org IDs Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Org ID or ZAAID is the unique identification of the organization that an end-user belongs to. This identification is generated when the end-user signs up to your application through any of the authentication types, gets added through the Add User API or through the Add User button in the console. The SDK snippet below demonstrates fetching all the Org IDs generated while adding new users to your application using the getAllOrgs() method: const userManagement = app.userManagement(); userManagement.getAllOrgs() -------------------------------------------------------------------------------- title: "Add User to Existing Org" description: "This page describes the method to add a new user to the existing organisation in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.253Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/authentication/add-new-user-to-existing-org/" service: "Cloud Scale" related: - Add new user to existing org - API (/en/api/code-reference/cloud-scale/authentication/add-user-to-existing-org/#AddaNewUsertoanExistingOrganization) - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Add New User to an Existing Organization Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. You can add an end-user to an existing organization without creating a new organization for them. This can be done by providing the **OrgID** of the organization that the user must be added to. The organization of a user cannot be changed later, once it is associated with their account. When the user has signed up, unique identification values such as ZUID and User ID are created for them. * You must provide the values for OrgID, email_id, first_name mandatorily to add a user to an existing organization. * You can also add them to a role by providing the role_id, which you can obtain from the Roles section in Authentication in the Catalyst console. * When inviting a new user, you can configure the sender's email address, subject and the email message. You must add the email address in the Catalyst Mail Component and get it verified before using it in the SDK code. ### Create a JSON Configuration Before you add a new end-user to your Catalyst application, you must create a JSON object that contains the registration details of a particular user as shown below. You can then pass the configuration to the user registration method. //Create a JSON object for adding a new user to an existing org const signupConfig = { platform_type: 'web', template_details: { 'senders_mail':'dogogetu@tutuapp.bid', 'subject':'Welcome to %APP_NAME% ', 'message':'&lt;p&gt;Hello ,&lt;/p&gt; &lt;p&gt;Follow this link to join in %APP_NAME% .&lt;/p&gt; &lt;p&gt;&lt;a href=\'%LINK%\'&gt;%LINK%&lt;/a&gt;&lt;/p&gt; &lt;p&gt;If you didn’t ask to join the application, you can ignore this email.&lt;/p&gt; &lt;p&gt;Thanks,&lt;/p&gt; &lt;p&gt;Your %APP_NAME% team&lt;/p&gt;' }}; var userConfig = { first_name: 'Amelia', last_name: 'Burrows', email_id: 'emma@zylker.com', org_id: 10014774358 }; ### Add a New User to Existing Org You can now add a new end-user to an existing organization using the code below. You must pass the JSON objects you created in the previous section as arguments to the addUserToOrg() method. This method handles the user sign-up process and returns a promise. This promise will be resolved to a JSON object. The userManagement reference used in the code is the component instance created earlier. You will be able to add only 25 users in your application in the development environment. After you deploy your application to production, you can include any number of end-users in it. let userManagement = app.userManagement(); let addUserPromise = userManagement.addUserToOrg(signupConfig, userConfig); //Pass the JSON configurations to the method addUserPromise.then(addedUser => { //Returns a promise console.log(addedUser); }); A sample response that you will receive for each version is shown below: { zaid: "1005634498", user_details: { zuid: "1005643749", org_id: "10014774358", status: "ACTIVE", is_confirmed: false, email_id: "emma@zylker.com", first_name: "Amelia", last_name: "Burrows", created_time: "Aug 12, 2021 03:56 PM", modified_time: "Aug 12, 2021 03:56 PM", invited_time: "Aug 12, 2021 03:56 PM", role_details: { role_name: "App User", role_id: "2305000000006024" }, user_type: "App User", user_id: "2305000000009002", project_profiles: [] }, redirect_url: "https://aliencity-66446133.development.catalystserverless.com/app/", platform_type: "web", org_id: null } { zaid: 1005634498, user_details: { zuid: 1005643930, org_id: "10014774358", status: "ACTIVE", is_confirmed: false, email_id: "emma@zylker.com", first_name: "Amelia", last_name: "Burrows", created_time: "Aug 12, 2021 04:05 PM", modified_time: "Aug 12, 2021 04:05 PM", invited_time: "Aug 12, 2021 04:05 PM", role_details: { role_name: "App User", role_id: 2305000000006024 }, user_type: "App User", user_id: 2305000000009004, project_profiles: [] }, redirect_url: "https://aliencity-66446133.development.catalystserverless.com/app/", platform_type: "web", org_id: null } -------------------------------------------------------------------------------- title: "Get All Users in an Organization" description: "This page describes the method to add a new user to the existing organisation in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.254Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/authentication/get-users-in-org/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - User Management (/en/cloud-scale/help/authentication/user-management/users/introduction/) -------------------------------------------------------------------------------- # Get All Users in an Organization Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. The SDK snippet below demonstrates fetching the list of all users assigned to an organization using the getAllUsers(Org ID) method. const userManagement = app.userManagement(); userManagement.getAllUsers('10062701096'); // Enter your Org ID here -------------------------------------------------------------------------------- title: "Reset Password" description: "This page describes the method to reset the password of a user account in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.254Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/authentication/reset-password/" service: "Cloud Scale" related: - Reset password - API (/en/api/code-reference/cloud-scale/authentication/reset-user-password/#ResetUserPassword) - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Reset Password Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. After the successful registration of a user, you can reset the password using the following code snippet. While calling the resetPassword() method, a reset password link will be generated and sent to the user's Email address. The userManagement reference used in the below code snippet is the component instance. Note: * **EmailID** and **Platform type** are the mandatory attributes. * You can configure the sender's email address, subject and the email message. You must add the email address in the Catalyst Mail Component and get it verified before using it in the SDK code. ### Create a Configuration JSON JSON objects containing the registration details of a particular user is created as given below, //Create Config Object for the user const signupConfig = { platform_type: 'web', zaid: 10014774358, template_details: { 'senders_mail':'dogogetu@tutuapp.bid', 'subject':'Welcome to %APP_NAME% ', 'message':'&lt;p&gt;Hello ,&lt;/p&gt; &lt;p&gt;Follow this link to join in %APP_NAME% .&lt;/p&gt; &lt;p&gt;&lt;a href=\'%LINK%\'&gt;%LINK%&lt;/a&gt;&lt;/p&gt; &lt;p&gt;If you didn’t ask to join the application, you can ignore this email.&lt;/p&gt; &lt;p&gt;Thanks,&lt;/p&gt; &lt;p&gt;Your %APP_NAME% team&lt;/p&gt;' } }; var userConfig = { first_name: 'A', last_name: 'B', email_id: 'amelia.burrows@zylker.com' }; ### Reset the Password These objects are passed as arguments to the registerUser() method which returns a promise. The promise returned will be resolved to an object which is a JSON. const userManagement = app.userManagement(); let users = await userManagement.resetPassword('amelia.b@zylker.com', { 'platform_type': 'web', 'redirect_url': 'https://www.google.com', 'template_details': { 'subject': 'Reset Password', 'message': 'Click on the link to reset your password: <a href="{{reset_password_url}}">Reset Password</a>', 'senders_mail': 'support@zylker.com' } }); console.log(users); -------------------------------------------------------------------------------- title: "Generate a Custom Server Token" description: "This page describes the method to delete users from your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.254Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/authentication/third-party-server-token/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Generate a Custom Server Token Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Cloud Scale's Authentication component allows you to implement a third-party authentication service of your preference for your Catalyst application. The authorization and validation of the end-user is handled by the third-party service, and the data is passed on to Catalyst. Note: * Since you are implementing a third-party authentication service, it is understood that the security infrastructure of your application is contingent on the efficiency of the third-party service that you have chosen. * To enable a third-party authentication in your Catalyst application, you must ensure that you have enabled Public Signup in the console. When a user is re-directed from a third-party service after being authenticated, their credentials must be passed to an authentication function that you code. This function must include the Catalyst server-side script to generate a custom server token, which will then be passed to the Web SDK incorporated in the client code. const userManagement = catalystApp.userManagement(); userManagement.generateCustomToken({ type:'web', user_details:{ email_id: "${email_id}", first_name: "${first_name}", last_name: "${last_name}", org_id: "${org_id}", phone_number: "${phone_number}", country_code: "${country_code}", role_name: "${role_name}" } }); You can now pass this token to the client logic as explained in this Web SDK help page. Note : The custom server token will have to be generated every single time the user logs in to your application using a third-party authentication service. -------------------------------------------------------------------------------- title: "Custom User Validation" description: "This page describes the method to delete users from your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.254Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/authentication/custom-user-validation/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Custom User Validation Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst Authentication allows you to authorize and validate your end-users using a custom Basic I/O function on the event of a sign-up to your Catalyst application. You can write your own logic and process the credentials that the user provides through this function, and grant access to your application. A sample code for a Custom User Validation function is given below. const catalyst = require('zcatalyst-sdk-node'); module.exports = (context, basicIO) => { const catalystApp = catalyst.initialize(context); const userManagement = catalystApp.userManagement(); const requestDetails = userManagement.getSignupValidationRequest(basicIO); if (requestDetails!==undefined) { if (requestDetails.user_details.email_id.includes('zylker.com')) { basicIO.write(JSON.stringify({ status: 'failure' })) } else { basicIO.write(JSON.stringify({ status: 'success', user_details: { first_name : 'CustomFirstName', last_name : 'CustomLastName', role_identifier : 'CustomRole', org_id : 'CustomOrgID'//If you are providing the Org ID, make sure it is copied exactly from the console. } })) } } context.close(); } To test this function, you can pass the details of the user in the following .JSON format: { "request_type": "add_user", "request_details": { "user_details": { "email_id": "emmy@zylker.com", "first_name": "Emma", "last_name": "Thompson", "org_id": "432567817", "role_details": { "role_name": "Moderator", "role_id": "879" } }, "auth_type": "web" } } -------------------------------------------------------------------------------- title: "Get User Details" description: "This page describes the method to fetch user details from the Data Store in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.254Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/authentication/get-user-details/" service: "Cloud Scale" related: - Get user details - API (/en/api/code-reference/cloud-scale/authentication/get-specific-user/#GetSpecificUser) - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Get User Details Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst Authentication provides some methods to retrieve the details of the application users. You can obtain the user information of the current user, any user, or all users of the application. ### Get Details of Current User The method getCurrentUser() fetches the details of a user on whose scope the function is getting executed. The userManagement reference used in the code snippets is the component instance created earlier. The promise returned here will be resolved to a JSON object. // get the details of the current user as a promise let userManagement = app.userManagement(); let userPromise = userManagement.getCurrentUser(); userPromise.then(currentUser => { console.log(currentUser); }); A sample response that you will receive for each version is shown below: { zuid: "1005641433", zaaid: "1005641434", org_id: "1005641434", status: "ACTIVE", is_confirmed: false, email_id: "p.boyle@zylker.com", last_name: "Boyle", created_time: "Aug 12, 2021 12:27 PM", role_details: { role_name: "App User", role_id: "2305000000006024" }, user_type: "App User", user_id: "2305000000007745", locale: "us|en|Asia/Kolkata", time_zone: "Asia/Kolkata", project_profiles: [] } { zuid: 1005641433, zaaid: 1005641434, org_id: 1005641434, status: "ACTIVE", is_confirmed: false, email_id: "p.boyle@zylker.com", last_name: "Boyle", created_time: "Aug 12, 2021 12:27 PM", role_details: { role_name: "App User", role_id: 2305000000006024 }, user_type: "App User", user_id: 2305000000007745, locale: "us|en|Asia/Kolkata", time_zone: "Asia/Kolkata", project_profiles: [] } ### Get User Details by User ID You can retrieve the details of a particular user by passing the User ID of the user to the getUserDetails() method. The promise is resolved to a JSON object. //Get a single user's details by passing the user ID let userManagement = app.userManagement(); let userPromise = userManagement.getUserDetails(1510000000109587); userPromise.then(userDetails => { console.log(userDetails); }); A sample response that you will receive for each version is shown below: { zuid: "1005665160", zaaid: "1005665245", org_id: "1005665245", status: "ACTIVE", is_confirmed: false, email_id: "mikerogers@zylker.com ", last_name: "Rogers", created_time: "Aug 17, 2021 04:55 PM", role_details: { role_name: "App User", role_id: "2136000000007748" }, user_type: "App User", user_id: "2136000000020040", locale: "us|en|Asia/Kolkata", time_zone: "Asia/Kolkata", project_profiles: [] } { zuid: 1005665160, zaaid: 1005665245, org_id: 1005665245, status: "ACTIVE", is_confirmed: false, email_id: "mikerogers@zylker.com", last_name: "Rogers", created_time: "Aug 17, 2021 04:55 PM", role_details: { role_name: "App User", role_id: 2136000000007748 }, user_type: "App User", user_id: 2136000000020040, locale: "us|en|Asia/Kolkata", time_zone: "Asia/Kolkata", project_profiles: [] } ### Get Details of All Users The getAllUsers() method can fetch the details of all the users who are registered with the application. The promise returned here will be resolved to an array of objects which contains all user details. //Get details of all users let userManagement = app.userManagement(); let allUserPromise = userManagement.getAllUsers(); allUserPromise.then(allUserDetails => { console.log(allUserDetails); }); A sample response that you will receive for each version is shown below: [ { zuid: "1005648252", zaaid: "1005648253", org_id: "1005648253", status: "ACTIVE", is_confirmed: false, email_id: "p.boyle@zylker.com", last_name: "Boyle", created_time: "Aug 13, 2021 01:36 PM", modified_time: "Aug 13, 2021 01:36 PM", invited_time: "Aug 13, 2021 01:36 PM", role_details: { role_name: "App User", role_id: "2136000000007748" }, user_type: "App User", user_id: "2136000000007774", locale: "us|en|Asia/Kolkata", time_zone: "Asia/Kolkata", project_profiles: [] }, { zuid: "1005665160", zaaid: "1005665245", org_id: "1005665245", status: "ACTIVE", is_confirmed: false, email_id: "rsmith@zylker.com ", last_name: "Smith", created_time: "Aug 17, 2021 04:55 PM", modified_time: "Aug 17, 2021 04:55 PM", invited_time: "Aug 17, 2021 04:55 PM", role_details: { role_name: "App User", role_id: "2136000000007748" }, user_type: "App User", user_id: "2136000000020040", locale: "us|en|Asia/Kolkata", time_zone: "Asia/Kolkata", project_profiles: [] } ] [ { zuid: 1005648252, zaaid: 1005648253, org_id: 1005648253, status: "ACTIVE", is_confirmed: false, email_id: "p.boyle@zylker.com", last_name: "Boyle", created_time: "Aug 13, 2021 01:36 PM", modified_time: "Aug 13, 2021 01:36 PM", invited_time: "Aug 13, 2021 01:36 PM", role_details: { role_name: "App User", role_id: 2136000000007748 }, user_type: "App User", user_id: 2136000000007774, locale: "us|en|Asia/Kolkata", time_zone: "Asia/Kolkata", project_profiles: [] }, { zuid: 1005665160, zaaid: 1005665245, org_id: 1005665245, status: "ACTIVE", is_confirmed: false, email_id: "rsmith@zylker.com", last_name: "Smith", created_time: "Aug 17, 2021 04:55 PM", modified_time: "Aug 17, 2021 04:55 PM", invited_time: "Aug 17, 2021 04:55 PM", role_details: { role_name: "App User", role_id: 2136000000007748 }, user_type: "App User", user_id: 2136000000020040, locale: "us|en|Asia/Kolkata", time_zone: "Asia/Kolkata", project_profiles: [] } ] -------------------------------------------------------------------------------- title: "Update User Details" description: "This page describes the method to update an end-users details in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.254Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/authentication/update-user-details/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Modify a User's Details in the Console (/en/cloud-scale/help/authentication/user-management/users/implementation/#modify-a-users-details) -------------------------------------------------------------------------------- # Update User Details Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst allows you to modify and update the following details of an end-user: * First Name * Last name * **ZAAID**: **ZAAID** or Org ID, is a unique value that is generated by Catalyst to associate with an organization. * RoleID: Role ID is the value generated by Catalyst that is assigned to a particular user role. The SDK snippet below demonstrates updating an end-user’s details using the updateUserDetails(userID, userDetails) method. The first name of the user is updated in the example below. const userManagement = app.userManagement(); userManagement.updateUserDetails('13749831', { email_id: 'emma@zylker.com', last_name: 'Burrows', zaaid: '1483013413294234', role_id: '843974989234859', first_name: 'Amelia' }); <br /> -------------------------------------------------------------------------------- title: "Enable or Disable a User" description: "This page describes the method to enable or disable a user in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.254Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/authentication/enable-disable-user/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Enable or Disable a User in the Console (/en/cloud-scale/help/authentication/user-management/users/implementation/#enable-or-disable-a-user) -------------------------------------------------------------------------------- # Enable or Disable a User Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst allows you to disable or enable a user at any time. A disabled user will be signed up to your application but will not be able to access your application. The SDK snippet below demonstrates enabling and disabling an end-user using the updateUserStatus(userId, USER_STATUS) method. The user is referred by their unique User ID. You can find the User IDs of all users by navigating to the *Users* > *User Management* section of the Authentication component. ### To Enable a User const userManagement = app.userManagement(); userManagement.updateUserStatus('195000000042777', USER_STATUS.ENABLE) ### To Disable a User const userManagement = app.userManagement(); userManagement.updateUserStatus('195000000042777', USER_STATUS.DISABLE) <br /> -------------------------------------------------------------------------------- title: "Delete a User" description: "This page describes the method to delete users from your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.255Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/authentication/delete-user/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Delete a User Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. The end-user of a Catalyst application can be deleted to discontinue accessing the application. This is done through deleteUser() method, in which the User ID of the user who is to be deleted is passed as a parameter. The promise returned here will be resolved to an object which is a JSON. //Delete a single user by passing the user ID which in turn returns a promise let userManagement = app.userManagement(); let deleteUserPromise = userManagement.deleteUser(1510000000109587); deleteUserPromise.then(deletedUser => { console.log(deleteUserPromise); }); ### Cache -------------------------------------------------------------------------------- title: "Get component instance" description: "This page describes the method to delete a key-value pair using a key or cache object in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.257Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/cache/get-component-instance/" service: "Cloud Scale" related: - Cache (/en/cloud-scale/help/cache/introduction) -------------------------------------------------------------------------------- # Get component instance Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. The cache reference can be created using the following method which does not fire a server-side call. //Get a cache instance let cache = app.cache(); -------------------------------------------------------------------------------- title: "Get segment instance" description: "This page describes the method to get a cache segment instance in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.257Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/cache/get-segment-instance/" service: "Cloud Scale" related: - Cache (/en/cloud-scale/help/cache/introduction) -------------------------------------------------------------------------------- # Get a segment instance Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. A segment reference can be created using the following method which does not fire a server-side call. The cache reference used in the code snippet below is the component instance. When you pass the segment id in the parameter, it will refer to the particular segment. When you don't provide any segment id, it will refer to the default segment. //Refer a cache segment through the segment ID let cache = app.cache(); let segment = cache.segment(); -------------------------------------------------------------------------------- title: "Retrieve data from the cache" description: "This page describes the method to retrieve data from the cache in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.257Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/cache/retrieve-data-from-cache/" service: "Cloud Scale" related: - Retrieve data from the cache - API (/en/api/code-reference/cloud-scale/cache/get-cache-value/#GetCacheValue) - Cache (/en/cloud-scale/help/cache/introduction) -------------------------------------------------------------------------------- # Retrieve data from the cache Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. ### Get Cache Value Catalyst cache is divided into partitions or cache units called segments. Each segment stores cache items in the form of key-value pairs. Both keys and values are of the String type. You can retrieve the value of a cache item from a segment in the cache using the getValue() method. You must pass the key name as the argument. The promise returned here will be resolved to a String, which is the actual value of the key. The segment reference used in the code snippet below is the segment instance created earlier. //Get cache value by passing the key name let cache = app.cache(); let segment = cache.segment(); let cachePromise = segment.getValue('Age'); cachePromise.then((entity) => { console.log(entity); }); ### Get Cache Object You can retrieve the details of the cache where the key-value pair is of the object type. The key object is retrieved using the _get()_ method where the key name is passed as an argument. The _segment_ reference used in the code snippet below is a segment instance. The promise returned here will be resolved to an object which is a JSON. //Get Cache object by passing the key name as argument let cache = app.cache(); let segment = cache.segment(); let cachePromise = segment.get('Age'); cachePromise.then((entity) => { console.log(entity); }); A sample response that you will receive for each version is shown below: { cache_name: "Name", cache_value: "Amelia Burrows", project_details: { project_name: "AlienCity", id: "2136000000007733" }, segment_details: { segment_name: "DataStore", id: "2136000000008572" }, expires_in: "Aug 18, 2021 06:39 PM", expiry_in_hours: "47", ttl_in_milliseconds: "172727000" } { cache_name: "Name", cache_value: "Amelia Burrows", project_details: { project_name: "AlienCity", id: 2136000000007733 }, segment_details: { segment_name: "DataStore", id: 2136000000008572 }, expires_in: "Aug 18, 2021 06:39 PM", expiry_in_hours: 47, ttl_in_milliseconds: 172609000 } -------------------------------------------------------------------------------- title: "Insert data to cache" description: "This page describes the method to insert data into the cache in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.257Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/cache/insert-data-into-cache/" service: "Cloud Scale" related: - Insert data to cache - API (/en/api/code-reference/cloud-scale/cache/insert-key-value-in-segment/#InsertKeyValueinCacheSegment) - Cache (/en/cloud-scale/help/cache/introduction) -------------------------------------------------------------------------------- # Insert Data in Cache Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. You can insert a cache element using the put() method. This enables you to insert a key-value pair in an existing cache segment in your Catalyst project. The key name and key value are of the String type and are passed as arguments to the method. You can also pass the expiry time for the cache element optionally. If you do not pass that value, the expiry time will be set to 48 hours by default. The segment reference used in the code snippet below is the segment instance created earlier. The promise returned here will be resolved to a JSON object. //Insert Cache by passing the key-value pair let cache = app.cache(); let segment = cache.segment(); let cachePromise = segment.put('Name', 'Linda McCartney',1); //Expiry time for cache in hours cachePromise.then((entity) => { console.log(entity); }); A sample response that you will receive for each version is shown below: { cache_name: "Last_Name", cache_value: "Smith", project_details: { project_name: "AlienCity", id: "2136000000007733" }, segment_details: { segment_name: "DataStore", id: "2136000000008572" }, expires_in: "Aug 18, 2021 06:46 PM", expiry_in_hours: "48", ttl_in_milliseconds: "172800000" } { cache_name: "Last_Name", cache_value: "Smith", project_details: { project_name: "AlienCity", id: 2136000000007733 }, segment_details: { segment_name: "DataStore", id: 2136000000008572 }, expires_in: "Aug 18, 2021 06:45 PM", expiry_in_hours: 48, ttl_in_milliseconds: 172800000 } -------------------------------------------------------------------------------- title: "Update Data in Cache" description: "This page describes the method to update data in the cache in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.258Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/cache/update-data-in-cache/" service: "Cloud Scale" related: - Update Data in Cache - API (/en/api/code-reference/cloud-scale/cache/update-key-value/#UpdateKey-ValuePair) - Cache (/en/cloud-scale/help/cache/introduction) -------------------------------------------------------------------------------- # Update Data in Cache Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. You can update the key-value pair in a cache segment using the update() method. You must pass the key name and key-value which are of the String type as arguments. If the values aren't present, they will be inserted into the cache segment. The promise returned here will be resolved to a JSON object. You can also optionally pass the expiry time parameter. If you don't assign a value for that, the expiry time will be set to 48 hours by default. The segment reference used in the code snippet below is the segment instance created earlier. //Update cache by passing the key-value pair let cache = app.cache(); let segment = cache.segment(); let cachePromise = segment.update('Name', 'Micheal Greene'); cachePromise.then((entity) => { console.log(entity); }); A sample response that you will receive for each version is shown below: { cache_name: "Last_Name", cache_value: "Brown", project_details: { project_name: "AlienCity", id: "2136000000007733" }, segment_details: { segment_name: "DataStore", id: "2136000000008572" }, expires_in: "Aug 18, 2021 06:46 PM", expiry_in_hours: "47", ttl_in_milliseconds: "172596000" } { cache_name: "Last_Name", cache_value: "Brown", project_details: { project_name: "AlienCity", id: 2136000000007733 }, segment_details: { segment_name: "DataStore", id: 2136000000008572 }, expires_in: "Aug 18, 2021 06:46 PM", expiry_in_hours: 47, ttl_in_milliseconds: 172511000 } -------------------------------------------------------------------------------- title: "Delete key value pair" description: "This page describes the method to delete a key-value pair using a key or cache object in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.258Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/cache/delete-key-value-pair/" service: "Cloud Scale" related: - Cache (/en/cloud-scale/help/cache/introduction) -------------------------------------------------------------------------------- # Delete a key-value pair Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. If a key-value pair is no longer needed, it can be permanently deleted from the cache segment. The key-value pair cannot be restored once it is deleted, but it can be recreated. The _segment_ reference used in the code snippet below is a segment instance. ### Delete using a key You can delete a key by passing it directly as a parameter to the _delete()_ method. The promise returned here will be resolved to an object which is a JSON. //delete Cache using delete by passing the key name let cache = app.cache(); let segment = cache.segment(); let deletePromise = segment.delete('Name'); deletePromise.then((entity) => { console.log(entity); }); ### Connections -------------------------------------------------------------------------------- title: "Get Connections Instance" description: "This page describes the method to get an instance for the Connections component to allow you to use the Connections SDK methods." last_updated: "2026-09-29T06:07:16.258Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/connections/get-connections-instance/" service: "Cloud Scale" related: - Connections Help (/en/cloud-scale/help/connections/introduction/) - Connections Java SDK (/en/sdk/java/v1/cloud-scale/connections/get-connections-instance/) - Connections Python SDK (/en/sdk/python/v1/cloud-scale/connections/get-connections-instance/) -------------------------------------------------------------------------------- # Connections Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Connections allows you to integrate with Zoho and other third-party services while managing all the authentication token requirement. ### Get Connections Instance Note: This SDK can only be accessed within Catalyst services like Functions and AppSail. It cannot be used to integrate with third-party services. You can get the connections component reference as shown below. This will not fire a server-side call. We will refer to this component instance in various code snippets of working with Connections. // create connection instance const connections = app.connections(); -------------------------------------------------------------------------------- title: "Get Authentication Credentials" description: "This page describes the method to get an instance for the Connections component to allow you to use the Connections SDK methods." last_updated: "2026-09-29T06:07:16.258Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/connections/get-credentials/" service: "Cloud Scale" related: - Connections Help (/en/cloud-scale/help/connections/introduction/) - Connections Java SDK (/en/sdk/java/v1/cloud-scale/connections/get-credentials/) - Connections Python SDK (/en/sdk/python/v1/cloud-scale/connections/get-credentials/) -------------------------------------------------------------------------------- # Get Authentication Credentials Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Note: This SDK can only be accessed within Catalyst services like Functions and AppSail. It cannot be used to integrate with third-party services. This SDK method can be used obtain the authentication credentials for various Zoho services, listed as Default Services. The connections reference used in the below code snippet is the component instance. // create connection instance const connections = app.connections(); // retrieve the authentication credentials for the specified connection const connectionResponse = connections.getConnectionCredentials('payrollcon'); // connection response console.log('connection response: ', connectionResponse); ### Data Store -------------------------------------------------------------------------------- title: "Get Data Store Instance" description: "This page describes the method to delete rows in bulk from a table in the Data Store in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.258Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/get-component-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Data Store Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. ### Get a Component Instance The datastore reference can be created by the following method which would not fire a server side call. //Get a datastore instance let datastore = app.datastore(); -------------------------------------------------------------------------------- title: "Get Table Metadata" description: "This page describes the method to fetch the meta data of a single table or multiple tables in your NodeJS application with sample code snippets" last_updated: "2026-09-29T06:07:16.259Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-meta/" service: "Cloud Scale" related: - Get table meta - API (/en/api/code-reference/cloud-scale/data-store/get-table-metadata/#GetTableMetadata) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get Table Metadata Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. The metadata of a single table in the Catalyst Data Store can be obtained in two ways. The datastore reference used in the code snippets below is the component instance. ### Get a Table's Metadata by Table ID A table's meta data is fetched by referring the table Id, using the method getTableDetails() as given below, //Get a Single Table's details using table ID let datastore = app.datastore(); let tablePromise = datastore.getTableDetails(1510000000110121); tablePromise.then((table) => { console.log(table); }); A sample response that you will receive for each version is shown below: { "project_id":{ "project_name":"AlienCity", "id":"2136000000007733" }, "table_name":"AlienCity", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "modified_time":"Aug 13, 2021 01:47 PM", "column_details":[ { "table_id":"2136000000007781", "column_sequence":"1", "column_name":"ROWID", "category":1, "data_type":"bigint", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":false, "column_id":"2136000000007784" }, { "table_id":"2136000000007781", "column_sequence":"2", "column_name":"CREATORID", "category":1, "data_type":"bigint", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007786" }, { "table_id":"2136000000007781", "column_sequence":"3", "column_name":"CREATEDTIME", "category":1, "data_type":"datetime", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007788" }, { "table_id":"2136000000007781", "column_sequence":"4", "column_name":"MODIFIEDTIME", "category":1, "data_type":"datetime", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007790" }, { "table_id":"2136000000007781", "column_sequence":"5", "column_name":"CityName", "category":2, "data_type":"varchar", "max_length":"100", "is_mandatory":false, "decimal_digits":"2", "is_unique":true, "search_index_enabled":true, "column_id":"2136000000008503" } ], "table_id":"2136000000007781" } { "project_id":{ "project_name":"AlienCity", "id":2136000000007733 }, "table_name":"AlienCity", "modified_by":{ "zuid":66466723, "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":2136000000006003 }, "modified_time":"Aug 13, 2021 01:47 PM", "column_details":[ { "table_id":2136000000007781, "column_sequence":1, "column_name":"ROWID", "category":1, "data_type":"bigint", "max_length":50, "is_mandatory":false, "decimal_digits":2, "is_unique":false, "search_index_enabled":false, "column_id":2136000000007784 }, { "table_id":2136000000007781, "column_sequence":2, "column_name":"CREATORID", "category":1, "data_type":"bigint", "max_length":50, "is_mandatory":false, "decimal_digits":2, "is_unique":false, "search_index_enabled":true, "column_id":2136000000007786 }, { "table_id":2136000000007781, "column_sequence":3, "column_name":"CREATEDTIME", "category":1, "data_type":"datetime", "max_length":50, "is_mandatory":false, "decimal_digits":2, "is_unique":false, "search_index_enabled":true, "column_id":2136000000007788 }, { "table_id":2136000000007781, "column_sequence":4, "column_name":"MODIFIEDTIME", "category":1, "data_type":"datetime", "max_length":50, "is_mandatory":false, "decimal_digits":2, "is_unique":false, "search_index_enabled":true, "column_id":2136000000007790 }, { "table_id":2136000000007781, "column_sequence":5, "column_name":"CityName", "category":2, "data_type":"varchar", "max_length":100, "is_mandatory":false, "decimal_digits":2, "is_unique":true, "search_index_enabled":true, "column_id":2136000000008503 } ], "table_id":2136000000007781 } ### Get a Table's Metadata by Table Name When the table's metadata is to be fetched by referring the table name, the below code snippet can be used. However, note that when the table name is changed in the future, it must be reflected in all the places wherever it is used in the code. In both cases, a promise is returned, which in turn resolves to the table meta details. The resultant meta can be converted to a string or JSON output by accessing .toString() or .toJSON() methods. //Get a Single Table's details using the table name let datastore = app.datastore(); let tablePromise = datastore.getTableDetails('SampleTable'); tablePromise.then((table) => { console.log(table); }); A sample response that you will receive for each version is shown below: { "project_id":{ "project_name":"AlienCity", "id":"2136000000007733" }, "table_name":"AlienCity", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "modified_time":"Aug 13, 2021 01:47 PM", "column_details":[ { "table_id":"2136000000007781", "column_sequence":"1", "column_name":"ROWID", "category":1, "data_type":"bigint", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":false, "column_id":"2136000000007784" }, { "table_id":"2136000000007781", "column_sequence":"2", "column_name":"CREATORID", "category":1, "data_type":"bigint", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007786" }, { "table_id":"2136000000007781", "column_sequence":"3", "column_name":"CREATEDTIME", "category":1, "data_type":"datetime", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007788" }, { "table_id":"2136000000007781", "column_sequence":"4", "column_name":"MODIFIEDTIME", "category":1, "data_type":"datetime", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007790" }, { "table_id":"2136000000007781", "column_sequence":"5", "column_name":"CityName", "category":2, "data_type":"varchar", "max_length":"100", "is_mandatory":false, "decimal_digits":"2", "is_unique":true, "search_index_enabled":true, "column_id":"2136000000008503" } ], "table_id":"2136000000007781" } { "project_id":{ "project_name":"AlienCity", "id":2136000000007733 }, "table_name":"AlienCity", "modified_by":{ "zuid":66466723, "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":2136000000006003 }, "modified_time":"Aug 13, 2021 01:47 PM", "column_details":[ { "table_id":2136000000007781, "column_sequence":1, "column_name":"ROWID", "category":1, "data_type":"bigint", "max_length":50, "is_mandatory":false, "decimal_digits":2, "is_unique":false, "search_index_enabled":false, "column_id":2136000000007784 }, { "table_id":2136000000007781, "column_sequence":2, "column_name":"CREATORID", "category":1, "data_type":"bigint", "max_length":50, "is_mandatory":false, "decimal_digits":2, "is_unique":false, "search_index_enabled":true, "column_id":2136000000007786 }, { "table_id":2136000000007781, "column_sequence":3, "column_name":"CREATEDTIME", "category":1, "data_type":"datetime", "max_length":50, "is_mandatory":false, "decimal_digits":2, "is_unique":false, "search_index_enabled":true, "column_id":2136000000007788 }, { "table_id":2136000000007781, "column_sequence":4, "column_name":"MODIFIEDTIME", "category":1, "data_type":"datetime", "max_length":50, "is_mandatory":false, "decimal_digits":2, "is_unique":false, "search_index_enabled":true, "column_id":2136000000007790 }, { "table_id":2136000000007781, "column_sequence":5, "column_name":"CityName", "category":2, "data_type":"varchar", "max_length":100, "is_mandatory":false, "decimal_digits":2, "is_unique":true, "search_index_enabled":true, "column_id":2136000000008503 } ], "table_id":2136000000007781 } ### Get Metadata of All Tables In addition to getting the meta data of a single table, you can fetch the details of all the tables in a catalyst project using getAllTables() method. The promise returned here will be resolved to an array of table meta details. //Get meta data of all tables let datastore = app.datastore(); let allTablePromise = datastore.getAllTables(); allTablePromise.then((tables) => { console.log(tables); }); A sample response that you will receive for each version is shown below: [ { "project_id":{ "project_name":"AlienCity", "id":"2136000000007733" }, "table_name":"AlienCity", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "modified_time":"Aug 13, 2021 01:47 PM", "table_id":"2136000000007781" }, "table_name":"CityDetails", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "modified_time":"Aug 13, 2021 01:47 PM", "table_id":"2136000000009090" } ] [ { "project_id":{ "project_name":"AlienCity", "id":2136000000007733 }, "table_name":"AlienCity", "modified_by":{ "zuid":66466723, "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":2136000000006003 }, "modified_time":"Aug 13, 2021 01:47 PM", "table_id":2136000000007781 }, "table_name":"CityDetails", "modified_by":{ "zuid":66466723, "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":2136000000006003 }, "modified_time":"Aug 13, 2021 01:47 PM", "table_id":2136000000009090 } ] -------------------------------------------------------------------------------- title: "Get Table Instance" description: "This page describes the method to fetch the table instance using tableID and name from a table in the Data Store in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.259Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get a Table Instance Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. A table reference can be created by the following methods which would not fire a server-side call. The datastore reference used in the below code snippets is the component instance. ### Get the table instance using tableID A table reference can be created by referring the table ID using the getTable() method. //Get a Single Table without details using table ID let datastore = app.datastore(); let table = datastore.table(1510000000110121); ### Get the table instance using table name Alternatively, A table reference can be created by referring the table name using the getTable() method. There is no promise involved in these methods and the instance of the table alone is returned. //Get a Single Table without details using table name let datastore = app.datastore(); let table = datastore.table('SampleTable'); -------------------------------------------------------------------------------- title: "Get Column Metadata" description: "This page describes the method to retrieve metadata of a single column or multiple columns from a table in the Data Store in your NodeJS application with sample code snippets" last_updated: "2026-09-29T06:07:16.259Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/get-column-meta/" service: "Cloud Scale" related: - Get Column Meta - API (/en/api/code-reference/cloud-scale/data-store/get-column-metadata/#GetColumnMetadata) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get Column Metadata Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Column metadata details of a single column of a table in the Catalyst Data Store can be retrieved through the following methods. The table reference used in the below code snippets can either be a table instance or a table meta. ### Get a Column's Metadata by ID You can fetch a column's meta data of a particular table using getColumnDetails() method. //Use Table Meta Object to get the column with column ID which returns a promise let datastore = app.datastore(); let table = datastore.table('ShipmentDetails'); let columnPromise = table.getColumnDetails(1510000000110832); columnPromise.then((column) => { console.log(column); }); A sample response that you will receive for each version is shown below: { table_id: "2305000000007003", column_sequence: "5", column_name: "CityName", category: 2, data_type: "varchar", max_length: "100", is_mandatory: false, decimal_digits: "2", is_unique: true, search_index_enabled: false, column_id: "2305000000007725" } { table_id: 2305000000007003, column_sequence: 5, column_name: "CityName", category: 2, data_type: "varchar", max_length: 100, is_mandatory: false, decimal_digits: 2, is_unique: true, search_index_enabled: false, column_id: 2305000000007725 } ### Get a Column's Metadata by Name An alternative way to get the meta data of a column is, referring to the Column name. This returns the same response as that of the previous one. The column meta will not involve any further operations. Therefore the promise returned here is resolved to a JSON object. //Use Table Meta Object to get the column with column ID which returns a promise let datastore = app.datastore(); let table = datastore.table('SampleTable'); let columnPromise = table.getColumnDetails('newColumn'); columnPromise.then((column) => { console.log(column); }); A sample response that you will receive for each version is shown below: { table_id: "2305000000007003", column_sequence: "5", column_name: "CityName", category: 2, data_type: "varchar", max_length: "100", is_mandatory: false, decimal_digits: "2", is_unique: true, search_index_enabled: false, column_id: "2305000000007725" } { table_id: 2305000000007003, column_sequence: 5, column_name: "CityName", category: 2, data_type: "varchar", max_length: 100, is_mandatory: false, decimal_digits: 2, is_unique: true, search_index_enabled: false, column_id: 2305000000007725 } ### Get Metadata of All Columns In addition to getting the meta data of a single column, you can retrieve the meta data of all the columns of a particular table using _getAllColumns()_ method. The promise returned here is resolved into an array of column meta details. //Use Table Meta Object to get all the columns which returns a promise let datastore = app.datastore(); let table = datastore.table('SampleTable'); let allColumnsPromise = table.getAllColumns(); allColumnsPromise.then((columns) => { console.log(columns); }); A sample response that you will receive for each version is shown below: [ { table_id: "2136000000007781", column_sequence: "1", column_name: "ROWID", category: 1, data_type: "bigint", max_length: "50", is_mandatory: false, decimal_digits: "2", is_unique: false, search_index_enabled: false, column_id: "2136000000007784" }, { table_id: "2136000000007781", column_sequence: "2", column_name: "CREATORID", category: 1, data_type: "bigint", max_length: "50", is_mandatory: false, decimal_digits: "2", is_unique: false, search_index_enabled: true, column_id: "2136000000007786" }, { table_id: "2136000000007781", column_sequence: "3", column_name: "CREATEDTIME", category: 1, data_type: "datetime", max_length: "50", is_mandatory: false, decimal_digits: "2", is_unique: false, search_index_enabled: true, column_id: "2136000000007788" }, { table_id: "2136000000007781", column_sequence: "4", column_name: "MODIFIEDTIME", category: 1, data_type: "datetime", max_length: "50", is_mandatory: false, decimal_digits: "2", is_unique: false, search_index_enabled: true, column_id: "2136000000007790" }, { table_id: "2136000000007781", column_sequence: "5", column_name: "CityName", category: 2, data_type: "varchar", max_length: "100", is_mandatory: false, decimal_digits: "2", is_unique: true, search_index_enabled: true, column_id: "2136000000008503" } ] [ { table_id: 2136000000007781, column_sequence: 1, column_name: "ROWID", category: 1, data_type: "bigint", max_length: 50, is_mandatory: false, decimal_digits: 2, is_unique: false, search_index_enabled: false, column_id: 2136000000007784 }, { table_id: 2136000000007781, column_sequence: 2, column_name: "CREATORID", category: 1, data_type: "bigint", max_length: 50, is_mandatory: false, decimal_digits: 2, is_unique: false, search_index_enabled: true, column_id: 2136000000007786 }, { table_id: 2136000000007781, column_sequence: 3, column_name: "CREATEDTIME", category: 1, data_type: "datetime", max_length: 50, is_mandatory: false, decimal_digits: 2, is_unique: false, search_index_enabled: true, column_id: 2136000000007788 }, { table_id: 2136000000007781, column_sequence: 4, column_name: "MODIFIEDTIME", category: 1, data_type: "datetime", max_length: 50, is_mandatory: false, decimal_digits: 2, is_unique: false, search_index_enabled: true, column_id: 2136000000007790 }, { table_id: 2136000000007781, column_sequence: 5, column_name: "CityName", category: 2, data_type: "varchar", max_length: 100, is_mandatory: false, decimal_digits: 2, is_unique: true, search_index_enabled: true, column_id: 2136000000008503 } ] -------------------------------------------------------------------------------- title: "Get Rows" description: "This page describes the method to fetch a single row or all the rows from a table in the Data Store in your Nodejs application with sample code snippets" last_updated: "2026-09-29T06:07:16.260Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/get-rows/" service: "Cloud Scale" related: - Get rows - API (/en/api/code-reference/cloud-scale/data-store/get-all-rows/#GetAllRows) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get Rows Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. You can retrieve single row or multiple rows of data from a table in the Catalyst Data Store. The table reference used in these code snippets can either be a table instance or the table meta. ### Get A Single Row You can fetch a single row from a table using the getRow() method. You must pass the unique Row ID of the row to this method as shown in the sample code below. The promise returned here will be resolved to a JSON row object. //Use the table instance or the table meta object to fetch a row by passing the Row ID let rowPromise = table.getRow(1510000000109476); A sample response that you will receive is shown below. The response is the same for both versions of Node.js. { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-17 13:02:11:184", CREATEDTIME: "2021-08-16 16:29:10:499", CityName: "Pune", ROWID: "2136000000011011" } ### Get All Rows Through Pagination You can retrieve all the rows of data from a table in the Data Store by incorporating pagination in your code using the getMyPagedRows() function. Pagination allows you to fetch the rows of a table in batches or pages through iterations. This iteration is executed until all the rows fetched, which is validated by hasNext, as shown in the code below. You can refer to the table by its unique Table ID. For example, if you require the rows to be fetched in batches of 100 as individual pages, you can define a variable for the maximum rows to be fetched in each page and specify the count. The sample code below assigns maxRows as 100. Note: The maxRows parameter is optional. The SDK call will return 200 rows in a single page by default if this value is not specified. Additionally, after each execution of the loop, you will receive a token string in the response data that authorizes the subsequent fetching of data. You can fetch this token through next\_token, and pass it as the value for nextToken during the subsequent iteration, as shown in the code below. During the first execution of the loop, the value for the nextToken string is assigned as undefined. The next set of records are fetched through more\_records in the response data. Note: Pagination has been made available from the Node.js SDK v2.1.0 update. This will not be available in the older versions of the Node.js SDK. //Fetch rows through pagination and declare the value for nextToken as undefined for the first iteration function getMyPagedRows(hasNext = true, nextToken = undefined) { if (!hasNext) { return; } dataStore.table(195000000042025) //Specify the Table ID of the table to fetch the records from .getPagedRows({ nextToken, maxRows: 100 }) //Define the maximum rows to be fetched in a single page and pass it along with nextToken .then(({ data, next_token, more_records }) => { console.log('rows : ', data); //Fetch the rows from the table return getMyPagedRows(more_records, next_token); //Fetch the next set of records and the token string for the next iteration }) .catch((err) => { console.log(err.toString()); }); } A sample response that you will receive if there are more records available is shown below. The more_records parameter will be set to true in this case. #### Node.js v2.1.0 { "status": 200, "data": [ { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:24:855", "name": "Alex Jones", "CREATEDTIME": "2022-01-11 18:18:24:855", "ROWID": "3359000000108111" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:25:117", "name": "Robert Neal", "CREATEDTIME": "2022-01-11 18:18:25:117", "ROWID": "3359000000108114" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:25:120", "name": "Roslyn Gunn", "CREATEDTIME": "2022-01-11 18:18:25:120", "ROWID": "3359000000108117" } ], "message": "OK", "more_records": true, "next_token": "{{token}}" } A sample response that you will receive if there are no more records available is shown below. The more_records parameter will be set to false in this case. #### Node.js v2.1.0 { "status": 200, "data": [ { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:556", "name": "Alex Jones", "CREATEDTIME": "2022-01-11 18:18:43:556", "ROWID": "3359000000108410" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:557", "name": "Robert Neal", "CREATEDTIME": "2022-01-11 18:18:43:557", "ROWID": "3359000000108413" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:568", "name": "Roslyn Gunn", "CREATEDTIME": "2022-01-11 18:18:43:568", "ROWID": "3359000000108417" } ], "message": "OK", "more_records": false } Note: We have deprecated support for the getAllRows() method that was available earlier to fetch multiple rows of data from a table. Pagination is now available as an enhancement that enables you to fetch all rows, without any limitations on the number of rows fetched. The getAllRows() method will be removed from all future SDK versions. Please ensure that you upgrade your code accordingly. -------------------------------------------------------------------------------- title: "Insert Rows" description: "This page describes the method to insert a single row or rows in bulk from a table in the Data Store in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.260Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/insert-rows/" service: "Cloud Scale" related: - Insert Rows - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Insert Rows Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. You can insert a new row of data or a record in a table in the Data Store by referring to the table's unique ID or name. You can also insert multiple rows in a table as explained in the next section. The table reference used in the code below can either be a table instance or a table meta created earlier. Note: * The table and the columns in it must already be created. You can create a table and the columns for it from the console. * You will be able to insert upto 5000 records in each table per project in the development environment. You can create upto 25,000 records overall in each project in the development environment. There are no upper limits for record creation in the production environment. ### Insert a Single Row You must create a JSON object containing the row details in a _{column name : column value}_ format, and pass it as an argument to the insertRow() method as shown below. This inserts the row in the table that you refer by its name or unique Table ID. A unique RowID value for the row is automatically generated once a row is inserted. The promise returned here will be resolved to a JSON row object. //Create a JSON object with the rows to be inserted let rowData = { Name: `George Hamilton`, Age: 22, ID: 6868 }; //Use the table meta object to insert the row which returns a promise let datastore = app.datastore(); let table = datastore.table('EmpDetails'); let insertPromise = table.insertRow(rowData); insertPromise.then((row) => { console.log(row); }); A sample response that you will receive for each version is shown below: { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-16 16:29:10:499", Name: "George Hamilton", Age: "22", ID: "6868", CREATEDTIME: "2021-08-16 16:29:10:499", ROWID: 2136000000011011 } ### Insert Multiple Rows You can insert multiple rows in a table by constructing an array that contains the rows, and passing it as an argument to the insertRows() method as shown below. The promise returned here is resolved to an array containing the row objects. //Create a JSON array with the rows to be inserted let rowData = [{ Name: `Mark Wellington`, Age: 29, ID: 7218 }, { Name: `Zendaya Jones`, Age: 32, ID: 3211 } ]; //Use the table meta object to insert multiple rows which returns a promise let datastore = app.datastore(); let table = datastore.table('EmpDetails'); let insertPromise = table.insertRows(rowData); insertPromise.then((rows) => { console.log(rows); }); A sample response that you will receive is shown below. The response is the same for both versions. [ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-25 13:55:04:904", Name: "Mark Wellington", Age: "92", ID: "7218", CREATEDTIME: "2021-08-25 13:55:04:904", ROWID: 2136000000038008 }, { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-25 13:55:04:906", Name: "Zendaya Jones", Age: "32", ID: "3211", CREATEDTIME: "2021-08-25 13:55:04:906", ROWID: 2136000000038010 } ] -------------------------------------------------------------------------------- title: "Update Rows" description: "This page describes the method to update a single row or rows in bulk in a table in the Data Store in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.260Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/update-rows/" service: "Cloud Scale" related: - Update Rows - API (/en/api/code-reference/cloud-scale/data-store/update-row/#UpdateRow) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Update Rows Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. You can update a single row or multiple rows in a table in the Catalyst Data Store, and update one more column values. The table reference used in the below code snippets can either be a table instance or the table meta. ### Update a Single Row This particular method allows you to update a single row by constructing a object with altered values in the required column. Refer the unique ROWID and pass the newly constructed Object to the updateRow() method. Here ROWID is a mandatory attribute. The promise returned here will be resolved to a JSON row object. //Construct a JSON Object with the updated row details let updatedRowData = { Name: `Mathew Jones`, Age: 31, ROWID: 1510000000109474 }; //Use Table Meta Object to update a single row using ROWID which returns a promise let datastore = app.datastore(); let table = datastore.table('SampleTable'); let rowPromise = table.updateRow(updatedRowData); rowPromise.then((row) => { console.log(row); }); A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node.js { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-17 13:02:11:184", CREATEDTIME: "2021-08-16 16:29:10:499", Name: "Mathew Jones", Age: 31, ROWID: "2136000000011011" } ### Update Multiple Rows To update multiple rows, an array of objects is constructed containing modified values which is passed as an argument to the updateRows() method. ROWIDs are used in corresponding array objects to refer the specific rows which requires modification. The promise returned here will be resolved to an array of row objects. //Data to be updated along with the ROWID let updatedRowsData = [{ Name: `Mathew Jones`, Age: 31, ROWID: 1510000000113298 }, { Name: `Rhonda Watson`, Age: 28, ROWID: 1510000000109474 }]; //Use Table Meta Object to update a multiple rows using ROWIDs which returns a promise let datastore = app.datastore(); let table = datastore.table('SampleTable'); let rowPromise = table.updateRows(updatedRowsData); rowPromise.then((rows) => { console.log(rows); }); A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node.js [ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-24 13:22:14:718", CREATEDTIME: "2021-08-24 13:12:55:999", Name: "Mathew Jones", Age: 31, ROWID: "2136000000034043" }, { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-24 13:22:14:728", CREATEDTIME: "2021-08-24 13:12:56:001", Name: "Rhonda Watson", Age: 28, ROWID: "2136000000034045" } ] -------------------------------------------------------------------------------- title: "Delete Row" description: "This page describes the method to delete a single row from a table in the Data Store in your NodeJS application with sample code snippets" last_updated: "2026-09-29T06:07:16.260Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/delete-row/" service: "Cloud Scale" related: - Delete row - API (/en/api/code-reference/cloud-scale/data-store/delete-row/#DeleteRow) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Delete a Row Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. A row can be deleted from a table simply by passing the ROWIDas a parameter to the deteleRow() method. Multiple rows cannot be deleted at a time. The promise returned here will be resolved to a row object which is a JSON. //Use Table Meta Object to delete a single row using ROWID which returns a promise let datastore = app.datastore(); let table = datastore.table('SampleTable'); let rowPromise = table.deleteRow(1510000000109476); rowPromise.then((row) => { console.log(row); }); -------------------------------------------------------------------------------- title: "Bulk Read Rows" description: "This page describes the method to read multiple rows from a table in the Data Store in your NodeJS application with sample code snippets" last_updated: "2026-09-29T06:07:16.260Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/bulk-read/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Bulk Read Rows Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst allows you to perform bulk read jobs on a specific table present in the Data Store. In the SDK snippet below, the Bulk Read job can read thousands of records from a specific table and generate a CSV file containing the results of the read operation, if the job is successful.The table is referred to by its unique Table ID. Note: You can also use the dataStore.table().bulkJob('read' | 'write') method to perform either a bulk read or a bulk write job. <table class="content-table"> <thead> <tr> <th>Method Used</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>bulkRead.createJob({ criteria, page, select_columns })</td> <td> Create a new bulk read job.</td> </tr> <td>bulkRead.getStatus(job ID)</td> <td>Get a bulk read job's status.</td> <tr> <td>bulkRead.getResult(job ID)</td> <td>Get a bulk read job's result.</td> </tr> </tbody> </table> Copy the SDK snippet below to perform a bulk read job on a particular table. // bulk read let datastore = app.datastore(); //get datastore instance const bulkRead = dataStore.table('sampleTable').bulkJob('read'); // create bulk read job const bulkReadJob = await bulkRead.createJob({ criteria: { group_operator: 'or', group: [ { column_name: 'Department', comparator: 'equal', value: 'Marketing' }, { column_name: 'EmpID', comparator: 'greater_than', value: '1000' }, { column_name: 'EmpName', comparator: 'starts_with', value: 'S' } ] }, page: 1, select_columns: ['EmpID', 'EmpName', 'Department'] }; { url: 'https://hr.zylker.com/en/EmpRecords/_callback.php', headers: { 'src': 'ZCatalyst', 'operation': 'bulkreadAPI' }, params: { 'project_name': 'EmployeeDatabase' } }); // Get bulk read status await bulkRead.getStatus(bulkReadJob.job_id); // Get bulk read result await bulkRead.getResult(bulkReadJob.job_id); <br /> Note: A maximum of 200,000 rows can be read simultaneously. -------------------------------------------------------------------------------- title: "Bulk Write Rows" description: "This page describes the method to write multiple rows from a table in the Data Store in your NodeJS application with sample code snippets" last_updated: "2026-09-29T06:07:16.261Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/bulk-write/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Bulk Write Rows Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst enables you to perform bulk write jobs on a specific table present in the Data Store. The bulk write operation can fetch thousands of records from a CSV file uploaded in Stratus and insert them in a specific table. The table is referred to by its unique table ID that is generated by Catalyst during creation. The column in which the write operation must be performed is referred to by its unique column ID. Note: To perform a bulk write operation, you must first upload the required data as a CSV file in Stratus. During the write job, the file will be referred to using the following attributes: * bucketName: The name of the bucket, where the object is stored. * objectKey: Can contain the path or the Object URL of the required object. * versionID: If the bucket has versioning enabled, then the specific versionID of the file will be stored in this attribute. <table class="content-table"> <thead> <tr> <th>Method Used</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>bulkWrite.createJob(objectDetails, {find_by,fk_mapping,operation})</td> <td>Create a new bulk write job on a specific table.</td> </tr> <td>bulkWrite.status(job ID)</td> <td>Get the status of a bulk write operation.</td> <tr> <td>bulkWrite.result(job ID)</td> <td>Get the result of a bulk write operation.</td> </tr> </tbody> </table> Copy the SDK snippet below to perform a bulk write job on a particular table. let datastore = app.datastore(); // get datastore instance const bulkWrite = datastore.table('sampleTable').bulkJob('write'); const objectDetails = { "bucket_name": "zylker14266", "object_key": "emp_records.csv", "version_id": "64832huidksnd83" }; // create bulk write job const bulkWriteJob = await bulkWrite.createJob(objectDetails, { find_by: 'EmpID', fk_mapping: [ { local_column: 'EmployeeID', reference_column: 'EmpID' }, { local_column: 'DepartmentID', reference_column: 'DeptID' } ], operation: 'insert' }); // get bulk write status await bulkWrite.getStatus(bulkWriteJob.job_id); // get bulk write result await bulkWrite.getResult(bulkWriteJob.job_id); <br /> Note: A maximum of 100,000 rows can be written at one time. -------------------------------------------------------------------------------- title: "Bulk Delete Rows" description: "This page describes the method to delete rows in bulk from a table in the Data Store in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.261Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/bulk-delete-rows/" service: "Cloud Scale" related: - Bulk delete rows - API (/en/api/code-reference/cloud-scale/data-store/bulk-delete-rows/#BulkDeleteRows) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Bulk Delete Rows Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst enables you to delete records or rows of data in bulk from a specific table in the Data Store. The table is referred by its unique ID or name. You can obtain the table ID from Data Store or from the URL when the table is opened in the console. The bulk delete operation can delete a maximum of 200 rows in a single operation. You can pass the unique ROWIDs of the rows to be deleted in an array as shown in the sample code below. You must include at least one ROWID, and can include upto 200 ROWIDs, in the code. The rows are passed to the deleteRows() function through rowPromise in the sample code. The table name or table ID must be passed to datastore.table(). The datastore reference used below is defined in the component instance page. let datastore = app.datastore(); //Pass the table ID or table name let table = datastore.table('EmpDetails'); //Pass the ROWIDs of the records to be deleted to the deleteRows() function let rowPromise = table.deleteRows([1028000000171815,1028000000171810, 1028000000171805, 1028000000171617, 1028000000171098]); //Returns the promise and pushes to Catalyst rowPromise.then((row) => { console.log(row); }); ### Mail -------------------------------------------------------------------------------- title: "Get Mail Instance" description: "This page describes the method to send out emails to end-users from your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.261Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/mail/get-component-instance/" service: "Cloud Scale" related: - Mail (/en/cloud-scale/help/mail/introduction) -------------------------------------------------------------------------------- # Catalyst Mail Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst Mail enables you to add the email addresses of your business that will be used to send emails to the end-users from your Catalyst application. You can configure email addresses of public domains or of your organization's own domains. You can also use an external email client of your choice and configure its SMTP settings with Catalyst, instead of using the built-in Catalyst email client. #### Get Component Instance You can create an email reference as shown below. This will not fire a server-side call. We will refer to this component instance while performing the send mail operation. //Create an email instance let email = app.email(); -------------------------------------------------------------------------------- title: "Send Email" description: "This page describes the method to send out emails to end-users from your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.261Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/mail/send-email/" service: "Cloud Scale" related: - Send Email - API (/en/api/code-reference/cloud-scale/mail/send-email/#SendEmail) - Mail (/en/cloud-scale/help/mail/introduction) -------------------------------------------------------------------------------- # Send Mail Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. You must configure the domains, email addresses, and the SMTP settings for an email client of your choice from the console. The code shown here enables you to send emails to the email addresses you specify from your Catalyst application. Catalyst enables you to set multiple email addresses as the receivers, and to CC, BCC, and reply to through a single send mail operation. You can also attach files in your email. The maximum supported limits for email recipients and file attachments in a single send mail operation are specified below: * To address: 10 * CC: 10 * BCC: 5 * Reply to: 5 * Number of file attachments: 5 * Size of file attachments: 15 MB (through a single file or multiple files upto 5 files) Note: The subject, sender, and atleast one recipient email addresses are mandatory. Other attributes of the email are optional. #### Create a JSON Configuration You must initially create a JSON object containing the required attributes of the email. This includes the sender's email address and all the recipients of the email. You can also create file streams for the file attachments and pass them through the createReadStream() method, as well as specify the subject and content of the email as shown below. Note: You must have configured and verified the sender's email address in the Catalyst console to be able to send emails. If the sender's email is hosted on a private domain or if you choose to use a third-party email client, you must configure them before sending emails as well. The email reference used in the code below is the component instance created earlier. let fs = require('fs');//Define the file stream for file attachments //Create a config object with the email configuration let config = { from_email: 'emma@zylker.com', to_email:["vanessa.hyde@zoho.com","r.owens@zoho.com","chang.lee@zoho.com"], cc:["p.boyle@zylker.com","robert.plant@zylker.com"], bcc:["ham.gunn@zylker.com","rover.jenkins@zylker.com"], reply_to:["peter.d@zoho.com","arnold.h@zoho.com"], subject: 'Greetings from Zylker Corp!', content: "Hello,We're glad to welcome you at Zylker Corp. To begin your journey with us, please download the attached KYC form and fill in your details. You can send us the completed form to this same email address.We cannot wait to get started! Cheers! Team Zylker", attachments: [fs.createReadStream('kycform.pdf')] //create a file stream for the file attachment }; ### Send the Email You must now pass the JSON object to the sendMail() method as an argument as shown in the code below. This will initiate the email to be sent. The promise returned here will be resolved to an object as a JSON. let mailPromise = await email.sendMail(config); console.log(mailPromise); A sample response that you will receive for different versions of Node.js is shown below: { isAsync: false, project_details: { project_name: "Onboarding", id: "2136000000007733" }, from_email: "emma@zylker.com", to_email: ["vanessa.hyde@zoho.com","r.owens@zoho.com","chang.lee@zoho.com"], cc:["p.boyle@zylker.com","robert.plant@zylker.com"], bcc:["ham.gunn@zylker.com","rover.jenkins@zylker.com"], reply_to:["peter.d@zoho.com","arnold.h@zoho.com"], html_mode: true, subject: "Greetings from Zylker Corp!", content: "Hello, We're glad to welcome you at Zylker Corp. To begin your journey with us, please download the attached KYC form and fill in your details. You can send us the completed form to this same email address.We cannot wait to get started!Cheers!Team Zylker" } { isAsync: false, project_details: { project_name: "Onboarding", id: 2136000000007733 }, from_email: "emma@zylker.com", to_email: ["vanessa.hyde@zoho.com","r.owens@zoho.com","chang.lee@zoho.com"], cc:["p.boyle@zylker.com","robert.plant@zylker.com"], bcc:["ham.gunn@zylker.com","rover.jenkins@zylker.com"], reply_to:["peter.d@zoho.com","arnold.h@zoho.com"], html_mode: true, subject: "Greetings from Zylker Corp!", content: "Hello, We're glad to welcome you at Zylker Corp. To begin your journey with us, please download the attached KYC form and fill in your details. You can send us the completed form to this same email address.We cannot wait to get started!Cheers!Team Zylker" } ### NoSQL -------------------------------------------------------------------------------- title: "Get Component Instance" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to create a new NoSQL component instance." last_updated: "2026-09-29T06:07:16.262Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/nosql/get-component-instance/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) - NoSQL Java SDK (/en/sdk/java/v1/cloud-scale/nosql/get-table-metadata/) - NoSQL Python SDK (/en/sdk/python/v1/cloud-scale/nosql/get-component-instance/) -------------------------------------------------------------------------------- # NoSQL Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst NoSQL is a fully managed non-relational, NoSQL data storage feature that enables you to store the semi-structured, unstructured, and disparate data of your applications. Catalyst supports document-type data storage in the key-value pair based JSON format. The Catalyst NoSQL Node.js SDK package enables you to perform CRUD data operations on your NoSQL tables in your project. You can fetch the metadata of your NoSQL tables, create NoSQL items of various supported data types, and insert, update, fetch, or delete items in a specific table. You can also query tables or indexes of tables by specifying query conditions. ### Create a NoSQL Instance A component instance is an object that can be used to access the pre-defined configurations specific to a particular component. You can create a NoSQL object to perform SDK operations in Node.js as shown below. This will not fire a server-side call. We will refer to this nosql instance in various code snippets of working with NoSQL. The app reference used to create the NoSQL instance is the Node.js object returned as the response during the SDK initialization. // Create a NoSQL instance const nosql = app.nosql(); -------------------------------------------------------------------------------- title: "Get Table Metadata" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to fetch NoSQL table metadata. " last_updated: "2026-09-29T06:07:16.262Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/nosql/get-table-metadata/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - Create and Manage Tables (/en/cloud-scale/help/nosql/create-manage-tables/) -------------------------------------------------------------------------------- # Get NoSQL Table Metadata Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. You can get the metadata of a single Catalyst NoSQL table or of all tables in your project as described below. ### Get Metadata of Single Table The metadata of a single table in Catalyst NoSQL can be obtained in two ways as mentioned in this page. The response will contain details of the table configuration, such as the partition key and sort key, TTL attribute, and more. The nosql reference used in the code snippets below is the component instance created to perform these operations. #### Get Table Metadata with Table ID You can fetch the metadata of a NoSQL table in your project by referring to its unique Table ID using the method getTable() as given below. // Create a NoSQL instance const nosql = app.nosql(); // Get table metadata using the Table ID const tableA = await nosql.getTable('124567890'); #### Get Table Metadata with Table Name You can fetch the metadata of a NoSQL table in your project by referring the table name using the method getTable() as given below. // Create a NoSQL instance const nosql = app.nosql(); // Get table metadata using the table name const tableB = await nosql.getTable('EmpTable'); Note: If you rename the table, you will need to update the changes in your code. <br> ### Get Metadata of All Tables Catalyst enables you to fetch the metadata of all the tables in your project using the getAllTable() method as shown below. // Get metadata of all tables const allTables = await nosql.getAllTable(); -------------------------------------------------------------------------------- title: "Get Table Instance" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to create a NoSQL table instance." last_updated: "2026-09-29T06:07:16.262Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/nosql/get-table-instance/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - Create and Manage Tables (/en/cloud-scale/help/nosql/create-manage-tables/) -------------------------------------------------------------------------------- # Get NoSQL Table Instance Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst NoSQL enables you to fetch an empty table instance of an existing NoSQL table. You can then use this instance to refer to that table and perform all supported table operations. This process will not fire a server-side call. You can get an instance of your NoSQL table in three ways as described in this section. The nosql reference used in the code snippets below is the component instance created earlier. ### Get Instance with Table ID Get a table instance with the unique ID of the table as shown below. const tableInstanceA = nosql.table('1234567890'); // Create a table instance with Table ID <br> ### Get Instance with Table Name Get a table instance with the table's name as shown below. const tableInstanceB = nosql.table('Emptable'); // Create a table instance with the table name <br> ### Get Instance with Table Details Get a table instance by specifying the details of the table and resolving it to toJSON() as shown below. This method provides flexibility by allowing you to duplicate a table object whose instance you already fetched using the Table ID or table name. You can then configure additional details of the table to the instance and use this to refer to the table instead. const tableInstanceC = nosql.table(tableA.toJSON()); // Create a table instance with table details -------------------------------------------------------------------------------- title: "Construct NoSQL Item" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the methods to construct a NoSQL items of various data types." last_updated: "2026-09-29T06:07:16.262Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/nosql/construct-item/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - Basic Components (/en/cloud-scale/help/nosql/components/#basic-components) - Supported Data Types in NoSQL (/en/cloud-scale/help/nosql/working-with-data/introduction/) -------------------------------------------------------------------------------- # Construct NoSQL Item Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst NoSQL items represent a collection of attributes that hold the data of a single data point, like records. You can insert or update items into an existing NoSQL table in your project in a Custom JSON format. However, before you insert or update an item in Catalyst, you will need to construct the item. You can construct a NoSQL item of attributes containing different data types supported by Catalyst as described in the section below. Catalyst supports several data types such as String, Number, Set of Strings, Set of Numbers, List, and Map. Refer to the full list of supported data types to learn more. You must mandatorily provide the values for the partition key attribute that you configured for a table in every data item. Refer to the Table Keys help section to learn about the table keys, TTL attribute, and other details. <br> ### Create a New NoSQL Item You can create a new NoSQL item using the NoSQLItem() method after requiring the no-sql library which is a part of the zcatalyst-sdk-node package, as shown below. const { NoSQLItem } = require('zcatalyst-sdk-node/lib/no-sql'); const item = new NoSQLItem() // Create a new NoSQL item <br> ### Construct a NoSQL Item of String In the example below, we construct an item that includes string values and a nested JSON attribute color as a Map. const { NoSQLItem } = require('zcatalyst-sdk-node/lib/no-sql'); const item = new NoSQLItem() // Create a new NoSQL item // Add a string value .addString('fruit', 'mango') // Add a map .addMap('properties', { color: 'yellow' }); <br> ### Construct a NoSQL Byte You can create a NoSQL byte to store values of the *Binary* data type, by creating a buffer object that is used to represent a sequence of bytes. You can then create a byte in two ways as shown below: using the ArrayBuffers object that represents a raw binary data buffer, or from a Base64 string that represents binary data in the ASCII format. const { NoSQLByte } = require('zcatalyst-sdk-node/lib/no-sql'); // Create a NoSQL Byte const buff = Buffer.from('Hello world !!!'); // Create a buffer object const byte = new NoSQLByte(buff); // Create a NoSQL byte using the ArrayBuffers object const byteA = new NoSQLByte(buff.toString('base64')); // Create a NoSQL byte from a Base64 string <br> ### Construct a NoSQL Byte Set Catalyst enables you to create a NoSQL byte set to store a collection of binary values of the *Set of Binary* data type, by creating a buffer object that is used to represent a sequence of bytes. You can then create a byte set by using the ArrayBuffers object that represents a raw binary data buffer, or from a Base64 string that represents binary data in the ASCII format. You can also create a byte set from passing constructed bytes as a byte array. const { NoSQLByte, NoSQLByteSet } = require('zcatalyst-sdk-node/lib/no-sql'); // Create a NoSQL Byte Set const buff = Buffer.from('Hello world !!!'); // Create a buffer object const byte = new NoSQLByte(buff); // Create a NoSQL byte using the ArrayBuffers object const byteA = new NoSQLByte(buff.toString('base64')); // Create a NoSQL byte from a Base64 string const byteSet = new NoSQLByteSet([byte, byteA]); // Create a NoSQL byte set from a NoSQL byte array const byteSetA = new NoSQLByteSet([buff.toString('base64')]); // Create a NoSQL Byte set from a Base64 string array const byteSetB = new NoSQLByteSet([buff]); // Create a NoSQL Byte set using the ArrayBuffers object <br> ### Construct a NoSQL String Set You can create a NoSQL string set of the *Set of String* data type from a string array as shown below. const { NoSQLStringSet } = require('zcatalyst-sdk-node/lib/no-sql'); // Create a NoSQL string set const stringSet = new NoSQLStringSet(['hello', 'world']); // Create a NoSQL string set from a string array <br> ### Construct a NoSQL Number Set You can create NoSQL number set of the *Set of Numbers* data type from an array of numbers or BigInt values as shown below. const { NoSQLNumberSet } = require('zcatalyst-sdk-node/lib/no-sql'); // Create a NoSQL number set const numberSet = new NoSQLNumberSet([123, 1234n]); // Create a NoSQL Number set from an array of numbers or BigInt values <br> ### Manipulate NoSQL Items Catalyst enables you to perform manipulations on a NoSQL items, such as creating a NoSQL item from a plain JavaScript object, or vice versa. You can create a NoSQL item by constructing a plain JavaScript object that contains the item's data in it, in the standard JSON format. You can then construct the NoSQL item from the JS object using NoSQLItem.from() as shown in the sample code below. You can also convert a NoSQL item back into a plain JavaScript object using itemFromObj.to(), as depicted in the code. const { NoSQLItem } = require('zcatalyst-sdk-node/lib/no-sql'); // Define an object const obj = { fruit: 'apple', // Partition key properties: { color: 'red' } }; const itemFromObj = NoSQLItem.from(obj); // Construct a NoSQL item from the plain JS object const plainJsObject = itemFromObj.to(); // Convert the item to a plain JS object -------------------------------------------------------------------------------- title: "Insert Items in Table" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK methods to insert items in a NoSQL table in various ways." last_updated: "2026-09-29T06:07:16.263Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/nosql/insert-items/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - Working with Data (/en/cloud-scale/help/nosql/working-with-data/introduction/) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # Insert Items in NoSQL Table Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst enables you to insert items in a specific NoSQL table after you construct them. The items can be inserted in different ways as described in this section. You can refer to the help sections on adding and working with data, the Catalyst custom JSON format, and the supported data types to learn these topics in detail. Note: Catalyst enables you to insert a maximum of 25 items in bulk in a NoSQL table with a single SDK operation. <br> ### Insert Items without Conditions You can insert new items into a NoSQL table without any conditions by constructing the items in the Catalyst custom JSON format. This will require you to mandatorily pass the values for the partition key and sort key attributes configured for the table. In the example given below, an item containing the value of the partition key attribute fruitName is provided as "Banana". Other attributes of the string data type such as fruitColor and fruitType are also added as a map called fruitProperties. The item is inserted using the insertItems() method. // Insert a NoSQL item without conditions const plainInsert = await table.insertItems({ // Define the item to be inserted with the partition key fruitName item: NoSQLItem.from({ fruitName: 'Banana', //Provide values for the other attributes of the item fruitProperties: { fruitColor: 'Yellow', fruitType: 'Berries' } }), // Set the return value in the response. Other supported values are "OLD" and "NULL" return: NoSQLReturnValue.NEW }); <br> ### Insert Items with Conditional Functions You can insert attributes in existing items in a NoSQL table using specific conditions that you define in the Catalyst custom JSON format. In this type, the existing data of the table is retrieved and evaluated against the specified condition. The items are inserted only if the evaluation is true. If there is no existing data, the conditions are ignored and the items are inserted. Catalyst supports multiple operators to evaluate conditions. The supported operators are represented as shown below. <table class="content-table nosql-components-table"> <thead> <tr> <th class="w10p">Operators</th> <th class="w10p">Notation</th> </tr> </thead> <tbody> <tr> <td>CONTAINS</td> <td>contains</td> </tr> <tr> <td>NOT_CONTAINS</td> <td>not_contains</td> </tr> <tr> <td>BEGINS_WITH</td> <td>begins_with</td> </tr> <tr> <td>ENDS_WITH</td> <td>ends_with</td> </tr> <tr> <td>IN</td> <td>in</td> </tr> <tr> <td>NOT_IN</td> <td>not_in</td> </tr> <tr> <td>BETWEEN</td> <td>between</td> </tr> <tr> <td>NOT_BETWEEN</td> <td>not_between</td> </tr> <tr> <td>EQUALS</td> <td>equals</td> </tr> <tr> <td>NOT_EQUALS</td> <td>not_equals</td> </tr> <tr> <td>GREATER_THAN</td> <td>greater_than</td> </tr> <tr> <td>LESS_THAN</td> <td>less_than</td> </tr> <tr> <td>GREATER_THAN_OR_EQUALS</td> <td>greater_equal</td> </tr> <tr> <td>LESSER_THAN_OR_EQUALS</td> <td>less_equal</td> </tr> <tr> <td>AND</td> <td>AND</td> </tr> <tr> <td>OR</td> <td>OR</td> </tr> </tbody> </table> <br> The example below illustrates this by defining a condition for the data type of the attribute fruitName to be String in the existing data. If the condition is satisfied, the attribute taste with the value "Sweet" is added to these items. // Insert a NoSQL item with the "attribute_type" function const attrTypeInsert = await table.insertItems({ // Define the item to be inserted item: NoSQLItem.from({ taste: 'Sweet' }), // Define the condition for insert condition: { // The condition specifies that the item should be added if the attribute type is String ("S") function: { // Set the function type function_name: 'attribute_type', // Supply the arguments to the function args: [ { // Set the attribute path attribute_path: ['fruitName'] }, // Set the attribute type NoSQLMarshall.makeString('S') // => { "S": "S" } ] } } }); <br> Here are some more sample snippets for inserting items with conditional functions. //Insert a NoSQL Item with the "equals" operator, attribute "name" value equals "apple" const operatorEqInsert = await table.insertItems({ // Define the item to be inserted item: NoSQLItem.from({ taste: 'Sweet' }), // Define the condition for insert condition: { // Set the attribute path attribute: ['name'], // Set the operator based on the operation operator: NoSQLOperator.EQUALS, // Set the value for comparison value: NoSQLMarshall.makeString('apple') // => { "S": "apple" } } }); //Insert a NoSQL Item with "group_operator", attribute "name" is "apple" AND attribute "variety" is "gala" const groupOpInsert = await table.insertItems({ // Define the item to be inserted item: NoSQLItem.from({ taste: 'Sweet' }), // Define the condition for insert condition: { // Set the group operator group_operator: NoSQLConditionGroupOperator.AND, // Supply the group conditions group: [ { // Set the attribute path attribute: 'name', // Set operator based on the operation operator: NoSQLOperator.EQUALS, // Set the value for comparison value: NoSQLMarshall.makeString('apple') // => { "S": "apple" } }, { // Set the attribute path attribute: 'variety', // Set the operator based on the operation operator: NoSQLOperator.EQUALS, // Set the value for comparison value: NoSQLMarshall.makeString('gala') // => { "S": "gala" } } ] } }); //Insert a NoSQL Item with the "begins_with" operator, attribute "name" value begins with "app" const beginsWithInsert = await table.insertItems({ // Define the item to be inserted item: NoSQLItem.from({ taste: 'Sweet' }), // Define the condition for insert condition: { // Set the attribute path attribute: ['name'], // Set the operator based on the operation operator: NoSQLOperator.BEGINS_WITH, // set the value for comparison value: NoSQLMarshall.makeString('app') // => { "S": "app" } } }); -------------------------------------------------------------------------------- title: "Update Items in Table" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to update items in a NoSQL table." last_updated: "2026-09-29T06:07:16.263Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/nosql/update-items/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - Working with Data (/en/cloud-scale/help/nosql/working-with-data/introduction/) - Basic Components (/en/cloud-scale/help/nosql/components/#basic-components) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/update-item/#UpdateItem) -------------------------------------------------------------------------------- # Update Items in Table Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst enables you to update items in a specific NoSQL table after you construct them. An item can be updated by identifying it using its primary keys. For instance, you can use just the partition key or a combination of the partition key and sort key to identify the item. You can then define the update operation type with the appropriate HTTP request method and provide the attributes and values to be updated in the item. Note: Catalyst enables you to update a maximum of 25 items in bulk in a NoSQL table with a single SDK operation. The example below illustrates this by identifying an item with the partition key fruitName and value "Apple". The values for the attributes of this item to be updated, color and taste are provided, along with the path to these attributes. The no-sql library from the zcatalyst-sdk-node package is required to define and construct the NoSQL item. const { NoSQLItem, NoSQLEnum } = require('zcatalyst-sdk-node/lib/no-sql'); const { NoSQLOperator } = NoSQLEnum; // Update a NoSQL Item identified with the partition key "apple" with its properties attribute updated const updatedItems = await table.updateItems({ // Define the partition key value of the item to be updated keys: [new NoSQLItem().addString('fruit', 'apple')], // Define the attributes to be updated update_attributes: [ { // Specify the type of the update operation operation_type: NoSQLUpdateOperationType.PUT, // Provide the values for the attribute to be updated update_value: NoSQLMarshall.makeMap({ color: 'Green', taste: 'Sour' }), // Specify the path to the attributes attribute_path: ['fruitProperties'] } ] }); -------------------------------------------------------------------------------- title: "Fetch Items from Table" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to fetch items from a NoSQL table." last_updated: "2026-09-29T06:07:16.263Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/nosql/fetch-items/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - Basic Components (/en/cloud-scale/help/nosql/components/#basic-components) - Working with Data (/en/cloud-scale/help/nosql/working-with-data/introduction/) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/fetch-item/#FetchItem) -------------------------------------------------------------------------------- # Fetch Items from NoSQL Table Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst enables you to fetch items from a NoSQL table by identifying them with their primary keys. For instance, you can use just the partition key or a combination of the partition key and sort key to fetch the item. You can also optionally filter the attributes to be fetched by specifying the required attributes. Note: Catalyst enables you to fetch a maximum of 100 items from a NoSQL table in a single SDK read operation. The example below illustrates fetching an item identified by its partition key fruit with the value "apple" using fetchItem(). Specific attributes such as properties and taste are filtered to be fetched using required_attributes. The code snippet also uses consistent_read to indicate if the read operation must be done using the master or a slave cluster. When set to true, it is queried from the master. If false, it is queried from the slave. Note: In the master-slave replication, the master contains all the data of the database, and the slave contains copies from the master. Performing a read operation from the slave can reduce the overall cost with the trade-off being a minor delay in the updated data being reflected. The no-sql library from the zcatalyst-sdk-node package is required to define the NoSQL item. const { NoSQLItem } = require('zcatalyst-sdk-node/lib/no-sql'); //Fetch properties of a NoSQLItem identified with the partition key value "apple" const fetchedItem = await table.fetchItem({ // Define the partition key and value of the item to be fetched keys: [new NoSQLItem().addString('fruit', 'apple')], // Set consistent_read to true to query from master. If set to false, it is queried from slave. consistent_read: true, // Specify the attributes to be fetched required_attributes: [['properties', 'taste']] }); -------------------------------------------------------------------------------- title: "Query Table" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to query a NoSQL table." last_updated: "2026-09-29T06:07:16.264Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/nosql/query-table/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - Table Keys (/en/cloud-scale/help/nosql/components/#table-keys) - JavaScript SDK (/en/sdk/javascript/v1/cloudscale/nosql/query-table/) -------------------------------------------------------------------------------- # Query NoSQL Table Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst enables you to query a NoSQL table and retrieve data by identifying the items using the primary keys of the table. For instance, you can use just the partition key or a combination of the partition key and sort key to retrieve the item. Note: Catalyst enables you to retrieve a maximum of 100 items in bulk from a NoSQL table with pagination from a single SDK operation. You must use the start_key token received in the SDK response and construct the logic for pagination. You can define the key condition that identifies the item by specifying the attributes, their required values, and the supported operator to be used. The supported operators are represented as shown below. <table class="content-table nosql-components-table"> <thead> <tr> <th class="w10p">Operators</th> <th class="w10p">Notation</th> </tr> </thead> <tbody> <tr> <td>CONTAINS</td> <td>contains</td> </tr> <tr> <td>NOT_CONTAINS</td> <td>not_contains</td> </tr> <tr> <td>BEGINS_WITH</td> <td>begins_with</td> </tr> <tr> <td>ENDS_WITH</td> <td>ends_with</td> </tr> <tr> <td>IN</td> <td>in</td> </tr> <tr> <td>NOT_IN</td> <td>not_in</td> </tr> <tr> <td>BETWEEN</td> <td>between</td> </tr> <tr> <td>NOT_BETWEEN</td> <td>not_between</td> </tr> <tr> <td>EQUALS</td> <td>equals</td> </tr> <tr> <td>NOT_EQUALS</td> <td>not_equals</td> </tr> <tr> <td>GREATER_THAN</td> <td>greater_than</td> </tr> <tr> <td>LESS_THAN</td> <td>less_than</td> </tr> <tr> <td>GREATER_THAN_OR_EQUALS</td> <td>greater_equal</td> </tr> <tr> <td>LESSER_THAN_OR_EQUALS</td> <td>less_equal</td> </tr> <tr> <td>AND</td> <td>AND</td> </tr> <tr> <td>OR</td> <td>OR</td> </tr> </tbody> </table> <br> In the example below, the query is executed using the queryTable() method by identifying the items using the partition key fruitType and specifying the condition value as "Citrus". Catalyst NoSQL also lets you define other elements of the query, such as using consistent_read to indicate if the read operation must be done using the master or a slave cluster, limiting the number of rows to be returned, and specifying the sorting order as ascending. Note: In the master-slave replication, the master contains all the data of the database, and the slave contains copies from the master. Performing a read operation from the slave can reduce the overall cost with the trade-off being a minor delay in the updated data being reflected. The no-sql library from the zcatalyst-sdk-node package is required to define the NoSQL item. const { NoSQLMarshall, NoSQLEnum } = require('zcatalyst-sdk-node/lib/no-sql'); const { NoSQLOperator } = NoSQLEnum; // Query a NoSQL table to fetch the items identified by the partition key fruitType with the value "citrus" const queriedItem = await table.queryTable({ // Define the key condition to query the items with key_condition: { // Specify the partition key attribute name of the table attribute: 'fruitType', // Define the supported operator to be used. You can also use BETWEEN, GREATERTHAN, LESSERTHAN, GREATERTHANOREQUALTO, LESSERTHANOREQUALTO operator: NoSQLOperator.EQUALS, // Specify the value for comparison value: NoSQLMarshall.makeString('Citrus') }, // Set consistent_read to true to query from master. If set to false, it is queried from slave. consistent_read: true, // Limit the number of rows to be returned by specifying a value limit: 10, // Set forward_scan to true to sort the results in ascending order. Otherwise, it is sorted in the descending order. forward_scan: true }); -------------------------------------------------------------------------------- title: "Query Index" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to query a NoSQL index." last_updated: "2026-09-29T06:07:16.264Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/nosql/query-index/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - Table Keys (/en/cloud-scale/help/nosql/components/#table-keys) - JavaScript SDK (/en/sdk/javascript/v1/cloudscale/nosql/query-index/) -------------------------------------------------------------------------------- # Query Index in NoSQL Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst enables you to query a NoSQL index and retrieve data by identifying the items using the primary keys of the index. Indexing allows you to execute alternate queries on the table data without making use of the primary keys of the main table. You can configure indexes from the Catalyst console. You can use just the partition key or a combination of the partition key and sort key of the index to retrieve an item. Note: Catalyst enables you to retrieve a maximum of 100 items in bulk from a NoSQL table with pagination from a single SDK operation. You must use the start_key token received in the SDK response and construct the logic for pagination. You can define the key condition that identifies the item by specifying the attributes, their required values, and the supported operator to be used. The supported operators are represented as shown below. <table class="content-table nosql-components-table"> <thead> <tr> <th class="w10p">Operators</th> <th class="w10p">Notation</th> </tr> </thead> <tbody> <tr> <td>CONTAINS</td> <td>contains</td> </tr> <tr> <td>NOT_CONTAINS</td> <td>not_contains</td> </tr> <tr> <td>BEGINS_WITH</td> <td>begins_with</td> </tr> <tr> <td>ENDS_WITH</td> <td>ends_with</td> </tr> <tr> <td>IN</td> <td>in</td> </tr> <tr> <td>NOT_IN</td> <td>not_in</td> </tr> <tr> <td>BETWEEN</td> <td>between</td> </tr> <tr> <td>NOT_BETWEEN</td> <td>not_between</td> </tr> <tr> <td>EQUALS</td> <td>equals</td> </tr> <tr> <td>NOT_EQUALS</td> <td>not_equals</td> </tr> <tr> <td>GREATER_THAN</td> <td>greater_than</td> </tr> <tr> <td>LESS_THAN</td> <td>less_than</td> </tr> <tr> <td>GREATER_THAN_OR_EQUALS</td> <td>greater_equal</td> </tr> <tr> <td>LESSER_THAN_OR_EQUALS</td> <td>less_equal</td> </tr> <tr> <td>AND</td> <td>AND</td> </tr> <tr> <td>OR</td> <td>OR</td> </tr> </tbody> </table> <br> In the example below, the query is executed by identifying the items using the index FruitIdentifier 's partition key fruitColor and specifying the condition value as "yellow". The query is done using the queryIndex() method. Catalyst NoSQL also lets you define other elements of the query, such as using consistent_read to indicate if the read operation must be done using the master or a slave cluster, limiting the number of rows to be returned, and specifying the sorting order as ascending. Note: In the master-slave replication, the master contains all the data of the database, and the slave contains copies from the master. Performing a read operation from the slave can reduce the overall cost with the trade-off being a minor delay in the updated data being reflected. The no-sql library from the zcatalyst-sdk-node package is required to define the NoSQL item. const { NoSQLMarshall, NoSQLEnum } = require('zcatalyst-sdk-node/lib/no-sql'); const { NoSQLOperator } = NoSQLEnum; //Query a NoSQL table index to fetch the items identified by the partition key fruitColour with the value "yellow" const queriedIndexItems = await table.queryIndex('FruitIdentifier', { //Define the key condition to query the items with key_condition: { attribute: 'fruitColor', //Define the supported operator to be used operator: NoSQLOperator.EQUALS, value: NoSQLMarshall.makeString('yellow') }, // Set consistent_read to true to query from master. If set to false, it is queried from slave. consistent_read: true, //Limit the number of rows to be returned by specifying a value limit: 15, // Set forward_scan to true to sort the results in ascending order. Otherwise, it is sorted in the descending order. forward_scan: true }); -------------------------------------------------------------------------------- title: "Delete Items from Table" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to delete items from a NoSQL table." last_updated: "2026-09-29T06:07:16.264Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/nosql/delete-items/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - Working with Data (/en/cloud-scale/help/nosql/working-with-data/introduction/) - Basic Components (/en/cloud-scale/help/nosql/components/#basic-components) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/delete-item/#DeleteItem) -------------------------------------------------------------------------------- # Delete Items from NoSQL Table Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. You can delete items from a NoSQL table in Catalyst by identifying them using the primary keys of the table. For instance, you use just the partition key, or a combination of the partition key and sort key of the table, to identify an item. Note: Catalyst enables you to delete a maximum of 25 items in bulk from a NoSQL table with a single SDK operation. The delete operation is performed using the deleteItems() method as shown in the example below. The item with the partition key fruit matching "apple" is deleted. The no-sql library from the zcatalyst-sdk-node package is required to define NoSQL items. const { NoSQLItem } = require('zcatalyst-sdk-node/lib/no-sql'); //Delete a NoSQL item from the table with partition key "fruit" and the value matching "apple" const deletedItems = await table.deleteItems({ //Specify the partition key value of the item to be deleted keys: NoSQLItem.from({ fruit: 'apple' }) }); ### Push Notifications -------------------------------------------------------------------------------- title: "Get Push Notifications Instance" description: "This page describes the method to send out remote notifications to end-users from your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.265Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/push-notifications/get-component-instance/" service: "Cloud Scale" related: - Push notifications (/en/cloud-scale/help/push-notifications/introduction) -------------------------------------------------------------------------------- # Push Notifications Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst Push notifications enables you to send remote notifications to the users of your application, even when the app is not actively running on the user device. You can send push notifications to a specific list of target users. You can include alerts, updates, or promotional content for the user to engage with your application. Before you send push notifications, you must enable it for your web app when the user allows it. You can do this by implementing this code snippet in your web client. You can also access this code from the Push Notifications section in your Catalyst remote console. You must ensure that you include the web initialization script. ### Get Component Instance You can create a pushNotification component reference as shown below. This will not fire a server-side call. We will refer to this component instance while sending push notifications. //Get a pushNotification instance const pushNotification = app.pushNotification(); -------------------------------------------------------------------------------- title: "Send Notifications to Web Apps" description: "This page describes the method to send out remote notifications to end-users from your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.265Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/push-notifications/send-notifications/" service: "Cloud Scale" related: - Send Notifications - API (/en/api/code-reference/cloud-scale/push-notifications/web/send-web-push-notifications/#SendWebNotifications) - Push Notifications (/en/cloud-scale/help/push-notifications/introduction) -------------------------------------------------------------------------------- # Send Push Notifications to Web Apps Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst enables you to send push notifications to 50 users in a single function call. You can add the user IDs of all users to be notified in an array as shown below. You must then pass the array to the sendNotification() method, along with the message string to include in the notification. This string can be plain text, HTML, or a JSON object to be parsed. The pushNotification instance used here is the component instance. var userList = []; //Include the user IDs of all users userList.push(1234556789098); userList.push(6756467677890); userList.push(3557866876887); catalystApp.pushNotification().web().sendNotification("Hi there! The task you scheduled has been completed.", userList); //Pass the array with the message string You can also send the notifications to users by including their email addresses instead of their User IDs. You must add the email addresses in an array, and pass it to sendNotification() along with the message string in the same way. var userList = []; //Include the email addresses of the users userList.push("emma@zylker.com"); userList.push("p.boyle@zylker.com"); userList.push("noel@zylker.com"); catalystApp.pushNotification().web().sendNotification("Hi there! The task you scheduled has been completed.", userList); //Pass the array with the message string -------------------------------------------------------------------------------- title: "Send Notifications to Mobile Apps" description: "This page describes the method to send out remote notifications to end-users from your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.265Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/push-notifications/send-notifications-mobile/" service: "Cloud Scale" related: - Push Notifications (/en/cloud-scale/help/push-notifications/introduction) -------------------------------------------------------------------------------- # Push Notifications to Mobile Apps Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. The Catalyst Cloud Scale Push Notifications component enables you to send notifications to mobile applications built on the Android or iOS platforms. You can send push notifications to a specific target user by using their Catalyst User ID or email address. You can include alerts, updates, or promotional content for the user to engage with your application. To set up push notifications, you must meet the following prerequisites: 1. You must register your mobile application with Catalyst and note down the Application ID (appId) from the console after configuring. You can opt to register your application installed in the target device either using individual platform-specific Catalyst mobile SDK methods (available in Android and iOS) or using the Flutter SDK. The appId can be fetched by configuring Android Push Notifications service directly in the Catalyst console. Learn about registering your Android app using Android SDK. Learn about registering your iOS app using iOS SDK. Learn about registering your mobile apps (Android or iOS) using Flutter SDK. 2. The mobile application must mandatorily use the Catalyst Serverless Authentication component. After all the setup is done, the Catalyst user must be logged in on their device to receive the notification promptly. Once the setup is complete, you can send notifications by calling the Node.js SDK method below, using your generated Application ID to target the specific app. ### Get Mobile Notification Instance You can create a mobile notification instance and use it to refer to a specific mobile app registered in the Catalyst console. This is done by fetching the mobile notification instance with the pushNotification().mobile() method, by passing the generated appID as a parameter. We will use this mobile notification instance to perform additional operations with the Node.js SDK methods, such as sending push notifications, which will be covered in the next section. const notification = app.pushNotification().mobile("1234567890"); Here, 1234567890 is the appID. Alternatively, if your application involves Catalyst scope-based access, you can pass the ZCProject project parameter along with the appID. Learn more about Catalyst SDK Scopes. const notification = app.pushNotification().mobile("1234567890", ZCProject project); #### Send Android Push Notifications After you have registered your Android application with Catalyst for sending push notifications, you can use the sendAndroidNotification() method to send push notifications to your application. You will need to pass two parameters to the sendAndroidNotification() method: MobileNotification.sendAndroidNotification(notifyObj: ICatalystPushDetails, recipient: string): Promise<ICatalystMobileNotification> * notifyObj - An object with the details of the push notification message. * recipient - The Catalyst User ID of the recipient or the email address of the recipient to whom the message has to be delivered. You can use the below code snippet to call the sendAndroidNotification() method in your application: notification.sendAndroidNotification({ message: 'This message is to test if the functionality is working fine!', badge_count: 1 }, 'emma.b@zylker.com'); badge_count sets the app icon's notification badge count to 1. You can change this value to any number you require. #### Send iOS push notifications After you have registered your iOS application with Catalyst for sending push notifications, you can use the sendIOSNotification() method to send push notifications to your application. You will need to pass two parameters to the sendIOSNotification() method: MobileNotification.sendIOSNotification(notifyObj: ICatalystPushDetails, recipient: string): Promise<ICatalystMobileNotification> You can use the below code snippet to call the sendIOSNotification() method in your application: notification.sendIOSNotification({ message: 'This message is to test if the functionality is working fine!', badge_count: 1 }, 'emma@zylker.com'); ### Search -------------------------------------------------------------------------------- title: "Get Search Instance" description: "This page describes the method to search data in multiple tables in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.265Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/search/get-a-component-instance/" service: "Cloud Scale" -------------------------------------------------------------------------------- # Search Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. ### Search Data in Indexed Columns The search process specifies the pattern to search for in the search indexed columns of the tables. You can search for data in multiple tables or just data in search indexed columns. To learn more about search please refer to the information here. ### Get Component Instance The search reference can be created using the following method which does not fire a server-side call: //Get an search instance let search = app.search(); -------------------------------------------------------------------------------- title: "Search Data" description: "This page describes the method to search data in multiple tables in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.266Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/search/search-data/" service: "Cloud Scale" related: - Search Data - API (/en/api/code-reference/cloud-scale/search/execute-search-query/#ExecuteSearchQuery) - Search Integration (/en/cloud-scale/help/search-integration/introduction) -------------------------------------------------------------------------------- # Search Data Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst Search enables you to search and retrieve data records from the Catalyst Data Store. You can execute a search query using the executeSearchQuery() method for searching for a particular pattern of data. The search reference used in the code snippet is the component instance. #### Create a JSON Configuration The following code snippet creates a JSON object that contains the attributes of the pattern to be searched for, in the indexed columns of the individual tables. //Create a config object with the search term, table and indexed columns let config = { search: 'santh\*',search_table_columns: { SampleTable: ['SearchIndexedColumn'], Users: ['SearchTest'] } }; ### Execute Search Query The JSON object created in the previous section is passed as a parameter to the _executeSearchQuery()_ method which returns a promise. The promise returned will be resolved to an object which is a JSON. //Execute the search query by passing the configuration let search = app.search(); let searchPromise = search.executeSearchQuery(config); searchPromise.then(searchResult => { console.log(searchResult); }); A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node.js { AlienCity: [ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-13 13:49:19:475", CityName: "Dallas", CREATEDTIME: "2021-08-13 13:49:19:475", ROWID: "2136000000008508" } ] } ### Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page lists all the Node.js SDK methods required to carry out Stratus operations through code." last_updated: "2026-09-29T06:07:16.266Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/overview/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Stratus Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. ## Overview Cloud Scale Stratus is Catalyst's robust and powerful storage solution. You can store data of any format in the form of Objects in containers called Buckets. Each Bucket and every individual object in the bucket has a secure Object URL and Bucket URL. You can perform upload and download operations on objects and even provide custom permissions for each object. The following table contains the list of all the Catalyst SDKs that can be used to perform Stratus operations through code. <table class="content-table"> <thead> <tr> <th class="w30p">Category</th> <th class="w70p">SDK Method</th> </tr> </thead> <tbody> <tr> <td>General Stratus Operations</td> <td> <ul> <li>Create Stratus Instance</li> <li>Check Bucket Availability</li> <li>List Buckets</li> </ul> </td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>Create Bucket Instance</li> <li>Get Bucket Details</li> <li>Get Bucket CORS</li> <li>List Objects in a Bucket <ul> <li>List all Objects by Pagination</li> <li>List Objects Through Iteration</li> </ul> </li> <li>Check Object Availability</li> <li>Download Object <ul> <li>Download an Object</li> <li>Download a Portion of the Object</li> <li>Download an Object Using Transfer Manager</li> <li>Generate Presigned URL to Download an Object</li> </ul> </li> <li>Upload Object <ul> <li>Upload Object as a Stream</li> <li>Upload Object as a String</li> <li>Upload Object with Options</li> <li>Upload Object Using Multipart</li> <li>Upload an Object Using Transfer Manager</li> <li> Generate Presigned URL to Upload an Object</li> </ul> </li> <li>Extract a Zipped Object In Stratus <ul> <li>Get Zip Extraction Status</li> </ul> </li> <li>Copy Object</li> <li>Rename and Move Operations on an Object</li> <li>Delete Objects <ul> <li>Delete a Single Object</li> <li>Delete a Specific Version of an Object after a Specific Time</li> <li>Delete Multiple Objects</li> <li>Truncate Bucket</li> <li>Delete a Path in the Bucket</li> </ul> </li> </ul> </td> </tr> <tr> <td>Object Operations</td> <td> <ul> <li>Create Object Instance</li> <li>List Object Versions <ul> <li>List All Versions of an Object Through Pagination</li> <li>List All Versions of the Object Through Iteration</li> </ul> </li> <li>Get Object Details <ul> <li>Get Details of All Objects</li> <li>Get Details of a Particular Version of the Object</li> </ul> </li> <li>Put Object Meta Data</li> </ul> </td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Create Stratus Instance" description: "This page lists the Node.js SDK method to create a Stratus instance." last_updated: "2026-09-29T06:07:16.267Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/create-stratus-instance/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/create-stratus-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-stratus-instance/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/check-bucket-availability/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/initialize-stratus/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Stratus Instance Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. You can get the stratus component reference as shown below. This will not fire a server-side call. We will refer to this component instance in various code snippets of working with Stratus. // Get a stratus instance const stratus = app.stratus(); -------------------------------------------------------------------------------- title: "Check Bucket Availability" description: "This page lists the Node.js SDK method to check if the bucket exists in your project." last_updated: "2026-09-29T06:07:16.267Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/check-bucket/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/check-bucket/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/check-bucket/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Check Bucket Availability Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Using the headBucket() SDK method, you can check the existence of a bucket in Stratus, and further check if the user has the relevant permissions to access the objects present in the bucket. The Stratus reference used in the below code snippet is the component instance. Possible responses when using this SDK: * If the bucket exists and if the user has the relevant permissions to access the bucket, the response '**true**' will be returned. * If the bucket does not exist, or if the user does not have permission to access the bucket, the response '**false**' will be returned. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>bucketName</td> <td>String</td> <td>A Mandatory parameter. Will hold the unique name of the bucket.</td> </tr> <tr> <td>throwErr</td> <td>Boolean</td> <td>An Optional parameter. If you set this parameter as "true", then it will throw an error when the bucket is not found in the project. The default value is "false"</td> </tr> </tbody> </table> const headBucketResponse = await stratus.headBucket('bucketName'); // check the bucket is available in stratus console.log(headBucketResponse); **Possible Errors** Note: If you use the SDK with the throw_err parameter, and the bucket does not exist, or if you do not have sufficient permissions then you may encounter any of the errors listed below. <table class="content-table"> <thead> <tr> <th class="w30p">Error Code</th> <th class="w70p">Meaning</th> </tr> </thead> <tbody> <tr> <td>404</td> <td>Not Found. Bucket Not found in Stratus.</td> </tr> <tr> <td>401</td> <td>Unauthorized/Access Denied - User doesn't have permission to perform the particular operation.</td> </tr> <tr> <td>403</td> <td>Permission Denied - User does not have permission to access the particular bucket.</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "List Buckets" description: "This page lists the Node.js SDK method to list buckets created in your project." last_updated: "2026-09-29T06:07:16.267Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/list-buckets/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/list-buckets/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/list-buckets/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # List Buckets Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. The following SDK method will return all the buckets present in the project. The Stratus reference used in the below code snippet is the component instance. const responses= await stratus.listBuckets(); // return all the buckets console.log(responses); Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section #### Example Response [ { "bucket_name": "zcstratus122", "project_details": { "project_name": "Learn", "id": "6759000000014001", "project_type": "Live" }, "created_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "created_time": "Mar 26, 2024 12:44 PM", "modified_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "modified_time": "Mar 30, 2024 11:38 AM", "bucket_meta": { "versioning": "False", "caching": { "status": "Enabled", "delivery_point_id": "01ht6zj7k536c29ymsgfeky1mg" }, "encryption": "False", "audit_consent": "False" }, "bucket_url": "https://zcstratus122-development.zohostratus.com" }, { "bucket_name": "zcstratus12345", "project_details": { "project_name": "Learn", "id": "6759000000014001", "project_type": "Live" }, "created_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "created_time": "Mar 13, 2024 05:51 PM", "modified_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "modified_time": "Apr 18, 2024 12:44 PM", "bucket_meta": { "versioning": "True", "caching": { "status": "Enabled", "delivery_point_id": "01hrxy25tv1vex73qhm85g88bf" }, "encryption": "False", "audit_consent": "False" }, "bucket_url": "https://zcstratus12345-development.zohostratus.com" } ] -------------------------------------------------------------------------------- title: "Create Bucket Instance" description: "This page lists the Node.js SDK method to create a bucket instance." last_updated: "2026-09-29T06:07:16.267Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Create a Bucket Help Documentation (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Bucket Instance Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. To perform bucket level operations, you need to create a bucket instance. We will refer to this component instance in various code snippets of working with Buckets in Stratus. const bucket = stratus.bucket("bucketName"); -------------------------------------------------------------------------------- title: "Get Bucket Details" description: "This page lists the Node.js SDK method to get all possible details of a bucket." last_updated: "2026-09-29T06:07:16.268Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/get-bucket-details/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Create a Bucket Help Documentation (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Get Bucket Details Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. The following SDK method will allow you to get all available details of a particular bucket. The Bucket reference used in the below code snippet is the component instance. const buckets = await bucket.getDetails(); // get details of a given bucket console.log(buckets); #### Example Response { "bucket_name": "zcstratus122", "project_details": { "project_name": "Learn", "id": "6759000000014001", "project_type": "Live" }, "created_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "created_time": "Mar 26, 2024 12:44 PM", "modified_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "modified_time": "Mar 30, 2024 11:38 AM", "bucket_meta": { "versioning": "False", "caching": { "status": "Enabled", "delivery_point_id": "01ht6zj7k536c29ymsgfeky1mg" }, "encryption": "False", "audit_consent": "False" }, "bucket_url": "https://zcstratus122-development.zohostratus.com", "caching_url": "https://zcstratus122-development.nimbuslocaledge.com", "objects_count": "74", "size_in_bytes": "925906411" } -------------------------------------------------------------------------------- title: "Get Bucket CORS" description: "This page lists the Node.js SDK method to get the current CORS configuration of the bucket." last_updated: "2026-09-29T06:07:16.268Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/get-bucket-cors/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Stratus Bucket CORS Help Documentation (/en/cloud-scale/help/stratus/stratus-config/bucket-cors/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/get-bucket-cors/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/get-bucket-cors/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Get Bucket CORS Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. The getCors() SDK method, will return the current CORS configuration of a specific bucket in Stratus. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section CORS of a bucket can be edited by any user that has or has been granted Write permission for Stratus component in the project, using the Profiles & Permissions section. Note: You can find out more about Bucket CORS from this help section. const cors = await bucket.getCors(); console.log(cors); -------------------------------------------------------------------------------- title: "List Objects in a Bucket" description: "This page lists the Node.js SDK method to list the objects stroed in a bucket." last_updated: "2026-09-29T06:07:16.268Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/list-objects/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/list-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/list-objects/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/get-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/get-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/get-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # List Objects in a Bucket Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. ### List all Objects by Pagination This SDK method will allow you to get a list of all the objects present in a particular bucket by pagination. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section For each call, a limited number of objects will be returned, and the next call will be initiated only if a continuation token is returned. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>maxKey</td> <td>String</td> <td>A Mandatory parameter. Will contain the maximum limit of objects that can be listed by pagination.</td> </tr> <tr> <td>nextToken</td> <td>String</td> <td>An Mandatory parameter. Will contain the token to get the next set of objects.</td> </tr> <tr> <td>prefix</td> <td>String</td> <td>An Optional parameter. To list objects that match the prefix value.</td> </tr> <tr> <td>orderBy</td> <td>String</td> <td>An Optional parameter. To list objects either in ascending or descending order. Default Value: asc</td> </tr> <tr> <td>folderListing</td> <td>String</td> <td>An Optional parameter. To choose to list either just the root-level objects in the bucket or list all the objects present in all the paths of the bucket. Default Value: false<br />For instance, if you set value as true; the root-level objects alone will be listed. If you set the value as false; all the objects present in all the paths of the bucket will be listed </td> </tr> </tbody> </table> In the following SDK method, a maximum value of pagination is set using maxKey. Using prefix, you can list objects that only match the prefix. The response we get will contain the following properties of the bucket, which will be stored in moreOptions: * key count: Will contain the value of the number of objects that are being returned * max keys: The maximum limit of objects that can be returned * Truncated: Will contain the status to notify if a bucket is truncated or not. * contents: List of object details * continuation_token: If you a sent a continuation_token in the request, it will be shown in the response. * next_continuation_token: If the response was truncated, the value of this key must be passed as continuation_token to the same method for retrieving the next set of objects. With each iteration, we will list the maxKey number of objects and check if nextToken has been created. Using nextToken we will continue the iteration till all the objects have been listed. async function listMyPaginatedObjects(maxKeys = null, prefix = null, nextToken = null) { const options = { // Maximum number of keys to return in one call maxKeys, // Token to fetch the next page of objects continuationToken: nextToken, // Order in which objects are listed: 'asc' or 'desc' // orderBy: 'desc', // Whether to list objects in a folder-like structure (true) or flat structure (false) // folderListing: 'true', // Only list objects with this prefix prefix }; // Retrieve a page of objects const objects = await bucket.listPagedObjects(options); console.log("response:", objects.contents); // If more objects are available, recursively fetch the next set if (objects.truncated) { listMyPaginatedObjects(maxKeys, prefix, objects.next_continuation_token); } } // Initial call to list objects with a maximum of 2 keys per page and prefix "sam" await listMyPaginatedObjects(5, "sam"); #### Example Response { "prefix": "sam", "key_count": "5", "max_keys": "5", "truncated": "True", "next_continuation_token": "47VrqTzR9ukMF9gr8YcziVVzdRP5GCjq1NfM5fMBpMfvw5qcXFRSueuqCTRUCzNd9dHfquXHi2afDanLH6MbyJo6", "contents": [ { "key_type": "file", "key": "sam1s2ww.mp4", "size": "427160684", "content_type": "video/mp4", "etag": "78c2b173b56cd944e9c79abd601f6073", "last_modified": "May 21, 2024 01:00 PM" }, { "key_type": "file", "key": "samdm.txt", "size": "23", "content_type": "text/plain; charset=utf-8", "etag": "c0122754f465e42eb97b5af174663c29", "last_modified": "May 14, 2024 01:30 PM" }, { "key_type": "file", "key": "samplvbse1.json", "size": "8", "content_type": "application/json", "etag": "499e7dbaee453352a9c17407a676dbda", "last_modified": "May 13, 2024 10:05 AM" }, { "key_type": "file", "key": "samplse1.json", "size": "8", "content_type": "application/json", "etag": "499e7dbaee453352a9c17407a676dbda", "last_modified": "May 13, 2024 09:20 AM" }, { "key_type": "file", "key": "sampjkhdldbed.mp4", "size": "0", "content_type": "video/mp4", "etag": "d41d8cd98f00b204e9800998ecf8427e", "last_modified": "May 12, 2024 10:54 PM" } ] } <br> ### List Objects Through Iteration Using this SDK method, you can list all the objects present in a bucket in a single API call, using iteration technique. Using the maxKey variable, you can access the required number of objects. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section const options = { // Maximum number of objects returned per request maxKeys: 5, // Order in which objects are listed: 'asc' or 'desc' // orderBy: 'desc', // Whether to list objects in a folder-like structure (true) or flat structure (false) // folderListing: 'true', // Only list objects that begin with the specified prefix prefix: 's' }; // List iterable files from the bucket const files = bucket.listIterableObjects(options); for await (const file of files) { console.log('file:', file); } #### Example Response { "key_type": "file", "key": "ssdgs.mp4", "size": "3145728", "content_type": "video/mp4", "etag": "9685b8d5b8b719274bac854b897d95ec", "last_modified": "May 21, 2024 03:49 PM" } { "key_type": "file", "key": "Sasss.mp4", "size": "2674", "content_type": "video/mp4", "etag": "24c1122087e9be930ff1e957e83f5224", "last_modified": "May 21, 2024 02:55 PM" } { "key_type": "file", "key": "Samfplessss.mp4", "size": "2674", "content_type": "video/mp4", "etag": "24c1122087e9be930ff1e957e83f5224", "last_modified": "May 21, 2024 02:52 PM" } { "key_type": "file", "key": "demo.mp4", "size": "3400", "content_type": "video/mp4", "etag": "24e957e83f5224c1122087e9be930ff1", "last_modified": "May 21, 2024 02:52 PM" } { "key_type": "file", "key": "performance.mp4", "size": "1454", "content_type": "video/mp4", "etag": "087e9be930ff124c1122e957e83f5224", "last_modified": "May 21, 2024 02:52 PM" } -------------------------------------------------------------------------------- title: "Check Object Availability" description: "This page lists the Node.js SDK method to check if an object is present in a bucket." last_updated: "2026-09-29T06:07:16.268Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/check-object-availability/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/check-object-availability/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/check-object-availability/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Check Object Availability Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Using this SDK method, you can check if a particular object is present in the bucket, if the user has the required permissions to access the object. The Bucket reference used in the below code snippet is the component instance. If you have enabled Versioning for your bucket, then you need to pass the versionID as the param, to check if a particular version of the object is available. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section When you use this SDK method, you will get either of the following responses: - **true**: If the object is available, the specified version is available, and if the user has the relevant permissions to access the objects. - **false**: - If the object or the particular version of the object is not available in the bucket. - If the user does not have the required permissions to access the object. - If the bucket does not exist. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>objectName</td> <td>String</td> <td>A Mandatory parameter. Will hold the complete name of the object.</td> </tr> <tr> <td>versionId</td> <td>String</td> <td>An Optional parameter. Will hold the unique version ID of the object, if Versioning is enabled.</td> </tr> <tr> <td>throwErr</td> <td>Boolean</td> <td>An Optional parameter. If you set this parameter as "true", then it will throw an error when the bucket is not found in the project. The default value is "false"</td> </tr> </tbody> </table> const options = { versionId: 'djkfhdiufy762', throwErr: false }; const headObjectRes = await bucket.headObject("sam/out/sample.txt", options); console.log(headObjectRes); **Possible Errors** Note: If you use the SDK with the throwErr parameter, and the object does not exist, or if you do not have sufficient permissions then you may encounter any of the errors listed below. <table class="content-table"> <thead> <tr> <th class="w30p">Error Code</th> <th class="w70p">Meaning</th> </tr> </thead> <tbody> <tr> <td>404</td> <td>Not Found. Object Not found.</td> </tr> <tr> <td>401</td> <td>Unauthorized/Access Denied - User doesn't have permission to perform the particular operation.</td> </tr> <tr> <td>403</td> <td>Permission Denied - User does not have permission to access the particular object.</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Download Object" description: "This page lists the Node.js SDK method to download objects from a bucket." last_updated: "2026-09-29T06:07:16.269Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Download Object Help Documentation (/en/cloud-scale/help/stratus/objects/manage-object/download-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/download-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/download-object/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/download-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/download-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/download-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Download Object Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. ### Download an Object The SDKs present in the section will allow you to download a particular object, multiple objects, or version of the object. The Bucket reference used in the below code snippet is the component instance. The first step of the download operation is a GET operation that retrieves the required object from the bucket. To be able to download an object, the requester must have READ access permissions. However, owners of the bucket do have the option to grant READ access permissions to users, allowing them to download the object without using the required response headers. If Versioning is enabled for your bucket, you need to pass the versionId to download the particular version of the object. If no versionId is passed, then by default, the latest version of the object will be downloaded. If *Versioning* was enabled for a bucket, then disabled. By default, the principal first object will be downloaded. To ensure you download the latest version of this object, you need to pass the versionId param with the value "topVersion". const res = await bucket.getObject("sam/out/sample.txt"); // download the object to local machine const files = fs.createWriteStream('filePath'); res.on('data', (data) => { files.write(data) }); ### Download a Portion of the Object The following SDK method is used with the range parameter. The range parameter allows you to download a specific range of bytes of an object. const options = { 'versionId': 'djkshr8374yiuhf48', // download the object with given versionId 'range': '0-2000' // start and end range of the object in bytes } const res = await bucket.getObject("sam/out/sample.txt", options); // download the object to your local machine const files = fs.createWriteStream('filePath'); res.on('data', (data) => { files.write(data) }); ### Download an Object Using Transfer Manager In this section, we are going to go over SDK methods that will allow you to successfully download large objects from Stratus to your local system using **Transfer Manager** technique. Transfer Manager is an operation where the large object is split into multiple byte ranges using the start and end bytes range of the object. Each of the object's parts is then returned as a stream, and they are downloaded to your local system. **Ensure the following packages are imported** const { TransferManager } = require('zcatalyst-sdk-node/lib/stratus'); #### Create Transfer Manager Instance const transferManager = new TransferManager(bucket); // create transfer manager instance #### Download Object as Iterable Part Streams const partSize=50; const getObjectRes = await transferManager.getIterableObject("sam/out/sample.txt",partSize); // download the object to local machine const file = fs.createWriteStream('filePath'); // create a file write stream for await (const chunk of getObjectRes) { file.write(chunk); } #### Generate Object Parts for Download In this SDK method we will download a portion of the object that falls under the required start and end range of bytes. const file = fs.createWriteStream("filePath"); const partSize = 50; const downloadRes = await transferManager.generatePartDownloaders("sam/out/sample.txt", partSize); let partNum = 0; while (partNum < downloadRes.length) { const objectPart = downloadRes[partNum++]; const buffer = await objectPart(); // return the object part as stream // process the stream } ### Generate Presigned URL to Download an Object Presigned URLs are secure URLs that authenticated users can share to their non-authenticated users. This URL will provide non-authenticated users with temporary authorization to access objects. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>A Mandatory parameter. Will hold the complete name of the object along with it's path.</td> </tr> <tr> <td>urlAction</td> <td>Request Method</td> <td>A Mandatory parameter. This is the parameter that will allow you to generate a presigned URL for either a download(GET) action. <ul> <li>**GET**: To download an object</li> </ul> </td> </tr> <tr> <td>expiry</td> <td>String</td> <td>This is an Optional parameter. The URL validity time in seconds. <ul> <li>Default value: 3600 seconds</li> <li>Minimum value: 30 seconds</li> <li>Maximum value: 7 days</li> </ul> </td> </tr> <tr> <td>activeFrom</td> <td>String</td> <td>This is an Optional parameter. This param will contain the time after which the URL is valid. Maximum value is 7 days. URLs are made active as soon as they are generated by default.</td> </tr> </tbody> </table> const signedURLRes = await bucket.generatePreSignedUrl("sam/out/sample.txt", 'GET', { 'expiryIn': 100, // expiry time in seconds 'activeFrom':'12334454327', // activate the url in the given date 'versionId': '746398diij94839' }); console.log(signedURLRes); **Example Response for Generating a Presigned URL for Download** { "signature": "https://sadi-development.zohostratus.com/_signed/text.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747898364894&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=SFdW4woI5nXPCSCghrymsv06hM0cimwZpkFwHWngtto", "expiry_in_seconds": "100", "active_from": "12334454327" } **Example Snippet Illustrating Usage of Presigned URL to Download an Object** Info: This example is shown using Axios request handler package. const axios = require('axios'); const fs = require('fs'); // Replace with the actual pre-signed URL for your file. const url = 'https://sadi-development.zohostratus.com/_signed/text.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747898364894&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=SFdW4woI5nXPCSCghrymsv06hM0cimwZpkFwHWngtto'; (async () => { try { // Send GET request to download file as a stream const response = await axios.get(url, { responseType: 'stream' }); // Create a writable stream to save the file locally const file = fs.createWriteStream('file_path'); // Replace with desired output path // Pipe the response stream to the file stream response.data.pipe(file); // Notify when the file has been downloaded file.on('finish', () => { console.log('File downloaded successfully'); }); // Handle any errors during writing file.on('error', (err) => { console.error('Error writing file:', err); }); } catch (err) { console.error('Error downloading file:', err); } })(); -------------------------------------------------------------------------------- title: "Upload Object" description: "This page lists the Node.js SDK method to upload objects to a bucket." last_updated: "2026-09-29T06:07:16.269Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Upload Object Help Documentation (/en/cloud-scale/help/stratus/objects/upload-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/upload-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/upload-object/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/upload-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/upload-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/upload-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/upload-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Upload Object Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. The SDK methods listed in this section will allow you to upload objects to the bucket in various manners. You can upload objects as a **string** or as a **stream**. The Bucket reference used in the below code snippet is the component instance. If you do not have Versioning enabled for your object, and if Stratus gets multiple write requests for the same object, the object will be continuously overwritten. The latest upload of the object will be the only object that is stored. However, with Versioning enabled, each upload will be considered a version of the object, and all of them will be stored in the bucket, each with a unique versionId. Note: The following characters including space are not supported when you create a path or an object: double quote, both angular brackets, hashtag, backward slash and pipe symbol. ### Upload Object as a Stream Using this SDK method, you can upload objects to a bucket as a stream. Store the stream in a variable and then pass that variable in the upload method; putObject() // create a read stream for upload the object const file = fs.createReadStream("file_path"); // call the upload method const res = await bucket.putObject("sam/out/sample.txt", file); console.log(res); ### Upload Object as a String Using this SDK method, you can upload the object as a string. You will pass the object name, and the data to be stored in the object in string format in the upload method; putObject() //Upload object as a string const res = await bucket.putObject("sam/out/sample.txt", "Content of the file"); console.log(res); ### Upload Object with Options Using this SDK method, you can use the following options while you upload an object. * **overwrite**: This is an option you can use, if *Versioning* for your bucket is not enabled for your bucket. Without versioning, you need to use this option if you wish to overwrite a resource. The default value is '**false**'. * **ttl**: This is an option you can use to set **Time-to-Live** (TTL) in seconds for an object. Value should be greater than or equal to **60 seconds**. * **metaData**: This is an option you can use to upload meta details of the object that is being uploaded. * **contentType**: This is an option you can provide, if you need to set the MIME type of the object. const options = { 'overwrite': true, //This will overwrite your existing object 'ttl': '300', //time to live in seconds 'metaData': { 'author': 'John' } }; const file = fs.createReadStream("filePath"); const uploadRes = await bucket.putObject("sam/out/sample.txt", file, options); console.log(uploadRes); ### Upload Object With Extract Option When you upload a zipped object using this SDK method, the objects present in the zip will be extracted, and uploaded. const options = { 'ttl': '300', //time to live in seconds 'metaData': { 'author': 'John' }, // Extract the contents of the given ZIP file and upload each file as a separate object to the bucket 'extractUpload': true }; const file = fs.createReadStream("filePath"); const uploadRes = await bucket.putObject("sam/out/sample.zip", file, options); console.log(uploadRes); This SDK method will return the value of a taskId. You can use this value to find out the status of the extraction using this SDK method. **Example Response** { 'task_id': '1234263749' } ### Upload Object Using Multipart In this section we are going to go over the SDK methods that will allow you to successfully upload a large object to a bucket in Stratus. The multipart upload feature will upload a large file to the bucket in multiple HTTPS requests. All of these requests will be combined into a single object once all the individual parts have been uploaded. Note: It is recommended that you consider Multipart Upload as the preferred method to upload objects that are 100 MB or larger. #### Initiate Upload To perform multipart operations, you need to get a multipart object instance. We will refer to this component instance in various code snippets where we work with multipart operations being performed on objects stored in a bucket in Stratus. **Parameter Used** bucket: This is the bucket instance you need to have initialized earlier using this SDK method. const initRes = await bucket.initiateMultipartUpload("sam/out/sample.txt"); console.log(initRes); **Example Response** { "bucket": "zcstratus123-development", "key": "sam/out/sample.txt", "upload_id": "01j7xbm4vm5750zbedxqgc4q6m", "status": "PENDING" } #### Upload Parts of the Object In the following SDK method, we are going to perform uploads of the individual parts of the object. Each part will have a distinct partNumber ranging anywhere between 1 and 1000. While this represents the ordering of the parts, these parts will not necessarily be uploaded in sequence. These parts will be combined in sequence once the upload of all the parts of the objects is complete. let partNumber = 1; const file = fs.createReadStream("filePath"); const uploadPartRes = await bucket.uploadPart("sam/out/sample.txt", "uploadId", file, partNumber); console.log(uploadPartRes); #### Get Multipart Upload Summary The following SDK method can be used to obtain an operational summary of all the uploaded parts. To view the summary, we will use the getMultipartUploadSummary() method. const uploadSummaryRes = await bucket.getMultipartUploadSummary("sam/out/sample.txt", "upload_id"); console.log(uploadSummaryRes); **Example Response** { "bucket": "zcstratus12345-development", "key": "sam/out/sample.txt", "upload_id": "01hyfyeazrrstmt7k5fa7ej726", "status": "PENDING", "parts": [ { "part_number": 1, "size": 0, "uploaded_at": 1716374678999 }, { "part_number": 2, "size": 2797094, "uploaded_at": 1716374678576 }, { "part_number": 4, "size": 0, "uploaded_at": 1716374679136 } ] } #### Complete Multipart Upload of the Object The following method allows us to terminate the multipart process once all the parts have been successfully uploaded. To complete the process we will pass the uploadId to the completeMultipartUpload() method. const completeUploadRes = await bucket.completeMultipartUpload("sam/out/sample.txt", "uploadId"); console.log(completeUploadRes); **Example SDK Implementation** const catalyst = require('zcatalyst-sdk-node'); const fs = require('fs'); module.exports = async (req, res) => { url = req.url; switch (url) { case '/': const app = catalyst.initialize(req); const stratus = app.stratus(); // create a bucket instance const bucket = stratus.bucket("bucket_name"); // Multipart upload const key = 'sample.mp4'; // initiate multipart upload const initRes = await bucket.initiateMultipartUpload(key); // get upload Id from initiate upload response. const uploadId = initRes['upload_id']; const filePath = '/Users/Aliza//sam.mp4'; const partSize = 50 * 1024 * 1024; // in Mb const fileStream = fs.createReadStream( filePath, { highWaterMark: partSize } ); let partNumber = 1; const uploadPromises = []; fileStream.on('data', async (partData) => { // Push each part upload to the promises array for parallel upload const partUploadPromise = bucket.uploadPart( key, uploadId, partData, partNumber ); uploadPromises.push(partUploadPromise); console.log('Part Number: ', partNumber); partNumber++; }); // Wait for all parts to be uploaded in parallel fileStream.on('end', async () => { await Promise.all(uploadPromises); // Complete the multipart upload await bucket.completeMultipartUpload(key, uploadId); console.log('Successfully Uploaded'); }); res.end(); break; default: res.writeHead(404); res.write('You might find the page you are looking for at "/" path'); break; } } ### Upload an Object Using Transfer Manager **Ensure the following packages are imported** const { TransferManager } = require('zcatalyst-sdk-node/lib/stratus'); #### Create Transfer Manager Instance const transferManager = new TransferManager(bucket); // create transfer manager instance #### Multipart Upload **Create Multipart Upload Instance** The following SDK method will create a multipart instance by initiating multipart upload. const multipart = await transferManager.createMultipartInstance("sam/out/sample.txt"); // create multipart instance If you are required to create an instance for an already initialized multipart upload operation, then copy and use the code snippet given below const multipart = await transferManager.createMultipartInstance("sam/out/sample.txt", "uploadId"); #### Upload Part In the following SDK method we are going to be using the multipart instance we initialized in the *Create Multipart Upload Instance* section. const uploadRes = await multipart.uploadPart(fs.createReadStream("filePath"), partNumber); console.log(uploadRes); #### Upload Summary const summaryRes = await multipart.getUploadSummary(); console.log(summaryRes); #### Complete Upload const completeRes = await multipart.completeUpload(); console.log(completeRes); #### Upload Object Using Wrapper The following SDK method acts as a wrapper, where the entire multipart upload operation is carried out without employing multiple steps. Using this method, the object is split into multiple parts, uploaded to the bucket in multiple parts, and then combined once all the parts are uploaded. const file = fs.createReadStream("filePath"); const partSize = 50 // in MB const objectPartUploadRes = await transferManager.putObjectAsParts("sam/out/sample.txt",file, partSize); console.log(objectPartUploadRes); ### Generate Presigned URL to Upload an Object Presigned URLs are secure URLs that authenticated users can share to their non-authenticated users. This URL will provide non-authenticated users with temporary authorization to access objects. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>A Mandatory parameter. Will hold the complete name of the object along with it's path.</td> </tr> <tr> <td>urlAction</td> <td>Request Method</td> <td>A Mandatory parameter. This is the parameter that will allow you to generate a presigned URL for an upload(PUT) action. <ul> <li>**PUT**: To upload an object</li> </ul> </td> </tr> <tr> <td>expiry</td> <td>String</td> <td>This is an Optional parameter. The URL validity time in seconds. <ul> <li>Default value: 3600 seconds</li> <li>Minimum value: 30 seconds</li> <li>Maximum value: 7 days</li> </ul> </td> </tr> <tr> <td>activeFrom</td> <td>String</td> <td>This is an Optional parameter. This param will contain the time after which the URL is valid. Maximum value is 7 days. URLs are made active as soon as they are generated by default.</td> </tr> </tbody> </table> const signedURLRes = await bucket.generatePreSignedUrl("sam/out/sample.txt", 'PUT', { 'expiryIn': 100, // expiry time in seconds 'activeFrom':'12334454327', // activate the url in the given date }); console.log(signedURLRes); **Example Response for Generating a Presigned URL for Upload** { signature: "https://sadi-development.zohostratus.com/_signed/text.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747896279887&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=3YBUX1HFSxNQzQJjFrln82AyJsEEuC5T9dsZwWxGyEE" } **Example Snippet Illustrating Usage of Presigned URL to Upload an Object** Info: This example is shown using Axios request handler package. const axios = require('axios'); const fs = require('fs'); // Replace this with the actual pre-signed URL generated for your upload. const url = 'https://sadi-development.zohostratus.com/_signed/text.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747911331272&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=K9vuqC7JaATLeM3TX4xXWx0OHcSflbYQ2jCrbKSAAIE'; // Replace 'file_path' with your actual file path const data = fs.createReadStream('/Users/ranjitha-18338/Documents/NODE-SDK/Stratus/sam.py'); // Optional headers; content type may vary depending on the file type const headers = { // 'Content-Type': 'application/json', // adjust if uploading non-JSON files (e.g., 'text/plain' or 'application/octet-stream') // 'overwrite': 'true', // optional header }; (async () => { try { const response = await axios.put(url, data, { headers }); if (response.status === 200) { console.log('Object uploaded successfully'); } else { console.log('⚠️ Error uploading object:', response.data); } } catch (error) { console.error('Upload failed:', error.response?.data || error.message); } })(); -------------------------------------------------------------------------------- title: "Extract a Zipped Object" description: "This page lists the Node.js SDK method to extract a zipped object." last_updated: "2026-09-29T06:07:16.270Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/extract-zipped-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/extract-zipped-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/extract-zipped-object/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Extract a Zipped Object In Stratus Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. The following SDK method will allow you to extract a zip file inside Stratus, and every individual content present in the zip file will be considered as individual object and uploaded to Stratus in the same bucket. This entire process will happen *asynchronously*. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section Note: Since the extraction process occurs asynchronously, the time in which the entire process is completed is dependent on the size of the zip file that is being extracted. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>A Mandatory parameter. Will be the name of the zip file, you need to extract</td> </tr> <tr> <td>destPath</td> <td>String</td> <td>A Mandatory parameter. Will contain the complete path information of the destination, where the extracted objects will be stored in the bucket.</td> </tr> </tbody> </table> const res = await bucket.unzipObject("sample.zip","output/"); console.log(res); #### Example Response { "key": "sample.zip", "destination": "output/", "task_id": "6963000000272049", "message": "Zip extract scheduled" } ### Get Zip Extraction Status The zip extraction process occurs asynchronously, and the time it takes to complete the extraction process is highly contingent on the size of the zip file. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section Using the taskId parameter, in the following SDK method, we can determine the status of the extraction. The taskId is returned in the response of unzipObject() method. const statusRes = await bucket.getUnzipStatus("sample.zip", 'taskId'); console.log(statusRes); #### Example Response { "task_id": "6963000000272049", "status": "SUCCESS" } -------------------------------------------------------------------------------- title: "Copy Object" description: "This page lists the Node.js SDK method to make a copy of an object within its own bucket." last_updated: "2026-09-29T06:07:16.270Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/copy-objects/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/copy-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/copy-objects/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Copy Object Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Using this SDK method, you can copy an object and paste it within a bucket. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section The key will be the object you are going to copy, and the destination, will contain the new name of the copied object. To paste the copied object in a different path, you need to provide the complete path name as destination. Note: * You need to provide the complete object name, along with the path for both key and destination values. * For example, if you have file named "kitten.png" in the path pictures/puppy, and you need to copy the file to pictures/kitten path, then: <br /> source_object value will be 'pictures/puppy/kitten.png'<br /> dest_object value will be 'pictures/kitten/kitten.png'<br /> const res = await bucket.copyObject('sam/out/sample.txt', "out/sam/sample.txt"); console.log(res); #### Example Response { "copy_to": "sam/out/sample.txt", "key": "out/sam/sample.txt", "message": "Object copied successfully." } -------------------------------------------------------------------------------- title: "Rename and Move Operations on an Object" description: "This page lists the Node.js SDK method to perform rename and move operations on an object." last_updated: "2026-09-29T06:07:16.270Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/rename-move-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/rename-move-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/rename-move-object/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Rename and Move Operations on an Object Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. To rename and to move an object, we will be using the same renameObject() SDK method. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>The original name of the object that you need to rename</td> </tr> <tr> <td>destination</td> <td>String</td> <td>The new name that you rename the object with</td> </tr> </tbody> </table> Note: * You need to provide the complete object name, along with the path for both key and destination values. * For example, if you have file named "kitten.png" in the path pictures/puppy, and you need to rename or move the file to pictures/kitten path, then: <br /> key value will be 'pictures/puppy/kitten.png'<br /> destination value will be 'pictures/kitten/kitten.png'<br /> ### Rename an Object Using the renameObject() SDK method you can rename objects present in a bucket. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section Note: * You cannot rename objects in a bucket that has Versioning enabled. * The following characters including space are not supported when you create a path or an object: double quote, both angular brackets, hashtag, backward slash and pipe symbol. const res = await bucket.renameObject("sam/out/sample.txt", "sam/out/update_sample.txt"); console.log(res); ### Move an Object Using the renameObject() SDK method, we can move the object from one path to another within a bucket. const moveRes = await bucket.renameObject("sam/out/sample.txt", "out/sample.txt"); console.log(moveRes); Note: You cannot perform move operations in a bucket that has Versioning enabled. #### Example Response for Rename and Move Operations { "current_key": "sam/out/sample.txt", "message": "Rename successful", "rename_to": "sam/out/update_sample.txt" } -------------------------------------------------------------------------------- title: "Delete Objects" description: "This page lists the Node.js SDK method to delete objects stores in a bucket." last_updated: "2026-09-29T06:07:16.271Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Delete an Object Help Documentation (/en/cloud-scale/help/stratus/objects/manage-object/delete-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/delete-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/delete-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/delete-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/delete-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/delete-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Delete Objects Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. The following SDK methods will allow you to perform delete operations in Stratus. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>A Mandatory parameter. Will hold the complete name of the object along with it's path.</td> </tr> <tr> <td>versionId</td> <td>String</td> <td>An Optional parameter. If Versioning is enabled for your bucket then, this param will help you refer to a particular version using its unique Version ID.</td> </tr> <tr> <td>ttl</td> <td>int</td> <td>An Optional parameter. It allows you to schedule your delete operations. For example, if you provide the value of ttl as 60, the delete operation will only occur after 60 seconds. The value of ttl has to be >= 60 seconds.</td> </tr> </tbody> </table> ### Delete a Single Object Using this SDK method, you can delete a particular object by passing the object name to the deleteObject() method. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section const res = await bucket.deleteObject( "sam/out/sample.txt"); console.log(res); Note: If Versioning is enabled on the bucket and no specific versionId is provided, deleting an object will remove all versions of that object by default. ### Delete a Specific Version of an Object after a Specific Time Ensure you provide the versionId of the object if you enabled Versioning for your bucket. You can also schedule your delete operation using the ttl variable. For example, if you provide the value of ttl as **100**, the delete operation will only occur after **100 seconds**. Always ensure that the value of ttl is greater than equal to **60 seconds**. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section const options = { versionId: "01hthq82gwxtfyz6d9j8eg6k2f", // delete the object with given versionId ttl: 100 // Time to live in number of seconds }; const res= await bucket.deleteObject( "sam/out/sample.txt", options); console.log(res); ### Delete Multiple Objects Using this SDK method, you can delete multiple objects by passing the names of the objects that need to be deleted as an array. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section Ensure you provide the versionId of the object if you enabled Versioning for your bucket. You can also schedule your delete operation using the ttl variable. For example, if you provide the value of ttl as **100**, the delete operation will only occur after **100 seconds**. Always ensure that the value of ttl is greater than equal to **60 seconds**. const objectDel = await bucket.deleteObjects( [ { key: "sam/out/sample.txt", versionId: "01hhch20nfkx9hw9ebqy2jnz9d" } ], 100); console.log(objectDel); #### Example Response for Delete Operation {"message": "Object Deletion successful."} ### Truncate Bucket Using this SDK method you will be able to essentially every single object present in the bucket. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section const truncateRes = await bucket.truncate(); console.log(truncateRes); ### Delete a Path in the Bucket Using this SDK, you will be able to delete all the objects present in a path. You need to pass the complete path to the deletePath() method. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section // To delete an entire path const res = await bucket.deletePath("sam/out/"); console.log(res); Note: Ensure that you provide the exact path. If an incorrect path is provided, the delete action will get scheduled, but it will result in an error. #### Example Response { "path": "sam/", "message": "Path deletion scheduled" } -------------------------------------------------------------------------------- title: "Create Object Instance" description: "This page lists the Node.js SDK method to create an object instance." last_updated: "2026-09-29T06:07:16.271Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/create-object-instance/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/create-object-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-object-instance/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Object Instance Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Use the following method to get an object instance to perform object-related operations. The Bucket reference used in the below code snippet is the component instance. const objectIns = bucket.object("sam/out/sample.txt"); -------------------------------------------------------------------------------- title: "List Object Versions" description: "This page lists the Node.js SDK method to get versions of an object." last_updated: "2026-09-29T06:07:16.272Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/list-object-versions/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Object Versioning Help Documentation (/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/get-object-versions/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/get-object-versions/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # List Object Versions Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. ### List All Versions of an Object Through Pagination Enabling Versioning in a bucket allows you to store multiple versions of the same object in the bucket. Each version of the object will have its own versionId. This SDK method allows you to get all the existing versions of an object present in a bucket by pagination. The Object reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>nextToken</td> <td>String</td> <td>Will hold the value to determine the next set of versions.</td> </tr> <tr> <td>maxVersions</td> <td>int</td> <td>An Optional parameter. Will hold the value of the maximum number of versions of the object that can be listed per iteration.</td> </tr> </tbody> </table> async function listMyPaginatedVersions(maxVersion = undefined, nextToken = undefined) { const response = await objectIns.listPagedVersions({ maxVersion, nextToken}); console.log(response.version); if(response.is_truncated) { listMyPaginatedVersions(maxVersion,nextToken) } } await listMyPaginatedVersions(10); **Example Response** { "key": "sam/out/sample.txt", "versions_count": 2, "max_versions": "2", "is_truncated": "False", "next_continuation_token": "4YpUdkktt2UeWp6MwEK1LZXELnuVhunHLnGgX29uvszwtJEQE2gVDJYyRiLdUmhNst", "version": [ { "version_id": "01hyfh12njtpyvzwq6p1fd2d8s", "is_latest": "True", "last_modified": "May 22, 2024 12:20 PM", "size": 1, "etag": "9af7c117d9de9a06fba7a5f1ea5fcc2d" }, { "version_id": "01hyfh0xkvwkxxsjfceef201xa", "is_latest": "False", "last_modified": "May 22, 2024 12:20 PM", "size": "1", "etag": "9af7c117d9de9a06fba7a5f1ea5fcc2d" } ] } ### List All Versions of the Object Through Iteration You can use the following SDK method to get all available versions of the object in a single call. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section const versions = objectIns.listIterableVersions(); for await( const version of versions) { console.log(version); } **Example Response** { "versionId": "01hyfh12njtpyvzwq6p1fd2d8s", "is_latest": "True", "last_modified": "May 22,2024 12:20 PM", "size": "1", "etag": "9af7c117d9de9a06fba7a5f1ea5fcc2d" } { "versionId": "01hyfh0xkvwkxxsjfceef201xa", "is_latest": "False", "last_modified": "May 22, 2024 12:20 PM", "size": "1", "etag": "9af7c117d9de9a06fba7a5f1ea5fcc2d" } -------------------------------------------------------------------------------- title: "Get Object Details" description: "This page lists the Node.js SDK method to get details of objects stored in a bucket." last_updated: "2026-09-29T06:07:16.272Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/object-details/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Objects Help Documentation (/en/cloud-scale/help/stratus/objects/introduction/) - Versioning Help Documentation (/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/object-details/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/check-object-availability/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Get Object Details Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. ### Get Details of All Objects Use the following SDK method to get details of all the objects stored in the bucket. The Object reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section const objectRes = await objectIns.getDetails(); console.log(objectRes); Note: If Versioning is enabled, then using this SDK method will only return the latest version's object details. ### Get Details of a Particular Version of the Object To get the details of a particular version of the object, you need to pass the versionId of the object to getDetails() SDK method. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>versionId</td> <td>String</td> <td>An Optional parameter. If Versioning is enabled for your bucket then, this param will help you refer to a particular version using its unique Version ID.</td> </tr> </tbody> </table> Note: * You need to have enabled Versioning for your objects at least once to use this method. * You can find out more about Versioning from this help documentation. const objectRes = await objectIns.getDetails("versionId"); console.log(objectRes); **Example Response** { "key": "sam/out/sample.txt", "size": 1, "content_type": "text/plain", "last_modified": "May 22, 2024 12:25 PM", "meta_data": { "author": "John" }, "object_url": "https://zcstratus12345-development.zohostratus.com/sam/out/sample.txt", "cached_object_url": "https://zcstratus12345-development.nimbuslocaledge.com/sam/out/sample.txt" } -------------------------------------------------------------------------------- title: "Put Object Meta Data" description: "This page lists the Node.js SDK method to add meta data for an object stored in the object." last_updated: "2026-09-29T06:07:16.272Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/put-object-meta/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Object Metadata Help Documentation (/en/cloud-scale/help/stratus/objects/introduction/#metadata) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/put-object-meta/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/put-object-meta/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Put Object Meta Data Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Using the following SDK method, you can add meta details for a particular object stored in a bucket in Stratus. The Object reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section The meta details will be passed as JSON key value pairs. For example, {"meta_key" : "meta_value"} Note: * Using the following method to pass new meta details without adding the existent details will delete the existing details and only put the new details. To avoid this, pass the new meta details along with the existing meta details. * You can use alphanumeric, underscores, or whitespace characters, as well as hyphens, to write your metadata. No other special character is allowed other than the once mentioned. * You can fetch the metadata of an object using the **HEAD** request method. In the response, the metadata will be listed in the key 'x-user-meta'. * The maximum size limit of characters allowed for the overall metadata is **2047** characters. The character count used to determine the size limit also includes the colon ":" special character used to define the key value pair. const objectMeta = { "key1": "value1" , "key2": "value2" }; const objMeta = await objectIns.putMeta(objectMeta); console.log(objMeta); **Example Response** { "message": "Metadata added successfully" } ### ZCQL -------------------------------------------------------------------------------- title: "Get ZCQL Instance" description: "This page describes the method to execute ZCQL queries on a table in the Data Store in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.275Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/zcql/get-component-instance/" service: "Cloud Scale" related: - ZCQL (/en/cloud-scale/help/zcql/introduction) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # ZCQL Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. ZCQL is Catalyst's own query language that enables you to perform data retrieval, insertion, updating, and deletion operations on the tables in the Catalyst Data Store. You can execute a variety of DML queries using ZCQL to obtain or manipulate data, and use various clauses and statements such as the SQL Join clauses, Groupby and OrderBy statements, and built-in SQL functions. Catalyst also provides an **OLAP database**, in addition to the primary Data Store that is suited for analytical data retrieval queries. You can choose to execute simple transactional queries on the primary Data Store, and complex analytical queries that involve ZCQL functions on the OLAP database. ### Get Component Instance You must first create a component instance for ZCQL. The zcql instance can be created as shown below. //Get a ZCQL instance let zcql = app.zcql(); -------------------------------------------------------------------------------- title: "Execute Query" description: "This page describes the method to execute ZCQL queries on a table in the Data Store in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.275Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/zcql/execute-zcql-query/" service: "Cloud Scale" related: - Execute query - API (/en/api/code-reference/cloud-scale/zcql/execute-zcql-query/#ExecuteZCQLQuery) - ZCQL (/en/cloud-scale/help/zcql/introduction) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Execute Query Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. zcql refers to the component instance defined here. This will return a promise which will be resolved to an object. The content key will contain the array of row objects. ### Construct and Execute the Query on the Primary Data Store For the ZCQL queries to be executed on the primary Data Store, you can construct the query and pass it to the executeZCQLQuery() method as shown below. These queries can include SELECT, INSERT, UPDATE, or DELETE statements. A sample INSERT query is shown below: //Construct the query to execute let query = 'INSERT into ShipmentData (productID, productName, region) VALUES (3782, A4 Reams, India)'; let result = await zcql.executeZCQLQuery(query); <br> ### Construct and Execute the Query on the OLAP Database The queries that you execute on the OLAP database must only include the SELECT statement, as direct write operations on it are not allowed. You can construct the query object and pass it to the executeOLAPQuery() method. A sample analytical SELECT query is shown below. //Construct the query to execute let query = 'SELECT SUM(price) FROM ShipmentData'; let result = await zcql.executeOLAPQuery(query); ## Connectors -------------------------------------------------------------------------------- title: "Connectors" description: "This page describes the method to use connectors to manage access token in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.277Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/connectors/connectors/" service: "All Services" -------------------------------------------------------------------------------- # Catalyst Connectors Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. A Catalyst Connector provides a seamless connection between Catalyst and an external Zoho service established through **Zoho OAuth authentication**. You can avail the use of a connector in your Catalyst application if your business logic includes the use of an external Zoho service's API, such as a Zoho CRM or a Zoho WorkDrive API. Catalyst handles the connection by storing the Access Token you generate in Zoho API console for a specific application in Catalyst Cache until its expiry. After it expires, the connector will automatically fetch a new Access Token using the Refresh Token and store it in the cache. Each time the Access Token expires, the connector automatically fetches and caches a new token in the background, relieving you from the efforts of constructing the logic to maintain an uninterrupted connection with the external Zoho service in your application's business logic. Note: Catalyst Connectors can only be used to maintain connections with an external Zoho service, and not any third-party services. This is because, the OAuth standards maintained across all Zoho services are uniform and compatible for Catalyst to implement the Connectors feature. Before you configure the connector in your Node.js business logic as shown below, you will need to register a new client in the Zoho API console, and follow the steps to generate an Authorization Code and an Access Token for the first time. You can then configure the connector with the Refresh Token received, as well as other standard OAuth parameters such as the Client ID, Client Secret, Authentication URL, and Refresh URL that are required to refresh the Access Token automatically in a periodical manner. You can also incorporate your own logic in the connector based on your requirements. Note: * The name you provide for each connector in your logic must be unique. * If you create a server-based application in the Zoho API console and you allow the access token to be created for different users within the same application, then you will need to provide a different and unique connector name for each user. This is because, when the same connector is used for different users in an application, the token will be overwritten on the same cache segment resulting in fetching the wrong user's data from the external Zoho service. The code below illustrates a Node.js connector. The promise returned here will be resolved to an access token string. var connector = app.connection({  ConnectorName: {    client_id: '{add_client_id}',    client_secret: '{add_client_secret}',    auth_url: '{add_auth_url}',    refresh_url: '{add_refresh_url}', refresh_token: '{add_refresh_token}', refresh_in: '{add_refresh_in}' //Configure the OAuth params from the values returned after registering your app and generating authorization code in Zoho API console   }  })  .getConnector('{ConnectorName}'); //Provide a unique connector name for each connector you create  connector.getAccessToken().then((accessToken) => { // Add your custom logic here }); ## General ### Projects -------------------------------------------------------------------------------- title: "Retrieve Project Data Cached During Project Initialization" description: "This page describes the method to retrieve project data cached during project initialization." last_updated: "2026-09-29T06:07:16.280Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/general/projects/retreive-cached-project-data/" service: "All Services" related: - Projects - API (/en/api/code-reference/general/projects/create-new-project/#CreateNewProject) - Initialize Projects (/en/cli/v1/initialize-resources/initialize-new-project/) -------------------------------------------------------------------------------- # Retrieve project data cached during project initialization Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst allows you to cache your project data in the backend as an app object during initialization. The SDK snippet below demonstrates how you can retrieve the cached app object at any time. const catalyst = require('zcatalyst-sdk-node'); catalyst.initialize(req, { scope: "user", appName: 'user_app'}) // initializing the Catalyst with a name for the app and user scope const app = catalyst.app('user_app'); // retrieve the instance of Catalyst app with the appName. ## Job Scheduling -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the methods to perform Job Scheduling operations" last_updated: "2026-09-29T06:07:16.280Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/job-scheduling/overview/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/jobpool/introduction/) - Java SDK (/en/sdk/java/v1/job-scheduling/overview/) - Python SDK (/en/sdk/python/v1/job-scheduling/overview/) - REST API Collection (/en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Job Scheduling SDK Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Job Scheduling is a Catalyst service that allows you to schedule job submissions and execute them in a Job Pool to trigger Circuits, Webhooks(any third-party URL), Job Functions, and App Sail service's endpoints. Using the Catalyst SDK, you can perform the following operations through code: <table class="content-table"> <thead> <tr> <th class="w25p">Job Scheduling Component</th> <th class="w75p">Operations Possible Using SDK</th> </tr> </thead> <tbody> <tr> <td>Job Pool</td> <td>Get All Job Pool<br />Get a Specific Job Pool</td> </tr> <tr> <td>Job</td> <td>Create Job<br />Get Job Details<br />Delete a Job</td> </tr> <tr> <td>Cron</td> <td>Create a One-Time Cron<br />Create a Recurring Cron<br />Create Cron Using Cron Expressions<br />Get Details of a Particular Cron<br />Get Details of All Crons<br />Update Cron<br />Pause Cron<br />Resume Cron<br />Run Cron<br />Delete Cron</td> </tr> </tbody> </table> <br /> -------------------------------------------------------------------------------- title: "Initialize Job Scheduling Instance" description: "This page describes the method to create a component reference for the Job Scheduling service." last_updated: "2026-09-29T06:07:16.280Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/job-scheduling/initialize-job-scheduling-instance/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/jobpool/introduction/) - Java SDK (/en/sdk/java/v1/job-scheduling/initialize-job-scheduling-instance/) - Python SDK (/en/sdk/python/v1/job-scheduling/initialize-job-scheduling-instance/) - REST API Collection (/en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Initialize Job Scheduling Instance Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. You can create a Job Scheduling component reference as shown below. This will not fire a server-side call. We will refer to this component instance in various code snippets of working with Job Scheduling's components. const jobScheduling = app.jobScheduling(); // get job scheduling instance ### Cron -------------------------------------------------------------------------------- title: "Create a One-Time Cron" description: "This page describes the Node.js method to create a one-time cron in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.281Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/job-scheduling/cron/create-one-time-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - Java SDK (/en/sdk/java/v1/job-scheduling/cron/create-one-time-cron/) - Python SDK (/en/sdk/python/v1/job-scheduling/cron/create-one-time-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/create-cron/create-one-time-cron/#CreateaOne-TimeCron) -------------------------------------------------------------------------------- # Create a One-Time Cron Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. The Cron component is used to schedule the submission of a job to the job Pool. Using the following SDK, you will be able to create a cron that will schedule a job submission only once. Note: The following SDK is written for a job that will trigger a Job Function. To make the SDK compatible for the other types, you need to replace the value with proper Job Pool ID, or Job Pool Name, and provide the appropriate Target Name, or Target ID. // create function job meta const jobMeta = { job_name: 'test_job', // set a name for the job target_type: 'Function', // set the target type as Function for function jobs target_name: 'target_function', // set the target function's name (optional) (either target_id or target_name is mandatory) // target_id: '123467890', // set the target functions's Id (optional) (either target_id or target_name is mandatory) jobpool_name: 'test', // set the name of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) // jobpool_id: '1234567890' // set the Id of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) job_config: { number_of_retries: 2, // set the number of retries retry_interval: 15 * 60 // set the retry interval }, // set job config - job retries => 2 retries in 15 mins (optional) params: { arg1: 'test', arg2: 'job' }, // set params to be passed to target function (optional) }; // create one time cron details const oneTimeCron = { cron_name: 'one_time', // set a name for the cron (unique) description: 'one_time_cron', // set a description for the cron (optional) cron_status: true, // set the cron status as enabled cron_type: 'OneTime', // set the cron type as OneTime cron_detail: { time_of_execution: Math.floor(Date.now() / 1000) + (60 * 60) + '', // set the execution time as UNIX timestamp // timezone: 'America/Los_Angeles' // set the timezone (optional) }, job_meta: jobMeta // set the function job meta }; // create one time cron const cronDetails = await jobScheduling.CRON.createCron(oneTimeCron); Note: We urge you to use this SDK to configure only Dynamic Crons. Use the UI Builder to configure Pre-defined Crons. -------------------------------------------------------------------------------- title: "Create a Recurring Cron" description: "This page describes the Node.js method to create a recurring cron in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.281Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/job-scheduling/cron/create-recurring-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - Java SDK (/en/sdk/java/v1/job-scheduling/cron/create-recurring-cron/) - Python SDK (/en/sdk/python/v1/job-scheduling/cron/create-recurring-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/create-cron/create-every-cron/#CreateanEveryCron) -------------------------------------------------------------------------------- # Create a Recurring Cron Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Using the following SDK, you will be able to create a recurring cron that can be executed at various time-period intervals. The intervals can range from a minute to entire calendar years. ### Create an Every Cron The following SDK can be used to create a recurring cron that will submit a job to the job pool at a scheduled interval that is less than **24Hrs**. Note: The following SDK is configured to submit a job every 2Hrs 1Mins and 3secs. You can change this value as per your requirement by passing the relevant value to the cron_detail JSON key-value pair. // create function job meta const jobMeta = { job_name: 'test_job', // set a name for the job target_type: 'Function', // set the target type as Function for function jobs target_name: 'target_function', // set the target function's name (optional) (either target_id or target_name is mandatory) // target_id: '123467890', // set the target functions's Id (optional) (either target_id or target_name is mandatory)jobpool_name: 'test', // set the name of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) // jobpool_id: '1234567890' // set the Id of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) job_config: { number_of_retries: 2, // set the number of retries retry_interval: 15 * 60 // set the retry interval }, // set job config - job retries => 2 retries in 15 mins (optional) params: { arg1: 'test', arg2: 'job' }, // set params to be passed to target function (optional) }; // create every cron details const everyCron = { cron_name: 'every_cron', // set a name for the cron (unique) description: 'every_cron', // set a description for the cron (optional) cron_status: true, // set the cron status as enabled cron_type: 'Periodic', // set the cron type as Periodic for every cron cron_detail: { hour: 2, // set the hour interval of the repetition minute: 1, // set the minute interval of the repetition second: 3, // set the second interval of the repetition repetition_type: "every" // set the repetition type as every for every cron }, job_meta: jobMeta // set the function job meta }; // create every cron const everyCronDetails = await jobScheduling.CRON.createCron(everyCron); <br> ### Create a Daily Cron The following SDK can be used to schedule a cron to submit a job to the job pool at a fixed time at a **daily interval**. Note: The following SDK is configured to execute the cron on 0Hr 0Min 0Sec every single day. You can change this value as per your requirement by passing the relevant value to the cron_detail JSON key-value pair. // create function job meta const jobMeta = { job_name: 'test_job', // set a name for the job target_type: 'Function', // set the target type as Function for function jobs target_name: 'target_function', // set the target function's name (optional) (either target_id or target_name is mandatory) // target_id: '123467890', // set the target functions's Id (optional) (either target_id or target_name is mandatory) jobpool_name: 'test', // set the name of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) // jobpool_id: '1234567890' // set the Id of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) job_config: { number_of_retries: 2, // set the number of retries retry_interval: 15 * 60 // set the retry interval }, // set job config - job retries => 2 retries in 15 mins (optional) params: { arg1: 'test', arg2: 'job' }, // set params to be passed to target function (optional) }; // create daily cron details const dailyCron = { cron_name: 'daily_cron', // set a name for the cron (unique) description: 'daily_cron', // set a description for the cron (optional) cron_status: true, // set the cron status as enabled cron_type: 'Calendar', // set the cron type as Calendar for daily, monthly and yearly cron_detail: { hour: 0, // set the hour of the day in which the cron should be executed minute: 0, // set the minute of the day in which the cron should be executed second: 0, // set the second of the day in which the cron should be executed repetition_type: 'daily', // set the repetition type as daily for daily cron // timezone: 'America/Los_Angeles' // set the timezone (optional) }, job_meta: jobMeta // set the function job meta }; // create daily cron const dailyCronDetails = await jobScheduling.CRON.createCron(dailyCron); <br> ### Create a Monthly Cron The following SDK can be used to schedule a cron to submit a job to the job pool at a fixed date, and time at a **monthly interval**. Additionally, you also have the option to submit a job at a monthly interval but on a particular week. If you choose to schedule the cron to execute at a monthly interval on a date-based schedule, then the range of possible dates, based on the **month**, will be **1-31**. Similarly, if you choose a **week-based** interval, then the range can either be from **1-4**, and the particular **days of the week** will be in the range of **1-7**. Note: The following SDK is configured to execute the cron that will submit a job to the job pool every month on the 1st, 3rd, and 5th at 0Hrs,0Mins, 0Secs. You can change this value as per your requirement by passing the relevant value to the cron_detail JSON key-value pair. // create function job meta const jobMeta = { job_name: 'test_job', // set a name for the job target_type: 'Function', // set the target type as Function for function jobs target_name: 'target_function', // set the target function's name (optional) (either target_id or target_name is mandatory) // target_id: '123467890', // set the target functions's Id (optional) (either target_id or target_name is mandatory) jobpool_name: 'test', // set the name of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) // jobpool_id: '1234567890' // set the Id of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) job_config: { number_of_retries: 2, // set the number of retries retry_interval: 15 * 60 // set the retry interval }, // set job config - job retries => 2 retries in 15 mins (optional) params: { arg1: 'test', arg2: 'job' }, // set params to be passed to target function (optional) }; // create monthly cron details const monthlyCron = { cron_name: 'monthly_cron', // set a name for the cron (unique) description: 'monthly_cron', // set a description for the cron (optional) cron_status: true, // set the cron status as enabled cron_type: 'Calendar', // set the cron type as Calendar for daily, monthly and yearly cron_detail: { hour: 0, // set the hour of the day in which the cron should be executed minute: 0, // set the minute of the day in which the cron should be executed second: 0, // set the second of the day in which the cron should be executed days: [1, 3, 5], // set the days of the month in which the cron should be executed // week_day: [1, 3], // set the days of the week in a month during which the cron should be executed // weeks_of_month: [2], // set the weeks of the month during which the cron should be executed repetition_type: 'monthly', // set the repetition type as monthly for monthly cron // timezone: 'America/Los_Angeles' // set the timezone (optional) }, job_meta: jobMeta // set function job meta }; // create monthly cron const monthlyCronDetails = await jobScheduling.CRON.createCron(monthlyCron); <br> ### Create a Yearly Cron The following SDK can be used to schedule a cron tosubmit a job to the job pool at a fixed date, and time at a fixed month on a **yearly** interval. Additionally, you also have the option to submit a job at a yearly interval but on a particular week. If you choose to schedule the cron to execute at a **yearly** interval on a **date-based** schedule, then the range of possible dates, based on the **month**, will be **1-31**, and the **month** will be determined based on the range of values **1-12**. Similarly, if you choose a **week-based** interval, then the range can either be from **1-4**, and the particular **days of the week** will be in the range of **1-7**. Note: The following SDK is configured to execute the cron that will submit a job to the job pool on the 1st, 2nd, and 3rd on the 8th month of every year. You can change this value as per your requirement by passing the relevant value to the cron_detail JSON key-value pair. // create function job meta const jobMeta = { job_name: 'test_job', // set a name for the job target_type: 'Function', // set the target type as Function for function jobs target_name: 'target_function', // set the target function's name (optional) (either target_id or target_name is mandatory) // target_id: '123467890', // set the target functions's Id (optional) (either target_id or target_name is mandatory) jobpool_name: 'test', // set the name of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) // jobpool_id: '1234567890' // set the Id of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) job_config: { number_of_retries: 2, // set the number of retries retry_interval: 15 * 60 // set the retry interval }, // set job config - job retries => 2 retries in 15 mins (optional) params: { arg1: 'test', arg2: 'job' }, // set params to be passed to target function (optional) }; // create yearly cron details const yearlyCron = { cron_name: 'yearly_cron', // set a name for the cron (unique) description: 'yearly_cron', // set a description for the cron (optional) cron_status: true, // set the cron status as enabled cron_type: 'Calendar', // set the cron type as Calendar for daily, monthly and yearly cron_detail: { hour: 0, // set the hour of the day in which the cron should be executed minute: 0, // set the minute of the day in which the cron should be executed second: 0, // set the second of the day in which the cron should be executed days: [1, 2, 3], // set the days of the month in which the cron should be executed // week_day: [1, 3], // set the days of the week in a month during which the cron should be executed // weeks_of_month: [2], // set the weeks of the month during which the cron should be executed months: [8], // set the months of the year in which the cron should be executed repetition_type: 'yearly', // set the repetition type as yearly for yearly cron // timezone: 'America/Los_Angeles' // set the timezone (optional) }, job_meta: jobMeta // set function job meta }; // create yearly cron const yearlyCronDetails = await jobScheduling.CRON.createCron(yearlyCron); Note: We urge you to use this SDK to configure only Dynamic Crons. Use the UI Builder to configure Pre-defined Crons. -------------------------------------------------------------------------------- title: "Create a Cron Using Cron Expressions" description: "This page describes the Node.js method to create a cron using Cron Expressions in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.282Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/job-scheduling/cron/create-cron-cron-expressions/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/key-concepts/#cron-expressions) - Java SDK (/en/sdk/java/v1/job-scheduling/cron/create-cron-cron-expressions/) - Python SDK (/en/sdk/python/v1/job-scheduling/cron/create-cron-cron-expressions/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/create-cron/create-cron-cron-exp/#CreateaCronUsingCronExpressions) -------------------------------------------------------------------------------- # Create a Cron Using Cron Expressions Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Use this SDK to implement crons to schedule the submission of jobs to job pools. However, the configuration of the cron will be defined using regex-like expressions called Cron Expressions. Note: In the following SDK, the cron has been configured using Cron Expressions, to submit a job to the job pool on 0Hrs 0Mins 0Secs on every 1st day of the week on the 1st month of every year. You can change this value as per your requirement by passing the relevant value to the cron_expression JSON key-value pair. // create function job meta const jobMeta = { job_name: 'test_job', // set a name for the job target_type: 'Function', // set the target type as Function for function jobs target_name: 'target_function', // set the target function's name (optional) (either target_id or target_name is mandatory) // target_id: '123467890', // set the target functions's Id (optional) (either target_id or target_name is mandatory) jobpool_name: 'test', // set the name of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) // jobpool_id: '1234567890' // set the Id of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) job_config: { number_of_retries: 2, // set the number of retries retry_interval: 15 * 60 // set the retry interval }, // set job config - job retries => 2 retries in 15 mins (optional) params: { arg1: 'test', arg2: 'job' }, // set params to be passed to target function (optional) }; // create expression cron details const expressionCron = { cron_name: 'expression_cron', // set a name for the cron (unique) description: 'expression_cron', // set a description for the cron (optional) cron_status: true, // set the cron status as enabled cron_type: 'CronExpression', // set the cron type as Calendar for daily, monthly and yearly cron_expression: '0 0 * 1 1', // set the cron expression // timezone: 'America/Los_Angeles', // set the timezone (optional) cron_detail: {}, // set the cron details job_meta: jobMeta // set function job meta }; // create expression cron const expressionCronDetails = await jobScheduling.CRON.createCron(expressionCron); Note: We urge you to use this SDK to configure only Dynamic Crons. Use the UI Builder to configure Pre-defined Crons. -------------------------------------------------------------------------------- title: "Get Details of a Particular Cron" description: "This page describes the Node.js method to get details of a cron in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.283Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/job-scheduling/cron/get-cron-details/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - Java SDK (/en/sdk/java/v1/job-scheduling/cron/get-cron-details/) - Python SDK (/en/sdk/python/v1/job-scheduling/cron/get-cron-details/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/get-cron/#GetCronByIdentifier) -------------------------------------------------------------------------------- # Get Details of a Particular Cron Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Use the following SDK to get all available details of a particular **Pre-Defined Cron** or **Dynamic Cron**. You need to pass the cron id or the name of the cron to getCron() SDK method. const cronDetailsWithName = await jobScheduling.CRON.getCron('test_cron'); // get cron with cron name const cronDetailsWithId = await jobScheduling.CRON.getCron('1234567890'); // get cron with cron Id -------------------------------------------------------------------------------- title: "Get Details of All Crons" description: "This page describes the Node.js method to get details of all crons in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.283Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/job-scheduling/cron/get-all-cron-details/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - Java SDK (/en/sdk/java/v1/job-scheduling/cron/get-all-cron-details/) - Python SDK (/en/sdk/python/v1/job-scheduling/cron/get-all-cron-details/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/get-all-cron/#GetAllCrons) -------------------------------------------------------------------------------- # Get Details of All Crons Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. The following SDK will allow you to get all available information on all Pre-Defined Crons using the getAllCron() SDK method. Note: This method will only fetch you details of Pre-Defined Crons. This method will not work for Dynamic Crons. const allCrons = await jobScheduling.CRON.getAllCron(); // get all cron -------------------------------------------------------------------------------- title: "Update Cron" description: "This page describes the Node.js method to update a cron in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.283Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/job-scheduling/cron/update-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - Java SDK (/en/sdk/java/v1/job-scheduling/cron/update-cron/) - Python SDK (/en/sdk/python/v1/job-scheduling/cron/update-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/update-cron/update-one-time-cron/#UpdateaOne-TimeCron) -------------------------------------------------------------------------------- # Update Cron Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. The following SDK can be used to update a particular cron's details. You can use this SDK to update the name, description and target. You can select your required cron by passing the cron id to the getCron() method, and update the details using the updateCron() method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. const cron = await jobScheduling.CRON.getCron('test_cron'); // get cron cron.cron_name = 'test'; const updatedCronDetailsWithName = await jobScheduling.CRON.updateCron('test_cron', cron); // update cron details with cron name updatedCronDetailsWithName.cron_name = 'test_new'; const updatedCronDetailsWithId = await jobScheduling.CRON.updateCron('1234567890', updatedCronDetailsWithName); // update cron details with cron id -------------------------------------------------------------------------------- title: "Pause Cron" description: "This page describes the Node.js method to pause a cron in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.283Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/job-scheduling/cron/pause-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - Java SDK (/en/job-scheduling/help/jobpool/introduction/) - Python SDK (/en/job-scheduling/help/jobpool/introduction/) - REST API Collection (/en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Pause Cron Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. This SDK method can be used to temporarily halt a cron from submitting a job to the job Pool. You need to pass the cron id or name of the cron you wish to pause to the pauseCron() SDK method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. const pausedCronWithName = await jobScheduling.CRON.pauseCron('test_cron'); // pause cron with cron name const pausedCronWithId = await jobScheduling.CRON.pauseCron('1234567890'); // pause cron with cron Id -------------------------------------------------------------------------------- title: "Resume Cron" description: "This page describes the Node.js method to resume a paused cron in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.284Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/job-scheduling/cron/resume-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - Java SDK (/en/sdk/java/v1/job-scheduling/cron/resume-cron/) - Python SDK (/en/sdk/python/v1/job-scheduling/cron/resume-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Resume Cron Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. This SDK method can be used to resume the operations of a cron that had been previously paused. This can be done by passing the paused cron id or name to the resumeCron() SDK method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. const resumedCronWithName = await jobScheduling.CRON.resumeCron('test_cron'); // resume cron with cron name const resumedCronWithId = await jobScheduling.CRON.resumeCron('1234567890'); // resume cron with cron Id -------------------------------------------------------------------------------- title: "Run Cron" description: "This page describes the Node.js method to execute a cron in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.284Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/job-scheduling/cron/run-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - Java SDK (/en/sdk/java/v1/job-scheduling/cron/run-cron/) - Python SDK (/en/sdk/python/v1/job-scheduling/cron/run-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/submit-cron-now/#SubmitCronInstantly) -------------------------------------------------------------------------------- # Run Cron Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. This SDK can be used to execute a cron. The cron once executed will immediately submit the associated job to the job Pool. This can be done by passing the cron id or name to the runCron() SDK method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. const jobA = await jobScheduling.CRON.runCron('test_cron'); // run cron with cron name const jobB = await jobScheduling.CRON.runCron('1234567890'); // run cron with cron Ids -------------------------------------------------------------------------------- title: "Delete Cron" description: "This page describes the Node.js method to delete a cron in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.284Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/job-scheduling/cron/delete-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - Java SDK (/en/sdk/java/v1/job-scheduling/cron/delete-cron/) - Python SDK (/en/sdk/python/v1/job-scheduling/cron/delete-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/delete-cron/#DeleteCron) -------------------------------------------------------------------------------- # Delete Cron Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. This SDK method can be used to delete a particular cron. This can be done by passing the cron id or name to the deleteCron() SDK method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. const deletedCronWithName = await jobScheduling.CRON.deleteCron('test_cron'); // delete cron with name const deletedCronWithId = await jobScheduling.CRON.deleteCron('1234567890'); // delete cron with Id ### Job Pool -------------------------------------------------------------------------------- title: "Get All Job Pools' Details" description: "This page describes the Node.js method to get all the job pools present in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.285Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/job-scheduling/jobpool/get-all-jobpool/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/jobpool/introduction/) - Java SDK (en/sdk/java/v1/job-scheduling/jobpool/get-all-job-pool/) - Python SDK (/en/sdk/python/v1/job-scheduling/jobpool/get-all-jobpool/) - REST API Collection (/en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Get All Job Pools' Details Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Using the following SDK, you will be able to get all the available details on all of the available Job Pools. const allJobpools = await jobScheduling.getAllJobpool(); // get all jobpool's details -------------------------------------------------------------------------------- title: "Get Specific Job Pool's Details" description: "This page describes the Node.js method to get the details of a specific job pool in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.285Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/job-scheduling/jobpool/get-job-pool/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/jobpool/introduction/) - Java SDK (/en/sdk/java/v1/job-scheduling/jobpool/get-job-pool/) - Python SDK (/en/sdk/python/v1/job-scheduling/jobpool/get-job-pool/) - REST API Collection (/en/api/code-reference/job-scheduling/jobpool/get-jobpool/#GetJobPoolbyIdentifier) -------------------------------------------------------------------------------- # Get Specific Job Pool's Details Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Using the following SDK, you will be able to get the details of a particular Job Pool by either passing the name or the ID of the Job Pool to the getJobpool() SDK method. const jobpoolWithName = await jobScheduling.getJobpool('test'); // get jobpool with jobpool name const jobpoolWithId = await jobScheduling.getJobpool('123456789'); // get jobpool with jobpool Id ### Jobs -------------------------------------------------------------------------------- title: "Create Job" description: "This page describes the Node.js method to get all the job pools present in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.287Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/job-scheduling/jobs/create-job/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/jobpool/introduction/) - Java SDK (/en/sdk/java/v1/job-scheduling/jobs/create-job/) - Python SDK (/en/sdk/python/v1/job-scheduling/jobs/create-job/) - REST API Collection (/en/api/code-reference/job-scheduling/job/submit-job/submit-webhook-job/#SubmitWebhookJobByID) -------------------------------------------------------------------------------- # Create Job Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Using the following SDK method, you can create and submit Jobs to trigger Job Functions, Webhooks, Circuits, and App Sail services. You can also pass optional arguments in the form of JSON key value pairs. SDK snippet to create and submit Job to trigger: // create function job const functionJob = await jobScheduling.JOB.submitJob({ job_name: 'test_job', // set a name for the job jobpool_name: 'test', // set the name of the Function jobpool where the job should be submitted target_type: 'Function', // set the target type as Function for function jobs target_name: 'target_function', // set the target function's name (optional) (either target_id or target_name is mandatory) // target_id: '123467890', // set the target functions's Id (optional) (either target_id or target_name is mandatory) params: { arg1: 'test', arg2: 'job' }, // set params to be passed to target function (optional) job_config: { number_of_retries: 2, // set the number of retries retry_interval: 15 * 60 // set the retry interval } // set job config - job retries => 2 retries in 15 mins (optional) }); // create circuit job const circuitJob = await jobScheduling.JOB.submitJob({ job_name: 'test_job', // set a name for the job jobpool_name: 'test', // set the name of the Circuit jobpool where the job should be submitted target_type: 'Circuit', // set the target type as Circuit for circuit jobs target_name: 'target_circuit', // set the target circuit's name (optional) (either target_id or target_name is mandatory) // target_id: '123467890', // set the target circuit's Id (optional) (either target_id or target_name is mandatory) test_cases: { arg1: "job", arg2: "test" }, // set the circuit test cases job_config: { number_of_retries: 2, // set the number of retries retry_interval: 15 * 60 // set the retry interval } // set job config - job retries => 2 retries in 15 mins (optional) }); // create webhook job const webhookJob = await jobScheduling.JOB.submitJob({ job_name: 'test_job', // set a name for the job jobpool_name: 'test', // set the name of the Webhook jobpool where the job should be submitted target_type: 'Webhook', // set the target type as Webhook for webhook jobs request_method: 'POST', // set the webhook request's method url: 'https://catalyst.zoho.com', // set the webhook request's url params: { arg1: 'test', arg2: 'job' }, // set the webhook request's query params (optional) headers: { IS_TEST_REQUEST: 'true' }, // set the webhook request's headers (optional) request_body: 'test_request', // set the webhook request's body (optional) job_config: { number_of_retries: 2, // set the number of retries retry_interval: 15 * 60 // set the retry interval } // set job config - job retries => 2 retries in 15 mins (optional) }); // create appsail job const appsailJob = await jobScheduling.JOB.submitJob({ job_name: 'test_job', // set a name for the job jobpool_name: 'test', // set the name of the AppSail jobpool where the job should be submitted target_type: 'AppSail', // set the target type as AppSail for appsail jobs target_name: 'target_appsail', // set the target appsail's name (optional) (either target_id or target_name is mandatory) // target_id: '123467890', // set the target appsail's Id (optional) (either target_id or target_name is mandatory) request_method: 'POST', // set the appsail request's method url: '/test', // set the appsail's url path (optional) params: { arg1: 'test', arg2: 'job' }, // set the appsail request's query params (optional) headers: { IS_TEST_REQUEST: 'true' }, // set the appsail request's headers (optional) request_body: 'test_request', // set the appsail request's body (optional) job_config: { number_of_retries: 2, // set the number of retries retry_interval: 15 * 60 // set the retry interval } // set job config - job retries => 2 retries in 15 mins (optional) }); -------------------------------------------------------------------------------- title: "Get Job Details" description: "This page describes the Node.js method to get job details with sample code snippets." last_updated: "2026-09-29T06:07:16.288Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/job-scheduling/jobs/get-job/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/job/introduction/) - Java SDK (/en/sdk/java/v1/job-scheduling/jobs/get-job/) - Python SDK (/en/sdk/python/v1/job-scheduling/jobs/get-job/) - REST API Collection (/en/api/code-reference/job-scheduling/job/get-job/#GetJobByID) -------------------------------------------------------------------------------- # Get Job Details Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Using the following SDK method, you will be able to get all available details about a job that has been submitted to a job Pool. You need to pass the Job Id to the getJob() SDK method. const job = await jobScheduling.JOB.getJob('1234567890'); // get job details with job Id -------------------------------------------------------------------------------- title: "Delete Job" description: "This page describes the Node.js method to delete a job with sample code snippets." last_updated: "2026-09-29T06:07:16.293Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/job-scheduling/jobs/delete-job/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/jobpool/introduction/) - Java SDK (/en/sdk/java/v1/job-scheduling/jobs/delete-job/) - Python SDK (/en/sdk/python/v1/job-scheduling/jobs/delete-job/) - REST API Collection (/en/api/code-reference/job-scheduling/job/delete-job/#DeleteJobbyID) -------------------------------------------------------------------------------- # Delete Job Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Using the following SDK method, you will be able to delete a job that is in the process of being executed in a job Pool. You need to pass the Job Id to the deleteJob() SDK method. const deletedJob = await jobScheduling.JOB.deleteJob('1234567890'); // delete job with job Id ## Pipelines -------------------------------------------------------------------------------- title: "Get Pipeline Instance" description: "This page describes the method to fetch pipeline instance and use it for other pipeline operations." last_updated: "2026-09-29T06:07:16.293Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/pipelines/get-pipeline-instance/" service: "All Services" related: - Catalyst Pipelines (/en/pipelines/help/pipelines/introduction) - Create a Pipeline (/en/pipelines/help/pipelines/create-a-pipeline) - Java SDK (/en/sdk/java/v1/pipelines/get-pipeline-instance) - Python SDK (/en/sdk/python/v1/pipelines/get-pipeline-instance) - REST API (/en/api/code-reference/pipelines/get-pipeline-details) -------------------------------------------------------------------------------- # Catalyst Pipelines Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst Pipelines implements a CI/CD approach to enable automation of building, testing, and deployment of web or mobile applications to preferred environments. You can create a pipeline from the Catalyst console.Using the SDKs below, you can retrieve the details of a Catalyst Pipeline and also execute a pipeline by incorporating the code snippets in your application. # Get Pipeline Instance A component instance is an object that can be used to access the properties specific to a particular component. You can create a component instance to perform the below listed actions in Catalyst Pipelines. The app reference used in the code below is the Node object returned as a response during SDK initialization. You can create a new pipelines_service instance as shown below. const pipelines_service = app.pipeline() This component instance will be used for all Pipeline operations in the Node.js SDK. -------------------------------------------------------------------------------- title: "Get Pipeline Details" description: "This page describes the method to fetch all the details of an existing Catalyst Pipeline." last_updated: "2026-09-29T06:07:16.293Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/pipelines/get-pipeline-details/" service: "All Services" related: - Catalyst Pipelines (/en/pipelines/help/pipelines/introduction) - Create a Pipeline (/en/pipelines/help/pipelines/create-a-pipeline) - Java SDK (/en/sdk/java/v1/pipelines/get-pipeline-instance) - Python SDK (/en/sdk/python/v1/pipelines/get-pipeline-instance) - REST API (/en/api/code-reference/pipelines/get-pipeline-details) -------------------------------------------------------------------------------- # Get Pipeline Details Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. You can fetch the details of the Catalyst Pipeline by passing the pipeline ID as a parameter to the getPipelineDetails() method. The name of the pipeline, details of the Catalyst project in which the pipeline has been created, the details of the user who created the pipeline, the time of creation, and if modifications have been done, the details of the user who modified the pipeline, the modified time, the status of the pipeline and other details like runner specifications are returned as response to this method. The pipelines_service reference used below is already defined in this component instance page. let pipline_details = pipelines_service.getPipelineDetails("16965000000019146") A sample response is shown below: { "status": "success", "data": { "pipeline_id": "16965000000019146", "name": "test1", "project_details": { "project_name": "Project-Rainfall", "id": "5000000000072", "project_type": "Live" }, "created_by": { "zuid": "20257791", "is_confirmed": false, "email_id": "amelia.burrows@zylker.com", "first_name": "Amelia", "last_name": "Burrows", "user_type": "Admin", "user_id": "5000000000056" }, "created_time": "Mar 19, 2024 11:28 AM", "modified_by": { "zuid": "20257791", "is_confirmed": false, "email_id": "amelia.burrows@zylker.com", "first_name": "Amelia", "last_name": "Burrows", "user_type": "Admin", "user_id": "5000000000056" }, "modified_time": "Mar 19, 2024 11:28 AM", "git_account_id": "", "mask_regex": [ null ], "pipeline_status": "Active", "config_id": 2, "integ_id": 1 } } -------------------------------------------------------------------------------- title: "Execute Pipeline" description: "This page describes the method to run the Catalyst Pipeline manually." last_updated: "2026-09-29T06:07:16.294Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/pipelines/execute-pipeline/" service: "All Services" related: - Catalyst Pipelines (/en/pipelines/help/pipelines/introduction) - Create a Pipeline (/en/pipelines/help/pipelines/create-a-pipeline) - Java SDK (/en/sdk/java/v1/pipelines/get-pipeline-instance) - Python SDK (/en/sdk/python/v1/pipelines/get-pipeline-instance) - REST API (/en/api/code-reference/pipelines/get-pipeline-details) -------------------------------------------------------------------------------- # Execute Pipeline Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. You can initiate a Catalyst pipeline run by passing the pipeline ID and the branch name as parameters to the runPipeline() method. You can also pass environment variables required for the pipeline execution in a JSON object to this method, and it is completely optional. This method returns the execution history details of the pipeline as the response. The pipelines_service reference used below is already defined in this component instance page. let execution_details = pipelines_service.runPipeline("8431000000162051", main,{"EVENT": "push", "URL":"https://www.google.com"}) A sample response is shown below: { "status": "success", "data": { "history_id": "5000000021007", "pipeline_id": "8431000000162051", "event_time": "Mar 20, 2024 02:02 PM", "event_details": { "BRANCH_NAME": "main", "EVENT": "push", "URL": "https://www.google.com" }, "history_status": "Queued" } } ## QuickML -------------------------------------------------------------------------------- title: "Execute QuickML Endpoint" description: "This page describes the method to execute QuickML endpoints in your NodeJS application with a sample code snippet." last_updated: "2026-09-29T06:07:16.294Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/quickml/execute-quickml-endpoints/" service: "QuickML" related: - QuickML (/en/quickml/) - QuickML Pipeline Endpoints (/en/quickml/help/pipeline-endpoints/) -------------------------------------------------------------------------------- # Catalyst QuickML Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst QuickML is a no-code machine learning pipeline builder service that lets you implement a host of pre-built ML algorithms, operations, and data preprocessing techniques, and connect with datasets to build and publish ML models. After you publish the data pipeline and ML pipeline, you can access the models you create with authenticated endpoints. ### Execute QuickML Endpoint The code snippet given below allows you to pass input data to a published QuickML endpoint, and predict the outcome based on the ML model's processing. The output returns the prediction of the values of the target column that is defined while creating the ML pipeline. Note: 1. You will need to have the ML pipeline and the model's endpoint configured and published in your project using the Catalyst console, before you execute this code to predict the outcome with the code snippet below. 2. QuickML is currently not available to Catalyst users accessing from the JP, SA or CA data centers. The quickml component instance is created as shown below, which will not fire a server-side call. You can pass the input data to the model's endpoint as key-value pairs. The endpoint_key mentioned below is the unique ID of the endpoint published for the ML model configured in your project. The endpoint key and the input data are passed to the predict() method for execution. // input data const input_data = { // Enter column name and value as per your dataset "column_name1": "value1", "column_name2": "value2", "column_name3": "value3" } // create a quickml instance const quickml = app.quickML(); // execute predict method const result = await quickml.predict("{endpoint_key}",input_data); // Replace {endpoint_key} with the endpoint key copied from the catalyst console console.log(result); The syntax of the output received is shown below: { 'status': 'success', 'result': ["results....."] } ## Serverless ### AppSail -------------------------------------------------------------------------------- title: "Implement SDK in AppSail" description: "This page describes the method to implement Node.js SDK in an AppSail service for Catalyst-managed runtimes and avail Catalyst features within the application.." last_updated: "2026-09-29T06:07:16.295Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/serverless/appsail/implement-sdk-in-appsail/" service: "Serverless" related: - AppSail Help (/en/serverless/help/appsail/introduction) -------------------------------------------------------------------------------- # Catalyst AppSail Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst AppSail is a fully-managed, independent platform for deploying web services to the cloud with ease. You can either deploy your application directly as a Catalyst-managed runtime that supports specific runtimes of Java, Node.js, and Python, or an OCI-compliant container image of your application as a custom-runtime. Catalyst enables you to implement Node.js SDK in your AppSail applications for Catalyst-managed runtimes. AppSail supports frameworks of Node.js such as React, Fastify, Express, etc. You can access help guides for building sample apps in Node.js. ## Implement Node.js SDK in AppSail You can implement the Catalyst Node.js SDK in the codebase of your AppSail service easily. You can install the Catalyst Node.js SDK package by executing the following command in your terminal and including it in your app's source code: npm install zcatalyst-sdk-node --save This will install the latest supported version of the Node.js SDK. You can also install a specific supported version in this way: npm install zcatalyst-sdk-node@2.1.1 --save You can then initialize the Node.js SDK in your application's code as shown in the sample code below. This passes the request object to the initialize() method. const catalyst = require('zcatalyst-sdk-node') const express = require('express') const app = express() app.get((req, res) => { let catalystApp = catalyst.initialize(req); //Your code goes here }) app.listen(process.env("X_ZOHO_CATALYST_LISTEN_PORT") || 9000) Refer Catalyst Node.js SDK help for details. The SDK documentation also provides sample code snippets for all supported functionalities. <br> -------------------------------------------------------------------------------- title: "Implement Catalyst SDK" description: "Catalyst AppSail is a fully-managed platform of Catalyst Serverless that enables you to develop and deploy web services in managed runtimes of Java, Node.js, and Python, or of custom runtimes as OCI images to the cloud with ease." last_updated: "2026-09-29T06:07:16.295Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/serverless/appsail/implement-catalyst-sdk/" service: "Serverless" -------------------------------------------------------------------------------- # Implement Catalyst SDK in AppSail Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst enables you to implement the SDK packages of the supported development environments in your AppSail applications for Catalyst-managed runtimes. This enables you to avail other Catalyst services and components in your app's functionality. You can implement the development SDKs of various programming environments in your app as specified below. Note: This is only available for web services built for a supported Catalyst-managed runtime. You will not be able to implement Catalyst SDK for apps deployed as OCI images through custom runtime. ### Implement Catalyst Java SDK You can download the Catalyst Java SDK package from the Developer Tools settings in your Catalyst console and include it in your app's source code. You can then implement the Catalyst Java SDK in your application's code and initialize it. Refer Catalyst Java SDK help for details about the various functionalities of the SDK toolkit and sample code snippets. The steps to implement and initialize the Catalyst SDK for different API versions of Java servlets are demonstrated with sample codes below. In all cases, Catalyst requires you to implement the **AuthHeaderProvider** interface from the Catalyst Java SDK package. The implementation defines the getHeader() method that returns the value of the request header. You can then pass an object of the implementation class to the init() method, to initialize the SDK. #### Java Servlet API versions <=4 Sample code for Java applications that use Java servlets of API versions lesser than or equal to 4.0 (javax.servlet): **Implementation Class:** package com.zoho.catalyst.appsail.demo.utils; import javax.servlet.http.HttpServletRequest; import com.zc.auth.AuthHeaderProvider; public class AuthProviderImpl implements AuthHeaderProvider { HttpServletRequest request; public AuthProviderImpl(HttpServletRequest request) { this.request = request; } @Override public String getHeaderValue(String key) { return request.getHeader(key); } } <br> **Initialization:** AuthProviderImpl authProviderImpl = new AuthProviderImpl(req); CatalystSDK.init(authProviderImpl) <br> #### Java Servlet API versions >=5 Sample code for Java applications that use Java servlets of API versions greater than or equal to 5.0 (jakarta.servlet): **Implementation Class:** import com.zc.auth.AuthHeaderProvider; import jakarta.servlet.http.HttpServletRequest; public class AuthProviderImpl implements AuthHeaderProvider { private HttpServletRequest request; AuthProviderImpl(HttpServletRequest request) { this.request = request; } @Override public String getHeaderValue(String s) { return request.getHeader(s); } } <br> **Initialization:** CatalystSDK.init(new AuthProviderImpl((HttpServletRequest) servletRequest)); <br> If you are developing a Java application with the Maven build tool, you can include the Catalyst Java SDK as a dependency in the Maven configuration file (pom.xml), instead of downloading and adding the SDK in your source code manually. To add the Catalyst SDK in a Maven project, simply add the Zoho repository (published in MvnRepository) in the pom.xml file as shown below: &lt;repositories&gt; &lt;repository&gt; &lt;id&gt;java-sdk&lt;/id&gt; &lt;url&gt;https://maven.zohodl.com&lt;/url&gt; &lt;/repository&gt; &lt;/repositories&gt; You can then add the Java SDK as a dependency in pom.xml as shown below: &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;com.zoho.catalyst&lt;/groupId&gt; &lt;artifactId&gt;java-sdk&lt;/artifactId&gt; &lt;version&gt;1.15.0&lt;/version&gt; &lt;/dependency&gt; &lt;/dependencies&gt; <br> ### Implement Catalyst Node.js SDK You can install the Catalyst Node.js SDK package by executing the following command in your terminal and including it in your app's source code: npm install zcatalyst-sdk-node --save This will install the latest supported version of the Node.js SDK. You can also install a specific supported version in this way: npm install zcatalyst-sdk-node@2.1.1 --save You can then initialize the Node.js SDK in your application's code as shown in the sample code below. This passes the request object to the initialize() method. const catalyst = require('zcatalyst-sdk-node') const express = require('express') const app = express() app.get((req, res) => { let catalystApp = catalyst.initialize(req); //Your code goes here }) app.listen(process.env("X_ZOHO_CATALYST_LISTEN_PORT") || 9000) Refer Catalyst Node.js SDK help for details. The SDK documentation also provides sample code snippets for all supported functionalities. <br> ### Implement Catalyst Python SDK You can install Catalyst Python SDK for your AppSail solution by executing the following command in your terminal and including it in your app's source code: pip install zcatalyst-sdk -t . You can then import the Python SDK in your code for your Catalyst app. The SDK will need to be initialized with the request object before each request. An example code snippet for importing and initializing Python SDK in a Flask web app is shown below: from flask import Flask, request, g import os import zcatalyst_sdk from zcatalyst_sdk.catalyst_app import CatalystApp app = Flask(__name__) @app.before_request def before_request(): if request.path.startswith('/admin'): return 'Unauthorized', 401 # if authorized user g.zc_app = zcatalyst_sdk.initialize(req=request) @app.route('/') def index(): return 'Web App with Python Flask!' @app.route('/cache') def cache(): app: CatalystApp = g.zc_app resp = app.cache().segment().put('key', 'value') return resp, 200 listen_port = os.getenv('X_ZOHO_CATALYST_LISTEN_PORT', 9000) app.run(host='0.0.0.0', port = listen_port) Refer to Catalyst Python SDK help for details about the various functionalities of the SDK toolkit and sample code snippets. ### Circuits -------------------------------------------------------------------------------- title: "Execute Circuit" description: "This page describes the method to make use of circuits to organize and orchestrate tasks in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.297Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/serverless/circuits/execute-circuit/" service: "Serverless" related: - Execute Circuit - API (/en/api/code-reference/serverless/circuits/execute-circuit/#ExecuteCircuit) - Circuits (/en/serverless/help/circuits/introduction) -------------------------------------------------------------------------------- # Execute a Circuit Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst Circuits allow you to define, organize, and orchestrate a sequence of tasks to be carried out automatically. You can enable concurrent or sequential executions of Catalyst functions in a circuit, and additionally include conditions, data, and paths in it and automate the workflow. Note: Circuits is currently not available to Catalyst users accessing from the EU, AU, IN, JP, SA or CA data centers. The sample code below illustrates executing a circuit by referring to its unique Circuit ID and passing key-value pairs as the input JSON to the circuit. It also illustrates obtaining the circuit's execution details by referring to its unique Execution ID saved in the execution history of the circuit. The circuit reference used below is defined in the component instance page. //Executes the circuit by referring to its Circuit ID and passes the input JSON circuit.execute('195000000041001', 'sampleName', { name: 'Aaron Jones'}).then((result) => { console.log(result); }).catch((err) => console.log(err.toString())); //Written to Catalyst logs //Returns the circuit's execution details by referring to the Circuit ID and Execution ID circuit.status('195000000041001', '195000000043002').then((result) => { console.log(result); }).catch((err) => console.log(err.toString())); //Written to Catalyst Logs //Aborts the circuit execution by referring to the Circuit ID and Execution ID circuit.abort('195000000041001', '195000000043002').then((result) => { console.log(result); }).catch((err) => console.log(err.toString())); //Written to Catalyst Logs A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node.js { id: "b3e2f61e-4795-428e-8365-3609bf2b5606", name: "Name", start_time: "Aug 18, 2021 07:35 PM", status: "running", status_code: 1, execution_meta: {}, circuit_details: { name: "NewCircuit", ref_name: "newcircuit", description: "", instance_id: "70454fc5-3bf6-45af-81ca-2742cc049698" }, input: { name: "Aaron Jones" } } -------------------------------------------------------------------------------- title: "Get Circuit Instance" description: "This page describes the method to make use of circuits to organize and orchestrate tasks in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.298Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/serverless/circuits/get-a-component-instance/" service: "Serverless" related: - Circuits (/en/serverless/help/circuits/introduction) -------------------------------------------------------------------------------- # Circuits Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. ### Get component instance The circuit reference can be created in the following way. This does not fire a server-side call. Circuits is currently not available to Catalyst users accessing from the EU, AU, IN, JP, SA or CA data centers. //Get a circuit instance let circuit = app.circuit(); ### Functions -------------------------------------------------------------------------------- title: "Get Functions Instance" description: "This page describes the method to execute functions in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.302Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/serverless/functions/get-component-instance/" service: "Serverless" related: - Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Functions Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. The function group in Catalyst is created and defined through either Catalyst's online editor or the Command Line Interface (CLI). The functions in a function group can be executed in a testing environment as well as in the production environment. #### Get a component instance The function reference can be created using the following method which does not fire a server-side call. //Get a function instance let functions = app.functions(); -------------------------------------------------------------------------------- title: "Execute Function" description: "This page describes the method to execute functions in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.302Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/serverless/functions/execute-function/" service: "Serverless" related: - Execute Function - API (/en/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) - Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Execute a Function Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. A function can be executed by calling the _execute()_ method in which the function ID and configuration (of type JSON) are passed as parameters. The _functions_ reference used in the code snippets below is the component instance. #### Create a Function Configuration (JSON) Before executing a function, you must set the configuration required for it. Here, the configuration specifies the function arguments and their values. (function parameters) The configuration can be set using the following code snippet: //Create Configuration for function Execution let conf = { args: { Name: 'Amelia' } } ### Execute function The unique function ID is passed as a parameter to the execute() function to call the function to be executed with the necessary configuration. The promise returned here will be resolved to an object which is a JSON. let functions = app.functions(); //Call Function with the function ID and the configuration let promiseResult = functions.execute(1510000000059262, conf); promiseResult.then((functionResponse) => { console.log(functionResponse); }); Note: You can also pass the function name as a string to the execute() method instead of using the function ID. ## SmartBrowz -------------------------------------------------------------------------------- title: "Create SmartBrowz Instance" description: "This page describes the method to create a SmartBrowz instance" last_updated: "2026-09-29T06:07:16.303Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/smartbrowz/create-smartbrowz-instance/" service: "SmartBrowz" related: - SmartBrowz (/en/smartbrowz/getting-started/introduction/) -------------------------------------------------------------------------------- # Catalyst SmartBrowz Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst SmartBrowz components allows you to control, manage a headless browser and perform a variety of operations such as generating PDFs and screenshots of webpages, creating templates to generate PDFs with dynamic content, extracting data from the web using powerful Catalyst APIs and more. ### Create SmartBrowz Instance A component instance is an object that can be used to access the properties specific to a particular component. You can create a component instance to execute any headless actions in SmartBrowz. You can create a new smartbrowz instance as shown below: const smartbrowz = app.smartbrowz(); This component instance will be used for all SmartBrowz operations in Node.js SDK. -------------------------------------------------------------------------------- title: "PDF & Screenshot" description: "This page describes the method to generate PDF and Screenshot" last_updated: "2026-09-29T06:07:16.303Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/smartbrowz/generate-pdfnscreenshot/" service: "SmartBrowz" related: - PDF & Screenshot - API (/en/api/code-reference/smartbrowz/generate-pdfnscreenshoturl/#PDF%26ScreenshotwithHTML%2fURLasInput) -------------------------------------------------------------------------------- # PDF & Screenshot Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Catalyst SmartBrowz offers you the PDF & Screenshot component to generate your prefered visual docuemnts through code. You can incorporate this functionality in your application by copying the code below and pasting it in your application logic. Using the SDK below, you can generate visual documents by using HTML, URL or Templates as your input. ### Generate Visual Documents Using Template const smartbrowz = app.smartbrowz(); let result = await smartbrowz.generateFromTemplate("2075000000021001", { "pdf_options": { 'display_header_footer': true, 'format': 'A1', 'height': '100', 'width': '100', 'landscape': true, 'page_ranges': '1-2', 'scale': 1.0, 'password': '****123' // Add password after enabling the template password setting from the console }, "page_options": { 'css': {'content': 'body { font-size: 12px; }'}, 'javascript_enabled': true, 'viewport': { 'height': 800, 'width': 600 }, 'device': 'Blackberry PlayBook' }, 'navigation_options': { 'timeout': 30000, 'wait_until': 'domcontentloaded' "output_options": { "output_type": "pdf" }, "template_data": {} }); console.log('result::', result); ### Generate PDF From HTML const smartbrowz = app.smartbrowz(); let result = await smartbrowz.convertToPdf("<html>HI</html>", { "pdf_options": { 'display_header_footer': true, 'footer_template': '<div style="font-size: 10px; width: 100%; text-align: center; padding: 5px;">Page <span class="pageNumber', 'format': 'A1', 'header_template': '<div style="font-size: 10px; width: 100%; text-align: center; padding: 5px;">Header</div>', 'margin': { 'bottom': '20', 'left': '10', 'right': '10', 'top': '20' }, 'height': '100', 'width': '100', 'landscape': true, 'page_ranges': '1-2', 'scale': 1.0, 'password': 'Siva123' }, "page_options": { 'css': {'content': 'body { font-size: 12px; }'}, 'javascript_enabled': true, 'viewport': { 'height': 800, 'width': 600 }, 'device': 'Blackberry PlayBook' }, 'navigation_options': { 'timeout': 30000, 'wait_until': 'domcontentloaded' } }); console.log('result::', result); ### Generate Screenshot from URL const smartbrowz = app.smartbrowz(); let result = await smartbrowz.convertToPdf("https://www.google.com", { "pdf_options": { 'display_header_footer': true, 'footer_template': '<div style="font-size: 10px; width: 100%; text-align: center; padding: 5px;">Page <span class="pageNumber', 'format': 'A1', 'header_template': '<div style="font-size: 10px; width: 100%; text-align: center; padding: 5px;">Header</div>', 'margin': { 'bottom': '20', 'left': '10', 'right': '10', 'top': '20' }, 'height': '100', 'width': '100', 'landscape': true, 'page_ranges': '1-2', 'scale': 1.0, 'password': 'Siva123' }, "page_options": { 'css': {'content': 'body { font-size: 12px; }'}, 'javascript_enabled': true, 'viewport': { 'height': 800, 'width': 600 }, 'device': 'Blackberry PlayBook' }, 'navigation_options': { 'timeout': 30000, 'wait_until': 'domcontentloaded' } }); console.log('result::', result); In the PDF & Screenshot section of the console, you can directly test this component using the Playground feature, and you can also copy the SDK directly from the console. Note: Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of Catalyst SmartBrowz is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone. -------------------------------------------------------------------------------- title: "Dataverse" description: "This page describes the SDK methods for Catalyst Dataverse modules." last_updated: "2026-09-29T06:07:16.303Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/smartbrowz/dataverse/" service: "SmartBrowz" related: - Dataverse (/en/smartbrowz/help/dataverse/introduction/) -------------------------------------------------------------------------------- # Dataverse Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Dataverse is a Catalyst SmartBrowz component that performs data extraction from the web through scraping. The three categories of data extraction functionalities offered by Dataverse are explained below. Note: We can only assure to provide you with publicly available information available over the web. ### Lead Enrichment The Lead Enrichment module allows you to fetch details of a specific organization from the web. You will need to provide the organization's name, its email address, or its website URL as the parameters to the getEnrichedLead() method, in order to retrieve the information. Note: You must provide the value for at least one key in the getEnrichedLead() method. The smartbrowz reference used here is the component instance that we created earlier. const response = await smartbrowz.getEnrichedLead({ 'leadName':'zoho', 'websiteUrl':'https://www.zoho.com', 'email':'sales@zohocorp.com' }); console.log(response); The response is shown below: [{ "employee_count": "12000", "website": "https://www.zoho.com", "address": [ { "country": "India", "pincode": "603202", "city": "Chengalpattu District", "street": "Estancia It Park, Plot No. 140 151, Gst Road Vallancheri", "state": "Tamil Nadu", "id": "Estancia IT Park, Plot no. 140, 151, GST Road, Vallancheri, Chennai." } ], "social": { "twitter": [ "twitter.com/zoho" ] }, "source_language": "en", "description": "Zoho Corporation offers web-based business applications.", "organization_name": "ZOHO", "ceo": "Sridhar Vembu", "headquarters": [ { "country": "India" } ], "revenue": "$1B", "years_in_industry": "27", "about_us": "https://www.zoho.com/aboutus.html?ireft=nhome&src=home1", "founding_year": "1996", "contact": [ "844-316-5544", "0800-085-6099" ], "industries": { "computer programming services": "Includes data processing services and other computer related services." }, "logo": "https://www.zohowebstatic.com/sites/zweb/images/ogimage/zoho-logo.png", "organization_type": [ "Private Limited Company" ], "business_model": [ "B2B" ], "email": [ "sales@zohocorp.com", "press@zohocorp.com" ], "organization_status": "LARGE_ENTERPRISE", "territory": [ "India", "United States of America" ], "sign_up_link": "https://www.zoho.com/signup.html?all_prod_page=true" } ] ### Tech Stack Finder The TechStack Finder module allows you to fetch details of the technologies implemented and the frameworks used by an organization. You will need to provide the organization's website URL as a parameter to the findTechStack() method, in order to retrieve the information. The smartbrowz reference used here is the component instance that we created earlier. const response = await smartbrowz.findTechStack('https://www.zoho.com'); console.log(response); The response is shown below: [ { "website": "https://www.zoho.com", "technographic_data": { "audio-video media": "Vimeo,YouTube", "ssl_certificate": "Sectigo Limited", "email hosting providers": "Zoho Mail,SPF" }, "organization_name": "ZOHO" } ] ### Similar Companies The Similar Companies module allows you to get the list of potential organizations that provide the same or similar services as an organization you specify as the input. You can either provide the name of the input organization or its website URL as a parameter to the getSimilarCompanies() method. The smartbrowz reference used here is the component instance that we created earlier. const response = await smartbrowz.getSimilarCompanies({ 'leadName':'zoho', 'websiteUrl':'https://www.zoho.com' }); console.log(response); [ "Cybage Software Pvt. Ltd.", "Google LLC", "Chargebee, Inc.", "Infosys Ltd.", 'GlobalLogic Inc.', 'Persistent Systems Ltd.', 'DELTA ELECTRONICS Inc.', 'Salesforce, Inc.' ] Note: Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of Catalyst SmartBrowz is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone. ### Browser Grid -------------------------------------------------------------------------------- title: "Overview" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-09-29T06:07:16.321Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/overview/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/overview/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Overview Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Browser Grid a *Catalyst SmartBrowz* service's auto scaling component that allows you to configure and manage multiple headless browsers. You are provided with options to configure your required grid by configuring the number of nodes and browsers that your process would require. Using the Browser Grid Node.js SDK, you will be able to get details about your browser grid, get node details about your browser grid and terminate browser grid executions. ### List of SDK Methods <table class="content-table"> <thead> <tr> <th class="w25p">Category</th> <th class="w50p">SDK Methods</th> <th class="w25p">Scope Requirements</th> </tr> </thead> <tbody> <tr> <td>General Operations</td> <td>Get Browser Grid Instance</td> <td>Admin</td> </tr> <tr> <td>Browser Grid Operations</td> <td> <ul> <li>Get all browser grids</li> <li>Get specific browser grid</li> <ul> <li>Get specific browser grid with ID</li> <li>Get specific browser grid with name</li> </ul> <li>Get nodes of a grid</li> <ul> <li>Using Grid ID</li> <li>Using Grid Name</li> </ul> <li>Stop browser grid</li> <ul> <li>Using Grid ID</li> <li>Using Grid Name</li> </ul> </ul> </td> <td>Admin</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Get Browser Grid Instance" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-09-29T06:07:16.321Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get Browser Grid Instance Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. You can get the browser grid instance as shown below. This will not fire a server-side call. You will refer to this component instance in various code snippets when working with the Browser Grid component. const grid = app.SmartBrowz().browserGrid(); // Get Browser Grid instance -------------------------------------------------------------------------------- title: "Get All Browser Grid Details" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-09-29T06:07:16.321Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-all-grids/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/get-all-grids/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/get-all-grids/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get All Browser Grid Details Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. You can use the getGrid() SDK method to get the grid details of all the browser grids that are present in your project. The grid instance used in the following snippet is the component reference. Info: To use this SDK method, you need to initialize it with Admin scope. You can learn more about this requirement from this section const gridList = await grid.getGrid(); // return details of all grids console.log(gridList); ### Example of Expected Response { "status": "success", "data": [ { "id": "3970000000006058", "name": "play", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 07:04 PM", "modified_time": "Sep 10, 2025 07:04 PM", "api_key_modified_time": "1757511270919", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 10, "max_concurrent_count": 10, "config_type": 1 }, { "id": "3970000000005426", "name": "Automation", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 12:47 PM", "modified_time": "Sep 23, 2025 03:12 PM", "api_key_modified_time": "1757488669690", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 5, "max_concurrent_count": 5, "config_type": 2 }, { "id": "3970000000005027", "name": "SDK", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 11:33 AM", "modified_time": "Sep 10, 2025 04:27 PM", "api_key_modified_time": "1757484201284", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 5, "max_concurrent_count": 5, "config_type": 1 }, { "id": "3970000000005015", "name": "Puppeteer_Grid", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 10:21 AM", "modified_time": "Sep 10, 2025 10:21 AM", "api_key_modified_time": "1757479864798", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 1, "max_concurrent_count": 1, "config_type": 1 }, { "id": "3970000000005013", "name": "Selenium_Gridt", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 10:21 AM", "modified_time": "Sep 23, 2025 05:50 PM", "api_key_modified_time": "1757479864794", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 1, "max_concurrent_count": 1, "config_type": 2 } ] } -------------------------------------------------------------------------------- title: "Get a Specific Browser Grid" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-09-29T06:07:16.321Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-specific-grid/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-grid/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-grid) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get a Specific Browser Grid Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. You can get the details of a specific browser grid in your project by passing the Grid ID or grid name to the getGrid() SDK method. Info: To use this SDK method, you need to initialize it with Admin scope. You can learn more about this requirement from this section ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the getGrid() SDK method. The grid instance used in the following snippet is the component reference. const gridDetails = await grid.getGrid("3970000000005013"); // get grid details using the Grid ID console.log(gridDetails); ### Using the Grid's Name You can pass the name of the required browser grid to the getGrid() SDK method. The grid instance used in the following snippet is the component reference. const gridDetails = await grid.getGrid("Selenium_Grid"); // get grid details using the name of the grid console.log(gridDetails); ### Example of Expected Response { "status": "success", "data": { "id": "3970000000006058", "name": "Selenium_Grid", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 07:04 PM", "modified_time": "Sep 24, 2025 11:55 AM", "api_key_modified_time": "1757511270919", "created_by": { "zuid": "111734674", "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 10, "max_concurrent_count": 10, "config_type": 1 } } -------------------------------------------------------------------------------- title: "Get Details of a Node" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-09-29T06:07:16.321Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-specific-node/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-node/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-node/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get Details of a Node Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. By passing the **Grid ID** or name of the required browser grid to the getGridNodes() SDK method, you can get the details of a node in that grid. Info: To use this SDK method, you need to initialize it with Admin scope. You can learn more about this requirement from this section ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the getGridNodes() SDK method, to get its node details. The grid instance used in the following snippet is the component reference. const nodeDetails = await grid.getGridNodes("3970000000005013"); // get details of the node using its Grid ID ### Using the Grid's Name You can pass the name of the required browser grid to the getGridNodes() SDK method, to get its node details. The grid instance used in the following snippet is the component reference. const nodeDetails = await grid.getGridNodes("Selenium_Grid"); // get details of the node using the grid's name -------------------------------------------------------------------------------- title: "Stop the Browser Grid" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-09-29T06:07:16.322Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/smartbrowz/browser-grid/stop-grid/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/stop-grid/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/stop-grid/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Stop the Browser Grid Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. By passing the **Grid ID** or name of the required browser grid to the stopGrid() SDK method, you can terminate all executions and stop the browser grid. Info: To use this SDK method, you need to initialize it with Admin scope. You can learn more about this requirement from this section ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the stopGrid() SDK method, to stop the grid, and terminate all its executions. The grid instance used in the following snippet is the component reference. const gridTerminate = await grid.stopGrid("3970000000005013"); // stop the grid using the Grid ID ### Using the Grid's Name You can pass the name of the required browser grid to the stopGrid() SDK method, to stop the grid, and terminate all its executions. The grid instance used in the following snippet is the component reference. const gridTerminate = await grid.stopGrid("Selenium_Grid"); // stop the grid using the name of the grid ### Example of Expected Response { "status": "success", "data": true } ## Zia Services -------------------------------------------------------------------------------- title: "Get Zia Instance" description: "This page describes the method to use the Barcode Scanner feature to scan certain data formats in your NodeJS application with sample code snippets" last_updated: "2026-09-29T06:07:16.322Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/zia-services/get-component-instance/" service: "Zia Services" -------------------------------------------------------------------------------- Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. ### Get component instance The zia reference can be created in the following way. This does not fire a server-side call. //Get a zia instance let zia = app.zia(); -------------------------------------------------------------------------------- title: "OCR" description: "This page describes the method to use the Optical Character Recognition feature to detect textual characters in your Nodejs application with sample code snippets" last_updated: "2026-09-29T06:07:16.322Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/zia-services/ocr/" service: "Zia Services" related: - OCR - API (/en/api/code-reference/zia-services/ocr/#OCR) -------------------------------------------------------------------------------- # Optical Character Recognition Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Zia Optical Character Recognition electronically detects textual characters in images or digital documents, and converts them into machine-encoded text. Zia OCR can recognize text in 9 international languages and 10 Indian languages. You can check the list of languages and language codes from the API documentation Note:Catalyst does not store any of the files you upload in its systems. The files you upload are used for one-time processing only. They are not used for ML model training purposes either. Catalyst components are fully compliant with all applicable data protection and privacy laws. You must specify the path to the image or document file that needs to be processed for OCR. The response will also include a confidence score, which defines the accuracy of the processing, in addition to the recognized text. Allowed file formats: ._jpg_, ._jpeg_, ._png_, ._tiff_, ._bmp_, ._pdf_ File size limit: 20 MB You must pass the file path, model type, and languages as arguments to the extractOpticalCharacters() method. However, the model type and language values are optional. By default, it is passed as the OCR model type, and the languages are automatically detected if they are not specified. The zia reference used below is defined in the component instance page. The promise returned here is resolved to a JSON object. let fs = require('fs'); //Define the file stream for file attachments let result = await zia.extractOpticalCharacters( fs.createReadStream('/Users/amelia-421/Desktop/MyDoc.webp'), { language:'eng', modelType: 'OCR' }) ; console.log(result); A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node js { "confidence":95, "text":"This is a lot of 12 point text to test the\nocr code and see if it works on all types\nof file format\n\nThe quick brown dog jumped over the\nlazy fox. The quick brown dog jumped\nover the lazy fox. The quick brown dog\njumped over the lazy fox. The quick\nbrown dog jumped over the lazy fox" } -------------------------------------------------------------------------------- title: "Face analytics" description: "This page describes the method to use the Face Analytics feature to detect faces with specified criteria in your Nodejs application with sample code snippets" last_updated: "2026-09-29T06:07:16.322Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/zia-services/face-analytics/" service: "Zia Services" related: - Face analytics - API (/en/api/code-reference/zia-services/face-analytics/#FaceAnalytics) -------------------------------------------------------------------------------- # Face Analytics Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Zia Face Analytics performs facial detection in images, and analyzes the facial features to provide information such as the gender, age, and emotion of the detected faces. You must provide ._jpg_/._jpeg_ or ._png_ files as the input. Refer to the API documentation for the request and response formats. The analyseFace() method accepts the input image as its argument. You can also specify the analysis mode as basic, moderate, or advanced. You can also specify the attributes age, smile, or gender as true to detect or false to not detect. These values are optional. All attributes are detected and the advanced mode is processed by default. The response returns the prediction of the enabled attributes, the coordinates and landmarks of facial features of each face, and the confidence score of each analysis. The zia reference used below is defined in the component instance page. The promise returned here is resolved to a JSON object. let fs = require('fs'); var zia = app.zia(); //Pass the input file, the mode, and the features to detect zia.analyseFace(fs.createReadStream('./face.png'), { mode: 'moderate', age: true, emotion: true, gender: false }).then((result) => { console.log(result); }) .catch((err) => console.log(err.toString())); //Push errors to Catalyst Logs A sample response that you will receive for each version is shown below: { "faces_count":1, "faces":[ { "co_ordinates":[ "401", "193", "494", "313" ], "emotion":{ "confidence":{ "smiling":"0.75", "not_smiling":"0.25" }, "prediction":"smiling" }, "gender":{ }, "confidence":1, "id":"0", "landmarks":{ "right_eye":[ [ "467", "230" ] ], "nose":[ [ "451", "264" ] ], "mouth_right":[ [ "474", "278" ] ], "left_eye":[ [ "426", "239" ] ], "mouth_left":[ [ "434", "283" ] ] }, "age":{ "confidence":{ "20-29":"0.73", "30-39":"0.08", "0-2":"0.0", "40-49":"0.0", "50-59":"0.0", ">70":"0.0", "60-69":"0.0", "10-19":"0.17", "3-9":"0.0" }, "prediction":"20-29" } } ] } { "faces_count":1, "faces":[ { "co_ordinates":[ 401, 193, 494, 313 ], "emotion":{ "confidence":{ "smiling":"0.75", "not_smiling":"0.25" }, "prediction":"smiling" }, "gender":{ }, "confidence":1, "id":0, "landmarks":{ "right_eye":[ [ 467, 230 ] ], "nose":[ [ 451, 264 ] ], "mouth_right":[ [ 474, 278 ] ], "left_eye":[ [ 426, 239 ] ], "mouth_left":[ [ 434, 283 ] ] }, "age":{ "confidence":{ "20-29":"0.73", "30-39":"0.08", "0-2":"0.0", "40-49":"0.0", "50-59":"0.0", ">70":"0.0", "60-69":"0.0", "10-19":"0.17", "3-9":"0.0" }, "prediction":"20-29" } } ] } -------------------------------------------------------------------------------- title: "Image moderation" description: "This page describes the method to use the Image Moderation feature to detect vulnerability in images within your NodeJS application with sample code snippets" last_updated: "2026-09-29T06:07:16.322Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/zia-services/image-moderation/" service: "Zia Services" related: - Image moderation - API (/en/api/code-reference/zia-services/image-moderation/#ImageModeration) -------------------------------------------------------------------------------- # Image Moderation Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Image Moderation detects and recognizes inappropriate and unsafe content in images. The criteria include suggestive or explicit racy content, nudity, violence, gore, bloodshed, and the presence of weapons and drugs. You can provide a ._jpg_/._jpeg_ or ._png_ file as the input. Refer to the API documentation for the request and response formats. You can set the moderation mode as BASIC, MODERATE, or ADVANCED optionally. The image is processed in the ADVANCED mode by default. The response returns the probability of each criteria with their confidence scores, and the prediction of the image being safe_to_use or unsafe_to_use. The zia reference used below is defined in the component instance page.The promise returned here is resolved to a JSON object. let fs = require('fs'); zia.moderateImage(fs.createReadStream('./weapon.png'), {mode: 'moderate'}) //Pass the input file and the mode .then((result) => { console.log(result); }).catch((err) => console.log(err.toString())); //Push errors to Catalyst Logs A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node js {"probability":{"racy":"0.09","nudity":"0.06"},"confidence":"0.85","prediction":"safe_to#_use"} -------------------------------------------------------------------------------- title: "Object recognition" description: "This page describes the method to use the Object Recognition feature to locate objects in your NodeJS application with sample code snippets" last_updated: "2026-09-29T06:07:16.322Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/zia-services/object-recognition/" service: "Zia Services" related: - Object recognition - API (/en/api/code-reference/zia-services/object-recognition/#ObjectRecognition) -------------------------------------------------------------------------------- # Object Recognition Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Object Recognition detects,locates, and recognizes individual objects in an image file. Zia Object Recognition can identify 80 different kinds of objects from images. You can provide a ._jpg_/._jpeg_ or ._png_ file as the input. Refer to the API documentation for the request and response formats. The detectObject() method is used detect and identify the objects in the image, and the input file is passed as an argument to this method. It returns the coordinates of each object, their type, and the confidence score of each recognition. The zia reference used below is defined in the component instance page. The promise returned here is resolved to a JSON object. let fs = require('fs'); let result = await zia.detectObject(fs.createReadStream('./sampimage.webp')) ; console.log(result); A sample response that you will receive for each version is shown below: { "objects":[ { "co_ordinates":[ "322", "125", "708", "1201" ], "object_type":"person", "confidence":"99.82" } ] } { "objects":[ { "co_ordinates":[ 322, 125, 708, 1201 ], "object_type":"person", "confidence":"99.82" } ] } -------------------------------------------------------------------------------- title: "Barcode scanner" description: "This page describes the method to use the Barcode Scanner feature to scan certain data formats in your NodeJS application with sample code snippets" last_updated: "2026-09-29T06:07:16.322Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/zia-services/barcode-scanner/" service: "Zia Services" related: - Barcode scanner - API (/en/api/code-reference/zia-services/barcode-scanner/#BarcodeScanner) -------------------------------------------------------------------------------- # Barcode Scanner Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Zia Barcode Scanner enables you to scan the most commonly used linear and 2D barcode formats and decode the encoded data. Barcode Scanner can detect formats like Codabar, EAN-13, ITF, UPC-A, QR Code, and more. You can provide an input file of the format ._jpg_/._jpeg_ or ._png_. Refer to the API documentation for the request and response formats. You can specify the barcode format using setFormat. If you enter the format as ALL, Barcode Scanner automatically detects the format. It provides the decoded information as the response. The zia reference used below is defined in the component instance page.The promise returned here is resolved to a JSON object. let fs = require('fs'); zia.scanBarcode(fs.createReadStream('./barcode.png'), {format: 'code39'}) //Pass the input file and the format .then((result) => { console.log(result); }) .catch((err) => console.log(err.toString())); //Push errors to Catalyst Logs A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node js { "content": "https://demo.dynamsoft.com/dbr_wasm/barcode_reader_javascript.html" } ### Identity Scanner -------------------------------------------------------------------------------- title: "Facial comparison" description: "This page describes the method to use facial comparison feature in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.323Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/zia-services/identity-scanner/facial-comparison/" service: "Zia Services" related: - Facial comparison - API (/en/api/code-reference/zia-services/identity-scanner/facial-comparison/#FacialComparison) - Identity Scanner (/en/zia-services/help/identity-scanner/introduction) -------------------------------------------------------------------------------- # Identity Scanner Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Identity Scanner is a Zia AI-driven component that enables you to perform secure identity checks on individuals and documents by scanning and processing various ID proofs or official documents. It is a comprehensive suite that incorporates multiple functionalities divided into two major categories- E-KYC and Document Processing. Note: Catalyst does not store any of the files you upload in its systems. The documents you upload are used for one-time processing only. They are not used for ML model training purposes either. Catalyst components are fully compliant with all applicable data protection and privacy laws. ### Facial Comparison Facial Comparison, also known as E-KYC, is a part of Identity Scanner that Compares two faces in two different images to determine if they are the same individual. This will enable you to verify an individual's identity from their ID proof by comparing it with an existing photo of theirs. For example, you can verify the authenticity of a photo ID, such as an individual's Aadhaar card, by comparing it with their current photograph. Note: While the Document Processing feature of Identity Scanner is only relevant to Indian users, the Facial Comparison API and SDK tools are available to a global audience. However, accessing and testing Facial Comparison or E-KYC from the Catalyst console is restricted to the users from IN DC alone. You can perform a face comparison between a source image and a query image, by specifying the path to both the image files, as shown in the sample code. The compareFace() method processes both these images. The zia reference used here is defined in the component instance page. Note: You can mark either the ID proof image or the individual's photograph as the source or the query image. This will not affect the results. Allowed file formats: _.webp_, _.jpeg_, _.png_ File size limit: 10 MB The result of the comparison is set to true if the faces match, or false if they don't match. The result also contains a confidence score between the range of 0 to 1, that determines the accuracy of the processing. Only if the comparison yields a confidence score of above 50% i.e., 0.5, the result will be set to true. let fs = require('fs'); const zia = app.zia(); const sourceImage = fs.createReadStream('/Users/amelia-421/Desktop/source.webp'); //Specify the file path const queryImage = fs.createReadStream('/Users/amelia-421/Desktop/query.webp'); //Specify the file path zia.compareFace(sourceImage, queryImage) .then((res) => console.log(res)) .catch((err) => console.log('error: ', err)); //Push errors to Catalyst Logs A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node js { confidence: 0.9464, matched: "true" } -------------------------------------------------------------------------------- title: "Aadhaar" description: "This page describes the method to use the AADHAAR document processing feature in your Nodejs application with sample code snippets." last_updated: "2026-09-29T06:07:16.323Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/zia-services/identity-scanner/aadhaar/" service: "Zia Services" related: - Identity Scanner (/en/zia-services/help/identity-scanner/introduction) - Aadhaar - API (/en/api/code-reference/zia-services/identity-scanner/aadhaar/#Aadhaar) -------------------------------------------------------------------------------- # Identity Scanner Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Identity Scanner is a Zia AI-driven component that enables you to perform secure identity checks on individuals and documents by scanning and processing various ID proofs or official documents. It is a comprehensive suite that incorporates multiple functionalities divided into two major categories- E-KYC and Document Processing. Note: Catalyst does not store any of the files you upload in its systems. The documents you upload are used for one-time processing only. They are not used for ML model training purposes either. Catalyst components are fully compliant with all applicable data protection and privacy laws. ### Aadhaar The AADHAAR model is a part of the Document Processing feature that enables you to process Indian Aadhaar cards as identity proof documents. This enables you to extract fields of data from an Indian Aadhaar card using an advanced OCR technology. The response will return the parameters recognized from the Aadhaar card, along with confidence scores for each recognition that determine their accuracy. Note:Document Processing is only relevant to Indian users and is only available in the IN DC. This feature will not be available to users accessing from the EU, AU, US, JP, SA or CA data centers. Users outside of India from the other DCs can access the general OCR component to read and process textual content. You must provide the path to the image files of the front and back of the Aadhaar card through createReadStream, as shown in the code below.The zia reference used below is defined in the component instance page. The promise returned here is resolved to a JSON object. Note: The option to pass the languages present in an Aadhaar card has now been deprecated. Identity Scanner will now automatically identify the languages in an Aadhaar card and process it. The Node.js SDK code snippet will be updated accordingly soon. You can temporarily pass the languages as shown in the code below. You must pass English and the relevant regional language. For example, if you are from Tamil Nadu, you must pass tam and eng as the languages. You can check the list of languages and language codes from the API documentation. Allowed file formats: _.webp_, _.jpeg_, _.png_, _.bmp_, _.tiff_, _.pdf_<br /> File size limit: 15 MB The response contains the parameters recognized in the Aadhaar card such as the card holder's name, address, gender, Aadhaar card number assigned to respective keys. The response also shows a confidence score in the range of 0 to 1 for each of the recognized values. let fs = require('fs'); var zia = app.zia(); zia.extractAadhaarCharacters(fs.createReadStream('./frontImg.webp'), fs.createReadStream('./backImg.webp'),'eng,tam') //Pass the input files with the languages .then((result) => { console.log(result); }) .catch((err) => console.log(err.toString())); }); //Push errors to Catalyst Logs A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Nodejs { text: "{ "address":{ "prob":0.5,"value":"C/O Rainbow, xxxx STREET, xxxx- 0000" }, "gender":{ "prob":0.8,"value":"MALE" }, "dob":{ "prob":0.8, "value":"08/09/2001" }, "name":{ "prob":0.6, "value":"Ram Singh" }, "aadhaar":{ "prob":0.8, "value":"4000 0000 0000" } }" } -------------------------------------------------------------------------------- title: "PAN" description: "This page describes the method to use the PAN document processing feature in your NodeJS application with sample code snippets" last_updated: "2026-09-29T06:07:16.323Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/zia-services/identity-scanner/pan/" service: "Zia Services" related: - Identity Scanner (/en/zia-services/help/identity-scanner/introduction) - PAN - API (/en/api/code-reference/zia-services/identity-scanner/pan/#PAN) -------------------------------------------------------------------------------- # Identity Scanner Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Identity Scanner is a Zia AI-driven component that enables you to perform secure identity checks on individuals and documents by scanning and processing various ID proofs or official documents. It is a comprehensive suite that incorporates multiple functionalities divided into two major categories- E-KYC and Document Processing. Note:Catalyst does not store any of the files you upload in its systems. The documents you upload are used for one-time processing only. They are not used for ML model training purposes either. Catalyst components are fully compliant with all applicable data protection and privacy laws. ### PAN The PAN model is a part of the Document Processing feature that enables you to process Indian PAN cards as identity proof documents. This enables you to extract fields of data from a PAN card using an advanced OCR technology, and return the parameters recognized from the PAN card in the response. Note:Document Processing is only relevant to Indian users and is only available in the IN DC. This feature will not be available to users accessing from the EU, AU, US, JP, SA or CA data centers. Users outside of India from the other DCs can access the general OCR component to read and process textual content. You must provide the path to the image file of the front side of the PAN card, as shown in the code below. The zia reference used below is defined in the component instance page. Allowed file formats: _.webp_, _.jpeg_, _.png_<br /> File size limit: 15 MB You must specify the model type as PAN using modelType. The PAN model can only process text in English by default. No other languages are supported. The response will contain the parameters extracted from the PAN card such as their first name, last name, date of birth, and their PAN card number assigned to the respective keys. let fs = require('fs'); const zia = app.zia(); zia.extractOpticalCharacters(fs.createReadStream('/Users/amelia-421/Desktop/pan.webp'), {modelType: 'PAN'}) //Pass the input file with the model type .then((result) => { console.log(result); }) .catch((err) => console.log(err.toString())); //Push errors to Catalyst Logs }); A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Nodejs { date_of_birth: "03/04/1982", last_name: "VASUDEV MAHTO", pan: "ANRPM2537J", first_name: "PRAMOD KUMAR MAHTO" } -------------------------------------------------------------------------------- title: "Passbook" description: "This page describes the method to use the PASSBOOK document processing feature in your Java application with sample code snippets" last_updated: "2026-09-29T06:07:16.323Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/zia-services/identity-scanner/passbook/" service: "Zia Services" related: - Identity Scanner (/en/zia-services/help/identity-scanner/introduction) - Passbook - API (/en/api/code-reference/zia-services/identity-scanner/passbook/#Passbook) -------------------------------------------------------------------------------- # Identity Scanner Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Identity Scanner is a Zia AI-driven component that enables you to perform secure identity checks on individuals and documents by scanning and processing various ID proofs or official documents. It is a comprehensive suite that incorporates multiple functionalities divided into two major categories- E-KYC and Document Processing. Note: Catalyst does not store any of the files you upload in its systems. The documents you upload are used for one-time processing only. They are not used for ML model training purposes either. Catalyst components are fully compliant with all applicable data protection and privacy laws. ### Passbook The PASSBOOK model is a part of the Document Processing feature that enables you to process Indian bank passbooks as financial or identity proof documents. This enables you to extract fields of data from a passbook using the OCR technology, and fetch the parameters from it in the response. Note: Document Processing is only relevant to Indian users and is only available in the IN DC. This feature will not be available to users accessing from the EU, AU, US, JP, SA or CA data centers. Users outside of India from the other DCs can access the general OCR component to read and process textual content. The Passbook model supports 11 Indian languages and an additional 8 International languages. You can check the list of languages and language codes from the API documentation. You must provide the path to the image of the front page of the passbook, as shown in the code below. Allowed file formats: _.webp_, _.jpeg_, _.png_, _.bmp_, _.tiff_, _.pdf_<br /> File size limit: 15 MB You must specify the model type as PASSBOOK using the key modelType. You can also optionally specify the language as shown in the code below. English will be considered as the default language, if it isn't specified. The response contains the bank details and account details recognized from the passbook such as the bank name, branch, address, account number. The extracted fields of information are assigned to their respective keys. The response also shows if RTGS, NEFT, and IMPS have been enabled for that account. Note: Identity Scanner will return the response only in English, irrespective of the languages present in the passbook. The zia reference used below is defined in the component instance page. let fs = require('fs'); var zia = app.zia(); zia.extractOpticalCharacters(fs.createReadStream('/Users/amelia-421/Desktop/passbook.webp'), {language: 'tam', modelType: 'PASSBOOK'}) //Pass the input file with the model type and the optional language .then((result) => { console.log(result); }) .catch((err) => console.log(err.toString())); //Push errors to Catalyst Logs }); A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node js { text: "{ "address":"No.20,Gandhi Road,M.G Lane", "city":"Chennai", "centre":"Chennai", "bankName":"ABX BANK LIMITED", "accountNumber":"002001001625859", "branch":"Anna Nagar", "dateOfOpening":"30/08/2012", "imps":"true", "neft":"true", "district":"Chennai", "contact":"801234567", "micr":"641021121", "name":" 2312312", "state":"Tamil Nadu", "rtgs":"true", "ifsc":"ABX0000311" }" } -------------------------------------------------------------------------------- title: "Cheque" description: "This page describes the method to use the Cheque document processing feature in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.323Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/zia-services/identity-scanner/cheque/" service: "Zia Services" related: - Identity Scanner (/en/zia-services/help/identity-scanner/introduction) - Cheque - API (/en/api/code-reference/zia-services/identity-scanner/cheque/#Cheque) -------------------------------------------------------------------------------- # Identity Scanner Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Identity Scanner is a Zia AI-driven component that enables you to perform secure identity checks on individuals and documents by scanning and processing various ID proofs or official documents. It is a comprehensive suite that incorporates multiple functionalities divided into two major categories- E-KYC and Document Processing. Note: Catalyst does not store any of the files you upload in its systems. The documents you upload are used for one-time processing only. They are not used for ML model training purposes either. Catalyst components are fully compliant with all applicable data protection and privacy laws. ### Cheque The CHEQUE model is a part of the Document Processing feature that enables you to process Indian bank cheque leaves as identity proof documents. This enables you to extract fields of data from a cheque using an advanced OCR technology, and fetch the parameters recognized from the cheque through the response. Note: Document Processing is only relevant to Indian users and is only available in the IN DC. This feature will not be available to users accessing from the EU, AU, US, JP, SA or CA data centers. Users outside of India from the other DCs can access the general OCR component to read and process textual content. You must provide the path to the image file of the front page of the chequebook, as shown in the code below. The CHEQUE model can only process text in English by default. No other languages are supported. Allowed file formats: _.webp_, _.jpeg_, _.png_<br /> File size limit: 15 MB You must specify the model type as CHEQUE using modelType(). Note:Zia only processes cheques of the CTS-2010 format. The zia reference used below is defined in the component instance page. let fs = require('fs'); var zia = app.zia(); zia.extractOpticalCharacters(fs.createReadStream('/Users/amelia-421/Desktop/cheque.webp'), {modelType: 'CHEQUE'}) //Pass the input file with the model type .then((result) => { console.log(result); }) .catch((err) => console.log(err.toString())); //Push errors to Catalyst Logs }); A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Nodejs { date: "15/11/2014", account_number: "89323223232222", amount: "10615", branch_name: "ANNA NAGAR", bank_name: "ABX BANK", ifsc: "BB9033232" } ### Text Analytics -------------------------------------------------------------------------------- title: "Sentiment analysis" description: "This page describes the method to use the sentiment analysis feature in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.323Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/zia-services/text-analytics/sentiment-analysis/" service: "Zia Services" related: - Sentiment Analysis - API (/en/api/code-reference/zia-services/text-analytics/sentiment-analysis/#SentimentAnalysis) - Text Analytics (/en/zia-services/help/text-analytics/introduction) -------------------------------------------------------------------------------- # Sentiment Analysis Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Zia Sentiment Analysis is a part of Text Analytics that processes textual content to recognize the tone of the message, and the sentiments conveyed through it. It analyses each sentence in the text to determine if its tone is positive, negative, or neutral. It then determines the tone of the overall text as one of the these three sentiments, based on the sentiments recognized in each sentence. The response also returns the confidence scores for the sentiments detected in each sentence, to showcase the accuracy of the analysis. The confidence score lies in the range of 0 to 1\. A confidence score for the overall analysis is also returned. You can pass a block of text as the input of upto 1500 characters in a single request. The input text is passed to getSentimentAnalysis(). You can also pass optional keywords for the text. This will enable Sentiment Analysis to process only those sentences that contain these keywords, and determine their sentiments. Other sentences will be ignored. The zia reference used below is defined in the component instance page. zia.getSentimentAnalysis(['Zoho Corporation, is an Indian multinational technology company that makes web-based business tools. It is best known for Zoho Office Suite. The company was founded by Sridhar Vembu and Tony Thomas and has a presence in seven locations with its global headquarters in Chennai, India, and corporate headquarters in Pleasanton, California.'], ['Zoho']) //Pass the text and the optional keyword to process .then((result) => console.log(result)) .catch((error) => console.log(error.toString())); A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node js "sentiment_prediction": [ { "document_sentiment": "Neutral", "sentence_analytics": [ { "sentence": "Zoho Corporation, is an Indian multinational technology company that makes web-based business tools.", "sentiment": "Neutral", "confidence_scores": { "negative": 0, "neutral": 1, "positive": 0 } }, { "sentence": "It is best known for Zoho Office Suite.", "sentiment": "Neutral", "confidence_scores": { "negative": 0, "neutral": 0.6, "positive": 0.4 } }, { "sentence": "The company was founded by Sridhar Vembu and Tony Thomas and has a presence in seven locations with its global headquarters in Chennai, India, and corporate headquarters in Pleasanton, California.", "sentiment": "Neutral", "confidence_scores": { "negative": 0, "neutral": 0.88, "positive": 0.12 } } ], "overall_score": 0.83 } ] -------------------------------------------------------------------------------- title: "Named Entity Recognition" description: "This page describes the method to use the named entity recognition feature in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.323Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/zia-services/text-analytics/named-entity-recognition/" service: "Zia Services" related: - Text Analytics (/en/zia-services/help/text-analytics/introduction) - Named Entity Recognition - API (/en/api/code-reference/zia-services/text-analytics/named-entity-recognition/#NamedEntityRecognition) -------------------------------------------------------------------------------- # Named Entity Recognition Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Zia Named Entity Recognition is a part of Text Analytics that processes textual content to extract key words and group them into various categorizes. For example, it can determine a word in a text to be the name of an organization, the name of a person, or a date, and add it to the appropriate category accordingly. Refer here for a list of all categories recognized by NER. The response returns an array of all the entities recognized in the text, and a tag indicating the category they belong to. It will also contain the confidence score of each categorization in percentage values, to showcase its accuracy. The response also returns the location of the entity in the text through its start index and end index. You can pass a block of text as the input of upto 1500 characters in a single request, as shown below. The text is passed to getNERPrediction(). The zia reference used below is defined in the component instance page. zia.getNERPrediction(['Zoho Corporation, is an Indian multinational technology company that makes web-based business tools. It is best known for Zoho Office Suite. The company was founded by Sridhar Vembu and Tony Thomas and has a presence in seven locations with its global headquarters in Chennai, India, and corporate headquarters in Pleasanton, California.']) //Pass the input text .then((result) => console.log(result)) .catch((error) => console.log(error.toString())); A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node js "ner": { "general_entities": [ { "start_index": 0, "confidence_score": 98, "end_index": 16, "ner_tag": "Organization", "token": "Zoho Corporation" }, { "start_index": 24, "confidence_score": 99, "end_index": 30, "ner_tag": "Miscellaneous", "token": "Indian" }, { "start_index": 122, "confidence_score": 90, "end_index": 139, "ner_tag": "Miscellaneous", "token": "Zoho Office Suite" }, { "start_index": 168, "confidence_score": 99, "end_index": 181, "ner_tag": "Person", "token": "Sridhar Vembu" }, { "start_index": 186, "confidence_score": 96, "end_index": 197, "ner_tag": "Person", "token": "Tony Thomas" }, { "start_index": 220, "confidence_score": 100, "end_index": 225, "ner_tag": "Number", "token": "seven" }, { "start_index": 268, "confidence_score": 99, "end_index": 275, "ner_tag": "City", "token": "Chennai" }, { "start_index": 277, "confidence_score": 98, "end_index": 282, "ner_tag": "Country", "token": "India" }, { "start_index": 314, "confidence_score": 99, "end_index": 324, "ner_tag": "City", "token": "Pleasanton" }, { "start_index": 326, "confidence_score": 91, "end_index": 336, "ner_tag": "State", "token": "California" } ] } -------------------------------------------------------------------------------- title: "Keyword extraction" description: "This page describes the method to use the keyword extraction feature in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.324Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/zia-services/text-analytics/keyword-extraction/" service: "Zia Services" related: - Text Analytics (/en/zia-services/help/text-analytics/introduction) - Keyword Extraction - API (/en/api/code-reference/zia-services/text-analytics/keyword-extraction/#KeywordExtraction) -------------------------------------------------------------------------------- # Keyword Extraction Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Zia Keyword Extraction is a part of Text Analytics that processes textual content and extracts the highlights of the text. The extracted terms are grouped into two categories: Keywords and Keyphrases. These highlights deliver a concise summary of the text and provide an abstraction of the whole text. The response contains an array of the key words, and another array of the key phrases that are extracted from the text. You can pass a block of text as the input of upto 1500 characters in a single request, as shown below. The text is passed to getKeywordExtraction(). The keywords and keyphrases are then fetched as individual lists. The zia reference used below is defined in the component instance page. zia.getKeywordExtraction(['Zoho Corporation, is an Indian multinational technology company that makes web-based business tools. It is best known for Zoho Office Suite. The company was founded by Sridhar Vembu and Tony Thomas and has a presence in seven locations with its global headquarters in Chennai, India, and corporate headquarters in Pleasanton, California.']) //Pass the input text to be processed .then((result) => console.log(result)) .catch((error) => console.log(error.toString())); A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node js "keyword_extractor": { "keywords": [ "Chennai", "company", "India", "Indian", "presence", "locations", "Pleasanton", "California" ], "keyphrases": [ "corporate headquarters", "multinational technology company", "Zoho Corporation", "Zoho Office Suite", "global headquarters", "Tony Thomas", "web-based business tools", "Sridhar Vembu" ] } -------------------------------------------------------------------------------- title: "All text analytics" description: "This page describes the method to use the text analytics feature in your NodeJS application with sample code snippets." last_updated: "2026-09-29T06:07:16.324Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/zia-services/text-analytics/all-text-analytics/" service: "Zia Services" related: - All Text Analytics - API (/en/api/code-reference/zia-services/text-analytics/all-text-analytics/#AllTextAnalytics) - Text Analytics (/en/zia-services/help/text-analytics/introduction) -------------------------------------------------------------------------------- # All Text Analytics Note: This SDK is currently in deprecation. Migrate to JavaScript SDK now. Text Analytics as a whole includes a combination of all three features specified in the previous sections: Sentiment Analysis, Named Entity Recognition, and Keyword Extraction. You can perform all three actions on a specific block of text, and obtain the tone of the text, the categorizations of the entities recognized from it, and key words and phrases that provide a gist of the text. You can pass a block of text as the input of upto 1500 characters in a single request, as shown below. The text is passed to getTextAnalytics(). You can also pass optional keywords to perform Sentiment Analysis on the sentences containing only those keywords. The response contains the results of each of the text analytics feature. Refer to each feature page for detailed information on their respective functionalities and responses. The zia reference used below is defined in the component instance page. zia.getTextAnalytics(['Zoho Corporation, is an Indian multinational technology company that makes web-based business tools. It is best known for Zoho Office Suite. The company was founded by Sridhar Vembu and Tony Thomas and has a presence in seven locations with its global headquarters in Chennai, India, and corporate headquarters in Pleasanton, California.'], ['Zoho']) //Pass the input text for all Text Analytics, and the keywords for Sentiment Analysis .then((result) => console.log(result)) .catch((error) => console.log(error)); A sample response that you will receive is shown below. The response is the same for both versions of Node.js. [ { "keyword_extractor": { "keywords": [ "Chennai", "company", "India", "Indian", "presence", "locations", "Pleasanton", "California" ], "keyphrases": [ "corporate headquarters", "multinational technology company", "Zoho Corporation", "Zoho Office Suite", "global headquarters", "Tony Thomas", "web-based business tools", "Sridhar Vembu" ] }, "sentiment_prediction": [ { "document_sentiment": "Neutral", "sentence_analytics": [ { "sentence": "Zoho Corporation, is an Indian multinational technology company that makes web-based business tools.", "sentiment": "Neutral", "confidence_scores": { "negative": 0, "neutral": 1, "positive": 0 } }, { "sentence": "It is best known for Zoho Office Suite.", "sentiment": "Neutral", "confidence_scores": { "negative": 0, "neutral": 0.6, "positive": 0.4 } }, { "sentence": "The company was founded by Sridhar Vembu and Tony Thomas and has a presence in seven locations with its global headquarters in Chennai, India, and corporate headquarters in Pleasanton, California.", "sentiment": "Neutral", "confidence_scores": { "negative": 0, "neutral": 0.88, "positive": 0.12 } } ], "overall_score": 0.83 } ], "ner": { "general_entities": [ { "start_index": 0, "confidence_score": 98, "end_index": 16, "ner_tag": "Organization", "token": "Zoho Corporation" }, { "start_index": 24, "confidence_score": 99, "end_index": 30, "ner_tag": "Miscellaneous", "token": "Indian" }, { "start_index": 122, "confidence_score": 90, "end_index": 139, "ner_tag": "Miscellaneous", "token": "Zoho Office Suite" }, { "start_index": 168, "confidence_score": 99, "end_index": 181, "ner_tag": "Person", "token": "Sridhar Vembu" }, { "start_index": 186, "confidence_score": 96, "end_index": 197, "ner_tag": "Person", "token": "Tony Thomas" }, { "start_index": 220, "confidence_score": 100, "end_index": 225, "ner_tag": "Number", "token": "seven" }, { "start_index": 268, "confidence_score": 99, "end_index": 275, "ner_tag": "City", "token": "Chennai" }, { "start_index": 277, "confidence_score": 98, "end_index": 282, "ner_tag": "Country", "token": "India" }, { "start_index": 314, "confidence_score": 99, "end_index": 324, "ner_tag": "City", "token": "Pleasanton" }, { "start_index": 326, "confidence_score": 91, "end_index": 336, "ner_tag": "State", "token": "California" } ] } }