# SDK ## Android ### v3 -------------------------------------------------------------------------------- title: "Overview" description: "Catalyst Android SDK is a library that enables you to build Android apps for your Catalyst project. The Catalyst Android SDK package contains a host of tools and functionalities that help you in developing dynamic and robust Android apps, with powerful backends." last_updated: "2026-07-02T09:34:10.000Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/overview/" service: "All Services" related: - Mobile Device Management (/en/cloud-scale/help/mobile-device-management/introduction) - iOS SDK (/en/sdk/ios/v2/overview/) - Flutter SDK (/en/sdk/flutter/v2/overview/) - Web SDK (/en/sdk/web/v4/overview/) -------------------------------------------------------------------------------- # Android SDK ## Overview Catalyst Android SDK is a library that enables you to build mobile apps for your Catalyst project in the Android platform. The Catalyst Android SDK package contains a host of tools and functionalities that help you in developing dynamic and robust Android apps, with powerful backends. Catalyst Android SDK offers support for both of these development platforms for your Android apps: * Kotlin * Java The Android SDK package enables you to handle several backend jobs of various Catalyst services and components. Primarily, the Android SDK contains tools for Catalyst Cloud Scale and Catalyst Serverless functionalities, such as user authentication and redirection, Data Store and File Store functionalities, and function executions. Android SDK wraps API requests to these components as method calls that you can avail. You can seamlessly integrate these Catalyst components in your Android app by implementing the ready-made functionalities provided by the SDK package, and build on them easily. This saves you from investing time and effort into coding the backend from scratch, and helps you focus more on designing the user experience of the app. The Android SDK documentation explains the entire process of setting up and building an Android app with Catalyst Android SDK. You can learn about the architecture, components, and configurations of the SDK package, and access sample code snippets for various operations in this documentation. Note: After you develop and test your Android app, you can host and distribute the app using Mobile Device Management. It also enables you to manage the app's versioning and end-users easily from the Catalyst console. However, Mobile Device Management is currently not available to Catalyst users accessing from the EU, AU, IN, or CA data centers. -------------------------------------------------------------------------------- title: "Class Hierarchy" description: "Class Hierarchy denotes the hierarchy of the Kotlin classes in the Catalyst Android SDK." last_updated: "2026-07-02T09:34:10.000Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/class-hierarchy/" service: "All Services" related: - Authentication (/en/cloud-scale/help/mobile-device-management/introduction) - Data Store (/en/cloud-scale/help/data-store/introduction) - File Store (/en/cloud-scale/help/file-store/introduction) - Search (/en/cloud-scale/help/search-integration/introduction/) - Functions (/en/serverless/help/functions/introduction) - ZCQL (/en/cloud-scale/help/zcql/introduction) -------------------------------------------------------------------------------- # Class Hierarchy ### Introduction All Catalyst components are modelled as Kotlin classes in Android SDK. The members and methods of these component classes define the behavior of the component, and enable you to perform various operations in the component. Catalyst Android SDK package contains tools to work with the following Catalyst components and features from various Catalyst services: * **General:** Timezone * **Serverless:** Functions * **Cloud Scale:** Authentication, Data Store, File Store, Search, ZCQL The hierarchy of the Catalyst Android SDK component classes is depicted in the architecture diagram below. The **ZCatalystApp** is the base class of the Catalyst Android SDK. It is comprised of several methods that enable you to initialize the SDK and access the various components of the Catalyst project. The other classes pertain to the respective components and their specific features supported by the SDK. <br> ### Instance Objects Each class available under ZCatalystApp contains functions to fetch the properties and data of its immediate child entities by executing API calls. However, it is not always effective to follow the class hierarchy all the way up to the top to fetch the data of a component at a lower level. This is because, such an action would involve API calls at every level and that will render the usage of your application inefficient. To avoid this situation and to make your app more cost-effective, Catalyst provides instance objects in every class. **Instance Objects** are present in each component class, which can be accessed through a **getInstance()** method. This method fetches a dummy object of the component, which can then be used to fetch methods of all its child entities. Therefore, to retrieve the properties of a Catalyst component, you must call the component's object with its getInstance() method. You must then use the same object to call the other methods defined by the component. This prevents unnecessary and excessive API calls. -------------------------------------------------------------------------------- title: "Exceptions" description: "This help page lists the common exceptions that can occur in your Catalyst Android app executions" last_updated: "2026-07-02T09:34:10.000Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/exceptions/" service: "All Services" related: - Developer Tools (/en/getting-started/set-up-a-catalyst-project/developer-tools) -------------------------------------------------------------------------------- # Exceptions Exceptions are unexpected faulty behaviors that occur during the app execution. All errors and exceptions in Catalyst Android apps are handled by enumerations called ZCatalystException, defined in the Android SDK package. If an exception occurs in your app, the following properties of the exception are returned: * code: Unique identifier of the error * errorMsg: General description about the error * errorDetails: Additional information about the error * originalException: The actual exception that was thrown A list of common error codes thrown by the Catalyst Android SDK and their descriptions are given below: <table class="content-table"> <thead> <tr> <th class="w30p">Error Codes</th> <th class="w70p">Descriptions</th> </tr> </thead> <tbody> <tr> <td><strong>INITIALIZATION_ERROR</strong></td> <td>The SDK initialization failed</td> </tr> <tr> <td><strong>LOGIN_ERROR</strong></td> <td>The login process failed for the user</td> </tr> <tr> <td><strong>LOGOUT_FAILED</strong></td> <td>The logout process failed for the user</td> </tr> <tr> <td><strong>TOKEN_FETCH_ERROR</strong></td> <td>Failed to fetch the access token</td> </tr> <tr> <td><strong>RESPONSE_PARSE_ERROR</strong></td> <td>The received response is non-parseable</td> </tr> <tr> <td><strong>NO_NETWORK_AVAILABLE</strong></td> <td>Network connectivity is not available to make the API call</td> </tr> <tr> <td><strong>API_FAILED</strong></td> <td>The API invocation failed</td> </tr> <tr> <td><strong>INVALID_DATA</strong></td> <td>The data submitted is not of a valid type for the specific format</td> </tr> <tr> <td><strong>FILE_SIZE_EXCEEDED</strong></td> <td>The file size of an uploaded file exceeded the 100 MB file size limit</td> </tr> <tr> <td><strong>FUNCTION_EXECUTION_ERROR</strong></td> <td>Failed to execute the function</td> </tr> <tr> <td><strong>JSON_EXCEPTION</strong></td> <td>The body included in the request is not a valid JSON</td> </tr> <tr> <td><strong>INVALID_REQUEST</strong></td> <td>The request created is not valid</td> </tr> <tr> <td><strong>INVALID_FILE_INPUT</strong></td> <td>File submitted in the upload operation is not valid</td> </tr> <tr> <td><strong>INTERNAL_ERROR</strong></td> <td>An internal error occurred in the SDK</td> </tr> <tr> <td><strong>INVALID_CONFIGURATION</strong></td> <td>The SDK has not been initialized with the configuration required for the login. Reinitialize the SDK with the appropriate configuration for the login.</td> </tr> <tr> <td><strong>CUSTOM_LOGIN_DISABLED</strong></td> <td>The parameters required for third-party authentication could not be found. Make sure you have enabled third-party authentication for the project or re-download the property file.</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Prerequisites" description: "This page defines the prerequisites you would need to fulfill to work with the Catalyst Android SDK." last_updated: "2026-07-02T09:34:10.000Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/prerequisites/" service: "All Services" related: - Create Catalyst Projects (/en/getting-started/catalyst-projects) - Developer Tools (/en/getting-started/set-up-a-catalyst-project/developer-tools) -------------------------------------------------------------------------------- # Prerequisites Before you begin working with Catalyst Android SDK, you must ensure that you meet all the following prerequisites: * Create a Catalyst project in the Catalyst console to host your mobile app. Note: You can host one Android app and one iOS app in each project. The Android or iOS can either be built natively with the Catalyst Android or iOS SDKs, or with Catalyst Flutter SDK. * Create or import an Android project in Android Studio * Ensure that your Android project and Android Studio meet these **minimum supported environments**: * Android Studio- 3.1.1 or later * OS- Android 21 (Lollipop 4.4) * Kotlin- 1.3.20 * Gradle- 3.4.0 After you have configured the prerequisite environments, you can register your app with Catalyst and download the configuration file that is provided tailored to your app. You must include this configuration file in your Android app's structure, as it will contain the definitions of certain properties required for your app to function properly. We will discuss these steps in detail in the setup section. -------------------------------------------------------------------------------- title: "Setup" description: "Steps to follow to setup the Catalyst project and the Android project." last_updated: "2026-07-02T09:34:10.000Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/setup/" service: "All Services" related: - Environments (/en/deployment-and-billing/environments/introduction/#introduction) - Developer Tools (/en/deployment-and-billing/environments/introduction/#introduction) -------------------------------------------------------------------------------- # Setup After you create the Catalyst project and the Android project, you must follow these steps to set up and integrate the Android SDK package with your app. ### Step 1: Register your Android app with Catalyst You can begin by creating a package for the Android app in Catalyst to register it, and downloading its unique configuration file. 1. Click the Settings icon from your Catalyst console in your project. 2. Navigate to **Developer Tools** under Project Settings in the settings menu, then click on the **Android** tile. Alternatively, you can click the **Add Package** button below. <br /> 3. Enter a package name that will identify it uniquely. Provide the URL to redirect the end-user to after they log in to the app, as the Redirect URL. The values that you enter here will be auto-filled in the configuration file. Note: A package name will be uniquely associated with that OS. Therefore, you cannot create packages with the same name for both Android and iOS apps. You must provide unique values. Ensure that Android is selected as the OS type. <br /> 4. Click **Create** to create the mobile SDK package. 5. The console will then display a window from where you can download the configuration file. Click **Download** to download the file. The file will be downloaded with all the required configurations. The properties in this file are explained in the next step. <br /> ### Step 2: Import the Configuration File in Your Android Project Catalyst provides two work environments to develop and build your applications in: a **Development** sandbox and a live **Production** environment. You can learn more about them from the Environments help page. When you create a package in the console, only the development environment's configuration file will be available for download initially, irrespective of the environment you are working in currently. You can choose to download the configuration file from the console for any environment any time, once the package has been created. The configuration files of each environment would be named as: * Development: **app_configuration_development.properties** * Production: **app_configuration_production.properties** Based on the environment that you are working in, you must download and add the appropriate file to your Android app's structure. To obtain a production environment configuration file, you must deploy your project to production first, and then download the file from the Developer Tools settings section. The configuration file must be added to the **assets** directory of your Android app module. Typically, the assets folder is created in the app/src/main directory. Refer to the official Android documentation for detailed help on Android app modules. <br /> #### Properties of the app_configuration_development.properties/ app_configuration_production.properties File The app configuration file defines the properties mentioned in the table below. All these values except the request headers are automatically populated, based on your project's details or the default standards. Note: You can refer to the links specified in the table, to know where you can obtain these values from. <table class="content-table"> <thead> <tr> <th class="w20p">Property</th> <th class="w20p">Data Type</th> <th class="w60p">Description</th> </tr> </thead> <tbody> <tr> <td>**clientID**</td> <td>String</td> <td>Unique identifier of your app client registered in Catalyst. This is received in the configuration file.</td> </tr> <tr> <td>**clientSecret**</td> <td>String</td> <td>Secret value generated for a specific clientID, which is passed along with the API hits. This is received in the configuration file.</td> </tr> <tr> <td>**portalID**</td> <td>String</td> <td>Unique identifier received in the configuration file</td> </tr> <tr> <td>**redirectUrl**</td> <td>String</td> <td>The callback URL of your app that you provided while creating a package for it in the console, in the previous step</td> </tr> <tr> <td>**projectID**</td> <td>Long</td> <td>The unique ID of your Catalyst Project</td> </tr> <tr> <td>**apiBaseURL**</td> <td>String</td> <td>The URL of the Catalyst server through which the internal API is called. You must use the appropriate URL (development URL or production URL), based on the environment you are working in.</td> </tr> <tr> <td>**oauthScopes**</td> <td>String</td> <td>The scopes that would be used by the app to access the Catalyst APIs from your project. You can find the available OAuth scopes here.</td> </tr> <tr> <td>**requestHeaders**</td> <td>String</td> <td>The headers that would be sent by the client in the HTTP requests<br /> The values of the request headers must be individual key-value pairs, separated by commas like: requestHeaders=key1:value1, key2:value2</td> </tr> <tr> <td>**serverTLD**</td> <td>String</td> <td>The top level domain of the data server<br /> Acceptable values: **AU**, **CN**, **COM**, **EU** and **IN**</td> </tr> <tr> <td>**printStackTrace**</td> <td>Boolean</td> <td>Enables you to obtain a detailed trace of the logs, if the **printStackTrace** value is set as 'true'. The default value is 'false'.</td> </tr> <tr> <td>**minLogLevel**</td> <td>String</td> <td>Enables you to set the logging preferences for the app<br /> Acceptable values: **warnings**, **errors**, **information**, **debug**, **ALL**</td> </tr> <tr> <td>**httpRequestMode**</td> <td>String</td> <td>Defines whether the HTTP requests are synchronous or asynchronous<br /> Acceptable values: **SYNC**, **ASYNC**<br /> Default value: ASYNC</td> </tr> <tr> <td>**connectTimeOut<br>InSec**</td> <td>Long</td> <td>The connection time out value (in seconds) of the HTTP request sent from the SDK<br /> If a response for the client request isn't received from the server within this time, the connection will be terminated</td> </tr> <tr> <td>**readTimeOutInSec**</td> <td>Long</td> <td>The read time out value (in seconds) of the HTTP request sent from the SDK<br /> If data isn't received from the server within this time, the connection will be terminated</td> </tr> <tr> <td>**writeTimeOutInSec**</td> <td>Long</td> <td>The write time out value (in seconds) of the HTTP request sent from the SDK<br /> If the request fails to write or send the request data to the server within this time, the connection will be terminated</td> </tr> <tr> <td>**JWTClientID**</td> <td>String</td> <td>The client ID property of the custom server token (JSON Web Token token) generated for third-party authentication to be passed to the client </td> </tr> <tr> <td>**JWTClientSecret**</td> <td>String</td> <td>The client secret property of the custom server token (JSON Web Token token) generated for third-party authentication to be passed to the client </td> </tr> </tbody> </table> Note:<br /> * If the values of the **clientID**, **clientSecret**, **projectID**, or **portalID** are modified in the configuration file, it will affect the functioning of the SDK and your Android app. If you wish to change any of these configurations, you can create a new package for the required project from the Developer Tools section and download a new configuration file for the appropriate environment, then add it to the assets directory in your app's structure. * The values of the properties that are populated in the downloaded configurations file can be dynamically accessed using the **ZCatalystApp.configs** object. <br /> ### Step 3: Add Catalyst Android SDK in your App The next step is to include the SDK package in your app. Catalyst Android SDK is available as a Gradle library. You can add the SDK in your Android project by accessing the Maven repository that contains the library, in the following manner: 1. Add the code snippet given below to the **project-level** **build.gradle** file in your Android app structure: maven { url "https<span></span>://maven.zohodl.com/" } 2. Add the code snippet given below to the **app-level** **build.gradle** file in your Android app structure: dependencies { implementation 'com.zoho.catalyst:android-sdk:3.0.1' } <br /> ### Step 4: Configure App Login Redirection When a user logs in to your app successfully, they will be redirected to your app's home screen. This user login and redirection is handled by the Catalyst SDK. To ensure that this redirection is handled properly, include the string given below in the strings.xml file of your Android app: &lt;string name="url_scheme"&gt;{redirection_url}&lt;/string&gt; The strings.xml file is automatically created when you create the Android project. You can find it by navigating to app/src/main/res/values in your app's structure. The file will already contain the string definition for your app name. Include this string along with it. You must pass the **Redirection URL** that you configured while creating the package for your app in Catalyst, in place of redirection_url in this code. <br /> ### Step 5: Set Required Permissions Catalyst SDK requires the following app permissions to be enabled, to ensure that your app functions seamlessly and to provide a smooth user experience: * **INTERNET**: To execute Catalyst APIs * **ACCESS_NETWORK_STATE**: To handle network failures To enable these permissions, you must declare them in the **AndroidManifest.xml** file, as shown below: &lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/&gt; &lt;uses-permission android:name="android.permission.INTERNET"/&gt; You can find the the AndroidManifest.xml file by navigating to app/src/main in your app's structure. All the required configurations to add and implement the Catalyst Android SDK are now done. After you execute all the steps mentioned above, you must **build your project**. If the gradle build is successful, your app will be able to access the components of the Catalyst Android SDK. <br /> ### Step 6: Initialize the SDK You must initialize the Catalyst SDK to enable the functioning of the methods and features defined in the SDK package. Therefore, before you configure your app to consume the SDK methods, you must initialize the SDK in any one of the following methods: #### Method 1: By specifying the Environment The **Environment** indicates if the app is operating in the Development or the Production environment. Similar to including the appropriate configuration file (app_configuration_development.properties/ app_configuration_production.properties) based on the environment in your app's project, you must initialize the SDK for the appropriate environment. In this method, you must set the required configuration and specify the Environment of your app as either **DEVELOPMENT** or **PRODUCTION**, and pass it to the init() method through the ZCatalystApp class as shown below: ZCatalystApp.init( context: Context, Environment: ZCatalystSDKConfigs.Environment.{DEVELOPMENT} ): ZCatalystApp <br /> #### Method 2: Without specifying the Environment If the Environment is not specified in the SDK initialization, it would be considered as **PRODUCTION** by default. Therefore, if your app is operating in the Production environment, you can initialize the SDK directly without specifying the Environment in the following way: ZCatalystApp.init(context: Context): ZCatalystApp <br /> Note: * If you make any changes to the app_configuration_development.properties or app_configuration_production.properties file, you must reinitialize the SDK. * If you configure a third-party authentication for your Android app, you will also need to re-initialize the SDK as new properties will be added in this configuration file. You can learn more from this help page. If the SDK is successfully initialized, the app will invoke the component methods and function as intended. #### Cloud Scale ##### Authentication -------------------------------------------------------------------------------- title: "Create User Instance" description: "Catalyst Authentication features enable you to manage the user authentication of your Catalyst app, add users, and configure their user accounts." last_updated: "2026-07-02T09:34:10.012Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/authentication/create-user-instance/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Users (/en/cloud-scale/help/authentication/user-management/users/introduction/) - Add New User - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) -------------------------------------------------------------------------------- # Authentication Catalyst Authentication is a component of Catalyst Cloud Scale that enables you to add end-users to your application, customize app login and sign-up forms, manage user accounts and roles, and ensure secure access throughout your application. ## Create a New User Instance You can create a new user instance, and enable the methods defined in this class to access the instance object. This will prevent unnecessary server calls. You must pass the user's details to the **newUser()** method as shown in the code structure below. You must pass the user's email address and last name mandatorily to create the instance successfully. ZCatalystApp.getInstance().newUser( lastName: String, email:String ): ZCatalystUser **Parameters**: * **lastName**: The last name of the new user * **email**: Email address of the user, to which the invitation mail will be sent A sample code snippet is shown below: val user = ZCatalystApp.getInstance().newUser("Burrows", "emma@zylker.com") -------------------------------------------------------------------------------- title: "User Signup" description: "Adding new users to your catalyst application" last_updated: "2026-07-02T09:34:10.012Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/authentication/user-signup/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Users (/en/cloud-scale/help/authentication/user-management/users/introduction/) - Authentication - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) -------------------------------------------------------------------------------- # User Signup You can add a new user to your Catalyst app by calling the **signUp()** method. You must pass the user instance defined here as the argument to the signup() method. The code syntax for user signup is given below: ZCatalystApp.getInstance().signUp( newUser: ZCatalystUser, success: (Pair&lt;ZCatalystOrg, ZCatalystUser&gt;) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;Pair&lt;ZCatalystOrg, ZCatalystUser&gt;&gt;&gt;? **Parameters**: * **newUser**: The user instance created before this operation A sample code snippet is shown below: ZCatalystApp.getInstance().signUp(user, { success -> println("User Sign up success") }, { exception -> println("User Sign up failed $exception") }) -------------------------------------------------------------------------------- title: "User Login" description: "You can display the login page to the end user of your Catalyst Android app." last_updated: "2026-07-02T09:34:10.012Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/authentication/user-login/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Users (/en/cloud-scale/help/authentication/user-management/users/introduction/) - Authentication - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) -------------------------------------------------------------------------------- # User Login You can display the login page to the end user of your Catalyst Android app using the **login()** method. This will be displayed when the user is logged out of the app. If the login is successful, the user will be able to access the app. The code syntax for user login is given below: ZCatalystApp.getInstance().login( success: () → Unit, failure: (ZCatalystException) → Unit ): Unit A sample code snippet is shown below: ZCatalystApp.getInstance().login( { ZCatalystLogger.logInfo("Login Success") //Actions to execute on successful login }, { ZCatalystLogger.logError("Login failed - $it") //Actions to execute on failed login }) The methods of the ZCatalystLogger class are used to log the result of the operation. You can define your own actions to execute on a successful or a failed login. -------------------------------------------------------------------------------- title: "User Logout" description: "You can log an app user out from the Catalyst Android app." last_updated: "2026-07-02T09:34:10.012Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/authentication/user-logout/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Users (/en/cloud-scale/help/authentication/user-management/users/introduction/) - Logout User - API (/en/api/code-reference/cloud-scale/authentication/sign-out-user/#SignOutUser) -------------------------------------------------------------------------------- # User Logout The logout() method can log an app user out from the Catalyst Android app. The code syntax for user logout is given below: ZCatalystApp.getInstance().logout( success: () → Unit, failure: (ZCatalystException) → Unit ): Unit A sample code snippet is shown below: ZCatalystApp.getInstance().logout( { ZCatalystLogger.logInfo("Logout Success") //Actions to execute on successful logout }, { ZCatalystLogger.logError("Logout failed - $it") //Actions to execute on failed logout }) The methods of the ZCatalystLogger class are used to log the result of the operation. You can define your own actions to execute upon a successful or failed logout. -------------------------------------------------------------------------------- title: "Get Current User" description: "You can obtain the details of the current end user of your application." last_updated: "2026-07-02T09:34:10.012Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/authentication/get-current-user/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Users (/en/cloud-scale/help/authentication/user-management/users/introduction/) - Add New User - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) -------------------------------------------------------------------------------- # Get Current User You can obtain the details of the current end user of your application by calling the getCurrentUser() method. Upon successful execution, this method will return the current user object. You can fetch the user's details that are registered in Catalyst, such as their first name, last name, or email address, using this. The code syntax for obtaining the current user is given below: ZCatalystApp.getInstance().getCurrentUser( success: (ZCatalystUser) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystUser&gt;&gt;? A sample code snippet is shown below: ZCatalystApp.getInstance().getCurrentUser( { user -> println("The current user is : ${user.firstName}") }, { exception -> println("Get current user failed! $exception") } ) -------------------------------------------------------------------------------- title: "Social Logins" description: "You can provide a native Google login and logout through Social Logins in your Android app." last_updated: "2026-07-02T09:34:10.012Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/authentication/social-logins/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Social Logins (/en/cloud-scale/help/authentication/social-logins/introduction/) - Google Login (/en/cloud-scale/help/authentication/social-logins/configuring-social-logins/#enable-google-social-login) - Authentication - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) -------------------------------------------------------------------------------- # Social Logins Catalyst enables you to allow your end users to log on to your application using popular Identity Providers (IdP) or Social Logins through Authentication. Catalyst Android SDK enables you to provide Google login and logout functionality for your Android app users. Note: Public Signup must be enabled to use Social Logins. ### Google Login You can provide a native Google login in your Android app by configuring their authentication with Catalyst. To do so, you must register your app in the Google API console and obtain the required OAuth credentials, that include the client ID and client secret. You can learn about the steps involved in this process from the Enable Google Social Login help section. Note: You must configure the application type as a web application in step 12. After you finish configuring the Google social login in the Catalyst console, you can pass the client ID obtained from Google to perform the user login as shown below. fun login(activity: Activity, googleClientID: String, success: () -> Unit, failure: (ZCatalystException) -> Unit) **Parameters**: * **googleClientID**: The client ID obtained after configuring OAuth in Google's API console A sample code snippet is shown below: ZCatalystApp.getInstance().login("activity", "570*******************", { success -> println("User login success") }, { exception -> println("User login failed $exception") }) ### Google Logout You can log users out of your Catalyst Android app from their Google login by passing the client ID obtained from Google after configuring OAuth in Google's API console. This can be done as shown below. fun logout(activity: Activity, googleClientID: String, success: () -> Unit, failure: (ZCatalystException) -> Unit) **Parameters**: * **googleClientID**: The client ID obtained after configuring OAuth in Google's API console A sample code snippet is shown below: ZCatalystApp.getInstance().logout("activity", "570*******************", { println("Logout success") }, { println("Logout failed $exception") }) -------------------------------------------------------------------------------- title: "Third-Party Authentication" description: "You can implement a third-party authentication service of your preference in your Android app." last_updated: "2026-07-02T09:34:10.012Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/authentication/third-party-authentication/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Third-Party Authentication (/en/cloud-scale/help/authentication/third-party-authentication/introduction/) - Generate Custom Server Token- Java SDK (/en/sdk/java/v1/cloud-scale/authentication/third-party-server-token/) - Generate Custom Server Token- Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/authentication/third-party-server-token/) - Generate Custom Server Token- Python SDK (/en/sdk/python/v1/cloud-scale/authentication/third-party-server-token/) - Authentication - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) -------------------------------------------------------------------------------- # Third-Party Authentication Cloud Scale's Authentication 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 implement third-party authentication in your Android app, you will need to perform the steps described below. ### 1. Configure the Third-Party Authentication Service Before you associate a third-party authentication with your Catalyst application, you must ensure that you have first completed handling the third-party logic in the external service. You can configure the authentication with any third-party of your choice. <br> ### 2. Set up the Third-Party Authentication Type in Catalyst You must now set up the third-party authentication that you configured in Catalyst by navigating to the Authentication component in Cloud Scale in the Catalyst console. The steps are explained in Set Up Third-party Authentication in Catalyst help page. This process involves the following steps that you must perform: **i. Generate a custom server token:** 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 will need to code in Java, Node.js, or Python. This function will generate a Catalyst server-side token **jwtToken** or **customToken** which will then be passed to client-side (Android app). The Catalyst console provides readymade scripts to generate the customToken. You can incorporate this script in the server-side function you write, to return the customToken. Note: To enable a third-party authentication in your Catalyst application, you must ensure that you have enabled Public Signup in the console. **ii. Skip the client-side configuration:** You can skip the client-side configuration in the console for now, as we will incorporate the custom server token in the client logic at the end to complete the login process. **iii. Configure additional settings and finish the setup:** Configure Customer User Validation or Authorized Domains as a part of Whitelisting and finish the set up. Catalyst will display a confirmation that a third-party authentication service has been enabled and your application’s authentication is being handled by it. <br> ### 3. Re-Import the Configuration File in your Android Project After you enable the third-party authentication for your Android app from the Catalyst console, you will need to download and import the app_configuration_development or the app_configuration_production properties file in your Android project again, based on your app's environment. This is because this file will now include two additional properties: JWTClientID and JWTClientSecret. These properties will need to be passed in the next step, after you re-initialize the SDK. To re-download the configuration file: 1. Navigate to **Settings**, then **Developer Tools** in your Catalyst console of your project. You will find your existing Android package under the Mobile SDK section. Open the package. <br> 2. Click on the required environment tab in the pop-up, then click **Download** to download the configuration file. <br> You can now re-import this downloaded configuration file by following the steps mentioned here. Note: You need not perform the steps 3 to 5 given in the SDK setup help page again. <br> ### 4. Re-Initialize the SDK You must now re-initialize the SDK to include the newly-downloaded properties in your code. Re-initializing the SDK can also be done in two ways similar to initializing the SDK for the first time: by specifying the environment of the project, and without specifying the environment where the production environment is considered the default. However, this will include additional SDK methods to confirm third-party authentication. #### Method 1: By specifying the environment You can re-initialize the SDK as shown below. You can pass the values for the Environment as either DEVELOPMENT or PRODUCTION based on the environment the app is operating in. The isCustomLogin indicates a boolean value that is set for the presence of a third-party authentication. These are passed to the init() method through the ZCatalystApp class as shown below: fun init( context: Context, environment: ZCatalystSDKConfigs.Environment, isCustomLogin: Boolean = false ): ZCatalystApp A sample code snippet for this operation is given below: ZCatalystApp.init( context, ZCatalystSDKConfigs.Environment.{DEVELOPMENT}, true ) <br> #### Method 2: Without specifying the environment If the Environment is not specified in the SDK initialization, it would be considered as PRODUCTION by default. This method also lets you re-initialize the SDK by specifying the JWTClientID and JWTClientSecret properties obtained from the newly-downloaded configuration file through with ZCatalystSDKConfigsBuilder. This can be done in the following way: fun init(context: Context, sdkConfigs: ZCatalystSDKConfigs, isCustomLogin: Boolean = false): ZCatalystApp A sample code snippet is given below: val sdkConfigs = ZCatalystSDKConfigs.Builder( apiBaseURL: 'https://api.catalyst.zoho.com', clientID: '100****************************FX', //JWTClientID clientSecret: '19ed***************************2s', //JWTClient secret redirectURL: '*****', oauthScopes: 'ZOHOCATALYST.tables.rows.ALL, ZOHOCATALYST.tables.columns.ALL', portalID: '10******79', projectID: 28*******90 ).setAccountsPortalBaseURL('https://accounts.zohoportal.com') .setUserAgent("ZCatalyst Sample App") .setRequestHeaders('PORTAL_ID', '*********') .build(); ZCatalystApp.init(context, sdkConfigs, true) <br> ### 5. Code the User Login Logic for the Third-Party Authentication You can now complete the setup by handling the login logic of the third-party authentication in your Android app. You must pass the customToken or jwtToken generated in [step 2](/en/sdk/android/v2/cloud-scale/authentication/third-party-authentication/#2-set-up-the-third-party-authentication-type-in-catalyst) to the handleCustomLogin() method as shown below: fun handleCustomLogin(jwtToken :String, success: () -> Unit, failure: (ZCatalystException) -> Unit) A sample code snippet is given below: ZCatalystApp.getInstance().handleCustomLogin("123xxxxxxxx", { println("Login successfully.") }, { println("Login failed.") }) 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. ##### Data Store -------------------------------------------------------------------------------- title: "Create a New Data Store Instance" description: "Catalyst Data Store is a cloud-based relational database management system which stores the persistent data of your application in the form of tables." last_updated: "2026-07-02T09:34:10.015Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/data-store/create-data-store-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Data Store - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) -------------------------------------------------------------------------------- # Data Store Catalyst Data Store is a cloud-based relational database management system that stores the persistent data of your application through tables. ### Create a New Data Store Instance To access the Data Store of a Catalyst project, you can create an instance of the Data Store, and enable the methods defined in this class to access the instance object. This will prevent unnecessary server calls. You must call the **getDataStoreInstance()** method as shown in the code syntax below, to obtain the Data Store instance successfully: ZCatalystApp.getInstance().getDataStoreInstance(): ZCatalystDataStore -------------------------------------------------------------------------------- title: "Create a New Table Instance" description: "You can create a table instance for a particular table in the Data Store, and enable the methods defined in this class to access the instance object." last_updated: "2026-07-02T09:34:10.015Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/data-store/create-table-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Tables (/en/cloud-scale/help/data-store/tables) - Data Store - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Create a New Table Instance You can create a table instance for a particular table in the Data Store, and enable the methods defined in this class to access the instance object. This prevents unnecessary server calls. A table instance can be created by calling the **getTableInstance()** method in either of the two ways mentioned below. The &lt;DATA_STORE_INSTANCE&gt; used in both the methods is the instance defined in the Data Store Instance page. ### Create a Table Instance by its ID You can create a table instance by passing the particular table ID as the argument to the getTableInstance() method, as shown in the code syntax below: &lt;DATA_STORE_INSTANCE&gt;.getTableInstance( id: Long ): ZCatalystTable **Parameters**: * **id**: The unique table ID of the specific table the instance needs to be created for A sample code snippet is shown below: val table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance(2823000000017011) //Replace this with your Table ID ### Create a Table Instance by its Name Alternatively, you can create a table instance by passing the particular table's name as the argument to the **getTableInstance()** method, as shown in the code syntax below: &lt;DATA_STORE_INSTANCE&gt;.getTableInstance( identifier: String ): ZCatalystTable **Parameters**: * **identifier**: The name of the specific table the instance needs to be created for A sample code snippet is shown below: val table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails") //Replace this with your table name -------------------------------------------------------------------------------- title: "Get Column Metadata" description: "You can obtain the metadata of all columns or single specific column of a Data Store table of the given instance by its ID or name." last_updated: "2026-07-02T09:34:10.015Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/data-store/get-column-metadata/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Columns (/en/cloud-scale/help/data-store/columns) - Get Metadata of Coulumns - API (/en/api/code-reference/cloud-scale/data-store/get-all-columns-metadata/#GetAllColumnsMetadata) -------------------------------------------------------------------------------- # Get Column Metadata ### Get the Metadata of a Specific Column You can obtain the metadata of a single specific column of a Data Store table of the given instance by calling the **getColumn()** method. If the operation is successful, this method can return the metadata of the column, such as its data type, default value, or maximum length, or whether it is read only, unique, or mandatory. The metadata of a specific column can be fetched in two different ways. The &lt;TABLE_INSTANCE&gt; used in both the methods is the instance defined in the Table Instance page. #### i. Get a Column by its ID You can retrieve a specific column's metadata by passing the column ID as the argument to the getColumn() method, as shown in the code syntax below: &lt;TABLE_INSTANCE&gt;.getColumn( id: Long, success: (ZCatalystColumn) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystColumn&gt;&gt;? **Parameters**: * **id**: The unique Column ID of the particular column that needs to be retrieved A sample code snippet is shown below: val table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails") //Replace this with your table name table.getColumn(2823000000017733, //Replace this with your Column ID { column -> println("Get Column success") println("The name of the column is: ${column.name}") }, { exception -> println("Get column failed! $exception") }) #### ii. Get a Column by its Name You can retrieve a specific column's metadata by passing the column's name as the argument to the getColumn() method, as shown in the code syntax below: &lt;TABLE_INSTANCE&gt;.getColumn( name: String, success: (ZCatalystColumn) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystColumn&gt;&gt;? **Parameters**: * **name**: The name of the particular column that needs to be retrieved A sample code snippet is shown below: val table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails") //Replace this with your table name table.getColumn("DepartmentName", //Replace this with your column name { column -> println("Get Column Success") println("The ID of the column is: ${column.id}") }, { exception -> println("Get column failed! $exception") }) ### Get the Metadata of all Columns You can retrieve the metadata of all the columns of a table of the given instance, using the **getColumns()** method, as shown in the code syntax below. If the operation is successful, this method can return the metadata of all the columns of the specific table. The &lt;TABLE_INSTANCE&gt; used in the code below is the instance defined in the Table Instance page. &lt;TABLE_INSTANCE&gt;.getColumns( success: (List&lt;ZCatalystColumn&gt;) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystColumn&gt;&gt;&gt;? A sample code snippet is shown below: val table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails") //Replace this with your table name table.getColumns( { columns -> println("Get Columns success") for (column in columns) { println("${column.name}") } }, { exception -> println("Get Columns failed! $exception.") } ) -------------------------------------------------------------------------------- title: "Get Rows" description: "You can retrieve a single specific row or all rows, even with pagination, from a Data Store table of the given instance." last_updated: "2026-07-02T09:34:10.015Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/data-store/get-rows/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Get All Rows - API (/en/api/code-reference/cloud-scale/data-store/get-all-rows/#GetAllRows) -------------------------------------------------------------------------------- # Get Rows ### Get a Specific Row You can retrieve a single specific row from a Data Store table of the given instance using the **getRow()** method. This is done by passing the unique ROWID of the row as the argument to this method, as shown in the code syntax below. The &lt;TABLE_INSTANCE&gt; used in the code below is the instance defined in the Table Instance page. &lt;TABLE_INSTANCE&gt;.getRow( id: Long, success: (ZCatalystRow) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystRow&gt;&gt;? **Parameters**: * **id**: The unique ROWID of the particular row that needs to be retrieved A sample code snippet is shown below: val table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails") //Replace this with your table name table.getRow(2823000000014176, //Replace this with your Row ID { row -> println("Get Row Success") println(" The row details are: ${row.getData()}") }, { exception -> println("Get row failed! $exception") }) <br> ### Get Rows Through Pagination You can retrieve all the rows from a table in the Data Store by incorporating pagination in your code. Pagination allows you to fetch the rows of a table in batches or pages through iterations. For example, if you require the rows to be fetched in batches of 100 as individual pages, you can define the maximum rows to be fetched in each page and specify the count using **maxRows** as shown below. The &lt;TABLE_INSTANCE&gt; used in the code snippets below is the instance defined in the Table Instance page. &lt;TABLE_INSTANCE&gt;.getRows(maxRows: Int, success: (List&lt;ZCatalystRow&gt;, ResponseInfo) -> Unit, failure: ((ZCatalystException) -&gt; Unit)? = null): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystRow&gt;&gt;&gt;? **Parameters**: * **maxRows**: The maximum number of rows to be fetched in this iteration A sample code snippet is given below: ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").getRows( 10, { rows, info -&gt;{ println("The token for next set of rows - ${info.nextToken}") println("Boolean to know if there are records in next page - ${info.moreRecords}") } }, { exception -&gt; println("Failed to get the rows! $exception") }) Additionally, after each execution of the loop, you will receive a token string in the response that authorizes the subsequent fetching of data. You can fetch this token through info.nextToken, and pass it as the value for nextToken during the subsequent iteration. During the first execution of the loop, the nextToken string is not passed. You can also verify the number of pending rows to be fetched through info.moreRecords as shown in the code snippet. You can fetch the next set of rows by passing the nextToken as well as maxRows if you require pagination to continue. This can be done as shown below. &lt;TABLE_INSTANCE&gt;.getRows(nextToken: String, maxRows: Int, success: (List&lt;ZCatalystRow&gt;, ResponseInfo) -> Unit, failure: ((ZCatalystException) -&gt; Unit)? = null): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystRow&gt;&gt;&gt;? **Parameters**: * **maxRows**: The maximum number of rows to be fetched in this iteration * **nextToken**: The authorization token to fetch the next set of rows A sample code snippet is given below: ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").getRows( "1000.6f********" , 20 , { rows, info ->{ println("The token for next set of rows - ${info.nextToken}") println("Boolean to know if there are records in next page - ${info.moreRecords}") } }, { exception -> println("Failed to get the rows! $exception") }) You can fetch the nextToken and moreRecords information until info.moreRecords returns FALSE. If you prefer to fetch all pending rows after the first iteration and don't want to set a maxRows limit, you can do so in the following manner: &lt;TABLE_INSTANCE&gt;.getRows(nextToken: String, success: (List&lt;ZCatalystRow&gt;, ResponseInfo) -&gt; Unit, failure: ((ZCatalystException) -&gt; Unit)? = null): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystRow&gt;&gt;&gt;? **Parameters**: * **nextToken**: The authorization token to fetch the next set of rows A sample code snippet is given below: ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").getRows( "1000.6f********", { rows, info ->{ println("The token for next set of rows - ${info.nextToken}") println("Boolean to know if there are records in next page - ${info.moreRecords}") } }, { exception -> println("Failed to get the rows! $exception") }) This will make info.moreRecords return FALSE. <br> ### Get All Rows You can retrieve all the rows of a table of the given instance using the **getRows()** method, as shown in the code syntax below. If the operation is successful, this method will return all the rows of the table without any filters or conditions. The &lt;TABLE_INSTANCE&gt; used in the code syntax below is the instance defined in the Table Instance page. &lt;TABLE_INSTANCE&gt;.getRows( success: (List&lt;ZCatalystRow&gt;,ResponseInfo) → Unit, failure: ((ZCatalystException) → Unit)?= null): ): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystRow&gt;&gt;&gt;? A sample code snippet is shown below: val table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails") //Replace this with your table name table.getRows( { rows, info ->{ println("The token for next set of rows - ${info.nextToken}") println("Boolean to know if there are records in next page - ${info.moreRecords}") } }, { exception -> println("Failed to get the rows! $exception") }) Note: Because this is an operation to fetch all the rows, you can ignore the info.nextToken. This will return all the rows available without pagination. The info.moreRecords will also return FALSE if all the rows are fetched. -------------------------------------------------------------------------------- title: "Get Column Value from Row" description: "You can retrieve a specific column's value in a row in a Data Store table." last_updated: "2026-07-02T09:34:10.016Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/data-store/get-column-value-from-row/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Columns (/en/cloud-scale/help/data-store/columns) - Get Metadata of Columns - API (/en/api/code-reference/cloud-scale/data-store/get-all-columns-metadata/#GetAllColumnsMetadata) -------------------------------------------------------------------------------- # Get Column Value from Row You can retrieve a specific column's value in a row in a Data Store table using the getFieldValue() method. For example, if you require the value of a single column called 'Employee ID' in a row, you can use this method to obtain that specific value. You must pass the Field Name of the column as the argument to the getFieldValue()method, as shown in the code syntax below. The &lt;TABLE_INSTANCE&gt; used in the code below is the instance defined in the Table Instance page. &lt;TABLE_INSTANCE&gt;.getRow( id : Long, success: (ZCatalystRow) → ZCatalystRow.getFieldValue(fieldAPIName: String): Any, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystRow&gt;&gt;? **Parameters**: * **id**: The The unique ROWID of the particular row that needs to be retrieved * **fieldAPIName**: The name of the column whose value needs to be fetched A sample code snippet is shown below: ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").getRow(2823000000054062, // Replace this with your table name and the ROWID of the row { row -> println(" The value of 'Employee ID' field is :${row.getFieldValue("EmployeeID")}") //Replace this with your column name }, { exception -> println("Failed to get the column value! $exception") }) -------------------------------------------------------------------------------- title: "Create a New Row Instance" description: "You can create a new row instance for a particular table in the Data Store." last_updated: "2026-07-02T09:34:10.016Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/data-store/create-row-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Insert Row - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Create a New Row Instance You can create a new row instance for a particular table in the Data Store, and enable the methods defined in this class to access the instance object. This prevents unnecessary server calls. A row instance can be created by calling the **newRow()** method, as shown in the code syntax below. The &lt;TABLE_INSTANCE&gt; used here is the instance defined in the Table Instance page. <br /> &lt;TABLE_INSTANCE&gt;.newRow(): ZCatalystRow <br /> A sample code snippet is shown below: <br /> val rowInstance = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").newRow() //Replace this with your table name -------------------------------------------------------------------------------- title: "Create Rows" description: "You can create a new row instance for a particular table in the Data Store, and enable the methods defined in this class to access the instance object." last_updated: "2026-07-02T09:34:10.016Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/data-store/create-rows/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Insert Row - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Create Rows ### Create a Single Row You can create a new row in a Data Store table of the given instance using the **newRow()** method. You must set the values of the rows in the table, by specifying the column name and the corresponding row value as a key-value pair. The &lt;ROW_INSTANCE&gt; used in the code syntax below is the instance defined in the Row Instance page. &lt;ROW_INSTANCE&gt;.create( success: (ZCatalystRow) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystRow&gt;&gt;&gt;? Note: If a column was created with the is_unique or is_mandatory property enabled, you must ensure that the value is unique or is mandatorily passed, respectively. You must also ensure that the data you pass for a column is of the column's configured data type. A sample code snippet is shown below: val row = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").newRow() //Replace this with your table name row.setColumnValue("Department_Name", "Marketing") //Replace this with your column name and its value row.setColumnValue("Employee_ID", "109223") //Replace this with your column name and its value row.setColumnValue("Employee_Name", "Robert Smith") //Replace this with your column name and its value row.create( { success -> println("New row created successfully $success") }, { exception -> println("Failed to create a new row! $exception") } ) ### Create Multiple Rows Catalyst Android SDK enables you to create multiple rows at a time in a table of the given instance. This is done by passing an array containing the rows that need to be inserted in the table. The array is passed as an argument to the **createRows()** method, as shown in the code syntax below. The &lt;TABLE_INSTANCE&gt; used in the code below is the instance defined in the Table Instance page. &lt;TABLE_INSTANCE&gt;.createRows( rows: ArrayList&lt;ZCatalystRow&gt;, success: (List&lt;ZCatalystRow&gt;) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystRow&gt;&gt;&gt;? **Parameters**: * **rows**: The array of rows to be created A sample code snippet is shown below: ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").createRows( //Replace this with your table name rowsList, //Set the names and values of the columns and add them to an arrayList { rows -> println("The IDs of the rows that were successfully created are listed below:") for (row in rows){ println("${row.id}") } }, { exception -> println("Add Rows Failed! $exception") }) -------------------------------------------------------------------------------- title: "Delete a Row" description: "Catalyst Android SDK enables you to delete a single row from a specific Data Store table." last_updated: "2026-07-02T09:34:10.016Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/data-store/delete-row/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Delete Row - API (/en/api/code-reference/cloud-scale/data-store/delete-row/#DeleteRow) -------------------------------------------------------------------------------- # Delete a Row Catalyst Android SDK enables you to delete a single row from a specific Data Store table. However, you will not be able to delete multiple rows at a time. You can delete a row from a table in either of these two methods: ### Delete a Row by passing the Row ID to the Table Instance You can delete a row from a table by passing the ROWID of the row as the argument to the **deleteRow()** method, as shown in the code syntax below. The &lt;TABLE_INSTANCE&gt; used in the code syntax below is the instance defined in the Table Instance page. &lt;TABLE_INSTANCE&gt;.deleteRow( rowId: Long, success: () → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;Unit&gt;? **Parameters**: * **rowId**: The unique ROWID of the row to be deleted. A sample code snippet is shown below: ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("Project").deleteRow(2823000000098007, //Replace this with your table name and the ROWID of the row { println("Row deleted successfully $it") }, { exception -> println("Delete Row failed $exception") }) ### Delete a Row by passing the Row Instance You can delete a row from a table simply by calling the **delete()** method for the row instance. The &lt;ROW_INSTANCE&gt; used in the code syntax below is the instance defined in the Row Instance page. &lt;ROW_INSTANCE&gt;.delete( success: () → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;Unit&gt;? A sample code snippet is shown below: ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").getRow(2823000000095003, //Replace this with your table name and the ROWID of the row { row -> row.delete( { println("Row deleted successfully") }, { exception -> println("Delete row failed $exception") } )}, { exception -> println("Exception occured $exception") }) -------------------------------------------------------------------------------- title: "Update Rows" description: "You can update a single specific row or all rows in a Data Store table." last_updated: "2026-07-02T09:34:10.016Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/data-store/update-rows/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Rows (/en/cloud-scale/help/data-store/records) - Update Row - API (/en/api/code-reference/cloud-scale/data-store/update-row/#UpdateRow) -------------------------------------------------------------------------------- # Update Rows ### Update a Specific Row You can update a single specific row in a Data Store table using the **update()** method. This enables you to update the values of one or more columns of the row by passing the modified values of the columns as key-value pairs. The &lt;ROW_INSTANCE&gt; used in the code syntax below is the instance defined in the Row Instance page. &lt;ROW_INSTANCE&gt;.update( success: (ZCatalystRow) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystRow&gt;&gt;&gt;? A sample code snippet is shown below: ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").getRow(2823000000095003, //Replace this with your table name and the ROWID of the row { row -> row.setColumnValue("Employee_Name", "Morgan Jones") row.update( { success -> println("Row updated successfully $success") }, { exception -> println("Failed to update the row $exception") } ) }) ### Update all Rows You can update multiple row in a table by passing an array of the rows as an argument to the **updateRows()** method. This enables you to update the values of one or more columns of the rows, by passing the modified values of the columns as key-value pairs. The &lt;TABLE_INSTANCE&gt; used in the code below is the instance defined in the Table Instance page. &lt;TABLE_INSTANCE&gt;.updateRows( rows: ArrayList&lt;ZCatalystRow&gt;, success: (List&lt;ZCatalystRow&gt;) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystRow&gt;&gt;&gt;? **Parameters**: * **rows**: The array of rows to be updated A sample code snippet is shown below: ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").updateRows( //Replace this with your table name rowsList, //Set the names and values of the columns and add them to an arrayList { println(">>>> Rows updated successfully $it") }, { println(">>>> Update Rows Failed $it") }) ##### File Store -------------------------------------------------------------------------------- title: "Create a File Store Instance" description: "Catalyst File Store provides storage solutions for the app data files and user data files of your Catalyst application, and enables access to shared data." last_updated: "2026-07-02T09:34:10.017Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/file-store/create-file-store-instance/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) - File Store Implementation (/en/cloud-scale/help/file-store/implementation) - File Store - API (/en/api/code-reference/cloud-scale/file-store/get-specific-folder/#GetSpecificFolder) -------------------------------------------------------------------------------- # File Store Catalyst File Store provides cloud storage solutions for the application files and user data files of your Catalyst application, and enables access to shared data. You can store, manage, and organize images, videos, text files, document files, spreadsheets, or files of other formats. ### Create a File Store Instance You can create an instance of your Catalyst project's File Store using the **getFileStoreInstance()** method, and enable the methods defined in this class to access the instance object. This prevents unnecessary server calls. A File Store instance can be created as shown below: ZCatalystApp.getInstance().getFileStoreInstance(): ZCatalystFileStore -------------------------------------------------------------------------------- title: "Get Folders" description: "You can obtain the details of a specific folder in the File Store." last_updated: "2026-07-02T09:34:10.017Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/file-store/get-folders/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) - File Store Implementation (/en/cloud-scale/help/file-store/implementation) - Get Folder - API (/en/api/code-reference/cloud-scale/file-store/get-all-folders/#GetAllFolders) -------------------------------------------------------------------------------- # Get Folders ### Get the Metadata of a Specific Folder You can obtain the details of a specific folder in the File Store, by passing its unique Folder ID as an argument to the **getFolder()** method, as shown in the code syntax below. This fetches the folder object using which you can retrieve the folder's metadata such as the details of its creation, last modification, and the meta details of the files in it. The &lt;FILE_STORE_INSTANCE&gt; used in the code below is the instance defined in the File Store Instance page. &lt;FILE_STORE_INSTANCE&gt;.getFolder( id: Long, success: (ZCatalystFolder) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystFolder&gt;&gt;? **Parameters**: * **id**: The unique Folder ID of the folder to be retrieved A sample code snippet is shown below: ZCatalystApp.getInstance().getFileStoreInstance().getFolder(2823000000006561,//Replace this with your Folder ID { folder -> println("Get Folder Success") println("Folder name: ${folder.name} ") }, { exception -> println("Get Folder Failed! $exception") }) ### Get the Metadata of all Folders You can retrieve the details of all the folders available in your project's File Store using the **getFolders()** method, as shown in the code syntax below. This can fetch the meta data of all the folders, and the files in them. The &lt;FILE_STORE_INSTANCE&gt; used in the code below is the instance defined in the File Store Instance page. &lt;FILE_STORE_INSTANCE&gt;.getFolders( success: (List&lt;ZCatalystFolder&gt;) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystFolder&gt;&gt;&gt;? A sample code snippet is shown below: ZCatalystApp.getInstance().getFileStoreInstance().getFolders( { folders -> for (folder in folders){ println("Folder names: ${folder.name}") } }, { exception -> println("Get Folders Failed! $exception") } ) -------------------------------------------------------------------------------- title: "Create a Folder Instance" description: "You can create an instance for a specific folder in the File Store and enable the methods defined in this class to access the instance object." last_updated: "2026-07-02T09:34:10.017Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/file-store/create-folder-instance/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) - File Store Implementation (/en/cloud-scale/help/file-store/implementation) - File Store - API (/en/api/code-reference/cloud-scale/file-store/get-specific-folder/#GetSpecificFolder) -------------------------------------------------------------------------------- # Create a Folder Instance You can create an instance for a specific folder in the File Store using the **getFolderInstance()** method, and enable the methods defined in this class to access the instance object. You must pass the Folder ID of that folder to the getFolderInstance() method, as shown in the code syntax below. The &lt;FILE_STORE_INSTANCE&gt; used in the code below is the instance defined in the File Store Instance page. &lt;FILE_STORE_INSTANCE&gt;.getFolderInstance( id: Long ): ZCatalystFolder **Parameters**: * **id**: The unique Folder ID of the folder that the instance object must be returned for A sample code snippet is shown below: ZCatalystApp.getInstance().getFileStoreInstance().getFolderInstance(2823000000006561) //Replace this with your Folder ID -------------------------------------------------------------------------------- title: "Get Files" description: "You can retrieve the details of a specific file or of all the files in the File Store." last_updated: "2026-07-02T09:34:10.017Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/file-store/get-files/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) - File Store Implementation (/en/cloud-scale/help/file-store/implementation) - Get File - API (/en/api/code-reference/cloud-scale/file-store/get-specific-file/#GetSpecificFile) -------------------------------------------------------------------------------- # Get Files ### Get the Metadata of a Specific File You can retrieve the details of a specific file in the File Store, by passing its unique File ID as an argument to the **getFile()** method, as shown in the code syntax below. This fetches the file object using which you can retrieve the file's metadata such as the details of its creation, last modification, file size, etc. The &lt;FILE_STORE_INSTANCE&gt; used in the code below is the instance defined in the File Store Instance page. &lt;FOLDER_INSTANCE&gt;.getFile( id: Long, success: (ZCatalystFile) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystFile&gt;&gt;? **Parameters**: * **id**: The unique File ID A sample code snippet is shown below: val folder = ZCatalystApp.getInstance().getFileStoreInstance().getFolderInstance(2823000000006561) //Replace this with your Folder ID folder.getFile(2823000000044005, //Replace this with your File ID { file -> println("Get File Success") println("The name of the file is: ${file.name}") println("The size of the file is: ${file.size}") }, { exception -> println("Get File Failed! $exception") }) ### Get the Metadata of all Files You can retrieve the details of all the files available in a specific folder using the **getFiles()** method, as shown in the code syntax below. The &lt;FOLDER_INSTANCE&gt; used in the code below is the instance defined in the Folder Instance page. &lt;FOLDER_INSTANCE&gt;.getFiles( success: (List&lt;ZCatalystFile&gt;) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystFile&gt;&gt;&gt;? A sample code snippet is shown below: ZCatalystApp.getInstance().getFileStoreInstance().getFolderInstance(2823000000006561).getFiles( //Replace this with your Folder ID { files -> println("Get Files Success") for (file in files){ println("File names: ${file.name}") } }, { exception -> println("Get Files Failed $exception") } ) -------------------------------------------------------------------------------- title: "Upload a File" description: "You can upload a file to an existing folder in the File Store." last_updated: "2026-07-02T09:34:10.017Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/file-store/upload-file/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) - File Store Implementation (/en/cloud-scale/help/file-store/implementation) - Upload File - API (/en/api/code-reference/cloud-scale/file-store/upload-file-in-folder/#UploadFileInaFolder) -------------------------------------------------------------------------------- # Upload a File You can upload a file to an existing folder in the File Store, by calling the **uploadFile()** method. After the file is uploaded in the folder, a unique File ID will be generated for it. You can upload an image, text document, CSV, or any type of file you need upto 100MB of file size. You can upload the file in one of the following five ways, as discussed below. The &lt;FOLDER_INSTANCE&gt; used in the code sections of all the methods below is the instance defined in the Folder Instance page. This will refer to the folder that the file must be uploaded in. ### By passing the File URI Scheme You can upload the file to the folder of the given folder instance by passing the file's URI scheme as an argument to the uploadFile() method: &lt;FOLDER_INSTANCE&gt;.uploadFile( uri: Uri, success: (ZCatalystFile) → Unit, failure: ((ZCatalystException) → Unit)?, progress: ((Long, Long, Double) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystFile&gt;&gt;? **Parameters**: * **uri**: The File URI scheme of the file to be uploaded A sample code snippet is shown below: ZCatalystApp.getInstance().getFileStoreInstance().getFolderInstance(2823000000006561).uploadFile("/src.example.com/files/productImage.png", { println(" >> File Upload Success -$it") }, { println(" >> File Upload Failed -$it") }) ### By passing the File Path You can upload the file to the folder of the given folder instance by passing its file path in the local system an argument to the uploadFile() method: &lt;FOLDER_INSTANCE&gt;.uploadFile( filePath: String, success: (ZCatalystFile) → Unit, failure: ((ZCatalystException) → Unit)?, progress: ((Long, Long, Double) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystFile&gt;&gt;? **Parameters**: * **filepath**: The file path of the file to be uploaded A sample code snippet is shown below: ZCatalystApp.getInstance().getFileStoreInstance().getFolderInstance(2823000000006561).uploadFile("/Desktop/HelplineCard.jpg", { println(" &gt;&gt; File Upload Success -$it") }, { println(" &gt;&gt; File Upload Failed -$it") }) ### By passing the File URI Scheme and File Name You can upload the file to the folder of the given folder instance by passing both File URI scheme and the file name as individual arguments to the uploadFile() method: &lt;FOLDER_INSTANCE&gt;.uploadFile( uri: Uri, fileName: String, success: (ZCatalystFile) → Unit, failure: ((ZCatalystException) → Unit)?, progress: ((Long, Long, Double) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystFile&gt;&gt;? **Parameters**: * **uri**: The File URI scheme of the file to be uploaded * **fileName**: The name of the file to be uploaded A sample code snippet is shown below: ZCatalystApp.getInstance().getFileStoreInstance().getFolderInstance(2823000000006561).uploadFile("/src.example.com/files", "productImage.png", { println(" &gt;&gt; File Upload Success -$it") }, { println(" &gt;&gt; File Upload Failed -$it") }) ### By passing the File Path and File Name You can upload the file to the folder of the given folder instance by passing both the file path in the local system and the file name as the arguments to the uploadFile() method: &lt;FOLDER_INSTANCE&gt;.uploadFile( filePath: String, fileName: String, success: (ZCatalystFile) → Unit, failure: ((ZCatalystException) → Unit)?, progress: ((Long, Long, Double) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystFile&gt;&gt;? **Parameters**: * **filepath**: The file path of the file to be uploaded * **fileName**: The name of the file to be uploaded A sample code snippet is shown below: ZCatalystApp.getInstance().getFileStoreInstance().getFolderInstance(2823000000006561).uploadFile("/Desktop", "HelplineCard.jpg", { println(" &gt;&gt; File Upload Success -$it") }, { println(" &gt;&gt; File Upload Failed -$it") }) ### By passing the File as inputStream and the File Name You can upload the file to the folder of the given folder instance by passing both the file as inputStream and the file name as the arguments to the uploadFile() method: &lt;FOLDER_INSTANCE&gt;.uploadFile(stream: InputStream, fileName: String, success: (ZCatalystFile) -> Unit, failure: ((ZCatalystException) -> Unit)? = null, progress: ((bytesWritten: Long, contentLength: Long, percentage: Double) -> Unit)? = null) : ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystFile&gt;&gt;? **Parameters**: * **stream**: The inputStream of the file * **fileName**: The name of the file to be uploaded A sample code snippet is shown below: val file = File("/Desktop/HelplineCard.jpg") val inputStream: InputStream = FileInputStream(file) ZCatalystApp.getInstance().getFileStoreInstance().getFolderInstance(2823000000006561).uploadFile(inputStream, { println(" >> File Upload Success -$it") }, { println(" >> File Upload Failed -$it") }) -------------------------------------------------------------------------------- title: "Download a File" description: "You can download a file from an existing folder in the File Store." last_updated: "2026-07-02T09:34:10.018Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/file-store/download-file/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) - File Store Implementation (/en/cloud-scale/help/file-store/implementation) - Download File - API (/en/api/code-reference/cloud-scale/file-store/download-file-from-folder/#DownloadaFileFromaFolder) -------------------------------------------------------------------------------- # Download a File You can download a file from an existing folder in the File Store by calling the **download()** method. The operation will return a temporary URL where the file is stored. The &lt;FILE_INSTANCE&gt; used in the code below is an instance created for the specific file, as shown in the sample code snippet. This will refer to the file from the specific folder that must be downloaded by its unique File ID. &lt;FILE_INSTANCE&gt;.download( success: (InputStream) → Unit, failure: ((ZCatalystException) → Unit)?, progress: ((Long, Long, Double) → Unit)? ): ZCatalystRequest&lt;ResponseBody&gt;? A sample code snippet is shown below: ZCatalystApp.getInstance().getFileStoreInstance().getFolderInstance(2823000000006561).getFile(2823000000044005, //Replace this with your Folder ID and File ID { file -> file.download( { println("File download success ${it.available()}") }, { println("File download failed $it") }, { bytesWritten, contentLength, percentage -> println("&gt;&gt; Percentage - $percentage") println("&gt;&gt; Bytes Written - $bytesWritten") println("&gt;&gt; Content Length - $contentLength") } ) }) -------------------------------------------------------------------------------- title: "Delete a File" description: "You can delete an existing file from a folder in the File Store." last_updated: "2026-07-02T09:34:10.018Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/file-store/delete-file/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) - File Store Implementation (/en/cloud-scale/help/file-store/implementation) - Delete File - API (/en/api/code-reference/cloud-scale/file-store/delete-file/#DeleteFile) -------------------------------------------------------------------------------- # Delete a File You can delete an existing file from a folder in the File Store by calling the **delete()** method and referring to the file with the file instance. This will delete the file permanently. The &lt;FILE_INSTANCE&gt; used in the code below is an instance created for the specific file, as shown in the sample code snippet. This will refer to the file from the specific folder that must be deleted by its unique File ID. &lt;FILE_INSTANCE&gt;.delete( success: () → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;Unit&gt;? A sample code snippet is shown below: ZCatalystApp.getInstance().getFileStoreInstance().getFolderInstance(2823000000006544).getFile(2823000000006589, //Replace this with your Folder ID and File ID { file -> file.delete( { println("File Deleted successfully") }) }, { exception -> println("Delete File Failed $exception") }) ##### Push Notifications -------------------------------------------------------------------------------- title: "Register Device for Push Notifications" description: "This page describes the method to register an Android device for remote push notifications after you register and enroll your Android app." last_updated: "2026-07-02T09:34:10.018Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/push-notifications/register-device/" service: "Cloud Scale" related: - Push Notifications (/en/cloud-scale/help/push-notifications/introduction) - Android Push Notifications (/en/cloud-scale/help/push-notifications/android) - Push Notifications API for Android Devices (/en/api/code-reference/cloud-scale/push-notifications/android/send-android-push-notifications/#SendAndroidPushNotifications) - Push Notifications Flutter SDK (/en/sdk/flutter/v2/cloud-scale/push-notifications/register-device/) -------------------------------------------------------------------------------- # Push Notifications ### Introduction 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. Catalyst provides you with an easy way to integrate push notifications into your Catalyst web, iOS, and Android applications. Before you send push notifications, you must follow a set of steps to register your app and enroll for Catalyst push notifications. These steps are mentioned in sequence below: 1. Generate Firebase's Android Configuration File 2. Generate Private Key for Firebase Access 3. Configure Android Push Notification Services in Catalyst 4. Register a Mobile Device for Push Notifications Note: The first three steps are covered in detail in the Push Notifications- Android help section. This Android SDK help documentation only covers the fourth step regarding registering a device to send push notifications, as well as deregistering a device. You can implement steps 1 -3 by referring to the Push Notifications help document, before using the code given below. <br> ### Register a Mobile Device for Push Notifications After you complete the first five steps mentioned above, you can implement the following code in your Android app that will register the device for Catalyst Push Notifications. To register an Android mobile device as a test device, you must call the registerNotification() method with the required parameters as shown in the following code snippet: val app = ZCatalystApp.getInstance() app.registerNotification(device_token,"bundleID", "appID", test_device_boolean, { Log.i("Register","App register successfully"); }, { Log.i("Register","App register failed"); }) **Parameters:** * device_token: The device token obtained from FCM for your app. * bundleID: The Android app's bundle ID that you configured while registering the app with Catalyst as well as in Firebase. * appID: The app ID generated by Catalyst for your app in Push Notifications. You can find this in the Android section of Push Notifications in your Catalyst console. * test_device_boolean: The value is set to true for test devices, and set to false for production devices. <br> Note: You can register a maximum of 10 Android devices as test devices to test Android push notifications. After your device is registered, you will be able to send push notifications to your app users. The users will need to provide the permission for your app to send push notifications to them on their device, by clicking **Allow** from the permission prompt. You can learn about sending test push notifications on your registered devices from the Catalyst console from this help section. You can also send test notifications from the API. Refer to the Java, Node.js, and Python SDK documentation to learn about sending push notifications through your codebase. -------------------------------------------------------------------------------- title: "Deregister Device for Push Notifications" description: "This page describes the method to deregister a registered Android device for remote push notifications." last_updated: "2026-07-02T09:34:10.018Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/push-notifications/deregister-device/" service: "Cloud Scale" related: - Push Notifications (/en/cloud-scale/help/push-notifications/introduction) - Android Push Notifications (/en/cloud-scale/help/push-notifications/android) - Push Notifications API for Android Devices (/en/api/code-reference/cloud-scale/push-notifications/android/send-android-push-notifications/#SendAndroidPushNotifications) -------------------------------------------------------------------------------- # Deregister a Mobile Device for Push Notifications You can deregister a device that was registered for Catalyst Android push notifications by passing the required parameters to the deregisterNotification() method as shown below. val app = ZCatalystApp.getInstance() app.deregisterNotification (device_token,"bundleID", "appID", test_device_boolean, { Log.i("Unregister","App unregistered successfully"); }, { Log.i("Unregister","App unregisteration failed"); }) **Parameters:** * device_token: The device token obtained from FCM for your app. * bundleID: The Android app's bundle ID that you configured while registering the app with Catalyst as well as in Firebase. * appID: The app ID generated by Catalyst for your app in Push Notifications. You can find this in the Android section of Push Notifications in your Catalyst console. * test_device_boolean: The value is set to true for test devices, and set to false for production devices ##### Search -------------------------------------------------------------------------------- title: "Search Data in Tables" description: "Catalyst Search enables data searching in the indexed columns of the tables in the Data Store. It allows you to perform powerful searches through volumes of data with a single search query." last_updated: "2026-07-02T09:34:10.018Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/search/search-data-in-tables/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Search (/en/cloud-scale/help/search-integration/introduction) - Search - API (/en/api/code-reference/cloud-scale/zcql/execute-zcql-query/#ExecuteZCQLQuery) -------------------------------------------------------------------------------- # Search Catalyst Search enables data searching in the indexed columns of the tables in the Data Store. It allows you to perform powerful searches through volumes of data with a single search query. Note: The columns you search for data must be indexed. You can enable search indexing for a column while creating it or by editing it later. ### Search Data in Tables To search for data in a table in a specific pattern, you must specify the table name as the identifier, and add the columns to be searched in. The columns can be added to an array and the array must be passed to the **search()** method along with the keywords to be searched through an instance of the class ZCatalystSearchOptions. You must construct the search pattern to pass to the search() method before you execute a search operation, as shown in the code syntax below. ZCatalystApp.getInstance().search( searchOptions: ZCatalystSearchOptions, success: (Map&lt;String, List&lt;Map&lt;String, Any?&gt;&gt;&gt;) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;Map&lt;String, List&lt;Map&lt;String, Any?&gt;&gt;&gt;&gt;&gt;? **Parameters**: * **searchOptions**: The instance of the **ZCatalystSearchOptions** class to be passed to the search() method You can create the instance for searchOptions() in the following way: ZCatalystSearchOptions(searchText: String, ArrayList&lt;ZCatalystSearchOptions.TableColumns) .addSortColumn(tableName: String,columnName: String): Unit .setDisplayColumns(displayTableColumns: ArrayList&lt;ZCatalystSearchOptions.TableColumns&gt;): Unit .setSearchColumns(searchTableColumns: ArrayList&lt;ZCatalystSearchOptions.TableColumns&gt;): Unit .setSearchPattern(pattern: ZCatalystSearchOptions.SearchPattern): Unit A sample code snippet of a search execution is shown below: val tableColumns = ZCatalystSearchOptions.TableColumns("EmployeeDetails") //Replace this with your table name tableColumns.addColumn("Age") //Replace this with your column name val arr = arrayListOf<ZCatalystSearchOptions.TableColumns>() arr.add(tableColumns) val searchOptions = ZCatalystSearchOptions("26",arr) //Replace this with your search text ZCatalystApp.getInstance().search(searchOptions, { println(">> success - $it") }, { println(">> failed - $it") }) ##### Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page provides an overview of the mobile SDK methods required to perform Stratus operations." last_updated: "2026-07-02T09:34:10.018Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/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) -------------------------------------------------------------------------------- # 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>Create Bucket Instance</td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>Get Object <ul> <li>Get All Objects</li> </ul> </li> <li>Download an Object</li> <li>Upload Object <ul> <li>Upload an Object Using File Path and Name</li> <li>Upload an Object Using File Path</li> <li>Upload an Object Using InputStream and File Name</li> </ul> </li> <li>Delete Object <ul> <li>Delete a Single Object</li> <li>Delete Multiple Objects</li> </ul> </li> <li>Delete Path</li> </ul> </td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Create Bucket Instance" description: "This page lists the Android SDK method to create a bucket instance." last_updated: "2026-07-02T09:34:10.018Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/stratus/create-bucket-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-bucket-instance/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/#initialize-bucket-instance) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/initialize-stratus/#create-bucket-instance) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Bucket Instance To perform bucket level operations, you need to initialize a bucket instance. We will refer to this component instance in various code snippets of working with Buckets in Stratus. var bucket = ZCatalystStratus.getBucketInstance("{bucket_name}") -------------------------------------------------------------------------------- title: "Get Object" description: "This page lists the Android SDK method to get an object or objects from the bucket." last_updated: "2026-07-02T09:34:10.018Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/stratus/get-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/get-objects/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/get-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/get-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/get-object/) - iOS SDK (/en/sdk/ios/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-objects/#GetAllObjects) -------------------------------------------------------------------------------- # Get Object This SDK method can be used to get an object from the bucket. The response will be in **blob** format. When Versioning is enabled for the bucket: * If you do not pass the versionId, then only the **latest object** will be returned. * To retrieve a specific version, use the versionId query parameter with a valid version as a value. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w30p">Parameter Name</th> <th class="w70p">Definition</th> </tr> </thead> <tbody> <tr> <td>name</td> <td>A mandatory parameter. Will contain the object name.</td> </tr> <tr> <td>versionId</td> <td>An optional parameter. Will hold the unique version ID of the required object's version.</td> </tr> </tbody> </table> bucketInstance.getObject("{object_name}", "{version_id}", { object -> println("The name of the object is : ${object.name}") }, { exception -> println("Get object failed! $exception") } ) ### Get All Objects This SDK method can be used to get all the objects present in the bucket using pagination technique. **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>prefix</td> <td>String</td> <td>An Optional parameter. This will get the objects that match the prefix value.</td> </tr> <tr> <td>max_keys</td> <td>Number</td> <td>An Optional parameter. Will contain the maximum limit of objects that can be listed by pagination.</td> </tr> <tr> <td>continuation_token</td> <td>String</td> <td>An Optional parameter. 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.</td> </tr> </tbody> </table> bucketInstance.getObjects({max_keys}, {continuation_token}, {prefix}, { objects -> for (obj in objects){ println("Object name: ${obj.name}") } }, { exception -> println("Get objects failed! $exception") } ) -------------------------------------------------------------------------------- title: "Download Object" description: "This page lists the Android SDK methods to download an object to the bucket." last_updated: "2026-07-02T09:34:10.018Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/stratus/download-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Download an Object (/en/cloud-scale/help/stratus/objects/manage-object/download-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/range-download/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/range-download/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/range-download/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/range-download/) - iOS SDK (/en/sdk/ios/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/upload-object/#DownloadObject) -------------------------------------------------------------------------------- # Download an Object This SDK method will allow you to download the object. **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. Will hold the unique version ID of the required object's version.</td> </tr> <tr> <td>fromCache</td> <td>Boolean</td> <td> <ul> <li>An optional parameter. To be used to specify whether this file has to be retrieved from the cache or not.</li> <li>Default Value: false.</li> </ul> </td> </tr> </tbody> </table> bucketInstance.getObject("SunSet.jpeg", "2823000000044005", //Replace this with your Object Name and Object ID { object -> object.download( { println("File download success ${it.available()}") }, { println("File download failed $it") } ) } -------------------------------------------------------------------------------- title: "Upload Object" description: "This page lists the Android SDK methods to upload an object to the bucket." last_updated: "2026-07-02T09:34:10.018Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/upload-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/upload-object/) - iOS SDK (/en/sdk/ios/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/upload-object/#UploadObject) -------------------------------------------------------------------------------- # Upload Object The SDK method listed in this section will allow you to upload objects to the bucket 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 an Object Using File Path and Name This SDK can be used to upload an object to the bucket using its complete name and path. **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>filePath</td> <td>String</td> <td>A mandatory parameter. Will contain the complete path of the location from where the file needs to be uploaded from.</td> </tr> <tr> <td>fileName</td> <td>String</td> <td> <ul> <li>An mandatory parameter. Will hold the complete name of the object.</li> <li>Default Value: Will hold the value of the last path value that was used.</li> </ul> </td> </tr> <tr> <td>shouldCompress</td> <td>Boolean</td> <td> <ul> <li>An optional parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>Default Value: false.</li> </ul> </td> </tr> <tr> <td>progress</td> <td>Function</td> <td> <ul> <li>An optional parameter. This is a callback function while uploading a file.</li> </ul> </td> </tr> </tbody> </table> bucketIntance.uploadObject("/Desktop", "Helplinecard.jpeg", true, { println(" >> Object Upload Success -$it") }, { println(" >> Object Upload Failed -$it") }, progress = { bytesWritten, contentLength, percentage -> println("Percentage: $percentage") } ) ### Upload an Object Using File Path This SDK can be used to upload an object to the bucket using its complete path. **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>filePath</td> <td>String</td> <td>A mandatory parameter. Will contain the complete path of the location from where the file needs to be uploaded from.</td> </tr> <tr> <td>shouldCompress</td> <td>Boolean</td> <td> <ul> <li>An optional parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>Default Value: false.</li> </ul> </td> </tr> <tr> <td>progress</td> <td>Function</td> <td> <ul> <li>An optional parameter. This is a callback function while uploading a file.</li> </ul> </td> </tr> </tbody> </table> bucketIntance.uploadObject("/Desktop", "Helplinecard.jpeg", true, { println(" >> Object Upload Success -$it") }, { println(" >> Object Upload Failed -$it") }, progress = { bytesWritten, contentLength, percentage -> println("Percentage: $percentage") } ) ### Upload an Object Using InputStream and File Name This SDK can be used to upload an object to the bucket using its file name and an input stream of the object to be uploaded. **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>stream</td> <td>InputStream</td> <td>A mandatory parameter. Will contain the input stream of the object that needs to be uploaded.</td> </tr> <tr> <td>fileName</td> <td>String</td> <td> <ul> <li>An mandatory parameter. Will hold the complete name of the object.</li> <li>Default Value: Will hold the value of the last path value that was used.</li> </ul> </td> </tr> <tr> <td>shouldCompress</td> <td>Boolean</td> <td> <ul> <li>An optional parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>Default Value: false.</li> </ul> </td> </tr> <tr> <td>progress</td> <td>Function</td> <td> <ul> <li>An optional parameter. This is a callback function while uploading a file.</li> </ul> </td> </tr> </tbody> </table> val file = File("/Desktop/HelplineCard.jpg") val inputStream: InputStream = FileInputStream(file) bucketIntance.uploadObject(inputSrream, "Helplinecard.jpeg", true, { println(" >> Object Upload Success -$it") }, { println(" >> Object Upload Failed -$it") }, progress = { bytesWritten, contentLength, percentage -> println("Percentage: $percentage") } ) -------------------------------------------------------------------------------- title: "Delete Object" description: "This page lists the Android SDK methods to delete an object or objects from the bucket." last_updated: "2026-07-02T09:34:10.019Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/stratus/delete-object/" 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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/delete-object/) - iOS SDK (/en/sdk/ios/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/delete-objects/#DeleteObject) -------------------------------------------------------------------------------- # Delete Object ### Delete a Single Object The following SDK method can be used to delete a single object from the bucket. bucketInstance.getObject("SunSet.jpeg", "2823000000044005", //Replace this with your Object Name and Object ID { object -> object.delete( { println("Object Deletion Success.") }, { println("Failed to delete the object. $it") } ) ### Delete Multiple Objects The following SDK method can be used to delete multiple objects from the bucket. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w30p">Data Type</th> <th class="w50p">Definition</th> </tr> </thead> <tbody> <tr> <td>objects</td> <td>ArrayList&lt;ZCatalystObject&gt;</td> <td>An array containing the list of objects (and version IDs, if Versioning is enabled for the bucket) that needs to be deleted.</td> </tr> </tbody> </table> bucketInstance.getObjects( success = { objects, resInfo -> bucketInstance.deleteObjects(objects, { println("DELETE BULK OBJECTS : SUCCESS"), }, { println("Delete Objects Failed: $it") } ) -------------------------------------------------------------------------------- title: "Delete Path" description: "This page lists the Android SDK methods to delete an entire path along with its objects from the bucket." last_updated: "2026-07-02T09:34:10.019Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/stratus/delete-path/" 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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/delete-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/delete-path/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/delete-path/) - REST API (/en/api/code-reference/cloud-scale/stratus/delete-path/#DeletePath) -------------------------------------------------------------------------------- # Delete Path The following SDK method can be used to delete all the objects present in the specified path. **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>path</td> <td>String</td> <td>A mandatory parameter. Will contain the complete path of where the file should be uploaded.</td> </tr> </tbody> </table> bucketInstance.deletePath("myFolder/", { println("Objects deleted successfully.") }, { println("Failed to delete the objects - $it") } ) ##### ZCQL -------------------------------------------------------------------------------- title: "Execute ZCQL Query" description: "ZCQL is Catalyst's own query language that enables you to perform data creation, retrieval, and modification operations in the Data Store." last_updated: "2026-07-02T09:34:10.019Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/zcql/execute-zcql-query/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - ZCQL (/en/cloud-scale/help/zcql/introduction/) - Execute ZCQL - API (/en/api/code-reference/cloud-scale/zcql/execute-zcql-query/#ExecuteZCQLQuery) -------------------------------------------------------------------------------- # ZCQL ZCQL is Catalyst's own query language that enables you to perform data creation, retrieval, and modification operations in the Data Store. It supports queries with built-in functions, SQL Join clauses, and other statements and conditions. ### Execute a ZCQL Query Before you execute a ZCQL query to fetch the required data set, you must construct the query to pass it to the **execute()** method. You can learn about the ZCQL syntax from the ZCQL help page. You must pass an instance of **ZCatalystSelectQuery** to the execute() method, as shown in the code syntax of a ZCQL query execution below. The &lt;DATA_STORE_INSTANCE&gt; used here is the instance defined in the Data Store Instance page. ZCatalystApp.getInstance().getDataStoreInstance().execute( selectQuery: ZCatalystSelectQuery, success: (List&lt;Map&lt;String, Map&lt;String, Any?&gt;&gt;&gt;) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;List&lt;Map&lt;String, Any?&gt;&gt;&gt;&gt;&gt;? **Parameters**: * **selectQuery**: The instance of the type ZCatalystSelectQuery to be passed You can create a selectQuery instance for ZCatalystSelectQuery for the statements supported by ZCQL, in the following way: ZCatalystSelectQuery.Builder() .select(columns: Set&lt;Column&gt;): ZCatalystSelectQuery.Builder .selectAll(): ZCatalystSelectQuery.Builder .where(column: String, comparator: ZCatalystUtil.Comparator, value: String): ZCatalystSelectQuery.Builder .from(tableName: String): ZCatalystSelectQuery.Builder .and(column: String, comparator: ZCatalystUtil.Comparator, value: String): ZCatalystSelectQuery.Builder .groupBy(columns: Set&lt;Column&gt;): ZCatalystSelectQuery.Builder .orderBy(columns: Set&lt;Column&gt;, sortOrder: ZCatalystUtil.SortOrder): ZCatalystSelectQuery.Builder .innerJoin(tableName: String): ZCatalystSelectQuery.Builder .leftJoin(tableName: String): ZCatalystSelectQuery.Builder .on(joinColumn1: String, comparator: ZCatalystUtil.Comparator, joinColumn2: String): ZCatalystSelectQuery.Builder .or(column: String, comparator: ZCatalystUtil.Comparator, value: String): ZCatalystSelectQuery.Builder .limit(offset: Int, value: Int?): ZCatalystSelectQuery.Builder .build(): ZCatalystSelectQuery A sample code snippet of a ZCQL query execution is shown below: val query = ZCatalystSelectQuery.Builder() .selectAll() .from("EmployeeDetails") //Replace this with your table name .where("Location", ZCatalystUtil.Comparator.EQUAL_TO, "Austin") .and("Department", ZCatalystUtil.Comparator.EQUAL_TO, "Marketing") .or("isActive", ZCatalystUtil.Comparator.EQUAL_TO, "true") .limit(5) .build() ZCatalystApp.getInstance().getDataStoreInstance().execute(query, { println("Query executed successfully. $it") }, { exception -> println("Exception occured $exception") }) #### General -------------------------------------------------------------------------------- title: "Get Current Time Zone" description: "This enables you to fetch the current time zone active for your project." last_updated: "2026-07-02T09:34:10.019Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/general/get-current-time-zone/" service: "All Services" related: - Time Zone Settings (/en/getting-started/set-up-a-catalyst-project/general-settings/#change-the-time-zone-of-the-project) -------------------------------------------------------------------------------- # Get Current Time Zone You can define and store a time zone for your project from the General settings in the console, overriding the default time zone set based on the data center you access. This time zone you set will be applied across all services, components and features of the project. However, you can still define individual time zones for certain components. Catalyst enables you to fetch the current time zone active for your project. You can fetch the current time zone defined for your project in the console using the getCurrentTimeZone() method in the ZCatalystUtil class as shown in the syntax below. fun getCurrentTimeZone( success: (String) -> Unit, failure: ((ZCatalystException) -> Unit)? = null): ZCatalystRequest&lt;ZCatalystResponse&lt;JsonObject&gt;&gt;? A sample code snippet is shown below: ZCatalystUtil.getCurrentTimeZone({ timeZone -> println("Current time zone + $timeZone") }, { println("Failed to get current time zone.") }) #### Serverless ##### Functions -------------------------------------------------------------------------------- title: "Create a Function Instance" description: "Catalyst functions enable you to build custom functionalities in your application, automate tasks, or integrate with third-party services." last_updated: "2026-07-02T09:34:10.019Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/serverless/functions/create-function-instance/" service: "Serverless" related: - Functions (/en/serverless/help/functions/introduction) - Function - API (/en/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Functions Catalyst Serverless Functions enable you to build custom functionalities in your application, automate tasks, or integrate with third-party services. You can develop functions for your Android app from the Catalyst console or the CLI. Note: You can create six types of functions in Catalyst: Basic I/O, Advanced I/O, Cron, Event, Integration, and Browser Logic functions. However, you can only execute Basic I/O functions in Catalyst Android SDK. ### Create a Function Instance You can create an instance of a Catalyst function using the **getFunctionInstance()** method, and enable the methods defined in this class to access the instance object. This will prevent unnecessary server calls. You can create a function instance in any of the following ways: ### Create a Function Instance by passing the Function ID You can pass the function's unique Function ID as an argument to the getFunctionInstance() method and create an instance for it: ZCatalystApp.getInstance().getFunctionInstance( id: Long ): ZCatalystFunction **Parameters**: * **id**: The unique Function ID of the function A sample code snippet is shown below: ZCatalystApp.getInstance().getFunctionInstance(2823000000011091) //Replace this with your Function ID ### Create a Function Instance by passing the API name of the function You can pass the function's API name as an argument to the getFunctionInstance() method and create an instance for it: ZCatalystApp.getInstance().getFunctionInstance( apiName: String ): ZCatalystFunction **Parameters**: * **apiName**: The name of the function configured in Catalyst A sample code snippet is shown below: ZCatalystApp.getInstance().getFunctionInstance("LocalBackup") //Replace this with your function name -------------------------------------------------------------------------------- title: "Execute a Function" description: "You can execute a Catalyst function in several ways, based on the HTTP request you pass with the function." last_updated: "2026-07-02T09:34:10.019Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/serverless/functions/execute-function/" service: "Serverless" related: - Functions (/en/serverless/help/functions/introduction) - Implementing Functions (/en/serverless/help/functions/implementation) - Execute Function - API (/en/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Execute a Function You can execute a Catalyst Basic I/O function in any one of the ways given below, based on the HTTP request you pass with the function. You can pass the parameters to the function to be executed as the argument to a function execution method. This method differs for each HTTP request type. The &lt;FUNCTION_INSTANCE&gt; used in all the code sections below is the instance defined in the Function Instance page. ### Execute a GET function You can execute a function of the HTTP GET type by passing the parameters to the **executeGet()** method as a Hash map: &lt;FUNCTION_INSTANCE&gt;.executeGet( params: HashMap&lt;String, Any&gt;, success: (String) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;String&gt;? **Parameters**: * **params**: The parameters to be passed to the function as a Hash map A sample code snippet is shown below: ZCatalystApp.getInstance().getFunctionInstance(2823000000097020).executeGet( //Replace this with your Function ID hashMapOf(), { println(">> GET function executed successfully - $it") }, { println(">> GET function failed to execute - $it") } ) <br> ### Execute a PUT function You can execute a function of the HTTP PUT type by passing the parameters to the **executePut()** method as a Hash map. You can pass the payload in the PUT request to this method as a Hash map argument as well: &lt;FUNCTION_INSTANCE&gt;.executePut( params: HashMap&lt;String, Any&gt;, body: HashMap&lt;String, Any&gt;, success: (String) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;String&gt;? **Parameters**: * **params**: The parameters to be passed to the function as a Hash map * **body**: The data payload to be passed as a Hash map A sample code snippet is shown below: val body = HashMap&lt;String, Any&gt;() body.put("ROWID", "2823000000098012") body.put("Category", "Important") //Add your keys and values to a hash map ZCatalystApp.getInstance().getFunctionInstance(2823000000097114).executePut( //Replace this with your Function ID hashMapOf(), body, { println(" &gt;&gt; PUT function executed successfully - $it") }, { println(" &gt;&gt; PUT function failed to execute - $it") } ) <br> ### Execute a POST function You can execute a function of the HTTP POST type by passing the parameters to the **executePOST()** method as a Hash map. You can pass the payload in the POST request to this method as a Hash map argument as well: &lt;FUNCTION_INSTANCE&gt;.executePost( params: HashMap&lt;String, Any&gt; , body: HashMap&lt;String, Any&gt; , success: (String) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;String&gt;? **Parameters**: * **params**: The parameters to be passed to the function as a Hash map * **body**: The data payload to be passed as a Hash map A sample code snippet is shown below: val body = HashMap&lt;String, Any&gt;() body.put("Title", "Data Migration Tasks") body.put("Category", "Official") //Add your keys and values to a hash map ZCatalystApp.getInstance().getFunctionInstance(2823000000097089).executePost( //Replace this with your Function ID hashMapOf(), body, { println(" &gt;&gt; POST function executed successfully - $it") }, { println(" &gt;&gt; POST function failed to execute - $it") } ) <br> ### Execute a DELETE function You can execute a function of the HTTP DELETE type by passing the parameters to the **executeDelete()** method as a Hash map. You can pass the payload in the DELETE request to this method as a Hash map argument as well: &lt;FUNCTION_INSTANCE&gt;.executeDelete( params: HashMap&lt;String, Any&gt;, success: (String) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;String&gt;? **Parameters**: * **params**: The parameters to be passed to the function as a Hash map A sample code snippet is shown below: val body = HashMap&lt;String, Any&gt;() ZCatalystApp.getInstance().getFunctionInstance(2823000000097089).executeDelete( //Replace this with your Function ID hashMapOf() { println(" >> DELETE function executed successfully - $it") }, { println(" >> DELETE function failed to execute - $it") } ) ## Flutter ### v2 -------------------------------------------------------------------------------- title: "Overview" description: "Catalyst Flutter SDK is a library that enables you to build native mobile apps for your Catalyst project with Android and iOS. The Catalyst Flutter SDK package contains a host of tools and functionalities that help you in developing dynamic and robust mobile apps, with powerful backends." last_updated: "2026-07-02T09:34:10.019Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/overview/" service: "All Services" related: - Mobile Device Management (/en/cloud-scale/help/mobile-device-management/introduction) - iOS SDK (/en/sdk/ios/v2/overview/) - Android SDK (/en/sdk/android/v2/overview/) - Web SDK (/en/sdk/web/v4/overview/) -------------------------------------------------------------------------------- # Flutter SDK ## Overview Flutter is an open-source framework by Google built on the Dart programming language that is used to develop natively-compiled, cross-platform applications for mobile, desktop, or any web browser from a single codebase. Flutter lets you choose a primary development target, which is a single primary OS that you build the app on. Catalyst Flutter SDK is a library that enables you to build mobile apps for your Catalyst project for the following supported mobile development targets of Flutter: * **Android** * **iOS** The Catalyst Flutter SDK package contains a host of tools and functionalities that help you in developing dynamic and robust mobile apps, with powerful backends. This enables you to handle several backend jobs of various Catalyst services and components. Flutter SDK provides support for all supported functionalities in Catalyst native Android SDK and iOS SDK. Flutter SDK primarily contains tools for Catalyst Cloud Scale and Catalyst Serverless functionalities, such as user authentication and redirection, Data Store and File Store functionalities, and function executions. The Catalyst entities like User, Data Store rows and columns are modelled as Dart Objects through data modelling. Flutter SDK wraps API requests to these components as method calls that you can avail. You can seamlessly integrate these Catalyst components in your mobile app by implementing the ready-made functionalities provided by the SDK package, and build on them easily. This saves you from investing time and effort into coding the backend from scratch, and helps you focus more on designing the user experience of the app. This documentation explains the entire process of setting up and building a mobile app with Catalyst Flutter SDK. You can learn about the configurations of the SDK package, and access sample code snippets for various operations in this documentation. You can also refer Flutter's official guide for Android and official guide for iOS for building apps with those development platforms as your primary targets. After you develop your Flutter app in Android or iOS, you can deploy a build of your app in either or both of those platforms, and host them on Catalyst. Refer to Flutter's official guide on deploying Android and deploying iOS apps. Note: You can host and distribute the app using Mobile Device Management. It also enables you to manage the app's versioning and end-users easily from the Catalyst console. You can also configure Push Notifications for your app if you build it in iOS and enable push notifications to be sent in your app. However, Push Notifications and Mobile Device Management are currently not available to Catalyst users accessing from the EU, AU, IN, or CA data centers. -------------------------------------------------------------------------------- title: "Class Hierarchy" description: "Class Hierarchy denotes the hierarchy of the classes in the Catalyst Flutter SDK." last_updated: "2026-07-02T09:34:10.020Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/class-hierarchy/" service: "All Services" related: - Authentication (/en/cloud-scale/help/mobile-device-management/introduction) - Data Store (/en/cloud-scale/help/data-store/introduction) - File Store (/en/cloud-scale/help/file-store/introduction) - Search (/en/cloud-scale/help/search-integration/introduction/) - Functions (/en/serverless/help/functions/introduction) - ZCQL (/en/cloud-scale/help/zcql/introduction) -------------------------------------------------------------------------------- # Class Hierarchy ### Introduction All Catalyst component entities in Flutter SDK are modelled as Dart objects. The members and methods of these component classes define the behavior of the component, and enable you to perform various operations in the component. Catalyst Flutter SDK package contains tools to work with the following Catalyst components and features from various Catalyst services: * **General:** Timezone * **Serverless:** Functions * **Cloud Scale:** Authentication, Data Store, File Store, Search, ZCQL The hierarchy of the Catalyst Flutter SDK component classes is depicted in the architecture diagram below. The **ZCatalystApp** is the base class of the Catalyst Flutter SDK. It comprises of several methods that enable you to initialize the SDK and access the various components of the Catalyst project. The other classes pertain to the respective components and their specific features supported by the SDK. <br> ### Instance Objects Each class available under ZCatalystApp contains functions to fetch the properties and data of its immediate child entities by executing API calls. However, it is not always effective to follow the class hierarchy all the way up to the top to fetch the data of a component at a lower level. This is because, such an action would involve API calls at every level and that will render the usage of your application inefficient. To avoid this situation and to make your app more cost-effective, Catalyst provides instance objects in every class. **Instance Objects** are present in each component class, which can be accessed through a **getInstance()** method. This method fetches a dummy object of the component, which can then be used to fetch methods of all its child entities. Therefore, to retrieve the properties of a Catalyst component, you must call the component's object with its getInstance() method. You must then use the same object to call the other methods defined by the component. This prevents unnecessary and excessive API calls. -------------------------------------------------------------------------------- title: "Exceptions" description: "This help page lists the common exceptions that can occur in your Catalyst Android and iOS app executions built on Flutter SDK" last_updated: "2026-07-02T09:34:10.020Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/exceptions/" service: "All Services" related: - Developer Tools (/en/getting-started/set-up-a-catalyst-project/developer-tools) -------------------------------------------------------------------------------- # Exceptions Exceptions are unexpected faulty behaviors that occur during the app execution. All errors and exceptions in Android or iOS apps built on Flutter SDK are handled by enumerations called ZCatalystException, defined in the Android SDK package. If an exception occurs in your mobile app, the following Dart properties of the exception are returned: * code: Unique identifier of the error * errorMsg: General description about the error * errorDetails: Additional information about the error * originalException: The actual exception that was thrown A list of common error codes thrown by the Catalyst Flutter SDK and their descriptions are given below: <table class="content-table"> <thead> <tr> <th class="w30p">Error Codes</th> <th class="w70p">Descriptions</th> </tr> </thead> <tbody> <tr> <td><strong>INITIALIZATION_ERROR</strong></td> <td>The SDK initialization failed</td> </tr> <tr> <td><strong>LOGIN_ERROR</strong></td> <td>The login process failed for the user</td> </tr> <tr> <td><strong>LOGOUT_FAILED</strong></td> <td>The logout process failed for the user</td> </tr> <tr> <td><strong>TOKEN_FETCH_ERROR</strong></td> <td>Failed to fetch the access token</td> </tr> <tr> <td><strong>RESPONSE_PARSE_ERROR</strong></td> <td>The received response is non-parseable</td> </tr> <tr> <td><strong>NO_NETWORK_AVAILABLE</strong></td> <td>Network connectivity is not available to make the API call</td> </tr> <tr> <td><strong>API_FAILED</strong></td> <td>The API invocation failed</td> </tr> <tr> <td><strong>INVALID_DATA</strong></td> <td>The data submitted is not of a valid type for the specific format</td> </tr> <tr> <td><strong>FILE_SIZE_EXCEEDED</strong></td> <td>The file size of an uploaded file exceeded the 100 MB file size limit</td> </tr> <tr> <td><strong>FUNCTION_EXECUTION_ERROR</strong></td> <td>Failed to execute the function</td> </tr> <tr> <td><strong>JSON_EXCEPTION</strong></td> <td>The body included in the request is not a valid JSON</td> </tr> <tr> <td><strong>INVALID_REQUEST</strong></td> <td>The request created is not valid</td> </tr> <tr> <td><strong>INVALID_FILE_INPUT</strong></td> <td>File submitted in the upload operation is not valid</td> </tr> <tr> <td><strong>INTERNAL_ERROR</strong></td> <td>An internal error occurred in the SDK</td> </tr> <tr> <td><strong>INVALID_CONFIGURATION</strong></td> <td>The SDK has not been initialized with the configuration required for the login. Reinitialize the SDK with the appropriate configuration for the login.</td> </tr> <tr> <td><strong>CUSTOM_LOGIN_DISABLED</strong></td> <td>The parameters required for third-party authentication could not be found. Make sure you have enabled third-party authentication for the project or re-download the property file.</td> </tr> </tbody> </table> <br> ### Exceptions in iOS Apps If an error occurs in your iOS app, the following properties of the error are returned: * **code**: Unique identifier of the error * **message**: General description about the error * **details**: Additional information about the error A list of common error codes thrown by the Catalyst iOS SDK and their descriptions are given below: <table class="content-table"> <thead> <tr> <th class="w30p">Error Codes</th> <th class="w70p">Descriptions</th> </tr> </thead> <tbody> <tr> <td><strong>INVALID_DATA</strong></td> <td>Data is in an invalid format</td> </tr> <tr> <td><strong>INTERNAL_ERROR</strong></td> <td>Error occurred due to internal problems, servers, or something else</td> </tr> <tr> <td><strong>RESPONSE_NIL</strong></td> <td>No response was returned from the server</td> </tr> <tr> <td><strong>TOKEN_FETCH_ERROR</strong></td> <td>Failed to fetch the access token</td> </tr> <tr> <td><strong>OAUTH_FETCH_ERROR</strong></td> <td>Error occurred while fetching the OAUTH token</td> </tr> <tr> <td><strong>UNABLE_TO_CONSTRUCT_URL</strong></td> <td>Error occurred while constructing the URL</td> </tr> <tr> <td><strong>PROCESSING_ERROR</strong></td> <td>Error occurred while processing the data</td> </tr> <tr> <td><strong>TYPECAST_ERROR</strong></td> <td>Error occurred while type-casting the data</td> </tr> <tr> <td><strong>NO_INTERNET_CONNECTION</strong></td> <td>Device is not connected to the internet</td> </tr> <tr> <td><strong>REQUEST_TIMEOUT</strong></td> <td>Response from the server did not arrive on time</td> </tr> <tr> <td><strong>NETWORK_CONNECTION_LOST</strong></td> <td>Device has lost its connection with the Internet</td> </tr> <tr> <td><strong>INITIALIZATION_ERROR</strong></td> <td>Error occurred while initializing the SDK</td> </tr> <tr> <td><strong>FUNCTION_EXECUTION_ERROR</strong></td> <td>Error occurred while executing a function</td> </tr> <tr> <td><strong>JSON_EXCEPTION</strong></td> <td>Error occurred while parsing the JSON</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Prerequisites" description: "This page defines the prerequisites you would need to fulfill to work with the Catalyst Flutter SDK." last_updated: "2026-07-02T09:34:10.020Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/prerequisites/" service: "All Services" related: - Create Catalyst Projects (/en/getting-started/catalyst-projects) -------------------------------------------------------------------------------- # Prerequisites Before you begin working with Catalyst Flutter SDK, you must ensure that you meet the following prerequisites: 1. **Create Catalyst project:** You must create a Catalyst project in the Catalyst console to host your mobile app in. Note: You can host one Android app and one iOS app in each project. The Android or iOS app can either be built natively with the Catalyst Android or iOS SDKs, or with the Flutter SDK. <br> 2. **Install IDE:** Depending on the development target you choose, you must install a supporting IDE or editor. You must install an IDE and its version that supports working with Flutter SDK, extensions, and plugins. The supported choices are: Android Studio, IntelliJ IDEA, and Visual Studio Code. Note: Flutter plugins will not work on IDEs other than these. For iOS apps, you can use one of these supported IDEs to develop the app, and then import it in Xcode to build and deploy the iOS app. The minimum supported environments for Android and iOS are specified in the following sections. <br> 3. **Install Flutter SDK:** You must install the following for your system's OS: * Flutter SDK * Any supporting or required libraries, plugins, or extensions based on your requirements * Platform-specific software and SDKs You can find help for installing Flutter based on your system OS here: Windows, macOS, Linux, ChromeOS. -------------------------------------------------------------------------------- title: "Get Started for Android" description: "To build your Flutter mobile app with Android as your primary development target, you will need to set up the environment required for developing an Android app in Catalyst. " last_updated: "2026-07-02T09:34:10.020Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/setup-for-android/" service: "All Services" related: - Environments (/en/deployment-and-billing/environments/introduction/#introduction) - Developer Tools (/en/deployment-and-billing/environments/introduction/#introduction) - Android SDK (/en/sdk/android/v2/overview/) -------------------------------------------------------------------------------- # Get Started for Android To build your Flutter mobile application with Android as your primary development target with the Flutter SDK, you will need to set up the environment required for developing an Android app in Catalyst. ### Prerequisites and Minimum Supported Environments Before you begin working with your Flutter app on the Android platform, you must ensure that you meet the following prerequisites and configure these minimum supported environments: * Create a Flutter project in Android Studio or any supported IDE * Ensure that your Android project meets these minimum supported environments: * OS- Android API Level 21 (Lollipop 4.4) * Kotlin- 1.3.20 * Gradle- 3.4.0 * Set up a device or an emulator in your IDE for running your app You can register your app with Catalyst and download the configuration file that is provided tailored to your app. You must include this configuration file in your Android app's structure, as it will contain the definitions of certain properties required for your app to function properly. <br> ## Setup After you meet the prerequisites for the Flutter and Android setups, follow these steps to set up and integrate the Android package with your app. ### Step 1: Register your Android app with Catalyst You can begin by creating a package for the Android app in Catalyst to register it, and downloading its unique configuration file. 1. Click the Settings icon from your Catalyst console in your project. 2. Navigate to **Developer Tools** under Project Settings in the settings menu, then click on the **Android** tile. Alternatively, you can click the **Add Package** button below. <br /> 3. Enter a package name that will identify it uniquely. Provide the URL to redirect the end-user to after they login to the app, as the Redirect URL. The values that you enter here will be auto-filled in the configuration file. Note: A package name will be uniquely associated with that OS. Therefore, you cannot create packages with the same name for both Android and iOS apps. You must provide unique values. Ensure that Android is selected as the OS type. <br /> 4. Click **Create** to create the mobile SDK package. 5. The console will then display a window from where you can download the configuration file. Click **Download** to download the file. The file will be downloaded with all the required configurations. The properties in this file are explained in the next step. <br /> ### Step 2: Import the Configuration File in Your Android Project Catalyst provides two work environments to develop and build your applications in: a **Development** sandbox and a live **Production** environment. You can learn more about them from the Environments help page. When you create a package in the console, only the development environment's configuration file will be available for download initially, irrespective of the environment you are working in currently. You can choose to download the configuration file from the console for any environment any time, once the package has been created. The configuration files of each environment would be named as: * Development: **app_configuration_development.properties** * Production: **app_configuration_production.properties** Based on the environment that you are working in, you must download and add the appropriate file to your Android app's structure. To obtain a production environment configuration file, you must deploy your project to production first and then download the file from the Developer Tools settings section. The configuration file must be added to the **assets** directory of your Android app module. Typically, the assets folder is created in the app/src/main directory. Refer to the official Android documentation for detailed help on Android app modules. <br /> #### Properties of the app_configuration_development.properties/ app_configuration_production.properties File The app configuration file defines the properties mentioned in the table below. All these values except the request headers are automatically populated, based on your project's details or the default standards. Note: You can refer to the links specified in the table, to know where you can obtain these values from. <table class="content-table"> <thead> <tr> <th class="w20p">Property</th> <th class="w20p">Data Type</th> <th class="w60p">Description</th> </tr> </thead> <tbody> <tr> <td>**clientID**</td> <td>String</td> <td>Unique identifier of your app client registered in Catalyst. This is received in the configuration file.</td> </tr> <tr> <td>**clientSecret**</td> <td>String</td> <td>Secret value generated for a specific clientID, which is passed along with the API hits. This is received in the configuration file.</td> </tr> <tr> <td>**portalID**</td> <td>String</td> <td>Unique identifier received in the configuration file</td> </tr> <tr> <td>**redirectUrl**</td> <td>String</td> <td>The callback URL of your app that you provided while creating a package for it in the console, in the previous step</td> </tr> <tr> <td>**projectID**</td> <td>Long</td> <td>The unique ID of your Catalyst Project</td> </tr> <tr> <td>**apiBaseURL**</td> <td>String</td> <td>The URL of the Catalyst server through which the internal API is called. You must use the appropriate URL (development URL or production URL), based on the environment you are working in.</td> </tr> <tr> <td>**oauthScopes**</td> <td>String</td> <td>The scopes that would be used by the app to access the Catalyst APIs from your project. You can find the available OAuth scopes here.</td> </tr> <tr> <td>**requestHeaders**</td> <td>String</td> <td>The headers that would be sent by the client in the HTTP requests<br /> The values of the request headers must be individual key-value pairs, separated by commas like: requestHeaders=key1:value1, key2:value2</td> </tr> <tr> <td>**serverTLD**</td> <td>String</td> <td>The top level domain of the data server<br /> Acceptable values: **AU**, **CN**, **COM**, **EU** and **IN**</td> </tr> <tr> <td>**printStackTrace**</td> <td>Boolean</td> <td>Enables you to obtain a detailed trace of the logs, if the **printStackTrace** value is set as 'true'. The default value is 'false'.</td> </tr> <tr> <td>**minLogLevel**</td> <td>String</td> <td>Enables you to set the logging preferences for the app<br /> Acceptable values: **warnings**, **errors**, **information**, **debug**, **ALL**</td> </tr> <tr> <td>**httpRequestMode**</td> <td>String</td> <td>Defines whether the HTTP requests are synchronous or asynchronous<br /> Acceptable values: **SYNC**, **ASYNC**<br /> Default value: ASYNC</td> </tr> <tr> <td>**connectTimeOut<br>InSec**</td> <td>Long</td> <td>The connection time out value (in seconds) of the HTTP request sent from the SDK<br /> That is, if a response for the client request isn't received from the server within this time, the connection will be terminated</td> </tr> <tr> <td>**readTimeOutInSec**</td> <td>Long</td> <td>The read time out value (in seconds) of the HTTP request sent from the SDK<br /> That is, if data isn't received from the server within this time, the connection will be terminated</td> </tr> <tr> <td>**writeTimeOutInSec**</td> <td>Long</td> <td>The write time out value (in seconds) of the HTTP request sent from the SDK<br /> That is, if the request fails to write or send the request data to the server within this time, the connection will be terminated</td> </tr> <tr> <td>**JWTClientID**</td> <td>String</td> <td>The client ID property of the custom server token (JSON Web Token token) generated for third-party authentication to be passed to the client </td> </tr> <tr> <td>**JWTClientSecret**</td> <td>String</td> <td>The client secret property of the custom server token (JSON Web Token token) generated for third-party authentication to be passed to the client </td> </tr> </tbody> </table> Note:<br /> * If the values of the **clientID**, **clientSecret**, **projectID**, or **portalID** are modified in the configuration file, it will affect the functioning of the SDK and your Android app. If you wish to change any of these configurations, you can create a new package for the required project from the Developer Tools section and download a new configuration file for the appropriate environment, and add it to the assets directory in your app's structure. * The values of the properties that are populated in the downloaded configurations file can be dynamically accessed using the **ZCatalystApp.configs** object. <br /> ### Step 3: Configure App Login Redirection When a user logs in to your app successfully, they will be redirected to your app's home screen. This user login and redirection is handled by the Catalyst SDK. To ensure that this redirection is handled properly, include the URL schema given below in the strings.xml file of your Android app: &lt;string name="url_scheme"&gt;{redirection_url}&lt;/string&gt; The strings.xml file is automatically created when you create the Android project. You can find it by navigating to app/src/main/res/values in your app's structure. The file will already contain the string definition for your app name. Include this string along with it. You must pass the **Redirection URL** that you configured while creating the package for your app in Catalyst, in place of redirection_url in this code. <br /> ### Step 4: Set Required Permissions Catalyst SDK requires the following app permissions to be enabled, to ensure that your app functions seamlessly and to provide a smooth user experience: * **INTERNET**: To execute Catalyst APIs * **ACCESS_NETWORK_STATE**: To handle network failures To enable these permissions, you must declare them in the **AndroidManifest.xml** file, as shown below: &lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/&gt; &lt;uses-permission android:name="android.permission.INTERNET"/&gt; You can find the the AndroidManifest.xml file by navigating to app/src/main in your app's structure. <br /> The setup for building a Flutter app with Android as the primary development target is now ready. You can now proceed to implementing Catalyst Flutter SDK in your app. -------------------------------------------------------------------------------- title: "Get Started for iOS" description: "To build your Flutter mobile app with iOS as your primary development target, you will need to set up the environment required for developing an iOS app in Catalyst." last_updated: "2026-07-02T09:34:10.020Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/setup-for-ios/" service: "All Services" related: - Environments (/en/deployment-and-billing/environments/introduction/#introduction) - Developer Tools (/en/getting-started/set-up-a-catalyst-project/developer-tools) - iOS SDK (/en/sdk/ios/v2/overview/) -------------------------------------------------------------------------------- # Get Started for iOS To build your Flutter mobile application with iOS as your primary development target with the Flutter SDK, you will need to set up the environment required for developing an iOS app in Catalyst. ### Prerequisites and Minimum Supported Environments Before you begin working with your Flutter app on the iOS platform, you must ensure that you meet the following prerequisites and configure these minimum supported environments: * Create a Flutter project in any supported IDE or from the terminal * Ensure that your iOS project meets these minimum supported environments: * CocoaPods * iOS- 9 or later * Swift- 4 or later * Set up a device or an emulator in your IDE for running your app You can now register your app with Catalyst and download the configuration file that is provided tailored to your app. You must include this configuration file in your iOS app's structure, as it will contain the definitions of certain properties required for your app to function properly. <br> ## Setup After you create the Catalyst project and the iOS project, you must follow these steps to set up and integrate the iOS SDK package with your app. ### Step 1: Register your iOS app with Catalyst You can begin by creating a package for the iOS app in Catalyst to register it, and downloading its unique configuration file. 1. Click the **Settings icon** from your Catalyst console in your project. 2. Navigate to **Developer Tools** under Project Settings in the settings menu, then click on the **iOS** tile. Alternatively, you can click the **Add Package** button below. 3. Enter a package name that will identify it uniquely. Provide the URL to redirect the end-user to after they login to the app, as the Redirect URL. The values that you enter here will be auto-filled in the configuration file. Note: A package name will be uniquely associated with that OS. Therefore, you cannot create packages with the same name for both Android and iOS apps. You must provide unique values. Ensure that iOS is selected as the OS type. 4. Click **Create** to create the mobile SDK package. 5. The console will then display a window from where you can download the configuration file. Click **Download** to download the file. The file will be downloaded with all the required configurations. The properties in this file are explained in the next step. <br> ### Step 2: Import the Configuration File in Your iOS Project Catalyst provides two work environments to develop and build your applications in: a **Development** sandbox and a live **Production** environment. You can learn more about them from the Environments help page. When you create a package in the console, only the development environment's configuration file will be available for download initially, irrespective of the environment you are working in currently. You can choose to download the configuration file from the console for any environment any time, once the package has been created. The configuration files of each environment would be named as: * Development: **AppConfigurationDevelopment.plist** * Production: **AppConfigurationProduction.plist** Based on the environment that you are working in, you must download and add the appropriate file to **Targets** -> **Runner** your iOS project. To obtain a production environment configuration file, you must deploy your project to production first and then download the file from the Developer Tools settings section. The configuration file must be added to **Targets** -> **Runner** of your iOS project. Refer to the official iOS documentation for detailed help on iOS project structure. #### Properties of the AppConfigurationDevelopment.plist/ AppConfigurationProduction.plist File The app configuration file defines the properties mentioned in the table below. All these values except the request headers are automatically populated, based on your project's details or the default standards. Note: You can refer to the links specified in the table, to know where you can obtain these values from. <table class="content-table"> <thead> <tr> <th class="w20p">Property</th> <th class="w20p">Data Type</th> <th class="w20p">Description</th> </tr> </thead> <tbody> <tr> <td>**ClientID**</td> <td>String</td> <td>Unique identifier of your app client registered in Catalyst. This is received in the configuration file.</td> </tr> <tr> <td>**ClientSecretID**</td> <td>String</td> <td>Secret value generated for a specific clientID, which is passed along with the API hits. This is received in the configuration file.</td> </tr> <tr> <td>**PortalID**</td> <td>String</td> <td>Unique identifier received in the configuration file</td> </tr> <tr> <td>**RedirectURLScheme**</td> <td>String</td> <td>The callback URL of your app that you provided while creating a package for it in the console, in the previous step</td> </tr> <tr> <td>**ProjectID**</td> <td>Long</td> <td>The unique ID of your Catalyst Project</td> </tr> <tr> <td>**APIBaseURL**</td> <td>String</td> <td>The URL of the Catalyst server through which the internal API is called. You must use the appropriate URL (development URL or production URL), based on the environment you are working in.</td> </tr> <tr> <td>**APIVersion**</td> <td>String</td> <td>Version of the API</td> </tr> <tr> <td>**OauthScopes**</td> <td>String</td> <td>The scopes that would be used by the app to access the Catalyst APIs from your project. You can find the available OAuth scopes here.</td> </tr> <tr> <td>**RequestHeaders**</td> <td>String</td> <td>The headers that would be sent by the client in the HTTP requests<br /> The values of the request headers must be individual key-value pairs, separated by commas like: requestHeaders=key1:value1, key2:value2</td> </tr> <tr> <td>**ServerTLD**</td> <td>String</td> <td>The top level domain of the data server<br /> Acceptable values: **AU**, **CN**, **COM**, **EU** and **IN**</td> </tr> <tr> <td>**MinLogLevel**</td> <td>String</td> <td>Enables you to set the logging preferences for the app<br /> Acceptable values: **warnings**, **errors**, **information**, **debug**, **ALL**</td> </tr> <tr> <td>**TurnLoggerOn**</td> <td>Boolean</td> <td>Turns the logger on based on the value<br /> Acceptable values: **true**, **false**</td> </tr> <tr> <td>**RequestTimeOut**</td> <td>Double</td> <td>The time duration (in seconds) a task must wait for additional data to arrive before giving up</td> </tr> <tr> <td>**JWTClientID**</td> <td>String</td> <td>The client ID property of the custom server token (JSON Web Token token) generated for third-party authentication to be passed to the client </td> </tr> <tr> <td>**JWTClientSecret**</td> <td>String</td> <td>The client secret property of the custom server token (JSON Web Token token) generated for third-party authentication to be passed to the client </td> </tr> </tbody> </table> Note:<br /> * If the values of the **clientID**, **clientSecretID**, **projectID**, or **portalID** are modified in the configuration file, it will affect the functioning of the SDK and your iOS app. If you wish to change any of these configurations, you can create a new package for the required project from the Developer Tools section and download a new configuration file for the appropriate environment, and add it to your iOS project. * The values of the properties that are populated in the downloaded configurations file can be dynamically accessed using the **ZCatalystApp.configs** object. <br> ### Step 3: Configure App Login Redirection When a user logs in to your app successfully, they will be redirected to your app's home screen. This user login and redirection is handled by the Catalyst SDK. To ensure that this redirection is handled properly, include the key given below with the same configurations in the **info.plist** file of your iOS project: Key - **URL Types** -----> **URL Schemes**<br /> Type - String<br /> Value - The Redirect URL that you configured while creating the package for your app in Catalyst <br> The setup for building a Flutter app with iOS as the primary development target is now ready. You can now proceed to implementing Catalyst Flutter SDK in your app. -------------------------------------------------------------------------------- title: "Implement Flutter SDK" description: "After setting up the working environment for developing the Flutter app in Android or iOS, you must install, import, and initialize Flutter SDK in your project." last_updated: "2026-07-02T09:34:10.047Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/implement-flutter-sdk/" service: "All Services" related: - Environments (/en/deployment-and-billing/environments/introduction/#introduction) -------------------------------------------------------------------------------- # Implement Flutter SDK in your Project After setting up the working environment for developing the Flutter app primarily in Android or iOS and creating the Flutter project in the IDE, you can now proceed to implement the Catalyst Flutter SDK in your Flutter project. When you create a Flutter project, a basic pubspec.yaml file is generated and located at the top of the project tree. This file contains the metadata about the project and specifies the dependencies that the project requires. ### Install the SDK You will need to add the following configurations to implement the Catalyst Flutter SDK to the pubspec.yaml of your Flutter project: dependencies: zcatalyst_sdk: ^2.2.1 To install the Flutter SDK in your project, you will need to execute the following command from your IDE's terminal: flutter pub get Note: You can also get this package in the following ways in your IDE: * VS Code: Click **Get Packages** located in right side of the action ribbon at the top of pubspec.yaml indicated by the Download icon. * Android Studio/IntelliJ: Click **Pub get** in the action ribbon at the top of pubspec.yaml. <br> #### Alternate Method to install the SDK: You can execute the following command directly from your IDE's terminal in your Flutter project's directory to install the Flutter SDK, instead of adding the configurations in the pubspec.yaml file as mentioned above: flutter pub add zcatalyst_sdk <br> ### Import the SDK To import the SDK in the Dart code, you will need to add the following line of code in the the lib/main.dart file in your Flutter project directory: import 'package:zcatalyst_sdk/zcatalyst_sdk.dart'; ### Initialize the SDK You must initialize the Catalyst SDK to enable the functioning of the methods and features defined in the SDK package. Therefore, before you configure your app to consume the SDK methods, you must initialize the SDK in your main() function using the ZCatalystApp.init() method in any one of the following methods: #### 1. Using the Catalyst Configuration File: The configuration function that you downloaded previously for Android or iOS will indicate the environment of the app. Similar to including the appropriate configuration file (app_configuration_development.properties / app_configuration_production.properties for Android and AppConfigurationDevelopment.plist / AppConfigurationProduction.plist for iOS) based on the environment in your app's project, you must initialize the SDK for the appropriate environment. <br> **By specifying the environment:** In this method, you must set the required configuration and specify the environment of your app as either DEVELOPMENT or PRODUCTION, and pass it to the init() method through the ZCatalystApp class as shown below: ZCatalystApp.init({ ZCatalystEnvironment? environment, }); <br> A sample code snippet is shown below: void main() async { try { await ZCatalystApp.init(environment: ZCatalystEnvironment.DEVELOPMENT); } on ZCatalystException catch (ex) { print('Initialized Failed: ${ex.toString()}'); } } <br> **Without specifying the environment:** If the environment is not specified in the SDK initialization, it would be considered as PRODUCTION by default. Therefore, if your app is operating in the Production environment, you can initialize the SDK directly in the following way: await ZCatalystApp.init(); <br> A sample code snippet is shown below: void main() async { try { await ZCatalystApp.init(); } on ZCatalystException catch (ex) { print('Initialized Failed: ${ex.toString()}'); } } Note: If you make any changes to the Android or iOS configuration file, you must reinitialize the SDK. <br> #### 2. By passing the custom SDK Configuration Object: Alternatively, you can initialize the Flutter SDK by building a custom ZCatalystSDKConfigs object that you can pass using the ZCatalystSDKConfigsBuilder class. **ZCatalystSDKConfigs Object** The ZCatalystSDKConfigsBuilder class has the following configuration properties: <table class="content-table"> <thead> <tr> <th class="w20p">Properties</th> <th class="w20p">Datatype</th> <th class="w20p">Description</th> </tr> </thead> <tbody> <tr> <td>**environment**</td> <td>ZCatalystEnvironment</td> <td>The environment under which the app is currently running</td> </tr> <tr> <td>**apiBaseURL**</td> <td>String</td> <td>The URL of the Catalyst server through which the internal API is called. You must use the appropriate URL (development URL or production URL), based on the environment you are working in.</td> </tr> <tr> <td>**clientID**</td> <td>String</td> <td>Unique identifier of your app client registered in Catalyst. This is received in the configuration file.</td> </tr> <tr> <td>**clientSecret**</td> <td>String</td> <td>Secret value generated for a specific clientID, which is passed along with the API hits. This is received in the configuration file. </td> </tr> <tr> <td>**projectID**</td> <td>int</td> <td>The unique ID of your Catalyst Project</td> </tr> <tr> <td>**redirectURL**</td> <td>String</td> <td>The callback URL of your app that you provided while creating a package for Android or iOS in the console</td> </tr> <tr> <td>**portalID**</td> <td>String</td> <td>Unique identifier received in the configuration file while setting up the Android or iOS app</td> </tr> <tr> <td>**oauthScopes**</td> <td>String</td> <td>The scopes that would be used by the app to access the Catalyst APIs from your project. You can find the available OAuth scopes here.</td> </tr> <tr> <td>**JWTClientID**</td> <td>String</td> <td>The client ID property of the custom server token (JSON Web Token token) generated for third-party authentication to be passed to the client </td> </tr> <tr> <td>**JWTClientSecret**</td> <td>String</td> <td>The client secret property of the custom server token (JSON Web Token token) generated for third-party authentication to be passed to the client </td> </tr> </tbody> </table> <br> This ZCatalystSDKConfigs object can now be passed using the ZCatalystSDKConfigsBuilder class as shown below: ZCatalystSDKConfigs sdkConfigs = ZCatalystSDKConfigsBuilder( apiBaseURL: 'https://api.catalyst.zoho.com', accountsPortalBaseURL: 'https://accounts.zoho.com', clientID: '100****************************FX', clientSecret: '19ed***************************2s', environment: ZCatalystEnvironment.DEVELOPMENT, oauthScopes: 'ZOHOCATALYST.tables.rows.ALL, ZOHOCATALYST.tables.columns.ALL', portalID: '10******79', projectID: 28*******90, redirectURL: '*****') .setUserAgent("ZCatalyst Sample App") .build(); try { await ZCatalystApp.init(sdkConfigs: sdkConfigs); } on ZCatalystException catch (ex) { print('Initialized Failed: ${ex.toString()}'); } If the SDK is successfully initialized, the app will invoke the component methods and function as intended. #### Cloud Scale ##### Authentication -------------------------------------------------------------------------------- title: "Create User Instance" description: "You can create a new user instance to perform user operations in your Flutter app." last_updated: "2026-07-02T09:34:10.047Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/authentication/create-user-instance/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Users (/en/cloud-scale/help/authentication/user-management/users/introduction/) - Add New User - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) -------------------------------------------------------------------------------- # Authentication Catalyst Authentication features enable you to manage the user authentication of your Catalyst app, add users, and configure their user accounts. ## Create a New User Instance You can create a new user instance, and enable the methods defined in this class to access the instance object. This will prevent unnecessary server calls. You must pass the user's details to the **newUser()** method, as shown in the code syntax below. You must pass the user's email address and first name mandatorily to create the instance successfully. ZCatalystUserDelegate newUser({ required String firstName, required String emailId, String? lastName, ZCatalystRole? role, }) **Parameters**: * **lastName** (Mandatory): The last name of the new user. * **email** (Mandatory): Email address of the user to which the invitation mail will be sent. * **lastName**: The last name of the new user. * **role**: The role the user must be assigned to. A sample code snippet is shown below: ZCatalystUserDelegate newUser = ZCatalystApp.getInstance().newUser( firstName: 'Patricia', emailId: 'p.boyle@zylker.com', lastname: 'Boyle', role: Admin, ); -------------------------------------------------------------------------------- title: "User Signup" description: "You can add new users to your Flutter application through signup" last_updated: "2026-07-02T09:34:10.047Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/authentication/user-signup/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Users (/en/cloud-scale/help/authentication/user-management/users/introduction/) - Authentication - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) -------------------------------------------------------------------------------- # User Signup You can add a new user to your Catalyst app by calling the **signUp()** method. You must pass the user instance defined here as the argument to the signup() method. The code syntax for user signup is given below: Future<(APIResponse, ZCatalystUser)> signUp(ZCatalystUserDelegate newUser) **Parameters**: * **newUser**: The user instance created before this operation A sample code snippet is shown below: ZCatalystApp.getInstance().newUser( firstName: 'Patricia', emailId: 'p.boyle@zylker.com', ); try { var (response, user) = await ZCatalystApp.getInstance().signUp(newUser); print('User ID: ${user.id}') } on ZCatalystException catch (ex) { print(ex.toString()); } -------------------------------------------------------------------------------- title: "User Login" description: "You can display the login page to the end user of your Catalyst Flutter app." last_updated: "2026-07-02T09:34:10.047Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/authentication/user-login/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Users (/en/cloud-scale/help/authentication/user-management/users/introduction/) - Authentication - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) -------------------------------------------------------------------------------- # User Login You can display the login page to the end user of your Catalyst Flutter app using the **login()** method. This will be displayed when the user is logged out of the app. If the login is successful, the user will be able to access the app. A sample code snippet is shown below: await ZCatalystApp.getInstance().login() -------------------------------------------------------------------------------- title: "User Logout" description: "You can log an app user out from the Catalyst Flutter app." last_updated: "2026-07-02T09:34:10.047Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/authentication/user-logout/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Users (/en/cloud-scale/help/authentication/user-management/users/introduction/) - Logout User - API (/en/api/code-reference/cloud-scale/authentication/sign-out-user/#SignOutUser) -------------------------------------------------------------------------------- # User Logout The logout() method can log an app user out from the Catalyst Flutter app. A sample code snippet is shown below: await ZCatalystApp.getInstance().logout() -------------------------------------------------------------------------------- title: "User Authentication Status" description: "You can find the authentication status of a Flutter app user easily." last_updated: "2026-07-02T09:34:10.047Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/authentication/user-authentication-status/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Authentication - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) -------------------------------------------------------------------------------- # User Authentication Status You can find the authentication status of an app user using the isUserLoggedIn() method. This will return a boolean response as to the user's login status. The code syntax for user logout is given below: bool isUserLoggedIn = await ZCatalystApp.getInstance().isUserLoggedIn(); //Actions to be executed upon successfully fetching the status A sample code snippet is shown below: bool isUserLoggedIn = await ZCatalystApp.getInstance().isUserLoggedIn(); print(isUserLoggedIn); //prints "true" or "false" -------------------------------------------------------------------------------- title: "Get Current User" description: "You can obtain the details of the current end user of your Flutter application." last_updated: "2026-07-02T09:34:10.047Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/authentication/get-current-user/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Users (/en/cloud-scale/help/authentication/user-management/users/introduction/) - Add New User - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) -------------------------------------------------------------------------------- # Get Current User You can obtain the details of the current end user of your application by calling the getCurrentUser() method. Upon successful execution, this method will return the current user object. You can fetch the user's details that are registered in Catalyst, such as their first name, last name, or email address, using this. The code syntax for obtaining the current user is given below: ZCatalystApp.getInstance().getCurrentUser( void Function() onSuccess, void Function(ZCatalystException) onFailed ) A sample code snippet is shown below: try { var (response, user) = await app.getCurrentUser(); print('User ID: ${user.id}') } on ZCatalystException catch (ex) { print(ex.toString()); } -------------------------------------------------------------------------------- title: "Third-Party Authentication" description: "You can implement a third-party authentication service of your preference in your Flutter app." last_updated: "2026-07-02T09:34:10.047Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/authentication/third-party-authentication/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Third-Party Authentication (/en/cloud-scale/help/authentication/third-party-authentication/introduction/) - Generate Custom Server Token- Java SDK (/en/sdk/java/v1/cloud-scale/authentication/third-party-server-token/) - Generate Custom Server Token- Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/authentication/third-party-server-token/) - Generate Custom Server Token- Python SDK (/en/sdk/python/v1/cloud-scale/authentication/third-party-server-token/) - Authentication - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) -------------------------------------------------------------------------------- # Third-Party Authentication Cloud Scale's Authentication 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 implement third-party authentication in your mobile app, you will need to perform the steps described below. ### 1. Configure the Third-Party Authentication Service Before you associate a third-party authentication with your Catalyst application, you must ensure that you have first completed handling the third-party logic in the external service. You can configure the authentication with any third-party of your choice. <br> ### 2. Set up the Third-Party Authentication Type in Catalyst You must now set up the third-party authentication that you configured in Catalyst by navigating to the Authentication component in Cloud Scale in the Catalyst console. The steps are explained in Set Up Third-party Authentication in Catalyst help page. This process involves the following steps that you must perform: **i. Generate a custom server token:** 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 will need to code in Java, Node.js, or Python. This function will generate a Catalyst server-side token **jwtToken** or **customToken** which will then be passed to client-side (Flutter app). The Catalyst console provides readymade scripts to generate the customToken. You can incorporate this script in the server-side function you write, to return the customToken. Note: To enable a third-party authentication in your Catalyst application, you must ensure that you have enabled Public Signup in the console. **ii. Skip the client-side configuration:** You can skip the client-side configuration in the console for now, as we will incorporate the custom server token in the client logic at the end to complete the login process. **iii. Configure additional settings and finish the setup:** Configure Customer User Validation or Authorized Domains as a part of Whitelisting and finish the set up. Catalyst will display a confirmation that a third-party authentication service has been enabled and your application’s authentication is being handled by it. <br> ### 3. Re-Import the Configuration File in your Flutter Project After you enable the third-party authentication for your Android app from the Catalyst console, you will need to download and import the properties file in your Flutter project again, based on the platform that you are developing your app in and your app's environment. That is, if you are developing an Android app, download the app_configuration_development or the app_configuration_production file, and if you are developing an iOS app, download the AppConfigurationDevelopment.plist or AppConfigurationProduction.plist file. This is because this file will now include two additional properties: JWTClientID and JWTClientSecret. These properties will need to be passed in the next step, after you re-initialize the SDK. To re-download the configuration file: 1. Navigate to **Settings**, then **Developer Tools** in your Catalyst console of your project. You will find your existing Android or iOS package under the Mobile SDK section. Open the required package. <br> 2. Click on the required environment tab in the pop-up, then click **Download** to download the configuration file. <br> You can now re-import this downloaded configuration file by following the steps mentioned here for Android and here for iOS. Note: You need not perform the steps 3 to 5 given in the Android SDK setup or steps 3, 4, 6 given in the iOS SDK setup help pages again. <br> ### 4. Re-Initialize the Flutter SDK You must now re-initialize the SDK to include the newly-downloaded properties in your code. Re-initializing the SDK can also be done in two ways similar to initializing the SDK for the first time: Using the Catalyst configuration file or By passing the custom SDK Configuration Object. However, this will include additional SDK methods to confirm third-party authentication. #### 1. Using the Catalyst Configuration File You can do this by specifying the environment of the project, or without specifying the environment where the production environment is considered the default. **By specifying the environment:** You can re-initialize the SDK as shown below. You can pass the values for the Environment as either DEVELOPMENT or PRODUCTION based on the environment the app is operating in. The isCustomLogin indicates a boolean value that is set for the presence of a third-party authentication. These are passed to the init() method through the ZCatalystApp class as shown below: ZCatalystApp.init({ ZCatalystEnvironment? environment, bool isCustomLogin = false }); A sample code snippet for this operation is given below: void main() async { try { await ZCatalystApp.init( environment: ZCatalystEnvironment.DEVELOPMENT, isCustomLogin: true ); } on ZCatalystException catch (ex) { print('Initialized Failed: ${ex.toString()}'); } } <br> **Without specifying the environment:** If the Environment is not specified in the SDK initialization, it would be considered as PRODUCTION by default. Therefore, if your app is operating in the Production environment, you can initialize the SDK directly in the following way: ZCatalystApp.init({ bool isCustomLogin = false }); A sample code snippet for this operation is given below: void main() async { try { await ZCatalystApp.init( isCustomLogin: true ); } on ZCatalystException catch (ex) { print('Initialized Failed: ${ex.toString()}'); } } <br> #### 2. By passing the custom SDK Configuration Object: Alternatively, you can re-initialize the Flutter SDK by building a custom ZCatalystSDKConfigs object that you can pass using the ZCatalystSDKConfigsBuilder class. You can refer here for the properties included in this object. This method also lets you re-initialize the SDK by specifying the JWTClientID and JWTClientSecret properties obtained from the newly-downloaded configuration file through with ZCatalystSDKConfigsBuilder. This can be done in the following way: ZCatalystApp.init({ ZCatalystSDKConfigs? sdkConfigs, ZCatalystEnvironment? environment, bool isCustomLogin = true }); A sample code snippet is given below: ZCatalystSDKConfigs configs = ZCatalystSDKConfigsBuilder.customLogin( accountsPortalBaseURL: "https://accounts.zohoportal.com/", apiBaseURL: "https://api.catalyst.zoho.com/", environment: ZCatalystEnvironment.DEVELOPMENT, jwtClientID: "100****************************FX", jwtClientSecret: "19ed***************************2s", oauthScopes: "ZOHOCATALYST.tables.rows.ALL, ZOHOCATALYST.tables.columns.ALL", portalID: "10******79", projectID:28*****90 , redirectURL: "*****" ); <br> ### 5. Code the User Login Logic for the Third-Party Authentication You can now complete the setup by handling the login logic of the third-party authentication in your mobile app. You must pass the customToken or jwtToken generated in [step 2](/en/sdk/flutter/v2/cloud-scale/authentication/third-party-authentication/#2-set-up-the-third-party-authentication-type-in-catalyst) to the handleCustomLogin() method as shown below: Future&lt;void&gt; handleCustomLogin(String jwtToken) A sample code snippet is given below: await ZCatalystApp.getInstance().handleCustomLogin("123xxxxxxxx"); 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. ##### Data Store -------------------------------------------------------------------------------- title: "Create a New Data Store Instance" description: "You can create an instance of the Data Store to access the Data Store features in Flutter SDK." last_updated: "2026-07-02T09:34:10.048Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/data-store/create-data-store-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Data Store - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) -------------------------------------------------------------------------------- # Data Store Catalyst Data Store is a cloud-based relational database management system that stores the persistent data of your application through tables. ### Create a New Data Store Instance To access the Data Store of a Catalyst project, you can create an instance of the Data Store, and enable the methods defined in this class to access the instance object. This will prevent unnecessary server calls. You must call the **getDataStoreInstance()** method as shown in the code syntax below, to obtain the Data Store instance successfully: ZCatalystDataStore dataStore = ZCatalystApp.getInstance().getDataStoreInstance(); -------------------------------------------------------------------------------- title: "Create a New Table Instance" description: "You can create a table instance for a particular table in the Data Store, and enable the methods defined in this class to access the instance object." last_updated: "2026-07-02T09:34:10.048Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/data-store/create-table-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Tables (/en/cloud-scale/help/data-store/tables) - Data Store - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Create a New Table Instance You can create a table instance for a particular table in the Data Store, and enable the methods defined in this class to access the instance object. This prevents unnecessary server calls. A table instance can be created by calling the **getTableInstance()** method in either of the two ways mentioned below. The &lt;DATA_STORE_INSTANCE&gt; used in both the methods is the instance defined in the Data Store Instance page. ### Create a Table Instance by its ID You can create a table instance by passing the particular table ID as the argument to the getTableInstance() method, as shown in the code syntax below: ZCatalystTable &lt;DATA_STORE_INSTANCE&gt;.getTableInstance(String identifier) **Parameters**: * **identifier**: The unique table ID of the specific table the instance needs to be created for A sample code snippet is shown below: var table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("2823000000017011") <br> ### Create a Table Instance by its Name Alternatively, you can create a table instance by passing the particular table's name as the argument to the **getTableInstance()** method, as shown in the code syntax below: &lt;DATA_STORE_INSTANCE&gt;.getTableInstance( String identifier ) **Parameters**: * **identifier**: The name of the specific table the instance needs to be created for A sample code snippet is shown below: var table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance(identifier: "Products"); -------------------------------------------------------------------------------- title: "Get Column Metadata" description: "You can obtain the metadata of all columns or single specific column of a Data Store table of the given instance by its ID or name." last_updated: "2026-07-02T09:34:10.048Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/data-store/get-column-metadata/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Columns (/en/cloud-scale/help/data-store/columns) - Get Metadata of Coulumns - API (/en/api/code-reference/cloud-scale/data-store/get-all-columns-metadata/#GetAllColumnsMetadata) -------------------------------------------------------------------------------- # Get Column Metadata ### Get the Metadata of a Specific Column You can obtain the metadata of a single specific column of a Data Store table of the given instance by calling the **getColumn()** method. If the operation is successful, this method can return the metadata of the column, such as its data type, default value, or maximum length, or whether it is read only, unique, or mandatory. The metadata of a specific column can be fetched in two different ways. The &lt;TABLE_INSTANCE&gt; used in both the methods is the instance defined in the Table Instance page. #### i. Get a Column by its ID You can retrieve a specific column's metadata by passing the column ID as the argument to the getColumn() method in the String format, as shown in the code structure below: Future<(APIResponse, ZCatalystColumn)> &lt;TABLE_INSTANCE&gt;.getColumn(String identifier) **Parameters**: * **identifier**: The unique Column ID of the particular column that needs to be retrieved A sample code snippet is shown below: try { var (response, column) = await app .getDataStoreInstance() .getTableInstance('Projects') .getColumn('1624000000139101'); print(column.id) } on ZCatalystException catch (ex) { print(ex.toString()); } #### ii. Get a Column by its Name You can retrieve a specific column's metadata by passing the column's name as the argument to the getColumn() method, as shown in the code syntax below: Future<(APIResponse, ZCatalystColumn)> &lt;TABLE_INSTANCE&gt;.getColumn(String identifier) **Parameters**: * **identifier**: The name of the particular column that needs to be retrieved A sample code snippet is shown below: try { var (response, column) = await app .getDataStoreInstance() .getTableInstance('Projects') .getColumn('Category'); print(column.id); } on ZCatalystException catch (ex) { print(ex.toString()); } <br> ### Get the Metadata of all Columns You can retrieve the metadata of all the columns of a table of the given instance, using the **getColumns()** method, as shown in the code syntax below. If the operation is successful, this method can return the metadata of all the columns of the specific table. The &lt;TABLE_INSTANCE&gt; used in the code below is the instance defined in the Table Instance page. Future<(APIResponse, List&lt;ZCatalystColumn&gt;)> &lt;TABLE_INSTANCE&gt;.getColumns() A sample code snippet is shown below: try { var (response, columns) = await app .getDataStoreInstance() .getTableInstance('Projects') .getColumns(); for (var column in columns) { print(column.name); } } on ZCatalystException catch (ex) { print(ex.toString()); } -------------------------------------------------------------------------------- title: "Get Rows" description: "You can retrieve a single specific row or all rows from a Data Store table of the given instance." last_updated: "2026-07-02T09:34:10.048Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/data-store/get-rows/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Get All Rows - API (/en/api/code-reference/cloud-scale/data-store/get-all-rows/#GetAllRows) -------------------------------------------------------------------------------- # Get Rows ### Get a Specific Row You can retrieve a single specific row from a Data Store table of the given instance using the **getRow()** method. This is done by passing the unique ROWID of the row as the argument to this method, as shown in the code syntax below. The &lt;TABLE_INSTANCE&gt; used in the code below is the instance defined in the Table Instance page. Future<(APIResponse, ZCatalystRow)> &lt;TABLE_INSTANCE&gt;.getRow(int id) **Parameters**: * **id**: The unique ROWID of the particular row that needs to be retrieved A sample code snippet is shown below: try { ZCatalystTable table = app.getDataStoreInstance().getTableInstance('Projects'); var (response, row) = await table.getRow(1624000000139040); print(row.id); } on ZCatalystException catch (ex) { print(ex.toString()); } <br> ### Get All Rows You can retrieve all the rows of a table of the given instance using the **getRows()** method, as shown in the code syntax below. If the operation is successful, this method will return all the rows of the table without any filters or conditions. The &lt;TABLE_INSTANCE&gt; used in the code syntax below is the instance defined in the Table Instance page. Future<(APIResponse, List)> &lt;TABLE_INSTANCE&gt;.getRows() A sample code snippet is shown below: try { var (response, rows, resInfo) = await app .getDataStoreInstance() .getTableInstance('Projects') .getRows(); for (var row in rows) { print(row.getData()); } } on ZCatalystException catch (ex) { print(ex.toString()); } -------------------------------------------------------------------------------- title: "Get Column Value from Row" description: "You can retrieve a specific column's value in a row in a Data Store table." last_updated: "2026-07-02T09:34:10.053Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/data-store/get-column-value-from-row/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Columns (/en/cloud-scale/help/data-store/columns) - Get Metadata of Columns - API (/en/api/code-reference/cloud-scale/data-store/get-all-columns-metadata/#GetAllColumnsMetadata) -------------------------------------------------------------------------------- # Get Column Value from Row You can retrieve a specific column's value in a row in a Data Store table using the getColumnValue() method. For example, if you require the value of a single column called 'product_name' in a row, you can use this method to obtain that specific value. You must pass the Column Name of the column as the argument to the getColumnValue()method, as shown in the sample code syntax. You must first fetch an instance of the row as shown below. The &lt;TABLE_INSTANCE&gt; used in the code below is the instance defined in the Table Instance page. dynamic &lt;ROWINSTANCE&gt;.getColumnValue() **Parameters**: * **id**: The The unique ROWID of the particular row that needs to be retrieved A sample code snippet is shown below: var table = dataStore.getTableInstance(identifier: 'Products'); try{ var (response, table) = await table.getRow(id: 2823000000014176) print("quantity: ${row.getColumnValue("quantity")}") } on ZCatalystException catch (ex) { print("GET ROW FAILED: $ex"); } -------------------------------------------------------------------------------- title: "Create a New Row Instance" description: "You can create a new row instance for a particular table in the Data Store." last_updated: "2026-07-02T09:34:10.053Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/data-store/create-row-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Insert Row - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Create a New Row Instance You can create a new row instance for a particular table in the Data Store, and enable the methods defined in this class to access the instance object. This prevents unnecessary server calls. A row instance can be created by calling the **newRow()** method, as shown in the code syntax below. The &lt;TABLE_INSTANCE&gt; used here is the instance defined in the Table Instance page. <br /> &lt;TABLE_INSTANCE&gt;.newRow() <br /> A sample code snippet is shown below: <br /> var row = ZCatalystApp.getInstance() .getDataStoreInstance() .getTableInstance(identifier: 'Products') .newRow(); -------------------------------------------------------------------------------- title: "Create Rows" description: "You can create a new row instance for a particular table in the Data Store, and enable the methods defined in this class to access the instance object." last_updated: "2026-07-02T09:34:10.054Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/data-store/create-rows/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Insert Row - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Create Rows ### Create a Single Row You can create a new row in a Data Store table of the given instance using the **newRow()** method. You must set the values of the rows in the table, by specifying the column name and the corresponding row value as a key-value pair. The &lt;ROW_INSTANCE&gt; used in the code syntax below is the instance defined in the Row Instance page. Future<(APIResponse, ZCatalystRow)> &lt;ROW_INSTANCE&gt;.create() Note: If a column was created with the is_unique or is_mandatory property enabled, you must ensure that the value is unique or is mandatorily passed, respectively. You must also ensure that the data you pass for a column is of the column's configured data type. A sample code snippet with creating a row instance is shown below: var row = ZCatalystApp.getInstance() .getDataStoreInstance() .getTableInstance(identifier: 'Products') .newRow(); //Defining the row instance for the table and passing the key-value data for the row row.setColumnValue('product_name', 'power_bank'); row.setColumnValue('product_price', 2000); row.setColumnValue('product_quantity', 2); try { var (response, row) = await row.create(); print('New row created successfully : ${row.id}'); } on ZCatalystException catch (ex) { print('Failed to create the row: $exception'); } <br> ### Create Multiple Rows Catalyst Flutter SDK enables you to create multiple rows at a time in a table of the given instance. This is done by passing a list containing the rows that need to be inserted in the table. The list is passed as an argument to the **createRows()** method, as shown in the code syntax below. The &lt;TABLE_INSTANCE&gt; used in the code below is the instance defined in the Table Instance page. Future<(APIResponse, List&lt;ZCatalystRow&gt;)> &lt;TABLE_INSTANCE&gt;.createRows(List&lt;ZCatalystRow&gt; rows) **Parameters**: * **rows**: The array of rows to be created A sample code snippet with creating row instances is shown below: List&lt;ZCatalystRow&gt; newRows = []; //Create an array //Define row instances for rows to be created ZCatalystRow row1 = dataStore.getTableInstance(identifier: 'Products').newRow(); row1.setColumnValue('product_name', 'a'); row1.setColumnValue('product_price', 25); row1.setColumnValue('product_quantity', 50); ZCatalystRow row2 = dataStore.getTableInstance(identifier: 'Products').newRow(); row2.setColumnValue('product_name', 'b'); row2.setColumnValue('product_price', 30); row2.setColumnValue('product_quantity', 40); ZCatalystRow row3 = dataStore.getTableInstance(identifier: 'Products').newRow(); row3.setColumnValue('product_name', 'c'); row3.setColumnValue('product_price', 25); row3.setColumnValue('product_quantity', 70); //Add row instances to the array newRows.add(row1); newRows.add(row2); newRows.add(row3); try{ var (response, rows) = await dataStore.getTableInstance(identifier: 'Products').createRows(rows: newRows); for (var row in rows) { print(row.id); //Actions to be executed upon a successful creation of the rows } } on ZCatalystException catch (ex) { print('The IDs of the rows that were successfully created are listed below:') } -------------------------------------------------------------------------------- title: "Update Rows" description: "You can update a single specific row or all rows in a Data Store table." last_updated: "2026-07-02T09:34:10.054Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/data-store/update-rows/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Rows (/en/cloud-scale/help/data-store/records) - Update Row - API (/en/api/code-reference/cloud-scale/data-store/update-row/#UpdateRow) -------------------------------------------------------------------------------- # Update Rows ### Update a Specific Row You can update a single specific row in a Data Store table using the **update()** method after fetching the row instance. This enables you to update the values of one or more columns of the row by passing the modified values of the columns as key-value pairs to the setColumnValue() method. The &lt;ROW_INSTANCE&gt; used in the code syntax below is the instance defined in the Row Instance page. Future<(APIResponse, ZCatalystRow)> &lt;ROW_INSTANCE&gt;.update() A sample code snippet with fetching the row instance is shown below: var (response, row) = ZCatalystApp.getInstance() .getDataStoreInstance() .getTableInstance(identifier: 'Products') .getRow(id: 2823000000014176) row.setColumnValue('product_quantity', '100'); //Pass the modified column name and value in the row try { var (response, row) = await row.update(); print('Row updated successfully ${row.getColumnValue('product_quantity')}'); } on ZCatalystException catch (ex) { print('Failed to update the row $exception'); } <br> ### Update all Rows You can update multiple row in a table by passing a list of the rows as an argument to the **updateRows()** method. You must fetch the row instances for each column key-value pair to be updated in a row and pass the modified data through the setColumnValue() method. You can then add the row instances to an array and passing the array as an argument to the updateRows() method, as shown in the code syntax below. The &lt;TABLE_INSTANCE&gt; used in the code below is the instance defined in the Table Instance page. Future<(APIResponse, List&lt;ZCatalystRow&gt;)> &lt;TABLE_INSTANCE&gt;.updateRows(List&lt;ZCatalystRow&gt; rows) **Parameters**: * **rows**: The list of rows to be updated A sample code snippet with fetching the row instance is shown below: List&lt;ZCatalystRow&gt; modifiedRows = []; //Create an array var table = ZCatalystApp.getInstance() .getDataStoreInstance() .getTableInstance(identifier: 'Products'); //Create table instance try{ var (_, row) = await table.getRow(id: 2823000000014176); row.setColumnValue('product_price', '400'); modifiedRows.add(row); var (_, row) = await table.getRow(id: 2823000000014177); row.setColumnValue('product_price', '90'); modifiedRows.add(row); var (_, row) = await table.getRow(id: 2823000000014178); row.setColumnValue('product_price', '100'); modifiedRows.add(row); var (response, rows) = await table.updateRows(modifiedRows); } on ZCatalystException catch (ex) { print("Failed to update rows: $ex") } -------------------------------------------------------------------------------- title: "Delete a Row" description: "Catalyst Flutter SDK enables you to delete a single row from a specific Data Store table." last_updated: "2026-07-02T09:34:10.054Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/data-store/delete-row/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Delete Row - API (/en/api/code-reference/cloud-scale/data-store/delete-row/#DeleteRow) -------------------------------------------------------------------------------- # Delete a Row Catalyst Flutter SDK enables you to delete a single row from a specific Data Store table. However, you will not be able to delete multiple rows at a time. You can delete a row from a table by fetching the row instance and passing it to the delete() method. The &lt;ROW_INSTANCE&gt; used in the code syntax below is the instance defined in the Row Instance page. Future&lt;void&gt; &lt;ROW_INSTANCE&gt;.delete() A sample code snippet with fetching the row instance is shown below: ZCatalystTable table = app.getDataStoreInstance().getTableInstance('Products'); var (_, row) = await developers.getRow(1624000000139040); await row.delete(); ##### File Store -------------------------------------------------------------------------------- title: "Create a File Store Instance" description: "Catalyst File Store provides storage solutions for the app data files and user data files of your Catalyst application, and enables access to shared data." last_updated: "2026-07-02T09:34:10.054Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/file-store/create-file-store-instance/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) - File Store Implementation (/en/cloud-scale/help/file-store/implementation) - File Store - API (/en/api/code-reference/cloud-scale/file-store/get-specific-folder/#GetSpecificFolder) -------------------------------------------------------------------------------- # File Store Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. Catalyst File Store provides cloud storage solutions for the application files and user data files of your Catalyst application, and enables access to shared data. You can store, manage, and organize images, videos, text files, document files, spreadsheets, or files of other formats. ### Create a File Store Instance You can create an instance of your Catalyst project's File Store using the **getFileStoreInstance()** method, and enable the methods defined in this class to access the instance object. This prevents unnecessary server calls. A File Store instance can be created as shown below: var fileStore = ZCatalystApp.getInstance().getFileStoreInstance(); -------------------------------------------------------------------------------- title: "Get Folders" description: "You can obtain the details of a specific folder in the File Store." last_updated: "2026-07-02T09:34:10.054Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/file-store/get-folders/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) - File Store Implementation (/en/cloud-scale/help/file-store/implementation) - Get Folder - API (/en/api/code-reference/cloud-scale/file-store/get-all-folders/#GetAllFolders) -------------------------------------------------------------------------------- # Get Folders Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. ### Get the Metadata of a Specific Folder You can obtain the details of a specific folder in the File Store, by passing its unique Folder ID as an argument to the **getFolder()** method, as shown in the code syntax below. This fetches the folder object using which you can retrieve the folder's metadata such as the details of its creation, last modification, and the meta details of the files in it. The &lt;FILE_STORE_INSTANCE&gt; used in the code below is the instance defined in the File Store Instance page. Future<(APIResponse, ZCatalystFolder)> &lt;FILE_STORE_INSTANCE&gt;.getFolder(int id) **Parameters**: * **id**: The unique Folder ID of the folder to be retrieved A sample code snippet with the File Store instance is shown below: try{ var (response, folder) = await ZCatalystApp.getInstance().getFileStoreInstance().getFolder(2823000000006561); print('Get Folder Success.'); print('Folder name : ${folder.name}'); } on ZCatalystException catch (ex) { print("Failed to fetch folder: $ex") } <br> ### Get the Metadata of all Folders You can retrieve the details of all the folders available in your project's File Store using the **getFolders()** method, as shown in the code syntax below. This can fetch the meta data of all the folders, and the files in them. The &lt;FILE_STORE_INSTANCE&gt; used in the code below is the instance defined in the File Store Instance page. Future<(APIResponse, List&lt;ZCatalystFolder&gt;)> &lt;FILE_STORE_INSTANCE&gt;.getFolders() A sample code snippet is shown below: try{ var (response, folders) = await ZCatalystApp.getInstance().getFileStoreInstance().getFolders(); print('Get all Folders Success.'); for (var folder in folders) { print(folder.name); } } on ZCatalystException catch (ex) { print("Failed to fetch all folders $ex"); } -------------------------------------------------------------------------------- title: "Create a Folder Instance" description: "You can create an instance for a specific folder in the File Store and enable the methods defined in this class to access the instance object." last_updated: "2026-07-02T09:34:10.054Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/file-store/create-folder-instance/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) - File Store Implementation (/en/cloud-scale/help/file-store/implementation) - File Store - API (/en/api/code-reference/cloud-scale/file-store/get-specific-folder/#GetSpecificFolder) -------------------------------------------------------------------------------- # Create a Folder Instance Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. You can create an instance for a specific folder in the File Store using the **getFolderInstance()** method, and enable the methods defined in this class to access the instance object. You must pass the Folder ID of that folder to the getFolderInstance() method, as shown in the code syntax below. The &lt;FILE_STORE_INSTANCE&gt; used in the code below is the instance defined in the File Store Instance page. &lt;FILE_STORE_INSTANCE&gt;.getFolderInstance( int id ) **Parameters**: * **id**: The unique Folder ID of the folder that the instance object must be returned for A sample code snippet is shown below: ZCatalystFolder folder = ZCatalystApp.getInstance() .getFileStoreInstance() .getFolderInstance(2823000000006561); -------------------------------------------------------------------------------- title: "Get Files" description: "You can retrieve the details of a specific file or of all the files in the File Store." last_updated: "2026-07-02T09:34:10.054Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/file-store/get-files/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) - File Store Implementation (/en/cloud-scale/help/file-store/implementation) - Get File - API (/en/api/code-reference/cloud-scale/file-store/get-specific-file/#GetSpecificFile) -------------------------------------------------------------------------------- # Get Files Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. ### Get the Metadata of a Specific File You can retrieve the details of a specific file in the File Store, by passing its unique File ID as an argument to the **getFile()** method, as shown in the code syntax below. This fetches the file object using which you can retrieve the file's metadata such as the details of its creation, last modification, file size, etc. The &lt;FOLDER_INSTANCE&gt; used in the code below is the instance defined in the File Store Instance page. Future<(APIResponse, ZCatalystFile)> &lt;FOLDER_INSTANCE&gt;.getFile(int id) **Parameters**: * **id**: The unique File ID of the file to be retrieved A sample code snippet with the folder instance is shown below: ZCatalystFolder folder = ZCatalystApp.getInstance() .getFileStoreInstance() .getFolderInstance(2823000000006561); try{ var (response, file) = await folder.getFile(2823000000006561); print('Get File Success'); print('The name of the file is : ${file.name}'); print('The size of the file is : ${file.size}'); } on ZCatalystException catch (ex) { print(ex.toString); } <br> ### Get the Metadata of all Files You can retrieve the details of all the files available in a specific folder using the **getFiles()** method, as shown in the code syntax below. The &lt;FOLDER_INSTANCE&gt; used in the code below is the instance defined in the Folder Instance page. Future<(APIResponse, List&lt;ZCatalystFile&gt;)> &lt;FOLDER_INSTANCE&gt;.getFiles() A sample code snippet with the folder instance is shown below: ZCatalystFolder folder = ZCatalystApp.getInstance() .getFileStoreInstance() .getFolderInstance(2823000000006561); //Define the folder instance try{ var (response, files) = await folder.getFiles(); for (var file in files) { print(file.name); //Actions to be executed upon success } } on ZCatalystException catch (ex) { print(ex.toString()); } -------------------------------------------------------------------------------- title: "Upload a File" description: "You can upload a file to an existing folder in the File Store." last_updated: "2026-07-02T09:34:10.054Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/file-store/upload-file/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) - File Store Implementation (/en/cloud-scale/help/file-store/implementation) - Upload File - API (/en/api/code-reference/cloud-scale/file-store/upload-file-in-folder/#UploadFileInaFolder) -------------------------------------------------------------------------------- # Upload a File Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. You can upload a file to an existing folder in the File Store, by calling the **uploadFile()** method. After the file is uploaded in the folder, a unique File ID will be generated for it. You can upload an image, text document, CSV, or any other type of file you need. The &lt;FOLDER_INSTANCE&gt; used in the code sections of all the methods below is the instance defined in the Folder Instance page. This will refer to the folder that the file must be uploaded in. Future<(APIResponse, ZCatalystFile)> &lt;FOLDER_INSTANCE&gt;.uploadFile(String filePath, String fileName) **Parameters**: * **filepath**: The file path of the file to be uploaded * **fileName**: The name of the file to be uploaded A sample code snippet with the folder instance is shown below: ZCatalystFolder folder = ZCatalystApp.getInstance() .getFileStoreInstance() .getFolderInstance(2823000000006561); //Define the folder instance and specify the ID of the folder to upload the file in try{ var (response, file) = await folder.uploadFile( 'assets/images/product_image.webp', 'sample_product'); print('File Upload Success: ${file.name}'); } on ZCatalystException catch (ex) { print(ex.toString()); } -------------------------------------------------------------------------------- title: "Download a File" description: "You can download a file from an existing folder in the File Store." last_updated: "2026-07-02T09:34:10.054Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/file-store/download-file/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) - File Store Implementation (/en/cloud-scale/help/file-store/implementation) - Download File - API (/en/api/code-reference/cloud-scale/file-store/download-file-from-folder/#DownloadaFileFromaFolder) -------------------------------------------------------------------------------- # Download a File Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. You can download a file from an existing folder in the File Store by calling the **download()** method. The file will be automatically downloaded to file path that you set and will be assigned the file name that you configure. You can pass these values as arguments to the download() method as shown in the example. The &lt;FILE_INSTANCE&gt; used in the code below is an instance created for the specific file, as shown in the sample code snippet. This will refer to the file from the specific folder that must be downloaded by its unique File ID. Future<(APIResponse, String)> &lt;FILE_INSTANCE&gt;.download( void Function(int, int, double) inProgress) A sample code snippet with the file instance is shown below: ZCatalystFolder folder = ZCatalystApp.getInstance() .getFileStoreInstance() .getFolderInstance(2823000000006561); try{ var (_, file) = folder.getFile(2823000000006561); var (_, downloadedFilePath) = await file.download( filePath: '/desktop/files/', fileName: 'red.webp', onProgress: (bytesWritten, contentLength, percentage) { print('${percentage}%'); }); print(downloadedFilePath); } on ZCatalystException catch (ex) { print(ex.toString()); } -------------------------------------------------------------------------------- title: "Delete a File" description: "You can delete an existing file from a folder in the File Store." last_updated: "2026-07-02T09:34:10.054Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/file-store/delete-file/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) - File Store Implementation (/en/cloud-scale/help/file-store/implementation) - Delete File - API (/en/api/code-reference/cloud-scale/file-store/delete-file/#DeleteFile) -------------------------------------------------------------------------------- # Delete a File Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. You can delete an existing file from a folder in the File Store by calling the **delete()** method and referring to the file with the file instance. This will delete the file permanently. The &lt;FILE_INSTANCE&gt; used in the code below is an instance created for the specific file, as shown in the sample code snippet. This will refer to the file that must be deleted by its unique File ID. Future&lt;APIResponse&gt; &lt;FILE_INSTANCE&gt;.delete() A sample code snippet is shown below: ZCatalystFolder folder = ZCatalystApp.getInstance() .getFileStoreInstance() .getFolderInstance(2823000000006561); try{ var (_ file) = await folder.getFile(2823000000006561); await file.delete(); print('File deleted successfully.'); } on ZCatalystException catch (ex) { print(ex.toString()); } ##### Push Notifications -------------------------------------------------------------------------------- title: "Register Device for Push Notifications" description: "This page describes the method to register an iOS or Android device for remote push notifications after you register and enroll your Flutter app." last_updated: "2026-07-02T09:34:10.055Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/push-notifications/register-device/" service: "Cloud Scale" related: - Push Notifications (/en/cloud-scale/help/push-notifications/introduction) - Push Notifications API (/en/api/code-reference/cloud-scale/push-notifications/ios/send-ios-push-notifications/#SendiOSPushNotifications) - Push Notifications Android SDK (/en/sdk/android/v2/cloud-scale/push-notifications/register-device/) - Push Notifications iOS SDK (/en/sdk/ios/v2/cloud-scale/push-notifications/register-device/) -------------------------------------------------------------------------------- # Push Notifications ### Introduction 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. Catalyst provides you with an easy way to integrate push notifications into your Catalyst web, iOS, and Android applications. While implementing Push Notifications through the Flutter SDK, you will need to ensure the prerequisites for iOS or Android, depending on the platform you're building your app in. These prerequisites are described below. ### Prerequisites for iOS Apps Before you send push notifications in your iOS app, you must follow a set of steps to register your app and enroll for Catalyst push notifications. These steps are mentioned in sequence below: 1. Register your iOS app with Apple 2. Generate a certificate from Keychain Access 3. Generate and download the APNs certificate provided by Apple 4. Convert the downloaded APNs certificate into the .p12 format 5. Enroll for iOS Push Notification Services in Catalyst 6. Register a Mobile Device for Push Notifications Note: The first five steps are covered in detail in the Push Notifications- iOS help section. This SDK help documentation only covers the sixth step regarding registering a device to send push notifications, as well as deregistering a device. You can implement steps 1 -5 by referring to the Push Notifications help document, before using the code given in this section. <br> ### Prerequisites for Android Apps Before you send push notifications, you must follow a set of steps to register your app and enroll for Catalyst push notifications. These steps are mentioned in sequence below: 1. Generate Firebase's Android Configuration File 2. Generate Private Key for Firebase Access 3. Configure Android Push Notification Services in Catalyst 4. Register a Mobile Device for Push Notifications Note: The first three steps are covered in detail in the Push Notifications- Android help section. This SDK help documentation only covers the fourth step regarding registering a device to send push notifications, as well as deregistering a device. You can implement steps 1 -3 by referring to the Push Notifications help document, before using the code given in this section. ### Register a Mobile Device for Push Notifications After you complete the prerequisites mentioned above for the platform that you're working on, you can implement the following code in your app's codebase that will register the device for Catalyst Push Notifications. To register an Flutter mobile device as a test device, you must call the registerNotification() method with the required parameters as shown in the following code snippet: try { var response = await ZCatalystApp.getInstance().registerNotification(deviceToken: deviceToken, notificationAppId: '1624000000074620',isTestDevice: false); print(response?.responseJson); } on ZCatalystException catch (ex) { log("Register Failed: $ex"); } **Parameters:** * deviceToken: The device token obtained from FCM for you Android app, or the device token obtained after registering the device for remote push notifications with APNS for your iOS app. * notificationAppID: For Android, this is the app ID generated by Catalyst for your Android app in Push Notifications, which can be found in the Android section of Push Notifications in your Catalyst console. For iOS, this is obtained from the AppConfigurationDevelopment.plist/ AppConfigurationProduction.plist file generated by Catalyst for your app when you registered your iOS app in Catalyst. * testDevice: The value is set to true for test devices, and set to false for production devices. <br> Note: You can register a maximum of 10 Android or iOS devices as test devices to test Android push notifications. After your device is registered, you will be able to send push notifications to your app users. The users will need to provide the permission for your app to send push notifications to them on their device, by clicking **Allow** from the permission prompt. You can learn about sending test push notifications on your registered devices from the Catalyst console for iOS apps and for Android apps from their respective help documentation. You can also send test notifications from the API. Refer to the Java, Node.js, and Python SDK documentation to learn about sending push notifications through your codebase. -------------------------------------------------------------------------------- title: "Deregister Device for Push Notifications" description: "This page describes the method to deregister a registered iOS or Android device for remote push notifications." last_updated: "2026-07-02T09:34:10.055Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/push-notifications/deregister-device/" service: "Cloud Scale" related: - Push Notifications (/en/cloud-scale/help/push-notifications/introduction) - Push Notifications API (/en/api/code-reference/cloud-scale/push-notifications/ios/send-ios-push-notifications/#SendiOSPushNotifications) - Push Notifications Android SDK (/en/sdk/android/v2/cloud-scale/push-notifications/register-device/) - Push Notifications iOS SDK (/en/sdk/ios/v2/cloud-scale/push-notifications/register-device/) -------------------------------------------------------------------------------- # Deregister a Mobile Device for Push Notifications You can deregister a device that was registered for Catalyst iOS push notifications by passing the required parameters to the deregisterNotification() method as shown below. try{ var response = await ZCatalystApp.getInstance() .deregisterNotification( deviceToken: deviceToken, notificationAppId: "1624000000074620", isTestDevice: false); print(response?.responseJson); } on ZCatalystException catch(ex) { print("Failed to deregister device: $ex"); } **Parameters:** * deviceToken: The device token obtained from FCM for you Android app, or the device token obtained after registering the device for remote push notifications with APNS for your iOS app. * notificationAppID: For Android, this is the app ID generated by Catalyst for your Android app in Push Notifications, which can be found in the Android section of Push Notifications in your Catalyst console. For iOS, this is obtained from the AppConfigurationDevelopment.plist/ AppConfigurationProduction.plist file generated by Catalyst for your app when you registered your iOS app in Catalyst. * testDevice: The value is set to true for test devices, and set to false for production devices. ##### Search -------------------------------------------------------------------------------- title: "Search Data in Tables" description: "Catalyst Search enables data searching in the indexed columns of the tables in the Data Store. It allows you to perform powerful searches through volumes of data with a single search query." last_updated: "2026-07-02T09:34:10.055Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/search/search-data-in-tables/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Search (/en/cloud-scale/help/search-integration/introduction) - Search - API (/en/api/code-reference/cloud-scale/zcql/execute-zcql-query/#ExecuteZCQLQuery) -------------------------------------------------------------------------------- # Search Catalyst Search enables data searching in the indexed columns of the tables in the Data Store. It allows you to perform powerful searches through volumes of data with a single search query. Note: The columns you search for data must be indexed. You can enable search indexing for a column while creating it or by editing it later. ### Search Data in Tables To search for data in a table in a specific pattern, you must specify the table name as the identifier, and add the columns to be searched in. The columns can be added to an array and the array must be passed to the **search()** method along with the keywords to be searched through an instance of the class ZCatalystSearchOptions. You must construct the search pattern to pass to the search() method before you execute a search operation, as shown in the code syntax below. Future<(APIResponse, Map&lt;String, dynamic&gt;?)> search(ZCatalystSearchOptions searchOptions) **Parameters**: * **searchOptions**: The instance of the **ZCatalystSearchOptions** class to be passed to the search() method You can create the instance for searchOptions in the following way: ZCatalystSearchOptions(searchText: String, List&lt;ZCatalystSearchOptions.TableColumns&gt;) .addSortColumn(tableName: String,columnName: String) .setDisplayColumns(displayTableColumns: List&lt;ZCatalystSearchOptions.TableColumns&gt;) .setSearchColumns(searchTableColumns: List&lt;ZCatalystSearchOptions.TableColumns&gt;) .setSearchPattern(pattern: ZCatalystSearchOptions.SearchPattern) A sample code snippet of a search execution is shown below: List&lt;TableColumn&gt; searchTableColumns = []; //Create an array TableColumn tableColumn = TableColumn('Products'); //Specify the table //Specify the columns to be searched in tableColumn.addColumn('Title'); tableColumn.addColumn('Category'); searchTableColumns.add(tableColumn); //Add the columns in the array ZCatalystSearchOptions searchOptions = ZCatalystSearchOptions('Official', searchTableColumns); //Pass the keyword and the array to be searched try{ var (_, searchResult) = await ZCatalystApp.getInstance().search(searchOptions); print(searchResult); } on ZCatalystException catch (ex) { print('Search Query Result :'); } ##### Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page provides an overview of the mobile SDK methods required to perform Stratus operations." last_updated: "2026-07-02T09:34:10.056Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # 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>Initialize Stratus <ul> <li>Initialize Bucket Instance</li> </ul> </li> </ul> </td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>Get Object <ul> <li>Get All Objects</li> </ul> </li> <li>Download Object</li> <li>Upload Object</li> <li>Delete Object</li> <li>Delete Path</li> </ul> </td> </tr> </tbody> </table> Note: All the SDK methods in this section will return multiple data using Dart's new feature called Records. To use this feature, you need to have Dart v3.0 or above. -------------------------------------------------------------------------------- title: "Initialize Stratus" description: "This page lists the Flutter SDK method to create a bucket instance." last_updated: "2026-07-02T09:34:10.056Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/stratus/initialize-stratus/" 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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-stratus-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-stratus-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Initialize Stratus 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. ZCatalystStratus stratus = ZCatalystApp.getInstance().stratus ### Initialize Bucket Instance To perform bucket level operations, you need to initialize a bucket instance. We will refer to this component instance in various code snippets of working with Buckets in Stratus. ZCatalystBucket bucket = stratus.bucket("{bucket_name}") -------------------------------------------------------------------------------- title: "Get Object" description: "This page lists the Flutter SDK method to get an object or objects from the bucket." last_updated: "2026-07-02T09:34:10.056Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/stratus/get-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/get-objects/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/get-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/get-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/get-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/get-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-objects/#GetAllObjects) -------------------------------------------------------------------------------- # Get Object This SDK method can be used to get an object from the bucket. The response will be in **blob** format. When Versioning is enabled for the bucket: * If you do not pass the versionId, then only the **latest object** will be returned. * To retrieve a specific version, use the versionId query parameter with a valid version as a value. **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>name</td> <td>String</td> <td>A mandatory parameter. Will hold the 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 required object's version.</td> </tr> </tbody> </table> try { ZCatalystBucket bucket = stratus.bucket("testing"); var (response, object) = await bucket.getObject("SunSet.jpeg", "01hter85pvexb8s2s2842rpswh"); print('Object Name : ${object.name}'); } on ZCatalystException catch (ex) { print(ex.toString()); } ### Get All Objects This SDK method can be used to get all the objects present in the bucket using pagination technique. **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>prefix</td> <td>String</td> <td>An Optional parameter. This will get the objects that match the prefix value.</td> </tr> <tr> <td>maxKeys</td> <td>Number</td> <td>An Optional parameter. Will contain the maximum limit of objects that can be listed by pagination.</td> </tr> <tr> <td>continuationToken</td> <td>String</td> <td>An Optional parameter. If the response was truncated, the value of this key must be passed as continuationToken to the same method for retrieving the next set of objects.</td> </tr> </tbody> </table> try { ZCatalystBucket bucket = app.stratus.bucket("testing"); var (response, objects, resInfo) = await bucket.getObjects(maxKeys: 5); for (var object in objects) { print('Object Name : ${object.name}'); } print('Res Info MaxKeys:${resInfo.maxKeys}'); print('\n\n'); } on ZCatalystException catch (ex) { print(ex.toString()); } -------------------------------------------------------------------------------- title: "Download Object" description: "This page lists the Flutter SDK methods to download an object to the bucket." last_updated: "2026-07-02T09:34:10.056Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/stratus/download-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Download an Object (/en/cloud-scale/help/stratus/objects/manage-object/download-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/range-download/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/range-download/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/range-download/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/range-download/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/download-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/download-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/upload-object/#DownloadObject) -------------------------------------------------------------------------------- # Download Object This SDK method will allow you to download the object. The operation will retuen an input stream. **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>pathToDownload</td> <td>String</td> <td>A mandatory parameter. Will hold the path where the object needs to be downloaded.</td> </tr> <tr> <td>newObjectName</td> <td>String</td> <td>An optional parameter. Will hold the name of the object that you provide while being downloaded. If you do not provide this value, then the object will be downloaded by its original name.</td> </tr> <tr> <td>versionId</td> <td>String</td> <td>An optional parameter. If Versioning is enabled for the bucket, it will hold the unique version ID of the required object's version.</td> </tr> <tr> <td>fromCache</td> <td>Boolean</td> <td> <ul> <li>An optional parameter. To be used to specify whether this file has to be retrieved from the cache or not.</li> <li>Default Value: false.</li> </ul> </td> </tr> <tr> <td>progress</td> <td>Function(int, int, Double)?</td> <td>A callback function that can provide progess information about the object download</td> </tr> </tbody> </table> try { ZCatalystBucket bucket = stratus.bucket("testing"); var (response, object) = await bucket.getObject("SunSet.jpeg"); final downloadsDir = await getExternalStorageDirectory(); final filePath = downloadsDir!.absolute.path; var fileResponse = await object.download( pathToDownload: filePath, onProgress: (bytesWritten, contentLength, percentage) { print("Downloaded Percentage: $percentage"); }, ); print("Download Status: ${fileResponse.statusCode}"); OpenFile.open(filePath + '/SunSet.jpeg'); } on ZCatalystException catch (ex) { print(ex.toString()); } -------------------------------------------------------------------------------- title: "Upload Object" description: "This page lists the Flutter SDK methods to upload an object to the bucket." last_updated: "2026-07-02T09:34:10.056Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/upload-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/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/) - REST API (/en/api/code-reference/cloud-scale/stratus/upload-object/#UploadObject) -------------------------------------------------------------------------------- # Upload Object The SDK method listed in this section will allow you to upload objects to the bucket 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. **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>filePath</td> <td>String</td> <td>A mandatory parameter. Will contain the complete path of the location from where the file needs to be uploaded from.</td> </tr> <tr> <td>shouldCompress</td> <td>Boolean</td> <td> <ul> <li>An optional parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>Default Value: false.</li> </ul> </td> </tr> </tbody> </table> try { XFile ? imageFile = await pickImage(ImageSource.gallery); var bucket = stratus.bucket("testing"); var response = await bucket.uploadObject(imageFile!.path); print("Upload Status: ${response.statusCode}"); } on ZCatalystException catch (ex) { print(ex.toString()); } -------------------------------------------------------------------------------- title: "Delete Object" description: "This page lists the Flutter SDK methods to delete an object or objects from the bucket." last_updated: "2026-07-02T09:34:10.056Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/stratus/delete-object/" 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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/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/) - REST API (/en/api/code-reference/cloud-scale/stratus/delete-objects/#DeleteObject) -------------------------------------------------------------------------------- # Delete Objects The following SDK method can be used to delete multiple objects from the bucket. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w30p">Data Type</th> <th class="w50p">Definition</th> </tr> </thead> <tbody> <tr> <td>objects</td> <td>ArrayList&lt;ZCatalystObject&gt;</td> <td>An array containing the list of objects (and version IDs, if Versioning is enabled for the bucket) that needs to be deleted.</td> </tr> </tbody> </table> Note: If the SDK method is used without the objects parameter, then all the objects in the bucket will be deleted. try { ZCatalystBucket bucket = stratus.bucket("testing"); var (response, objects, _) = await bucket.getObjects(maxKeys: 5, prefix: 'trip'); var response = await bucket.deleteObjects(objects); print("Delete Objects: ${response.statusCode}"); } on ZCatalystException catch (ex) { print(ex.toString()); } -------------------------------------------------------------------------------- title: "Delete Path" description: "This page lists the Flutter SDK methods to delete an entire path along with its objects from the bucket." last_updated: "2026-07-02T09:34:10.057Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/stratus/delete-path/" 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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/delete-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/delete-path/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/delete-path/) - REST API (/en/api/code-reference/cloud-scale/stratus/delete-path/#DeletePath) -------------------------------------------------------------------------------- # Delete Path The following SDK method can be used to delete all the objects present in the specified path. **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>path</td> <td>String</td> <td>A mandatory parameter. Will contain the complete path of where the file should be uploaded.</td> </tr> </tbody> </table> try { ZCatalystBucket bucket = stratus.bucket("testing"); var response = await bucket.deletePath("photos"); print("Delete Objects: ${response.statusCode}"); } on ZCatalystException catch (ex) { print(ex.toString()); } ##### ZCQL -------------------------------------------------------------------------------- title: "Execute ZCQL Query" description: "ZCQL is Catalyst's own query language that enables you to perform data creation, retrieval, and modification operations in the Data Store." last_updated: "2026-07-02T09:34:10.058Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/zcql/execute-zcql-query/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - ZCQL (/en/cloud-scale/help/zcql/introduction/) - Execute ZCQL - API (/en/api/code-reference/cloud-scale/zcql/execute-zcql-query/#ExecuteZCQLQuery) -------------------------------------------------------------------------------- # ZCQL ZCQL is Catalyst's own query language that enables you to perform data creation, retrieval, and modification operations in the Data Store. It supports queries with built-in functions, SQL Join clauses, and other statements and conditions. ### Execute a ZCQL Query Flutter enables you to perform data retrieval operations using ZCQL. Before you execute a ZCQL query to fetch the required data set, you must construct the query to pass it to the **getData()** method. You can learn about the ZCQL syntax from the ZCQL help page. You must pass an instance of **ZCatalystSelectQuery** to the getData() method, as shown in the code syntax of a ZCQL query execution below. The &lt;DATA_STORE_INSTANCE&gt; used here is the instance defined in the Data Store Instance page. Future<(APIResponse, List&lt;dynamic&gt;?)> ZCatalystApp.getInstance().getDataStoreInstance().getData( ZCatalystSelectQuery selectQuery) **Parameters**: * **selectQuery**: The instance of the type ZCatalystSelectQuery to be passed You can create a selectQuery instance for ZCatalystSelectQuery for the statements supported by ZCQL, in the following way: ZCatalystSelectQuery.Builder() .select(columns: Set&lt;Column&gt;): ZCatalystSelectQuery.Builder .selectAll(): ZCatalystSelectQuery.Builder .where(column: String, comparator: ZCatalystUtil.Comparator, value: String): ZCatalystSelectQuery.Builder .from(tableName: String): ZCatalystSelectQuery.Builder .and(column: String, comparator: ZCatalystUtil.Comparator, value: String): ZCatalystSelectQuery.Builder .groupBy(columns: Set&lt;Column&gt;): ZCatalystSelectQuery.Builder .orderBy(columns: Set&lt;Column&gt;, sortOrder: ZCatalystUtil.SortOrder): ZCatalystSelectQuery.Builder .innerJoin(tableName: String): ZCatalystSelectQuery.Builder .leftJoin(tableName: String): ZCatalystSelectQuery.Builder .on(joinColumn1: String, comparator: ZCatalystUtil.Comparator, joinColumn2: String): ZCatalystSelectQuery.Builder .or(column: String, comparator: ZCatalystUtil.Comparator, value:String): ZCatalystSelectQuery.Builder .limit(offset: Int, value: Int?): ZCatalystSelectQuery.Builder .build(): ZCatalystSelectQuery A sample code snippet of a ZCQL query execution is shown below: try { ZCQLColumn column1 = ZCQLColumn('Title'); ZCQLColumn column2 = ZCQLColumn('Category'); Set&lt;ZCQLColumn&gt; columns = Set(); columns.add(column1); columns.add(column2); ZCatalystSelectQuery query = ZCatalystQueryBuilder() .select(columns) .from('Projects') .where('Category', Comparator.EQUAL_TO, 'Official') .build(); var (_, result) = await app.getDataStoreInstance().getData(query); print("Query Result: $result"); } on ZCatalystException catch (ex) { print(ex.toString()); } #### General -------------------------------------------------------------------------------- title: "Get Current Time Zone" description: "This enables you to fetch the current time zone active for your project." last_updated: "2026-07-02T09:34:10.058Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/general/get-current-time-zone/" service: "All Services" related: - Time Zone Settings (/en/getting-started/set-up-a-catalyst-project/general-settings/#change-the-time-zone-of-the-project) -------------------------------------------------------------------------------- # Get Current Time Zone You can define and store a time zone for your project from the General settings in the console, overriding the default time zone set based on the data center you access. This time zone you set will be applied across all services, components and features of the project. However, you can still define individual time zones for certain components. Catalyst enables you to fetch the current time zone active for your project. You can fetch the current time zone defined for your project in the console using the getCurrentTimeZone() method in the ZCatalystUtil class as shown in the syntax below. Future<String> ZCatalystUtil.getCurrentTimezone() A sample code snippet is shown below: String currTimezone = await ZCatalystUtil.getCurrentTimeZone(); #### Serverless ##### Functions -------------------------------------------------------------------------------- title: "Create a Function Instance" description: "Catalyst functions enable you to build custom functionalities in your application, automate tasks, or integrate with third-party services." last_updated: "2026-07-02T09:34:10.058Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/serverless/functions/create-function-instance/" service: "Serverless" related: - Functions (/en/serverless/help/functions/introduction) - Function - API (/en/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Functions Catalyst Serverless Functions enable you to build custom functionalities in your application, automate tasks, or integrate with third-party services. You can develop functions for your mobile app from the Catalyst console or the CLI. Note: You can create six types of functions in Catalyst: Basic I/O, Advanced I/O, Cron, Event, Integration, and Browser Logic functions. However, you can only execute Basic I/O functions in Catalyst Flutter SDK. ### Create a Function Instance You can create an instance of a Catalyst function using the **getFunctionInstance()** method, method, and enable the methods defined in this class to access the instance object. This will prevent unnecessary server calls. The function instance can be fetched in two different ways. ### By passing the Function ID You can create a function instance by passing the ID of the function as an argument to the getFunctionInstance() method in the String format as shown in the syntax below: ZCatalystApp.getInstance().getFunctionInstance( String identifier ) **Parameters**: * **functionID**: The unique ID of the function configured in Catalyst A sample code snippet is shown below: ZCatalystFunction function = ZCatalystApp.getInstance().getFunctionInstance(identifier: "158798998356682"); <br> ### By passing the API name of the function You can create a function instance by passing the API name of the function as an argument to the getFunctionInstance() method in the String format as shown in the syntax below: ZCatalystApp.getInstance().getFunctionInstance( String identifier ) **Parameters**: * **identifier**: The name of the function configured in Catalyst A sample code snippet is shown below: ZCatalystFunction function = ZCatalystApp.getInstance().getFunctionInstance(identifier: "LocalBackUp"); -------------------------------------------------------------------------------- title: "Execute a Function" description: "You can execute a Catalyst function in several ways, based on the HTTP request you pass with the function." last_updated: "2026-07-02T09:34:10.058Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/serverless/functions/execute-function/" service: "Serverless" related: - Functions (/en/serverless/help/functions/introduction) - Implementing Functions (/en/serverless/help/functions/implementation) - Execute Function - API (/en/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Execute a Function You can execute a Catalyst Basic I/O function in any one of the ways given below, based on the HTTP request you pass with the function. You can pass the parameters to the function to be executed as the argument to a function execution method. This method differs for each HTTP request type. The &lt;FUNCTION_INSTANCE&gt; used in all the code sections below is the instance defined in the Function Instance page. ### Execute a GET function You can execute a function of the HTTP GET type by passing the parameters to the **executeGET()** method as a Hash map: Future&lt;String?&gt; &lt;FUNCTION_INSTANCE&gt;.executeGET( Map&lt;String, Dynamic&gt; params) **Parameters**: * **params**: The parameters to be passed to the function as a Hash map A sample code snippet is shown below: ZCatalystFunction function = ZCatalystApp.getInstance().getFunctionInstance(identifier: "LocalBackUp"); try{ var output = function.executeGET( params: { 'id': 2345642, //Pass the params to the function }); print('Function output: $output'); } on ZCatalystException catch (ex) { print(ex.toString()); } <br> ### Execute a PUT function You can execute a function of the HTTP PUT type by passing the parameters to the **executePUT()** method as a Hash map. You can pass the payload in the PUT request to this method as a Hash map argument as well: Future&lt;String?&gt; &lt;FUNCTION_INSTANCE&gt;.executePUT(Map&lt;String, Dynamic&gt; body, [Map&lt;String, Dynamic&gt;? params]) **Parameters**: * **params**: The parameters to be passed to the function as a Hash map * **body**: The data payload to be passed as a Hash map A sample code snippet is shown below: ZCatalystFunction function = ZCatalystApp.getInstance().getFunctionInstance(identifier: 'LocalBackUp'); var body = &lt;String, Dynamic&gt;{ "ROWID": "2823000000098012", "Category": "Important" }; //Define the function instance and pass the payload to the map try{ var output = await function.executePUT( body: body, params: { 'id': 2345642, //Pass the params to the function }); print('Function output: $output'); } on ZCatalystException catch (ex) { print(ex.toString()); } <br> ### Execute a POST function You can execute a function of the HTTP POST type by passing the parameters to the **executePOST()** method as a Hash map. You can pass the payload in the POST request to this method as a Hash map argument as well: Future&lt;String?&gt; executePOST(Map&lt;String, dynamic&gt; body) **Parameters**: * **params**: The parameters to be passed to the function as a Hash map * **body**: The data payload to be passed as a Hash map A sample code snippet is shown below: ZCatalystFunction function = ZCatalystApp.getInstance().getFunctionInstance(identifier: 'LocalBackUp'); var body = &lt;String, Dynamic&gt;{ "ROWID": "2823000000098012", "Category": "Important" //Define the function instance and pass the payload to the Hash map }; try{ var output = await function.executePOST(body: body); print('Function output: $output'); } on ZCatalystException catch (ex) { print(ex.toString()); } ### Execute a DELETE function You can execute a function of the HTTP DELETE type by passing the parameters to the **executeDELETE()** method as a Hash map. You can pass the payload in the DELETE request to this method as a Hash map argument as well: Future&lt;APIResponse&gt; &lt;FUNCTION_INSTANCE&gt;.executeDELETE(Map&lt;String, Dynamic&gt; body, [Map&lt;String, Dynamic&gt;? params]) **Parameters**: * **params**: The parameters to be passed to the function as a Hash map * **body**: The data payload to be passed as a Hash map A sample code snippet is shown below: try { ZCatalystFunction function = app.getFunctionInstance(identifier: 'DeleteData'); var response = await function.executeDELETE({"id": 298922}); } on ZCatalystException catch (ex) { print(ex.toString()); } ## iOS ### v2 -------------------------------------------------------------------------------- title: "Overview" description: "Catalyst iOS SDK is a library that enables you to build iOS apps for your Catalyst project." last_updated: "2026-07-02T09:34:10.058Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/overview/" service: "All Services" related: - Mobile Device Management (/en/cloud-scale/help/mobile-device-management/introduction) - Android SDK (/en/sdk/android/v2/overview/) - Flutter SDK (/en/sdk/flutter/v2/overview/) - Web SDK (/en/sdk/web/v4/overview/) -------------------------------------------------------------------------------- # iOS SDK ## Overview Catalyst iOS SDK is a library that enables you to build mobile apps for your Catalyst project in the iOS platform. The Catalyst iOS SDK package contains a host of tools and functionalities that help you in developing dynamic and robust iOS apps, with powerful backends. The iOS SDK package enables you to handle several backend jobs of various Catalyst services and components. Primarily, the iOS SDK contains tools for Catalyst Cloud Scale and Catalyst Serverless functionalities, such as user authentication and redirection, Data Store and File Store functionalities, and function executions. iOS SDK wraps API requests to these components as method calls that you can avail. You can seamlessly integrate these Catalyst components in your iOS app by implementing the ready-made functionalities provided by the SDK package, and build on them easily. This saves you from investing time and effort into coding the backend from scratch, and helps you focus more on designing the user experience of the app. The iOS SDK documentation explains the entire process of setting up and building an iOS app with Catalyst iOS SDK. You can learn about the architecture, components, and configurations of the SDK package, and access sample code snippets for various operations in this documentation. Note: After you develop and test your iOS app, you can host and distribute the app using Mobile Device Management. It also enables you to manage the app's versioning and end-users easily from the Catalyst console. You can also configure Push Notifications for your iOS app in Catalyst and enable push notifications to be sent in your app. However, Push Notifications and Mobile Device Management are currently not available to Catalyst users accessing from the EU, AU, IN, or CA data centers. -------------------------------------------------------------------------------- title: "Class Hierarchy" description: "Class Hierarchy denotes the hierarchy of the Swift classes in the Catalyst iOS SDK." last_updated: "2026-07-02T09:34:10.058Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/class-heirarchy/" service: "All Services" related: - Authentication (/en/cloud-scale/help/mobile-device-management/introduction) - Data Store (/en/cloud-scale/help/data-store/introduction) - File Store (/en/cloud-scale/help/file-store/introduction) - Search (/en/cloud-scale/help/search-integration/introduction/) - Functions (/en/serverless/help/functions/introduction) - ZCQL (/en/cloud-scale/help/zcql/introduction) -------------------------------------------------------------------------------- # Class Hierarchy ### Introduction All Catalyst components are modelled as Swift classes in iOS SDK. The members and methods of these component classes define the behavior of the component, and enable you to perform various operations in the component. Catalyst iOS SDK package contains tools to work with the following Catalyst components and features from various Catalyst services: * **General:** Timezone * **Serverless:** Functions * **Cloud Scale:** Authentication, Data Store, File Store, Search, ZCQL The hierarchy of the Catalyst iOS SDK component classes is depicted in the architecture diagram below. The **ZCatalystApp** is the base class of the Catalyst iOS SDK. It comprises of several methods that enable you to initialize the SDK and access the various components of the Catalyst project. The other classes pertain to the respective components and their specific features supported by the SDK. <br> ### Instance Objects Each class available under ZCatalystApp contains functions to fetch the properties and data of its immediate child entities by executing API calls. However, it is not always effective to follow the class hierarchy, all the way up to the top, to fetch the data of a component at a lower level. This is because, such an action would involve API calls at every level and that will render the usage of your application inefficient. To avoid this situation and to make your app more cost-effective, Catalyst provides instance objects in every class. **Instance Objects** are present in each component class, which can be accessed through a **getInstance()** method. This method fetches a dummy object of the component, which can then be used to fetch methods of all its child entities. Therefore, to retrieve the properties of a Catalyst component you must call the component's object with its getInstance() method. You must then use the same object to call the other methods defined by the component. This prevents unnecessary and excessive API calls. -------------------------------------------------------------------------------- title: "Errors" description: "This help page lists the common errors that can occur in your Catalyst iOS app executions" last_updated: "2026-07-02T09:34:10.059Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/errors/" service: "All Services" related: - Developer Tools (/en/getting-started/set-up-a-catalyst-project/developer-tools) -------------------------------------------------------------------------------- # Errors Errors are the unexpected faulty behaviours that occur during the app execution. All errors and exceptions in Catalyst iOS apps are handled by enumerations called **ZCatalystError**, defined in the iOS SDK package. If an error occurs in your app, the following properties of the error are returned: * **code**: Unique identifier of the error * **message**: General description about the error * **details**: Additional information about the error A list of common error codes thrown by the Catalyst iOS SDK and their descriptions are given below: <table class="content-table"> <thead> <tr> <th class="w30p">Error Codes</th> <th class="w70p">Descriptions</th> </tr> </thead> <tbody> <tr> <td><strong>INVALID_DATA</strong></td> <td>Data is in an invalid format</td> </tr> <tr> <td><strong>INTERNAL_ERROR</strong></td> <td>Error occurred due to internal problems, servers, or something else</td> </tr> <tr> <td><strong>RESPONSE_NIL</strong></td> <td>No response was returned from the server</td> </tr> <tr> <td><strong>TOKEN_FETCH_ERROR</strong></td> <td>Failed to fetch the access token</td> </tr> <tr> <td><strong>OAUTH_FETCH_ERROR</strong></td> <td>Error occurred while fetching the OAUTH token</td> </tr> <tr> <td><strong>UNABLE_TO_CONSTRUCT_URL</strong></td> <td>Error occurred while constructing the URL</td> </tr> <tr> <td><strong>PROCESSING_ERROR</strong></td> <td>Error occurred while processing the data</td> </tr> <tr> <td><strong>TYPECAST_ERROR</strong></td> <td>Error occurred while type-casting the data</td> </tr> <tr> <td><strong>NO_INTERNET_CONNECTION</strong></td> <td>Device is not connected to the internet</td> </tr> <tr> <td><strong>REQUEST_TIMEOUT</strong></td> <td>Response from the server did not arrive on time</td> </tr> <tr> <td><strong>NETWORK_CONNECTION_LOST</strong></td> <td>Device has lost its connection with the Internet</td> </tr> <tr> <td><strong>INITIALIZATION_ERROR</strong></td> <td>Error occurred while initializing the SDK</td> </tr> <tr> <td><strong>FUNCTION_EXECUTION_ERROR</strong></td> <td>Error occurred while executing a function</td> </tr> <tr> <td><strong>JSON_EXCEPTION</strong></td> <td>Error occurred while parsing the JSON</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Prerequisites" description: "The steps that need to be taken before you start developing using the Catalyst iOS SDK" last_updated: "2026-07-02T09:34:10.059Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/prerequisites/" service: "All Services" related: - Android (/en/sdk/android/v2/overview) - Catalyst Project (/en/getting-started/catalyst-projects/) -------------------------------------------------------------------------------- # Prerequisites Before you begin working with Catalyst iOS SDK, you must ensure that you meet all these prerequisites: * Create a Catalyst Project in the Catalyst console to host your mobile app in Note: You can host one Android app and one iOS app in each project. * Create or import an iOS project in XCode Note: You can host one Android app and one iOS app in each project. The Android or iOS can either be built natively with the Catalyst Android or iOS SDKs, or with Catalyst Flutter SDK. * Ensure that your iOS project and the development environment meet these **minimum supported environments**: * XCode- 10.2 or later * CocoaPods * iOS- 9 or later * Swift- 4 or later After you have configured the prerequisite environments, you can register your app with Catalyst and download the configuration file that is provided tailored to your app. You must include this configuration file in your iOS app's structure, as it will contain the definitions of certain properties required for your app to function properly. We will discuss these steps in detail in the next section. -------------------------------------------------------------------------------- title: "Setup" description: "Steps to follow to setup the Catalyst project and the iOS project." last_updated: "2026-07-02T09:34:10.059Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/setup/" service: "All Services" related: - Developer Tools (/en/getting-started/set-up-a-catalyst-project/developer-tools) -------------------------------------------------------------------------------- # Setup After you create the Catalyst project and the iOS project, you must follow these steps to set up and integrate the iOS SDK package with your app. ### Step 1: Register your iOS app with Catalyst You can begin by creating a package for the iOS app in Catalyst to register it, and downloading its unique configuration file. 1. Click the **Settings icon** from your Catalyst console in your project. 2. Navigate to **Developer Tools** under Project Settings in the settings menu, then click on the **iOS** tile. Alternatively, you can click the **Add Package** button below. 3. Enter a package name that will identify it uniquely. Provide the URL to redirect the end-user to after they login to the app, as the Redirect URL. The values that you enter here will be auto-filled in the configuration file. Note: A package name will be uniquely associated with that OS. Therefore, you cannot create packages with the same name for both Android and iOS apps. You must provide unique values. Ensure that iOS is selected as the OS type. 4. Click **Create** to create the mobile SDK package. 5. The console will then display a window from where you can download the configuration file. Click **Download** to download the file. The file will be downloaded with all the required configurations. The properties in this file are explained in the next step. ### Step 2: Import the Configuration File in Your iOS Project Catalyst provides two work environments to develop and build your applications in: a **Development** sandbox and a live **Production** environment. You can learn more about them from the Environments help page. When you create a package in the console, only the development environment's configuration file will be available for download initially, irrespective of the environment you are working in currently. You can choose to download the configuration file from the console for any environment any time, once the package has been created. The configuration files of each environment would be named as: * Development: **AppConfigurationDevelopment.plist** * Production: **AppConfigurationProduction.plist** Based on the environment that you are working in, you must download and add the appropriate file to **Targets** -> **Runner** in your iOS project. To obtain a production environment configuration file, you must deploy your project to production first and then download the file from the Developer Tools settings section. The configuration file must be added to **Targets** -> **Runner** of your iOS project. Refer to the official iOS documentation for detailed help on iOS project structure. #### Properties of the AppConfigurationDevelopment.plist/ AppConfigurationProduction.plist File The app configuration file defines the properties mentioned in the table below. All these values except the request headers are automatically populated, based on your project's details or the default standards. Note: You can refer to the links specified in the table, to know where you can obtain these values from. <table class="content-table"> <thead> <tr> <th class="w20p">Property</th> <th class="w20p">Data Type</th> <th class="w20p">Description</th> </tr> </thead> <tbody> <tr> <td>**ClientID**</td> <td>String</td> <td>Unique identifier of your app client registered in Catalyst. This is received in the configuration file.</td> </tr> <tr> <td>**ClientSecretID**</td> <td>String</td> <td>Secret value generated for a specific clientID, which is passed along with the API hits. This is received in the configuration file.</td> </tr> <tr> <td>**PortalID**</td> <td>String</td> <td>Unique identifier received in the configuration file</td> </tr> <tr> <td>**RedirectURLScheme**</td> <td>String</td> <td>The callback URL of your app that you provided while creating a package for it in the console, in the previous step</td> </tr> <tr> <td>**ProjectID**</td> <td>Long</td> <td>The unique ID of your Catalyst Project</td> </tr> <tr> <td>**APIBaseURL**</td> <td>String</td> <td>The URL of the Catalyst server through which the internal API is called. You must use the appropriate URL (development URL or production URL), based on the environment you are working in.</td> </tr> <tr> <td>**APIVersion**</td> <td>String</td> <td>Version of the API</td> </tr> <tr> <td>**OauthScopes**</td> <td>String</td> <td>The scopes that would be used by the app to access the Catalyst APIs from your project. You can find the available OAuth scopes here.</td> </tr> <tr> <td>**RequestHeaders**</td> <td>String</td> <td>The headers that would be sent by the client in the HTTP requests<br /> The values of the request headers must be individual key-value pairs, separated by commas like: requestHeaders=key1:value1, key2:value2</td> </tr> <tr> <td>**ServerTLD**</td> <td>String</td> <td>The top level domain of the data server<br /> Acceptable values: **AU**, **CN**, **COM**, **EU** and **IN**</td> </tr> <tr> <td>**MinLogLevel**</td> <td>String</td> <td>Enables you to set the logging preferences for the app<br /> Acceptable values: **warnings**, **errors**, **information**, **debug**, **ALL**</td> </tr> <tr> <td>**TurnLoggerOn**</td> <td>Boolean</td> <td>Turns the logger on based on the value<br /> Acceptable values: **true**, **false**</td> </tr> <tr> <td>**RequestTimeOut**</td> <td>Double</td> <td>The time duration (in seconds) a task must wait for additional data to arrive before giving up</td> </tr> <tr> <td>**X-Catalyst-Environment**</td> <td>String</td> <td>The environment (development or production) that the configuration file is downloaded for</td> </tr> <tr> <td>**X-CATALYST-USER**</td> <td>String</td> <td>The user role of the app's user</td> </tr> <tr> <td>**AccountsPortalDomain**</td> <td>String</td> <td>Domain of your Zoho account's portal</td> </tr> <tr> <td>**notificationAppID**</td> <td>String</td> <td>ID generated by Catalyst after you enroll for Push Notifications for your iOS app</td> </tr> <tr> <td>**JWTClientID**</td> <td>String</td> <td>The client ID property of the custom server token (JSON Web Token token) generated for third-party authentication to be passed to the client </td> </tr> <tr> <td>**JWTClientSecret**</td> <td>String</td> <td>The client secret property of the custom server token (JSON Web Token token) generated for third-party authentication to be passed to the client </td> </tr> </tbody> </table> Note:<br /> * If the values of the **clientID**, **clientSecretID**, **projectID**, or **portalID** are modified in the configuration file, it will affect the functioning of the SDK and your iOS app. If you wish to change any of these configurations, you can create a new package for the required project from the Developer Tools section and download a new configuration file for the appropriate environment, and add it to your iOS project. * The values of the properties that are populated in the downloaded configurations file can be dynamically accessed using the **ZCatalystApp.configs** object. ### Step 3: Add Catalyst iOS SDK in Your App The next step is to include the SDK package in your app. You can install the Catalyst SDK libraries using CocoaPods. To add the Catalyst iOS SDK as a dependency to your new or existing project: 1. Insert the code snippet given below in your project's **Podfile**, under your app's target: pod 'ZCatalyst', :git =>'https://github.com/zoho/Catalyst-iOS-SDK.git', :tag => '2.2.2' 2. Execute the **pod install** command from your system's terminal. This will install the pod and the Catalyst iOS SDK will be added to your iOS app. ### Step 4: Configure App Login Redirection When a user logs in to your app successfully, they will be redirected to your app's home screen. This user login and redirection is handled by the Catalyst SDK. To ensure that this redirection is handled properly, include the key given below with the same configurations in the **info.plist** file of your iOS project: Key - **URL Types** -----> **URL Schemes**<br /> Type - String<br /> Value - The Redirect URL that you configured while creating the package for your app in Catalyst ### Step 5: Initialize the SDK You must initialize the Catalyst SDK to enable the functioning of the methods and features defined in the SDK package. Therefore, before you configure your app to consume the SDK methods, you must initialize the SDK in the following way: public func initSDK( window : UIWindow, environment : ZCatalystEnvironment, appConfiguration : ZCatalystAppConfiguration ) throws **Parameters:** * **window**: The window object that dispatches events to your views * **environment**: The environment of your app, either **.development** or **.production**. * **appConfiguration**: An object containing all the configuration details for the functioning of the SDK. The environment here indicates if the app is operating in the Development or the Production environment. Similar to including the appropriate plist configuration file based on the environment in your app's project, you must initialize the SDK for the appropriate environment. Note: * If you make any changes to the AppConfigurationDevelopment.plist or AppConfigurationProduction.plist file, you must reinitialize the SDK. * If you configure a third-party authentication for your iOS app, you will also need to re-initialize the SDK as new properties will be added in this configuration file. You can learn more from this help page. If the SDK is successfully initialized, the app will invoke the component methods and function as intended. ### Step 6: Configure Redirection to Application Screen If the login page configured in your iOS app is from a different domain, you can configure the redirection to your application screen. On successful login, this will redirect you to the application layer. The code for the UIApplicationinstance is given below: ZCatalystApp.shared.handleLoginRedirection( _ url : URL, sourceApplication : String?, annotation : Any ) AppDelegate.swift **Parameters:** * **url**: The URL resource that must be opened after a successful login * **sourceApplication**: The bundle ID of the app that is requesting to open the URL * **annotation**: Additional data that the app wants to send along with the URL The code for the UIScene instance is given below: func scene(_ scene: UIScene, openURLContexts URLContexts: Set&lt;UIOpenURLContext&gt;) { if let context = URLContexts.first { ZCatalystApp.shared.handleLoginRedirection(context.url, sourceApplication: context.options.sourceApplication, annotation: context.options.annotation as Any) } } The setup is complete and you can now build your iOS app with Catalyst iOS SDK. #### Cloud Scale ##### Authentication -------------------------------------------------------------------------------- title: "Create a New User Instance" description: "Catalyst authentication feature enables you to manage user authentication. You can create new user instances to prevent unnecessary server calls." last_updated: "2026-07-02T09:34:10.060Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/authentication/create-user-instance/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Users (/en/cloud-scale/help/authentication/user-management/users/introduction/) - Add New User - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) -------------------------------------------------------------------------------- # Authentication Catalyst Authentication is a component of Catalyst Cloud Scale that enables you to add end-users to your application, customize app login and sign-up forms, manage user accounts and roles, and ensure secure access throughout your application. ## Create a New User Instance You can create a new user instance, and enable the methods defined in this class to access the instance object. This will prevent unnecessary server calls. You must pass the user's details to the **newUser()** method as shown in the code syntax below. You must pass the user's email address and last name mandatorily to create the instance successfully. ZCatalystApp.shared.newUser( lastName : String, email : String ) -> ZCatalystUser **Parameters**: * **lastName**: The last name of the new user * **email**: Email address of the user, to which the invitation mail will be sent A sample code snippet is shown below: ZCatalystApp.shared.newUser( lastName : "Burrows", email : "emma@zylker.com" ) -> ZCatalystUser -------------------------------------------------------------------------------- title: "User Signup" description: "Adding new users to your catalyst application." last_updated: "2026-07-02T09:34:10.060Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/authentication/user-signup/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Users (/en/cloud-scale/help/authentication/user-management/users/introduction/) - Authentication - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) -------------------------------------------------------------------------------- # User Signup You can add a new user to your Catalyst app by calling the signUp() method. You must pass the user instance defined here as the argument to the **signUp()** method. The code syntax for user signup is given below: ZCatalystApp.shared.signUp(user: ZCatalystUser, completion: @escaping (Result&lt;( ZCatalystUser, Int64 ), ZCatalystError &gt;) -> Void) **Parameters**: * **user**: The user instance created before this operation * **completion**: If the call executes successfully, the completion block returns the user object with an UserID, ZUID, Org ID, etc assigned for the user. Else, it returns an error. A sample code snippet is shown below: let userobj = ZCatalystApp.shared.newUser( lastName : "McRogan", email : "timothy.mcrogan@zylker.com") //Replace this with the last name and email address of the user ZCatalystApp.shared.signUp(user: userobj) { ( result ) in switch result{ case .success ( let result ) : print("The user \(result.0.firstName) in org \(result.1) has been successfully signed up.") case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } -------------------------------------------------------------------------------- title: "User Login" description: "You can display the login page to the end user of your Catalyst iOS app." last_updated: "2026-07-02T09:34:10.060Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/authentication/user-login/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Users (/en/cloud-scale/help/authentication/user-management/users/introduction/) - Authentication - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) -------------------------------------------------------------------------------- # User Login You can display the login page to the end user of your Catalyst iOS app using the **showLogin()** method. This will be displayed when the user is logged out of the app. If the login is successful, the user will be able to access the app. The code syntax for user login is given below: ZCatalystApp.shared.showLogin( completion : @escaping ( Error? ) -> Void ) ViewController.swift **Parameters**: * **completion**: The completion block will be passed with an error if the login was unsuccessful. -------------------------------------------------------------------------------- title: "User Logout" description: "You can log an app user out from the Catalyst iOS app." last_updated: "2026-07-02T09:34:10.060Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/authentication/user-logout/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Users (/en/cloud-scale/help/authentication/user-management/users/introduction/) - Logout User - API (/en/api/code-reference/cloud-scale/authentication/sign-out-user/#SignOutUser) -------------------------------------------------------------------------------- # User Logout The **logout()** method can log an app user out from the Catalyst iOS app. The code syntax for user logout is given below: ZCatalystApp.shared.logout( completion : @escaping ( Error? ) -> Void ) ViewController.swift **Parameters**: * **completion**: The completion block will be passed with an error if the logout was unsuccessful. -------------------------------------------------------------------------------- title: "Get Current User" description: "You can obtain the details of the current end user of your application." last_updated: "2026-07-02T09:34:10.060Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/authentication/get-current-user/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Users (/en/cloud-scale/help/authentication/user-management/users/introduction/) - Get Current User - API (/en/api/code-reference/cloud-scale/authentication/get-current-user/#GetCurrentUser) -------------------------------------------------------------------------------- # Get Current User You can obtain the details of the current end user of your application by calling the **getCurrentUser()** method. Upon successful execution, this method will return the current user object. You can fetch the user's details that are registered in Catalyst, like their first name, last name, email address, etc using this. The code syntax for obtaining the current user is given below: ZCatalystApp.shared.getCurrentUser( completion: @escaping (Result&lt; ZCatalystUser,ZCatalystError &gt; ) -> Void ) **Parameters**: * **completion**: If the call is successful, the completion block will return the current user object. Else, it will return an error. A sample code snippet is shown below: ZCatalystApp.shared.getCurrentUser { ( result ) in switch result{ case .success ( let user) : print("The current user is \(user.firstName).") case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } -------------------------------------------------------------------------------- title: "Third-Party Authentication" description: "You can implement a third-party authentication service of your preference in your iOS app." last_updated: "2026-07-02T09:34:10.060Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/authentication/third-party-authentication/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Third-Party Authentication (/en/cloud-scale/help/authentication/third-party-authentication/introduction/) - Generate Custom Server Token- Java SDK (/en/sdk/java/v1/cloud-scale/authentication/third-party-server-token/) - Generate Custom Server Token- Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/authentication/third-party-server-token/) - Generate Custom Server Token- Python SDK (/en/sdk/python/v1/cloud-scale/authentication/third-party-server-token/) - Authentication - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) -------------------------------------------------------------------------------- # Third-Party Authentication Cloud Scale's Authentication 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 implement third-party authentication in your iOS app, you will need to perform the steps described below. ### 1. Configure the Third-Party Authentication Service Before you associate a third-party authentication with your Catalyst application, you must ensure that you have first completed handling the third-party logic in the external service. You can configure the authentication with any third-party of your choice. <br> ### 2. Set up the Third-Party Authentication Type in Catalyst You must now set up the third-party authentication that you configured in Catalyst by navigating to the Authentication component in Cloud Scale in the Catalyst console. The steps are explained in Set Up Third-party Authentication in Catalyst help page. This process involves the following steps that you must perform: **i. Generate a custom server token:** 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 will need to code in Java, Node.js, or Python. This function will generate a Catalyst server-side token **jwtToken** or **customToken** which will then be passed to client-side (iOS app). The Catalyst console provides readymade scripts to generate the customToken. You can incorporate this script in the server-side function you write, to return the customToken. Note: To enable a third-party authentication in your Catalyst application, you must ensure that you have enabled Public Signup in the console. **ii. Skip the client-side configuration:** You can skip the client-side configuration in the console for now, as we will incorporate the custom server token in the client logic at the end to complete the login process. **iii. Configure additional settings and finish the setup:** Configure Customer User Validation or Authorized Domains as a part of Whitelisting and finish the set up. Catalyst will display a confirmation that a third-party authentication service has been enabled and your application’s authentication is being handled by it. <br> ### 3. Re-Import the Configuration File in your iOS Project After you enable the third-party authentication for your iOS app from the Catalyst console, you will need to download and import the AppConfigurationDevelopment.plist or the AppConfigurationProduction.plist properties file in your iOS project again, based on your app's environment. This is because this file will now include two additional properties: JWTClientID and JWTClientSecret. These properties will need to be passed in the next step, after you re-initialize the SDK. To re-download the configuration file: 1. Navigate to **Settings**, then **Developer Tools** in your Catalyst console of your project. You will find your existing iOS package under the Mobile SDK section. Open the package. <br> 2. Click on the required environment tab in the pop-up, then click **Download** to download the configuration file. <br> You can now re-import this downloaded configuration file by following the steps mentioned here. Note: You need not perform the steps 3, 4, 6 given in the SDK setup help page again. <br> ### 4. Re-Initialize the SDK You must now re-initialize the SDK to include the newly-downloaded properties in your code. Re-initializing the SDK can be done similar to initializing the SDK for the first time. However, you will now need to specify the JWTClientID and JWTClientSecret properties obtained from the newly-downloaded configuration file through with ZCatalystAppConfiguration. public func initSDK( window : UIWindow, environment : ZCatalystEnvironment, appConfiguration : ZCatalystAppConfiguration ) throws **Parameters:** * **window**: The window object that dispatches events to your views * **appConfiguration**: An object containing all the configuration details for the functioning of the SDK. * **environment**: The environment of your app, either **.development** or **.production**. The environment here indicates if the app is operating in the Development or the Production environment. Similar to including the appropriate plist configuration file based on the environment in your app's project, you must re-initialize the SDK for the appropriate environment. <br> ### 5. Code the User Login Logic for the Third-Party Authentication You can now complete the setup by handling the login logic of the third-party authentication in your iOS app. You must pass the customToken or jwtToken generated in [step 2](/en/sdk/ios/v2/cloud-scale/authentication/third-party-authentication/#2-set-up-the-third-party-authentication-type-in-catalyst) to the handleCustomLogin() method as shown below: public func handleCustomLogin( withJWT token : String, completion : @escaping ( Error? ) -> Void ) 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. ##### Data Store -------------------------------------------------------------------------------- title: "Create a New Data Store Instance" description: "You can obtain the details of the current end user of your application." last_updated: "2026-07-02T09:34:10.060Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Data Store - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Data Store Catalyst Data Store is a cloud-based relational database management system which stores the persistent data of your application in the form of tables. ### Create a New Data Store Instance To access the Data Store of a Catalyst project, you can create an instance of the Data Store, and enable the methods defined in this class to access the instance object. This will prevent unnecessary server calls. You must call the **getDataStoreInstance()** method as shown in the code syntax below, to obtain the Data Store instance successfully: ZCatalystApp.shared.getDataStoreInstance(tableIdentifier : String) -> ZCatalystDataStore -------------------------------------------------------------------------------- title: "Get Column Metadata" description: "You can obtain the metadata of all columns or single specific column of a Data Store table of the given instance by its ID or name." last_updated: "2026-07-02T09:34:10.060Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/data-store/get-column-metadata/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Columns (/en/cloud-scale/help/data-store/columns) - Get Metadata of Coulumns - API (/en/api/code-reference/cloud-scale/data-store/get-all-columns-metadata/#GetAllColumnsMetadata) -------------------------------------------------------------------------------- # Get Column Metadata ### Get the Metadata of a Specific Column You can obtain the metadata of a single specific column of a Data Store table of the given instance, by calling the **getColumn()** method. If the operation is successful, this method can return the metadata of the column such as its data type, default value, maximum length, or whether it is read only, unique, or mandatory. You can retrieve a specific column's metadata by passing the column ID as the argument to the getColumn() method, as shown in the code syntax below. The &lt;DATA_STORE_INSTANCE&gt; used here is the instance defined in the Table Instance page. &lt;DATA_STORE_INSTANCE&gt;.getColumn( id : Int64, completion : @escaping ( Result&lt; ZCatalystColumn, ZCatalystError &gt; ) -> Void ) **Parameters**: * **id**: The unique Column ID of the particular column that needs to be retrieved * **completion**: If the operation is successful, the completion block will return the column details. Else, it will return an error. A sample code snippet is shown below: ZCatalystApp.shared.getDataStoreInstance(tableIdentifier : String).getColumn(id :1096000000002459 ) { ( result ) in //Replace this with your column ID switch result{ case .success ( let column) : print(column.name) case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } ### Get the Metadata of all Columns You can retrieve the metadata of all the columns of a table of the given instance, using the **getColumns()** method, as shown in the code syntax below. If the operation is successful, this method can return the metadata of all the columns of the specific table. The &lt;DATA_STORE_INSTANCE&gt; used in the code below is the instance created earlier in the Table Instance page. &lt;DATA_STORE_INSTANCE&gt;.getColumns( completion : @escaping ( Result&lt; [ ZCatalystColumn ], ZCatalystError &gt; ) -> Void ) **Parameters**: * **completion**: If the operation is successful, the completion block will return the details of all the columns in the table. Else, it will return an error. A sample code snippet is shown below: ZCatalystApp.shared.getDataStoreInstance(tableIdentifier : "EmployeeDetails").getColumns{ ( result ) in // Replace this with your table name switch result { case .success ( let columns) : for column in columns { print(column.name) } case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } -------------------------------------------------------------------------------- title: "Get Rows" description: "You can retrieve a single specific row or all rows, even with pagination, from a Data Store table of the given instance." last_updated: "2026-07-02T09:34:10.060Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/data-store/get-rows/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Get All Rows - API (/en/api/code-reference/cloud-scale/data-store/get-all-rows/#GetAllRows) -------------------------------------------------------------------------------- # Get Rows ### Get a Specific Row You can retrieve a single specific row from a Data Store table of the given instance using the **getRow()** method. This is done by passing the unique ROWID of the row as the argument to this method, as shown in the code syntax below. The &lt;DATA_STORE_INSTANCE&gt; used in the code below is the instance defined in the Data Store Instance page. &lt;DATA_STORE_INSTANCE&gt;.getRow(id : Int64, completion: @escaping (Result&lt;ZCatalystRow, ZCatalystError&gt;) -> Void) **Parameters**: * **id**: The unique ROWID of the particular row that needs to be retrieved * **completion**: If the operation is successful, the completion block will return the details of the row. Else, it will return an error. A sample code snippet is shown below: ZCatalystApp.shared.getDataStoreInstance(tableIdentifier : "EmployeeDetails").getRow(id: 1096000000002845){( result ) in // Replace this with your Table identifier and ROW ID here switch result{ case .success ( let row) : print(row.id) case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } <br> ### Get Rows Through Pagination You can retrieve all the rows from a table in the Data Store by incorporating pagination in your code. Pagination allows you to fetch the rows of a table in batches or pages through iterations. For example, if you require the rows to be fetched in batches of 100 as individual pages, you can define the maximum rows to be fetched in each page and specify the count using **maxRows** as shown below. Additionally, after each execution of the loop, you will receive a token string in the response that authorizes the subsequent fetching of data. You can pass this as the value for nextToken during the subsequent iteration. During the first execution of the loop, the nextToken string is not passed. The &lt;DATA_STORE_INSTANCE&gt; used in the code snippets below is the instance defined in the Data Store Instance page. &lt;DATA_STORE_INSTANCE&gt;.getRows(nextToken : String?, maxRecord : String?, completion: @escaping (Result&lt;[ZCatalystRow], ZCatalystError&gt;) -&gt; Void) **Parameters**: * **maxRows**: The maximum number of rows to be fetched in this iteration * **nextToken**: The authorization token to fetch the next set of rows If you prefer to fetch all pending rows after the first iteration, you can avoid passing the maxRows limit. After all the rows are fetched, the pagination will be complete. <br> ### Get All Rows You can retrieve all the rows of a table of the given instance, using the **getRows()** method, as shown in the code syntax below. If the operation is successful, this method will return all the rows of the table without any filters or conditions. The &lt;DATA_STORE_INSTANCE&gt; used in the code below is the instance defined in the Data Store Instance page. &lt;DATA_STORE_INSTANCE&gt;.getRows(completion: @escaping (Result&lt;[ZCatalystRow], ZCatalystError&gt;) -> Void) **Parameters**: * **completion**: If the operation is successful, the completion block will return the details of all the rows. Else, it will return an error. A sample code snippet is shown below: ZCatalystApp.shared.getDataStoreInstance(tableIdentifier : "EmployeeDetails").getRows{ ( result ) in //Replace this with your table name switch result{ case .success ( let rows) : for row in rows{ print(row.id) } case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } -------------------------------------------------------------------------------- title: "Create a New Row Instance" description: "You can create a new row instance for a particular table in the Data Store." last_updated: "2026-07-02T09:34:10.060Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/data-store/create-new-row-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Insert Row - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Create a New Row Instance You can create a new row instance for a particular table in the Data Store, and enable the methods defined in this class to access the instance object. This prevents unnecessary server calls. A row instance can be created by calling the **newRow()** method, as shown in the code syntax below. The &lt;DATA_STORE_INSTANCE&gt; used here is the instance defined in the Data Store Instance page. &lt;DATA_STORE_INSTANCE&gt;.newRow() -> ZCatalystRow A sample code snippet is shown below: let instance = ZCatalystApp.shared.getDataStoreInstance(tableIdentifier: “1096000000002071” ).newRow() //Replace this with your table ID -------------------------------------------------------------------------------- title: "Get Column Value from Row" description: "You can retrieve a specific column's value in a row in a Data Store table." last_updated: "2026-07-02T09:34:10.061Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/data-store/column-value-from-row/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Columns (/en/cloud-scale/help/data-store/columns) - Get Metadata of Columns - API (/en/api/code-reference/cloud-scale/data-store/get-all-columns-metadata/#GetAllColumnsMetadata) -------------------------------------------------------------------------------- # Get Column Value from Row You can retrieve a specific column's value in a row in a Data Store table. That is, if you require the value of the column 'Employee ID' alone for in a row, you can retrieve it using this operation. You can execute this operation in three ways, as shown below. The &lt;ROW_INSTANCE&gt; used in all the code sections below is the instance defined in the Row Instance page. ### If you know the data type of the column: let data : &lt;T&gt; = try &lt;ROW_INSTANCE&gt;.getValue(forKey: "&lt;columnName&gt;") **Parameters**: * **T**: Datatype of the expected value * **columnName**: Name of the column for that needs to be fetched A sample code snippet is shown below: ZCatalystApp.shared.getDataStoreInstance().getTableInstance(id: 1096000000002071).getRow(id: 1096000000002845) {( result ) in //Replace this with your Table ID and ROWID switch result{ case .success ( let row) : do{ let data : String = try row.getValue(forKey: "EmpID") as! String print(data) } catch{ print("Error occured") } case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } ### If you don't know the data type of the column: let data : &lt;T&gt;? = &lt;ROW_INSTANCE&gt;.getValue(forKey: "&lt;columnName&gt;") **Parameters**: * **T**: Datatype of the expected value * **columnName**: Name of the column for that needs to be fetched A sample code snippet is shown below: ZCatalystApp.shared.getDataStoreInstance().getTableInstance(id: 1096000000002071).getRow(id: 1096000000002845) {( result ) in //Replace this with your Table ID and Row ID switch result{ case .success ( let row) : let data :String? = row.getValue(forKey: "EmpID") print(data) case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } ### Without using getValue(): let data : &lt;T&gt;? = &lt;ROW_INSTANCE&gt;[ "&lt;columnName&gt;" ] **Parameters**: * **T**: Datatype of the expected value * **columnName**: Name of the column for that needs to be fetched ZCatalystApp.shared.getDataStoreInstance().getTableInstance(id: 1096000000002071).getRow(id: 1096000000002845) {( result ) in //Replace this with your Table ID and Row ID switch result{ case .success ( let row) : let data :String? = row[ "EmpID" ] print(data) case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } -------------------------------------------------------------------------------- title: "Get Row Data" description: "The actual data of a specific row can be retrieved." last_updated: "2026-07-02T09:34:10.061Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/data-store/get-row-data/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Get Rows - API (/en/api/code-reference/cloud-scale/data-store/get-all-rows/#GetAllRows) -------------------------------------------------------------------------------- # Get Row Data The actual data of a specific row can be retrieved using getData() method, as shown below. This returns the row in a dictionary format. The &lt;ROW_INSTANCE&gt; used in the code syntax below is the instance generated in the Row Instance page. &lt;ROW_INSTANCE&gt;.getRow() -> [ String : Any? ] A sample code snippet is shown below: ZCatalystApp.shared.getDataStoreInstance(tableIdentifier: "1096000000002071").getRow(id: 1096000000002845) {( result ) in //Replace this with your Table ID and ROW ID switch result{ case .success ( let row) : let datas = row.getData() print(datas) case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } -------------------------------------------------------------------------------- title: "Add Column Value to Row" description: "You can set the value for a single specific column in a row." last_updated: "2026-07-02T09:34:10.061Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/data-store/add-column-value-to-row/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Get Metadata of Coulumns - API (/en/api/code-reference/cloud-scale/data-store/get-all-columns-metadata/#GetAllColumnsMetadata) -------------------------------------------------------------------------------- # Add Column Value to Row You can set the value for a single specific column in a row by this method. This can be used while creating or updating a row in a column. The &lt;ROW_INSTANCE&gt; used in the code below is the instance created in the Row Instance page. &lt;ROW_INSTANCE&gt;.setColumnValue( columnName : String, value : Any? ) **Parameters**: * **columnName**: The name of the column the value should be set for * **value**: The value to be set for the column A sample code snippet is shown below: let instance = ZCatalystApp.shared.getDataStoreInstance().getTableInstance(id: 1096000000002071).newRow() //Replace this with your Table ID instance.setColumnValue(columnName: "Department_Name", value: "Marketing") instance.setColumnValue(columnName: "Employee_Name", value: "Robert Jones") //Replace this with your column name and value -------------------------------------------------------------------------------- title: "Create Rows" description: "You can create a single row or multiple rows in a data store table." last_updated: "2026-07-02T09:34:10.061Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/data-store/create-rows/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Insert Row - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Create Rows ### Create a Single Row You can create a new row in a Data Store table of the given instance using the **newRow()** method, as shown below. You must set the values of the rows in the table, by specifying the column name and the corresponding row value as a key-value pair. The &lt;ROW_INSTANCE&gt; used in the code syntax below is the instance defined in the Row Instance page. The column value is set using the method discussed in the Add a Column Value page. **Parameters**: * **completion**: If the operation is successful, the completion block will return the details of the created row, such as its unique ROWID and other meta information. Else, it will return an error. Note: If a column was created with the is_unique or is_mandatory property enabled, you must ensure that the value is unique or is mandatorily passed, respectively. You must also ensure that the data you pass for a column is of the column's configured data type. A sample code snippet is shown below: let instance = ZCatalystApp.shared.getDataStoreInstance(tableIdentifier: "1096000000002071").newRow() //Replace this with your Table ID instance.setColumnValue(columnName: "Department_Name", value: "Marketing") instance.setColumnValue(columnName: "Employee_Name", value: "Linda Page") //Replace this with your column name and value instance.create() {(result) in switch result{ case .success ( let row) : print("A new row is successfully created with row id /(row.id)") case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } ### Create Multiple Rows iOS SDK enables you to create multiple rows in a table of the given instance at a time. This is done by passing an array containing the rows that need to be inserted in the table. The array is passed as an argument to the **create()** method, as shown in the code structure below. You must pass the array of &lt;ROW_INSTANCE&gt;, after creating the instance for each row as explained in the Row Instance page. Their column value must be set as discussed in the Add a Column Value page. The &lt;DATA_STORE_INSTANCE&gt; used in the code below is the instance created earlier in the Data Store Instance page. &lt;DATA_STORE_INSTANCE&gt;.create(_ rows: [ ZCatalystRow ], completion: @escaping(Result&lt;[ZCatalystRow], ZCatalystError&gt;) -> Void) **Parameters**: * **rows**: The array of rows to be created. * **completion**: If the operation is successful, the completion block returns the details of the rows created, such as their ROWIDs and other meta information. Else, it returns an error. A sample code snippet is shown below: let row_instance1 = ZCatalystApp.shared.getDataStoreInstance(tableIdentifier: "1096000000002071").newRow() //replace your table id here row_instance1.setColumnValue(columnName: "Department_Name", value: "Marketing") row_instance1.setColumnValue(columnName: "Employee_Name", value: "Robert Jones") //Replace this with your column name and value let row_instance2 = ZCatalystApp.shared.getDataStoreInstance(tableIdentifier: "1096000000002071").newRow() //Replace this with your Table ID row_instance2.setColumnValue(columnName: "Department_Name", value: "Finance") row_instance2.setColumnValue(columnName: "Employee_Name", value: "Louis Smith") //Replace this with your column name and value ZCatalystApp.shared.getDataStoreInstance(tableIdentifier: "1096000000002071").create([row_instance1, row_instance2]) {(result) in switch result{ case .success ( let rows) : print("The rows ids which are successfully created are listed below") for row in rows{ print(row.id) } case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } -------------------------------------------------------------------------------- title: "Update Rows" description: "You can update a single row or multiple rows in a data store table." last_updated: "2026-07-02T09:34:10.061Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/data-store/update-rows/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Rows (/en/cloud-scale/help/data-store/records) - Update Row - API (/en/api/code-reference/cloud-scale/data-store/update-row/#UpdateRow) -------------------------------------------------------------------------------- # Update Rows ### Update a Specific Row You can update a single specific row in a Data Store table using the **update()** method. This enables you to update the values of one or more columns of the row by passing the modified values of the columns as key-value pairs. The &lt;ROW_INSTANCE&gt; used in the code syntax below is the instance defined in the Row Instance page. &lt;ROW_INSTANCE&gt;.update( completion: @escaping(Result&lt;ZCatalystRow, ZCatalystError&gt;) -> Void) **Parameters**: * **completion**: If the operation is successful, the completion block will return the details of the updated row. Else, it will return an error. A sample code snippet is shown below: ZCatalystApp.shared.getDataStoreInstance(tableIdentifier: "1096000000002071").getRow(id: 3376000000170191){(result)in //Replace this with your Table ID switch result{ case .success ( let row) : row.setColumnValue(columnName: "Employee_Name", value: "Morgan Jones") //replace your column name and value here row.update {(update_result) in switch update_result{ case .success(let updated_row) : print("Name is updated") case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } ### Update all Rows You can update multiple row in a table by passing an array of the rows as an argument to the update() method. This enables you to update the values of one or more columns of the rows, by passing the modified values of the columns as key-value pairs. You must pass the array of the row instances to be updated by creating the instance for each row, and passing the updated value of each corresponding column using the Add Column Value method, as shown in the code below. The &lt;DATA_STORE_INSTANCE&gt; used in the code below is the instance defined in the Table Instance page. &lt;DATA_STORE_INSTANCE&gt;.update(_ rows: [ ZCatalystRow ], completion: @escaping(Result&lt;[ZCatalystRow], ZCatalystError&gt;) -> Void) **Parameters**: * **rows**: The array of rows to be updated * **completion**: If the operation is successful, the completion block will return the details of all the updated rows. Else, it will return an error. A sample code snippet is shown below: let data_store_instance = ZCatalystApp.shared.getDataStoreInstance(tableIdentifier: "EmployeeDetails")//Replace this with you Table Name data_store_instance.getRows{(result)in switch result{ case .success ( let rows) : for row in rows{ row.setColumnValue(columnName: "Employee_Name", value: "Morgan Jones") } data_store_instance.update(rows) {(result) in switch result { case .success ( let updated_rows): print("Rows has been successfully updated"); case .error( let error ) : print( "Error occurred >>> \( error )" ) } } case .error(let error): print("Error occurred >>> \( error )") } } -------------------------------------------------------------------------------- title: "Delete a Row" description: "Catalyst iOS SDK enables you to delete a single row from a specific Data Store table by either the Row ID or the Row Instance." last_updated: "2026-07-02T09:34:10.061Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/data-store/delete-row/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Delete Row - API (/en/api/code-reference/cloud-scale/data-store/delete-row/#DeleteRow) -------------------------------------------------------------------------------- # Delete a Row Catalyst iOS SDK enables you to delete a single row from a specific Data Store table. However, you will not be able to delete multiple rows at a time. You can delete a row from a table in any of these two methods: ### Delete a Row by passing the Row ID to the Table Instance You can delete a row from a table by passing the ROWID of the row as the argument to the **deleteRow()** method, as shown in the code syntax below. The &lt;DATA_STORE_INSTANCE&gt; used in the code syntax below is the instance defined in the Data Store Instance page. &lt;DATA_STORE_INSTANCE&gt;.deleteRow( id : Int64, completion : @escaping( ZCatalystError? ) -> Void ) **Parameters**: * **id**: The unique ROWID of the row to be deleted. * **completion**: If the operation is successful, the completion block will return the details of the deleted row. Else, it will return an error. A sample code snippet is shown below: ZCatalystApp.shared.getDataStoreInstance(tableIdentifier: "1096000000002071").deleteRow(id: 3376000000171021){( error ) in //Replace this with your ROWID if let error = error{ print( "Error occurred &gt;&gt;&gt; \( error )" ) } else { print("Row is successfully deleted.") } } ### Delete a Row by passing the Row Instance You can delete a row from a table simply by calling the **delete()** method for the row instance. The &lt;ROW_INSTANCE&gt; used in the code syntax below is the instance defined in the Row Instance page. &lt;ROW_INSTANCE&gt;.delete(completion: @escaping( ZCatalystError? ) -> Void) **Parameters**: * **completion**: If the operation is successful, the completion block will return the details of the deleted rows. Else, it will return an error. A sample code snippet is shown below: ZCatalystApp.shared.getDataStoreInstance().getTableInstance(id: 1096000000002071).getRow(id: 3376000000171021){(result)in //Replace this with your ROWID switch result { case .success ( let row) : row.delete() {( error ) in if let error = error{ print( "Error occurred &gt;&gt;&gt; \( error )" ) } else { print("Row is successfully deleted.") } } case .error(let error) : print("Error occurred &gt;&gt;&gt; \( error )") } } ##### File Store -------------------------------------------------------------------------------- title: "Create a File Store Instance" description: "Catalyst File Store provides storage solutions for the app data files and user data files of your Catalyst application, and enables access to shared data." last_updated: "2026-07-02T09:34:10.061Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/file-store/create-file-store-instance/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) - File Store Implementation (/en/cloud-scale/help/file-store/implementation) - File Store - API (/en/api/code-reference/cloud-scale/file-store/get-specific-folder/#GetSpecificFolder) -------------------------------------------------------------------------------- # File Store Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. Catalyst File Store provides cloud storage solutions for the application files and user data files of your Catalyst application, and enables access to shared data. You can store, manage, and organize images, videos, text files, document files, spreadsheets, or files of other formats. ### Create a File Store Instance You can create an instance of your Catalyst project's File Store using the **getFileStoreInstance()** method, and enable the methods defined in this class to access the instance object. This prevents unnecessary server calls. A File Store instance can be created as shown below: ZCatalystApp.shared.getFileStoreInstance() -> ZCatalystFileStore -------------------------------------------------------------------------------- title: "Get Folders" description: "Catalyst File Store provides storage solutions for the app data files and user data files of your Catalyst application, and enables access to shared data." last_updated: "2026-07-02T09:34:10.061Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/file-store/get-folders/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) - File Store Implementation (/en/cloud-scale/help/file-store/implementation) - Get Folder - API (/en/api/code-reference/cloud-scale/file-store/get-all-folders/#GetAllFolders) -------------------------------------------------------------------------------- # Get Folders Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. ### Get the Metadata of a Specific Folder You can obtain the details of a specific folder in the File Store, by passing its unique Folder ID as an argument to the **getFolder()** method, as shown in the code syntax below. This fetches the folder object using which you can retrieve the folder's metadata such as the details of its creation, last modification, and the meta details of the files in it. The &lt;FILE_STORE_INSTANCE&gt; used in the code below is the instance defined in the File Store Instance page. &lt;FILE_STORE_INSTANCE&gt;.getFolder( id : Int64, completion : @escaping ( Result&lt; ZCatalystFolder, ZCatalystError &gt; ) -> Void ) **Parameters**: * **id**: The unique Folder ID of the folder to be retrieved * **completion**: If the operation is successful, the completion block will return the folder details. Else, it will return an error. A sample code snippet is shown below: ZCatalystApp.shared.getFileStoreInstance().getFolder(id : 3376000000427654) {(result) in //Replace this with your Folder ID switch result { case .success ( let folder) : print("The names of the folder are " + folder.name) case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } ### Get the Metadata of all Folders You can retrieve the details of all the folders available in your project's File Store using the **getFolders()** method, as shown in the code syntax below. This can fetch the meta data of all the folders, and the files in them. The &lt;FILE_STORE_INSTANCE&gt; used in the code below is the instance defined in the File Store Instance page. &lt;FILE_STORE_INSTANCE&gt;.getFolders( completion : @escaping ( Result&lt; [ ZCatalystFolder ], ZCatalystError &gt; ) -> Void ) **Parameters**: * **completion**: If the operation is successful, the completion block will return the details of all the folders. Else, it will return an error. A sample code snippet is shown below: ZCatalystApp.shared.getFileStoreInstance().getFolders() {(result) in switch result{ case .success ( let folders) : for folder in folders { print("The names of the folder are " + folder.name) } case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } -------------------------------------------------------------------------------- title: "Create a Folder Instance" description: "You can create an instance for a specific folder in the File Store and enable the methods defined in this class to access the instance object." last_updated: "2026-07-02T09:34:10.061Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/file-store/create-folder-instance/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) - File Store Implementation (/en/cloud-scale/help/file-store/implementation) - File Store - API (/en/api/code-reference/cloud-scale/file-store/get-specific-folder/#GetSpecificFolder) -------------------------------------------------------------------------------- # Create a Folder Instance Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. You can create an instance for a specific folder in the Catalyst File Store using the **getFolderInstance()** method, and enable the methods defined in this class to access the instance object. You must pass the Folder ID of that folder to the getFolderInstance() method, as shown in the code syntax below. The &lt;FILE_STORE_INSTANCE&gt; used in the code below is the instance defined in the File Store Instance page &lt;FILE_STORE_INSTANCE&gt;.getFolderInstance( id : Int64 ) -> ZCatalystFolder **Parameters**: * **id**: The unique Folder ID of the folder that the instance object must be returned for A sample code snippet is shown below: let folderInstance = ZCatalystApp.shared.getFileStoreInstance().getFolderInstance(id : 3376000000427654) //Replace this with your Folder ID -------------------------------------------------------------------------------- title: "Get Files" description: "You can retrieve the details of a specific file or of all the files in the File Store." last_updated: "2026-07-02T09:34:10.062Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/file-store/get-files/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) - File Store Implementation (/en/cloud-scale/help/file-store/implementation) - Get File - API (/en/api/code-reference/cloud-scale/file-store/get-specific-file/#GetSpecificFile) -------------------------------------------------------------------------------- # Get Files Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. ### Get the Metadata of a Specific File You can retrieve the details of a specific file in the File Store, by passing its unique File ID as an argument to the **getFile()** method, as shown in the code syntax below. This fetches the file object using which you can retrieve the file's metadata such as the details of its creation, last modification, file size, etc. The &lt;FOLDER_INSTANCE&gt; used in the code below is the instance defined in the Folder Instance page. &lt;FOLDER_INSTANCE&gt;.getFile( fileId : Int64, completion : @escaping ( Result&lt; ZCatalystFile, ZCatalystError &gt; ) -> Void ) **Parameters**: * **id**: The unique File ID of the file to be retrieved * **completion**: If the operation is successful, the completion block will return with the file details. Else, it will return an error. A sample code snippet is shown below: ZCatalystApp.shared.getFileStoreInstance().getFolderInstance(id : 105000000121098) .getFile(fileId : 332000000044009){(result) in //Replace this with your Folder ID and File ID switch result { case .success ( let file) : print("The name of the file is " + file.name) case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } ### Get the Metadata of all Files You can retrieve the details of all the files available in a specific folder using the **getFiles()** method, as shown in the code syntax below. The &lt;FOLDER_INSTANCE&gt; used in the code below is the instance defined in the Folder Instance page. &lt;FOLDER_INSTANCE&gt;.getFiles( completion : @escaping ( Result&lt; [ ZCatalystFile ], ZCatalystError &gt; ) -> Void ) **Parameters**: * **completion**: If the operation is successful, the completion block will return the details of all the files. Else, it will return an error. A sample code snippet is shown below: ZCatalystApp.shared.getFileStoreInstance().getFolderInstance(id : 105000000121098) .getFiles {(result) in //Replace this with your Folder ID switch result { case .success ( let files) : for file in files{ print("The names of the folder are \(file.name)") } case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } -------------------------------------------------------------------------------- title: "Upload a File" description: "You can upload a file to an existing folder in the File Store." last_updated: "2026-07-02T09:34:10.062Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/file-store/upload-file/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) - File Store Implementation (/en/cloud-scale/help/file-store/implementation) - Upload File - API (/en/api/code-reference/cloud-scale/file-store/upload-file-in-folder/#UploadFileInaFolder) -------------------------------------------------------------------------------- # Upload a File Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. You can upload a file to an existing folder in the File Store. After the file is uploaded in the folder, a unique File ID will be generated for it. You can upload an image, text document, CSV, or any type of file you need upto 100MB of file size. You can upload the file in one of the following ways, as discussed below. The &lt;FOLDER_INSTANCE&gt; used in the code sections of all the methods below is the instance defined in the Folder Instance page. This will refer to the folder that the file must be uploaded in. ### Through Delegate You can upload the file to the folder of the given folder instance through a delegate. This can be done in two ways: #### i. By passing the file path You can pass the File Reference ID and file path along with the delegate method object as the arguments to the upload() method: &lt;FOLDER_INSTANCE&gt;.upload( fileRefId : String, filePath : URL, fileUploadDelegate : ZCatalystFileUploadDelegate ) **Parameters**: * **fileRefId**: A unique reference ID to identify a specific upload task. This is returned in the Delegate method after the task is successfully completed. * **filePath**: The file path of the file to be uploaded in the local system. * **fileUploadDelegate**: An instance of the type ZCatalystFileUploadDelegate A sample code snippet is shown below: func progress(fileRefId: String, session: URLSession, sessionTask: URLSessionTask, progressPercentage: Double, totalBytesSent: Int64, totalBytesExpectedToSend: Int64) { print("The percentage of file upload is \(progressPercentage)") } func didFinish(fileRefId: String, fileDetails: ZCatalystFile) { print("The file with reference id " + fileRefId + " is successfully uploaded.") } func didFail(fileRefId: String, with error: ZCatalystError?) { print("The file with reference id " + fileRefId + " upload has been failed due to \(ZCatalystError.self)") } } let filePath = self.testBundle?.path( forResource : "companylogo", ofType : "jpeg" ) //Replace this with your file name let url = URL( fileURLWithPath : filePath! ) ZCatalystApp.shared.getFileStoreInstance().getFolderInstance( id : 2823000000006544 ).upload( fileRefId : fileRefId, filePath : url, fileUploadDelegate : self ) //Replace this with your Folder ID #### ii. By passing the file data You can pass the file data along with the delegate method object as the arguments to the upload() method: &lt;FOLDER_INSTANCE&gt;.upload( fileRefId : String, fileName : String, fileData : Data, fileUploadDelegate : ZCatalystFileUploadDelegate ) **Parameters**: * **fileRefId**: A unique reference ID to identify a specific upload task. This is returned in the Delegate method after the task is successfully completed. * **fileName**: The name of the file to be uploaded. * **fileData**: The contents of the file of the type Data * **fileUploadDelegate**: An instance of the type ZCatalystFileUploadDelegate A sample code snippet is shown below: func progress(fileRefId: String, session: URLSession, sessionTask: URLSessionTask, progressPercentage: Double, totalBytesSent: Int64, totalBytesExpectedToSend: Int64) { print("The percentage of file upload is \(progressPercentage)") } func didFinish(fileRefId: String, fileDetails: ZCatalystFile) { print("The file with reference id " + fileRefId + " is successfully uploaded.") } func didFail(fileRefId: String, with error: ZCatalystError?) { print("The file with reference id " + fileRefId + " upload has been failed due to \(ZCatalystError.self)") } } if let data = image?.pngData() ZCatalystApp.shared.getFileStoreInstance().getFolderInstance( id : 105000000121098 ).upload( fileRefId : "1234567", fileName : url.lastPathComponent, fileData: data, fileUploadDelegate : self ) //Replace this with your File Reference ID ### Through Completion Handler You can upload the file to the folder of the given folder instance through a completion handler. This can be done in two ways: #### i. By passing the file path You can pass the file path along with the completion handler as the arguments to the upload() method: &lt;FOLDER_INSTANCE&gt;.upload( filePath : URL, completion : @escaping ( Result&lt; ZCatalystFile, ZCatalystError &gt; ) -> Void ) **Parameters**: * **filePath**: The file path of the file to be uploaded in the local system. * **completion**: If the operation is successful, the completion block will return the details of the uploaded file. Else, it will return an error. A sample code snippet is shown below: let filePath = self.testBundle?.path( forResource : "document", ofType : "jpeg" ) //Replace this with your file name let url = URL( fileURLWithPath : filePath! ) ZCatalystApp.shared.getFileStoreInstance().getFolderInstance( id : 105000000121098 ).upload( filePath : url) { ( fileResult ) in //Replace this with your Folder ID switch fileResult{ case .success (let file) : print ("Image has been successfully uploaded and it's id is " + file.id) case .error(let error) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } #### ii. By passing the file data You can pass the file data along with the completion handler as the arguments to the upload() method: &lt;FOLDER_INSTANCE&gt;.upload( fileName : String, fileData : Data, completion: @escaping (Result&lt;ZCatalystFile, ZCatalystError&gt;) -> Void ) **Parameters**: * **fileName**: The name of the file to be uploaded. * **fileData**: The contents of the file of the type Data. * **completion**: If the operation is successful, the completion block will return the details of the uploaded file. Else, it will return an error. A sample code snippet is shown below: let image = UIImage ( named : "document" ) //replace your file name here if let data = image?.pngData(){ ZCatalystApp.shared.getFileStoreInstance().getFolderInstance(id: 105000000121098).upload(fileName: "document", fileData: data, fileRefId : "123456789983") { (result) in //replace your file name and fire reference id here switch result{ case .success (let file) : print ("Image has been successfully uploaded and it's id is \(file.id)") case .error(let error) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } } -------------------------------------------------------------------------------- title: "Download a File" description: "You can download a file from an existing folder in the File Store." last_updated: "2026-07-02T09:34:10.062Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/file-store/download-file/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) - File Store Implementation (/en/cloud-scale/help/file-store/implementation) - Download File - API (/en/api/code-reference/cloud-scale/file-store/download-file-from-folder/#DownloadaFileFromaFolder) -------------------------------------------------------------------------------- # Download a File Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. You can download a file from an existing folder in the File Store by calling the **download()** method. The operation will return a temporary URL where the file is stored. You can download a file in one of the two ways shown below. The &lt;FILE_INSTANCE&gt; used in both the code sections is an instance created for the specific file, as shown in the sample code snippet. This will refer to the file from the specific folder that must be downloaded. ### Through Delegate The file is downloaded through a delegate in this method, as shown in the code syntax below: &lt;FILE_INSTANCE&gt;.download( fileDownloadDelegate : ZCatalystFileDownloadDelegate ) **Parameters**: * **FileDownloadDelegate**: An instance of the type ZCatalystFileDownloadDelegate. A sample code snippet is shown below: func progress(fileRefId: String, session: URLSession, downloadTask: URLSessionDownloadTask, progressPercentage: Double, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) { print("The percentage of file download is \(progressPercentage)") } func didFinish( fileRefId : String, fileResult : ( Data, URL ) ) { print("The file with reference id " + fileRefId + " is successfully downloaded.") } func didFail( fileRefId : String, with error : ZCatalystError? ) { print("The file with reference id " + fileRefId + " download has been failed due to \(ZCatalystError.self)") } ZCatalystApp.shared.getFileStoreInstance().getFolderInstance(id : 105000000121098) .getFile(id : 332000000044009){(result) in //replace your folder id and file id here switch result{ case .success ( let file) : file.download( fileDownloadDelegate : self ) case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } ### Through a Completion Handler The file is downloaded through a completion handler in this method, as shown in the code syntax below: &lt;FILE_INSTANCE&gt;.download( completion : @escaping ( Result&lt; ( Data, URL ), ZCatalystError &gt; ) -> Void ) **Parameters**: * **completion**: If the operation is successful, the completion block will return the file data and a temporary URL where the file data is stored. Else, it will return an error. A sample code snippet is shown below: ZCatalystApp.shared.getFileStoreInstance().getFolderInstance(id: 105000000121098).getFile(fileId: 332000000044009) {(result) in //Replace this with your Folder ID and File ID switch result{ case .success(let file) : file.download(){(result) in switch result{ case .success(let downloaded_file) : print("The file is successfully downloaded.") case .error(let error) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } case .error(let error) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } ##### Push Notifications -------------------------------------------------------------------------------- title: "Register Device for Push Notifications" description: "This page describes the method to register an iOS device for remote push notifications after you register and enroll your iOS app." last_updated: "2026-07-02T09:34:10.062Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/push-notifications/register-device/" service: "Cloud Scale" related: - Push Notifications (/en/cloud-scale/help/push-notifications/introduction) - iOS Push Notifications (/en/cloud-scale/help/push-notifications/ios) - Push Notifications API for iOS Devices (/en/api/code-reference/cloud-scale/push-notifications/ios/send-ios-push-notifications/#SendiOSPushNotifications) - Push Notifications Flutter SDK (/en/sdk/flutter/v2/cloud-scale/push-notifications/register-device/) -------------------------------------------------------------------------------- # Push Notifications ### Introduction 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. Catalyst provides you with an easy way to integrate push notifications into your Catalyst web, iOS, and Android applications. Before you send push notifications, you must follow a set of steps to register your app and enroll for Catalyst push notifications. These steps are mentioned in sequence below: 1. Register your iOS app with Apple 2. Generate a certificate from Keychain Access 3. Generate and download the APNs certificate provided by Apple 4. Convert the downloaded APNs certificate into the .p12 format 5. Enroll for iOS Push Notification Services in Catalyst 6. Register a Mobile Device for Push Notifications Note: The first five steps are covered in detail in the Push Notifications- iOS help section. This iOS SDK help documentation only covers the sixth step regarding registering a device to send push notifications, as well as deregistering a device. You can implement steps 1 -5 by referring to the Push Notifications help document, before using the code given below. <br> ### Register a Mobile Device for Push Notifications After you complete the first five steps mentioned above, you can implement the following code in your iOS app that will register the device for Catalyst Push Notifications. To register an iOS mobile device as a test device, you must call the registerNotification() method with the required parameters as shown in the following code snippet: ZCatalystApp.shared.registerNotification(token: e5********21, appID: 12345678, testDevice: false) { error in if let error = error { return print("Error : \( error )") } print("Registered successfully") } **Parameters:** * token: Device token obtained after registering the device for remote push notifications with APNS. * appID: The notificationAppID obtained from the AppConfigurationDevelopment.plist/ AppConfigurationProduction.plist file generated by Catalyst for your app when you registered your iOS app in Catalyst. * testDevice: The value is set to true for test devices, and set to false for production devices. <br> Note: You can register a maximum of 10 iOS devices as test devices to test iOS push notifications. After your device is registered, you will be able to send push notifications to your app users. The users will need to provide the permission for your app to send push notifications to them on their device, by clicking **Allow** from the permission prompt. You can learn about sending test push notifications on your registered devices from the Catalyst console from this help section. You can also send test notifications from the API. Refer to the Java, Node.js, and Python SDK documentation to learn about sending push notifications through your codebase. -------------------------------------------------------------------------------- title: "Deregister Device for Push Notifications" description: "This page describes the method to deregister a registered iOS device for remote push notifications." last_updated: "2026-07-02T09:34:10.062Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/push-notifications/deregister-device/" service: "Cloud Scale" related: - Push Notifications (/en/cloud-scale/help/push-notifications/introduction) - iOS Push Notifications (/en/cloud-scale/help/push-notifications/ios) - Push Notifications API for iOS Devices (/en/api/code-reference/cloud-scale/push-notifications/ios/send-ios-push-notifications/#SendiOSPushNotifications) -------------------------------------------------------------------------------- # Deregister a Mobile Device for Push Notifications You can deregister a device that was registered for Catalyst iOS push notifications by passing the required parameters to the deregisterNotification() method as shown below. ZCatalystApp.shared.deregisterNotification(token: e5********21, appID: 1234567, testDevice: true) { error in if let error = error { return print("Error : \( error )") } print("UnRegistered successfully") } **Parameters:** * token: token: Device token obtained after registering the device for remote push notifications with APNS. * appID: The notificationAppID obtained from the AppConfigurationDevelopment.plist/ AppConfigurationProduction.plist file generated by Catalyst for your app when you registered your iOS app in Catalyst. * testDevice: The value is set to true for test devices, and set to false for production devices ##### Search -------------------------------------------------------------------------------- title: "Search Data in Tables" description: "Catalyst Search enables data searching in the indexed columns of the tables in the Data Store. It allows you to perform powerful searches through volumes of data with a single search query." last_updated: "2026-07-02T09:34:10.062Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/search/search-data-in-tables/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Search (/en/cloud-scale/help/search-integration/introduction) - Search - API (/en/api/code-reference/cloud-scale/search/execute-search-query/#ExecuteSearchQuery) -------------------------------------------------------------------------------- # Search Catalyst Search enables data searching in the indexed columns of the tables in the Data Store. It allows you to perform powerful searches through volumes of data with a single search query. ### Search Data in Tables The **search()** method is used for searching data in the tables in a specific pattern. Before you execute a search operation, you must construct the search pattern to pass to the search() method, as shown in the code syntax below: ZCatalystApp.shared.search( searchOptions : ZCatalystSearchOptions, completion : @escaping( Result&lt; [ String : Any ], ZCatalystError &gt; ) -> Void ) **Parameters**: * **searchOptions**: The instance of the ZCatalystSearchOptions class to be passed to the search() method. * **completion**: If the call executes successfully, the completion block returns the data from the search results. Else, it returns an error. You can create the instance for searchOptions in the following way: ZCatalystSearchOptions(searchText: String, searchColumns : [ TableColumns ]) .add(searchColumns : TableColumns) .add(displayColumns : TableColumns) .add(sortColumn : String, in table : String) TableColumns( tableName : String ) TableColumns.add( column : String ) A sample code snippet of a search execution is shown below: var searchColumns = ZCatalystSearchOptions.TableColumns( tableName : "EmployeeDetails" ) //Replace this with your table name searchColumns.add( column : "Age" ) //Replace this with your column name var searchOptions = ZCatalystSearchOptions( searchText : "25", searchColumns : [ searchColumns ] ) //Replace this with your search text var displayColumns = ZCatalystSearchOptions.TableColumns( tableName : "EmployeeDetails" ) //Replace this with your table name displayColumns.add( column : "Age" ) //Replace this with your column name searchOptions.add(displayColumns: displayColumns) ZCatalystApp.shared.search( searchOptions : searchOptions) { ( result ) in switch result{ case .success( let response ) : print("Response : \( response )") case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } ##### Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page provides an overview of the mobile SDK methods required to perform Stratus operations." last_updated: "2026-07-02T09:34:10.062Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v1/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # 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 Bucket Instance</li> </ul> </td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>Get Object <ul> <li>Get All Objects</li> </ul> </li> <li>Download Object <ul> <li>Download an Object (Completion Callback)</li> <li>Download an Object (With Progress)</li> </ul> </li> <li>Upload Object <ul> <li>Upload an Object Using Path (Completion Callback)</li> <li>Upload an Object Using File Name and File Data (Completion Callback)</li> <li>Upload an Object Using Path (With Progress)</li> <li>Upload an Object Using File Name and File Data (With Progress)</li> </ul> </li> <li>Delete Object <ul> <li>Delete a Single Object</li> <li>Delete Multiple Objects</li> </ul> </li> <li>Delete Path</li> </ul> </td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Create Bucket Instance" description: "This page lists the iOS SDK method to create a bucket instance." last_updated: "2026-07-02T09:34:10.063Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-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-bucket-instance/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/#initialize-bucket-instance) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v1/cloud-scale/stratus/initialize-stratus/#create-bucket-instance) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Bucket Instance To perform bucket level operations, you need to initialize a bucket instance. We will refer to this component instance in various code snippets of working with Buckets in Stratus. let bucket = ZCatalystStratus.getBucketInstance( name : "{bucket_name}" ) -------------------------------------------------------------------------------- title: "Get Object" description: "This page lists the iOS SDK method to get an object or objects from the bucket." last_updated: "2026-07-02T09:34:10.063Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/stratus/get-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/get-objects/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/get-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/get-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/get-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/get-object/) - Flutter SDK (/en/sdk/flutter/v1/cloud-scale/stratus/get-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-objects/#GetAllObjects) -------------------------------------------------------------------------------- # Get Object This SDK method can be used to get an object from the bucket. The response will be in **blob** format. When Versioning is enabled for the bucket: * If you do not pass the versionId, then only the **latest object** will be returned. * To retrieve a specific version, use the versionId query parameter with a valid version as a value. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w30p">Parameter Name</th> <th class="w70p">Definition</th> </tr> </thead> <tbody> <tr> <td>objectKey</td> <td>A mandatory parameter. Will contain the object name.</td> </tr> <tr> <td>versionId</td> <td>An optional parameter. Will hold the unique version ID of the required object's version.</td> </tr> </tbody> </table> bucketInstance.getObject( objectKey : "{object_name}", versionId : "{version_id}" ) { result in switch result { case .success( let object ) : print( "File Name : \( object.fileName )" ) case .error(let error) : print("Error : \( error )") } } The required object will be returned. **Possible Exception** * **404**: Object or Bucket Not Found ### Get All Objects This SDK method can be used to get all the objects present in the bucket using pagination technique. **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>prefix</td> <td>String</td> <td>An Optional parameter. This will get the objects that match the prefix value.</td> </tr> <tr> <td>maxKeys</td> <td>Number</td> <td>An Optional parameter. Will contain the maximum limit of objects that can be listed by pagination.</td> </tr> <tr> <td>continuation_token</td> <td>String</td> <td>An Optional parameter. 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.</td> </tr> </tbody> </table> var params = ZCatalystQuery.ObjectParams() params.maxKeys = 10 params.continuationToken = "{continuation_token}" parmas.prefix = "{prefix}" bucketInstance.getObjects( withParams : params ) { result in switch result { case .success( let objects, let response ) : for object in objects { print("File Name : \( object.fileName )") } case .error( let error ) : print("Error : \( error )") } } The required object will be returned as an array in Blob format. **Possible Exception** * **404**: Object or Bucket Not Found -------------------------------------------------------------------------------- title: "Download Object" description: "This page lists the iOS SDK methods to download an object to the bucket." last_updated: "2026-07-02T09:34:10.063Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/stratus/download-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Download an Object (/en/cloud-scale/help/stratus/objects/manage-object/download-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/range-download/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/range-download/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/range-download/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/range-download/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/download-object/) - Flutter SDK (/en/sdk/flutter/v1/cloud-scale/stratus/download-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/download-object/#DownloadObject) -------------------------------------------------------------------------------- # Download Object The following SDK methods will allow you to download the object. ### Download an Object (Completion Callback) This SDK method will allow you to download the object, without any progress indicators. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w30p">Parameter Name</th> <th class="w70p">Definition</th> </tr> </thead> <tbody> <tr> <td>fromCache</td> <td> <ul> <li>An optional parameter. To be used to specify whether this file has to be retrieved from the cache or not.</li> <li>Default Value: false.</li> </ul> </td> </tr> </tbody> </table> objectInstance.download( fromCache : true ) { result in switch result { case .success( let url ) : do { let data = Data(contentsOf : url) DispatchQueue.main.sync { self.imageView.image = UIImage(date: data) } } catch { print("Error : \( error )") } case .error( let error ) : print("Error : \( error )") } } ### Download an Object (With Progress) This SDK method will allow you to download the object with progress indicators. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w30p">Parameter Name</th> <th class="w70p">Definition</th> </tr> </thead> <tbody> <tr> <td>fromCache</td> <td> <ul> <li>An optional parameter. To be used to specify whether this file has to be retrieved from the cache or not.</li> <li>Default Value: false.</li> </ul> </td> </tr> <tr> <td>fileRefId</td> <td>A unique ID to refer to the file that is being uploaded.</td> </tr> <tr> <td>fileUploadDelegate</td> <td>This is a protocol that needs to be confirmed. the Upload delegate object is essential to track the status of the object upload.</td> </tr> </tbody> </table> objectInstance.download( fromCache : true, fileRefId : "{file_ref_id}", fileDownloadDelegate : self ) -------------------------------------------------------------------------------- title: "Upload Object" description: "This page lists the iOS SDK methods to upload an object to the bucket." last_updated: "2026-07-02T09:34:10.063Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/upload-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/upload-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/upload-object/) - Flutter SDK (/en/sdk/flutter/v1/cloud-scale/stratus/upload-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/upload-object/#UploadObject) -------------------------------------------------------------------------------- # Upload Object The SDK method listed in this section will allow you to upload objects to the bucket 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 an Object Using Path (Completion Callback) This SDK can be used to upload an object to the bucket using its path. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w30p">Parameter Name</th> <th class="w70p">Definition</th> </tr> </thead> <tbody> <tr> <td>filePath</td> <td>A mandatory parameter. Will contain the complete path of the location from where the file needs to be uploaded from.</td> </tr> <tr> <td>fileName</td> <td> <ul> <li>An optional parameter. Will hold the complete name of the object.</li> <li>Default Value: Will hold the value of the last path value that was used.</li> </ul> </td> </tr> <tr> <td>shouldCompress</td> <td> <ul> <li>An optional parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>Default Value: false.</li> </ul> </td> </tr> </tbody> </table> bucketInstance.upload( filePath : "{file_path}", fileName : "{file_name}", shouldCompress : true ) { error in if let error = error { print("Error : \( error )") return } print("Uploaded Successfully") } ### Upload an Object Using File Name and File Data (Completion Callback) This SDK can be used to upload an object to the bucket using its name and in a data format. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w30p">Parameter Name</th> <th class="w70p">Definition</th> </tr> </thead> <tbody> <tr> <td>fileName</td> <td>A mandatory parameter. Will contain the complete name of the object that needs to be uploaded.</td> </tr> <tr> <td>data</td> <td>A mandatory parameter. The object that needs to be uploaded in data format.</td> </tr> <tr> <td>shouldCompress</td> <td> <ul> <li>An optional parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>Default Value: false.</li> </ul> </td> </tr> </tbody> </table> bucketInstance.upload( fileName : "{file_name}", data : "{file_data}", shouldCompress : false ) { error in if let error = error { print("Error : \( error )") return } print("Uploaded Successfully") } ### Upload an Object Using Path (With Progress) This SDK can be used to upload an object to the bucket using its path. This SDK method will also provide upload progress indicators. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w30p">Parameter Name</th> <th class="w70p">Definition</th> </tr> </thead> <tbody> <tr> <td>fileRefId</td> <td>A unique ID to refer to the file that is being uploaded.</td> </tr> <tr> <td>filePath</td> <td>A mandatory parameter. Will contain the complete path of where the file should be uploaded.</td> </tr> <tr> <td>fileName</td> <td> <ul> <li>An optional parameter. Will hold the complete name of the object.</li> <li>Default Value: Will hold the value of the last path value that was used.</li> </ul> </td> </tr> <tr> <td>shouldCompress</td> <td> <ul> <li>An optional parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>Default Value: false.</li> </ul> </td> </tr> <tr> <td>fileUploadDelegate</td> <td>This is a protocol that needs to be confirmed. the Upload delegate object is essential to track the status of the object upload.</td> </tr> </tbody> </table> bucketInstance.upload( fileRefId : "{file_ref_id}", filePath : "{file_path}", fileName : "{file_name}", shouldCompress : true, fileUploadDelegate : self ) ### Upload an Object Using File Name and File Data (With Progress) This SDK can be used to upload an object to the bucket using its name and in a data format. This SDK method will also provide upload progress indicators. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w30p">Parameter Name</th> <th class="w70p">Definition</th> </tr> </thead> <tbody> <tr> <td>fileRefId</td> <td>A unique ID to refer to the file that is being uploaded.</td> </tr> <tr> <td>data</td> <td>A mandatory parameter. The object that needs to be uploaded in data format.</td> </tr> <tr> <td>fileName</td> <td> <ul> <li>An optional parameter. Will hold the complete name of the object.</li> <li>Default Value: Will hold the value of the last path value that was used.</li> </ul> </td> </tr> <tr> <td>shouldCompress</td> <td> <ul> <li>An optional parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>Default Value: false.</li> </ul> </td> </tr> <tr> <td>fileUploadDelegate</td> <td>This is a protocol that needs to be confirmed. the Upload delegate object is essential to track the status of the object upload.</td> </tr> </tbody> </table> bucketInstance.upload( fileRefId : "{file_ref_id}", fileName : "{file_name}", data : "{file_data}", shouldCompress : true, fileUploadDelegate : self) -------------------------------------------------------------------------------- title: "Delete Object" description: "This page lists the iOS SDK methods to delete an object or objects from the bucket." last_updated: "2026-07-02T09:34:10.063Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/stratus/delete-object/" 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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/delete-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/delete-object/) - Flutter SDK (/en/sdk/flutter/v1/cloud-scale/stratus/delete-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/delete-objects/#DeleteObject) -------------------------------------------------------------------------------- # Delete Object ### Delete a Single Object The following SDK method can be used to delete a single object from the bucket. objectInstance.delete() { error in if let error = error { print("Error : \( error )") return } print("Deleted Successfully") } ### Delete Multiple Objects The following SDK method can be used to delete multiple objects from the bucket. bucketInstance.deleteObjects( deletableObjectInstances ) { error in if let error = error { print("Error : \( error )") return } print("Deleted Successfully") } -------------------------------------------------------------------------------- title: "Delete Path" description: "This page lists the iOS SDK methods to delete an entire path along with its objects from the bucket." last_updated: "2026-07-02T09:34:10.063Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/stratus/delete-path/" 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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/delete-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/delete-path/) - Flutter SDK (/en/sdk/flutter/v1/cloud-scale/stratus/delete-path/) - REST API (/en/api/code-reference/cloud-scale/stratus/delete-path/#DeletePath) -------------------------------------------------------------------------------- # Delete Path The following SDK method can be used to delete all the objects present in the specified path. bucketInstance.deletePath("{path_to_be_deleted}") { error in if let error = error { print("Error : \( error )") return } print("Path Deleted Successfully") } ##### ZCQL -------------------------------------------------------------------------------- title: "Execute ZCQL Query" description: "ZCQL is Catalyst's own query language that enables you to perform data creation, retrieval, and modification operations in the Data Store." last_updated: "2026-07-02T09:34:10.063Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/zcql/execute-zcql-query/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - ZCQL (/en/cloud-scale/help/zcql/introduction/) - Execute ZCQL - API (/en/api/code-reference/cloud-scale/zcql/execute-zcql-query/#ExecuteZCQLQuery) -------------------------------------------------------------------------------- # ZCQL ZCQL is Catalyst's own query language that enables you to perform data retrieval operations in the Data Store. It supports SELECT queries with built-in functions, SQL Join clauses, and other statements and conditions. ### Execute a ZCQL Query Before you execute a ZCQL query to fetch the required data set, you must construct the query to pass it to the **execute()** method. You can learn about the ZCQL syntax from the ZCQL help page. You must pass an instance of **ZCatalystSelectQuery** to the execute() method, as shown in the code syntax of a ZCQL query execution below. &lt;ZCatalystApp&gt;.execute( query : ZCatalystSelectQuery, completion: @escaping (Result&lt;[ [ String : Any ] ], ZCatalystError&gt;) -> Void) **Parameters**: * **query**: The instance of the type ZCatalystSelectQuery to be passed * **completion**: If the query execution call is successful, the completion block will return with the records that match the criteria of the query. Else, it will return an error. You can create a query instance for the ZCatalystSelectQuery for the statements supported by ZCQL, in the following way: ZCatalystSelectQuery.Builder() .select(columns: Set&lt;Column&gt;) -> ZCatalystSelectQuery.Builder .selectAll() -> ZCatalystSelectQuery.Builder .where(column: String, comparator: Comparator, value: String) -> ZCatalystSelectQuery.Builder .from(tableName: String) -> ZCatalystSelectQuery.Builder .and(column: String, comparator: Comparator, value: String) -> ZCatalystSelectQuery.Builder .groupBy(columns: Set&lt;Column&gt;) -> ZCatalystSelectQuery.Builder .orderBy(columns: Set&lt;Column&gt;, sortOrder: SortOrder) -> ZCatalystSelectQuery.Builder .innerJoin(tableName: String) -> ZCatalystSelectQuery.Builder .leftJoin(tableName: String) -> ZCatalystSelectQuery.Builder .on(joinColumn1: String, comparator: Comparator, joinColumn2: String) -> ZCatalystSelectQuery.Builder .or(column: String, comparator: Comparator, value: String) -> ZCatalystSelectQuery.Builder .limit(offset: Int, value: Int? = nil) -> ZCatalystSelectQuery.Builder .build() -> ZCatalystSelectQuery A sample code snippet of a ZCQL query execution is shown below: func testExecuteZCQL(){ var builder = ZCatalystSelectQuery.Builder() var query = builder.selectAll().from( tableName : "Bio-data" ).build() //replace your table name here ZCatalystApp.shared.getDataStoreInstance(tableIdentifier: "1096000000002071").execute( query : query) { ( result ) in switch result{ case .success( let response ) : print("Response : \( response )") case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } } #### General -------------------------------------------------------------------------------- title: "Get Current Time Zone" description: "This enables you to fetch the current time zone active for your project." last_updated: "2026-07-02T09:34:10.068Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/general/get-current-time-zone/" service: "All Services" related: - Time Zone Settings (/en/getting-started/set-up-a-catalyst-project/general-settings/#change-the-time-zone-of-the-project) -------------------------------------------------------------------------------- # Get Current Time Zone You can define and store a time zone for your project from the General settings in the console, overriding the default time zone set based on the data center you access. This time zone you set will be applied across all services, components and features of the project. However, you can still define individual time zones for certain components. Catalyst enables you to fetch the current time zone active for your project. You can fetch the current time zone defined for your project in the console using the getCurrentTimeZone() method as shown in the syntax below. public func getCurrentTimeZone( completion : @escaping ( Result&lt;TimeZone, ZCatalystError&gt; ) ->Void ) #### Serverless ##### Functions -------------------------------------------------------------------------------- title: "Create a Function Instance" description: "Catalyst functions enable you to build custom functionalities in your application, automate tasks, or integrate with third-party services." last_updated: "2026-07-02T09:34:10.068Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/serverless/functions/create-function-instance/" service: "Serverless" related: - Functions (/en/serverless/help/functions/introduction) - Function - API (/en/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Create a Function Instance Catalyst functions enable you to build custom functionalities in your application, automate tasks, or integrate with third-party services. You can develop functions for your iOS app from the Catalyst console or the CLI. ### Create a Function Instance You can create an instance of a Catalyst function using the **getFunctionInstance()** method, and enable the methods defined in this class to access the instance object. This will prevent unnecessary server calls. You can create a function instance in any of the following ways: #### i. By passing the Function ID You can pass the function's unique Function ID as an argument to the getFunctionInstance() method and create an instance for it: ZCatalystApp.shared.getFunctionInstance( id : Int64 ) -> ZCatalystFunction **Parameters**: * **id**: The unique Function ID of the function. A sample code snippet is shown below: let function_instance = ZCatalystApp.shared.getFunctionInstance ( id : 1096000000002053 ) //Replace this with your Function ID #### ii. By passing the name of the function You can pass the function's API name as an argument to the getFunctionInstance() method and create an instance for it: ZCatalystApp.shared.getFunctionInstance( name : String ) -> ZCatalystFunction **Parameters**: * **name**: The name of the function configured in Catalyst A sample code snippet is shown below: let function_instance = ZCatalystApp.shared.getFunctionInstance ( name : "LocalBackup") //Replace this with you function name -------------------------------------------------------------------------------- title: "Execute a Function" description: "Catalyst functions enable you to build custom functionalities in your application, automate tasks, or integrate with third-party services." last_updated: "2026-07-02T09:34:10.068Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/serverless/functions/execute-function/" service: "Serverless" related: - Functiona (/en/serverless/help/functions/introduction) - Implementing Functions (/en/serverless/help/functions/implementation) - Execute Function - API (/en/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Execute a Function You can execute a Catalyst function in any one of the ways given below, based on the HTTP request you pass with the function. You can pass the parameters to the function to be executed as the argument to a function execution method. This method differs for each HTTP request type. Note: You can create six types of functions in Catalyst: Basic I/O, Advanced I/O, Cron, Integration, Event, and BrowserLogic functions. However, you can only execute Basic I/O functions in Catalyst iOS SDK. The &lt;FUNCTION_INSTANCE&gt; used in all the code sections below is the instance defined in the Function Instance page. ### Execute a GET function You can execute a function of the HTTP GET type by passing the parameters to the **executeGet()** method: &lt;FUNCTION_INSTANCE&gt;.executeGet( parameters params : [ String : Any ]? = nil, completion : @escaping( Result< String, ZCatalystError &gt; ) -&gt; Void ) **Parameters**: * **params**: The parameters to be passed to the function as a Hash map A sample code snippet is shown below: ZCatalystApp.shared.getFunctionInstance(id: 2823000000097020).executeGet() //Replace this with your function ID { result in switch result { case .success(let output) : print("GET function executed successfully - \( output )") case .error(let error) : print("GET function failed to execute - \( error )") } } ### Execute a PUT function You can execute a function of the HTTP PUT type, by passing the parameters to the **executePut()** method as a Hash map. You can pass the payload in the PUT request to this method as a Hash map argument as well: &lt;FUNCTION_INSTANCE&gt;.executePut( parameters params : [ String : Any ]? = nil, body : [ String : Any ]? = nil, completion : @escaping( Result< String, ZCatalystError > ) -> Void ) **Parameters**: * **params**: The parameters to be passed to the function as a Hash map * **body**: The data payload to be passed as a Hash map A sample code snippet is shown below: var params : [ String : Any ] = [:] params[ "ROWID" ] = "2823000000098012" params[ "Category" ] = "Important" ZCatalystApp.shared.getFunctionInstance(id: 2823000000097020).executePut(parameters: params) //Replace this with your function ID { result in switch result { case .success(let output) : print("PUT function executed successfully - \( output )") case .error(let error) : print("PUT function failed to execute - \( error )") } } ### Execute a POST function You can execute a function of the HTTP POST type, by passing the parameters to the **executePOST()** method as a Hash map. You can pass the payload in the POST request to this method as a Hash map argument as well: &lt;FUNCTION_INSTANCE&gt;.executePost( parameters params : [ String : Any ]? = nil, body : [ String : Any ]? = nil, completion : @escaping( Result< String, ZCatalystError > ) -> Void ) **Parameters**: * **params**: The parameters to be passed to the function as a Hash map * **body**: The data payload to be passed as a Hash map A sample code snippet is shown below: var params : [ String : Any ] = [:] params[ "Title" ] = "Data Migration Tasks" params[ "Category" ] = "Official" ZCatalystApp.shared.getFunctionInstance(id: 2823000000097020).executePost(parameters: ) //Replace this with your function ID { result in switch result { case .success(let output) : print("POST function executed successfully - \( output )") case .error(let error) : print("POST function failed to execute - \( error )") } } ## Java ### v1 -------------------------------------------------------------------------------- title: "Overview" description: "This page provides an overview of the Catalyst Java SDK package that will enable you to create microservices, and interactive web and mobile applications with Java programming elements." last_updated: "2026-07-02T09:34:10.074Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/overview/" service: "All Services" related: - Catalyst Node.js SDK (/en/sdk/nodejs/v2/overview/) - Catalyst Web SDK (/en/sdk/web/v4/overview/) - API Code Reference (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) - Catalyst Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Java SDK - Overview Java SDK for Catalyst paves the way for creating microservices, interactive web and mobile applications with Java programming elements and associating them with catalyst components. The SDK offers the necessary structures to access the Catalyst APIs comfortably. It acts as a wrapper for the REST APIs and helps you use Catalyst services effectively. Catalyst currently supports the following versions of Java: * **Java 25** * **Java 21** * **Java 17** * **Java 11** * **Java 8** ### Initialize Project To initialize Catalyst project, add the code snippet below to your Java source code as the very first statement, before you start writing your business logic. ZCProject.initProject(); Note: In Java SDK it is not mandatory to include this initialize command as it will be automatically initialized in functions. #### Initialize Catalyst Projects with Specific SDK Scopes Catalyst allows you to initialize 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:<br /> * 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, File 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 and File store. The SDK snippets below will allow you to initialize the project using either *Admin* or *User* scope, and perform a **SELECT** query in the Data Store: * **Initialize the Catalyst project with Admin Scope** ZCProject adminProject = ZCProject.initProject("admin", ZCUserScope.ADMIN); ZCQL.getInstance(adminProject).executeQuery("select * from test"); * **Initialize the Catalyst project with User Scope** ZCProject userProject = ZCProject.initProject("user", ZCUserScope.USER); ZCQL.getInstance().executeQuery("select * from test"); ### Class Hierarchy All the Catalyst components are modelled as Java classes with their members and methods defining the behaviour of the component. * ZCProject is the fundamental base class of the SDK package. It has methods to initialize the catalyst project configurations and associate the components of the project. * The class relations and hierarchy of the SDK follow the project hierarchy in Catalyst. * Each class has functions to fetch its properties and to fetch the data of its immediate child entities through an API call. For example, a Catalyst Data Store class, ZCDataStore will have member functions to access tables that can use the functions of its immediate child class ZCTable to set the table name, ID, etc. The class hierarchy of various Catalyst components is depicted as: ### Instance Objects It is not always effective to follow the class hierarchy all the way from the top to fetch the data of a component at a lower level, since this would involve API calls at every level. In order to avoid this, every component class has a getInstance() method to get its dummy object and methods to get dummy objects of its child entities. Note: getInstance() methods will not have any of their properties filled in since no API call will be made. This will just return a dummy object that will be only used to access the non-static methods of the class. To retrieve the properties of a Catalyst component, call the component's object with its getInstance() method, then use the same object to call the other methods defined by the component. This avoids unnecessary API calls. ### Exceptions Unexpected faulty behaviours are called exceptions. All errors and exceptions are handled by a class called ZCException defined by our Java SDK. We have ZCServerException and ZCClientException classes to catch the specific exceptions thrown by the client and server codes. -------------------------------------------------------------------------------- title: "Upgrade Java SDK" description: "This page provides instructions on upgrading Java SDK" last_updated: "2026-07-02T09:34:10.074Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/upgrade-sdk/" service: "All Services" related: - Catalyst Node.js SDK (/en/sdk/nodejs/v2/upgrade-sdk/) - Catalyst Python SDK (/en/sdk/python/v1/overview/) - API Code Reference (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) - Catalyst Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Upgrade Java SDK 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. This means that from time to time, Catalyst will upgrade its SDK packages 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 Java SDK: * Installing the latest version from the *static download URL* available in the console. * Updating your **Maven configurations**, if you use Maven for Java development #### Install using the static download URL available in the console 1. Go to the Catalyst console and login to your account. 2. Open any of your Catalyst projects, and click on your **profile icon**. <br /> 3. Click on the **Java icon** under the *Download SDKs* list to download the latest version of the SDK. <br /> 4. Click **Save** in the local system prompt, and the latest version of the SDK will be stored in your local system as a ZIP file. <br /> Now, to use the latest SDK in a Java function, unzip the contents and paste them in the **lib** folder of your java function. The **lib** folder will be present in the source directory of your Java function. Note: * You need to paste the SDK content in the lib folder of every Java function you have created and initialized in your project. * You can find the latest version of the Java SDK from our release notes. #### Update SDK Through Maven To update Java SDK through Maven, you will be need to make the following changes to your pom.xml file present in your project directory. &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; // replace with your required version here &lt;dependency&gt; The latest version of the Java SDK will be available to you and it will be incorporated in your Java functions in the project once you **save your edit**. Note: * You need to apply the same changes in every pom.xml file of every Java function present in your project, to ensure the SDK offerings are available throughout your project. * You can find the latest version of the Java SDK from our release notes. -------------------------------------------------------------------------------- title: "Integrate SDK in Third-Party Apps" last_updated: "2026-07-02T09:34:10.074Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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 Java SDK Integration in Third-Party Applications You can integrate and use the Catalyst Java 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 Java 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 Java 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 Java 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 Java 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). 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. 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. Learn how to obtain the ZAID for a specific social login. <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**. <br> 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**. <br> 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. <br> v. Switch to the **Client Secret** tab and note down the client ID and the client secret details. <br> 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 Java SDK into your application. The SpringBoot code below demonstrates this with the example of fetching buckets from Catalyst CloudScale Stratus. <br> ### Code Snippet package com.example.demoapp; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.stereotype.Component; import java.util.List; import java.util.logging.Logger; import org.json.simple.JSONObject; import com.zc.common.ZCProject; import com.zc.common.ZCProjectConfig; import com.catalyst.config.ZCThreadLocal; import com.zc.api.APIConstants.ZCAuthType; import com.zc.api.APIConstants.ZCUserScope; import com.zc.auth.ZCAuth; import com.zc.component.USER_TYPE; import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCTable; @SpringBootApplication public class DemoappApplication { private static final Logger logger = Logger.getLogger(DemoappApplication.class.getName()); public static void main(String[] args) { SpringApplication.run(DemoappApplication.class, args); } @Component public static class DataProcessor implements CommandLineRunner { @Override public void run(String... args) { try { ZCThreadLocal.putValue("user_type", USER_TYPE.ADMIN); JSONObject oAuthParams = new JSONObject(); oAuthParams.put("client_id", CLIENT_ID); //Provide CLient ID value here oAuthParams.put("client_secret", CLIENT_SECRET); //Provide CLient secret value here oAuthParams.put("refresh_token", REFRESH_TOKEN); //Provide refresh token value here oAuthParams.put("grant_type", "refresh_token"); ZCAuth auth = ZCAuth.getInstance(oAuthParams); auth.setScope(ZCUserScope.ADMIN); System.out.println("Auth Object: " + auth); ZCProjectConfig config = ZCProjectConfig.newBuilder() .setProjectId(PROJECT_ID) //Provide Project ID value here .setProjectKey(ZAID) //Provide ZAID value here .setZcAuth(auth) .setProjectDomain("https://api.catalyst.zoho.com") .setEnvironment("Development") //set the value as either "Development" or "Production" .build(); ZCProject project = ZCProject.initProject(config, ""); ZCStratus stratus = ZCStratus.getInstance(project); List <ZCBucket> buckets = stratus.listBuckets(); } catch (Exception e) { logger.severe("Error during data processing: " + e.getMessage()); } } } } #### Cloud Scale ##### Authentication -------------------------------------------------------------------------------- title: "Add New User" description: "This page describes the method to add new end-users to your Java application using Catalyst Authentication with sample code snippets." last_updated: "2026-07-02T09:34:10.075Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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) - Catalyst Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Authentication Catalyst Authentication features enable you to add end-users to your Catalyst serverless applications, configure their user accounts and roles, and manage user sign-in and authentication of your application. You can learn about working with Catalyst Authentication from the remote console from the Authentication help document. ### Add New User When a user has signed up to a Catalyst application, unique identification values like ZUID and userID are created for them. The user is also assigned to an organization by Catalyst. You can learn more about this from the Users help page. You can add a new end-user to your Catalyst application using the code below. The user details such as their email address, last name, the application platform and the role they must be added to, are passed through an instance of the ZCSignUpData class. The user registration process is handled by the registerUser() method, after obtaining an instance of the ZCUser class. 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. * You must provide the values for EmailId and FirstName to register a user mandatorily. * You can obtain the RoleId 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. #### Sample Code Snippet <br> import com.zc.component.users.PlatformType; import com.zc.component.users.ZCSignUpData; import com.zc.component.users.ZCUser; import com.zc.component.ZCMailTemplateDetails; //Get an instance of ZCSignUpData ZCSignUpData signUpdetails = ZCSignUpData.getInstance(); //Pass the necessary data for the sign-up using the instance ZCMailTemplateDetails mailData= signUpdetails.mailTemplateInstance(); mailData.setSendersMail("docofoh552@lukaat.com"); mailData.setSubject("Welcome to %APP_NAME%"); mailData.setMessage("<p>Hello ,</p> <p>Follow this link to join in %APP_NAME% .</p> <p><a href='\%LINK%\'>%LINK%</a></p> <p>If you didn’t ask to join the application, you can ignore this email.</p> <p>Thanks,</p> <p>Your %APP_NAME% team</p>"); signUpdetails.setTemplateDetails(mailData); signUpdetails.setPlatformType(PlatformType.WEB); signUpdetails.userDetail.setEmailId("p.boyle@zylker.com"); signUpdetails.userDetail.setLastName("Boyle"); signUpdetails.userDetail.setRoleId(1256000000228024L); //Register the user using an instance of ZCUser class signUpdetails = ZCUser.getInstance().registerUser(signUpdetails); -------------------------------------------------------------------------------- title: "Get All Org IDs" description: "This page describes the method to collect all the Org IDs associated to your Java application using Catalyst Authentication with sample code snippets." last_updated: "2026-07-02T09:34:10.075Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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 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. #### Sample Code Snippet <br> import com.zc.component.users.ZCUser; ZCUser user = ZCUser.getInstance(); user.getAllOrgs(); <br /> -------------------------------------------------------------------------------- title: "Add User to Existing Org" description: "This page describes the method to add new end-users to your Java application using Catalyst Authentication with sample code snippets." last_updated: "2026-07-02T09:34:10.075Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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 a New User to an Existing Organization The code snippet given below allows registering a user to an existing orginization without creating a new organization. Note: * FirstName, EmailId and OrgIDare mandatory attributes. * 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. #### Sample Code Snippet <br> import com.zc.component.users.PlatformType; import com.zc.component.users.ZCSignUpData; import com.zc.component.users.ZCUser; import com.zc.component.ZCMailTemplateDetails; //Get an instance of ZCSignUpData ZCSignUpData signUpdetails = ZCSignUpData.getInstance(); //Pass the necessary data for the sign-up using the instance ZCMailTemplateDetails mailData= signUpdetails.mailTemplateInstance(); mailData.setSendersMail("docofoh552@lukaat.com"); mailData.setSubject("Welcome to %APP_NAME%"); mailData.setMessage("<p>Hello ,</p> <p>Follow this link to join in %APP_NAME% .</p> <p><a href='\%LINK%\'>%LINK%</a></p> <p>If you didn’t ask to join the application, you can ignore this email.</p> <p>Thanks,</p> <p>Your %APP_NAME% team</p>"); signUpdetails.setTemplateDetails(mailData); signUpdetails.setPlatformType(PlatformType.WEB); signUpdetails.userDetail.setEmailId("amelia.burrows@zylker.com"); signUpdetails.userDetail.setLastName("Amelia"); signUpdetails.userDetail.setOrgId("35712181"); //Pass user's OrgID here //Register the user using signUpdetails signUpdetails = ZCUser.getInstance().addUser(signUpdetails); -------------------------------------------------------------------------------- title: "Get All Users in an Organization" description: "This page describes the method to add get all the users associated to an organization in your Java application using Catalyst Authentication with sample code snippets." last_updated: "2026-07-02T09:34:10.076Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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 The SDK snippet below demonstrates fetching the list of all users of an organization using the getAllUsers() method. #### Sample Code Snippet <br> import com.zc.component.users.ZCUser; ZCUser user = ZCUser.getInstance(); user.getAllUser(10062701096); // Enter your Org ID here -------------------------------------------------------------------------------- title: "Reset Password" description: "This page describes the method to add new end-users to your Java application using Catalyst Authentication with sample code snippets." last_updated: "2026-07-02T09:34:10.076Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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 After the successful registration of a user, you can reset the password using the following code snippet. When called, the resetPassword() method generates a reset password link and sends it to the user's Email address. Note: 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. #### Sample Code Snippet <br> import com.zc.component.users.PlatformType; import com.zc.component.users.ZCSignUpData; import com.zc.component.users.ZCUser; import com.zc.component.ZCMailTemplateDetails; //Get an instance of ZCSignUpData ZCSignUpData signUpdetails = ZCSignUpData.getInstance(); //Pass the necessary data for the sign-up using the instance ZCMailTemplateDetails mailData= signUpdetails.mailTemplateInstance(); mailData.setSendersMail("docofoh552@lukaat.com"); mailData.setSubject("Welcome to %APP_NAME%"); mailData.setMessage("<p>Hello ,</p> <p>Follow this link to join in %APP_NAME% .</p> <p><a href='\%LINK%\'>%LINK%</a></p> <p>If you didn’t ask to join the application, you can ignore this email.</p> <p>Thanks,</p> <p>Your %APP_NAME% team</p>"); signUpdetails.setTemplateDetails(mailData); signUpdetails.setPlatformType(PlatformType.WEB); signUpdetails.userDetail.setEmailId("amelia.burrows@zylker.com"); signUpdetails.userDetail.setLastName("Burrows"); //Call reset password to send a mail to reset password ZCUser.getInstance().resetPassword(signUpdetails); -------------------------------------------------------------------------------- title: "Generate a Custom Server Token" description: "This page describes the method to add new end-users to your Java application using Catalyst Authentication with sample code snippets." last_updated: "2026-07-02T09:34:10.076Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/authentication/third-party-server-token/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Generate a Custom Server Token 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 logic to generate a custom server token, which will then be passed to the Web SDK incorporated in the client code. A sample code to generate a custom server token is given below. #### Sample Code Snippet ZCCustomTokenDetails customTokenDetails = ZCCustomTokenDetails.getInstance(); ZCCustomTokenUserDetails tokenUserDetails = ZCCustomTokenUserDetails.getInstance(); //Set token user details tokenUserDetails.setEmailId("emma@zylker.com"); tokenUserDetails.setFirstName("Amelia"); tokenUserDetails.setLastName("Burrows"); tokenUserDetails.setRoleName("App Admin"); customTokenDetails.setUserDetails(tokenUserDetails); ZCCustomTokenResponse customTokenResp = ZCUser.getInstance().generateCustomToken(customTokenDetails); 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 add new end-users to your Java application using Catalyst Authentication with sample code snippets." last_updated: "2026-07-02T09:34:10.076Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/authentication/custom-user-validation/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Custom User Validation 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. #### Sample Code Snippet <br> import com.catalyst.Context; import com.catalyst.basic.BasicIO; import com.catalyst.basic.ZCFunction; import com.zc.api.APIConstants.ZCSignupValidationStatus; import com.zc.common.ZCProject; import com.zc.component.auth.ZCSignupResponseUserDetails; import com.zc.component.auth.ZCSignupUserValidationRequest; import com.zc.component.auth.ZCSignupUserValidationResponse; import com.zc.component.users.ZCSignupUserService; The validation logic can be set based on your preference. In this example, we have depicted the logic with @notallowedemail. If the user tries to sign up using a disallowed email addressed, the user will not be allowed to sign up. public class MainClass implements ZCFunction { private static final Logger LOGGER = Logger.getLogger(MainClass.class.getName()); @Override public void runner(Context context, BasicIO basicIO) throws Exception { try { ZCProject.initProject(); ZCSignupUserValidationRequest requestDetails = ZCSignupUserService.getSignupValidationRequest(basicIO); if(requestDetails != null) { /* Validation logic starts */ LOGGER.info("Inside null check"); ZCSignupUserValidationResponse validationResponse = ZCSignupUserValidationResponse.getInstance(); if(requestDetails.getUserDetails().getEmailId().contains("@notallowedmail")) { validationResponse.setStatus(ZCSignupValidationStatus.FAILURE); // The user has failed authentication } else { validationResponse.setStatus(ZCSignupValidationStatus.SUCCESS); // The actions that occur in the event of a successful authentication can be customized ZCSignupResponseUserDetails respUserDetails = ZCSignupResponseUserDetails.getInstance(); respUserDetails.setFirstName("Patricial"); respUserDetails.setLastName("Boyle"); respUserDetails.setRoleIdentifier("App User"); respUserDetails.setOrgId("1241113"); validationResponse.setUserDetails(respUserDetails); } basicIO.write(validationResponse); /* Validation logic ends */ } } catch(Exception e) { basicIO.write(e); LOGGER.log(Level.SEVERE,"Exception in MainClass",e); basicIO.setStatus(500); } } } <br> 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": "65**************", "role_details": { "role_name": "Moderator", "role_id": "10*****" } }, "auth_type": "web" } } -------------------------------------------------------------------------------- title: "Get User Details" description: "This page describes the method to add new end-users to your Java application using Catalyst Authentication with sample code snippets." last_updated: "2026-07-02T09:34:10.076Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/authentication/get-user-details/" service: "Cloud Scale" related: - Get User Details - API (/en/api/code-reference/cloud-scale/authentication/get-current-user/#GetCurrentUser) - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Get User Details Catalyst Authentication provides some variants to retrieve the details of the app users. It is possible to obtain the user information of the current user, any, or all users of the application. ### Get Current User Details This code fetches the details of an user on whose scope the function is getting executed. #### Sample Code Snippet <br> import com.zc.component.ZCUserDetail; import com.zc.component.users.ZCUser; //Create an instance of the ZCUser object to get current user information ZCUserDetail details = ZCUser.getInstance().getCurrentUser(); ### Get All User Details This code can fetch the details of all the users who are registered with the application. #### Sample Code Snippet <br> import com.zc.component.ZCUserDetail; import com.zc.component.users.ZCUser; //Create an instance of ZCUser and call getAllUser to get all the users in the application List&lt;ZCUserDetail&gt; details = ZCUser.getInstance().getAllUser(); ### Get User Details by User ID Unlike the previous code, when you want to retrieve the information of a particular user, you can use this code where the User ID of the user is passed as a parameter to the getUser() method. #### Sample Code Snippet <br> import com.zc.component.ZCUserDetail; import com.zc.component.users.ZCUser; //Create an instance of the ZCUser object and use user id to get user information based on id ZCUserDetail details = ZCUser.getInstance().getUser(1510000000113214L); -------------------------------------------------------------------------------- title: "Update Details of a User" description: "This page describes the method to modify or update a user's details signed up to your Java application using Catalyst Authentication with sample code snippets." last_updated: "2026-07-02T09:34:10.076Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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 Details of a User 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 updateUser() method. The first name of the user is updated in the example below. The getUserID() method will fetch the User ID of the user. The UserID will be present in the *Users* > *User Management* section of the Authentication component. #### Sample Code Snippet <br> import com.zc.component.ZCUserDetail; import com.zc.component.users.ZCUser; ZCUser user = ZCUser.getInstance(); ZCUserDetail userDetail = user.getCurrentUser(); userDetail.setFirstName("Josh"); user.updateUser(userDetail.getUserId(), userDetail); <br /> -------------------------------------------------------------------------------- title: "Enable or Disable a User" description: "This page describes the method to enable or disable a user in your Java application using Catalyst Authentication with sample code snippets." last_updated: "2026-07-02T09:34:10.076Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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 Catalyst allows you to disable or enable a user at any time. A disabled user will still be listed in the *Users* section in your project, but will not be able to access your application. The SDK snippet below demonstrates enabling and disabling an end-user using the updateUserStatus() 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 #### Sample Code Snippet <br> import com.zc.component.ZCUserDetail; import com.zc.component.users.ZCUser; ZCUser user = ZCUser.getInstance(); user.updateUserStatus(USER_ID, USER_STATUS.ENABLE); ### To Disable a User #### Sample Code Snippet <br> import com.zc.component.ZCUserDetail; import com.zc.component.users.ZCUser; ZCUser user = ZCUser.getInstance(); user.updateUserStatus(USER_ID, USER_STATUS.DISABLE); <br /> -------------------------------------------------------------------------------- title: "Delete User" description: "This page describes the method to delete users from your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.076Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/authentication/delete-user/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Delete User You can delete the end users of a Catalyst application to remove their access to it permanently. This is done using the deleteUser() method. You must pass the UserID of the user as the parameter to this method as shown below. #### Sample Code Snippet <br> import com.zc.component.users.ZCUser; ZCUser.getInstance().deleteUser(1510000000109587l); //Pass the UserID of the user to be deleted ##### Cache -------------------------------------------------------------------------------- title: "Get a Segment Instance" description: "This page describes the method to get a cache segment instance in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.077Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/cache/get-segment-instance/" service: "Cloud Scale" related: - Cache (/en/cloud-scale/help/cache/introduction) -------------------------------------------------------------------------------- # Cache ### Get a segment instance The first step in referring to a cache segment is to create an empty segment instance using the getSegmentInstance() method which doesn't actually fire a server side call. This empty segment instance does not hold any values. #### Sample Code Snippet import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCSegment; //Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with segment ID ZCSegment segment = cacheobj.getSegmentInstance(1510000000054091L); -------------------------------------------------------------------------------- title: "Retrieve Data from the Cache" description: "This page describes the method to retrieve data from the cache in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.077Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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 Cache ### Retrieve the value by key name Every cache segment contains key-value pairs. Both keys and values are _String_ type. The value of a key is retrieved through the getCacheValue() method. #### Sample Code Snippet import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCSegment; //Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with segment ID ZCSegment segment = cacheobj.getSegment(1510000000054091L); //Get The value of the cache object using key String cacheValue= segment.getCacheValue("Val"); ### Retrieve the cache object by key name Another variant for retrieving a cache object is to return the corresponding value of a key as a cache object. Note: The cache object contains all of its attributes such as key, value, and expiry time. #### Sample Code Snippet import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCCacheObject; import com.zc.component.cache.ZCSegment; //Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with segment ID ZCSegment segment = cacheobj.getSegment(1510000000054091L); //replace segment id //Get The Cache object using key ZCCacheObject cacheValue = segment.getCacheObject("Name"); // replace cache key -------------------------------------------------------------------------------- title: "Insert Data into Cache" description: "This page describes the method to insert data into the cache in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.077Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/cache/insert-data-into-cache/" service: "Cloud Scale" related: - Insert Data into the Cache - API (/en/api/code-reference/cloud-scale/cache/insert-key-value-in-segment/#InsertKey-ValueinCacheSegment) - Cache (/en/cloud-scale/help/cache/introduction) -------------------------------------------------------------------------------- # Insert data into the cache In addition to retrieving cache information, the following putCache() variants also support inserting cache object elements. ### Insert a key-value pair The following code inserts a key-value pair to a cache segment through putCacheValue() method. Note: The expiry time is set to 48 hours by default. #### Sample Code Snippet import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCCacheObject; import com.zc.component.cache.ZCSegment; //Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with segment ID ZCSegment segment = cacheobj.getSegment(1510000000054091L); //Put Value in Cache as key-value pair (with a default Expiry Time of 48 hours) ZCCacheObject cache = segment.putCacheValue("Name", "Amelia Burrows"); ### Insert a key-value pair with an expiry time Similar to the previous case, along with key and value parameters, the optional parameter expiry time is used in this variant. Note: The value of the expiry time must be passed as a long value in hours. #### Sample Code Snippet import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCCacheObject; import com.zc.component.cache.ZCSegment; //Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with segment ID ZCSegment segment = cacheobj.getSegment(1510000000054091L); //Put Value in Cache as key-value pair with specified expiry time. (Time in hours) ZCCacheObject cache = segment.putCacheValue("LastName", "S", 1L); ### Insert a key-value pair through a cache object The following code inserts a key-value pair to a cache segment through putCacheObject() method. Note: If the key name already exists in a cache segment, it will be replaced with the new value inserted. #### Sample Code Snippet import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCCacheObject; import com.zc.component.cache.ZCSegment; //Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with segment ID ZCSegment segment = cacheobj.getSegment(1510000000054091L); //Create a CacheObject and set cache segment attributes ZCCacheObject cacheDetails = ZCCacheObject.getInstance(); cacheDetails.setKeyName("ObjectKey"); cacheDetails.setValue("ObjectValue"); cacheDetails.setExpiryInHours(1L); //Create the cache using the CacheObject ZCCacheObject cache = segment.putCacheObject(cacheDetails); -------------------------------------------------------------------------------- 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-07-02T09:34:10.077Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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 Existing data from the cache can be updated through updateCacheValue() method.It comes with the following two variants, ### Update cache value of a key This variant updates the value of the existing key, by passing the updated value as parameter to the updateCacheValue() method. The expiry time of the key is maintained as its previous value. #### Sample Code Snippet import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCSegment; //Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with a segment ID ZCSegment segment = cacheobj.getSegment(1510000000054091L); //replace segment id // Updates the value of the existing cache’s key ZCCache.getInstance().updateCacheValue("time_taken", "10"); ### Update cache value with expiry time Similar to the above one, this variant updates the value of the key, where the expiry time of the key is also passed as the parameter to the method. The value of the expiry time is updated with the new value passed as a long int value in hours. #### Sample Code Snippet import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCSegment; //Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with a segment ID ZCSegment segment = cacheobj.getSegment(151xxxxxxxxxL); //Update the value of the existing cache’s key with its expiry time ZCCache.getInstance().updateCacheValue("time_taken", "48", 2L); -------------------------------------------------------------------------------- title: "Delete a Key-Value Pair" description: "This page describes the method to delete a key-value pair using a key or cache object in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.077Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/cache/delete-key-value-pair/" service: "Cloud Scale" related: - Cache (/en/cloud-scale/help/cache/introduction) -------------------------------------------------------------------------------- # Delete a key-value pair When 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. ### Delete using a key You can delete a key by passing it directly to the deleteCacheValue() method as a parameter. #### Sample Code Snippet import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCSegment; //Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with segment ID ZCSegment segment = cacheobj.getSegment(1510000000054091L); //Delete the Cache object using key segment.deleteCacheValue("Name"); ### Delete using a cache object In this delete variant, an empty cache instance is constructed and the key value is set to it. This instance is passed as an argument to the deleteCacheObject() method. #### Sample Code Snippet import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCCacheObject; import com.zc.component.cache.ZCSegment; //Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with segment ID ZCSegment segment = cacheobj.getSegment(1510000000054091L); //Create a CacheObject and set cache details ZCCacheObject cacheDetails = ZCCacheObject.getInstance(); cacheDetails.setKeyName("ObjectKey"); //Delete the cache using the CacheObject segment.deleteCacheObject(cacheDetails); ##### 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-07-02T09:34:10.077Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/connections/get-connections-instance/" service: "Cloud Scale" related: - Connections Help (/en/cloud-scale/help/connections/introduction/) - Connections Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/connections/get-connections-instance/) - Connections Python SDK (/en/sdk/python/v1/cloud-scale/connections/get-connections-instance/) -------------------------------------------------------------------------------- # Connections 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. **Package Import** import com.zc.component.connections.ZCConnections; import com.zc.component.connections.beans.ZCConnectionResponse; // create connection instance ZCConnections connections = ZCConnections.getInstance(); -------------------------------------------------------------------------------- title: "Get Authentication Credentials" description: "This page describes the method to acquire the required authentication credentials." last_updated: "2026-07-02T09:34:10.078Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/connections/get-credentials/" service: "Cloud Scale" related: - Connections Help (/en/cloud-scale/help/connections/introduction/) - Connections Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/connections/get-credentials/) - Connections Python SDK (/en/sdk/python/v1/cloud-scale/connections/get-credentials/) -------------------------------------------------------------------------------- # Get Authentication Credentials 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. import com.zc.component.connections.ZCConnections; import com.zc.component.connections.beans.ZCConnectionResponse; // create connection instance ZCConnections connections = ZCConnections.getInstance(); // retrieve the authentication credentials for the specified connection ZCConnectionResponse connectionResponse = connections.getConnectionCredentials("payrollcon"); // connection response System.out.println("Connection Response Headers: " + connectionResponse.getHeaders()); System.out.println("Connection Response Parameters: " + connectionResponse.getParameters()); ##### Data Store -------------------------------------------------------------------------------- title: "Get Table Meta" description: "This page describes the method to fetch the meta data of a single table or multiple tables in your Java application with sample code snippets" last_updated: "2026-07-02T09:34:10.078Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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 Meta The meta data of a single table or multiple tables can be obtained in several ways. ### Get a single table meta by tableID A table's meta data is fetched by referring the table Id, using the method getTable() as given below, #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; //Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable tableMeta = object.getTable(1510000000110121L); ### Get a single table meta by table name On the other hand, you can refer the table name also to fetch the meta data details of a table where table name is passed as an argument to the getTable() method. #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; //Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable tableMeta = object.getTable("SampleTable"); ### Get all the 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. #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; //Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get all the Tables in a given Project List<ZCTable> tableList =object.getAllTables(); -------------------------------------------------------------------------------- title: "Get Column Meta" 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 Java application with sample code snippets" last_updated: "2026-07-02T09:34:10.078Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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 Meta There are methods to retrieve the metadata of a single column or multiple columns of a particular table. ### Get a single column meta by columnID while a table's meta data was fetched previously, now it is to fetch a particular column's meta data of a table using getColumn() method. #### Sample Code Snippet <br> import com.zc.component.object.ZCColumn; import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; //Create Base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable table = object.getTable(1510000000110121L); //Get the Meta of a specific column of using columnID ZCColumn column = table.getColumn("1510000000110832"); <br> ### Get a single column meta by column name An alternative way to get the meta data of a column is referring to the table name instead of table Id. This also returns the same response as that of the previous one. #### Sample Code Snippet <br> import com.zc.component.object.ZCColumn; import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; //Create Base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable table = object.getTable(1510000000110121L); //Get the Meta of a specific column of using column name ZCColumn column = table.getColumn("Name"); <br> ### Get all the 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. #### Sample Code Snippet <br> import com.zc.component.object.ZCColumn; import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; //Create Base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable table = object.getTable(1510000000110121L); //Get all the Columns in the Table List columns = table.getAllColumns(); -------------------------------------------------------------------------------- title: "Get a 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 Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.078Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/get-table-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get Table Instance ### Get the table instance using tableID An empty _table instance_ is created as the first step to refer a table and perform its operations.This is done through the getTableInstance() method which actually doesn't fire a server side call. This does not hold any values. #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; //Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the tableID on base object ZCTable tableMeta =object.getTableInstance(1510000000110121L); <br> ### Get the table instance using table name Table name is passed as an argument here to refer the table, without firing the server side call which is equivalent to the previous case. #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; //Create Base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable tableMeta = object.getTableInstance("SampleTable"); -------------------------------------------------------------------------------- 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 Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.078Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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 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. Note: 1. The table and the columns in it must already be created. You can create a table and the columns for it from the console. 2. 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 row instance and then pass the column names and their corresponding values as shown in the sample code below. The insertRow() method inserts a row to the table whose instance you create by referring to its unique name or ID. A unique RowID value for the row is automatically generated once a row is inserted. #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCTable; //Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the tableID on base object ZCTable tab = object.getTable("1510000000110121"); //Create a row instance ZCRowObject row = ZCRowObject.getInstance(); //Set the required column values using set() method on the row instance row.set("Name","George Smith"); row.set("Age", 25); //Add the single row to table by calling insertRow() method tab.insertRow(row); <br> ### Insert Multiple rows You can insert multiple rows in a table by constructing a list of row objects and passing it as an argument to the insertRows() method as shown below. #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCTable; //Create a List of RowObjects List rows = new ArrayList(); //Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the tableID on base object ZCTable tab = object.getTable(1510000000110121L); //Create required number of row instances ZCRowObject row1 = ZCRowObject.getInstance(); ZCRowObject row2 = ZCRowObject.getInstance(); //Set the column values on the respective rows using set() method row1.set("Name","George Smith"); row1.set("Age", 25); row2.set("Name","Moana Violet"); row2.set("Age", 22); //Add rows to List using add() method rows.add(row1); rows.add(row2); //Add the list to table using insertRows() method tab.insertRows(rows); -------------------------------------------------------------------------------- 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 Java application with sample code snippets" last_updated: "2026-07-02T09:34:10.078Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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 You can retrieve single row or multiple rows of data from a table in the Catalyst Data Store. You can fetch the rows by passing the unique Table ID of table to the getTable() method as shown in the sample code below. ### Get a Single Row You can fetch a single row of data from a table using the getRow() method. You must pass the unique Row ID of the row that you require to be fetched to this method as shown below. You must first fetch a base object instance using getInstance(). Using the base object instance, you must fetch a table instance that can be used to fetch the row. #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCTable; //Create a base object instance ZCObject ZCObject obj = ZCObject.getInstance(); //Get a table instance referring to the table ID using the base object ZCTable tab = obj.getTable(1510000000110121L); //Fetch a single row from the table by passing the Row ID ZCRowObject row = tab.getRow(1510000000108103L); <br> ### Get All Rows Through Pagination You can retrieve all the rows from a table in the Data Store by incorporating pagination in your code using the ZCRowPagedResponse class. Pagination allows you to fetch the rows of a table in batches or pages through iterations. 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 that authorizes the subsequent fetching of data. You can fetch this token through the getNextToken() method, 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 null. This iteration is executed until all the rows fetched, which is validated by the moreRecordsAvailable() method. You can specify the table name and the names of the columns to be fetched as shown in the sample code. Note: Pagination has been made available from the Java SDK v1.7.0 update. This will not be available in the older versions of the Java SDK. #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCRowPagedResponse; String nextToken = null; //Declare the value for nextToken as null for the first iteration ZCRowPagedResponse pagedResp; //Define the paged response object Long maxRows = 100; //Define the maximum rows to be fetched in a single page do { pagedResp = ZCObject.getInstance().getTable(empDetails).getPagedRows(nextToken, maxRows); //Specify the table name and fetch the paged response by passing nextToken and maxRows //Fetch the columns from the table by passing the column names for(ZCRowObject row : pagedResp.getRows()) { basicIO.write("Employee ID: " +row.get("empID") + ","); basicIO.write("Name: " +row.get("empName") + ","); basicIO.write("Department: " +row.get("empDept") + ","); } //Validate the iteration and pass the token string obtained in the response for the next iteration if(pagedResp.moreRecordsAvailable()) { nextToken = pagedResp.getNextToken(); } } while(pagedResp.moreRecordsAvailable()); 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: "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 Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.078Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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 If a single row or multiple rows are to be updated with one or more column values in a table, updateRows() method is used. Note: ROWDID should be set to update a row. #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCTable; //Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable table = object.getTable(1510000000110121L); // replace table ID //Create a List of RowObjects List<ZCRowObject> rows = new ArrayList(); //Create row instances ZCRowObject row1 = ZCRowObject.getInstance(); ZCRowObject row2 = ZCRowObject.getInstance(); //Set the updated value on the rows referring the ROWIDs row1.set("Name","Amelia S"); row1.set("Age", 19); row1.set("ROWID", 1510000000109113L); // replace row id row2.set("Name", "Walker Don"); row2.set("Age", 19); row2.set("ROWID", 1510000000109115L); // replace row id //Add Rows to the List rows.add(row1); rows.add(row2); //Update Multiple rows in table table.updateRows(rows); -------------------------------------------------------------------------------- title: "Delete Row" description: "This page describes the method to delete a single row from a table in the Data Store in your Java application with sample code snippets" last_updated: "2026-07-02T09:34:10.079Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/delete-row/" service: "Cloud Scale" related: - Delete Data - API (/en/api/code-reference/cloud-scale/data-store/delete-row/#DeleteRow) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Delete Row A row can be deleted from a table simply by passing the ROWID in the calling method deteleRow(). You will not be able to delete more than one row at a time. #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; //Create Base Object Instance ZCObject obj = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable tab = obj.getTable(1510000000110121L); //Delete a single row with its ROWID tab.deleteRow(1510000000109115L); -------------------------------------------------------------------------------- title: "Bulk Read Rows" description: "This page describes the method to read multiple rows from a table in the Data Store in your Java application with sample code snippets" last_updated: "2026-07-02T09:34:10.079Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/bulk-read/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Bulk Read Rows 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. Catalyst supports the following methods for bulk write in Java SDK: <table class="content-table"> <thead> <tr> <th>Method Used</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>createBulkReadJob()</td> <td>Create a new bulk read job.</td> </tr> <td>getBulkReadJobStatus()</td> <td>to find out the status and the result of the bulk read job.</td> </tr> </tbody> </table> Copy the SDK snippet below to perform a bulk read job on a particular table. #### Sample Code Snippet <br> import com.zc.component.object.bulk.ZCBulkReadServices; import com.zc.component.object.bulk.ZCBulkQueryDetails; import com.zc.component.object.bulk.ZCBulkCallbackDetails; import com.zc.component.object.bulk.ZCDataStoreBulk; import com.zc.component.object.bulk.result.ZCBulkResult; import com.zc.component.object.bulk.ZCBulkReadDetails; ZCBulkReadServices bulkRead = ZCDataStoreBulk.getInstance().getBulkReadInstance(); bulkRead.createBulkReadJob(12096000000642178L); //Provide your Table ID // create bulkread job with table ID ZCBulkQueryDetails bulkQueryDetails = ZCBulkQueryDetails.getInstance(); // get bulk query details instance ZCBulkCallbackDetails callbackDetails = ZCBulkCallbackDetails.getInstance(); // get bulk callback details instance bulkRead.createBulkReadJob(12096000000642178L, bulkQueryDetails); //Provide your Table ID // create bulkread job with table ID and query details bulkRead.createBulkReadJob(12096000000642178L, bulkQueryDetails, callbackDetails); //Provide your Table ID // create bulkread job with table ID, query details and callback details. ZCBulkReadDetails bulkReadDetails = ZCBulkReadDetails.getInstance(); // create bulk read details instance. bulkReadDetails.setTableIdentifier(12096000000642178L); //Provide your Table ID ZCBulkResult readJob = bulkRead.createBulkReadJob(bulkReadDetails); // create bulkread job with bulk read details. bulkRead.getBulkReadJobStatus(readJob.getJobId()); // get bulk read job status and result <br /> Note: A maximum of 200,000 rows can be read simultaneously using the createBulkReadJob() method. <br /> -------------------------------------------------------------------------------- title: "Bulk Write Rows" description: "This page describes the method to write multiple rows in a table in the Data Store in your Java application with sample code snippets" last_updated: "2026-07-02T09:34:10.079Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/bulk-write/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Bulk Write Rows 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. 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. These details will need to be resolved as a JSON object named objectDetails, and passed to the setObjectDetails() method. Catalyst supports the following methods for bulk write in Java SDK: <table class="content-table"> <thead> <tr> <th>Method Used</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>createBulkWriteJob(bulkWriteDetails)</td> <td>Create a new bulk write job on a specific table.</td> </tr> <td>createInsertBulkWriteJob(table ID, objectDetails)</td> <td>Create a new bulk write insert job.</td> <tr> <td>createUpsertBulkWriteJob(tableId, objectDetails, column ID)</td> <td>Create a new bulk write upsert job.</td> </tr> <tr> <td>getBulkWriteJobDetails(jobID)</td> <td>Get the status and results of a bulk write job.</td> </tr> </tbody> </table> Copy the SDK snippet below to perform a bulk write job on a particular table. #### Sample Code Snippet <br> import com.zc.component.object.bulk.ZCBulkWriteServices; import com.zc.component.object.bulk.ZCDataStoreBulk; import com.zc.component.object.bulk.result.ZCBulkResult; import com.zc.component.object.bulk.ZCBucketObjectDetails; import com.zc.component.object.bulk.ZCBulkWriteDetails ZCBulkWriteServices bulkWrite = ZCDataStoreBulk.getInstance().getBulkWriteInstance(); // create bulk write instance ZCBulkWriteDetails bulkWriteDetails = ZCBulkWriteDetails.getInstance(); // create and fill the bulk write details object bulkWriteDetails.setTableIdentifier(12096000000642178L); // Provide your Table ID bulkWriteDetails.setObjectDetails(objectDetails); ZCBulkResult bulkWriteResult = bulkWrite.createBulkWriteJob(bulkWriteDetails); // create bulk write job bulkWrite.createInsertBulkWriteJob(12096000000642178L, objectDetails); // Provide your Table ID // create bulk write insert job bulkWrite.createUpdateBulkWriteJob(12096000000642178L, objectDetails, 12096000000642900L); // Provide your Table ID and Column ID // create bulk write insert job bulkWrite.createUpsertBulkWriteJob(12096000000642178L, objectDetails, 12096000000642900L); // Provide your Table ID and Column ID // create bulk write upsert job bulkWrite.getBulkWriteJobStatus(bulkWriteResult.getJobId()); // get the bulk write job status and results <br /> Note: A maximum of 100,000 rows can be written simultaneously using the createBulkWriteJob() method. <br /> -------------------------------------------------------------------------------- title: "Bulk Delete Rows" description: "This page describes the method to delete rows in bulk from a table in the Data Store in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.079Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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 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 add the unique ROWIDs of the rows to be deleted in an ArrayList as shown in the sample code below. You must include at least one ROWID, and can include upto 200 ROWIDs, in the code. The ArrayList is passed to the deleteRows() function through a ZCRowObject list. The table name or table ID must be passed to getTableInstance(). #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; //Define an ArrayList and add the ROWIDs of the records to be deleted in it ArrayList rowIdList = new ArrayList<>(); rowIdList.add(1028000000171815L); // replace row id rowIdList.add(1028000000171810L); rowIdList.add(1028000000171805L); rowIdList.add(1028000000171617L); rowIdList.add(1028000000171098L); //Pass the ArrayList to the deleteRows() function. //Pass the table ID or table name as a ZCObject. List &lt;ZCRowObject&gt; deletedRowList = ZCObject.getInstance().getTableInstance("EmpDetails").deleteRows(rowIdList); ##### File Store -------------------------------------------------------------------------------- title: "Create a Folder Instance" description: "This page describes the method to fetch a folder instance from the File Store in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.079Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/file-store/create-folder-instance/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction) -------------------------------------------------------------------------------- # File Store Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. Catalyst File Store provides cloud storage solutions for the application files and user data files of your Catalyst application, and enables access to shared data. You can store, manage, and organize images, videos, text files, document files, spreadsheets, or files of other formats. ## Create a Folder Instance You can create an empty folder instance and use it to refer to a specific folder in the File Store and perform file operations on it. This is done by fetching the File Store instance with the getInstance() method, and using it to fetch the folder instance with the getFolderInstance() method. You can refer to the specific folder you need to create the folder instance for, by either its unique ID or by its name, as shown below. #### Sample Code Snippet <br> import com.zc.component.files.ZCFile; import com.zc.component.files.ZCFolder; ### Fetch the Folder Instance using the Folder ID //Fetch an instance of the file store ZCFile fileStore = ZCFile.getInstance(); //Use the File Store instance to fetch the Folder Instance of a specific folder by referring to its ID ZCFolder folderDetails = fileStore.getFolderInstance(1510000000109393L); ### Fetch the Folder Instance using the Folder Name //Fetch an instance of the file store ZCFile fileStore = ZCFile.getInstance(); //Use the File Store instance to fetch the Folder Instance of a specific folder by referring to its name ZCFolder folderDetails = fileStore.getFolderInstance("EmpDetails"); -------------------------------------------------------------------------------- title: "Get Folder Details" description: "This page describes the method to retrieve the folder details from the File Store in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.079Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/file-store/get-folder-details/" service: "Cloud Scale" related: - Retrieve the Folder Details - API (/en/api/code-reference/cloud-scale/file-store/get-specific-folder/#GetSpecificFolder) - File Store (/en/cloud-scale/help/file-store/introduction) -------------------------------------------------------------------------------- # Get Folder Details Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. You can retrieve the metadata of the folders created in the Catalyst File Store. You can get the details of a specific folder in the File Store of your project, or the details of all the folders in your project. ### Get Details of a Specific Folder You can obtain the details of a specific folder by creating a folder instance as mentioned here. You will need to fetch the File Store instance first, and use it to fetch the folder instance. #### Sample Code Snippet <br> import com.zc.component.files.ZCFile; import com.zc.component.files.ZCFolder; You can refer to the specific folder whose metadata you require to be fetched in two ways: #### Refer to the Folder by its ID You can specify the unique Folder ID of the folder to be fetched to the getFolder() method, as shown below. //Get an instance of the File Store ZCFile fileStore = ZCFile.getInstance(); //Get Folder Details by passing the Folder ID ZCFolder folderDetails = fileStore.getFolder(1510000000109393L); #### Refer to the Folder by its Name You can specify the name of the folder to be fetched to the getFolder() method, as shown below. //Get an instance of the File Store ZCFile fileStore = ZCFile.getInstance(); //Get Folder Details by passing the folder name ZCFolder folderDetails = fileStore.getFolder("EmpDetails"); <br> ### Get Details of All Folders If you want to fetch the details of all the folders in your Catalyst project, use the following variant of the getFolder() method: #### Sample Code Snippet <br> import com.zc.component.files.ZCFile; import com.zc.component.files.ZCFolder; //Get an instance for the file store ZCFile fileStore = ZCFile.getInstance(); //Get All the folders in the project List&lt;ZCFolder&gt;folderDetails = fileStore.getFolder(); -------------------------------------------------------------------------------- title: "Upload a File" description: "This page describes the method to upload a file to a folder in the File Store in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.079Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/file-store/upload-file/" service: "Cloud Scale" related: - Upload a File - API (/en/api/code-reference/cloud-scale/file-store/upload-file-in-folder/#UploadFileInaFolder) - File Store (/en/cloud-scale/help/file-store/introduction) -------------------------------------------------------------------------------- # Upload a File in a Folder Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. You can upload a file from your local system to an existing folder in the File Store, by referring to the folder's unique ID. You can upload an image, text document, CSV, or any type of file you need. The maximum size of a file that you can upload is 100 MB. You must create a file object for the file to be uploaded and create a File Store instance, as shown below. You must then fetch the folder details by passing its Folder ID in getFolderInstance(), and upload the file object to the folder instance using the uploadFile() method. A unique File ID is created for the file after it is uploaded. Note : Catalyst provides 1 GB of File Store space for each project in the development environment. There are no upper limits for storage in the production environment. #### Sample Code Snippet <br> import com.zc.component.files.ZCFile; import com.zc.component.files.ZCFolder; import java.io.File; // Create a file object File f = new File("empdetails.csv"); //Create an instance for the File Store ZCFile fileStore = ZCFile.getInstance(); //Get a folder instance using the Folder ID ZCFolder folder = fileStore.getFolderInstance(1510000000109393); //Upload the file using the folder instance folder.uploadFile(f); -------------------------------------------------------------------------------- title: "Download a File from the folder" description: "This page describes the method to download a file from folders in the File Store in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.079Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/file-store/download-file-from-folder/" service: "Cloud Scale" related: - Download a File from the folder - API (/en/api/code-reference/cloud-scale/file-store/download-file-from-folder/#DownloadaFileFromaFolder) - File Store (/en/cloud-scale/help/file-store/introduction) -------------------------------------------------------------------------------- # Download a file from the folder Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. You can download a file from the folder by referring to its unique File ID. The input stream of the file is obtained by calling the downloadFile() method. #### Sample Code Snippet <br> import com.zc.component.files.ZCFile; import com.zc.component.files.ZCFolder; //Get an instance for the file store ZCFile fileStore = ZCFile.getInstance(); //Get Folder details using folder ID ZCFolder folder = fileStore.getFolderInstance(1510000000109393L); //Download the File as an Input Stream using the file id InputStream is = folder.downloadFile(1510000000108418L); -------------------------------------------------------------------------------- title: "Delete a File" description: "This page describes the method to delete a folder from the File Store in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.080Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/file-store/delete-file/" service: "Cloud Scale" related: - Delete a File - API (/en/api/code-reference/cloud-scale/file-store/delete-file/#DeleteFile) - File Store (/en/cloud-scale/help/file-store/introduction) -------------------------------------------------------------------------------- # Delete a file Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. A file can be deleted from a folder using the following code snippet. Note : File once deleted will not be restored. #### Sample Code Snippet <br> import com.zc.component.files.ZCFile; import com.zc.component.files.ZCFolder; //Get a file store instance ZCFile fileStore = ZCFile.getInstance(); //Get a folder Instance ZCFolder folder = fileStore.getFolderInstance(704000000116007l); //Deletes the file by referring to its ID folder.deleteFile(704000000122001l); ##### Mail -------------------------------------------------------------------------------- title: "Send email" description: "This page describes the method to send out emails to end-users from your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.080Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/mail/send-email/" service: "Cloud Scale" related: - Send email - API (/en/api/code-reference/cloud-scale/mail/send-email/#SendEmail) - Send email (/en/cloud-scale/help/mail/introduction) -------------------------------------------------------------------------------- # Mail 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. ### Send Mail You must configure the domains, email addresses, and the SMTP settings for an email client of your choice from the console. The code snippet 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. You must fetch an instance of ZCMailContent as shown in the code below. You can define the recipients and file attachments of an email as array lists. You must then set these lists, as well as the sender's email address, the subject and the content of the email in the ZCMailContent object, and pass it as an argument to the sendMail() method to send the email. 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. #### Sample Code Snippet import java.io.File; import com.zc.component.mail.ZCMail; import com.zc.component.mail.ZCMailContent; ZCMailContent mailContent = ZCMailContent.getInstance(); //Get a ZCMailContent instance ArrayList toMailList = new ArrayList(); //Add the recipient email addresses as an array list toMailList.add("vanessa.hyde@zoho.com"); toMailList.add("r.owens@zoho.com"); toMailList.add("chang.lee@zoho.com"); ArrayList ccMailList = new ArrayList<>(); //Add the email addresses to CC as an array list ccMailList.add("p.boyle@zylker.com"); ccMailList.add("robert.plant@zylker.com"); ArrayList bccMailList = new ArrayList<>(); //Add the email addresses to BCC as an array list bccMailList.add("ham.gunn@zylker.com"); bccMailList.add("rover.jenkins@zylker.com"); ArrayList replytoMailList = new ArrayList<>(); //Add the email addresses to reply to as an array list replytoMailList.add("peter.d@zoho.com"); replytoMailList.add("arnold.h@zoho.com"); ArrayList attachments = new ArrayList<>(); //Add the email attachments as an array list File file1 = new File("kycform.pdf"); File file2 = new File("info.png"); attachments.add(file1); attachments.add(file2); // Set the email properties in the ZCMailContent object mailContent.setFromEmail("p.boyle@zylker.com"); //Set the sender's email address mailContent.setToEmailList(toMailList); //Pass the recipient array list mailContent.setCcEmailList(ccMailList); //Pass the CC array list mailContent.setBccEmailList(bccMailList); //Pass the BCC array list mailContent.setReplyTo(replytoMailList); //Pass the reply to array list mailContent.setSubject("Greetings from Zylker Corp!"); //Set the email's subject mailContent.setContent("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"); //Set the email's body as an HTML content mailContent.setAttachments(attachments); //Pass the email attachments array list ZCMail.getInstance().sendMail(mailContent); //Send emails using the mailContent object ##### 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 the metadata of a NoSQL table." last_updated: "2026-07-02T09:34:10.080Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/nosql/get-table-metadata/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) - NoSQL Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/nosql/get-component-instance/) - NoSQL Python SDK (/en/sdk/python/v1/cloud-scale/nosql/get-component-instance/) -------------------------------------------------------------------------------- # NoSQL 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 Java 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. ## Get Table Metadata Catalyst enables you to fetch the metadata of a NoSQL table by obtaining an instance of the Java SDK using the getInstance() method. You can get the metadata of a single table or of all tables in your project. ### 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. #### 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. //public ZCNoSQLTable getTable(String tableName) throws Exception; //public ZCNoSQLTable getTable(Long tableId) throws Exception; // Get table metadata using the Table ID ZCNoSQL.getInstance().getTable(2144568989001); <br> #### 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. //public ZCNoSQLTable getTable(String tableName) throws Exception; //public ZCNoSQLTable getTable(Long tableId) throws Exception; // Get table metadata using the Table name ZCNoSQL.getInstance().getTable('Employees'); 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 getAllTables() method as shown below. //public List&lt;ZCNoSQLTable&gt; getAllTables() throws Exception; ZCNoSQL.getInstance().getAllTables(); -------------------------------------------------------------------------------- title: "Create 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 an instance for a NoSQL table." last_updated: "2026-07-02T09:34:10.080Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/nosql/create-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/) -------------------------------------------------------------------------------- # Create Table Instance Catalyst NoSQL enables you to fetch an empty table instance of a 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 two ways as described in this section. ### Get Instance with Table ID Get a table instance by passing the unique ID of the table to getTableInstance() as shown below. //public ZCNoSQLTable getTableInstance(Long tableId); //public ZCNoSQLTable getTableInstance(String tableName); // Create a table instance with Table ID ZCNoSQL.getInstance().getTableInstance(37898901211); <br> ### Get Instance with Table Name Get a table instance by passing the table name to getTableInstance() as shown below. //public ZCNoSQLTable getTableInstance(Long tableId); //public ZCNoSQLTable getTableInstance(String tableName); // Create a table instance with Table ID ZCNoSQL.getInstance().getTableInstance('Employees'); -------------------------------------------------------------------------------- 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 SDK method to construct a NoSQL item." last_updated: "2026-07-02T09:34:10.080Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/nosql/construct-item/" 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) -------------------------------------------------------------------------------- # Construct NoSQL Item 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 in the shared resource 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 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 ZCNoSQLItem() method, as shown below. ZCNoSQLItem item = new ZCNoSQLItem(); #### Create a New NoSQL Item with JSON / Map You can create a new NoSQL item from a plain JSON data or from a Map after you define them as shown below. //public static ZCNoSQLItem fromJSON(String json) throws Exception; ZCNoSQLItem.fromJSON(&lt;json string&gt;); <br> ### Construct NoSQL Items of Different Data Types The code snippet below shows the formats for constructing an item with attributes of different data types: //public ZCNoSQLItem withString(String attrName, String val) throws Exception; item.withString("attribute name", "&lt;string value&gt;"); //public ZCNoSQLItem withNumber(String attrName, BigDecimal val) throws Exception; //public ZCNoSQLItem withNumber(String attrName, Number val) throws Exception; item.withNumber("attribute name", "&lt;numeric value&gt;"); //public ZCNoSQLItem withInt(String attrName, int val) throws Exception; item.withInt("attribute name", "&lt;integer value&gt;"); //public ZCNoSQLItem withBigInteger(String attrName, BigInteger val) throws Exception; item.withBigInteger("attribute name", "&lt;BigInt value&gt;"); //public ZCNoSQLItem withShort(String attrName, short val) throws Exception; item.withShort("attribute name", "&lt;Short value&gt;"); //public ZCNoSQLItem withFloat(String attrName, float val) throws Exception; item.withFloat("attribute name", "&lt;Float value&gt;"); //public ZCNoSQLItem withDouble(String attrName, double val) throws Exception; item.withDouble("attribute name", "&lt;Double value&gt;"); //public ZCNoSQLItem withLong(String attrName, long val) throws Exception; item.withLong("attribute name", "&lt;Long value&gt;"); //public ZCNoSQLItem withBinary(String attrName, byte[] val) throws Exception; //public ZCNoSQLItem withBinary(String attrName, ByteBuffer val) throws Exception; item.withBinary("attribute name", "&lt;Byte value&gt;"); //public ZCNoSQLItem withStringSet(String attrName, Set&lt;String&gt; val) throws Exception; //public ZCNoSQLItem withStringSet(String attrName, String... val) throws Exception; item.withStringSet("attribute name", "&lt;StringSet/String variadic param value&gt;"); //public ZCNoSQLItem withBigDecimalSet(String attrName, Set&lt;BigDecimal&gt; val) throws Exception; //public ZCNoSQLItem withBigDecimalSet(String attrName, BigDecimal... vals) throws Exception; item.withBigDecimalSet("attribute name", "&lt;DecimalSet/Decimal Variadic param value&gt;"); //public &lt;T extends Number&gt; ZCNoSQLItem withNumberSet(String attrName, T... vals) throws Exception; //public &lt;T extends Number&gt; ZCNoSQLItem withNumberSet(String attrName, Set&lt;T&gt; vals) throws Exception; item.withNumberSet("attribute name", "&lt;Numeric/Numeric Variadic param value&gt;"); //public ZCNoSQLItem withBinarySet(String attrName, Set&lt;byte[]&gt; val) throws Exception; //public ZCNoSQLItem withBinarySet(String attrName, byte[]... vals) throws Exception; //public ZCNoSQLItem withBinarySet(String attrName, ByteBuffer... vals) throws Exception; item.withBinarySet("attribute name", "&lt;Byte Set value&gt;"); //public ZCNoSQLItem withByteBufferSet(String attrName, Set&lt;ByteBuffer&gt; val) throws Exception; item.withByteBufferSet("attribute name", "&lt;Byte Set value&gt;"); //public ZCNoSQLItem withList(String attrName, List&lt;?&gt; val) throws Exception; //public ZCNoSQLItem withList(String attrName, Object... vals) throws Exception; item.withList("attribute name", "&lt;List/Variadic Param value&gt;"); //public ZCNoSQLItem withMap(String attrName, Map&lt;String, ?&gt; val) throws Exception; item.withMap("attribute name", "&lt;Map value&gt;"); //public ZCNoSQLItem withJSON(String attrName, String json) throws Exception; item.withJSON("attribute name", "&lt;JSON String value&gt;"); //public ZCNoSQLItem withBoolean(String attrName, boolean val) throws Exception; item.withBoolean("attribute name", "&lt;Boolean value&gt;"); //public ZCNoSQLItem withNull(String attrName) throws Exception; item.withNull("attribute name"); //public ZCNoSQLItem with(String attrName, Object val) throws Exception; item.with("attribute name", "&lt;Value&gt;"); -------------------------------------------------------------------------------- title: "NoSQL Item Operations" 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 perform various NoSQL item operations." last_updated: "2026-07-02T09:34:10.080Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/nosql/item-operations/" 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) -------------------------------------------------------------------------------- # NoSQL Item Operations Catalyst NoSQL items represent a collection of attributes that hold the data of a single data point, like records. Given below are the methods that you can use with an item and perform various operations on it. #### Remove attributes from a constructed item //public ZCNoSQLItem removeAttribute(String attrName) throws Exception; item.removeAttribute("attribute name"); #### Get all the keys from the item being constructed //public Iterable&lt;Map.Entry&gt;String, Object&gt;&gt; attributes(); item.attributes(); #### Check if the constructed item contains a specific attribute //public boolean hasAttribute(String attrName); item.hasAttribute("attribute name"); #### Getting the item as a map //public Map<String, Object> asMap(); item.asMap(); //public Map&lt;String, Object&gt; getAllAttributesAsMap(); item.getAllAttributesAsMap(); #### Get the item as a JSON //public String toJSON() throws Exception; item.toJSON(); #### Get the count of the attributes in the constructed item //public int numberOfAttributes(); item.numberOfAttributes(); <br> ### ZCNoSQLAttribute You can use the ZCNoSQLAttribute class to indicate the attributes upon which you perform the operations. To access the nested elements of a Map, you can separate the attributes using ',' while using ZCNoSQLAttribute. To access a specific index of a list, you can denote it as "[&lt;index&gt;]". This is demonstrated in the example below. //public static ZCNoSQLAttribute getInstance(String ...pathElements) throws Exception; //public ZCNoSQLAttribute(List&lt;String&gt; pathElements) throws Exception; ZCNoSQLAttribute.getInstance("", ...); new ZCNoSQLAttribute("", ...) The datatypes supported by NoSQL can be denoted with the ZCNoSQLAttribute as follows: <table class="content-table nosql-components-table"> <thead> <tr> <th class="w10p">Supported Data Type</th> <th class="w10p">Notation with ZCNoSQLAttribute</th> </tr> </thead> <tbody> <tr> <td>String</td> <td>ZCNoSQLValue.DataType.S </td> </tr> <tr> <td>Numeric</td> <td>ZCNoSQLValue.DataType.N</td> </tr> <tr> <td>Binary</td> <td>ZCNoSQLValue.DataType.B </td> </tr> <tr> <td>Boolean</td> <td>ZCNoSQLValue.DataType.BOOL</td> </tr> <tr> <td>Set of String</td> <td>ZCNoSQLValue.DataType.SS</td> </tr> <tr> <td>Set of Numbers</td> <td>ZCNoSQLValue.DataType.SN</td> </tr> <tr> <td>Set of Binary</td> <td>ZCNoSQLValue.DataType.SB</td> </tr> <tr> <td>List</td> <td>ZCNoSQLValue.DataType.L</td> </tr> <tr> <td>Map</td> <td>ZCNoSQLValue.DataType.M</td> </tr> <tr> <td>Null</td> <td>ZCNoSQLValue.DataType.NuLL</td> </tr> </tbody> </table> <br> ### ZCNoSQLValue Objects of this class are used to indicate the value of attributes along with their data type, as shown below. // public ZCNoSQLValue(DataType dataType, Object value) throws Exception; //public static ZCNoSQLValue getInstance(DataType dataType, Object value) throws Exception; new ZCNoSQLValue(&lt;ZCNoSQLValue.DataType&gt;, &lt;Value&gt;) ZCNoSQLValue.getInstance(&lt;ZCNoSQLValue.DataType&gt;, &lt;Value&gt;) <br> ### ZCNoSQLResponseBean This class contains the response of the SDK calls made to the server. This includes the following methods. * getSize - Used to return the size of data read/write from or to the server. //public int getSize(); responseBean.getSize(); * getStartKey - Used to return the start key for next set of data for pagination, if more data exists. //public ZCNoSQLItem getStartKey(); responseBean.getStartKey(); * getResponseDataList - Returns the actual data. Based on the NOSQL_RETURN_VALUE, either the old or new data is returned in getNew_item() or getOld_Item() method. //public List&lt;Data&gt; getResponseDataList(); responseBean.getResponseDataList().get(&lt;index&gt;).getNew_item(); responseBean.getResponseDataList().get(&lt;index&gt;).getOld_item(); responseBean.getResponseDataList().get(&lt;index&gt;).setStatus(); -------------------------------------------------------------------------------- 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 method to insert items in a NoSQL table." last_updated: "2026-07-02T09:34:10.081Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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 NoSQL Items in Table 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. ### Insert Items without Conditions You can insert new items into a NoSQL table without any conditions either by using the ZCNoSQLTable instance, or the ZCNoSQLInsertHelper instance which can be used to construct the various parts of the request. You can insert data with the ZCNoSQLTable instance as shown below. //public ZCNoSQLResponseBean insert(ZCNoSQLItem item) throws Exception; table.insert(&lt;ZCNoSQLItem&gt;); You can insert data with the ZCNoSQLInsertHelper instance as shown below. //public ZCNoSQLInsertHelper getInsertHelper(ZCNoSQLItem item) throws Exception; //public ZCNoSQLResponseBean insert() throws Exception; table.getInsertHelper(&lt;ZCNoSQLItem&gt;).insert(); This class can be used to insert data into a table with conditions. This can be obtained from ZCNoSQLTable instance. <br> ### Insert Items with Conditions You can insert attributes in existing items in a NoSQL table using specific conditions that you define. 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. The snippet below shows inserting items with conditions using ZCNoSQLCondition. //public ZCNoSQLInsertHelper withCondition(ZCNoSQLCondition condition) throws Exception; table.getInsertHelper(&lt;ZCNoSQLItem&gt;).withCondition(&lt;ZCNoSQLCondition&gt;).insert(); Condition can be passed with the help of ZCNoSQLCondition instance which can be obtained by using a constructor or calling the getInstance() method. Conditions can be initialized in 3 methods #### 1. Using functions //public static ZCNoSQLCondition getInstance(NoSQLConditionFunction function) throws Exception; //public ZCNoSQLCondition(NoSQLConditionFunction function) throws Exception; ZCNoSQLCondition.getInstance(&lt;NoSQLCondtitionFunction&gt;); new ZCNoSQLCondition(&lt;NoSQLCondtitionFunction&gt;) There are two built in-functions available. i. ZCNoSQLAttributeTypeFunction Check if the data type of the given attribute matched the given datatype. //public ZCNoSQLAttributeTypeFunction(ZCNoSQLAttribute attribute, ZCNoSQLValue.DataType dataType) throws Exception; //public static ZCNoSQLAttributeTypeFunction getInstance(ZCNoSQLAttribute attribute, ZCNoSQLValue.DataType dataType) throws Exception; ZCNoSQLAttributeTypeFunction.getInstance(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue.DataType&gt;); new ZCNoSQLAttributeTypeFunction(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue.DataType&gt;); ii. ZCNoSQLAttributeExistFunction This is used to evaluate if an attribute already exists in the retrieved item. //public ZCNoSQLAttributeExistFunction(ZCNoSQLAttribute attribute); //public static ZCNoSQLAttributeExistFunction getInstance(ZCNoSQLAttribute attribute); ZCNoSQLAttributeExistFunction.getInstance(&lt;ZCNoSQLAttribute&gt;); new ZCNoSQLAttributeExistFunction(&lt;ZCNoSQLAttribute&gt;) <br> #### 2. Using operator, operand and value //public static ZCNoSQLCondition getInstance(ZCNoSQLAttribute attribute, NOSQL_OPERATOR operator, ZCNoSQLValue value) throws Exception; //public ZCNoSQLCondition(ZCNoSQLAttribute attribute, NOSQL_OPERATOR operator, ZCNoSQLValue value) throws Exception; ZCNoSQLCondition.getInstance(&lt;ZCNoSQLAttribute&gt;, &lt;NOSQL_OPERATOR&gt;, &lt;ZCNoSQLValue&gt;); new ZCNoSQLCondition(&lt;ZCNoSQLAttribute&gt;, &lt;NOSQL_OPERATOR&gt;, &lt;ZCNoSQLValue&gt;); #### NOSQL_OPERATOR The allowed NOSQL_OPERATOR values are contains, not_contains, begins_with, ends_with, in, not_in, between, not_between, equals, not_equals, greater_than, less_than, greater_equal, less_equal #### Using group of conditions //public static ZCNoSQLCondition getInstance(List&lt;ZCNoSQLCondition&gt; groups, NOSQL_CONDITION_GROUP_OPERATOR groupOperator) throws Exception; //public ZCNoSQLCondition(List&lt;ZCNoSQLCondition&gt; groups, NOSQL_CONDITION_GROUP_OPERATOR groupOperator) throws Exception; ZCNoSQLCondition.getInstance(List&lt;ZCNoSQLCondition&gt;,&lt;NOSQL_CONDITION_GROUP_OPERATOR&gt;) new ZCNoSQLCondition(List&lt;ZCNoSQLCondition&gt;,&lt;NOSQL_CONDITION_GROUP_OPERATOR&gt;) #### NOSQL_CONDITION_GROUP_OPERATOR The allowed NOSQL_CONDITION_GROUP_OPERATOR values are AND, OR #### NOSQL_RETURN_VALUE Indicates the return value after evaluating condition. //public ZCNoSQLInsertHelper withReturnValue(NOSQL_RETURN_VALUE returnValue) throws Exception table.getInsertHelper(&lt;ZCNoSQLItem&gt;).withReturnValue(&lt;NOSQL_RETURN_VALUE&gt;).insert(); The allowed NOSQL_RETURN_VALUE values are NEW, OLD, NULL #### Insert with Condition and Return Value table.getInsertHelper(&lt;ZCNoSQLItem&gt;).withCondition(&lt;ZCNoSQLCondition&gt;).withReturnValue(&lt;NOSQL_RETURN_VALUE&gt;).insert(); -------------------------------------------------------------------------------- title: "Update Items" 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-07-02T09:34:10.081Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/nosql/update-items/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction/) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # Update Items in a NoSQL Table 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. There are two ways to update the data. Data can be updated without any conditions by using the ZCNoSQLTable instance or it can be updated with the help of ZCNoSQLUpdateHelper instance which can be used to construct the various parts of the request. You can update the data with the ZCNoSQLTable instance as shown below. //public ZCNoSQLResponseBean update(ZCNoSQLItem item, ZCNoSQLUpdateAttributeOperation updateAttributeOperation) throws Exception; table.update(&lt;ZCNoSQLItem&gt;, &lt;ZCNoSQLUpdateAttributeOperation&gt;); To update with ZCNoSQLUpdateHelper #### ZCNoSQLUpdateHelper //public ZCNoSQLInsertHelper getInsertHelper(ZCNoSQLItem item) throws Exception; //public ZCNoSQLResponseBean insert() throws Exception; table.getUpdateHelper(&lt;ZCNoSQLItem&gt;, &lt;ZCNoSQLUpdateAttributeOperation&gt;).update(); #### ZCNoSQLUpdateAttributeOperation This class is used update the item by either adding/updating existing attribute or deleting existing attribute. An instance of the above can be obtained using the below methods. For inserting or updating attributes //ZCNoSQLUpdateAttributeOperation(ZCNoSQLAttribute attribute, ZCNoSQLValue updateValue); //ZCNoSQLUpdateAttributeOperation(ZCNoSQLAttribute attribute, NoSQLUpdateAttributeFunction updateFunction); //public static ZCNoSQLUpdateAttributeOperation getPutAttributeInstance(ZCNoSQLAttribute attribute, ZCNoSQLValue updateValue); // public static ZCNoSQLUpdateAttributeOperation getPutAttributeInstance(ZCNoSQLAttribute attribute, NoSQLUpdateAttributeFunction updateFunction); new ZCNoSQLUpdateAttributeOperation(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue&gt;); new ZCNoSQLUpdateAttributeOperation(&lt;ZCNoSQLAttribute&gt;, &lt;NoSQLUpdateAttributeFunction&gt;); ZCNoSQLUpdateAttributeOperation.getPutAttributeInstance(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue&gt;); ZCNoSQLUpdateAttributeOperation.getPutAttributeInstance(&lt;ZCNoSQLAttribute&gt;, &lt;NoSQLUpdateAttributeFunction&gt;) For Deleting attributes //ZCNoSQLUpdateAttributeOperation(ZCNoSQLAttribute attribute); //public static ZCNoSQLUpdateAttributeOperation getDeleteAttributeInstance(ZCNoSQLAttribute attribute); new ZCNoSQLUpdateAttributeOperation(&lt;ZCNoSQLAttribute&gt;); ZCNoSQLUpdateAttributeOperation.getDeleteAttributeInstance(&lt;ZCNoSQLAttribute&gt;); Update also have certain prebuilt functions that can be used to update the values. These functions can be grouped under the type NoSQLUpdateAttributeFunction and can be used while obtaining the ZCNoSQLUpdateAttributeOperation instance. ### NoSQLUpdateAttributeFunction There are 4 prebuild functions. #### ZCNoSQLIfNotExistFunction This function is used update the attribute with the value of another existing attribute. If the attribute does not exist, then the given value is updated. //public ZCNoSQLIfNotExistFunction(ZCNoSQLAttribute attribute, ZCNoSQLValue value) //public static ZCNoSQLIfNotExistFunction getInstance(ZCNoSQLAttribute attribute, ZCNoSQLValue value); new ZCNoSQLIfNotExistFunction(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue&gt;) ZCNoSQLIfNotExistFunction.getInstance(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue&gt;) #### ZCNoSQLAppendListFunction This function is append elements to existing or new list attribute. //public ZCNoSQLAppendListFunction(ZCNoSQLValue...values); //public static ZCNoSQLAppendListFunction getInstance(ZCNoSQLValue...values); new ZCNoSQLAppendListFunction(&lt;List of ZCNoSQLValue&gt;) ZCNoSQLAppendListFunction.getInstance(&lt;List of ZCNoSQLValue&gt;) #### ZCNoSQLAdditionFunction This function is used to add elements to a set or add numeric value to existing attribute. The type of operation depends on the targetted attribute type. //public ZCNoSQLAdditionFunction(ZCNoSQLAttribute attribute, ZCNoSQLValue value); //public static ZCNoSQLAdditionFunction getInstance(ZCNoSQLAttribute attribute, ZCNoSQLValue value); new ZCNoSQLAdditionFunction(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue&gt;) ZCNoSQLAdditionFunction.getInstance(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue&gt;) #### ZCNoSQLReductionFunction This function is used to remove elements from a set or subtract numeric value to existing attribute. The type of operation depends on the targetted attribute type. //public ZCNoSQLReductionFunction(ZCNoSQLAttribute attribute, ZCNoSQLValue value) throws Exception; //public static ZCNoSQLReductionFunction getInstance(ZCNoSQLAttribute attribute, ZCNoSQLValue value) throws Exception; new ZCNoSQLReductionFunction(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue&gt;) ZCNoSQLReductionFunction.getInstance(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue&gt;) Other methods available in ZCNoSQLUpdateHelper #### ZCNoSQLCondition The Same conditions described above can be reused for update too. NOSQL_RETURN_VALUE The Same return value described above can be reused for update too. Update with Condition and Return Value table.getUpdateHelper(&lt;ZCNoSQLItem&gt;,&lt;ZCNoSQLUpdateAttributeOperation&gt;).withCondition(&lt;ZCNoSQLCondition&gt;).withReturnValue(&lt;NOSQL_RETURN_VALUE&gt;).update(); -------------------------------------------------------------------------------- title: "Fetch Items from NoSQL 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-07-02T09:34:10.081Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/nosql/fetch-items/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction/) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # Fetch Items from NoSQL Table 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. Data can be fetched without filtering specific attributes by using the ZCNoSQLTable instance or it can be fetched with the help of ZCNoSQLFetchHelper instance which can be used to construct the various parts of the request. To fetch data with ZCNoSQLTable Instance, the below can be used. //public ZCNoSQLResponseBean fetch(ZCNoSQLItem key) throws Exception; table.fetch(&lt;ZCNoSQLItem&gt;); To fetch with ZCNoSQLFetchHelper #### ZCNoSQLFetchHelper This class can be used to fetch data from the table and filter our specific attributes. This can be obtained from ZCNoSQLTable instance. //public ZCNoSQLFetchHelper getFetchHelper(ZCNoSQLItem key) throws Exception; //public ZCNoSQLResponseBean fetch() throws Exception; table.getFetchHelper(&lt;ZCNoSQLItem&gt;).fetch(); Other methods available in ZCNoSQLFetchHelper #### Required Attributes This method can be used to filter and retrieve only the specific required attributes /public ZCNoSQLFetchHelper withRequiredAttributes(List&lt;ZCNoSQLAttribute&gt; requiredAttributesList) throws Exception; table.getFetchHelper(&lt;ZCNoSQLItem&gt;).withRequiredAttributes(&lt;List of ZCNoSQLAttributes&gt;).fetch(); You can also use consistency 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. //public ZCNoSQLFetchHelper withConsistency(boolean consistency) throws Exception; table.getFetchHelper(&lt;ZCNoSQLItem&gt;).withConsistency(true/false).fetch(); Fetch with Required Attributes and Consistency table.getFetchHelper(&lt;ZCNoSQLItem&gt;).withRequiredAttributes(&lt;List of ZCNoSQLAttributes&gt;).withConsistency(true/false).fetch(); -------------------------------------------------------------------------------- title: "Query NoSQL 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 the metadata of a NoSQL table." last_updated: "2026-07-02T09:34:10.081Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/nosql/query-table/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction/) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # Query NoSQL Table 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 can define the key condition that identifies the item by specifying the attributes, their required values, and the supported operator to be used. Refer to the help section for a list of supported operators and help on querying from the Catalyst console. To query the data with ZCNoSQLTable Instance, the snippet below can be used. //public ZCNoSQLResponseBean queryTable(ZCNoSQLPartitionKeyCondition partitionKeyCondition, boolean forwardScan, int limit) throws Exception; table.query(&lt;ZCNoSQLPartitionKeyCondition&gt;, &lt;true/false&gt;, &lt;limit&gt;); To query with ZCNoSQLQueryHelper ZCNoSQLQueryHelper This class can be used to query data from the table and also specifiy other conditions, sorting order, limit etc. This can be obtained from ZCNoSQLTable instance. //public ZCNoSQLQueryHelper getQueryHelper(ZCNoSQLPartitionKeyCondition partitionKeyCondition, boolean forwardScan, int limit) throws Exception; //public ZCNoSQLResponseBean queryTable() throws Exception; table.getQueryHelper(&lt;ZCNoSQLPartitionKeyCondition&gt;, &lt;true/false&gt;, &lt;limit&gt;).queryTable(); ZCNoSQLPartitionKeyCondition This is used to construct partition key criteria. This is necessary to query data from the table or index. //public ZCNoSQLPartitionKeyCondition(ZCNoSQLAttribute attribute, ZCNoSQLValue value) throws Exception; //public static ZCNoSQLPartitionKeyCondition getInstance(ZCNoSQLAttribute attribute, ZCNoSQLValue value) throws Exception; new ZCNoSQLPartitionKeyCondition(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue&gt;) ZCNoSQLPartitionKeyCondition.getInstance(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue&gt;) Secondary Key Condition This is used to construct sort key criteria. This will be used to indicate if sort key should be used or additional sort key should be used while querying the table. //public static ZCNoSQLSecondaryKeyCondition getInstance(ZCNoSQLAttribute attribute, SECONDARY_KEY_CONDITION_OPERATOR operator, ZCNoSQLValue value) throws Exception new ZCNoSQLSecondaryKeyCondition(&lt;ZCNoSQLAttribute&gt;, &lt;SECONDARY_KEY_CONDITION_OPERATOR&gt;, &lt;ZCNoSQLValue&gt;) ZCNoSQLSecondaryKeyCondition.getInstance(&lt;ZCNoSQLAttribute&gt;, &lt;SECONDARY_KEY_CONDITION_OPERATOR&gt;, &lt;ZCNoSQLValue&gt;) //public ZCNoSQLQueryHelper withSecondaryKeyCondition(ZCNoSQLSecondaryKeyCondition secondaryKeyCondition, Boolean isAdditionalSortKey) throws Exception; table.getQueryHelper(&lt;ZCNoSQLPartitionKeyCondition&gt;, &lt;true/false&gt;, &lt;limit&gt;).withSecondaryKeyCondition(&lt;ZCNoSQLSecondaryKeyCondition&gt;, &lt;true/false&gt;).queryTable(); Other methods available in ZCNoSQLQueryHelper SECONDARY_KEY_CONDITION_OPERATOR This can have the values begins_with, between, equals, greater_than, less_than, greater_equal, less_equal; Other Conditions This can be used to filter the data retrieved using partition key and sort key if specified. This will apply only on top on the data retrieved using the keys. So there can be scenarios where data maybe present for the given partition key, sort key and other conditions but to the maximum limit of 100 items, 0 items may be returned after applying the other condition along with the start key. //public ZCNoSQLQueryHelper withOtherCondition(ZCNoSQLCondition otherCondition) throws Exception; table.getQueryHelper(<ZCNoSQLPartitionKeyCondition>, <true/false>, <limit>).withOtherCondition(<ZCNoSQLCondition>).queryTable(); Start Key This is used for pagination. Upon querying data from the table/index, if more record exists, the start key will be returned. To fetch the next set of data, this value has to be set from the previous request's response. //public ZCNoSQLQueryHelper withStartKey(ZCNoSQLItem startKey); table.getQueryHelper(&lt;ZCNoSQLPartitionKeyCondition&gt;, &lt;true/false&gt;, &lt;limit&gt;).withStartKey(&lt;ZCNoSQLItem&gt;).queryTable(); -------------------------------------------------------------------------------- title: "Query NoSQL 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 fetch the metadata of a NoSQL table." last_updated: "2026-07-02T09:34:10.081Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/nosql/query-index/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction/) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # Query NoSQL Index 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 therefore 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 can define the key condition that identifies the item by specifying the attributes, their required values, and the supported operator to be used. Refer to the help section on a list of supported operators and help on querying from the Catalyst console. To query the data with ZCNoSQLTable Instance, the below can be used. //public ZCNoSQLResponseBean queryIndex(Long indexID, ZCNoSQLPartitionKeyCondition partitionKeyCondition, boolean forwardScan, int limit) throws Exception; table.queryIndex(&lt;indexID&gt;, &lt;ZCNoSQLPartitionKeyCondition&gt;, &lt;true/false&gt;, &lt;limit&gt;); To query with ZCNoSQLQueryHelper ZCNoSQLQueryHelper This class can be used to query data from the index and also specifiy other conditions, sorting order, limit etc. This can be obtained from ZCNoSQLTable instance. //public ZCNoSQLQueryHelper getQueryHelper(ZCNoSQLPartitionKeyCondition partitionKeyCondition, boolean forwardScan, int limit) throws Exception; //public ZCNoSQLResponseBean queryTable() throws Exception; table.getQueryHelper(&lt;ZCNoSQLPartitionKeyCondition&gt;, &lt;true/false&gt;, &lt;limit&gt;).queryIndex(&lt;indexID&gt;); ZCNoSQLPartitionKeyCondition The same Partition Key Condition described above can be reused here too. Other methods available in ZCNoSQLQueryHelper Required Attributes The same Required Attributes described above can be reused here too. Consistence 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. Secondary Key Condition The same Secondary Key Condition described above can be reused here too with the exception that additionalSort key cannot be used for index Other Conditions The other conditions mentioned for querying tables can be reused here too. Start Key The same Start Key described above can be used here too. Index Query with all combinations table.getQueryHelper(ZCNoSQLPartitionKeyCondition&gt;, &lt;true/false&gt;, &lt;limit&gt;) .withSecondaryKSeyCondition(&lt;ZCNoSQLSecondaryKeyCondition&gt;, false) .withOtherCondition(&lt;ZCNoSQLCondition&gt;) .withRequiredAttributes(&lt;List of ZCNoSQLAttributes&gt;) .withConsistency(true/false) .withStartKey(&lt;ZCNoSQLItem&gt;) .queryIndex(&lt;indexID&gt;); -------------------------------------------------------------------------------- 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 fetch the metadata of a NoSQL table." last_updated: "2026-07-02T09:34:10.081Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/nosql/delete-items/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction/) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # Delete Items from NoSQL Table 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. Data can be deleted without any conditions by using the ZCNoSQLTable instance or it can be deleted with the help of ZCNoSQLDeleteHelper instance which can be used to construct the various parts of the request. To delete data with ZCNoSQLTable Instance, the below can be used. //public ZCNoSQLResponseBean delete(ZCNoSQLItem key) throws Exception; table.delete(&lt;ZCNoSQLItem&gt;); To delete with ZCNoSQLDeleteHelper ZCNoSQLDeleteHelper This class can be used to delete data from the table with conditions. This can be obtained from ZCNoSQLTable instance. //public ZCNoSQLDeleteHelper getDeleteHelper(ZCNoSQLItem keys) throws Exception; //public ZCNoSQLResponseBean delete() throws Exception; table.getDeleteHelper(&lt;ZCNoSQLItem&gt;).delete(); Other methods available in ZCNoSQLDeleteHelper ZCNoSQLCondition The Same conditions described above can be reused for delete. NOSQL_RETURN_VALUE The same conditions described above can be reused for delete. Delete with Condition and Return Value table.getDeleteHelper(&lt;ZCNoSQLItem&gt;).withCondition(&lt;ZCNoSQLCondition&gt;).withReturnValue(&lt;NOSQL_RETURN_VALUE&gt;).delete(); ##### Push Notifications -------------------------------------------------------------------------------- title: "Send Push Notifications to Web Apps" description: "This page describes the method to send out remote notifications to end-users from your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.082Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/push-notifications/send-notifications/" service: "Cloud Scale" related: - Send push notifications - API (/en/api/code-reference/cloud-scale/push-notifications/web/send-web-push-notifications/#SendWebNotifications) - Send push notifications (/en/cloud-scale/help/push-notifications/introduction) -------------------------------------------------------------------------------- # Push Notifications 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. ### Send Push Notifications to Web Apps 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 notifyUser() 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. #### Sample Code Snippet import com.zc.component.notifications.ZCWebNotification; Long[] userList = new Long[5]; //Include the user IDs of all users userList[0] = 1234556789098L; userList[1] = 8704590865890L; userList[2] = 1452788189992L; userList[3] = 5344535567809L; userList[4] = 6568785589800L; ZCWebNotification.getInstance().notifyUser("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 a String array, and pass it to notifyUser() along with the message string in a similar way. #### Sample Code Snippet import com.zc.component.notifications.ZCWebNotification; String[] userEmailList = new String[3]; //Include the email addresses of the users userEmailList[0] = "emma@zylker.com"; userEmailList[1] = "p.boyle@zylker.com"; userEmailList[2] = "noel@zylker.com"; ZCWebNotification.getInstance().notifyUser("Hi there! The task you scheduled has been completed.", userEmailList); //Pass the array with the message string -------------------------------------------------------------------------------- title: "Send Push Notifications to Mobile Apps" description: "This page describes the method to send out remote notifications to end-users in your Android or iOS applications with sample code snippets." last_updated: "2026-07-02T09:34:10.082Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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 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 Cloud Scale 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 Java SDK method below, using your generated Application ID to target the specific app. <br> ### 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 getInstance() method, by passing the generated appID as a parameter. We will use this mobile notification instance to perform additional operations with the Java SDK methods, such as sending push notifications, which will be covered in the next section. #### Sample Code Snippet import com.zc.component.notifications.ZCMobileNotification; ZCMobileNotification mobile = ZCMobileNotification.getInstance(1234567890l); 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. ZCMobileNotification mobile = ZCMobileNotification.getInstance(1234567890l, ZCProject project); <br> ### Send Android Push Notifications After you have registered your Android application with Catalyst for sending push notifications, you can use the sendAndroidPushNotification() method to send push notifications to your application. You will need to pass two parameters to the sendAndroidPushNotification() method : * pushMessage - A ZCPush type 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. #### Sample Code Snippet import com.zc.component.notifications.ZCMobileNotification; import com.zc.component.notifications.ZCPush; import com.zc.component.notifications.ZCPushMessage; ZCPushMessage notificationRes = mobile.sendAndroidPushNotification(new ZCPush() { { setMessage("This message is to test if the functionality is working fine!"); setBadgeCount(1); } }, "emma.b@zylker.com"); setBadgeCount() sets the app icon's notification badge count to 1. You can change this value to any number you require. <br> ### Send iOS push notifications Similar to Android, after you have registered your iOS application with Catalyst for sending push notifications, you can use the sendIOSPushNotification() method to send push notifications to your application. #### Sample Code Snippet import com.zc.component.notifications.ZCMobileNotification; import com.zc.component.notifications.ZCPush; import com.zc.component.notifications.ZCPushMessage; ZCPushMessage notificationRes = mobile.sendIOSPushNotification(new ZCPush() { { setMessage("This message is to test if the functionality is working fine!"); setBadgeCount(1); } }, "emma.b@zylker.com"); ##### Search -------------------------------------------------------------------------------- title: "Search data in tables" description: "This page describes the method to search data in multiple tables in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.082Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/search/search-data/" service: "Cloud Scale" related: - Search data in tables - API (/en/api/code-reference/cloud-scale/search/execute-search-query/#ExecuteSearchQuery) -------------------------------------------------------------------------------- # Search Data in Indexed Columns Search executes a searchQuery() method to search for a particular pattern of data. You can search: * Data in multiple tables * Only data in search indexed columns To learn more about search please refer to the documentation here. The following code snippet contains the pattern to search for in specified columns of the tables: #### Sample Code Snippet import com.zc.component.object.ZCRowObject; import com.zc.component.search.ZCSearch; import com.zc.component.search.ZCSearchDetails; //Get an instance of SearchDetails ZCSearchDetails search = ZCSearchDetails.getInstance(); //Set the pattern to be searched search.setSearch("Sa*"); //Create a hashmap for the tables and corresponding column lists to search HashMap&lt;String,List\*&gt; map = new HashMap <String,List\>(); List searchList1 = new ArrayList(); List searchList2 = new ArrayList(); //Add indexed columns of same or different tables to the list searchList1.add("SearchIndexedColumn"); searchList2.add("SearchTest"); //Add the table with its name and the column lists map.put("SampleTable", searchList1); map.put("Users", searchList2); //Set the table-column mapping for searching search.setSearchTableColumns(map); //Execute Search by passing the search instance with the details ArrayList&lt;ZCRowObject&gt; rowList = ZCSearch.getInstance().executeSearchQuery(search); ##### Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page lists all the Java SDK methods required to carry out Stratus operations through code." last_updated: "2026-07-02T09:34:10.082Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/overview/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Stratus ## 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 a Bucket’s 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 a Portion of the Object</li> <li>Download an Object Using Transfer Manager</li> <li>Generate Presigned URL to Download an Object</li> <li>Generate Presigned URL With Expiry and Active Time</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 an Object Using Multipart Operations</li> <li>Upload an Object Using Transfer Manager</li> <li>Generate Presigned URL to Upload an Object</li> <li>Generate Presigned URL With Expiry and Active Time</li> </ul> </li> <li>Extract a Zipped Object</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 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 Versions of an Object <ul> <li>List All Versions of an Object</li> <li>List All Versions of the Object in an Iterable Manner</li> </ul> </li> <li>Get Object Details <ul> <li>Get Details of an Object</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 Java SDK method to create a Stratus instance." last_updated: "2026-07-02T09:34:10.083Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/create-stratus-instance/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-stratus-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-stratus-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/) - 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 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. #### Sample Code Snippet <br> import com.zc.component.stratus.ZCStratus; ZCStratus stratus = ZCStratus.getInstance(); -------------------------------------------------------------------------------- title: "Check Bucket Availability" description: "This page lists the Java SDK method to check if the bucket exists in your project." last_updated: "2026-07-02T09:34:10.083Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/check-bucket/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/check-bucket/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/check-bucket/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/check-bucket/) - 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 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. 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>bucket_name</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> Boolean throwErr = false; Boolean res = stratus.headBucket("bucket_name", throwErr); System.out.println(res); #### Possible Errors Note: If you use the SDK with the throw_err 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. 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 Java SDK method to list buckets created in your project." last_updated: "2026-07-02T09:34:10.083Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/list-buckets/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/list-buckets/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/list-buckets/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # List Buckets 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. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section #### Sample Code Snippet <br> import java.util.List; import com.zc.component.stratus.ZCStratus; import com.zc.component.stratus.ZCBucket; ZCStratus stratus = ZCStratus.getInstance(); List&lt;ZCBucket&gt; buckets = stratus.listBuckets(); // will return all the buckets in the organization -------------------------------------------------------------------------------- title: "Create Bucket Instance" description: "This page lists the Java SDK method to create a bucket instance." last_updated: "2026-07-02T09:34:10.083Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - 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 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. The Stratus reference used in the below code snippet is the component instance. #### Sample Code Snippet <br> import com.zc.component.stratus.ZCBucket; ZCBucket bucket = stratus.bucketInstance("bucketName"); -------------------------------------------------------------------------------- title: "Get a Bucket's Details" description: "This page lists the Java SDK method to get a bucket's details." last_updated: "2026-07-02T09:34:10.083Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - 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 a Bucket's Details We will use the getDetails() SDK method to get a single bucket's details from the project. The Bucket reference used in the below code snippet is the component instance. #### Sample Code Snippet <br> import com.zc.component.stratus.ZCBucket; ZCBucket bucketDetails = bucket.getDetails(); // return the bucket details -------------------------------------------------------------------------------- title: "Get Bucket CORS" description: "This page lists the Java SDK method to get the current CORS configuration of the bucket." last_updated: "2026-07-02T09:34:10.083Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/get-bucket-cors/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/get-bucket-cors/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Get Bucket CORS 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. #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCStratusCorsResponse; import java.util.List; List&lt;ZCStratusCorsResponse&gt; res = bucket.getCors(); for(ZCStratusCorsResponse cors: res){ System.out.println(cors.getDomain()); } -------------------------------------------------------------------------------- title: "List Objects in a Bucket" description: "This page lists the Java SDK method to get the objects stroed in a bucket." last_updated: "2026-07-02T09:34:10.084Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/list-objects/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/list-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/list-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - 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 ### List All Objects by Pagination This SDK method will allow you to get 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> </tbody> </table> 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. **Ensure the following packages are imported:** import com.zc.component.stratus.ZCBucket; import com.zc.component.stratus.ZCStratus; import com.zc.component.stratus.beans.ZCListObjectOptions; import com.zc.component.stratus.beans.ZCPagedObjectResponse; import com.zc.component.stratus.ZCObject; String nextToken = null; String maxKey = "10"; String prefix = "Sam"; do { ZCListObjectOptions options = new ZCListObjectOptions(); options.setMaxKey(maxKey); // Default: 1000 options.setContinuationToken(nextToken); // Fetch next page options.setFolderListing("true"); // Default: false options.setOrderBy("desc"); // Default: "asc" options.setPrefix(prefix); // Optional ZCPagedObjectResponse res = bucket.listPagedObjects(options); System.out.println("Object count: " + res.getKeyCount()); System.out.println("Max key: " + res.getMaxKey()); System.out.println("Is truncated: " + res.getTruncated()); for (ZCObject key : res.getContents()) { System.out.println("Object name: " + key.getKey()); System.out.println("Content type: " + key.getContentType()); System.out.println("Size: " + key.getSize()); System.out.println("Metadata: " + key.getMetaData()); System.out.println("Version ID: " + key.getVersionId()); System.out.println("ETag: " + key.getEtag()); System.out.println("Object type: " + key.getKeyType()); System.out.println("Cached URL: " + key.getCachedUrl()); } nextToken = res.getNextToken(); } while (nextToken != null); ### List Objects Through Iteration Using this SDK method, you can get all the objects present in a bucket in a single API call, using iteration technique. 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 **Ensure the following packages are imported:** import java.util.Iterator; import com.zc.component.stratus.ZCObject; import com.zc.component.stratus.beans.ZCListObjectOptions; import java.util.List; ZCListObjectOptions options = new ZCListObjectOptions(); options.setFolderListing("true"); // Default: false options.setMaxKey("2"); // Default: 1000 options.setOrderBy("desc"); // Default: "asc" // Get iterable object list Iterable&lt;List&lt;ZCObject&gt;&gt; paginationIterable = bucket.listIterableObjects(options); Iterator&lt;List&lt;ZCObject&gt;&gt; iterator = paginationIterable.iterator(); while (iterator.hasNext()) { List&lt;lZCObject&gt; objectList = iterator.next(); for (ZCObject obj : objectList) { System.out.println(obj.getKey()); } } -------------------------------------------------------------------------------- title: "Check Object Availability" description: "This page lists the Java SDK method to check if an object is present in a bucket." last_updated: "2026-07-02T09:34:10.084Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/check-object-availability/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Objects Help Documentation (/en/cloud-scale/help/stratus/objects/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/check-object-availability/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/check-object-availability/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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 Object Availability 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. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section 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. 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>key</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 object is not found in the project. The default value is "false"</td> </tr> </tbody> </table> Boolean throwErr = true; Boolean headObjectRes = bucket.headObject("sam/out/sample.txt", "versionId", throwErr); System.out.println(headObjectRes); **Possible Errors** Note: If you use the SDK with the throw_err 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 Java SDK method to download objects from a bucket." last_updated: "2026-07-02T09:34:10.084Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/download-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - 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 The SDKs present in the section will allow you to download a particular object, 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". #### Sample Code Snippet <br> import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.io.*; InputStream dataStream = bucket.getObject("sam/out/sample.txt"); // download the object to your local machine Path path = Path.of("file_path"); // specify a path to store the downloaded object Files.copy(dataStream, path, StandardCopyOption.REPLACE_EXISTING); ### Download a Portion of the Object The following SDK implements the setRange() method. This method allows you to download a specific range of bytes of an object. #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCGetObjectOptions; import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.io.*; // add download options ZCGetObjectOptions options = ZCGetObjectOptions.getInstance(); options.setVersionId("3yt5ehjbjghds3i28"); options.setRange("20-200"); // start and end range of the object in bytes InputStream dataStream = bucket.getObject("sam/out/sample.txt", options); // download the object to your local machine Path path = Path.of("file_path"); // specify a path to store the downloaded object Files.copy(dataStream, path, StandardCopyOption.REPLACE_EXISTING); ### 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. #### Create Transfer Manager Instance #### Sample Code Snippet <br> import com.zc.component.stratus.transfer.ZCTransferManager; ZCTransferManager transferManager= ZCTransferManager.getInstance(bucket); #### Download Object as Iterable Part Streams #### Sample Code Snippet <br> import java.nio.file.StandardOpenOption; import java.nio.file.Files; import java.util.Iterator; import java.nio.file.Path; import java.io.*; Iterable &lt;InputStream&gt; Iterable = transferManager.getIterableObject("sam/out/sample.txt", 100 L); Path path = Path.of("file_path"); Iterator &lt;InputStream&gt; res = Iterable.iterator(); while (res.hasNext()) { InputStream data = res.next(); // get each part of the object as stream Files.copy(data, path, StandardCopyOption.REPLACE_EXISTING); // write the stream to local file path } #### 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. **Parameters Used** * PartSize: It is the size of each part in Mb * key: Will hold the name of the object #### Sample Code Snippet <br> import java.nio.file.StandardOpenOption; import java.nio.file.Files; import com.zc.component.stratus.beans.ZCStratusGetObject; import java.nio.file.Path; import java.io.*; Path path = Path.of("file_path"); // get the list of part functions List&lt;ZCStratusGetObject&gt; parts = transferManager.generatePartDownloaders("sam/out/sample.txt", 100L); // create a file to store the downloaded stream. Files.createFile(path); int partNumber = 1; // trigger the each function to download the object parts for (ZCStratusGetObject part : parts) { // get object part as stream InputStream inputStream = part.getPart(); System.out.println("Part "+ partNumber++ + " Downloaded"); // write the stream data to local machine Files.write(path, inputStream.readAllBytes(), StandardOpenOption.APPEND); } ### 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>URL_ACTION</td> <td>Enum</td> <td>A Mandatory parameter. This is the parameter that will allow you to generate a presigned URL for download action. <ul> <li>**URL_ACTION.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> #### Sample Code Snippet <br> import com.zc.component.stratus.enums.URL_ACTION; import org.json.simple.JSONObject; JSONObject res = bucket.generatePreSignedUrl("sam/out/sample.txt",URL_ACTION.GET); System.out.println(res.get("signature")); ### Generate Presigned URL With Expiry and Active Time #### Sample Code Snippet <br> import com.zc.component.stratus.enums.URL_ACTION; import org.json.simple.JSONObject; JSONObject res = bucket.generatePreSignedUrl("object_name",URL_ACTION.GET, "expiry_in","active_from"); System.out.println(res.get("signature")); **Example Response for Generating a Presigned URL for Download** { signature: 'https://sadi-development.zoho stratus.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** import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import okhttp3.ResponseBody; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class Download { public static void main(String[] args) throws IOException { // Create an OkHttpClient instance to handle the HTTP request OkHttpClient client = new OkHttpClient(); // Build the GET request with the pre-signed URL Request request1 = new Request.Builder() .url("https://sadi-development.zohostratus.com/_signed/sam.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747905744487&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=pCjV9xckDOqBCueE_gBeMbp12StddTghBK_8HUwU5k0") // Replace with your actual URL .build(); // Execute the request and handle the response try (Response response1 = client.newCall(request1).execute()) { // Check if the response was successful if (!response1.isSuccessful()) { throw new IOException("Unexpected code " + response1); } // Get the response body as an InputStream ResponseBody body = response1.body(); if (body != null) { // Create a stream to write the file to disk try (InputStream in = body.byteStream(); OutputStream out = new FileOutputStream("file_path")) { // Replace file_path with the actual path // Read the response data in chunks and write to the file byte[] buffer = new byte[8192]; int len; while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); } // Print confirmation after successful download System.out.println("Download complete."); } } } catch (IOException e) { // Print stack trace if an error occurs during the download e.printStackTrace(); } } } -------------------------------------------------------------------------------- title: "Upload Object" description: "This page lists the Java SDK method to upload objects to a bucket." last_updated: "2026-07-02T09:34:10.084Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/upload-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/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 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. #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCPutObjectOptions; import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.io.*; InputStream file =new FileInputStream("filePath"); Boolean res = bucket.putObject("sam/out/sample.txt", file); System.out.println(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() #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCPutObjectOptions; import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.io.*; Boolean res = bucket.putObject("sam/out/sample.txt", "content of the file"); System.out.println(res); ### Upload Object with Options Using this SDK method, you can use the following options while you upload an object. * **setOverwrite()**: 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**'. * **setTTL()**: 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**. * **setMetaData()**: 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. #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCPutObjectOptions; import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.util.Map; import java.io.*; ZCPutObjectOptions options = ZCPutObjectOptions.getInstance(); options.setTTL("1000"); options.setOverwrite("true"); Map&lt;String, String&gt; metaData = new HashMap&lt;String, String&gt;(); metaData.put("author", "John"); options.setMetaData(metaData); InputStream file = new FileInputStream("filePath"); Boolean res = bucket.putObject("sam/out/sample.txt", file, options); System.out.println(res); ### Upload Object With Extract Option When you upload a zipped object using the putZipObject() SDK method, the objects present in the zip will be extracted, and uploaded. #### Sample Code Snippet <br> import com.zc.component.stratus.ZCBucket; import com.zc.component.stratus.ZCStratus; import com.zc.component.stratus.beans.ZCPutObjectOptions; ZCStratus stratus = ZCStratus.getInstance(); ZCBucket bucket = stratus.bucketInstance("sam1"); ZCPutObjectOptions options = ZCPutObjectOptions.getInstance(); options.setOverwrite("true"); InputStream stream = new FileInputStream("file_path"); JSONObject object = bucket.putZipObject("sam.zip", stream, options); 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 an Object Using Multipart Operations When the Object that you need to upload is too large to upload, you can perform a multipart operation. The multipart operation will split the object into multiple parts and perform a quicker upload. In this SDK section, we are going to go over all the SDK methods that are available to perform multipart upload of objects in Stratus. #### Initiate Multipart Upload Using the following SDK method, we are going to return a uploadId. This ID will allow us to upload multiple pats of the object. #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCInitiateMultipartUpload; ZCInitiateMultipartUpload multipart = bucket.initiateMultipartUpload("sam/out/sample.txt"); #### Perform Multipart Upload for 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 part_number 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. **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 name of the object.</td> </tr> <tr> <td>uploadId</td> <td>String</td> <td>A Mandatory parameter. This value is returned in the Initiate Multipart Upload method.</td> </tr> <tr> <td>part</td> <td>InputStream</td> <td>A Mandatory parameter. Will hold the data of the object part.</td> </tr> <tr> <td>partNumber</td> <td>Int</td> <td>A Mandatory parameter. Will have the ordering of the parts that are being uploaded.</td> </tr> </tbody> </table> #### Sample Code Snippet <br> import java.io.*; int partNumber = 1; InputStream part = new FileInputStream("filePath"); Boolean res = bucket.uploadPart("sam/out/sample.txt", "uploadId", part, partNumber); System.out.println(res); #### 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 pass the uploadId to the getMultipartUploadSummary() method. #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCMultipartObjectSummary; ZCMultipartObjectSummary summaryRes = bucket.getMultipartUploadSummary("sam/out/sample.txt", "uploadId"); // accessing uploaded parts System.out.println("Object Name:" + summaryRes.getKey()); System.out.println("Upload Id:" + summaryRes.getUploadId()); System.out.println("Status:" + summaryRes.getStatus()); System.out.println(summaryRes.getParts().get(0).getUploadedAt()); System.out.println(summaryRes.getParts().get(0).getPartNumber()); #### Complete Multipart Upload Operation 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. Boolean completeRes = bucket.completeMultipartUpload("sam/out/sample.txt", "uploadId"); System.out.println(completeRes); #### Example Snippet Illustring Implementation of Multipart Operations #### Sample Code Snippet <br> import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.logging.Logger; import java.util.logging.Level; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.catalyst.advanced.CatalystAdvancedIOHandler; import com.zc.component.stratus.ZCBucket; import com.zc.component.stratus.ZCStratus; import com.zc.component.stratus.beans.ZCInitiateMultipartUpload; import com.zc.exception.ZCServerException; import java.io.InputStream; import java.io.FileInputStream; import java.io.ByteArrayInputStream; public class MultipartUpload implements CatalystAdvancedIOHandler { private static final Logger LOGGER = Logger.getLogger(Sample.class.getName()); @Override public void runner(HttpServletRequest request, HttpServletResponse response) throws Exception { try { switch (request.getRequestURI()) { case "/": { ZCStratus stratus = ZCStratus.getInstance(); // get bucket instance ZCBucket bucket = stratus.bucketInstance("sample"); // multipart upload String key = "sample.mp4"; InputStream file = new FileInputStream( "/users/sam/sample.mp4"); ZCInitiateMultipartUpload initiateUploadResponse = bucket.initiateMultipartUpload(key); String uploadId = initiateUploadResponse.getUploadId(); System.out.println("Multipart upload initiated. Upload ID: " + uploadId); // File size and part size (50 MB minimum) int partSize = 50 * 1024 * 1024; // 50 MB long fileSize = file.available(); double result = (double) fileSize / partSize; int noOfParts = (int) Math.ceil(result); // Upload parts in parallel List&lt;CompletableFuture&lt;Void&gt;&gt; uploadedParts = new ArrayList&lt;&gt;(); ExecutorService executor = Executors.newFixedThreadPool(4); int partNumber = 1; while (noOfParts &gt;= partNumber) { int currentPartNumber = partNumber; byte[] buffer = new byte[partSize]; file.read(buffer); InputStream fileData = new ByteArrayInputStream(buffer); uploadedParts.add(CompletableFuture.runAsync(() -&gt; { try { bucket.uploadPart(key, uploadId, fileData, currentPartNumber); LOGGER.log(Level.INFO, "Part {0} Uploaded", currentPartNumber); } catch (Exception e) { throw new RuntimeException(e); } }, executor)); partNumber++; } CompletableFuture&lt;Void&gt; isUploaded = CompletableFuture .allOf(uploadedParts.toArray(new CompletableFuture[0])); try { isUploaded.get(); } catch (Exception e) { throw new ZCServerException("Error while uploading the object", e); } Boolean completeRes = bucket.completeMultipartUpload(key, uploadId); if (completeRes) { LOGGER.log(Level.INFO, "Upload Completed"); } } default: { response.setStatus(404); response.getWriter().write("You might find the page you are looking for at \"/\" path"); } } } catch (Exception e) { if (e instanceof ZCServerException) { int statusCode = ((ZCServerException) e).getStatus(); System.out.println("HTTP status code: " + statusCode); } LOGGER.log(Level.SEVERE, "Exception in Sample", e); } } } ### Upload an Object Using Transfer Manager #### Create Transfer Manager Instance #### Sample Code Snippet <br> import com.zc.component.stratus.transfer.ZCTransferManager; ZCTransferManager transferManager= ZCTransferManager.getInstance(bucket); #### Multipart Upload **Create Multipart Upload Instance** The following SDK method will create a multipart instance by initiating multipart upload. #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCMultipartUpload; ZCMultipartUpload multipart = transferManager.createMultipartInstance("sam/out/sample.txt"); If you are required to create an instance for an already initialized multipart upload operation, then copy and use the code snippet given below ZCMultipartUpload multipart = 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. #### Sample Code Snippet <br> import java.io.InputStream; int partNumber = 1; InputStream part = new FileInputStream("filePath"); Boolean uploadRes = multipart.uploadPart(part, partNumber); System.out.println(uploadRes); #### Upload Summary #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCMultipartObjectSummary; ZCMultipartObjectSummary summaryRes = multipart.getUploadSummary(); // accessing uploaded parts System.out.println("Object Name:" + summaryRes.getKey()); System.out.println("Upload Id:" + summaryRes.getUploadId()); System.out.println("Status:" + summaryRes.getStatus()); System.out.println(summaryRes.getParts().get(0).getUploadedAt()); System.out.println(summaryRes.getParts().get(0).getPartNumber()); System.out.println(summaryRes.getParts().get(0).getSize()); #### Complete Upload Boolean completeRes = multipart.completeUpload(); System.out.println(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. import java.io.InputStream; import com.zc.component.stratus.beans.ZCMultipartObjectSummary; InputStream file =new FileInputStream("filePath"); int partSize = 50; ZCMultipartObjectSummary res = transferManager.putObjectAsParts("objetName", file, partSize); Note: For object's that are larger than 2GB, we would recommend that you use the individual SDK methods to carry out the multipart upload operation successfully. ### 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>URL_ACTION</td> <td>Enum</td> <td>A Mandatory parameter. This is the parameter that will allow you to generate a presigned URL for an upload action. <ul> <li>**URL_ACTION.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> #### Sample Code Snippet <br> import com.zc.component.stratus.enums.URL_ACTION; import org.json.simple.JSONObject; JSONObject res = bucket.generatePreSignedUrl("sam/out/sample.txt", URL_ACTION.PUT); System.out.println(res.get("signature")); ### Generate Presigned URL With Expiry and Active Time #### Sample Code Snippet <br> import com.zc.component.stratus.enums.URL_ACTION; import org.json.simple.JSONObject; JSONObject res = bucket.generatePreSignedUrl("object_name",URL_ACTION.GET, "expiry_in","active_from"); System.out.println(res.get("signature")); **Example Response for Generating a Presigned URL for Upload** { "signature": "https://sadi-development.zohostratus.com/_signed/sam.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747904989454&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=UPyH5A4AdAaCpw6S6jVhKFSxg3B0B0p619YN0cAIn4c", "expiry_in_seconds": "100", "active_from": "1726492859577" } **Example Snippet Illustrating Usage of Presigned URL to Upload an Object** import okhttp3.*; import java.io.File; import java.io.IOException; public class BinaryFileUpload { public static void main(String[] args) throws IOException { // Create an OkHttpClient instance for making HTTP requests OkHttpClient client = new OkHttpClient(); // Specify the file to upload. Replace "file_path" with actual file location File file = new File("file_path"); // Create the request body with binary content (octet-stream) RequestBody requestBody = RequestBody.create( MediaType.parse("application/octet-stream"), // Use a specific MIME type if known file ); // ️ Build the PUT request with the pre-signed URL Request request = new Request.Builder() .url("https://sadi-development.zohostratus.com/_signed/sam.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747904989454&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=UPyH5A4AdAaCpw6S6jVhKFSxg3B0B0p619YN0cAIn4c") // Replace with a actual URL .put(requestBody) // PUT request to upload file .build(); // Execute the request and handle the response try (Response response = client.newCall(request).execute()) { if (response.isSuccessful()) { System.out.println("Object uploaded successfully"); } else { // Print error if upload fails System.err.println("Error: " + response.code() + " - " + response.body().string()); } } } } -------------------------------------------------------------------------------- title: "Extract a Zipped Object" description: "This page lists the Java SDK method to extract a zipped object." last_updated: "2026-07-02T09:34:10.086Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/extract-zipped-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/extract-zipped-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/extract-zipped-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Extract a Zipped Object 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>destination</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> #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCStratusZipExtractResponse; ZCStratusZipExtractResponse res = bucket.unzipObject("sam/out/sample.zip","output/"); System.out.println(res.getObjectName()); System.out.println(res.getTaskId()); ### 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. #### Sample Code Snippet <br> import org.json.simple.JSONObject; JSONObject res = object.getUnzipStatus("sam/out/sample.zip","taskId"); System.out.println(res); #### Example Response { "task_id": "6963000000272049", "status": "SUCCESS" } -------------------------------------------------------------------------------- title: "Copy Object" description: "This page lists the Java SDK method to make a copy of an object within its own bucket." last_updated: "2026-07-02T09:34:10.086Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/copy-objects/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/copy-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/copy-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Copy Object 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 /> key value will be 'pictures/puppy/kitten.png'<br /> destination value will be 'pictures/kitten/kitten.png'<br /> #### Sample Code Snippet <br> import org.json.simple.JSONObject; JSONObject copyRes = bucket.copyObject("sam/out/sample.txt", "output/sample.txt") System.out.println(copyRes); #### Example Response { "copy_to": "output/sample.txt", "object_key": "sam/out/sample.txt", "message": "Object copied successfully." } -------------------------------------------------------------------------------- title: "Rename and Move Operations on an Object" description: "This page lists the Java SDK method to perform rename and move operations on an object." last_updated: "2026-07-02T09:34:10.086Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/rename-move-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/rename-move-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/rename-move-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Rename and Move Operations on an Object To rename and to move an object, we will be using the same renameObject() SDK method. ### 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: 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. **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> #### Sample Code Snippet <br> import org.json.simple.JSONObject; JSONObject res = bucket.renameObject("sam/out/sample.txt", "sam/out/update_sample.txt"); System.out.println(res); Note: You cannot rename objects in a bucket that has Versioning enabled. ### Move an Object Using the renameObject() SDK method, we can move the object from one path to another within 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 **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 complete name and path of the object that you are required to move.</td> </tr> <tr> <td>destination</td> <td>String</td> <td>The complete name and new path of the object.</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 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 /> #### Sample Code Snippet <br> import org.json.simple.JSONObject; JSONObject res = bucket.renameObject("sam/out/sample.txt", "output/sample.txt"); System.out.println(res);<br /> Note: You cannot perform move operations in a bucket that has Versioning enabled. -------------------------------------------------------------------------------- title: "Delete Objects" description: "This page lists the Java SDK method to delete objects stores in a bucket." last_updated: "2026-07-02T09:34:10.086Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/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 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 #### Sample Code Snippet <br> import org.json.simple.JSONObject; int ttl = 200; //time to live in seconds JSONObject deleteRes = bucket.deleteObject("sam/out/sample.txt", "versionId", ttl); System.out.println(deleteRes); 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 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 **60**, the delete operation will only occur after **60 seconds**. #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCDeleteObjectRequest; import org.json.simple.JSONObject; ZCDeleteObjectRequest deleteRequest = ZCDeleteObjectRequest.getInstance(); deleteRequest.setObject("sam/out/sample.txt", "76dhe7yr738rud"); deleteRequest.setObject("sam/out/add.txt", "cjdhf73673g7yt7d"); deleteRequest.setTTL(70); JSONObject res = bucket.deleteObjects(deleteRequest); System.out.println(res); ### 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 #### Sample Code Snippet <br> import org.json.simple.JSONObject; JSONObject truncateRes = bucket.truncate(); System.out.println(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 #### Sample Code Snippet <br> import org.json.simple.JSONObject; JSONObject res = bucket.deletePath("sam/"); System.out.println(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. -------------------------------------------------------------------------------- title: "Create Object Instance" description: "This page lists the Java SDK method to create an object instance." last_updated: "2026-07-02T09:34:10.087Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/create-object-instance/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-object-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-object-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Create Object Instance 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. #### Sample Code Snippet <br> import com.zc.component.stratus.ZCObject; ZCObject object = bucket.getObjectInstance("sam/out/sample.txt"); -------------------------------------------------------------------------------- title: "List Versions of an Object" description: "This page lists the Java SDK method to get versions of an object." last_updated: "2026-07-02T09:34:10.087Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/get-object-versions/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/get-object-versions/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # List Versions of an Object ### List All Versions of an Object 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>maxVersion</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> #### Sample Code Snippet <br> import com.zc.component.stratus.ZCBucket; import com.zc.component.stratus.ZCStratus; import com.zc.component.stratus.ZCPagedObjectResponse; import com.zc.component.stratus.ZCObject; import com.zc.component.stratus.beans.ZCObjectVersions; import com.zc.component.stratus.beans.ZCObjectVersions.ZCVersionDetail; import java.util.List; String nextToken = null; int maxVersion = 5; do { ZCObjectVersions res = object.listPagedVersions(maxVersion, nextToken); System.out.println(res.getVersion()); for(ZCVersionDetail version : res.getVersion()) { System.out.println("version id: "+version.getVersionId()); } nextToken = res.getNextToken(); } while(nextToken != null); ### List All Versions of the Object in an Iterable Manner You can use the following SDK method to list 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 #### Sample Code Snippet <br> import java.util.Iterator; import com.zc.component.stratus.beans.ZCObjectVersions; import com.zc.component.stratus.beans.ZCObjectVersions.ZCVersionDetail; int maxVersion = 10; Iterable&lt;List&lt;ZCVersionDetail&gt;&gt; paginationIterable=object.listIterableVersions(maxVersion); Iterator&lt;List&lt;ZCVersionDetail&gt;&gt; iterator = paginationIterable.iterator(); while(iterator.hasNext()) { List&lt;ZCVersionDetail&gt; objects= iterator.next(); for(ZCVersionDetail object: objects){ System.out.println(object.getVersionId()); } } -------------------------------------------------------------------------------- title: "Get Object Details" description: "This page lists the Java SDK method to get details of objects stored in a bucket." last_updated: "2026-07-02T09:34:10.087Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/object-details/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/object-details/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/cloud-scale/help/stratus/introduction) - Android SDK (/en/cloud-scale/help/stratus/introduction) - Flutter SDK (/en/cloud-scale/help/stratus/introduction) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Get Object Details ### Get Details of an Object Using this SDK method, you will be able to get all details of an object and all its versions. 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 #### Sample Code Snippet <br> import com.zc.component.stratus.ZCObject; ZCObject objectRes = object.getDetails(); System.out.println(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 Using this SDK method, you will be able to get all details of a particular object's version. 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> #### Sample Code Snippet <br> import com.zc.component.stratus.ZCObject; ZCObject objectRes = object.getDetails("versionId"); System.out.println(objectRes); Note: You can get the details of the latest version of the object by passing the parameter valuse as topVersion. -------------------------------------------------------------------------------- title: "Put Object Meta Data" description: "This page lists the Java SDK method to add meta data for an object stored in the object." last_updated: "2026-07-02T09:34:10.087Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/put-object-meta/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/put-object-meta/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Put Object Meta Data 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: * 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. #### Sample Code Snippet <br> import org.json.simple.JSONObject; import java.util.HashMap; HashMap&lt;String, String&gt; objectMeta = new HashMap&lt;&gt;(); objectMeta.put("key1", "value1"); objectMeta.put("key2", "value2"); JSONObject res = object.putMeta(objectMeta); System.out.println(res); Note: Using this 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. **Example Response** { "message": "Metadata added successfully" } ##### ZCQL -------------------------------------------------------------------------------- title: "Execute ZCQL queries" description: "This page describes the method to execute ZCQL queries on a table in the Data Store in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.087Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/zcql/execute-zcql-query/" service: "Cloud Scale" related: - Execute ZCQL queries - API (/en/api/code-reference/cloud-scale/zcql/execute-zcql-query/#ExecuteZCQLQuery) - Execute ZCQL queries (/en/cloud-scale/help/zcql/introduction) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # ZCQL 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. ### Execute ZCQL Queries 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. The queries that you execute on the primary Data Store can include SELECT, INSERT, UPDATE, or DELETE statements. 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 must construct a ZCQL query and pass it to the executeQuery() method for execution as shown in the sample code below. The executeQuery() method supports these three parameters: * The String variable containing the constructed query statement * isV2?: A boolean value (true or false) indicating if it is a ZCQL v2 query * isOLAP?: A boolean value (true or false) indicating if the query needs to be executed on the OLAP database executeQuery(query: string, isV2?: boolean , isOLAP?:boolean) A sample SELECT query is shown below. The response will contain the records you fetch using the SELECT query, or the response generated for the other operations. #### Sample Code Snippet <br> import com.zc.component.object.ZCRowObject; import com.zc.component.zcql.ZCQL; //Construct the query to be executed String query = "SELECT * from empDetails limit 10"; //Get the ZCQL instance and execute query using the query string ArrayList <ZCRowObject> rowList = ZCQL.getInstance().executeQuery(query, true , false) #### Connectors -------------------------------------------------------------------------------- title: "Connectors" description: "This page describes the method to use connectors to manage access token in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.088Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/connectors/connectors/" service: "All Services" -------------------------------------------------------------------------------- # Connectors 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 Java 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 Java connector. #### Sample Code Snippet <br> import org.json.simple.JSONObject; import com.zc.auth.connectors.ZCConnection; import com.zc.auth.connectors.ZCConnector; JSONObject authJson = new JSONObject(); // The JSON object holds the client_id, client_secret, refresh_token and refresh_url authJson.put("client_id","{client_id}"); authJson.put("client_secret","{client_secret}"); authJson.put("auth_url","{auth_url}"); authJson.put("refresh_url","{refresh_url}"); authJson.put("refresh_in","{refresh_in}"); //If refresh token is not provided, then you must provide the code to generate the refresh token authJson.put("refresh_token","{refresh_token}"); JSONObject connectorJson = new JSONObject(); connectorJson.put("CRMConnector",authJson); // You can create connectors for multiple Zoho services ZCConnection conn = ZCConnection.getInstance(connectorJson); ZCConnector crmConnector = conn.getConnector("CRMConnector"); // Fetches the AccessToken String accessToken = crmConnector.getAccessToken(); #### 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-07-02T09:34:10.088Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/general/projects/retrieve-project-cached-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 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 use the getProject() method to retrieve the cached app object at any time. #### Sample Code Snippet <br> import com.zc.common.ZCProject; import com.zc.component.zcql.ZCQL; ZCProject userProject = ZCProject.getProject("user"); ZCQL.getInstance(userProject).executeQuery("select * from test"); // You must use the getInstance() method to create a ZCQL object with a custom scope that you specify #### Job Scheduling -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the methods to perform Job Scheduling operations" last_updated: "2026-07-02T09:34:10.088Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/overview/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/jobpool/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/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 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-07-02T09:34:10.088Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/initialize-job-scheduling-instance/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/jobpool/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/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 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. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.ZCJobScheduling; ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance(); // get job scheduling instance ##### Cron -------------------------------------------------------------------------------- title: "Create a One-Time Cron" description: "This page describes the Java method to create a one-time cron with sample code snippets." last_updated: "2026-07-02T09:34:10.089Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/cron/create-one-time-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/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 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. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; import com.zc.component.jobscheduling.beans.cron.ZCCronBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobMetaDetail; import org.json.simple.JSONObject; // generate function job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // get function job builder .setJobConfig(2, 15 * 60 l) // set job config - job retries => 2 retries in 15 mins (optional) .setJobpoolName("functions_jobpool") // set the name of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) // .setJobpoolId(1234567890L) // set the Id of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) .setTargetName("target_function") // set target function's name (optional) (either TargetName or TargetId is mandatory) // .setTargetId(1234567890L) // set the target function's Id (optional) (either TargetName or TargetId is mandatory) .setParams(new JSONObject() { { put("arg1", "job"); put("arg2", "test"); } }) // set params to be passed to target function (optional) .setJobName("job_name") // set job name .build(); // build job meta // generate cron details ZCCronDetails oneTimeCronDetails = ZCCronBuilder.zcOneTimeCronBuilder() // get one time cron builder .setCronStatus(true) // set cron as enabled .cronConfig((System.currentTimeMillis() / 1000) + (60 * 60), "America/Los_Angeles") // set the execution time as UNIX timestamp in seconds .setJobMeta(jobMeta) // set job meta (modify based on the job) .setCronName("one_time_cron") // set cron name (unique) .setCronDescription("one_time_cron") // set corn description (optional) .build(); // build cron details // create one time cron ZCCronDetails oneTimeCron = jobScheduling.cron.createCron(oneTimeCronDetails); 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 Java method to create a recurring cron with sample code snippets." last_updated: "2026-07-02T09:34:10.089Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/cron/create-recurring-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/jobpool/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/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 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 setTime() method. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; import com.zc.component.jobscheduling.beans.cron.ZCCronBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobMetaDetail; import org.json.simple.JSONObject; // generate function job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // get function job builder .setJobConfig(2, 15 * 60 l) // set job config - job retries => 2 retries in 15 mins (optional) .setJobpoolName("functions_jobpool") // set the name of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) // .setJobpoolId(1234567890L) // set the Id of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) .setTargetName("target_function") // set target function's name (optional) (either TargetName or TargetId is mandatory) // .setTargetId(1234567890L) // set the target function's Id (optional) (either TargetName or TargetId is mandatory) .setParams(new JSONObject() { { put("arg1", "job"); put("arg2", "test"); } }) // set params to be passed to target function (optional) .setJobName("job_name") // set job name .build(); // build job meta // EVERY CRON => which will be run for every 2hrs 1min and 3sec // generate cron details ZCCronDetails everyCronDetails = ZCCronBuilder.zcEveryCronBuilder() // get every cron builder .setCronStatus(true) // set cron as enabled .setTime(2, 1, 3) // set the repetition interval .setJobMeta(jobMeta) // set the job meta (modify based on the job) .setCronName("every_cron") // set cron name (unique) .setCronDescription("every_cron") // set corn description (optional) .build(); // build cron details // create every cron ZCCronDetails everyCron = jobScheduling.cron.createCron(everyCronDetails); <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 setTime() method. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; import com.zc.component.jobscheduling.beans.cron.ZCCronBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobMetaDetail; import org.json.simple.JSONObject; // generate function job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // get function job builder .setJobConfig(2, 15 * 60 l) // set job config - job retries => 2 retries in 15 mins (optional) .setJobpoolName("functions_jobpool") // set the name of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) // .setJobpoolId(1234567890L) // set the Id of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) .setTargetName("target_function") // set target function's name (optional) (either TargetName or TargetId is mandatory) // .setTargetId(1234567890L) // set the target function's Id (optional) (either TargetName or TargetId is mandatory) .setParams(new JSONObject() { { put("arg1", "job"); put("arg2", "test"); } }) // set params to be passed to target function (optional) .setJobName("job_name") // set job name .build(); // build job meta // DAILY CRON => which will be run on 0hrs 0mins and 0sec daily // generate cron details ZCCronDetails dailyCronDetails = ZCCronBuilder.zcDailyCronBuilder() // get daily cron builder .setCronStatus(true) // set cron as enabled .setTime(0, 0, 0) // set the time of the day during which the cron should be executed // .setTimezone("America/Los_Angeles") // set the timezone (optional) .setJobMeta(jobMeta) // set the job meta (modify based on the job) .setCronName("daily_cron") // set cron name (unique) .setCronDescription("daily_cron") // set corn description (optional) .build(); // build cron details // create daily cron ZCCronDetails dailyCron = jobScheduling.cron.createCron(dailyCronDetails); <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 setTime() method. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; import com.zc.component.jobscheduling.beans.cron.ZCCronBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobMetaDetail; import org.json.simple.JSONObject; Note: In the following SDK snippet, if you comment out the lines .setWeeksOfMonth(1, 3) and .setDayOfTheWeek(1, 2), and comment in code lines .setTime(0, 0, 0) and .setDays(1, 3, 5), then the cron will be scheduled to submit a job to the job pool every month on the 1st and 2nd days of the 1st and 3rd week of a month. // generate function job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // get function job builder .setJobConfig(2, 15 * 60 l) // set job config - job retries => 2 retries in 15 mins (optional) .setJobpoolName("functions_jobpool") // set the name of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) // .setJobpoolId(1234567890L) // set the Id of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) .setTargetName("target_function") // set target function's name (optional) (either TargetName or TargetId is mandatory) // .setTargetId(1234567890L) // set the target function's Id (optional) (either TargetName or TargetId is mandatory) .setParams(new JSONObject() { { put("arg1", "job"); put("arg2", "test"); } }) // set params to be passed to target function (optional) .setJobName("job_name") // set job name .build(); // build job meta // MONTHLY CRON => which will be run on 0hrs 0mins 0sec on 1st 3rd and 5th days of every month // generate cron details ZCCronDetails monthlyCronDetails = ZCCronBuilder.zcMonthlyCronBuilder() // get monthly cron builder .setCronStatus(true) // set cron as enabled .setTime(0, 0, 0) // set the time of the day during which the cron should be executed .setDays(1, 3, 5) // set the days of the month (day based config) // .setWeeksOfMonth(1, 3) // set the weeks of the month (either week based or day based config is necessary) // .setDayOfTheWeek(1, 2) // set the days of the week (either week based or day based config is necessary) // .setTimezone("America/Los_Angeles") // set the timezone (optional) .setJobMeta(jobMeta) // set the job meta (modify based on the job) .setCronName("monthly_cron") // set cron name (unique) .setCronDescription("monthly_cron") // set corn description (optional) .build(); // build cron details // create monthly cron ZCCronDetails monthlyCron = jobScheduling.cron.createCron(monthlyCronDetails); <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 setTime() method. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; import com.zc.component.jobscheduling.beans.cron.ZCCronBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobMetaDetail; import org.json.simple.JSONObject; // generate function job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // get function job builder .setJobConfig(2, 15 * 60 l) // set job config - job retries => 2 retries in 15 mins (optional) .setJobpoolName("functions_jobpool") // set the name of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) // .setJobpoolId(1234567890L) // set the Id of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) .setTargetName("target_function") // set target function's name (optional) (either TargetName or TargetId is mandatory) // .setTargetId(1234567890L) // set the target function's Id (optional) (either TargetName or TargetId is mandatory) .setParams(new JSONObject() { { put("arg1", "job"); put("arg2", "test"); } }) // set params to be passed to target function (optional) .setJobName("job_name") // set job name .build(); // build job meta // YEARLY CRON => which will be run on 0hrs 0min 0sec on 1st 2nd 3rd days of the 8th month of a year // generate cron details ZCCronDetails yearlyCronDetails = ZCCronBuilder.zcYearlyCronBuilder() // get yearly cron builder .setCronStatus(true) // set cron as enabled .setTime(0, 0, 0) // set the time of the day during which the cron should be executed .setDays(1, 2, 3) // set the days of the month // .setWeeksOfMonth(1) // set the weeks of the month (either week based or day based config is necessary) // .setDayOfTheWeek(3) // set the days of the week (either week based or day based config is necessary) .setMonths(8) // set the months // .setTimezone("America/Los_Angeles") // set the timezone (optional) .setJobMeta(jobMeta) // set the job meta (modify based on the job) .setCronName("yearly_cron") // set cron name (unique) .setCronDescription("yearly_cron") // set corn description (optional) .build(); // build cron details // create yearly cron ZCCronDetails yearlyCron = jobScheduling.cron.createCron(yearlyCronDetails); 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 Java method to create a cron defined using Cron Expressions with sample code snippets." last_updated: "2026-07-02T09:34:10.089Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/cron/create-cron-cron-expressions/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/key-concepts/#cron-expressions) - Node.js SDK (/en/sdk/nodejs/v2/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 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. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; import com.zc.component.jobscheduling.beans.cron.ZCCronBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobMetaDetail; import org.json.simple.JSONObject; // generate function job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // get function job builder .setJobConfig(2, 15 * 60 l) // set job config - job retries => 2 retries in 15 mins (optional) .setJobpoolName("functions_jobpool") // set the name of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) // .setJobpoolId(1234567890L) // set the Id of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) .setTargetName("target_function") // set target function's name (optional) (either TargetName or TargetId is mandatory) // .setTargetId(1234567890L) // set the target function's Id (optional) (either TargetName or TargetId is mandatory) .setParams(new JSONObject() { { put("arg1", "job"); put("arg2", "test"); } }) // set params to be passed to target function (optional) .setJobName("job_name") // set job name .build(); // build job meta // generate cron details ZCCronDetails expressionCronDetails = ZCCronBuilder.zcExpressionCronBuilder() // get expression corn builder .setCronStatus(true) // set cron as enabled .setCronExpression("0 0 * 1 1") // set the UNIX cron expression // .setTimezone("America/Los_Angeles") // set the timezone (optional) .setCronName("expression_cron") // set cron name .setCronDescription("expression_cron") // set corn description (optional) .setJobMeta(jobMeta) // set job meta .build(); // build cron details // create expression cron ZCCronDetails expressionCron = jobScheduling.cron.createCron(expressionCronDetails); 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 Java method to get details of a particular cron with sample code snippets." last_updated: "2026-07-02T09:34:10.089Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/cron/get-cron-details/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/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 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. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; ZCCronDetails cronA = jobScheduling.cron.getCron(12378634912l); // get cron details with cron id ZCCronDetails cronB = jobScheduling.cron.getCron("test_cron"); // get cron details with cron name -------------------------------------------------------------------------------- title: "Get Details of All Crons" description: "This page describes the Java method to get the details of all the cron in the project with sample code snippets." last_updated: "2026-07-02T09:34:10.089Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/cron/get-all-cron-details/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/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 The following SDK will allow you to get all available information on all Pre-Defined Crons using the getCron() SDK method. Note: This method will only fetch you details of Pre-Defined Crons. This method will not work for Dynamic Crons. #### Sample Code Snippet <br> import java.util.List; import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; List&lt;ZCCronDetails&gt; allCrons = jobScheduling.cron.getCron(); // get all cron details -------------------------------------------------------------------------------- title: "Update Cron" description: "This page describes the Java method to update a cron in the project with sample code snippets." last_updated: "2026-07-02T09:34:10.090Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/cron/update-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/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 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 getCron() method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; ZCCronDetails cron = jobScheduling.cron.getCron(12378634912l); // get cron with cron Id cron.setCronName("test_cron"); // set new cron name ZCCronDetails updatedCronA = jobScheduling.cron.updateCron(12378634912l, cron); // update cron with cron Id updatedCronA.setCronName("updated_test_cron"); ZCCronDetails updatedCronB = jobScheduling.cron.updateCron("test_cron", cron); // update cron with cron name -------------------------------------------------------------------------------- title: "Pause Cron" description: "This page describes the Java method to pause a cron in the project with sample code snippets." last_updated: "2026-07-02T09:34:10.090Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/cron/pause-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/job-scheduling/cron/pause-cron/) - Python SDK (/en/sdk/python/v1/job-scheduling/cron/pause-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Pause Cron 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. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; ZCCronDetails pausedCronA = jobScheduling.cron.pauseCron(123456789l); // pause cron with corn id ZCCronDetails pausedCronB = jobScheduling.cron.pauseCron("test_cron"); // pause cron with cron name -------------------------------------------------------------------------------- title: "Resume Cron" description: "This page describes the Java method to resume a paused cron in the project with sample code snippets." last_updated: "2026-07-02T09:34:10.090Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/cron/resume-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/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 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. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; ZCCronDetails resumedCronA = jobScheduling.cron.resumeCron(123456789l); // resume cron with cron id ZCCronDetails resumedCronB = jobScheduling.cron.resumeCron("test_cron"); // resume cron with cron name -------------------------------------------------------------------------------- title: "Run Cron" description: "This page describes the Java method to execute a cron in the project with sample code snippets." last_updated: "2026-07-02T09:34:10.090Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/cron/run-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/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/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Run Cron 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. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.job.ZCJobDetails; ZCJobDetails runCronA = jobScheduling.cron.runCron(123456789l); // run cron with cron id ZCJobDetails runCronB = jobScheduling.cron.runCron("test_cron"); // run cron with cron name -------------------------------------------------------------------------------- title: "Delete Cron" description: "This page describes the Java method to delete a cron in the project with sample code snippets." last_updated: "2026-07-02T09:34:10.090Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/cron/delete-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/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 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. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; ZCCronDetails deletedCronA = jobScheduling.cron.deleteCron(123456789l); // delete cron with cron Id ZCCronDetails deletedCronB = jobScheduling.cron.deleteCron("test_cron"); // delete cron with cron name ##### Job Pool -------------------------------------------------------------------------------- title: "Get All Job Pool" description: "This page describes the Java method to get all the job pools present in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.090Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/jobpool/get-all-job-pool/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/jobpool/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/job-scheduling/jobpool/get-all-jobpool/) - 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 Pool Using the following SDK, you will be able to get all the available details on all of the available Job Pools. #### Sample Code Snippet <br> import java.util.ArrayList; import com.zc.component.jobscheduling.beans.jobpool.ZCJobpoolDetails; ArrayList&lt;ZCJobpoolDetails&gt; jobpools = jobScheduling.getJobpool(); // get all jobpool -------------------------------------------------------------------------------- title: "Get a Specific Job Pool" description: "This page describes the Java method to get a specific job pool present in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.090Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/jobpool/get-job-pool/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/jobpool/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/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 a Specific Job Pool 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. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.jobpool.ZCJobpoolDetails; ZCJobpoolDetails jobpoolA = jobScheduling.getJobpool("test_jobpool"); // get jobpool with jobpool name ZCJobpoolDetails jobpoolB = jobScheduling.getJobpool(1234567889L); // get jobpool with jobpool Id ##### Jobs -------------------------------------------------------------------------------- title: "Create Job" description: "This page describes the Java method to create a Job with sample code snippets." last_updated: "2026-07-02T09:34:10.090Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/jobs/create-job/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/job/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/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 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: #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.job.ZCJobMetaDetail; import com.zc.component.jobscheduling.beans.job.ZCJobBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobDetails; import org.json.simple.JSONObject; // generate function job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // get function job builder .setJobConfig(2, 15 * 60 l) // set job config - job retries => 2 retries in 15 mins (optional) .setTargetName("target_function") // set target function's name (optional) (either TargetName or TargetId is mandatory) // .setTargetId(1234567890L) // set the target function's Id (optional) (either TargetName or TargetId is mandatory) .setParams(new JSONObject() { { put("arg1", "job"); put("arg2", "test"); } }) // set params to be passed to target function (optional) .setJobName("job_name") // set job name .setJobpoolName("test") // set the name of the Function jobpool to which the job should be submitted .build(); // build job meta // submit function job ZCJobDetails functionJob = jobScheduling.job.submitJob(jobMeta); **Ensure the following packages are imported:** import com.zc.component.jobscheduling.beans.job.ZCJobMetaDetail; import com.zc.component.jobscheduling.beans.job.ZCJobBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobDetails; import org.json.simple.JSONObject; // generate circuit job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.circuitJobBuilder() // create circuit job builder .setJobConfig(2, 15 * 60 l) // set job config - job retries => 2 retries in 15 mins (optional) .setTargetName("target_circuit") // set target circuits's name (optional) (either TargetName or TargetId is mandatory) // .setTargetId(1234567890L) // set the target circuits's Id (optional) (either TargetName or TargetId is mandatory) .setCircuitInput(new JSONObject() { { put("key1", "value1"); put("key2", "value2"); } }) // set the test cases for the circuit .setJobName("test_job") // set job name .setJobpoolName("test") // set the name of the Circuit jobpool where the job should be submitted .build(); // build circuit job meta // submit circuit job ZCJobDetails circuitJob = jobScheduling.job.submitJob(jobMeta); **Ensure the following packages are imported:** import com.zc.component.jobscheduling.beans.job.ZCJobMetaDetail; import com.zc.component.jobscheduling.beans.job.ZCJobBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobDetails; import org.json.simple.JSONObject; // generate webhook job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.webhookJobBuilder() // create web hook job builder .setJobConfig(2, 15 * 60 l) // set job config - job retries => 2 retries in 15 mins (optional) .setRequestMethod("POST") // set web hook request's method .setUrl("https://catalyst.zoho.com") // set web hook request's url .setParams(new JSONObject() { { put("arg1", "test"); put("arg2", "job"); } }) // set the web hook request's query params (optional) .setHeaders(new JSONObject() { { put("IS_TEST_REQUEST", "true"); } }) // set the web hook request's headers (optional) .setRequestBody("test_request") // set the web hook request's body (optional) .setJobName("test_job") // set job name .setJobpoolName("test") // set the name of the Webhook jobpool to which the job should be submitted .build(); // build web hook job meta // submit web hook job ZCJobDetails webHookJob = jobScheduling.job.submitJob(jobMeta); **Ensure the following packages are imported:** import com.zc.component.jobscheduling.beans.job.ZCJobMetaDetail; import com.zc.component.jobscheduling.beans.job.ZCJobBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobDetails; import org.json.simple.JSONObject; // generate appsail job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.appSailJobBuilder() // create appsail job builder .setJobConfig(2, 15 * 60 l) // set job config - job retries => 2 retries in 15 mins (optional) .setTargetName("test_appsail") // set appsail name .setRequestMethod("POST") // set appsail request method .setUrl("/test") // set appsail request url .setParams(new JSONObject() { { put("arg1", "value1"); put("arg2", "value2"); } }) // set appsail request query params .setHeaders(new JSONObject() { { put("IS_TEST_REQUEST", "true"); } }) // set the appsail request's headers (optional) .setRequestBody("test_request") // set the appsail request's body (optional) .setJobName("test_job") // set job name .setJobpoolName("test") // set the name of the AppSail jobpool to which the job should be submitted .build(); // build appsail job meta // submit appsail job ZCJobDetails appSailJob = jobScheduling.job.submitJob(jobMeta); -------------------------------------------------------------------------------- title: "Get Job Details" description: "This page describes the Java method to get all available details about a Job with sample code snippets." last_updated: "2026-07-02T09:34:10.091Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/jobs/get-job/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/job/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/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 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. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.job.ZCJobDetails; ZCJobDetails fetchedJob = jobScheduling.job.getJob(1234567890L); // get job with job Id -------------------------------------------------------------------------------- title: "Delete a Job" description: "This page describes the Java method to delete a Job with sample code snippets." last_updated: "2026-07-02T09:34:10.091Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/jobs/delete-job/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/job/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/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 a Job 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. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.job.ZCJobDetails; ZCJobDetails deletedJob = jobScheduling.job.deleteJob(1234567890L); // 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-07-02T09:34:10.091Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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) - Node.js SDK (/en/sdk/nodejs/v2/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 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. #### Sample Code Snippet <br> import com.zc.component.pipeline.ZCPipeline; import com.zc.component.pipeline.ZCPipelineDetails; import com.zc.component.pipeline.ZCPipelineRunHistory; # 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. You can create a new pipelines_service instance as shown below. This component instance will be used for all Pipeline operations in the Java SDK. ZCPipeline pipelines_service = ZCPipeline.getInstance(); -------------------------------------------------------------------------------- title: "Get Pipeline Details" description: "This page describes the method to fetch all the details of an existing Catalyst Pipeline." last_updated: "2026-07-02T09:34:10.091Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/pipelines/get-pipeline-details/" service: "All Services" related: - Node.js SDK (/en/sdk/nodejs/v2/pipelines/get-pipeline-instance) - Python SDK (/en/sdk/python/v1/pipelines/get-pipeline-instance) -------------------------------------------------------------------------------- # Get Pipeline Details 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. ZCPipelineDetails pipeline_details = pipelines_service.getPipelineDetails(16965000000019202L); A sample response is shown below: { "status": "success", "data": { "pipeline_id": "16965000000019202L", "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-07-02T09:34:10.091Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/pipelines/execute-pipeline/" service: "All Services" related: - Node.js SDK (/en/sdk/nodejs/v2/pipelines/get-pipeline-instance) - Python SDK (/en/sdk/python/v1/pipelines/get-pipeline-instance) -------------------------------------------------------------------------------- # Execute Pipeline 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. JSONObject env = new JSONObject(); env.put("EVENT", "push"); env.put("URL", "https://www.google.com"); ZCPipelineRunHistory run = pipelines_service.runPipeline(8431000000161112051L,main,env); A sample response is shown below: { "status": "success", "data": { "history_id": "5000000021007", "pipeline_id": "8431000000161112051L", "event_time": "Mar 20, 2024 02:02 PM", "event_details": { "BRANCH_NAME": "detective_pre", "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 Java application with a sample code snippet." last_updated: "2026-07-02T09:34:10.091Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/quickml/execute-quickml-endpoints/" service: "QuickML" related: - QuickML (/en/quickml/) - QuickML Pipeline Endpoints (/en/quickml/help/pipeline-endpoints/) -------------------------------------------------------------------------------- # Catalyst QuickML 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 input data to the model's endpoint are passed as key-value pairs through a hashmap. 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. #### Sample Code Snippet <br> import java.util.HashMap; import com.zc.component.quickml.ZCQuickML; import com.zc.component.quickml.ZCQuickMLDetail; // input data HashMap&lt;String, String&gt; map= new HashMap<>(); //Give column name and value as per your data set map.put("column_name1", "value1"); map.put("column_name2", "value2"); map.put("column_name3", "value3"); String EndPointKey = "c8c7b4bfd8fdf4f29b9499fjhd9d03f5b2a79cd4792b302e26934a3db984214fd4cfc8049bba7acb15fe73eac0d15af59"; // End point key copied from catalyst UI. // create a quickml instance ZCQuickML quickMlInstance = ZCQuickML.getInstance(); // execute method ZCQuickMLDetail result = quickMlInstance.predict(EndPointKey, map); System.out.println(result.getStatus()); // return the result status System.out.print(result.getResult()); // return the result data #### Serverless ##### AppSail -------------------------------------------------------------------------------- title: "Implement SDK in AppSail" description: "This page describes the method to implement Java SDK in an AppSail service for Catalyst-managed runtimes and avail Catalyst features within the application." last_updated: "2026-07-02T09:34:10.092Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/serverless/appsail/implement-sdk-in-appsail/" service: "Serverless" related: - AppSail Help (/en/serverless/help/appsail/introduction) -------------------------------------------------------------------------------- # Catalyst AppSail 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 Java SDK in your AppSail applications for Catalyst-managed runtimes. AppSail supports frameworks of Java such as Embedded Jetty, Spring MVC, and Spring Boot. You can access help guides for building sample apps in Java. ## Implement Java SDK in AppSail You can implement the Catalyst Java SDK in the codebase of your AppSail service with ease. 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> ### Implement Java SDK in a Maven Project 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; ##### 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-07-02T09:34:10.092Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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 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. ZCCircuitDetails is used to refer to the circuit, and ZCCircuitExecutionDetails returns the circuit execution details. #### Sample Code Snippet <br> import org.json.simple.JSONObject; import com.zc.component.circuits.ZCCircuit; import com.zc.component.circuits.ZCCircuitDetails; import com.zc.component.circuits.ZCCircuitExecutionDetails; import com.zc.component.circuits.ZCCircuitExecutionStatus; //Executes the circuit by referring to its Circuit ID and passes the input JSON ZCCircuitDetails userBackupCircuit = ZCCircuit.getInstance().getCircuitInstance(1239000000L); JSONObject execInputJson = new JSONObject(); execInputJson.put("key", "value"); ZCCircuitExecutionDetails circuitExecution = userBackupCircuit.execute("Case 1",execInputJson); String executionId = circuitExecution.getExecutionId(); //Returns the Execution ID //Returns the circuit's execution details by referring to the Execution ID of the circuit. //You can write your own success logic here. ZCCircuitDetails userBackupCircuit = ZCCircuit.getInstance().getCircuitInstance(1239000000L); ZCCircuitExecutionDetails circuitExecution = userBackupCircuit.getExecutionDetails(executionId); if(circuitExecution.getStatus().equals(ZCCircuitExecutionStatus.SUCCESS)) { //Success logic } //Aborts the circuit execution by referring to the Execution ID of the circuit ZCCircuitDetails userBackupCircuit = ZCCircuit.getInstance().getCircuitInstance(1239000000L); userBackupCircuit.abortExecution(executionId); ##### Functions -------------------------------------------------------------------------------- title: "Execute Function" description: "This page describes the method to execute functions in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.092Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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 function The function group in Catalyst is created and defined using either the online editor or the Command Line Interface (CLI). The function group can be executed to verify its functionality. ### Execute Function If a function endpoint is needs to be executed, then the following code snippet can be used. Here, the function's parameters are constructed as JSON objects and passed through the executeFunction() method. The function ID is an auto-generated numeric long integer value. #### Sample Code Snippet <br> import org.json.simple.JSONObject; import com.zc.functions.ZCatalystFunction; //Create a JSONObject For Adding Parameters JSONObject jsonobj = new JSONObject(); //Add Parameters as key-value pairs to pass them to the method jsonobj.put("Name", "Amelia"); //Execute the method referring the function groupId with the JSON object Object result = ZCatalystFunction.getInstance().getFunctionInstance(1510000000054095L).executeFunction(jsonobj); Note: You can also pass the function name as a string to the getFunctionInstance() method instead of using the function ID. #### SmartBrowz -------------------------------------------------------------------------------- title: "PDF & Screenshot" description: "This page describes the method to generate PDF and Screenshot" last_updated: "2026-07-02T09:34:10.092Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/generate-pdfnscreenshot/" service: "SmartBrowz" related: - PDF & Screenshot - API (/en/api/code-reference/smartbrowz/generate-pdfnscreenshoturl/#PDF%26ScreenshotwithHTML%2fURLasInput) -------------------------------------------------------------------------------- # PDF & Screenshot 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. #### Sample Code Snippet <br> import com.zc.component.smartbrowz.ZCSmartBrowz; import com.zc.component.smartbrowz.ZCSmartBrowzConvertDetails; ### Generate Visual Document From a Predefined Template // Initialize SmartBrowz ZCSmartBrowz smartBrowz = ZCSmartBrowz.getInstance(); // Generate output from a predefined template ObjectMapper mapper = new ObjectMapper(); JsonNode templateData = mapper.createObjectNode(); ((ObjectNode)templateData).put("name", "Amelia Burrows"); ((ObjectNode)templateData).put("age", "34"); ((ObjectNode)templateData).put("address", "Houstan"); ((ObjectNode)templateData).put("country", "USA"); ((ObjectNode)templateData).put("email", "emma@zylker.com"); ZCSmartBrowzPDFOptions pdfOptions = ZCSmartBrowzPDFOptions.getInstance(); pdfOptions.setDisplayHeaderFooter(true); pdfOptions.setFormat("A4"); pdfOptions.setPageRanges("1-2"); pdfOptions.setPrintBackground(true);; pdfOptions.setPassword("Siva123"); // set password after enabling template password setting in UI pdfOptions.setLandscape(true); pdfOptions.setScale(new BigDecimal("1.0")); pdfOptions.setWidth("100"); pdfOptions.setHeight("100"); ZCSmartBrowzNavigationOptions navigationOptions = new ZCSmartBrowzNavigationOptions(); navigationOptions.setWaitUntil("domcontentloaded"); navigationOptions.setTimeout(30000); ZCSmartBrowzPageOptions pageOptions = new ZCSmartBrowzPageOptions(); ContentDetails contentDetails = new ContentDetails(); contentDetails.setContent("&lt;html&gt;&lt;body&gt;Hello World&lt;/body&gt;&lt;/html&gt;"); pageOptions.setCss(contentDetails); pageOptions.setDevice("Blackberry PlayBook"); pageOptions.setJavaScriptEnabled(true); ViewportDetails viewportDetails = new ViewportDetails(); viewportDetails.setHeight(800); viewportDetails.setWidth(600); pageOptions.setViewport(viewportDetails); ZCSmartBrowzTemplateOptions templateOptions = ZCSmartBrowzTemplateOptions.getInstance(); templateOptions.setPdfDetails(pdfOptions); templateOptions.setNavigationDetails(navigationOptions); templateOptions.setOutputType(ZC_CONVERT_OUTPUT_TYPE.PDF); templateOptions.setPageDetails(pageOptions); templateOptions.setTemplateInput(templateData); templateOptions.setTemplateId(2075000000021001L); InputStream outputStream = smartBrowz.generateFromTemplate(templateOptions); ### Convert to PDF from HTML // Initialize SmartBrowz ZCSmartBrowz smartBrowz = ZCSmartBrowz.getInstance(); // Convert to PDF from HTML ZCSmartBrowzConvertDetails convertDetailsForPDF = ZCSmartBrowzConvertDetails.getInstance(); ZCSmartBrowzPDFOptions pdfOptions = ZCSmartBrowzPDFOptions.getInstance(); pdfOptions.setDisplayHeaderFooter(true); pdfOptions.setFormat("A4"); MarginDetails marginDetails = new MarginDetails(); marginDetails.setTop("10"); marginDetails.setRight("10"); marginDetails.setLeft("10"); marginDetails.setBottom("10"); pdfOptions.setMargin(marginDetails); pdfOptions.setPageRanges("1-2"); pdfOptions.setPrintBackground(true);; pdfOptions.setPassword("Siva123"); pdfOptions.setLandscape(true); pdfOptions.setScale(new BigDecimal("1.0")); pdfOptions.setWidth("100"); pdfOptions.setHeight("100"); ZCSmartBrowzNavigationOptions navigationOptions = new ZCSmartBrowzNavigationOptions(); navigationOptions.setWaitUntil("domcontentloaded"); navigationOptions.setTimeout(30000); ZCSmartBrowzPageOptions pageOptions = new ZCSmartBrowzPageOptions(); ContentDetails contentDetails = new ContentDetails(); contentDetails.setContent("&lt;html&gt;&lt;body&gt;Hello World&lt;/body&gt;&lt;/html&gt;"); pageOptions.setCss(contentDetails); pageOptions.setDevice("Blackberry PlayBook"); pageOptions.setJavaScriptEnabled(true); ViewportDetails viewportDetails = new ViewportDetails(); viewportDetails.setHeight(800); viewportDetails.setWidth(600); pageOptions.setViewport(viewportDetails); convertDetailsForPDF.setPdfDetails(pdfOptions); convertDetailsForPDF.setNavigationDetails(navigationOptions); convertDetailsForPDF.setPageDetails(pageOptions); convertDetailsForPDF.setHtml("&lt;html&gt;Hello&lt;/html&gt;"); InputStream outPutStream = smartBrowz.convertToPdf(convertDetailsForPDF); ### Take a screenshot from URL // initialize SmartBrowz ZCSmartBrowz smartBrowz = ZCSmartBrowz.getInstance(); // convert to PDF from URL ZCSmartBrowzConvertDetails convertDetailsForPDF = ZCSmartBrowzConvertDetails.getInstance(); ZCSmartBrowzPDFOptions pdfOptions = ZCSmartBrowzPDFOptions.getInstance(); pdfOptions.setDisplayHeaderFooter(true); pdfOptions.setFormat("A4"); MarginDetails marginDetails = new MarginDetails(); marginDetails.setTop("10"); marginDetails.setRight("10"); marginDetails.setLeft("10"); marginDetails.setBottom("10"); pdfOptions.setMargin(marginDetails); pdfOptions.setPageRanges("1-2"); pdfOptions.setPrintBackground(true);; pdfOptions.setPassword("Siva123"); pdfOptions.setLandscape(true); pdfOptions.setScale(new BigDecimal("1.0")); pdfOptions.setWidth("100"); pdfOptions.setHeight("100"); ZCSmartBrowzNavigationOptions navigationOptions = new ZCSmartBrowzNavigationOptions(); navigationOptions.setWaitUntil("domcontentloaded"); navigationOptions.setTimeout(30000); ZCSmartBrowzPageOptions pageOptions = new ZCSmartBrowzPageOptions(); ContentDetails contentDetails = new ContentDetails(); contentDetails.setContent("&lt;html&gt;&lt;body&gt;Hello World&lt;/body&gt;&lt;/html&gt;"); pageOptions.setCss(contentDetails); pageOptions.setDevice("Blackberry PlayBook"); pageOptions.setJavaScriptEnabled(true); ViewportDetails viewportDetails = new ViewportDetails(); viewportDetails.setHeight(800); viewportDetails.setWidth(600); pageOptions.setViewport(viewportDetails); convertDetailsForPDF.setPdfDetails(pdfOptions); convertDetailsForPDF.setNavigationDetails(navigationOptions); convertDetailsForPDF.setPageDetails(pageOptions); convertDetailsForPDF.setUrl("http://www.example.com"); InputStream outPutStream = smartBrowz.convertToPdf(convertDetailsForPDF); 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. ##### 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-07-02T09:34:10.093Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/browser-grid/overview/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/overview/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Overview 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 Java 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-07-02T09:34:10.093Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/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 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. **Ensure you import the following packages** import com.zc.component.smartbrowz.*; ZCBrowserGrid grid = ZCBrowserGrid.getInstance()// get instance for the project -------------------------------------------------------------------------------- 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-07-02T09:34:10.093Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/browser-grid/get-all-grids/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/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 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 intialize it with Admin scope. You can learn more about this requirement from this section **Ensure you import the following packages** import com.zc.component.smartbrowz.*; List<\ZCGrid> gridList = grid.getGrid(); // Will return a list of details of all the grids that are present in the project. ### 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-07-02T09:34:10.094Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-grid/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/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 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 intialize 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. **Ensure you import the following packages** import com.zc.component.smartbrowz.*; ZCBrowserGrid gridDetails = grid.getGrid(3970000000005013l); // get grid details using the Grid ID ### 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. **Ensure you import the following packages** import com.zc.component.smartbrowz.*; ZCBrowserGrid gridDetails = grid.getGrid("Selenium_Grid"); // get grid details using the name of the grid ### 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-07-02T09:34:10.094Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-node/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/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 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 intialize 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. **Ensure you import the following packages** import com.zc.component.smartbrowz.*; ZCBrowserGrid nodeDetails = grid.getGridNodes(3970000000005013l); // 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. **Ensure you import the following packages** import com.zc.component.smartbrowz.*; ZCBrowserGrid gridDetails = 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-07-02T09:34:10.094Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/browser-grid/stop-grid/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/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 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 intialize 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. **Ensure you import the following packages** import com.zc.component.smartbrowz.*; ZCBrowserGrid gridTerminate = grid.stopGrid(3970000000005013l); // 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. **Ensure you import the following packages** import com.zc.component.smartbrowz.*; ZCBrowserGrid gridTerminate = grid.stopGrid("Selenium_Grid"); //stop the grid using the name of the grid ### Example of Expected Response { "status": "success", "data": true } #### Zia Services -------------------------------------------------------------------------------- title: "OCR" description: "This page describes the method to use the Optical Character Recognition feature to detect textual characters in your Java application with sample code snippets" last_updated: "2026-07-02T09:34:10.094Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/ocr/" service: "Zia Services" related: - OCR - API (/en/api/code-reference/zia-services/ocr/#OCR) -------------------------------------------------------------------------------- # Optical Character Recognition 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, as shown in the code below. You can also format the response you receive as shown in the sample code. 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 specify the model type as OCR in setModelType(), and the language codes using setLanguageCode. These values are optional for the OCR model type. By default, it is processed as the OCR model type, and the languages are automatically detected if they are not specified. #### Sample Code Snippet <br> import com.zc.component.ml.ZCContent; import com.zc.component.ml.ZCLine; import com.zc.component.ml.ZCML; import com.zc.component.ml.ZCOCRModelType; import com.zc.component.ml.ZCOCROptions; import com.zc.component.ml.ZCParagraph; import java.io.File; File file = new File("/Users/amelia-421/Desktop/MyImage.webp"); //Specify the file path ZCOCROptions options = ZCOCROptions.getInstance().setModelType(ZCOCRModelType.OCR).setLanguageCode("eng,tam"); //Set the model type and languages ZCContent ocrContent = ZCML.getInstance().getContent(file, options); //Call getContent() with the file object to get the detected text in ZCContent object //To get individual paragraphs List paragraphs = ocrContent.getParagraphs(); for(ZCParagraph paragraph : paragraphs) { //To get individual lines in the paragraph List paraLines = paragraph.lines; for(ZCLine line : paraLines) { //To get individual words in the line String words = line.words; String text = line.text; //Raw line text } String text = paragraph.text; //Returns the raw paragraph text } String text = ocrContent.text; //Returns the raw image text -------------------------------------------------------------------------------- title: "Face-Analytics" description: "This page describes the method to use the Face Analytics feature to detect faces with specified criteria in your Java application with sample code snippets" last_updated: "2026-07-02T09:34:10.094Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/face-analytics/" service: "Zia Services" related: - Face Analytics - API (/en/api/code-reference/zia-services/face-analytics/#FaceAnalytics) -------------------------------------------------------------------------------- # Face Analytics 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 can learn more from the Face Analytics help page. You must provide ._jpg_/._jpeg_ or ._png_ files as the input. Refer to the API documentation for the request and response formats. You can enable or disable the age, smile, or gender detection by setting the attributes as true or false. You can also specify the mode as BASIC, MODERATE, or ADVANCED. 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. #### Sample Code Snippet <br> import com.zc.component.ml.ZCAge; import com.zc.component.ml.ZCAnalyseMode; import com.zc.component.ml.ZCFaceAnalysisData; import com.zc.component.ml.ZCFaceAnalyticsOptions; import com.zc.component.ml.ZCFaceEmotion; import com.zc.component.ml.ZCFaceLandmark; import com.zc.component.ml.ZCFacePoints; import com.zc.component.ml.ZCFaces; import com.zc.component.ml.ZCGender; import com.zc.component.ml.ZCML; import java.io.File; File file = new File("{filePath}"); //Specify the file path //Set each attribute detection as required or not required, and the mode of detection ZCFaceAnalyticsOptions options = ZCFaceAnalyticsOptions.getInstance().setAgeNeeded(false) .setEmotionNeeded(true).setGenderNeeded(true).setAnalyseMode(ZCAnalyseMode.ADVANCED); ZCFaceAnalysisData faceData = ZCML.getInstance().analyzeFace(file, options); //Call analyzeFace() with the file and options Long facesCount = faceData.getFacesCount(); //To obtain the count of faces in the image List faces = faceData.getFacesList(); for(ZCFaces face : faces) { //Executed for each detected face Double faceConfidence = face.getConfidence(); //To obtain the confidence score of each analysis ZCAge age = face.getAge(); //To get the age of the face ZCGender gender = face.getGender(); //To get the gender of the face ZCFaceEmotion emotion = face.getEmotion(); //To get smile information ZCFacePoints facePoints = face.getCoordinates(); //To get the coordinates of the face List faceLandmarks = face.getFaceLandmarks(); //To get the landmarks of the facial features } -------------------------------------------------------------------------------- title: "Image-Moderation" description: "This page describes the method to use the Image Moderation feature to detect vulnerability in images within your Java application with sample code snippets" last_updated: "2026-07-02T09:34:10.094Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/image-moderation/" service: "Zia Services" related: - Image-Moderation - API (/en/api/code-reference/zia-services/image-moderation/#ImageModeration) -------------------------------------------------------------------------------- # Image Moderation 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 learn more from the Image Moderation help page. 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. #### Sample Code Snippet <br> import com.zc.component.ml.ZCAnalyseMode; import com.zc.component.ml.ZCImageModerateData; import com.zc.component.ml.ZCImageModerationConfidence; import com.zc.component.ml.ZCImageModerationOptions; import com.zc.component.ml.ZCImageModerationPrediction; import com.zc.component.ml.ZCML; import java.io.File; File file = new File("{filePath}"); //Specify the file path ZCImageModerationOptions options = ZCImageModerationOptions.getInstance().setAnalyseMode(ZCAnalyseMode.ADVANCED); //Set the moderation mode ZCImageModerateData imData = ZCML.getInstance().moderateImage(file, options); //Call moderateImage() with the input file and options ZCImageModerationPrediction prediction = imData.getPrediction(); //To get the final prediction Double predictionConfidence = imData.getConfidence(); //To get the confidence score of the final prediction List confidences = imData.getImageModerationConfidenceList(); //To get the confidence scores of each criteria predicted -------------------------------------------------------------------------------- title: "Object-Recognition" description: "This page describes the method to use the Object Recognition feature to locate objects in your Java application with sample code snippets" last_updated: "2026-07-02T09:34:10.094Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/object-recognition/" service: "Zia Services" related: - Image-Moderation - API (/en/api/code-reference/zia-services/image-moderation/#ImageModeration) -------------------------------------------------------------------------------- # Object Recognition 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 learn more from the Object Recognition help page. 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. It returns the coordinates of each object, their type, and the confidence score of each recognition. #### Sample Code Snippet <br> import com.zc.component.ml.ZCML; import com.zc.component.ml.ZCObjectDetectionData; import com.zc.component.ml.ZCObjectPoints; import java.io.File; File file = new File("{filePath}"); //Specify the file location List objects = ZCML.getInstance().detectObjects(file); //To detect the objects in the image for(ZCObjectDetectionData object : objects) { String objectType = object.getObjectType(); //To get the object type Double objConfidence = object.getConfidence(); //To get the confidence score of the recognition ZCObjectPoints objCoordinates = object.getObjectPoints(); //To get the coordinates of the object in the image } -------------------------------------------------------------------------------- title: "Barcode Scanner" description: "This page describes the method to use the Barcode Scanner feature to scan certain data formats in your Java application with sample code snippets" last_updated: "2026-07-02T09:34:10.095Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/barcode-scanner/" service: "Zia Services" related: - Barcode Scanner - API (/en/api/code-reference/zia-services/barcode-scanner/#BarcodeScanner) -------------------------------------------------------------------------------- # Barcode Scanner 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 learn more from the Barcode Scanner help page. 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. #### Sample Code Snippet <br> import com.zc.component.ml.ZCBarcodeData; import com.zc.component.ml.ZCBarcodeFormat; import com.zc.component.ml.ZCBarcodeOptions; import com.zc.component.ml.ZCML; import java.io.File; File file = new File("{filePath}"); //Specify the file path ZCBarcodeOptions options = ZCBarcodeOptions.getInstance().setFormat(ZCBarcodeFormat.ALL); //Specify the format ZCBarcodeData barcodeResult =ZCML.getInstance().scanBarcode(file, options); //Call scanBarcode() with the input file and options String content = barcodeResult.getContent(); //getContent() obtains the decoded content ##### Identity Scanner -------------------------------------------------------------------------------- title: "Facial Comparison" description: "This page describes the method to use facial comparison feature in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.095Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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 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. 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. #### Sample Code Snippet <br> import com.catalyst.advanced.CatalystAdvancedIOHandler; import com.zc.component.ml.ZCFaceComparisonData; import com.zc.component.ml.ZCML; import java.io.File; File sourceImage= new File("/Users/amelia-421/Desktop/source.webp"); //Specify the file path File queryImage= new File("/Users/amelia-421/Desktop/query.webp"); //Specify the file path ZCFaceComparisonData data = ZCML.getInstance().compareFace(sourceImage,queryImage ); Double confidence = data.getConfidence(); //Fetches the confidence score boolean matched= data.getMatched(); //Fetches the result as a boolean value -------------------------------------------------------------------------------- title: "Aadhaar" description: "This page describes the method to use the AADHAAR document processing feature in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.095Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/identity-scanner/aadhaar/" service: "Zia Services" related: - Aadhaar - API (/en/api/code-reference/zia-services/identity-scanner/aadhaar/#Aadhaar) -------------------------------------------------------------------------------- # Identity Scanner 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 using the keys aadhaarFront and aadhaarBack, as shown in the code below. 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 Java 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 Note: The variables should be declared only in following order: aadhaarFront, aadhaarBack, languageCode 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. #### Sample Code Snippet <br> import com.zc.component.ml.ZCContent; import com.zc.component.ml.ZCLine; import com.zc.component.ml.ZCML; import com.zc.component.ml.ZCParagraph; import java.io.File; File aadhaarFront = new File("/Users/amelia-421/Desktop/myAadhaar1.webp"); //Specify the file path of the front side image of the Aadhaar card File aadhaarBack = new File("/Users/amelia-421/Desktop/myAadhaar2.webp"); //Specify the file path of the back side image of the Aadhaar card String languageCode = "eng,tam"; //Set the languages ZCContent ocrContent = ZCML.getInstance().getContentForAadhaar(aadhaarFront,aadhaarBack,languageCode); //Call getContent() with the file object to get the detected text in ZCContent object //To get individual paragraphs List paragraphs = ocrContent.getParagraphs(); for(ZCParagraph paragraph : paragraphs) { //To get individual lines in the paragraph List paraLines = paragraph.lines; for(ZCLine line : paraLines) { //To get individual words in the line String words = line.words; String text = line.text; //Raw line text } String text = paragraph.text; //Returns the raw paragraph text } String text = ocrContent.text; //Returns the raw image text -------------------------------------------------------------------------------- title: "PAN" description: "This page describes the method to use the PAN document processing feature in your Java application with sample code snippets" last_updated: "2026-07-02T09:34:10.095Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/identity-scanner/pan/" service: "Zia Services" related: - PAN - API (/en/api/code-reference/zia-services/identity-scanner/pan/#PAN) -------------------------------------------------------------------------------- # Identity Scanner 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. Allowed file formats: _.webp_, _.jpeg_, _.png_<br /> File size limit: 15 MB You must specify the model type as PAN using ZCOCRModelType. 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. #### Sample Code Snippet <br> import java.sql.Date; import com.zc.component.ml.ZCContent; import com.zc.component.ml.ZCML; import com.zc.component.ml.ZCOCRModelType; import com.zc.component.ml.ZCOCROptions; import com.zc.component.ml.ZCPanData; import java.io.File; File file = new File("/Users/amelia-421/Desktop/pan.webp"); //Specify the file path ZCOCROptions options = ZCOCROptions.getInstance().setModelType(ZCOCRModelType.PAN); //Set the model type ZCContent ocrContent = ZCML.getInstance().getContent(file, options); //Call getContent() with the file object to get the detected text in ZCContent object ZCPanData panData = ocrContent.getPanData(); //This method obtains the PAN data //To fetch individual elements like the first name, last name, PAN details, and DOB from the processed image String firstName = panData.getFirstName(); String lastName = panData.getLastName(); String pan = panData.getPan(); Date dob = panData.getDob(); -------------------------------------------------------------------------------- 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-07-02T09:34:10.096Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/identity-scanner/passbook/" service: "Zia Services" related: - Passbook - API (/en/api/code-reference/zia-services/identity-scanner/passbook/#Passbook) -------------------------------------------------------------------------------- # Identity Scanner 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 ZCOCRModelType. You can also optionally specify the language using setLanguageCode(). 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. #### Sample Code Snippet <br> import com.zc.component.ml.ZCContent; import com.zc.component.ml.ZCLine; import com.zc.component.ml.ZCML; import com.zc.component.ml.ZCOCRModelType; import com.zc.component.ml.ZCOCROptions; import com.zc.component.ml.ZCParagraph; import java.io.File; File file = new File("/Users/amelia-421/Desktop/MyPassbook.webp"); //Specify the file path ZCOCROptions options = ZCOCROptions.getInstance().setModelType(ZCOCRModelType.PASSBOOK) .setLanguageCode("tam"); //Set the model type and language ZCContent ocrContent = ZCML.getInstance().getContent(file, options); //Call getContent() with the file object to get the detected text in ZCContent object //To get individual paragraphs List paragraphs = ocrContent.getParagraphs(); for(ZCParagraph paragraph : paragraphs) { //To get individual lines in the paragraph List paraLines = paragraph.lines; for(ZCLine line : paraLines) { //To get individual words in the line String words = line.words; String text = line.text; //Raw line text } String text = paragraph.text; //Returns the raw paragraph text } String text = ocrContent.text; //Returns the raw image text -------------------------------------------------------------------------------- title: "Cheque" description: "This page describes the method to use the Cheque document processing feature in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.096Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/identity-scanner/cheque/" service: "Zia Services" related: - Cheque - API (/en/api/code-reference/zia-services/identity-scanner/cheque/#Cheque) -------------------------------------------------------------------------------- # Identity Scanner 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 setModelType(). Note: Zia only processes cheques of the CTS-2010 format. The response will contain the parameters extracted from the cheque, such as the amount, bank name, branch name, account number, IFSC code, assigned to the respective keys. #### Sample Code Snippet <br> import java.sql.Date; import com.zc.component.ml.ZCChequeData; import com.zc.component.ml.ZCContent; import com.zc.component.ml.ZCML; import com.zc.component.ml.ZCOCRModelType; import com.zc.component.ml.ZCOCROptions; import java.io.File; File file = new File("/Users/amelia-421/Desktop/cheque.webp"); //Specify the file path ZCOCROptions options = ZCOCROptions.getInstance().setModelType(ZCOCRModelType.CHEQUE); //Set the model type ZCContent ocrContent = ZCML.getInstance().getContent(file, options); //Call getContent() with the file object to get the detected text in ZCContent object ZCChequeData chequeData = ocrContent.getChequeData(); //This method obtains the cheque data //To fetch individual elements like the account number, IFSC code, bank name, branch, amount, and date of transaction from the processed image String accountNumber = chequeData.getAccountNumber(); String ifsc = chequeData.getIfsc(); String bankName = chequeData.getBankName(); String branchName = chequeData.getBranchName(); Long amount = chequeData.getAmount(); Date date = chequeData.getDate(); ##### Text Analytics -------------------------------------------------------------------------------- title: "Sentiment Analysis" description: "This page describes the method to use the sentiment analysis feature in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.101Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/text-analytics/sentiment-analysis/" service: "Zia Services" related: - Sentiment Analysis - API (/en/api/code-reference/zia-services/text-analytics/sentiment-analysis/#SentimentAnalysis) -------------------------------------------------------------------------------- # Sentiment Analysis 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. 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 input text is passed to the getSentimentAnalysis() function of the ZCSentimentAnalysisData class. The code contains statements to fetch the sentiments and confidence score of each sentence, as well as the overall score. #### Sample Code Snippet <br> import org.json.simple.JSONArray; import com.catalyst.advanced.CatalystAdvancedIOHandler; import com.zc.component.ml.ZCML; import com.zc.component.ml.ZCSentenceAnalytics; import com.zc.component.ml.ZCSentimentAnalysisData; import com.zc.component.ml.ZCSentimentAnalysisDetails; import com.zc.component.ml.ZCSentimentConfidenceScore; import java.io.File; JSONArray textArray = new JSONArray(); textArray.add("ZylkerDB is one of their best products. I've been Zylker's customer for over a decade now, and I've always had a great experience with them."); //Input text to be processed JSONArray keywords = new JSONArray(); keywords.add("Zylker"); //Optional keywords, if you wish to process the sentences containing only these keywords List listOfSentimentAnalysisData = ZCML.getInstance().getSentimentAnalysis(textArray,keywords); //Input text is passed ZCSentimentAnalysisData sentimentAnalysisData = listOfSentimentAnalysisData.get(0); List SentimentAnalysisDetails = sentimentAnalysisData .getSentimentAnalysisDetails(); for (ZCSentimentAnalysisDetails sentimentAnalysis : SentimentAnalysisDetails) { String sentiment = sentimentAnalysis.getDocumentSentiment(); //To obtain the overall sentiment of the text double overallScore = sentimentAnalysis.getOverallScore(); //To obtain the confidence score of the overall analysis List listOfSentenceAnalytics = sentimentAnalysis.getSentenceAnalytics(); //To obtain the sentiment of each sentence ZCSentenceAnalytics sentenceAnalytic = listOfSentenceAnalytics.get(0); String sentenceSentiment = sentenceAnalytic.getSentiment(); String sentence = sentenceAnalytic.getSentence(); ZCSentimentConfidenceScore sentenceLevelConfidenceScore = sentenceAnalytic.getConfidenceScore(); //To obtain the confidence score of each sentence analysis } -------------------------------------------------------------------------------- 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-07-02T09:34:10.101Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/text-analytics/named-entity-recognition/" service: "Zia Services" related: - Named Entity Recognition - API (/en/api/code-reference/zia-services/text-analytics/named-entity-recognition/#NamedEntityRecognition) -------------------------------------------------------------------------------- # Named Entity Recognition 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 code contains statements to fetch the entities, their tags, locations, and the confidence scores. #### Sample Code Snippet <br> import org.json.simple.JSONArray; import com.zc.component.ml.ZCML; import com.zc.component.ml.ZCNERData; import com.zc.component.ml.ZCNERDetails; import java.io.File; JSONArray textArray = new JSONArray(); textArray.add("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."); //Input text to be processed List listOfNERData = ZCML.getInstance().getNERPrediction(textArray); //Pass the input text List nerDetails = listOfNERData.get(0).getNERList(); String token = nerDetails.get(0).getToken(); //To recognize the entity String tag = nerDetails.get(0).getNERTag(); //To fetch the category of each entity double confidenceScore = nerDetails.get(0).getConfidenceScore(); //To fetch the confidence score of each classification int startIndex = nerDetails.get(0).getStartIndex(); //To fetch the start index of each entity int endIndex = nerDetails.get(0).getEndIndex(); //To fetch the end index of each entity -------------------------------------------------------------------------------- title: "Keyword Extraction" description: "This page describes the method to use the keyword extraction feature in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.101Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/text-analytics/keyword-extraction/" service: "Zia Services" related: - Keyword Extraction - API (/en/api/code-reference/zia-services/text-analytics/keyword-extraction/#KeywordExtraction) -------------------------------------------------------------------------------- # Keyword Extraction 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. #### Sample Code Snippet <br> import org.json.simple.JSONArray; import com.zc.component.ml.ZCKeywordExtractionData; import com.zc.component.ml.ZCML; import java.io.File; JSONArray textArray = new JSONArray(); textArray.add("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."); //Input text to be processed List listOfKeywordExtractionData = ZCML.getInstance().getKeywordExtraction(textArray); //Text is passed ZCKeywordExtractionData keywordExtractionData = listOfKeywordExtractionData.get(0); List keywordsList = keywordExtractionData.getKeywords(); //To fetch the keywords List keyphrasesList = keywordExtractionData.getKeyphrases(); //To fetch the keyphrases -------------------------------------------------------------------------------- title: "All Text Analytics" description: "This page describes the method to use the text analytics feature in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.101Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/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) -------------------------------------------------------------------------------- # All Text Analytics 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. #### Sample Code Snippet <br> import org.json.simple.JSONArray; import com.zc.component.ml.ZCKeywordExtractionData; import com.zc.component.ml.ZCML; import com.zc.component.ml.ZCNERData; import com.zc.component.ml.ZCSentimentAnalysisData; import com.zc.component.ml.ZCTextAnalyticsData; import java.io.File; JSONArray textArray = new JSONArray(); textArray.add("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."); //Input text to be processed JSONArray keywords = new JSONArray(); keywords.add("Zoho"); //Optional keywords for Sentiment Analysis List listOfTextAnalyticsData = ZCML.getInstance().getTextAnalytics(textArray,keywords); //Text and keywords are passed ZCTextAnalyticsData textAnalyticsData = listOfTextAnalyticsData.get(0); ZCKeywordExtractionData keywordExtractionData = textAnalyticsData.getKeywordExtractionData(); //To perform Keyword Extraction on the text Z CNERData nerData = textAnalyticsData.getNERData(); //To perform NER on the text ZCSentimentAnalysisData sentimentAnalysisData = textAnalyticsData.getSentimentAnalysisData(); //To perform Sentiment Analysis on the text ## Modular JavaScript SDK ### v1 -------------------------------------------------------------------------------- title: "Overview" description: "Catalyst offers you JavaScript SDK in a modular architecture, providing you with a singular SDK for browser and server operations." last_updated: "2026-07-02T09:34:10.102Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/overview/" service: "All Services" related: - NodeJS SDK (/en/sdk/nodejs/v2/overview/) - Java SDK (/en/sdk/java/v1/overview/) - Python SDK (/en/sdk/python/v1/overview/) - Web SDK (/en/sdk/web/v4/overview/) - iOS SDK (/en/sdk/ios/v2/overview/) - Android SDK (/en/sdk/android/v2/overview/) - Flutter SDK (/en/sdk/flutter/v2/overview/) - REST APIs (/en/api/code-reference/general/projects/create-new-project/#CreateNewProject) - Catalyst Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Overview The Catalyst **Modular JavaScript SDK** offers you a robust library you can use to access Catalyst components in order to implement server side and browser side operations required by your application. Complete with **TypeScript** support, the JavaScript SDK is offered to you in a modular structure to ensure you have precise access to only the components you require. <br /> With this software development kit, you will have access to pre-built modules, classes, methods, and code samples, which you can leverage to quickly code the required logic that will dictate the Catalyst components to implement your required business logic. You can code your logic using any coding structures that are available in the Catalyst Serverless service, or you can also implement them in a coding structure of your preference by importing the SDK to that development environment. JavaScript SDK allows you to significantly reduce your coding time. You no longer have to engineer your applications from scratch; access to the required component is readily available to you once you implement the required module in the SDK. For example, imagine that you require Catalyst components like Stratus, Data Store, and Job Scheduling to implement certain backend jobs like uploading app data, data querying, and scheduling operations, respectively. Additionally, you wish to use the Authentication component to handle the user authentication in the web browser. To implement these functionalities in your application, you don't need to start from scratch. You just have to tailor the available modules in the SDK to match your requirement. Additionally, since the JavaScript SDK is offered to you in a modular structure, you only need to import and use the SDK packages of the required components and not the entire Catalyst SDK. This further optimizes your application's code. This help documentation aims to provide you with all the necessary information, code snippets, and examples to ensure that you can easily set up and use JavaScript SDK to build your required applications. -------------------------------------------------------------------------------- title: "Why go modular?" description: "Catalyst offers you JavaScript SDK in a modular architecture, providing you with a singular SDK for browser and server operations." last_updated: "2026-07-02T09:34:10.102Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/motivation/" service: "All Services" related: - NodeJS SDK (/en/sdk/nodejs/v2/overview/) - Java SDK (/en/sdk/java/v1/overview/) - Python SDK (/en/sdk/python/v1/overview/) - Web SDK (/en/sdk/web/v4/overview/) - iOS SDK (/en/sdk/ios/v2/overview/) - Android SDK (/en/sdk/android/v2/overview/) - Flutter SDK (/en/sdk/flutter/v2/overview/) - REST APIs (/en/api/code-reference/general/projects/create-new-project/#CreateNewProject) - Catalyst Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Need for Modular Architecture ### Motivation The current offering of Catalyst's JavaScript SDK is done so in a modular structure. This structure is different from the conventional Monolithic SDK. The primary motivation that backed this offering was to ensure that you, as a developer, have precise access to the coding tools that you require in a more developer-friendly manner. Using Catalyst's modular JavaScript SDK, you will be able to use the same SDK to quickly code server-side and web-based applications. ### Why change from Conventional Structure? Monolithic SDK cannot be leveraged to build your large scale applications in an optimized manner. While using the conventional Monolithic SDK method, even if you were going to use a singular Catalyst component, you were still required to install the entire SDK package. This produces the following disadvantages: * Monolithic SDKs, are generally tightly coupled. If there was an update, to a component that you werent even using, you were still required to update your SDK packages, to ensure the code base remains functional. * Installing the entire SDK, produces a lot of dead code, which makes your application needlessly clunky. * Makes your code base harder to understand as the conventional Monolithic SDK is heavily nested in structure. This also produces the additional disadvantage of implementing unnecessarily long and verbose syntax. * Overall, SDKs that are offered in the Namespace structure are just not optimized enough to handle larger enterprise applications. All of these disadvantages can be effectively countered when you implement an SDK in the modular structure. ### Monolithic SDK vs Modular SDK The following table clearly illustrates the benefits of migrating to an SDK with a modular structure by comparing it against the conventional structure. <table class="content-table"> <thead> <tr> <th class="w20p">Criteria</th> <th class="w25p">Monolithic SDK</th> <th class="w25p">Modular SDK</th> <th class="w30p">Resulting Advantage</th> </tr> </thead> <tbody> <tr> <td>Update & Patch Management</td> <td>You are required to update your entire SDK whenever there is a patch or enhancement in the SDK. This applies even when those fixes and enhancements are made to components that you have not used.</td> <td>You can isolate and install the required patches or enhancements only associated with the components that you are using.</td> <td>A modular structure never threatens the robustness or the functionality of your codebase, every time an enhancement or patch needs to be applied.</td> </tr> <tr> <td>Structure</td> <td>Hierarchical format, tightly coupled, and deeply nested.</td> <td>The SDK structure is broken into independent modules. the modules are not coupled with the others, and they are self-contained.</td> <td>This allows for easier imports. You only need to install the module that you require, not the entire package.</td> </tr> <tr> <td>Readability</td> <td>Complicated syntax and unnecessarily verbose.</td> <td>Precise imports and cleaner usage.</td> <td>Your codebase is easier to understand. This promotes smoother collaboration and even makes the learning curve more approachable for beginners.</td> </tr> <tr> <td>Refactoring Your Codebase</td> <td>Complex and at times impossible to remove or delete unused components from your codebase.</td> <td>Modular SDKs' loosely coupled structure makes it significantly safer and easier to refactor your codebase.</td> <td>Modular SDKs allow you to precisely access the required component. This ensures you can easily refactor your codebase. Additionally, using the modular structure for your SDK allows for effective tree-shaking.</td> </tr> <tr> <td>Scalability</td> <td>Harder to scale using Monolithic SDKs.</td> <td>The modules are independent, so it can scale easily.</td> <td>Modular SDKs are better suited when you are coding enterprise applications.</td> </tr> <tr> <td>Tooling Support</td> <td>It is more compatible with conventional tools and as it is applied with older runtimes.</td> <td>Compatible with both older and newer runtimes.</td> <td>Modular SDK is the way forward, and it is designed to make it more compatible with existing and newer coding tools.</td> </tr> <tr> <td>Robust TypeScript Support</td> <td>Support is not full-fledged or it is severely limited in the current Monolithic SDK structure.</td> <td>You have complete TypeScript support in this SDK structure.</td> <td>Providing TypeScript support provides an easier and more compatible coding experience when using popular front-end frameworks.</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Architecture of the JavaScript Modular SDK" description: "Catalyst offers you JavaScript SDK in a modular architecture, providing you with a singular SDK for browser and server operations." last_updated: "2026-07-02T09:34:10.103Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/architecture/" service: "All Services" related: - NodeJS SDK (/en/sdk/nodejs/v2/overview/) - Java SDK (/en/sdk/java/v1/overview/) - Python SDK (/en/sdk/python/v1/overview/) - Web SDK (/en/sdk/web/v4/overview/) - iOS SDK (/en/sdk/ios/v2/overview/) - Android SDK (/en/sdk/android/v2/overview/) - Flutter SDK (/en/sdk/flutter/v2/overview/) - REST APIs (/en/api/code-reference/general/projects/create-new-project/#CreateNewProject) - Catalyst Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Architecture of the JavaScript Modular SDK The following diagram is an overview to illustrate the structure of the JavaScript SDK. There is no class hierarchy that will be followed here as this structure is modeled as a Modular SDK, where each module representing a component can be accessed independently as and when required. <br /> * The structure comprises three overarching layers: - **Component Layer**: This layer acts as the code scaffolding that will contain your required logic to access the different required Catalyst services programmatically. - **Authentication Layer**: This is the layer that handles all the authentication requirements, such as token storage, session management, identity management, to name a few. This layer is expressly used to ensure secure API access. This layer will also handle the authentication requirement to handle server operations and browser operations. - **Transport Layer**: This layer will handle all HTTP requests made to the required components through the SDK. * The authentication requirement to initialize the SDK and access the required component through code is handled in the following manner: - **Environment-based Authentication**: This type of authentication comes into effect when you configure the required authentication credentials as Environment Variables in your Functions. You will set the credentials in the CATALYST_AUTH variable and the configuration in the CATALYST_CONFIG variable. - **Reusing Initialized Authentication**: This is the authentication you use to initialize the SDK to access a particular component. You are not expressly required to re-initialize each initialization, to access different components. You can reuse the authentication you had previously applied and continue to initialize the modules of the required components. * **Precedence in Authentication**: If you have implemented environment-based authentication, then that will be considered as default when you do not authenticate during initialization. This makes authentication during initialization of each component optional. -------------------------------------------------------------------------------- title: "Example Code Comparison" description: "Catalyst offers you JavaScript SDK in a modular architecture, providing you with a singular SDK for browser and server operations." last_updated: "2026-07-02T09:34:10.103Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/examples/" service: "All Services" related: - NodeJS SDK (/en/sdk/nodejs/v2/overview/) - Java SDK (/en/sdk/java/v1/overview/) - Python SDK (/en/sdk/python/v1/overview/) - Web SDK (/en/sdk/web/v4/overview/) - iOS SDK (/en/sdk/ios/v2/overview/) - Android SDK (/en/sdk/android/v2/overview/) - Flutter SDK (/en/sdk/flutter/v2/overview/) - REST APIs (/en/api/code-reference/general/projects/create-new-project/#CreateNewProject) - Catalyst Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Example Snippets Highlighting Optimizations with Modular SDK The following snippets are examples highlighting the differences and advantages that are possible when you use the Modular JavaScript SDK instead of individually using Server SDK for server functionality and Web SDK for browser functionality. ### Node Considerations The following snippet installs the entire Catalyst Node.js server SDK to use the Authentication and Stratus components. 'use strict'; const catalyst = require('zcatalyst-sdk-node'); module.exports = async (req, res) => { var url = req.url; const app = catalyst.initialize(req); switch (url) { case '/stratus': { const stratus = app.stratus(); const bucket = stratus.bucket("bucketName"); const buckets = await bucket.getDetails(); console.log(buckets); } default: res.writeHead(404); res.write('You might find the page you are looking for at "/" path'); break; } res.end(); }; Now, in the **Modular JavaScript SDK**, to use the required Authentication, and Stratus component, you are going to initialize those modules. 'use strict'; const { IncomingMessage, ServerResponse } = require("http"); const { zcAuth } = require('@zcatalyst/auth'); const { Stratus } = require('@zcatalyst/stratus'); /** * @param {IncomingMessage} req * @param {ServerResponse} res */ module.exports = async (req, res) => { var url = req.url; switch (url) { case '/stratus': const auth = await zcAuth.init(req); const stratus = new Stratus(); const bucket = stratus.bucket("bucketName"); const buckets = await bucket.getDetails(); console.log(buckets); break; default: res.writeHead(404); res.write('You might find the page you are looking for at "/" path'); break; } res.end(); }; ### Browser Considerations The following snippet installs the entire WebSDK just to use the Authentication component. &lt;script src="https://static.zohocdn.com/catalyst/sdk/js/4.0.0/catalystWebSDK.js"&gt;&lt;/script&gt; &lt;script src="/__catalyst/sdk/init.js"&gt;&lt;/script&gt; &lt;script&gt; catalyst.auth.signIn("your element ID here..."); &lt;/script&gt; Now, in the **Modular JavaScript SDK**, to use the required Authentication component, you are going to initialize the Authentication module. &lt;script type="module"&gt; import { zcAuth } from 'zcatalyst.js'; const config = { cssUrl: "/css/embeddediframe.css", // Provide your custom CSS file path here. If no path is provided default css will be rendered serviceUrl: "/app/index.html", // This value is optional. You can provide your redirect URL here. isCustomizeForgotPassword: true, // Default value is false. Keep this value as true, if you wish to customize Forgot Password page forgotPasswordId: "forgotPasswordDivElementId", // The Element id in which forgot password page should be loaded. If no value is provided, it will be rendered in the "loginDivElementId" by default forgotPasswordCssUrl: "/css/forgotPwd.css" // Provide your custom CSS file path for the Forgot Password page. If no path is provided, then the default CSS will be rendered. }; zcAuth.signIn("element_id", config); &lt;/script&gt; -------------------------------------------------------------------------------- title: "Components List" description: "Catalyst offers you JavaScript SDK in a modular architecture, providing you with a singular SDK for browser and server operations." last_updated: "2026-07-02T09:34:10.103Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/components-list/" service: "All Services" related: - NodeJS SDK (/en/sdk/nodejs/v2/overview/) - Java SDK (/en/sdk/java/v1/overview/) - Python SDK (/en/sdk/python/v1/overview/) - Web SDK (/en/sdk/web/v4/overview/) - iOS SDK (/en/sdk/ios/v2/overview/) - Android SDK (/en/sdk/android/v2/overview/) - Flutter SDK (/en/sdk/flutter/v2/overview/) - REST APIs (/en/api/code-reference/general/projects/create-new-project/#CreateNewProject) - Catalyst Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Components List In this section, you are going to take a look at the list of components from each Catalyst service that you can access through code using the JavaScript SDK to perform both server-side and browser-side functionalities in your application. As the Catalyst JavaScript SDK is offered to you in the modular structure, you can install the SDK packages of only the components that you require. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Catalyst Service</th> <th>Component</th> <th>SDK Method</th> </tr> </thead> <tbody> <tr> <td rowspan="2">Serverless</td> <td>Functions</td> <td>Execute Function</td> </tr> <tr> <td>Circuits</td> <td>Execute Circuit</td> </tr> <tr> <td rowspan="7">CloudScale</td> <td>Authentication</td> <td> <ul> <li>Add New User</li> <li>Add New User to Existing Org</li> <li>Reset Password</li> <li>Custom User Validation</li> <li>Generate a Custom Server Token</li> <li>Get User Details</li> <li>Update User Details</li> <li>Enable or Disable a User</li> <li>Delete a User</li> </ul> </td> </tr> <tr> <td>DataStore</td> <td> <ul> <li>Get Table Metadata</li> <li>Get Column Metadata</li> <li>Get Rows</li> <li>Insert Rows</li> <li>Query DataStore</li> <li>Search DataStore</li> <li>Update Rows</li> <li>Delete a Row</li> <li>Bulk Read Rows</li> <li>Bulk Write Rows</li> <li>Bulk Delete Rows</li> </ul> </td> </tr> <tr> <td>NoSQL</td> <td> <ul> <li>Get Table Metadata</li> <li>Construct Item</li> <li>Insert Items</li> <li>Update Items</li> <li>Fetch Items</li> <li>Query Table</li> <li>Query Index</li> <li>Delete Items</li> </ul> </td> </tr> <tr> <td>Stratus</td> <td> <ul> <li>Check Bucket Availability</li> <li>List Buckets</li> <li>Get Bucket Details</li> <li>Get Bucket CORS</li> <li>List Objects in a Bucket</li> <li>Check Object Availability</li> <li>Download Object</li> <li>Upload Object</li> <li>Extract a Zipped Object</li> <li>Copy Object</li> <li>Rename and Move Operations on an Object</li> <li>Delete Objects</li> <li>List Object Versions</li> <li>Get Object Details</li> <li>Put Object Metadata</li> </ul> </td> </tr> <tr> <td>Cache</td> <td> <ul> <li>Retrieve Data from the Cache</li> <li>Insert Data to Cache</li> <li>Update Data in Cache</li> <li>Delete Key Value Pair</li> </ul> </td> </tr> <tr> <td>Mail</td> <td>Send Mail</td> </tr> <tr> <td>Push Notifications</td> <td>Send Notifications</td> </tr> <tr> <td rowspan="8">Zia Services</td> <td>OCR</td> <td>OCR</td> </tr> <tr> <td>AutoML</td> <td>AutoML</td> </tr> <tr> <td>Face Analytics</td> <td>Face Analytics</td> </tr> <tr> <td>Identity Scanner</td> <td> <ul> <li>Facial Comparison</li> <li>Aadhaar</li> <li>PAN</li> <li>Passbook</li> <li>Cheque</li> </ul> </td> </tr> <tr> <td>Text Analytics</td> <td> <ul> <li>Sentiment Analysis</li> <li>Named Entity Recognition</li> <li>Keyword Extraction</li> <li>All Text Analytics</li> </ul> </td> </tr> <tr> <td>Image Moderation</td> <td>Image Moderation</td> </tr> <tr> <td>Object Recognition</td> <td>Object Recognition</td> </tr> <tr> <td>Barcode Scanner</td> <td>Barcode Scanner</td> </tr> <tr> <td>QuickML</td> <td>QuickML</td> <td>Execute QuickML Endpoint</td> </tr> <tr> <td rowspan ="2">SmartBrowz</td> <td>PDF & Screenshot</td> <td> <ul> <li>PDF or Screenshot from Template</li> <li>Convert to PDF from HTML</li> <li>Generate PDF from URL</li> </ul> </td> </tr> <tr> <td>Dataverse</td> <td> <ul> <li>Lead Enrichment</li> <li>Tech Stack Finder</li> <li>Similar Companies</li> </ul> </td> </tr> <tr> <td rowspan ="3">Job Scheduling</td> <td>Job Pool</td> <td> <ul> <li>Get All Job Pools’ Details</li> <li>Get Specific Job Pool's Details</li> </ul> </td> </tr> <tr> <td>Jobs</td> <td> <ul> <li>Create Job</li> <li>Get Job Details</li> <li>Delete Job</li> </ul> </td> </tr> <tr> <td>Cron</td> <td> <ul> <li>Create a One-Time Cron</li> <li>Create a Recurring Cron</li> <li>Create a Cron Using Cron Expressions</li> <li>Get Details of a Particular Cron</li> <li>Get Details of All Crons</li> <li>Update Cron</li> <li>Pause Cron</li> <li>Resume Cron</li> <li>Run Cron</li> <li>Delete Cron</li> </ul> </td> </tr> <tr> <td>Connectors</td> <td>Connectors</td> <td>JavaScript Connectors SDK</td> </tr> <tr> <td>Pipelines</td> <td>Pipelines</td> <td> <ul> <li>Get Pipeline Details</li> <li>Execute Pipeline</li> </ul> </td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Scopes" description: "Catalyst offers you JavaScript SDK in a modular architecture, providing you with a singular SDK for browser and server operations." last_updated: "2026-07-02T09:34:10.104Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/scopes/" service: "All Services" related: - NodeJS SDK (/en/sdk/nodejs/v2/overview/) - Java SDK (/en/sdk/java/v1/overview/) - Python SDK (/en/sdk/python/v1/overview/) - Web SDK (/en/sdk/web/v4/overview/) - iOS SDK (/en/sdk/ios/v2/overview/) - Android SDK (/en/sdk/android/v2/overview/) - Flutter SDK (/en/sdk/flutter/v2/overview/) - REST APIs (/en/api/code-reference/general/projects/create-new-project/#CreateNewProject) - Catalyst Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Scopes Scopes allow you to define the level of access that can be provided to access Catalyst components. There are primarily two scopes that define two levels of access: * **Admin**: If you initialize your SDK with this scope, you can access all the SDK methods of all the components. There are no restrictions. * **User**: If you initialize with this scope, you will only be able to access certain SDK methods of certain Catalyst components. Notes: By default you will be able to initialize the SDK in the Admin scope. The following table will provide the complete list of SDK methods present in each Catalyst component, and the scope required to implement them. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Catalyst Service</th> <th>Component</th> <th>SDK Methods</th> <th>Required Scope</th> </tr> </thead> <tbody> <tr> <td rowspan="2">Serverless</td> <td>Functions</td> <td>Execute Function</td> <td>Admin, User</td> </tr> <tr> <td>Circuits</td> <td>Execute Circuits</td> <td>Admin</td> </tr> <tr> <td rowspan="10">CloudScale</td> <td rowspan="2">Authentication</td> <td> <ul> <li>Add New User</li> <li>Get All Org IDs</li> <li>Add New User to an Existing Organization</li> <li>Get All Users in an Organization</li> <li>Update User Details</li> <li>Enable or Disable a User</li> <li>Delete a User</li> </ul> </td> <td>Admin</td> </tr> <tr> <td> <ul> <li>Reset Password</li> <li>Get User Details</li> </ul> </td> <td>Admin, User</td> </tr> <tr> <td rowspan="2">DataStore</td> <td> <ul> <li>Get Column Metadata</li> <li>Get Rows</li> <li>Insert Rows</li> <li>Update Rows</li> <li>Delete a Row</li> <li>Delete Rows</li> <li>Search DataStore</li> <li>Query DataStore</li> </ul> </td> <td>Admin, User</td> </tr> <tr> <td>Get Table Metadata</td> <td>Admin</td> </tr> <tr> <td>NoSQL</td> <td>All NoSQL SDK Methods</td> <td>Admin</td> </tr> <tr> <td rowspan ="2">Stratus</td> <td> <ul> <li>Download Object</li> <li>Upload Object</li> <li>Check Object Availability</li> <li>Delete Object</li> </ul> </td> <td>Admin, User</td> </tr> <tr> <td> <ul> <li>List Buckets</li> <li>Check Bucket Availability</li> <li>Get Bucket CORS</li> <li>Get Bucket Details</li> <li>List Objects in Bucket</li> <li>Generate Presigned URL to Download an Object</li> <li>Generate Presigned URL to Upload an Object</li> <li>Extract a Zipped Object</li> <li>Copy Object</li> <li>Move or Rename an Object</li> <li>List Object Versions</li> <li>Get Object Details</li> <li>Put Object Metadata</li> <li>Multipart Download</li> </ul> </td> <td>Admin</td> </tr> <tr> <td>Cache</td> <td>All Cache SDK Methods</td> <td>Admin </tr> <tr> <td>Mail</td> <td>All Mail SDK Methods</td> <td>Admin</td> </tr> <tr> <td>Push Notifications</td> <td>All Push Notifications SDK Methods</td> <td>Admin</td> </tr> <tr> <td>Zia Services</td> <td>All Zia Components</td> <td>All Zia Services SDK Methods</td> <td>Admin</td> </tr> <tr> <td>SmartBrowz</td> <td>PDF & Screenshot and Dataverse</td> <td>All SDK Methods</td> <td>Admin</td> </tr> <tr> <td>Job Scheduling</td> <td>All Components</td> <td>All SDK Methods</td> <td>Admin</td> </tr> <tr> <td>Pipelines</td> <td>All Components</td> <td>All SDK Methods</td> <td>Admin</td> </tr> <tr> <td>QuickML</td> <td>All Components</td> <td>All SDK Methods</td> <td>Admin</td> </tr> <tr> <td>Connectors</td> <td>N/A</td> <td>Connectors JavaScript SDK Methods</td> <td>Admin</td> </tr> </tbody> </table> <br /> ### Implement SDK Methods with Scopes // initialize the sdk with user scope const auth = await new ZCAuth().init(req, {scope: 'user'}); // initialize the sdk with admin scope const auth = await new ZCAuth().init(req, {scope: 'admin'}); -------------------------------------------------------------------------------- title: "Setup" description: "Catalyst offers you JavaScript SDK in a modular architecture, providing you with a singular SDK for browser and server operations." last_updated: "2026-07-02T09:34:10.105Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/setup/" service: "All Services" related: - NodeJS SDK (/en/sdk/nodejs/v2/overview/) - Java SDK (/en/sdk/java/v1/overview/) - Python SDK (/en/sdk/python/v1/overview/) - Web SDK (/en/sdk/web/v4/overview/) - iOS SDK (/en/sdk/ios/v2/overview/) - Android SDK (/en/sdk/android/v2/overview/) - Flutter SDK (/en/sdk/flutter/v2/overview/) - REST APIs (/en/api/code-reference/general/projects/create-new-project/#CreateNewProject) - Catalyst Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Setup This section will instruct you on the easiest way to add JavaScript SDK to your codebase. ### Prerequisites Before you begin installing and using the JavaScript SDK, you will need to ensure you have **any one** of the following package managers installed in your local environment. * npm: Install from here * pnpm: Install from here * yarn: Install from here You can use any one of these package managers to add the JavaScript SDK to your codebase. ### Install the JavaScript SDK To add the JavaScript SDK to your code base: 1. You will need a suitable coding structure. You can either choose a suitable function type from the Functions component present in the Serverless service, or, since you are using Catalyst, you can choose a custom coding structure and import the SDK to it and host it on AppSail. 2. You need to execute the following installation command in your CLI to install the required SDK. Since this is a modular SDK, you need to choose the respective installation command to access your required component. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Catalyst Service</th> <th>Component</th> <th>Install Command</th> </tr> </thead> <tbody> <tr> <td rowspan="2">Serverless</td> <td>Functions</td> <td>npm install @zcatalyst/functions</td> </tr> <tr> <td>Circuits</td> <td>npm install @zcatalyst/circuit</td> </tr> <tr> <td rowspan="8">CloudScale</td> <td>DataStore</td> <td>npm install @zcatalyst/datastore</td> </tr> <tr> <td>NoSQL</td> <td>npm install @zcatalyst/nosql</td> </tr> <tr> <td>Stratus</td> <td>npm install @zcatalyst/stratus</td> </tr> <tr> <td>Cache</td> <td>npm install @zcatalyst/cache</td> </tr> <tr> <td>Authentication</td> <td>npm install @zcatalyst/auth</td> </tr> <tr> <td>Mail</td> <td>npm install @zcatalyst/mail</td> </tr> <tr> <td>Push Notifications</td> <td>npm install @zcatalyst/push-notification</td> </tr> <tr> <td>Connectors</td> <td>npm install @zcatalyst/connector</td> </tr> <tr> <td>Zia Services <td>All Components</td> <td>npm install @zcatalyst/zia</td> </tr> <tr> <td>SmartBrowz <td>All Components</td> <td>npm install @zcatalyst/smartbrowz</td> </tr> <tr> <td>Job Scheduling <td>All Components</td> <td>npm install @zcatalyst/job-scheduling</td> </tr> <tr> <td>QuickML <td>All Components</td> <td>npm install @zcatalyst/quickml</td> </tr> <tr> <td>Pipelines <td>All Components</td> <td>npm install @zcatalyst/pipelines</td> </tr> </tbody> </table> Regardless of the package you install, the following packages will be installed by default: * @zcatalyst/transport: This package is required to handle the requests. * @zcatalyst/utils: This package is required to manage the common utilities of the SDK packages. ### Import the SDK to Your Codebase To access the components and use the functionalities of the required components, you need to import them to your coding structure once you install them. The following table contains the import statements for all the components. Based on your required component, add the import statement to your code, and you will be able to access the component. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Catalyst Service</th> <th>Component</th> <th>Import Command</th> </tr> </thead> <tbody> <tr> <td rowspan="2">Serverless</td> <td>Functions</td> <td>import {Functions} from '@zcatalyst/functions';</td> </tr> <tr> <td>Circuits</td> <td>import {Circuit} from '@zcatalyst/circuit';</td> </tr> <tr> <td rowspan="8">CloudScale</td> <td>DataStore</td> <td>import {Datastore} from '@zcatalyst/datastore';</td> </tr> <tr> <td>NoSQL</td> <td>import { NoSQL } from '@zcatalyst/nosql';</td> </tr> <tr> <td>Stratus</td> <td>import {Stratus, TransferManager} from '@zcatalyst/stratus';</td> </tr> <tr> <td>Cache</td> <td>import {Cache} from '@zcatalyst/cache';</td> </tr> <tr> <td>Authentication</td> <td>import {UserManagement} from '@zcatalyst/auth';</td> </tr> <tr> <td>Mail</td> <td>import {Mail} from '@zcatalyst/email';</td> </tr> <tr> <td>Push Notifications</td> <td>import {PushNotifications} from '@zcatalyst/push-notifications';</td> </tr> <tr> <td>Connectors</td> <td>import {Connectors} from '@zcatalyst/connector';</td> </tr> <tr> <td>Zia Services <td>All Components</td> <td>import {Zia} from '@zcatalyst/zia';</td> </tr> <tr> <td>SmartBrowz <td>All Components</td> <td>import {Smartbrowz} from '@zcatalyst/smartbrowz';</td> </tr> <tr> <td>Job Scheduling <td>All Components</td> <td>import {JobScheduling} from '@zcatalyst/job-scheduling';</td> </tr> <tr> <td>QuickML <td>All Components</td> <td>import {QuickML} from '@zcatalyst/quickml';</td> </tr> <tr> <td>Pipelines <td>All Components</td> <td>import {Pipelines} from '@zcatalyst/pipelines';</td> </tr> </tbody> </table> <br /> Info: Once, you've imported the required module, ensure that you have applied the required authentication configuration to use the SDK methods. -------------------------------------------------------------------------------- title: "Migrate to Modular JavaScript SDK" description: "Catalyst offers you JavaScript SDK in a modular architecture, providing you with a singular SDK for browser and server operations." last_updated: "2026-07-02T09:34:10.106Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/migration/" service: "All Services" related: - NodeJS SDK (/en/sdk/nodejs/v2/overview/) - Java SDK (/en/sdk/java/v1/overview/) - Python SDK (/en/sdk/python/v1/overview/) - Web SDK (/en/sdk/web/v4/overview/) - iOS SDK (/en/sdk/ios/v2/overview/) - Android SDK (/en/sdk/android/v2/overview/) - Flutter SDK (/en/sdk/flutter/v2/overview/) - REST APIs (/en/api/code-reference/general/projects/create-new-project/#CreateNewProject) - Catalyst Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Migrate to Modular JavaScript SDK When you migrate your codebase to the Modular JavaScript SDK, you need to ensure the following steps are performed without fail: * Appropriate package import * Package initialization * Component initialization Consider the following example illustrating the changes you need to be more cautious about: const catalyst = require('zcatalyst-sdk-node'); //import SDK const app = catalyst.initialize(req);//package initialization const stratus = app.stratus();// component initialization const { Stratus } = require('@zcatalyst/stratus'); //import package const auth = await new ZCAuth().init(req); // package initializaion const stratus = new Stratus(); // component initialization -------------------------------------------------------------------------------- title: "WebSDK Bundle" description: "Catalyst offers you JavaScript SDK in a modular architecture, providing you with a singular SDK for browser and server operations." last_updated: "2026-07-02T09:34:10.106Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/webpack-bundler/" service: "All Services" related: - NodeJS SDK (/en/sdk/nodejs/v2/overview/) - Java SDK (/en/sdk/java/v1/overview/) - Python SDK (/en/sdk/python/v1/overview/) - Web SDK (/en/sdk/web/v4/overview/) - iOS SDK (/en/sdk/ios/v2/overview/) - Android SDK (/en/sdk/android/v2/overview/) - Flutter SDK (/en/sdk/flutter/v2/overview/) - REST APIs (/en/api/code-reference/general/projects/create-new-project/#CreateNewProject) - Catalyst Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # WebSDK Bundle for Catalyst JavaScript SDK Using the Catalyst CLI, you can generate a webSDK bundler called **Catalyst Bundle Studio** that will contain required SDK methods that can be accessed using the User scope. This bundler will be hosted locally on an available port in your machine. The WebSDK bundle offers you: * A user-friendly UI to select and install specific packages and versions. * Organized list of all the required SDKs with detailed information on each bundle and its associated method. * Extensive UI options to update existing bundle, remove, or add packages and generate updated bundles. <br /> The **Catalyst Bundle Studio** will ensure that all SDK methods required for the front-end work of your Catalyst application is provided in an easy-to-use manner. You can directly use the SDK method from the webSDK bundle without meeting the prerequisites typically required for SDK methods that require **Admin** scope. ### Generate Catalyst WebSDK To generate and access the webSDK bundle: 1. Open the terminal present in your system and execute the following command. catalyst websdk:generate <br /> 2. Open the **localhost** endpoint in your preferred browser. <br /> The webSDK for Catalyst JavaScript SDK has been generated and can be used to download the required package. ### Download the Required Bundle To download the required bundle from the Catalyst webSDK generator: 1. Select the required package and version from the bundle, and click **Generate WebSDK Bundle**. <br /> 2. Once the bundle is generated, click **Download** to download the generated bundle. <br /> You have the option to press **CTRL+C** in your CLI to terminate your bundle download. <br /> Along with the SDK bundle, the following files will be downloaded and stored in your local system. * catalyst-bundle.js - Contains the webSDK bundle in the compressed form. * manifest.json - Contains detailed information on the packages that were downloaded in the bundle. * package.json - Contains a list of dependencies of the packages that were downloaded in the bundle. The required packages have been downloaded from the webSDK generated using the Catalyst CLI. ### Update the Generated Bundle To update the version or add more packages to your downloaded bundle: 1. Execute the following command in your Catalyst CLI to update the packages present in your webpack bundle. catalyst websdk:generate --action update <br /> 2. Open the *localhost* endpoint in your preferred browser, and click the **Update Existing Bundle** tab. Click the **Choose File** option. <br /> 3. Select the manifest.json file from your downloaded bundle directory. <br /> 4. Make the required updates and click **Generate Updated Bundle**. <br /> 5. Now, the required packages will be built. <br /> 6. Click **Download Updated Bundle** to download the generated bundle. <br /> The updated bundle will be downloaded. Once, you've completed your required operation, ensure you press **CTRL+C** in your CLI to terminate the Catalyst Bundle Studio application. ### Browser-Supported JavaScript Methods The following table lists the Catalyst JavaScript SDK methods that can be accessed using the User Scope. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Catalyst Service</th> <th>Component</th> <th>SDK Methods</th> </tr> </thead> <tbody> <tr> <td>Serverless</td> <td>Functions</td> <td>Execute Function</td> </tr> <tr> <td rowspan="16">CloudScale</td> <td rowspan="2">Authentication</td> <td>Get User Details</td> </tr> <tr> <td>Reset Password</td> </tr> <tr> <td rowspan="9">DataStore</td> <td>Get Table Metadata</td> </tr> <tr> <td>Get Column Metadata</td> </tr> <tr> <td>Get Rows</td> </tr> <tr> <td>Query DataStore</td> </tr> <tr> <td>Search DataStore</td> </tr> <tr> <td>Insert Rows</td> </tr> <tr> <td>Update Rows</td> </tr> <tr> <td>Delete a Row</td> </tr> <tr> <td>Bulk Delete Rows</td> </tr> <tr> <td rowspan="4">Stratus</td> <td>Check Object Availability</td> </tr> <tr> <td>Download Object</td> </tr> <tr> <td>Upload Object</td> </tr> <tr> <td>Delete Objects</td> </tr> <tr> <td>Push Notifications</td> <td>Register a Client</td> </tr> </tbody> </table> <br /> Note: For these components alone, when they are initialized, no auth instance needs to be passed. They will be initialized with the required scope by default. #### Authentication Configuration -------------------------------------------------------------------------------- title: "Node Considerations" description: "Catalyst offers you JavaScript SDK in a modular architecture, providing you with a singular SDK for browser and server operations." last_updated: "2026-07-02T09:34:10.106Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/auth-config/node-consideration/" service: "All Services" related: - NodeJS SDK (/en/sdk/nodejs/v2/overview/) - Java SDK (/en/sdk/java/v1/overview/) - Python SDK (/en/sdk/python/v1/overview/) - Web SDK (/en/sdk/web/v4/overview/) - iOS SDK (/en/sdk/ios/v2/overview/) - Android SDK (/en/sdk/android/v2/overview/) - Flutter SDK (/en/sdk/flutter/v2/overview/) - REST APIs (/en/api/code-reference/general/projects/create-new-project/#CreateNewProject) - Catalyst Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Authentication Configuration for Node To use the JavaScript SDK methods for server or node operations, you need to fulfill the following prerequsites to ensure the methods are accessed in an authenticated manner: #### Install Requirement npm install @zcatalyst/auth #### Import Requirement import {zcAuth} from '@zcatalyst/auth'; ### Initialize the SDK Once the above prerequisites are fulfilled, you can initalize the Catalyst JavaScript SDK in Catalyst functions in the following manner: const { zcAuth }= require('@zcatalyst/auth'); module.exports = (req, res) => { const app = await zcAuth.init(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 } const { zcAuth }= require('@zcatalyst/auth'); const express = require('express'); const expressApp = express(); expressApp.get('/',(req,res)=> { const app = await zcAuth.init(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 { zcAuth }= require('@zcatalyst/auth'); module.exports = (context, basicIO) => { const app = await zcAuth.init(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 { zcAuth }= require('@zcatalyst/auth'); module.exports = (event, context) => { const app = await zcAuth.init(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 { zcAuth }= require('@zcatalyst/auth'); module.exports = (cronDetails, context) => { const app = await zcAuth.init(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 } ### Initialize 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. * **User**: You can restrict access to components and specific functionalities. Notes: * 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. * 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. * Learn more about the scopes of the SDK operations. The SDK snippets below will allow you to initialize the SDK using either Admin or User scope, and use the authentication required to use the Catalyst components: You need to initialize the SDK in the following manner to use the SDK methods using **Admin** scope. const app = await zcAuth.init(req, {scope: 'admin'}); You need to initialize the SDK in the following manner to use the SDK methods using **User** scope. const app = await zcAuth.init(req, {scope: 'user'}); ### Initialize the SDK Using Custom Credentials To use the SDK with third-party authentication services, you can initalize the SDK in the following manner: const credential = { "client_id":"xxxxxxxxxx", "client_secret": "yyyyyyyyyyy", "refresh_token": "sgdw6et6736e8723e" } const customConfigurations = { "project_id": "46386458237492", "project_domain": "project-domain", "environment": "development", // optional. default: development credential } const app = await zcAuth.init(customConfigurations, { type: 'custom', appName: "custom-app" }); #### Get Instance Using Application Name Once you've initialized your application, you have the additional option to use the getApp() method to get an app instance at any point by using the application's name.<br /> const app = zcAuth.getApp("app-name"); This ensures you are able to get an instance without having to re-intialize your SDK. #### Using Environment Variables You also have the option of initalizing the SDK by setting custom credentials as environment variables. If you choose to initalize the SDK in this manner, then you do not have to initalize using the zcAuth.init() method, and you do not have to maintain the app instance in the manner shown in the above example snippet. You need to configure the environment variables in a manner similar to the one shown below: ZC_SDK_PROJECT_ID="your_project_id" ZC_SDK_PROJECT_KEY="your_project_key" ZC_SDK_PROJECT_DOMAIN="your_project_domain" ZC_SDK_ENVIRONMENT="your_environment" ZC_SDK_CLIENT_ID="your_client_id" ZC_SDK_CLIENT_SECRET="your_client_secret" ZC_SDK_REFRESH_TOKEN="your_refresh_token" -------------------------------------------------------------------------------- title: "Browser Considerations" description: "Catalyst offers you JavaScript SDK in a modular architecture, providing you with a singular SDK for browser and server operations." last_updated: "2026-07-02T09:34:10.107Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/auth-config/browser-consideration/" service: "All Services" related: - NodeJS SDK (/en/sdk/nodejs/v2/overview/) - Java SDK (/en/sdk/java/v1/overview/) - Python SDK (/en/sdk/python/v1/overview/) - Web SDK (/en/sdk/web/v4/overview/) - iOS SDK (/en/sdk/ios/v2/overview/) - Android SDK (/en/sdk/android/v2/overview/) - Flutter SDK (/en/sdk/flutter/v2/overview/) - REST APIs (/en/api/code-reference/general/projects/create-new-project/#CreateNewProject) - Catalyst Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Browser Considerations Catalyst provides a straightforward authentication mechanism for users to access the Catalyst REST APIs and our SDKs. In order to use the catalyst components from your client application, it is mandatory to integrate the authentication mechanism provided by Catalyst. #### Install Requirement npm install @zcatalyst/auth #### Import Requirement import {zcAuth} from '@zcatalyst/auth'; Info: The required authentication configurations to use JavaScript SDK for browser considerations will be installed by default. ### SignIn Method If you are using the *Embedded Authentication* type for your Catalyst application, then you need to implement the sign in process in the following manner: await zcAuth.signIn('ELEMENT_ID', { redirectUrl:'/login', }); Notes: * Learn more about Embedded Authentication Type. * The code contains the line: zcAuth.signIn(“ELEMENT_ID”); . <br />The ELEMENT_ID can be the ID of any HTML element or div element in your application’s login page. You should replace this with theELEMENT_ID of your application’s login and implement this in the page that contains the user login. <br />You can now create a division in the same page for your iFrame as: <\div id=“Your elementID here”> <\/div>. This will span the iFrame for user login in the same page. For example, if your ELEMENT_ID is “login”, your code will look like this: In the SDK Initialisation (Browser) script: zcAuth.signIn(“login”); In the body of your page: <\div id=“login”><\div> If you are using the *Hosted Authentication* type for your Catalyst application, then you need to implement the sign in process in the following manner: await zcAuth.hostedSignIn('Redirect_Url'); //Replace with your required URL Notes: * Learn more about Hosted Authentication. * Before using this method, you need to ensure that the Hosted Authentication type is enabled for your application in the Catalyst console. 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. Before you associate a third-party authentication with your Catalyst application, you must ensure that you have first completed handling the third-party logic in the external service. You can configure the authentication with any third-party of your choice. 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. Next, you set up the third-party authentication that you configured in Catalyst by navigating to the Authentication component in *Cloud Scale* in the Catalyst console. The steps are explained in Set Up Third-party Authentication in Catalyst help page. This process involves the following steps that you must perform: ### Generate a Custom Server Token First, we generate a custom server token. 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 will need to code in Java, Node.js, or Python. This function will generate a Catalyst server-side token **JSON Web Token** token (JWT) which will then be passed to the client. Note: To enable a third-party authentication in your Catalyst application, you must ensure that you have enabled Public Signup in the console. ### Authenticate User Using JWT The below SDK will use the generated JWT or custom token to authenticate the end-user. You must incorporate this code into your web client logic, to enable third-party authentication. This is a sample code that uses a JWT to authenticate the user is given below. await zcAuth.signInWithJwt(getCustomTokenCallbacb); function getCustomTokenCallback(){ return fetch("{domain}/server/{function_name}/execute") //function url to get the generated custom token .then(resp => resp.json() .then(resp => { return new Promise((resolve, reject) => { resolve({ client_id:"********", scopes:"ZOHOCATALYST.tables.rows.ALL,ZOHOCATALYST.cache.READ", jwt_token:"*********" }); }); }) ); } <br/> 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. ### Configure Addional Settings Finally, you can onfigure Customer User Validation or Authorized Domains as a part of *Whitelisting* and finish the set up. Catalyst will display a confirmation that a third-party authentication service has been enabled and your application’s authentication is being handled by it. ### SignUp Method You can implement Catalyst Authentication's SignUp process in the following manner: await zcAuth.signUp({ first_name: 'xxxx', last_name: 'yyyyy', email_id:'dfkfjkfj@gmail.com' }); ### Sign Out Method You can implement Catalyst Authentication's Sign Out or log off process in the following manner: await zcAuth.signOut('Redirect_Url'); // replace your redirect url path here .. defaults '/' ### Change Password You can implement Catalyst Authentication's Change Password process in the following manner: await zcAuth.changePassword("old_password", "new_password"); #### CloudScale ##### Authentication -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the method to perform operations in the Authentication component." last_updated: "2026-07-02T09:34:10.107Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/authentication/overview/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Authentication Help (/en/cloud-scale/help/authentication/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/authentication/add-new-user/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/authentication/get-component-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/authentication/get-component-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/authentication/get-auth-instance/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/authentication/create-user-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/authentication/create-user-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/authentication/create-user-instance/) - REST API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Authentication JavaScript SDK # Overview Authentication is a Catalyst CloudScale component that allows you to add end-users to your application in a secure manner. You will be able to customize aspects of your login elements, choose from three different types of authentication types, control end-user statuses, customize email templates, whitelist domains and enable CORS and iFrame access. The **Authentication JavaScript SDK** package enables you to perform user management operations like adding or removing end-users, prompting users to reset their passwords, getting user details, and implementing custom logic to authenticate end-users' access. ### Prerequisites You need to install the following package to use the Authentication SDK methods. npm install @zcatalyst/auth Info: Ensure that you have applied the required authentication configuration to use the SDK methods of this component. ### Import Requirement You will need to import the following module to use the Authentication SDK methods. const { UserManagement } = require('@zcatalyst/auth'); ### List of SDK Methods The following table contains the list of SDK methods that can be used to perform operations in Authentication through code. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Category</th> <th>SDK Method</th> <th>Required Scope</th> </tr> </thead> <tbody> <tr> <td>General Operations</td> <td>Get Component Instance</td> <td>No requirement</td> </tr> <tr> <td>Authentication (User Management) Operations</td> <td> <ul> <li>Add New User</li> <li>Get All Org IDs</li> <li>Add New User to an Existing Organization</li> <li>Get All Users in an Organization</li> <li>Reset Password</li> <li>Get User Details</li> <li>Update User Details</li> <li>Enable or Disable a User</li> <li>Delete a User</li> </ul> </td> <td>Admin</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Get Component Instance" description: "This page describes the method to perform operations in the Authentication component." last_updated: "2026-07-02T09:34:10.107Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/authentication/get-component-instance/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Authentication Help (/en/cloud-scale/help/authentication/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/authentication/add-new-user/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/authentication/get-component-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/authentication/get-component-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/authentication/get-auth-instance/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/authentication/create-user-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/authentication/create-user-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/authentication/create-user-instance/) - REST API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Get Component Instance Note: Ensure you have installed the required package to use this SDK method. You can get the userManagement component reference as shown below. This will not fire a server-side call. You will refer to this component instance in various code snippets of working with Authentication. const userManagement = new UserManagement(); -------------------------------------------------------------------------------- title: "Add New User" description: "This page describes the method to perform operations in the Authentication component." last_updated: "2026-07-02T09:34:10.107Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/authentication/add-new-user/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Authentication Help (/en/cloud-scale/help/authentication/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/authentication/add-new-user/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/authentication/add-new-user/) - Python SDK (/en/sdk/python/v1/cloud-scale/authentication/add-new-user/) - Web SDK (/en/sdk/web/v4/cloud-scale/authentication/add-new-user/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/authentication/user-signup/) - Android SDK (/en/sdk/android/v2/cloud-scale/authentication/user-signup/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/authentication/user-signup/) - REST API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser.) -------------------------------------------------------------------------------- # Add New User Note: Ensure you have installed the required package to use this SDK method. 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. Notes: * You must provide the values for email_id and first_name, the mandatory parameters to register a user. * 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' }; ### SDK Method to Add a New User You can now add a new end-user to your Catalyst application by passing the JSON objects you created in the previous section as arguments to the registerUser() SDK 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 in the code snippet below is the component instance. // Pass the JSON configuration to the method const userDetails = await userManagement.registerUser(signupConfig, userConfig); console.log(userDetails); #### Example of Expected Response { "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, 2025 12:33 PM", "modified_time": "Aug 12, 2025 12:33 PM", "invited_time": "Aug 12, 2025 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 } -------------------------------------------------------------------------------- title: "Get All Org IDs" description: "This page describes the method to perform operations in the Authentication component." last_updated: "2026-07-02T09:34:10.108Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/authentication/get-all-orgs/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Authentication Help (/en/cloud-scale/help/authentication/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/authentication/get-org-id/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/authentication/get-org-id/) - Python SDK (/en/sdk/python/v1/cloud-scale/authentication/add-new-user-to-existing-org/) - Web SDK (/en/sdk/web/v4/cloud-scale/authentication/get-auth-instance/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/authentication/create-user-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/authentication/create-user-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/authentication/create-user-instance/) - REST API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Get All Org IDs Note: Ensure you have installed the required package to use this SDK method. **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. You can use the getAllOrgs() SDK method to fetch all the Org IDs generated while adding new users to your application. The userManagement reference used in the code snippet below is the component instance. console.log('Orgs::::', await userManagement.getAllOrgs()); -------------------------------------------------------------------------------- title: "Add New User to an Existing Organization" description: "This page describes the method to perform operations in the Authentication component." last_updated: "2026-07-02T09:34:10.108Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/authentication/add-user-to-org/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Authentication Help (/en/cloud-scale/help/authentication/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/authentication/add-new-user-to-existing-org/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/authentication/add-new-user-to-existing-org/) - Python SDK (/en/sdk/python/v1/cloud-scale/authentication/add-new-user-to-existing-org/) - Web SDK (/en/sdk/web/v4/cloud-scale/authentication/get-auth-instance/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/authentication/user-signup/) - Android SDK (/en/sdk/android/v2/cloud-scale/authentication/user-signup/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/authentication/user-signup/) - REST API (/en/api/code-reference/cloud-scale/authentication/add-user-to-existing-org/#AddaNewUsertoanExistingOrganization) -------------------------------------------------------------------------------- # Add New User to an Existing Organization Note: Ensure you have installed the required package to use this SDK method. 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. Notes: * You must provide the values for the mandatory parameters, OrgID, email_id and first_name, to register a user. * You can also add end-users to your application by providing the role_id 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 }; ### SDK Method to Add to Existing Org You can now add a new end-user to an existing organization by passing the JSON objects you created in the previous section as arguments to the addUserToOrg() SDK 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 snippet below is the component instance. //Pass the JSON configurations to the method const addedUser = await userManagement.addUserToOrg(signupConfig, userConfig); console.log(addedUser); #### Example of Expected Response { "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 } -------------------------------------------------------------------------------- title: "Get All Users in an Organization" description: "This page describes the method to perform operations in the Authentication component." last_updated: "2026-07-02T09:34:10.108Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/authentication/get-all-users-org/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Authentication Help (/en/cloud-scale/help/authentication/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/authentication/get-users-in-org/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/authentication/get-users-in-org/) - Python SDK (/en/sdk/python/v1/cloud-scale/authentication/get-user-details/) - Web SDK (/en/sdk/web/v4/cloud-scale/authentication/get-user-details/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/authentication/get-current-user/) - Android SDK (/en/sdk/android/v2/cloud-scale/authentication/get-current-user/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/authentication/get-current-user/) - REST API (/en/api/code-reference/cloud-scale/authentication/get-all-users/#GetAllUsers) -------------------------------------------------------------------------------- # Get All Users in an Organization Note: Ensure you have installed the required package to use this SDK method. You can pass the **OrgID** to the getAllUsers() SDK method to fetch all the users added to the application from that organization. The userManagement reference used in the code snippet below is the component instance. userManagement.getAllUsers('10062701096'); // Enter your Org ID here -------------------------------------------------------------------------------- title: "Reset Password" description: "This page describes the method to perform operations in the Authentication component." last_updated: "2026-07-02T09:34:10.108Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/authentication/reset-pwd/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Authentication Help (/en/cloud-scale/help/authentication/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/authentication/reset-password/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/authentication/reset-password/) - Python SDK (/en/sdk/python/v1/cloud-scale/authentication/reset-password/) - Web SDK (/en/sdk/web/v4/cloud-scale/authentication/reset-password/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/authentication/create-user-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/authentication/create-user-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/authentication/create-user-instance/) - REST API (/en/api/code-reference/cloud-scale/authentication/reset-user-password/#ResetUserPassword) -------------------------------------------------------------------------------- # Reset Password Note: Ensure you have installed the required package to use this SDK method. After the successful registration of a user, you can prompt the end-user to reset their password using the following code snippet. Notes: * EmailID and Platform type are the mandatory attributes. * 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 You need to configure the JSON object to contain the registering the details of a particular user in the manner shown 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' }; ### SDK Method to Reset the Password You need to pass the JSON object as argument to the registerUser() SDK method which returns a promise. The promise returned will be resolved to an object which is a JSON. While calling the registerUser() SDK method, a reset password link will be generated and sent to the user’s Email address. The userManagement reference used in the code snippet below is the component instance. const 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: Reset Password', senders_mail:'support@zylker.com' } }); console.log(users); -------------------------------------------------------------------------------- title: "Get User Details" description: "This page describes the method to perform operations in the Authentication component." last_updated: "2026-07-02T09:34:10.108Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/authentication/get-user-details/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Authentication Help (/en/cloud-scale/help/authentication/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/authentication/get-user-details/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/authentication/get-user-details/) - Python SDK (/en/sdk/python/v1/cloud-scale/authentication/get-user-details/) - Web SDK (/en/sdk/web/v4/cloud-scale/authentication/get-user-details/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/authentication/get-current-user/) - Android SDK (/en/sdk/android/v2/cloud-scale/authentication/get-current-user/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/authentication/get-current-user/) - REST API (/en/api/code-reference/cloud-scale/authentication/get-all-users/#GetAllUsers) -------------------------------------------------------------------------------- # Get User Details Note: Ensure you have installed the required package to use this SDK method. Catalyst Authentication provides SDK 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 snippet below is the component instance. The promise returned here will be resolved to a JSON object. // get the details of the current user const currentUser = await userManagement.getCurrentUser(); console.log(currentUser); #### Example of Expected Response { "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 Using User ID You can retrieve the details of a particular user by passing the User ID of the user to the getUserDetails() SDK method. The promise is resolved to a JSON object. The userManagement reference used in the code snippet below is the component instance. const userDetails = await userManagement.getUserDetails(1510000000109587); console.log(userDetails); #### Example of Expected Response 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":[] } ### Get Details of All Users The getAllUsers() SDK 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. const allUserDetails = await userManagement.getAllUsers(); console.log(allUserDetails); #### Example of Expected Response 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: [] } ] -------------------------------------------------------------------------------- title: "Update User Details" description: "This page describes the method to perform operations in the Authentication component." last_updated: "2026-07-02T09:34:10.109Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/authentication/update-user-details/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Authentication Help (/en/cloud-scale/help/authentication/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/authentication/update-user-details/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/authentication/update-user-details/) - Python SDK (/en/sdk/python/v1/cloud-scale/authentication/update-user-details/) - Web SDK (/en/sdk/web/v4/cloud-scale/authentication/get-user-details/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/authentication/get-current-user/) - Android SDK (/en/sdk/android/v2/cloud-scale/authentication/get-current-user/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/authentication/get-current-user/) - REST API (/en/api/code-reference/cloud-scale/authentication/get-all-users/#GetAllUsers) -------------------------------------------------------------------------------- # Update User Details Note: Ensure you have installed the required package to use this SDK method. Catalyst allows you to modify and update the following details of an end-user: * First Name * Last Name * ZAAID * 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. The userManagement reference used in the code snippet below is the component instance. userManagement.updateUserDetails('13749831', { email_id: 'emma@zylker.com', last_name: 'Burrows', zaaid: '1483013413294234', role_id: '843974989234859', first_name: 'Amelia' }); -------------------------------------------------------------------------------- title: "Enable or Disable a User" description: "This page describes the method to perform operations in the Authentication component." last_updated: "2026-07-02T09:34:10.109Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/authentication/enable-disable-user/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Authentication Help (/en/cloud-scale/help/authentication/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/authentication/enable-disable-user/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/authentication/enable-disable-user/) - Python SDK (/en/sdk/python/v1/cloud-scale/authentication/enable-disable-user/) - Web SDK (/en/sdk/web/v4/cloud-scale/authentication/sign-out-user/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/authentication/create-user-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/authentication/create-user-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/authentication/create-user-instance/) - REST API (/en/api/code-reference/cloud-scale/authentication/sign-out-user/#SignOutUser) -------------------------------------------------------------------------------- # Enable or Disable a User Note: Ensure you have installed the required package to use this SDK method. 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. You can enable or disable 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. The userManagement reference used in the code snippet below is the component instance. ### To Enable a User userManagement.updateUserStatus('195000000042777', USER_STATUS.ENABLE) ### To Disable a User userManagement.updateUserStatus('195000000042777', USER_STATUS.DISABLE) -------------------------------------------------------------------------------- title: "Delete a User" description: "This page describes the method to perform operations in the Authentication component." last_updated: "2026-07-02T09:34:10.109Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/authentication/delete-user/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Authentication Help (/en/cloud-scale/help/authentication/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/authentication/delete-user/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/authentication/delete-user/) - Python SDK (/en/sdk/python/v1/cloud-scale/authentication/delete-user/) - Web SDK (/en/sdk/web/v4/cloud-scale/authentication/sign-out-user/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/authentication/create-user-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/authentication/create-user-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/authentication/create-user-instance/) - REST API (/en/api/code-reference/cloud-scale/authentication/delete-user/#DeleteUser) -------------------------------------------------------------------------------- # Delete a User Note: Ensure you have installed the required package to use this SDK method. 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. The userManagement reference used in the code snippet below is the component instance. const deletedUser = await userManagement.deleteUser(1510000000109587); console.log(deletedUser); ##### Cache -------------------------------------------------------------------------------- title: "Overivew" description: "This page describes the method to perform operations in the Cache component." last_updated: "2026-07-02T09:34:10.109Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/cache/overview/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Cache Help Documentation (/en/cloud-scale/help/cache/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/cache/get-segment-instance/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/cache/get-component-instance/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/cache/get-component-instance/) - REST API Documentation (/en/api/code-reference/cloud-scale/cache/insert-key-value-in-segment/#InsertKeyValueinCacheSegment) -------------------------------------------------------------------------------- # Cache JavaScript SDK # Overview Cache is a *CloudScale* component, that can expertly handler small storage of data to facilitate retrieval of actively used data. Cache is best suited to handle your applications ephemera data or frequently accessed information. Cache actively reduces load on primary databases in memory-intensive real-time applications or microservices that demand sub-millisecond responses. Catalyst Cache is divided into cache units called segments. Each segment holds cache items (data) in the form of JSON key value pairs. The key and value are of the String data type. The **Cache JavaScript SDK** package enables you to perform CRUD operations on the data stored in Cache. You can retrieve data, insert data, update and delete data from the Cache component through code. ### Prerequisites You need to install the following package to use the Cache SDK methods. npm install @zcatalyst/cache Info: Ensure that you have applied the required authentication configuration to use the SDK methods of this component. ### Import Requirement You will need to import the following module to use the Cache SDK methods. const { Cache } = require('@zcatalyst/cache'); ### List of SDK Methods The following table contains the list of SDK methods that can be used to perform operations in Cache through code. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Category</th> <th>SDK Method</th> <th>Required Scope</th> </tr> </thead> <tbody> <tr> <td>General Operations</td> <td> <ul> <li>Get a Cache Instance</li> <li>Get a Segmemnt Instance</li> </ul> </td> <td>No requirement</td> </tr> <tr> <td>Cache Operations</td> <td> <ul> <li>Retrieve data from Cache</li> <li>Insert data to Cache</li> <li>Update data in Cache</li> <li>Delete Cache Item</li> </ul> </td> <td>Admin</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Get a Cache Instance" description: "This page describes the method to perform operations in the Cache component." last_updated: "2026-07-02T09:34:10.110Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/cache/get-cache-instance/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Cache Help Documentation (/en/cloud-scale/help/cache/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/cache/get-segment-instance/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/cache/get-component-instance/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/cache/get-component-instance/) - REST API Documentation (/en/api/code-reference/cloud-scale/cache/insert-key-value-in-segment/#InsertKeyValueinCacheSegment) -------------------------------------------------------------------------------- # Get a Cache Instance Note: Ensure you have installed the required package to use this SDK method. You can get the cache component reference as shown below. This will not fire a server-side call. You will refer to this component instance in various code snippets of working with Cache. const cache = new Cache(); -------------------------------------------------------------------------------- title: "Get a Segment Instance" description: "This page describes the method to perform operations in the Cache component." last_updated: "2026-07-02T09:34:10.110Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/cache/get-segment-instance/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Cache Help Documentation (/en/cloud-scale/help/cache/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/cache/get-segment-instance/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/cache/get-segment-instance/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/cache/get-segment-instance/) - REST API Documentation (/en/api/code-reference/cloud-scale/cache/insert-key-value-in-segment/#InsertKeyValueinCacheSegment) -------------------------------------------------------------------------------- # Get a Segment Instance Note: Ensure you have installed the required package to use this SDK method. 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. Note: If you wish to get the instance of a particular segment, then you need to pass the segment ID as the parameter. If you don’t provide any segment ID, it will refer to the default segment. // Refer a Cache segment through the Segment ID const cache = new Cache(); const segment = cache.segment();// Since no ID is passed here, it will refer to the default segment -------------------------------------------------------------------------------- title: "Retrieve Data from the Cache" description: "This page describes the method to perform operations in the Cache component." last_updated: "2026-07-02T09:34:10.110Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/cache/retreive-data/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Cache Help Documentation (/en/cloud-scale/help/cache/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/cache/retrieve-data-from-cache/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/cache/retrieve-data-from-cache/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/cache/retrieve-data-from-cache/) - REST API Documentation (/en/api/code-reference/cloud-scale/cache/insert-key-value-in-segment/#InsertKeyValueinCacheSegment) -------------------------------------------------------------------------------- # Retrieve Data from the Cache Note: Ensure you have installed the required package to use this SDK method. ### Get Cache Value Using the getValue() SDK method, you can retrieve the value of a Cache item from a segment. 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. //Get cache value by passing the key name const cache = new Cache(); const segment = cache.segment(); const entity = await segment.getValue('Age'); 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 promise returned from this code will be resolved to an object which is a JSON. The segment reference used in the code snippet below is the segment instance. //Get Cache object by passing the key name as argument const cache = new Cache(); const segment = cache.segment(); const entity = await segment.get('Age'); console.log(entity); #### Example of Expected Response { "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" } -------------------------------------------------------------------------------- title: "Insert Data in Cache" description: "This page describes the method to perform operations in the Cache component." last_updated: "2026-07-02T09:34:10.110Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/cache/insert-data/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Cache Help Documentation (/en/cloud-scale/help/cache/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/cache/insert-data-into-cache/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/cache/insert-data-into-cache/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/cache/insert-data-into-cache/) - REST API Documentation (/en/api/code-reference/cloud-scale/cache/insert-key-value-in-segment/#InsertKeyValueinCacheSegment) -------------------------------------------------------------------------------- # Insert Data in Cache Note: Ensure you have installed the required package to use this SDK method. Using the put() SDK method, you can insert a cache item. You can 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. The promise returned here will be resolved to a JSON object. You can also pass the *expiry time* for the cache item optionally. If you do not pass that value, the expiration time will be set to **48 hours** by default. The segment reference used in the code snippet below is the segment instance. //Insert Cache by passing the key-value pair const cache = new Cache(); const segment = cache.segment(); const entity = await segment.put('Name', 'Linda McCartney',1); //Expiry time for cache in hours console.log(entity); #### Example of Expected Response { "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" } -------------------------------------------------------------------------------- title: "Update Data in Cache" description: "This page describes the method to perform operations in the Cache component." last_updated: "2026-07-02T09:34:10.110Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/cache/update-cache/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Cache Help Documentation (/en/cloud-scale/help/cache/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/cache/update-data-in-cache/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/cache/update-data-in-cache/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/cache/update-data-in-cache/) - REST API Documentation (/en/api/code-reference/cloud-scale/cache/insert-key-value-in-segment/#InsertKeyValueinCacheSegment) -------------------------------------------------------------------------------- # Update Data in Cache Note: Ensure you have installed the required package to use this SDK method. You can update the key-value pair in a cache segment using the update() SDK 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. //Update cache by passing the key-value pair const cache = new Cache(); const segment = cache.segment(); const entity = await segment.update('Name', 'Micheal Greene'); console.log(entity); #### Example of Expected Response 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" } -------------------------------------------------------------------------------- title: "Delete Cache Item" description: "This page describes the method to perform operations in the Cache component." last_updated: "2026-07-02T09:34:10.110Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/cache/delete-cache/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Cache Help Documentation (/en/cloud-scale/help/cache/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/cache/delete-key-value-pair/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/cache/delete-key-value-pair/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/cache/delete-key-value-pair/) - REST API Documentation (/en/api/code-reference/cloud-scale/cache/insert-key-value-in-segment/#InsertKeyValueinCacheSegment) -------------------------------------------------------------------------------- # Delete Cache Item Note: Ensure you have installed the required package to use this SDK method. Using the delete() SDK method, a cache item can be permanently deleted from the cache segment, when it is no longer required. The cache item (data 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 the segment instance. #### Delete Cache Item 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 const cache = new Cache(); const segment = cache.segment(); const entity = await segment.delete('Name'); console.log(entity); ##### Connections -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the method to perform operations using the Connections component." last_updated: "2026-07-02T09:34:10.110Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/connections/overview/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Connections Help Documentation (/en/cloud-scale/help/connections/introduction/) - Authentication Help Documentation (/en/cloud-scale/help/data-store/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/zcql/execute-zcql-query/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/zcql/get-component-instance/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/zcql/get-component-instance/) - REST API Documentation (/en/api/code-reference/cloud-scale/zcql/execute-zcql-query/#ExecuteZCQLQuery) -------------------------------------------------------------------------------- # Connections JavaScript SDK # Overview Connections allows you to integrate with Zoho and other third-party services while managing all the authentication token requirement. The *Connections JavaScript SDK* package enables you to get the required authentication credentials. ### Prerequisites You will need to install the following package to be able to use the Connections SDK methods. npm install @zcatalyst/connections Info: Ensure that you have applied the required authentication configuration to use the SDK methods of this component. ### Import Requirement You will need to import the following modules to use the Connections SDK methods. const { Connections } = require('@zcatalyst/connections'); ### List of SDK Methods The following table contains the list of SDK methods that can be used to perform operations in the Connections component through code. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Category</th> <th>SDK Method</th> <th>Required Scope</th> </tr> </thead> <tbody> <tr> <td>General Operations</td> <td>Get Connections Instance</td> <td>Not required</td> </tr> <tr> <td>Connections Operations</td> <td>Get Authentication Credentials</td> <td>Admin</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Get Connections Instance" description: "This page describes the method to perform operations using the Connections component." last_updated: "2026-07-02T09:34:10.110Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/connections/get-component-instance/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Connections Help Documentation (/en/cloud-scale/help/connections/introduction/) - Authentication Help Documentation (/en/cloud-scale/help/data-store/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/zcql/execute-zcql-query/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/zcql/get-component-instance/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/zcql/get-component-instance/) - REST API Documentation (/en/api/code-reference/cloud-scale/zcql/execute-zcql-query/#ExecuteZCQLQuery) -------------------------------------------------------------------------------- # Get Connections Instance Note:<br /> * This SDK can only be accessed within Catalyst services like Functions and AppSail. It cannot be used to integrate with third-party services. * Ensure you have installed the required package to use this SDK method. 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. // Get a Connections instance const connections = new Connections(); -------------------------------------------------------------------------------- title: "Get Authentication Credentials" description: "This page describes the method to perform operations using the Connections component." last_updated: "2026-07-02T09:34:10.111Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/connections/get-auth-credentials/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Connections Help Documentation (/en/cloud-scale/help/connections/introduction/) - Authentication Help Documentation (/en/cloud-scale/help/data-store/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/zcql/execute-zcql-query/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/zcql/get-component-instance/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/zcql/get-component-instance/) - REST API Documentation (/en/api/code-reference/cloud-scale/zcql/execute-zcql-query/#ExecuteZCQLQuery) -------------------------------------------------------------------------------- # Get Authentication Credentials Note:<br /> * This SDK can only be accessed within Catalyst services like Functions and AppSail. It cannot be used to integrate with third-party services. * Ensure you have installed the required package to use this SDK method. 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 a connection instance const connections = new Connections(); // retrieve the authentication credentials for the specified connection const response = await connections.getConnectionCredentials('payrollcon'); // connection response console.log('Connection Response:', response); ##### DataStore -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.111Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/datastore/overview/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - DataStore Help (/en/cloud-scale/help/data-store/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/data-store/get-table-meta/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/data-store/get-component-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/data-store/get-component-instance/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/data-store/create-data-store-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/data-store/create-data-store-instance/) - REST APIs (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # DataStore JavaScript SDK # Overview Data Store is a *Catalyst Cloud Scale* component that offers robust RDBMS solutions without the hassle of having to implement a complex setup. The entire infrastructure and setup required to ensure seamless scalability is handled by the Catalyst cloud. You can perform operations like creating tables and columns, CRUD operations on data stored in the table, and define roles and permissions directly using the intuitive UI present in the Catalyst console. ### Prerequisites You will need to install the following packages to be able to use the DataStore SDK methods. npm install @zcatalyst/datastore Info: Ensure that you have applied the required authentication configuration to use the SDK methods of this component. ### Import Requirement You will need to import the following modules to use the DataStore SDK methods. const { Datastore} = require('@zcatalyst/datastore');//DataStore module ### List of SDK Methods The following table contains the list of SDK methods that can be used to perform operations in the DataStore through code. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Category</th> <th>SDK Method</th> <th>Required Scope</th> </tr> </thead> <tbody> <tr> <td>General Operations</td> <td>Get DataStore Instance</td> <td>No requirement</td> </tr> <tr> <td>Table Operations</td> <td> <ul> <li>Get Table Metadata <ul> <li>Get a Table's Metadata by Table ID</li> <li>Get a Table's Metadata by Table Name</li> <li>Get Metadata of all Tables</li> </ul> </li> <li>Get a Table Instance <ul> <li>Get the Table Instance Using Table ID</li> <li>Get the Table Instane Using Table Name</li> </ul> </li> </ul> </td> <td>No requirement</td> </tr> <tr> <td>Column Operations</td> <td>Get Column Metadata <ul> <li>Get a Column's Metadata by ID</li> <li>Get a Column's Metadata by Name</li> <li>Get Metadata of all Columns</li> </ul> <td>No requirement</td> </tr> <tr> <td rowspan ="3">Row Operations</td> <td> <ul> <li>Get Rows</li> <li>Insert Rows <ul> <li>Insert a Single Row</li> <li>Insert Multiple Rows</li> </ul> </li> <li>Update Rows <ul> <li>Update a Single Row</li> <li>Update Multiple Rows</li> </ul> </li> <li>Delete a Row</li> </ul> <td>No requirement</td> </tr> <tr> <td>Bulk Operations <ul> <li>Bulk Read Rows</li> <li>Bulk Write Rows</li> </ul> </td> <td>Admin</td> </tr> <tr> <td> <ul> <li>Bulk Delete Rows</li> </ul> </td> <td>No requirement</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Get a Component Instance" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.111Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/datastore/get-component-instance/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - DataStore Help (/en/cloud-scale/help/data-store/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/data-store/get-table-meta/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/data-store/get-component-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/data-store/get-component-instance/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/data-store/create-data-store-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/data-store/create-data-store-instance/) - REST APIs (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Get a Component Instance Note: Ensure you have installed the required package to use this SDK method. You can get the datastore component reference as shown below. This will not fire a server-side call. You will refer to this component instance in various code snippets of working with DataStore. //Get a datastore instance const datastore = new Datastore(); -------------------------------------------------------------------------------- title: "Get Table Metadata" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.111Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/datastore/get-table-metadata/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - DataStore Help (/en/cloud-scale/help/data-store/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/data-store/get-table-meta/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-meta/) - Python SDK (/en/sdk/python/v1/cloud-scale/data-store/get-table-meta/) - Web SDK (/en/sdk/web/v4/cloud-scale/data-store/get-table-meta/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/data-store/create-data-store-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/data-store/create-data-store-instance/) - REST APIs (/en/api/code-reference/cloud-scale/data-store/get-table-metadata/#GetTableMetadata) -------------------------------------------------------------------------------- # Get Table Metadata Note: Ensure you have installed the required package to use this SDK method. Using the getTableDetails() SDK method, you can get the metadata of a particular table in the Catalyst Datastore. ### Get a Table's Metadata by Table ID A table's metadata is fetched by referring the table's ID, using the getTableDetails() SDK method. The datastore reference used in the following code snippet is the component instance. const datastore = new Datastore(); const table = await datastore.getTableDetails(20660000000012118); console.log(table); #### Example of Expected Response You have the choice to convert the resultant promise (table metadata) to either a string or JSON output by accessing the **.toString()** or **.toJSON()** methods. { 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 A table's metadata is fetched by referring the name of the table, using the getTableDetails() SDK method. The datastore reference used in the following code snippet is the component instance. Note: If you change the name of your table at any point, you will need to ensure that the same change is reflected in your codebase in places where you have referred to the required table using the table's name. //Get a Single Table's details using the table name const datastore = new Datastore(); const table = await datastore.getTableDetails('VendorSystems'); console.log(table); #### Example of Expected Response You have the choice to convert the resultant promise (table metadata) to either a string or JSON output by accessing the **.toString()** or **.toJSON()** methods. { 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 The getAllTables() SDK method can be used to retrieve the metadata of all the tables in the Catalyst project. The datastore reference used in the following code snippet is the component instance. const datastore = new Datastore(); const tables = await datastore.getAllTables(); console.log(tables); #### Example of Expected Response The promise (metadata of all the tables) here will be resolved to an array of table meta details. [ { 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 a Table Instance" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.112Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/datastore/get-table-instance/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - DataStore Help (/en/cloud-scale/help/data-store/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/data-store/get-table-instance/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/data-store/get-table-instance/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/data-store/create-data-store-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/data-store/create-data-store-instance/) - REST APIs (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Get a Table Instance Note: Ensure you have installed the required package to use this SDK method. You can get a table's instance referring to it using its ID or name. ### Get The Table Instance Using TableID A table reference can be created by referring the table ID using the getTable() SDK method. The datastore reference used in the following code snippet is the component instance. const datastore = new Datastore(); const table = datastore.table(20660000000012118); ### Get The Table Instance Using Table Name A table reference can be created by referring the table name using the getTable() SDK method. The datastore reference used in the following code snippet is the component instance. const datstore = new Datastore(); const table = datastore.table('VendorShipments'); -------------------------------------------------------------------------------- title: "Get Column Metadata" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.112Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/datastore/get-column-metadata/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - DataStore Help (/en/cloud-scale/help/data-store/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/data-store/get-column-meta/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/data-store/get-column-meta/) - Python SDK (/en/sdk/python/v1/cloud-scale/data-store/get-column-meta/) - Web SDK (/en/sdk/web/v4/cloud-scale/data-store/get-column-meta/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/data-store/get-column-metadata/) - Android SDK (/en/sdk/android/v2/cloud-scale/data-store/get-column-metadata/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/data-store/get-column-metadata/) - REST APIs (/en/api/code-reference/cloud-scale/data-store/get-column-metadata/#GetColumnMetadata) -------------------------------------------------------------------------------- # Get Column Metadata Note: Ensure you have installed the required package to use this SDK method. ### Get Column's Metadata by ID You can retrieve the meta details of a single column of a table in the Data Store using the getColumnDetails() SDK method. The datastore reference used in the following code snippets is the component instance. The table reference used in the below code snippets can either be a table instance or a table meta. //Use Table Meta Object to get the column with column ID const datastore = new Datastore(); const table = datastore.table('ShipmentDetails'); const column = await table.getColumnDetails(1510000000110832); console.log(column); #### Example of Expected Response { 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 You can pass the name of the required column to the getColumnDetails() SDK method to get its metadata. The column meta will not involve any further operations. Therefore the promise returned here is resolved to a JSON object. The datastore reference used in the following code snippets is the component instance. The table reference used in the below code snippets can either be a table instance or a table meta. //Use Table Meta Object to get the column with column ID const datastore = new Datastore(); const table = datastore.table('SampleTable'); const column = await table.getColumnDetails('newColumn'); console.log(column); #### Example of Expected Response { 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 You can use the getAllColumns() SDK method to get the metadata of all the columns present in a table in the Data Store. The datastore reference used in the following code snippets is the component instance. The table reference used in the below code snippets can either be a table instance or a table meta. //Use Table Meta Object to get all the columns const datastore = new Datastore(); const table = datastore.table('SampleTable'); const columns = await table.getAllColumns(); console.log(columns); #### Example of Expected Response The promise returned here is resolved into an array of column meta 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" } ] -------------------------------------------------------------------------------- title: "Get Rows" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.112Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/datastore/get-rows/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - DataStore Help (/en/cloud-scale/help/data-store/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/data-store/get-rows/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/data-store/get-rows/) - Python SDK (/en/sdk/python/v1/cloud-scale/data-store/get-rows/) - Web SDK (/en/sdk/web/v4/cloud-scale/data-store/get-rows/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/data-store/get-rows/) - Android SDK (/en/sdk/android/v2/cloud-scale/data-store/get-rows/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/data-store/get-rows/) - REST APIs (/en/api/code-reference/cloud-scale/data-store/get-all-rows/#GetAllRows) -------------------------------------------------------------------------------- # Get Rows Note: Ensure you have installed the required package to use this SDK method. ### Get a Single Row You can use the getRow() SDK method to fetch a single row from a table in the Catalyst Data Store. The table reference used in the below code snippets can either be a table instance or a table meta. const datastore = new Datastore(); const table = datastore.table('ShipmentDetails'); //Use the table instance or the table meta object to fetch a row by passing the Row ID const rowPromise = table.getRow(1510000000109476); ### Example of Expected Response { "CREATORID": "2136000000006003", "MODIFIEDTIME": "2021-08-17 13:02:11:184", "CREATEDTIME": "2021-08-16 16:29:10:499", "CityName": "Chennai", "ROWID": "2136000000011011" } ### Get All Rows Through Pagination You can use the get the required rows of data from a table in the Data Store in a paginated fashion using the getMyPagedRows() SDK method. You can refer to the required table using its ID. The table reference used in the below code snippets can either be a table instance or a table meta. Info: Getting the rows in a paginated manner allows you to fetch the rows of a table in batches or pages through iteration. #### Parameters Used <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Parameter Name</th> <th>Data Type</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td>hasNext</td> <td>Added</td> <td>Will determine if the next iteration is required to fetch more rows.</td> </tr> <tr> <td>maxRows</td> <td>Int</td> <td>An optional parameter. Will return the required number of rows per page based on the value you set. For example, if you set the value of maxRows as 100, then 100 rows of data will be per page.</br></br> Info: By default, without using the maxRows parameter, the SDK method will return 200 rows per page. </td> </tr> <tr> <td>nextToken</td> <td>String</td> <td>Will be used to decide if more rows need to be fetched from the table.</td> </tr> <tr> <td>more_records</td> <td>Needed</td> <td>Will be fetched from the response data to fetch the next set of records.</td> </tr> </tbody> </table> <br /><br /> const datastore = new Datastore(); // Fetch rows through pagination and declare the value for nextToken as undefined for the first iteration async function getMyPagedRows(hasNext = true, nextToken = undefined) { if (!hasNext) { return; } const { data, next_token, more_records } = await dataStore.table(195000000042025).getPagedRows({ nextToken, maxRows: 100 }); console.log("rows:", data); // Fetch the rows from the table return getMyPagedRows(more_records, next_token); // Fetch next set of records } #### Example of Expected Response The following type of response can be expected is the value for more_records is set as **true**. { "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}}" } The following type of response can be expected is the value for more_records is set as **false**. { "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 } -------------------------------------------------------------------------------- title: "Insert Rows" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.112Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/datastore/insert-rows/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - DataStore Help (/en/cloud-scale/help/data-store/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/data-store/insert-rows/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/data-store/insert-rows/) - Python SDK (/en/sdk/python/v1/cloud-scale/data-store/insert-rows/) - Web SDK (/en/sdk/web/v4/cloud-scale/data-store/insert-rows/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/data-store/create-rows/) - Android SDK (/en/sdk/android/v2/cloud-scale/data-store/create-rows/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/data-store/create-rows/) - REST APIs (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Insert Rows Notes: * Ensure you have installed the required package to use this SDK method. * Ensure that you create the required table and columns in the console. ### Insert a Single Row You can use the insertRow() SDK method, to insert a single row of data to a column in a table in Catalyst DataStore. You can refer to the required table using its ID or name. The table reference used in the below code snippets can either be a table instance or a table meta. To use the following SDK method, you need to create a JSON object containing the row details in the following format: {column name : column value} This JSON object will then need to be passed as an argument to the insertRow() SDK method. // Create a JSON object with the rows to be inserted const rowData = { Name: "George Hamilton", Age: 22, ID: 6868 }; // Use the table meta object to insert the row const datastore = new Datastore(); const table = datastore.table("EmpDetails"); const row = await table.insertRow(rowData); console.log(row); A unique RowID value will be automatically generated once the row is inserted. #### Example of Expected Response { "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 to a table in Catalyst DataStore by constructing an array that contains the row data and passing it as an argument to the insertRows() SDK method. You can refer to the required table using its ID or name. The table reference used in the below code snippets can either be a table instance or a table meta. // Create a JSON array with the rows to be inserted const rowData = [ { Name: "Mark Wellington", Age: 29, ID: 7218 }, { Name: "Zendaya Jones", Age: 32, ID: 3211 } ]; // Use the table meta object to insert multiple rows const datastore = new Datastore(); const table = datastore.table("EmpDetails"); const rows = await table.insertRows(rowData); console.log(rows); #### Example of Expected Response The promise returned when using the insertRows() SDK method is resolved to an array containing the row objects. [ { "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: "Query DataStore" description: "This page describes the method to perform query operations in the DataStore component." last_updated: "2026-07-02T09:34:10.113Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/datastore/query-datastore/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - DataStore Help (/en/cloud-scale/help/data-store/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/data-store/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/data-store/) - Python SDK (/en/sdk/python/v1/cloud-scale/data-store/) - Web SDK (/en/sdk/web/v4/cloud-scale/data-store/) - REST APIs (/en/api/code-reference/cloud-scale/data-store/) -------------------------------------------------------------------------------- # Query DataStore ### ZCQL 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 ZCQL functions. Note: Ensure you have installed the required package to use this SDK method. The required query needs to be constructed and passed as a param to the executeZCQLQuery() method to execute it. ### Construct the Query The following example code snippet details constructing a **SELECT** query and passing it to the executeZCQLQuery() method to execute it. The datastore reference used here is the component instance. // Construct the query to execute const query = 'SELECT * FROM ShipmentData'; const result = await datastore.executeZCQLQuery(query); #### Example of Expected Response Executing the ZCQL query using the executeZCQLQuery() SDK method will return a promise, which will be resolved to an object. The content key will contain the array of row objects. A sample response that you will receive is shown below. [ { AlienCity: { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-13 13:49:19:475", CREATEDTIME: "2021-08-13 13:49:19:475", CityName: "Dallas", ROWID: "2136000000008508" } }, { AlienCity: { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-16 15:55:32:969", CREATEDTIME: "2021-08-16 15:55:32:969", CityName: "Los Angeles", ROWID: "2136000000011002" } }, { AlienCity: { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-16 17:03:01:507", CREATEDTIME: "2021-08-16 16:29:10:499", CityName: "New York", ROWID: "2136000000011011" } } ] -------------------------------------------------------------------------------- title: "Search DataStore" description: "This page describes the method to perform search operations in the DataStore component." last_updated: "2026-07-02T09:34:10.113Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/datastore/search-datastore/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - DataStore Help (/en/cloud-scale/help/data-store/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/data-store/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/data-store/) - Python SDK (/en/sdk/python/v1/cloud-scale/data-store/) - Web SDK (/en/sdk/web/v4/cloud-scale/data-store/) - REST APIs (/en/api/code-reference/cloud-scale/data-store/) -------------------------------------------------------------------------------- # Search DataStore Search is a *CloudScale* component that enables data searching within the indexed columns of your Catalyst Data Store tables. 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. Note: Ensure you have installed the required package to use this SDK method. Using the executeSearchQuery() SDK method you can execute the required search query to search for a particular pattern of data. The datatore 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'] } }; Using the JSON object created in the above section is passed as a parameter to the executeSearchQuery() SDK method which returns a promise. The promise returned will be resolved to a JSON object. // Execute the search query by passing the configuration const searchResult = await datastore.executeSearchQuery(config); console.log(searchResult); #### Example of Expected Response An example of the response that you will receive is shown below. { AlienCity: [ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-13 13:49:19:475", CityName: "Dallas", CREATEDTIME: "2021-08-13 13:49:19:475", ROWID: "2136000000008508" } ] } -------------------------------------------------------------------------------- title: "Update Rows" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.113Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/datastore/update-rows/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - DataStore Help (/en/cloud-scale/help/data-store/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/data-store/update-rows/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/data-store/update-rows/) - Python SDK (/en/sdk/python/v1/cloud-scale/data-store/update-rows/) - Web SDK (/en/sdk/web/v4/cloud-scale/data-store/update-rows/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/data-store/update-rows/) - Android SDK (/en/sdk/android/v2/cloud-scale/data-store/update-rows/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/data-store/update-rows/) - REST APIs (/en/api/code-reference/cloud-scale/data-store/update-row/#UpdateRow) -------------------------------------------------------------------------------- # Update Rows Note: Ensure you have installed the required package to use this SDK method. ### Update a Single Row You can use the updateRow() SDK to update the row data of a single row in the table in Catalyst DataStore. To update the required row, you need to construct a JSON object with the required values and pass it as an argument to the updateRow() SDK method. The table reference used in the below code snippets can either be a table instance or a table meta. #### Parameters Used <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Parameter Name</th> <th>Data Type</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td>ROWID</td> <td>Int</td> <td>A mandatory parameter. Will hold the value of the row that you need to update.</td> </tr> </tbody> </table> <br /><br /> // Construct a JSON Object with the updated row details const updatedRowData = { Name: "Mathew Jones", Age: 31, ROWID: 1510000000109474 }; // Use Table Meta Object to update a single row using ROWID const datastore = new Datastore(); const table = datastore.table("SampleTable"); const row = await table.updateRow(updatedRowData); console.log(row); #### Example of Expected Response The promise returned here will be resolved to a JSON row object. { "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 You can use the updateRows() SDK method to update multiple rows stored in a table in the Catalyst DataStore. To update multiple rows, you need to construct an array of JSON objects, and pass it as an argument to the updateRows() SDK method. You can refer to the required table using its ID or name. The table reference used in the below code snippets can either be a table instance or a table meta. #### Parameters Used <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Parameter Name</th> <th>Data Type</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td>ROWID</td> <td>Int</td> <td>A mandatory parameter. Will hold the value of the row that you need to update.</td> </tr> </tbody> </table> <br /><br /> // Data to be updated along with the ROWID const updatedRowsData = [ { Name: "Mathew Jones", Age: 31, ROWID: 1510000000113298 }, { Name: "Rhonda Watson", Age: 28, ROWID: 1510000000109474 } ]; // Use Table Meta Object to update multiple rows using ROWIDs const datastore = new Datastore(); const table = datastore.table("SampleTable"); const rows = await table.updateRows(updatedRowsData); console.log(rows); #### Example of Expected Response [ { "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 a Row" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.113Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/datastore/delete-rows/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - DataStore Help (/en/cloud-scale/help/data-store/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/data-store/delete-row//) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/data-store/delete-row/) - Python SDK (/en/sdk/python/v1/cloud-scale/data-store/delete-row/) - Web SDK (/en/sdk/web/v4/cloud-scale/data-store/delete-row/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/data-store/delete-row/) - Android SDK (/en/sdk/android/v2/cloud-scale/data-store/delete-row/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/data-store/delete-row/) - REST APIs (/en/api/code-reference/cloud-scale/data-store/delete-row/#DeleteRow) -------------------------------------------------------------------------------- # Delete a Row Note: Ensure you have installed the required package to use this SDK method. You can pass the ROWID of the required row to the deleteRow() SDK method to delete it from the table in Catalyst DataStore. The table reference used in the below code snippets can either be a table instance or a table meta. Info: You wont be able to delete multiple rows. // Use Table Meta Object to delete a single row using ROWID const datastore = new Datastore(); const table = datastore.table('SampleTable'); const row = await table.deleteRow(1510000000109476); console.log(row); ###### Bulk Operations -------------------------------------------------------------------------------- title: "Bulk Read Rows" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.113Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/datastore/bulk-operations/bulk-read/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - DataStore Help (/en/cloud-scale/help/data-store/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/data-store/bulk-read/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/data-store/bulk-read/) - Python SDK (/en/sdk/python/v1/cloud-scale/data-store/bulk-read-rows/) - Web SDK (/en/sdk/web/v4/cloud-scale/data-store/get-rows/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/data-store/get-rows/) - Android SDK (/en/sdk/android/v2/cloud-scale/data-store/get-rows/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/data-store/get-rows/) - REST APIs (/en/api/code-reference/cloud-scale/data-store/bulk-read-rows/create-bulk-read-job/#CreateBulkReadJob) -------------------------------------------------------------------------------- # Bulk Read Rows Notes: * Ensure you have installed the required package to use this SDK method. * A maximum of 200,000 rows can be read simultaneously. You can perform bulk read jobs on row data stored in a table in Catalyst DataStore. Using the following bulk read utility, you can read thousands of records from a specific table and generate a .CSV file containing the results of read operation. ### Methods Used <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Methods Used</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>bulkRead.createJob({criteria, page,select_columns})</td> <td>Create new bulk read job.</td> </tr> <tr> <td>bulkRead.getStatus(jobID)</td> <td>Get a bulk read job status.</td> </tr> <tr> <td>bulkRead.getResult(jobID)</td> <td>Get a bulk read job's result.</td> </tr> </tbody> </table> The required table is referred to by its Table ID. The datastore reference used in the following code snippet is the component instance. Info: You can also use the dataStore.table().bulkJob('read' | 'write') method to perform either a bulk read or a bulk write job. // Bulk read const datastore = new Datastore(); // get datastore instance const bulkRead = datastore.table("sampleTable").bulkJob("read"); 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 Note: The bulk read job status must be Completed for the result to be retrieved successfully. await bulkRead.getResult(bulkReadJob.job_id); -------------------------------------------------------------------------------- title: "Bulk Write Rows" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.114Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/datastore/bulk-operations/bulk-write/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - DataStore Help (/en/cloud-scale/help/data-store/introduction/) - Stratus Help (/en/cloud-scale/help/stratus/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/data-store/bulk-write/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/data-store/bulk-write/) - Python SDK (/en/sdk/python/v1/cloud-scale/data-store/bulk-write-rows/) - Web SDK (/en/sdk/web/v4/cloud-scale/data-store/insert-rows/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/data-store/create-rows/) - Android SDK (/en/sdk/android/v2/cloud-scale/data-store/create-rows/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/data-store/create-rows/) - REST APIs (/en/api/code-reference/cloud-scale/data-store/bulk-write-rows/create-bulk-write-job/#CreateBulkWriteJob) -------------------------------------------------------------------------------- # Bulk Write Rows Notes: * Ensure you have installed the required package to use this SDK method. * A maximum of 100,000 rows can be written at one time. You can perform bulk write jobs on a specific table present in the Catalyst DataStore. Using the bulk write utility you can fetch thousands of records stored in a .CSV file uploaded to a bucket in Stratus, and insert them to a specific table. The required table is referred to by its table ID, and the required column will be referred to by its column ID. Note: To perform the bulk write operation, you need to ensure that the required .CSV file is uploaded to a bucket in Catalyst Stratus. The .CSV file will be referred to using a JSON object which contains details, such as the bucket name, object name, and, if versioning is enabled for your bucket, its version ID. ### Methods Used <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Methods 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> <tr> <td>bulkWrite.status(job ID)</td> <td>Get the status of a bulk write operation.</td> </tr> <tr> <td>bulkWrite.result(job ID)</td> <td>Get the result of a bulk write operation.</td> </tr> </tbody> </table> The datastore reference used in the following code snippet is the component instance. const objectDetails = { bucket_name: "zylker14266", object_key: "sample.csv", version_id: "64832huidksnd83" }; const datastore = new Datastore(); // get datastore instance const bulkWrite = datastore.table("sampleTable").bulkJob("write"); 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 Note: The bulk write job status must be Completed for the result to be retrieved successfully. await bulkWrite.getResult(bulkWriteJob.job_id); -------------------------------------------------------------------------------- title: "Bulk Delete Rows" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.114Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/datastore/bulk-operations/bulk-delete/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - DataStore Help (/en/cloud-scale/help/data-store/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/data-store/bulk-delete-rows/) - NodeJS SDK (/en/sdk/nodejs/v2/cloud-scale/data-store/bulk-delete-rows/) - Python SDK (/en/sdk/python/v1/cloud-scale/data-store/bulk-delete-rows/) - Web SDK (/en/sdk/web/v4/cloud-scale/data-store/bulk-delete-rows/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/data-store/delete-row/) - Android SDK (/en/sdk/android/v2/cloud-scale/data-store/delete-row/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/data-store/delete-row/) - REST APIs (/en/api/code-reference/cloud-scale/data-store/bulk-delete-rows/#BulkDeleteRows) -------------------------------------------------------------------------------- # Bulk Delete Rows Note: Ensure you have installed the required package to use this SDK method. You can use the following bulk delete utility to delete multiple rows of data from a table in the Catalyst DataStore. The required table is referred to using its ID or name. The required ROWIDs of the rows to be deleted needs to be passed as an array to the deleteRows() method. You can pass a maximum of **200 ROWIDs** at one time. The datastore reference used in the following code snippet is the component instance. const datastore = new Datastore(); // get datastore instance const table = datastore.table("EmpDetails"); // Pass the table ID or table name const row = await table.deleteRows([ // Pass the ROWIDs of the records to be deleted 1028000000171815, 1028000000171810, 1028000000171805, 1028000000171617, 1028000000171098 ]); console.log(row); Note: You can delete a maximum of 200 rows from a table at one time. ##### Mail -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the method to perform operations using the Mail component." last_updated: "2026-07-02T09:34:10.114Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/mail/overview/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Mail Help Documentation (/en/cloud-scale/help/mail/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/mail/send-email/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/mail/get-component-instance/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/mail/get-component-instance/) - REST API Documentation (/en/api/code-reference/cloud-scale/mail/send-email/#SendEmail) -------------------------------------------------------------------------------- # Mail JavaScript SDK # Overview Mail is a *CloudScale* component that allows you to send emails to your end-users from within your 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. The *Mail JavaScript SDK* package enables you to send emails to registered users of your application through code. ### Prerequisites You will need to install the following package to be able to use the Mail SDK methods. npm install @zcatalyst/mail Info: Ensure that you have applied the required authentication configuration to use the SDK methods of this component. ### Import Requirement You will need to import the following modules to use the Mail SDK methods. const { Email } = require('@zcatalyst/mail'); ### List of SDK Methods The following table contains the list of SDK methods that can be used to perform operations in the ZCQL component through code. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Category</th> <th>SDK Method</th> <th>Required Scope</th> </tr> </thead> <tbody> <tr> <td>General Operations</td> <td>Get Mail Instance</td> <td>Not required</td> </tr> <tr> <td>Mail Operations</td> <td>Send Email</td> <td>Admin</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Get Mail Instance" description: "This page describes the method to perform operations using the Mail component." last_updated: "2026-07-02T09:34:10.114Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/mail/get-mail-instance/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Mail Help Documentation (/en/cloud-scale/help/mail/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/mail/send-email/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/mail/get-component-instance/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/mail/get-component-instance/) - REST API Documentation (/en/api/code-reference/cloud-scale/mail/send-email/#SendEmail) -------------------------------------------------------------------------------- # Get Mail Instance Note: Ensure you have installed the required package to use this SDK method. You can get the email component reference 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 Mail component. const email = new Email(); -------------------------------------------------------------------------------- title: "Send Email" description: "This page describes the method to perform operations using the Mail component." last_updated: "2026-07-02T09:34:10.114Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/mail/send-email/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Mail Help Documentation (/en/cloud-scale/help/mail/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/mail/send-email/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/mail/send-email/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/mail/send-email/) - REST API Documentation (/en/api/code-reference/cloud-scale/mail/send-email/#SendEmail) -------------------------------------------------------------------------------- # Send Email Note: Ensure you have installed the required package to use this SDK method. You need to accomplish the following steps in order to send an email using the Mail component: * Configure and verify the domain * Configure and verify the sender email address * Configure the SMTP settings for your required email client Once the above requirements are completed, you can proceed to send your email. Notes: * It is crucial you verify not only the sender email address, but also its domain. This ensures that the emails sent from your application to your end users are sent securely and that it does not end up in their spam. Learn more about verifying your domain. * 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. 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 to your email. The maximum supported limits for email recipients and file attachments in a single send mail operation are specified below: <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Email Header Fields</th> <th>Maximum Supported Limits</th> </tr> </thead> <tbody> <tr> <td>To address</td> <td>10</td> </tr> <tr> <td>CC</td> <td>10</td> </tr> <tr> <td>BCC</td> <td>5</td> </tr> <tr> <td>Reply to</td> <td>5</td> </tr> <tr> <td>Number of file attachments</td> <td>5</td> </tr> <tr> <td>Size of file attachments</td> <td>15MB (through a single file or multiple files up to 5 files)</td> </tr> </tbody> </table> <br /> Note: The subject, sender, and at least 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() SDK method, as well as specify the subject and content of the email. The email reference used in the code below is the component instance. const fs = require('fs'); // Define the file stream for file attachments // Create a config object with the email configuration const 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 cann't wait to get started! Cheers, Team Zylker", attachments: [fs.createReadStream('kycform.pdf')] // Create a file stream for the file attachment }; Now, you need to pass the config JSON object to the sendMail() SDK method as an argument. This triggers the sending of the email. The promise returned here will be resolved to a JSON object. const mailPromise = await email.sendMail(config); console.log(mailPromise); #### Example of Expected Response A sample response that you will receive 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 can't wait to get started! Cheers, Team Zylker" } ##### NoSQL -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.115Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/nosql/overview/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - NoSQL Help Documentation (/en/cloud-scale/help/nosql/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/nosql/get-table-metadata/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/nosql/get-component-instance/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/nosql/get-component-instance/) - REST API Documentation (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # NoSQL JavaScript SDK # Overview NoSQL is a *Catalyst CloudScale* component that offers a fully managed, non-relational data storage feature that enables you to store semi-structured, unstructured, and disparate data of your application in either document-type or key-value based JSON format. The *NoSQL JavaScript SDK* package enables you to perform CRUD operations in your NoSQL tables in your project. You can fetch the metadata of your NoSQL tables, as well as query tables or indexes of tables by specifying query conditions. ### Prerequisites You need to install the following package to be able to use the NoSQL SDK methods. npm install @zcatalyst/nosql Info: Ensure that you have applied the required authentication configuration to use the SDK methods of this component. ### Import Requirement You need to import the following module to use the NoSQL SDK methods. const { NoSQL } = require('@zcatalyst/nosql');//NoSQL module ### List of SDK Methods The following table contains the list of SDK methods that can be used to perform operations in the NoSQL tables through code. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Category</th> <th>SDK Method</th> <th>Required Scope</th> </tr> </thead> <tbody> <tr> <td>General Operations</td> <td>Create a NoSQL Instance</td> <td>Not required</td> </tr> <tr> <td>NoSQL Operations</td> <td> <ul> <li>Get table metadata <ul> <li>Get table metadata with Table ID</li> <li>Get table metadata with Table Name</li> <li>Get metadata of all tables</li> </ul> </li> <li>Get table instance <ul> <li>Get instance with Table ID</li> <li>Get instance with Table Name</li> <li>Get instance with Table details</li> </ul> </li> <li>Construct NoSQL item</li> <li>Insert items in table</li> <li>Manipulate NoSQL Items</li> <li>Update items in table</li> <li>Fetch items from table</li> <li>Query table</li> <li>Query index</li> <li>Delete items from table</li> </ul> </td> <td>Admin</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Get a NoSQL Instance" description: "This page describes the method to perform operations in the NoSQL component." last_updated: "2026-07-02T09:34:10.115Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/nosql/get-instance/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - NoSQL Help Documentation (/en/cloud-scale/help/nosql/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/nosql/get-table-metadata/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/nosql/get-component-instance/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/nosql/get-component-instance/) - REST API Documentation (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # Get a NoSQL Instance Note: Ensure you have installed the required package to use this SDK method. You can get the nosql component reference as shown below. This will not fire a server-side call. You will refer to this component instance in various code snippets of working with NoSQL. //Get a NoSQL instance const nosql = new NoSQL(); -------------------------------------------------------------------------------- title: "Get NoSQL Table Metadata" description: "This page describes the method to perform operations in the NoSQL component." last_updated: "2026-07-02T09:34:10.115Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/nosql/get-table-metadata/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - NoSQL Help Documentation (/en/cloud-scale/help/nosql/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/nosql/get-table-metadata/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/nosql/get-table-metadata/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/nosql/get-table-metadata/) - REST API Documentation (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # Get NoSQL Table Metadata Note: Ensure you have installed the required package to use this SDK method. You can refer to the required table using its Table ID or its name. ### Get Table Metadata With Table ID You can pass the Table ID to the getTable() SDK method to retrieve the NoSQL table's metadata. The nosql reference used in the code snippets below is the component instance created to perform these operations. // Create a NoSQL instance const nosql = new NoSQL(); // Get table metadata using the Table ID const tableA = await nosql.getTable('124567890'); ### Get Table Metadata With Table Name You can pass the name of the required table to the getTable() SDK method to retrieve the NoSQL table's metadata. The nosql reference used in the code snippets below is the component instance created to perform these operations. // Create a NoSQL instance const nosql = new 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. ### Get Metadata of All Tables You can use the getAllTable() SDK method to get the metadata of all the tables present in your project. const nosql = new NoSQL(); // Get metadata of all tables const allTables = await nosql.getAllTable(); -------------------------------------------------------------------------------- title: "Get NoSQL Table Instance" description: "This page describes the method to perform operations in the NoSQL component." last_updated: "2026-07-02T09:34:10.115Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/nosql/get-table-instance/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - NoSQL Help Documentation (/en/cloud-scale/help/nosql/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/nosql/create-table-instance/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/nosql/get-table-instance/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/nosql/get-table-instance/) - REST API Documentation (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # Get NoSQL Table Instance Note: Ensure you have installed the required package to use this SDK method. You can use the table() SDK method to fetch an instance for a table created in Catalyst NoSQL. This instance will be used to refer to the required table and perform the required operations. This process will not fire a server-side call. You can pass the table ID, name, or even details of the table passed as a JSON. ### Get Instance with Table ID You can pass the table ID of the required table to the table() method to get the required instance. The nosql reference used in the code snippets below is the component instance created earlier. const nosql = new NoSQL(); const tableinstanceA = nosql.table('20660000000025022'); // Create a table instance with Table ID ### Get Instance With Table Name You can pass the name of the required NoSQL table to the table() method, to get its instance. The nosql reference used in the code snippets below is the component instance created earlier. const nosql = new NoSQL(); const tableInstanceB = nosql.table('Emptable'); // Create a table instance with the table name ### Get Instance With Table Details You can resolve the details of the required table as a JSON and pass it to the table() method to get the instance of the required table. This method, in particular, allows you to duplicate a table object whose instance you already fetched using the ID or name. The nosql reference used in the code snippets below is the component instance created earlier. const nosql = new NoSQL(); const tableInstanceC = nosql.table(tableA.toJSON()); // Create a table instance with table details -------------------------------------------------------------------------------- title: "Construct NoSQL Item" description: "This page describes the method to perform operations in the NoSQL component." last_updated: "2026-07-02T09:34:10.115Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/nosql/construct-item/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - NoSQL Help Documentation (/en/cloud-scale/help/nosql/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/nosql/construct-item/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/nosql/construct-item/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/nosql/construct-item/) - REST API Documentation (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # Construct NoSQL Item Note: Ensure you have installed the required package to use this SDK method. 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 following sections. Catalyst supports several data types such as **String**, **Number**, **Set of Strings**, **Set of Numbers**, **List**, and **Map**. You must provide the values for the partition key attribute that you configured for a table in every data item. Notes: * Learn more on supported data types. * Learn more table keys and other table attributes. ### Create a New NoSQL Item You can create a new NoSQL item using the NoSQLItem() SDK method. const item = new NoSQLItem(); // Create a new NoSQL item ### Construct a NoSQL Item of String In the following example code snippet, we construct an item that includes string values and a nested JSON attribute color as a Map. const item = new NoSQLItem() // Create a new NoSQL item // Add a string value .addString('fruit', 'mango') // Add a map .addMap('properties', { color: 'yellow' }); ### 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: * Using the ArrayBuffers object that represents a raw binary data buffer. * Using a Base64 string that represents binary data in the ASCII format. #### Example Code Snippet 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 ### 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 using: * The ArrayBuffers object that represents a raw binary data buffer * A Base64 string that represents binary data in the ASCII format. Additionally, you can also create a byte set from passing constructed bytes as a byte array. #### Example Code Snippet 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 ### Construct a NoSQL String Set You can create a NoSQL string set of the *Set of String* data type from a string array. #### Example Code Snippet const stringSet = new NoSQLStringSet(['hello', 'world']); // Create a NoSQL string set from a string array ### 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. #### Example Code Snippet const numberSet = new NoSQLNumberSet([123, 1234n]); // Create a NoSQL Number set from an array of numbers or BigInt values -------------------------------------------------------------------------------- title: "Manipulate NoSQL Items" description: "This page describes the method to perform operations in the NoSQL component." last_updated: "2026-07-02T09:34:10.115Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/nosql/manipulate-item/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - NoSQL Help Documentation (/en/cloud-scale/help/nosql/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/nosql/item-operations/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/nosql/update-items/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/nosql/update-items/) - REST API Documentation (/en/api/code-reference/cloud-scale/nosql/update-item/#UpdateItem) -------------------------------------------------------------------------------- # Manipulate NoSQL Items Note: Ensure you have installed the required package to use this SDK method. You can 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(). * You can also convert a NoSQL item back into a plain JavaScript object using itemFromObj.to(). 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 NoSQL Table" description: "This page describes the method to perform operations in the NoSQL component." last_updated: "2026-07-02T09:34:10.116Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/nosql/insert-items/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - NoSQL Help Documentation (/en/cloud-scale/help/nosql/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/nosql/insert-items/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/nosql/insert-items/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/nosql/insert-items/) - REST API Documentation (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # Insert Items in NoSQL Table Note: Ensure you have installed the required package to use this SDK method. Using the insertItems() SDK method, you can insert items in a specific NoSQL table after you construct them. Notes: * Catalyst enables you to insert a maximum of 25 items in bulk in a NoSQL table with a single SDK operation. * Learn more about the Catalyst custom JSON format. * Learn more about the supported data types. ### Insert Items Without Conditions 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 pass the values for the partition key and sort key attributes configured for the table. For example, consider a NoSQL table with the following values: <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Attribute Name</th> <th>Attribute Data Type</th> <th>Attribute Value</th> </tr> </thead> <tbody> <tr> <td>fruitName(Partition Key)</td> <td>String</td> <td>Banana</td> </tr> <tr> <td>fruitColor(map:fruitProperties)</td> <td>String</td> <td>Yellow</td> </tr> <tr> <td>fruitType(map:fruitProperties)</td> <td>String</td> <td>Berries</td> </tr> </tbody> </table> <br /> // 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 }); ### 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 border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Operators</th> <th>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 /> The following code snippet details further examples of 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: "This page describes the method to perform operations in the NoSQL component." last_updated: "2026-07-02T09:34:10.116Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/nosql/update-item/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - NoSQL Help Documentation (/en/cloud-scale/help/nosql/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/nosql/update-items/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/nosql/update-items/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/nosql/update-items/) - REST API Documentation (/en/api/code-reference/cloud-scale/nosql/update-item/#UpdateItem) -------------------------------------------------------------------------------- # Update Items in Table Note: Ensure you have installed the required package to use this SDK method. Using the updateItems() SDK method, you can 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 required 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 code snippet below illustrates the functionality of the updateItems() SDK method. For this example, the NoSQL table contains the following attributes and values: <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Attribute Name</th> <th>Value</th> </tr> </thead> <tbody> <tr> <td><span class="badge">fruitName</span>(<strong>Partition Key</strong>)</td> <td>Apple</td> </tr> </tbody> </table> <br /> To this table we are going to update the values of the taste and color attributes present in the table, along with their paths. const NoSQLOperator = new 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 NoSQL Table" description: "This page describes the method to perform operations in the NoSQL component." last_updated: "2026-07-02T09:34:10.116Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/nosql/fetch-items/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - NoSQL Help Documentation (/en/cloud-scale/help/nosql/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/nosql/fetch-items/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/nosql/fetch-items/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/nosql/fetch-items/) - REST API Documentation (/en/api/code-reference/cloud-scale/nosql/fetch-item/#FetchItem) -------------------------------------------------------------------------------- # Fetch Items from NoSQL Table Note: Ensure you have installed the required package to use this SDK method. Using the fetchItem() SDK method, you can fetch the required items from a NoSQL table. The items can be referred using their Primary Keys. For example, you can use just the partition key or a combination of the partition key and sort key to fetch the item. Optionally, you can 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 following example code snippet details the following logic: * The required item is being identified using its **partition key**: fruit whose value is "**apple**". * Specific attributes such as properties and taste are filtered to be fetched using required_attributes. * Implements consistent_read to indicate if the read operation must be done using the master or a slave cluster. - If the value is set as true, it is queried from the master. - If the value is set as 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. //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 NoSQL Table" description: "This page describes the method to perform operations in the NoSQL component." last_updated: "2026-07-02T09:34:10.116Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/nosql/query-table/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - NoSQL Help Documentation (/en/cloud-scale/help/nosql/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/nosql/query-table/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/nosql/query-table/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/nosql/query-table/) - REST API Documentation (/en/api/code-reference/cloud-scale/nosql/query-table/#QueryTable) -------------------------------------------------------------------------------- # Query NoSQL Table Note: Ensure you have installed the required package to use this SDK method. Using the queryTable() SDK method, you can 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 border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Operators</th> <th>Notation</th> </tr> </thead> <tbody> <tr> <td>CONTAINS</td> <td><span class="badge">contains</span></td> </tr> <tr> <td>NOT_CONTAINS</td> <td><span class="badge">not_contains</span></td> </tr> <tr> <td>BEGINS_WITH</td> <td><span class="badge">begins_with</span></td> </tr> <tr> <td>ENDS_WITH</td> <td><span class="badge">ends_with</span></td> </tr> <tr> <td>IN</td> <td><span class="badge">in</span></td> </tr> <tr> <td>NOT_IN</td> <td><span class="badge">not_in</span></td> </tr> <tr> <td>BETWEEN</td> <td><span class="badge">between</span></td> </tr> <tr> <td>NOT_BETWEEN</td> <td><span class="badge">not_between</span></td> </tr> <tr> <td>EQUALS</td> <td><span class="badge">equals</span></td> </tr> <tr> <td>NOT_EQUALS</td> <td><span class="badge">not_equals</span></td> </tr> <tr> <td>GREATER_THAN</td> <td><span class="badge">greater_than</span></td> </tr> <tr> <td>LESS_THAN</td> <td><span class="badge">less_than</span></td> </tr> <tr> <td>GREATER_THAN_OR_EQUALS</td> <td><span class="badge">greater_equal</span></td> </tr> <tr> <td>LESSER_THAN_OR_EQUALS</td> <td><span class="badge">less_equal</span></td> </tr> <tr> <td>AND</td> <td><span class="badge">AND</span></td> </tr> <tr> <td>OR</td> <td><span class="badge">OR</span></td> </tr> </tbody> </table> <br /> The following example code snippet details the following logic: * The required items are identified using its partition key: fruitType. * The condition value is "Citrus". * Implements consistent_read to indicate if the read operation must be done using the master or a slave cluster. - If the value is set as true, it is queried from the master. - If the value is set as 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. const NoSQLOperator = new 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 descending order. forward_scan: true, }); -------------------------------------------------------------------------------- title: "Query Index in NoSQL" description: "This page describes the method to perform operations in the NoSQL component." last_updated: "2026-07-02T09:34:10.116Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/nosql/query-index/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - NoSQL Help Documentation (/en/cloud-scale/help/nosql/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/nosql/query-index/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/nosql/query-index/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/nosql/query-index/) - REST API Documentation (/en/api/code-reference/cloud-scale/nosql/query-index/#QueryIndex) -------------------------------------------------------------------------------- # Query Index in NoSQL Note: Ensure you have installed the required package to use this SDK method. You can 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 border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Operators</th> <th>Notation</th> </tr> </thead> <tbody> <tr> <td>CONTAINS</td> <td><span class="badge">contains</span></td> </tr> <tr> <td>NOT_CONTAINS</td> <td><span class="badge">not_contains</span></td> </tr> <tr> <td>BEGINS_WITH</td> <td><span class="badge">begins_with</span></td> </tr> <tr> <td>ENDS_WITH</td> <td><span class="badge">ends_with</span></td> </tr> <tr> <td>IN</td> <td><span class="badge">in</span></td> </tr> </tbody> </table> <br /> The following example code snippet details the following logic: * The required query is executed by referring the required items using the index FruitIdentifier’s partition key fruitColor. * The condition value is specified as "yellow". * The query is done using the queryIndex() SDK method. * Implements consistent_read to indicate if the read operation must be done using the master or a slave cluster. - If the value is set as true, it is queried from the master. - If the value is set as 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. 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 fruitColor 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 descending order. forward_scan: true }); -------------------------------------------------------------------------------- title: "Delete Items from NoSQL Table" description: "This page describes the method to perform operations in the NoSQL component." last_updated: "2026-07-02T09:34:10.117Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/nosql/delete-item/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - NoSQL Help Documentation (/en/cloud-scale/help/nosql/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/nosql/delete-items/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/nosql/delete-items/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/nosql/delete-items/) - REST API Documentation (/en/api/code-reference/cloud-scale/nosql/delete-item/#DeleteItem) -------------------------------------------------------------------------------- # Delete Items from NoSQL Table Note: Ensure you have installed the required package to use this SDK method. Using the deleteItems() SDK method, to delete items from a NoSQL table. You can refer to the required item using the primary keys of the table. For example, 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. In the following code snippet, the required item from the NoSQL table is being referred to using its partition key fruit whose value matches "apple". // 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: "Overview" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.117Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/push-notifications/overview/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Push Notifications Help Documentation (/en/cloud-scale/help/push-notifications/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/push-notifications/send-notifications/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/push-notifications/get-component-instance/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/push-notifications/get-component-instance/) - REST API Documentation (/en/api/code-reference/cloud-scale/push-notifications/web/send-web-push-notifications/#SendWebPushNotifications) -------------------------------------------------------------------------------- # Push Notifications JavaScript SDK # Overview Push Notifications, is a Catalyst *CloudScale* service that 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 Web SDK in your web client. You can also access this code from the **Push Notifications** section in your Catalyst remote console. <br /> You must ensure that you include the web initialization script. The *Push Notifications JavaScript SDK* package enables you to send notifications on their devices to registered users of your application through code. ### Prerequisites You need to install the following package to use Push Notifications SDK methods. npm install @zcatalyst/push-notification Info: Ensure that you have applied the required authentication configuration to use the SDK methods of this component. ### Import Requirement You will need to import the following modules to use the Push Notification SDK methods. const {PushNotification} = require('@zcatalyst/push-notification'); ### List of SDK Methods The following table contains the list of SDK methods that can be used to perform operations in the Push Notification component through code. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Category</th> <th>SDK Method</th> <th>Required Scope</th> </tr> </thead> <tbody> <tr> <td>General Operations</td> <td>Get Push Notification Instance</td> <td>Not required</td> </tr> <tr> <td>Push Notifications Operations</td> <td> <ul> <li>Send notifications to web apps</li> <li>Send notifications to mobile apps</li> </ul> </td> <td>Admin</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Get Push Notification Instance" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.117Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/push-notifications/get-instance/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Push Notifications Help Documentation (/en/cloud-scale/help/push-notifications/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/push-notifications/send-notifications/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/push-notifications/get-component-instance/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/push-notifications/get-component-instance/) - REST API Documentation (/en/api/code-reference/cloud-scale/push-notifications/web/send-web-push-notifications/#SendWebPushNotifications) -------------------------------------------------------------------------------- # Get Push Notification Instance Note: Ensure you have installed the required package to use this SDK method. You can get the pushNotification component reference 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 Push Notification component. const pushNotification = new PushNotification(); // Get push notification instance -------------------------------------------------------------------------------- title: "Send Notifications to Web Apps" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.117Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/push-notifications/send-web-notifications/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Push Notifications Help Documentation (/en/cloud-scale/help/push-notifications/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/push-notifications/send-notifications/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/push-notifications/send-notifications/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/push-notifications/send-notifications/) - REST API Documentation (/en/api/code-reference/cloud-scale/push-notifications/web/send-web-push-notifications/#SendWebPushNotifications) -------------------------------------------------------------------------------- # Send Notifications to Web Apps Note: Ensure you have installed the required package to use this SDK method. 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. You must then pass the array to the sendNotification() SDK 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); 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"); 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 perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.117Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/push-notifications/send-mobile-notifications/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Push Notifications Help Documentation (/en/cloud-scale/help/push-notifications/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/push-notifications/send-notifications-mobile/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/push-notifications/send-notifications-mobile/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/push-notifications/send-notifications-mobile/) - REST API Documentation (/en/api/code-reference/cloud-scale/push-notifications/ios/send-ios-push-notifications/#SendiOSPushNotifications) -------------------------------------------------------------------------------- # Send Notifications to Mobile Apps Note: Ensure you have installed the required package to use this SDK method. The Catalyst CloudScale Push Notifications component enables you to send notifications to mobile applications built on the Android or iOS platforms. Catalyst enables you to send push notifications to **50 users** in a single function call. You can send push notifications to a specific target user by using their Catalyst user IDs or email address. You can include alerts, updates, or promotional content for the user to engage with your application. To set up push notifications for your mobile application, 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.<br /><br />The appId can be fetched by configuring **Android Push Notifications** service directly in the Catalyst console. 2. The mobile application must use the Catalyst Authentication component. 3. Once step 1 and 2 are completed, the Catalyst user must be logged in on their device to receive the notification promptly. Once the prerequisites are complete, you can send notifications by calling the JavaScript 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 = new 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. Info: Learn more about Catalyst SDK Scopes. const notification = new pushNotification().mobile("1234567890", 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. #### Parameters Used <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Parameters Used</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td>notifyObj</td> <td>An object with the details of the push notification message.</td> </tr> <tr> <td>recipient</td> <td>The Catalyst User ID of the recipient or the email address of the recipient to whom the message has to be delivered.</td> </tr> <tr> <td>badge_count</td> <td>Sets the app icon’s notification badge count to 1. You can change this value to any number you require.</td> </tr> </tbody> </table> <br /> 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'); ### 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. #### Parameters Used <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Parameters Used</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td>notifyObj</td> <td>An object with the details of the push notification message.</td> </tr> <tr> <td>recipient</td> <td>The Catalyst User ID of the recipient or the email address of the recipient to whom the message has to be delivered.</td> </tr> <tr> <td>badge_count</td> <td>Sets the app icon’s notification badge count to 1. You can change this value to any number you require.</td> </tr> </tbody> </table> <br /> You need to pass the required parameters to the sendIOSNotification() method in the following manner: MobileNotification.sendIOSNotification(notifyObj: ICatalystPushDetails, recipient: string): Promise 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'); -------------------------------------------------------------------------------- title: "Register a Client" description: "This page describes the method to register a client for push notifications using the Catalyst JavaScript SDK." last_updated: "2026-07-02T09:34:10.117Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/push-notifications/register-client/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Push Notifications Help Documentation (/en/cloud-scale/help/push-notifications/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/push-notifications/send-notifications/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/push-notifications/get-component-instance/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/push-notifications/get-component-instance/) - REST API Documentation (/en/api/code-reference/cloud-scale/push-notifications/web/send-web-push-notifications/#SendWebPushNotifications) -------------------------------------------------------------------------------- # Register a Client Note: Ensure you have installed the required package to use this SDK method. You can register a client device or browser to receive push notifications using the enableNotification() SDK method. Once the client is registered, you can define a messageHandler on the component instance to handle incoming push notification messages. The pushNotification instance used here is the component instance. // Register the client const response = await pushNotification.enableNotification(); // Create a handler for the message when received pushNotification.messageHandler = (msg) => { // Action to be performed when the message is received }; ##### Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.118Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/stratus/overview/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Stratus Help Documentation (/en/cloud-scale/help/stratus/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/stratus/overview/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK Documentation (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK Documentation (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK Documentation (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK Documentation (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API Documentation (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Stratus JavaScript SDK # Overview Stratus is the comprehensive object storage solution offered in the Catalyst Cloud Scale service. 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 CRUD, upload, and download operations on objects stored in the bucket. ### Prerequisites You need to install the following packages to be able to use the Stratus SDK methods. npm install @zcatalyst/stratus<br /> Info: Ensure that you have applied the required authentication configuration to use the SDK methods of this component. ### Import Requirement You need to import the following module to use the Stratus SDK methods. const { Stratus } = require('@zcatalyst/stratus');//Stratus module ### List of SDK Methods The following table contains the list of SDK methods that can be used to perform Stratus operations through code. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Category</th> <th>SDK Method</th> <th>Required Scope</th> </tr> </thead> <tbody> <tr> <td rowspan="3">General Operations</td> <td>Check Stratus Instance</td> <td>Not required</td> </tr> <tr> <td>Check Bucket Availability</td> <td>Not required</td> </tr> <tr> <td>List Buckets</td> <td>Admin</td> </tr> <tr> <td rowspan="14">Bucket Operations</td> <td>Create Bucket Instance</td> <td>Not required</td> </tr> <tr> <td>Get Bucket Details</td> <td>Not required</td> </tr> <tr> <td>Get Bucket CORS</td> <td>Admin</td> </tr> <tr> <td>List Objects in a Bucket <ul> <li>List all objects by pagination</li> <li>List all objects through iteration</li> </ul> </td> <td>Admin</td> </tr> <tr> <td>Check Object Availability</td> <td>Admin</td> </tr> <tr> <td rowspan="1">Download Object <ul> <li>Download an Object</li> <li>Download a Portion of the Object</li> <li>Download an Object Using Transfer Manager</li> </ul> </td> <td>Not required</td> </tr> <tr> <td>Generate Presigned URL to Download an Object</td> <td>Admin</td> </tr> <td rowspan="1">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 With Extract Option</li> <li>Upload Object Using Multipart</li> <li>Upload an Object Using Transfer Manager</li> </ul> </td> <td>Not required</td> </tr> <tr> <td>Generate Presigned URL to Upload an Object</td> <td>Admin</td> </tr> <tr> <td>Extract a Zipped Object In Stratus <ul> <li>Get Zip Extraction Status</li> </ul> </td> <td>Admin</td> </tr> <tr> <td>Copy Object</td> <td>Admin</td> </tr> <tr> <td>Rename an Object</td> <td>Admin</td> </tr> <tr> <td>Move an Object</td> <td>Admin</td> </tr> <tr> <td>Delete Object <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>Delete a Path in the Bucket</li> <li>Truncate Bucket</li> </ul> </td> <td>Admin</td> </tr> <tr> <td rowspan="4">Object Operations</td> <td>Create Object Instance</td> <td>Not required</td> </tr> <tr> <td>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> </td> <td>Admin</td> </tr> <tr> <td>Get Object Details <ul> <li>Get Details of All Objects</li> <li>Get Details of a Particular Version of the Object</li> </ul> </td> <td>Admin</td> </tr> <tr> <td>Put Object Meta Data</td> <td>Admin</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Create Stratus Instance" description: "This page describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.118Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/stratus/create-instance/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Stratus Help Documentation (/en/cloud-scale/help/stratus/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/stratus/create-stratus-instance/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/stratus/create-stratus-instance/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/stratus/create-stratus-instance/) - Web SDK Documentation (/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/) - iOS SDK Documentation (/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-instance//) - Android SDK Documentation (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK Documentation (/en/sdk/flutter/v2/cloud-scale/stratus/initialize-stratus/) - REST API Documentation (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Stratus Instance Note: Ensure you have installed the required package to use this SDK method. You can get the stratus component reference as shown below. This will not fire a server-side call. You will refer to this component instance in various code snippets of working with Stratus. // Get a stratus instance const stratus = new Stratus(); -------------------------------------------------------------------------------- title: "Check Bucket Availability" description: "This page describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.118Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/stratus/check-bucket-availability/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Stratus Help Documentation (/en/cloud-scale/help/stratus/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/stratus/check-bucket/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/stratus/check-bucket/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/stratus/check-bucket/) - Web SDK Documentation (/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/) - iOS SDK Documentation (/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-instance//) - Android SDK Documentation (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK Documentation (/en/sdk/flutter/v2/cloud-scale/stratus/initialize-stratus/) - REST API Documentation (/en/api/code-reference/cloud-scale/stratus/head-bucket/#CheckBucketAvailability) -------------------------------------------------------------------------------- # Check Bucket Availability Note: Ensure you have installed the required package to use this SDK method. 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 following 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 border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Parameter Name</th> <th>Data Type</th> <th>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> <br /> const headBucketResponse = await stratus.headBucket('bucketName'); // check the bucket is available in stratus console.log(headBucketResponse); ### Example of Expected Response head bucket:::: true ### 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 border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Error Code</th> <th>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 describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.119Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/stratus/list-buckets/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Stratus Help Documentation (/en/cloud-scale/help/stratus/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/stratus/list-buckets/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/stratus/list-buckets/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/stratus/list-buckets/) - Web SDK Documentation (/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/) - iOS SDK Documentation (/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-instance/) - Android SDK Documentation (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK Documentation (/en/sdk/flutter/v2/cloud-scale/stratus/initialize-stratus/) - REST API Documentation (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # List Buckets Note: Ensure you have installed the required package to use this SDK method. The following example code snippet illustrates the implementation of the listBuckets()SDK method. The stratus reference used in the following code snippet is the component instance. const auth = await new ZCAuth().init(req); const stratus = new Stratus(); //list the buckets in the stratus const listBuckets = await stratus.listBuckets(); console.log('list buckets::::', listBuckets); ### Example of Expected Response list buckets:::: [ { bucket_name: 'zylker14266', project_details: [Object], created_by: [Object], created_time: 'Aug 20, 2025 03:11 PM', modified_by: [Object], modified_time: 'Aug 20, 2025 03:11 PM', bucket_meta: [Object], bucket_url: 'https://exmaplebucket14266-development.zohostratus.com' } ] -------------------------------------------------------------------------------- title: "Create Bucket Instance" description: "This page describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.119Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/stratus/create-bucket-instance/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Stratus Help Documentation (/en/cloud-scale/help/stratus/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/) - Web SDK Documentation (/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/) - iOS SDK Documentation (/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-instance/) - Android SDK Documentation (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK Documentation (/en/sdk/flutter/v2/cloud-scale/stratus/initialize-stratus/) - REST API Documentation (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Bucket Instance Note: Ensure you have installed the required package to use this SDK method. To perform bucket level operations, you need to create a bucket instance. You will refer to this component instance in various code snippets of working with Buckets in Stratus. The stratus reference used in the following code snippet is the component instance. const bucket = stratus.bucket("bucketName"); -------------------------------------------------------------------------------- title: "Get Bucket Details" description: "This page describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.119Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/stratus/get-bucket-details/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Stratus Help Documentation (/en/cloud-scale/help/stratus/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/stratus/get-bucket-details/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/stratus/get-bucket-details/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/stratus/get-bucket-details/) - Web SDK Documentation (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK Documentation (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK Documentation (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK Documentation (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API Documentation (/en/api/code-reference/cloud-scale/stratus/get-bucket/#GetSpecificBucket) -------------------------------------------------------------------------------- # Get Bucket Details Note: Ensure you have installed the required package to use this SDK method. The getDetails() SDK method will allow you to get all available details of a particular bucket. The bucket reference used in the following code snippet is the component instance. const buckets = await bucket.getDetails(); // get details of a given bucket console.log(buckets); ### Example of Expected Response { bucket_name: 'zylker14266', project_details: { project_name: 'ZylkerIndustries', id: '12096000002022001', project_type: 'Live' }, created_by: { zuid: '779176685', is_confirmed: false, email_id: 'emmy@zylker.com', first_name: 'Amelia', last_name: 'Burrows', user_type: 'Admin', user_id: '12096000000003003' }, created_time: 'Aug 20, 2025 03:11 PM', modified_by: { zuid: '779176685', is_confirmed: false, email_id: 'emmy@zylker.com', first_name: 'Amelia', last_name: 'Burrows', user_type: 'Admin', user_id: '12096000000003003' }, modified_time: 'Aug 20, 2025 03:11 PM', bucket_meta: { versioning: false, caching: { status: 'Disabled' }, encryption: false, audit_consent: false }, bucket_url: 'https://zylker4266-development.zohostratus.com' } -------------------------------------------------------------------------------- title: "Get Bucket CORS" description: "This page describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.119Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/stratus/get-bucket-cors/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Stratus Help Documentation (/en/cloud-scale/help/stratus/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/stratus/get-bucket-cors/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/stratus/get-bucket-cors/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/stratus/get-bucket-cors/) - Web SDK Documentation (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK Documentation (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK Documentation (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK Documentation (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API Documentation (/en/api/code-reference/cloud-scale/stratus/get-bucket/#GetSpecificBucket) -------------------------------------------------------------------------------- # Get Bucket CORS Note: Ensure you have installed the required package to use this SDK method. The getCors() SDK method will return the current CORS configuration of a specific bucket in Stratus. The bucket reference used in the following code snippet is the component instance. 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. Info: Learn more about Bucket CORS const cors = await bucket.getCors(); console.log(cors); ### Example of Expected Response { domain: 'https://zylkereclassifieds-779513891.development.catalystserverless.com', allowed_methods: [ 'HEAD', 'DELETE', 'POST', 'GET', 'PUT' ] } -------------------------------------------------------------------------------- title: "List Objects in a Bucket" description: "This page describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.119Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/stratus/list-objects/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Stratus Help Documentation (/en/cloud-scale/help/stratus/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/stratus/list-objects/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/stratus/list-objects/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/stratus/list-objects/) - Web SDK Documentation (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK Documentation (/en/sdk/ios/v2/cloud-scale/stratus/get-object/) - Android SDK Documentation (/en/sdk/android/v2/cloud-scale/stratus/get-object/) - Flutter SDK Documentation (/en/sdk/flutter/v2/cloud-scale/stratus/get-object/) - REST API Documentation (/en/api/code-reference/cloud-scale/stratus/get-object/#GetaSpecificObject) -------------------------------------------------------------------------------- # List Objects in a Bucket Note: Ensure you have installed the required package to use this SDK method. ### 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 following code snippet is the component instance. 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 border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Parameter Name</th> <th>Data Type</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td>maxKey</td> <td>String</td> <td>A Mandatory parameter. Will contain the maximum limit of objects.</td> </tr> <tr> <td>nextToken</td> <td>String</td> <td>A 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 /><br /> For example,<br />If you set the value as true, the root-level objects alone will be listed.<br />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> <br /> 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 you 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, you need to list the maxkeys number of objects and check if nextToken has been created. Using nextToken you can continue the iteration until 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(4, "Img"); #### Example of Expected Response response: [ StratusObject { keyDetails: { key_type: 'file', key: 'random_gen_design/img_1.jpeg', size: 8713, content_type: 'image/jpeg', etag: '56fcb562a4bc4fb981b0c40a7feb2408', last_modified: 'Sep 10, 2025 01:15 PM', object_url: 'https://zylker14266-development.zohostratus.com/random_gen_design/img_1.jpeg' } }, StratusObject { keyDetails: { key_type: 'file', key: 'aquatic_sea_ven/Img_3.jpg', size: 31467, content_type: 'image/jpeg', etag: 'd25b2e9d70ef34d2b4a1397a6f4703e4', last_modified: 'Sep 10, 2025 01:16 PM', object_url: 'https://zylker14266-development.zohostratus.com/aquatic_sea_ven/Img_3.jpg' } }, StratusObject { keyDetails: { key_type: 'file', key: 'random_gen_design/Img_5.png', size: 3818, content_type: 'image/png', etag: 'ab1918da8f9c47aa51b0f1d4949c6021', last_modified: 'Sep 10, 2025 01:17 PM', object_url: 'https://zylker14266-development.zohostratus.com/random_gen_design/Img_5.png' } }, StratusObject { keyDetails: { key_type: 'file', key: 'random_gen_design/Img_7.png', size: 19037, content_type: 'image/png', etag: '349a98b743fbe6e89ddf09ab31673fa6', last_modified: 'Sep 10, 2025 01:17 PM', object_url: 'https://zylker14266-development.zohostratus.com/random_gen_design/Img_7.png' } }, StratusObject { keyDetails: { key_type: 'file', key: 'random_gen_design/Img_8.png', size: 3275, content_type: 'image/png', etag: '4a671a721c643f8506d112b7f6b39436', last_modified: 'Sep 10, 2025 01:17 PM', object_url: 'https://zylker14266-development.zohostratus.com/random_gen_design/Img_8.png' } }, StratusObject { keyDetails: { key_type: 'file', key: 'aquatic_sea_ven/Img_2.jpg', version_id: '01k4s9hgptxam14jrrn303negs', size: 15103, content_type: 'image/jpeg', etag: '7ff12ee34cc16ceb3f8b0f72301bd154', last_modified: 'Sep 10, 2025 01:18 PM', object_url: 'https://zylker14266-development.zohostratus.com/aquatic_sea_ven/Img_2.jpg' } }, StratusObject { keyDetails: { key_type: 'file', key: 'aquatic_sea_ven/Img_3.jpg', version_id: '01k4s9hh8s2v66gvxr4e83x3k8', size: 31467, content_type: 'image/jpeg', etag: 'd25b2e9d70ef34d2b4a1397a6f4703e4', last_modified: 'Sep 10, 2025 01:18 PM', object_url: 'https://zylker14266-development.zohostratus.com/aquatic_sea_ven/Img_3.jpg' } }, StratusObject { keyDetails: { key_type: 'file', key: 'aquatic_sea_ven/Img_9.jpg', version_id: '01k4s9hj1av91pd7khzr9zrh89', size: 23413, content_type: 'image/jpeg', etag: 'f466f787332836d8aca3b73d482bca05', last_modified: 'Sep 10, 2025 01:18 PM', object_url: 'https://zylker14266-development.zohostratus.com/aquatic_sea_ven/Img_9.jpg' } }, StratusObject { keyDetails: { key_type: 'file', key: 'aquatic_sea_ven/Img_10.jpg', version_id: '01k4s9hjjp1gd9m65atdg6qgtq', size: 13806, content_type: 'image/jpeg', etag: 'de18f77d95a15977600e348d621caccd', last_modified: 'Sep 10, 2025 01:18 PM', object_url: 'https://zylker14266-development.zohostratus.com/aquatic_sea_ven/Img_10.jpg' } }, StratusObject { keyDetails: { key_type: 'file', key: 'road_vendor/Img_4.jpg', version_id: '01k4s9m3gn1r2b34x398kkfmhh', size: 11452, content_type: 'image/jpeg', etag: '00feebcfcd51053ff3208a051b0d39e6', last_modified: 'Sep 10, 2025 01:19 PM', object_url: 'https://zylker14266-development.zohostratus.com/road_vendor/Img_4.jpg' } }, StratusObject { keyDetails: { key_type: 'file', key: 'road_vendor/Img_6.avif', version_id: '01k4s9mbdf4t2nb6bqx7rqww5v', size: 5274, content_type: 'image/avif', etag: 'e00859eba271306185a894fa6bccb104', last_modified: 'Sep 10, 2025 01:19 PM', object_url: 'https://zylker14266-development.zohostratus.com/road_vendor/Img_6.avif' } } ] ### List Objects Through Iteration Using this SDK method, you can list all the objects present in a bucket in a single API call using the iteration technique. Using the maxKey variable, you can access the required number of objects. 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: 'Img' }; // List iterable files from the bucket const files = bucket.listIterableObjects(options); #### Example of Expected Response response: [ StratusObject { keyDetails: { key_type: 'file', key: 'random_gen_design/img_1.jpeg', size: 8713, content_type: 'image/jpeg', etag: '56fcb562a4bc4fb981b0c40a7feb2408', last_modified: 'Sep 10, 2025 01:15 PM', object_url: 'https://tbd14266-development.zohostratus.com/random_gen_design/img_1.jpeg' } }, StratusObject { keyDetails: { key_type: 'file', key: 'aquatic_sea_ven/Img_3.jpg', size: 31467, content_type: 'image/jpeg', etag: 'd25b2e9d70ef34d2b4a1397a6f4703e4', last_modified: 'Sep 10, 2025 01:16 PM', object_url: 'https://tbd14266-development.zohostratus.com/aquatic_sea_ven/Img_3.jpg' } }, StratusObject { keyDetails: { key_type: 'file', key: 'random_gen_design/Img_5.png', size: 3818, content_type: 'image/png', etag: 'ab1918da8f9c47aa51b0f1d4949c6021', last_modified: 'Sep 10, 2025 01:17 PM', object_url: 'https://tbd14266-development.zohostratus.com/random_gen_design/Img_5.png' } }, StratusObject { keyDetails: { key_type: 'file', key: 'random_gen_design/Img_7.png', size: 19037, content_type: 'image/png', etag: '349a98b743fbe6e89ddf09ab31673fa6', last_modified: 'Sep 10, 2025 01:17 PM', object_url: 'https://tbd14266-development.zohostratus.com/random_gen_design/Img_7.png' } }, StratusObject { keyDetails: { key_type: 'file', key: 'random_gen_design/Img_8.png', size: 3275, content_type: 'image/png', etag: '4a671a721c643f8506d112b7f6b39436', last_modified: 'Sep 10, 2025 01:17 PM', object_url: 'https://tbd14266-development.zohostratus.com/random_gen_design/Img_8.png' } }, StratusObject { keyDetails: { key_type: 'file', key: 'aquatic_sea_ven/Img_2.jpg', version_id: '01k4s9hgptxam14jrrn303negs', size: 15103, content_type: 'image/jpeg', etag: '7ff12ee34cc16ceb3f8b0f72301bd154', last_modified: 'Sep 10, 2025 01:18 PM', object_url: 'https://tbd14266-development.zohostratus.com/aquatic_sea_ven/Img_2.jpg' } }, StratusObject { keyDetails: { key_type: 'file', key: 'aquatic_sea_ven/Img_3.jpg', version_id: '01k4s9hh8s2v66gvxr4e83x3k8', size: 31467, content_type: 'image/jpeg', etag: 'd25b2e9d70ef34d2b4a1397a6f4703e4', last_modified: 'Sep 10, 2025 01:18 PM', object_url: 'https://tbd14266-development.zohostratus.com/aquatic_sea_ven/Img_3.jpg' } }, StratusObject { keyDetails: { key_type: 'file', key: 'aquatic_sea_ven/Img_9.jpg', version_id: '01k4s9hj1av91pd7khzr9zrh89', size: 23413, content_type: 'image/jpeg', etag: 'f466f787332836d8aca3b73d482bca05', last_modified: 'Sep 10, 2025 01:18 PM', object_url: 'https://tbd14266-development.zohostratus.com/aquatic_sea_ven/Img_9.jpg' } }, StratusObject { keyDetails: { key_type: 'file', key: 'aquatic_sea_ven/Img_10.jpg', version_id: '01k4s9hjjp1gd9m65atdg6qgtq', size: 13806, content_type: 'image/jpeg', etag: 'de18f77d95a15977600e348d621caccd', last_modified: 'Sep 10, 2025 01:18 PM', object_url: 'https://tbd14266-development.zohostratus.com/aquatic_sea_ven/Img_10.jpg' } }, StratusObject { keyDetails: { key_type: 'file', key: 'road_vendor/Img_4.jpg', version_id: '01k4s9m3gn1r2b34x398kkfmhh', size: 11452, content_type: 'image/jpeg', etag: '00feebcfcd51053ff3208a051b0d39e6', last_modified: 'Sep 10, 2025 01:19 PM', object_url: 'https://tbd14266-development.zohostratus.com/road_vendor/Img_4.jpg' } }, StratusObject { keyDetails: { key_type: 'file', key: 'road_vendor/Img_6.avif', version_id: '01k4s9mbdf4t2nb6bqx7rqww5v', size: 5274, content_type: 'image/avif', etag: 'e00859eba271306185a894fa6bccb104', last_modified: 'Sep 10, 2025 01:19 PM', object_url: 'https://tbd14266-development.zohostratus.com/road_vendor/Img_6.avif' } } ] -------------------------------------------------------------------------------- title: "Check Object Availability" description: "This page describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.120Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/stratus/check-object/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Stratus Help Documentation (/en/cloud-scale/help/stratus/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/stratus/list-objects/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/stratus/list-objects/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/stratus/list-objects/) - Web SDK Documentation (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK Documentation (/en/sdk/ios/v2/cloud-scale/stratus/get-object/) - Android SDK Documentation (/en/sdk/android/v2/cloud-scale/stratus/get-object/) - Flutter SDK Documentation (/en/sdk/flutter/v2/cloud-scale/stratus/get-object/) - REST API Documentation (/en/api/code-reference/cloud-scale/stratus/get-object/#GetaSpecificObject) -------------------------------------------------------------------------------- # Check Object Availability Note: Ensure you have installed the required package to use this SDK method. Using the headObject() 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 following 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. 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 border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Parameter Name</th> <th>Data Type</th> <th>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> <br /> const options = { versionId: 'djkfhdiufy762', throwErr: false }; const headObjectRes = await bucket.headObject("sam/out/sample.txt", options); // The object path should not start with the bucket name, just the parent directory of the object console.log(headObjectRes); #### Example of Expected Response true #### Possible Errors Note: If you use the SDK with the throw_err 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 border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Error Code</th> <th>Meaning</th> </tr> </thead> <tbody> <tr> <td>404</td> <td>Not Found. Object 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 object.</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Download Object" description: "This page describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.120Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/stratus/download-object/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Stratus Help Documentation (/en/cloud-scale/help/stratus/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/stratus/download-object/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/stratus/download-object/) - Web SDK Documentation (/en/sdk/web/v4/cloud-scale/stratus/download-object/) - iOS SDK Documentation (/en/sdk/ios/v2/cloud-scale/stratus/download-object/) - Android SDK Documentation (/en/sdk/android/v2/cloud-scale/stratus/download-object/) - Flutter SDK Documentation (/en/sdk/flutter/v2/cloud-scale/stratus/download-object/) - REST API Documentation (/en/api/code-reference/cloud-scale/stratus/download-object/#DownloadObject) -------------------------------------------------------------------------------- # Download Object Note: Ensure you have installed the required package to use this SDK method. ### 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 following 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 Potion 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 Utility 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 the *Transfer Manager* utility. The *Transfer Manager* utility 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. #### Additional Import Requirement You need to import this additional module to implement the *Transfer Manager* utility. const {TransferManager} = require ('@zcatalyst/stratus')// Stratus module #### Create Transfer Manage 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 Using this SDK method you can 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 Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section. 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 following code snippet is the component instance. #### Parameters Used <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Parameter Name</th> <th>Data Type</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>A mandatory parameter. Will hold the complete name of the object.</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>activeForm</td> <td>String</td> <td>This is an optional parameter. This param will contain the time after which the URL is valid. <ul> <li>Maximum value is 7 days.</li> <li>URLs are made active as soon as they are generated by default.</li> </ul> </td> </tr> </tbody> </table> <br /> 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 of Expected Response { "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 the 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 describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.120Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/stratus/upload-object/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Stratus Help Documentation (/en/cloud-scale/help/stratus/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/stratus/upload-object/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/stratus/upload-object/) - Web SDK Documentation (/en/sdk/web/v4/cloud-scale/stratus/upload-object/) - iOS SDK Documentation (/en/sdk/ios/v2/cloud-scale/stratus/upload-object/) - Android SDK Documentation (/en/sdk/android/v2/cloud-scale/stratus/upload-object/) - Flutter SDK Documentation (/en/sdk/flutter/v2/cloud-scale/stratus/upload-object/) - REST API Documentation (/en/api/code-reference/cloud-scale/stratus/upload-object/#UploadObject) -------------------------------------------------------------------------------- # Upload Object Note: Ensure you have installed the required package to use this SDK method. 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 following 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 the putObject() SDK method in the following manner, 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 await bucket.putObject("sam/out/sample.txt", file); ### Upload Object as a String Using the putObject() SDK method in the following manner, 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 to the upload method; putObject() // Upload object as a string await bucket.putObject("sam/out/sample.txt", "Content of the file"); ### Upload Object with Options Using the putObject() SDK method in the following manner, 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"); await bucket.putObject("sam/out/sample.txt", file, options); ### Upload Object With Extract Option When you upload a zipped object using the putObject() SDK method in the following manner, 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"); await bucket.putObject("sam/out/sample.zip", file, options); ### Upload Object Using Multipart Utility 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 utility 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. You will refer to this component instance in various code snippets where you work with multipart operations being performed on objects stored in a bucket in Stratus. #### Parameters Used <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Parameter Name</th> <th>Data Type</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td>bucket</td> <td>SDK Instance</td> <td>The bucket reference used in the following code snippet is the component instance.</td> </tr> </tbody> </table> <br /> const initRes = await bucket.initiateMultipartUpload("sam/out/sample.txt"); console.log(initRes); #### Example of Expected Response { "bucket": "zcstratus123-development", "key": "sam/out/sample.txt", "upload_id": "01j7xbm4vm5750zbedxqgc4q6m", "status": "PENDING" } #### Upload Parts of the Object The following code snippet illustrates the manner in which you can 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. const partNumber = 1; const file = fs.createReadStream("filePath"); await bucket.uploadPart("sam/out/sample.txt", "uploadId", file, partNumber); #### Get Multipart Upload Summary The following example code snippet demonstrates the manner in which you can use the getMultipartUploadSummary() SDK method to obtain an operational summary of all the uploaded parts. const uploadSummaryRes = await bucket.getMultipartUploadSummary("sam/out/sample.txt", "upload_id"); console.log(uploadSummaryRes); #### Example of Expectedd 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 example code snippet demonstrates the manner in which you can terminate the multipart process once all the parts have been successfully uploaded. To complete the process, you will need to pass the uploadId to the completeMultipartUpload() method. #### Example Code Snippet Implementing Multipart Upload const fs = require('fs'); module.exports = async (req, res) => { url = req.url; switch (url) { case '/': const auth = new ZCAuth(); const authInit = await auth.init(req); const stratus = new 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 the Transfer Manager Utility #### Create Transfer Manager Instance const transferManager = new TransferManager(bucket); // create transfer manager instance ### Multipart Upload #### Create Multipart Upload Instance The following code snippet will create a multipart instance to initiate 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 Parts of the Object In the following example code snippet, you need to initialize a multipart instance, as defined in the [Create Multipart Upload Instance section](#upload-an-object-using-the-transfer-manager-utility). With this instance, you can use the uploadPart() SDK method to upload parts of the object. await multipart.uploadPart(fs.createReadStream("filePath"), partNumber); #### Upload Summary The following code snippet demonstrates the use of the getUploadSummary() SDK method to get a summary of the upload process. const summaryRes = await multipart.getUploadSummary(); console.log(summaryRes); #### Complete Upload The following code snippet demonstrates the use of the completeUpload() SDK method to complete the upload process. await multipart.completeUpload(); #### Upload Object Using Wrapper The following code snippet demonstrates the use of the putObjectAsParts() 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 Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section. Presigned URLs are secure URLs that authenticated users can share with their non-authenticated users. This URL will provide non-authenticated users with temporary authorization to access objects. The bucket reference used in the following code snippet is the component instance. #### Parameters Used <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Parameter Name</th> <th>Data Type</th> <th>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 its 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 parameter will contain the time after which the URL is valid. <ul> <li>Maximum value: 7 days</li> </ul> URLs are made active as soon as they are generated by default. </td> </tr> </tbody> </table> <br /> 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 mof Expected Response { signature: "https://sadi-development.zohostratus.com/_signed/text.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747896279887&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=3YBUX1HFSxNQzQJjFrln82AyJsEEuC5T9dsZwWxGyEE" } #### Example Code Snippet: Upload with Presigned URL 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/amelia - 426 / Documents / JavaScript - 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 describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.121Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/stratus/extract-zipped-object/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Stratus Help Documentation (/en/cloud-scale/help/stratus/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/stratus/extract-zipped-object/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/stratus/extract-zipped-object/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/stratus/extract-zipped-object/) - Web SDK Documentation (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK Documentation (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK Documentation (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK Documentation (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API Documentation (/en/api/code-reference/cloud-scale/stratus/extract-object/#ExtractZippedObject) -------------------------------------------------------------------------------- # Extract a Zipped Object Notes: * Ensure you have installed the required package to use this SDK method. * 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 border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Parameter Name</th> <th>Data Type</th> <th>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> <br /> You can use the unzipObject() SDK method to extract a zipped object in Stratus. const res = await bucket.unzipObject("sample.zip","output/"); console.log(res); #### Example of Expected 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 dependent on the size of the zip file. #### Parameters Used <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Parameter Name</th> <th>Data Type</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td>taskId</td> <td>String</td> <td>This parameter will be returned in the response of the unzipObject() SDK method. It will contain the status of the extraction process.</td> </tr> </tbody> </table> <br /> You need to use the taskId parameter, in the getUnzipStatus() SDK method, to determine the status of the extraction. const statusRes = await bucket.getUnzipStatus("sample.zip", 'taskId'); console.log(statusRes); #### Example of Expected Response { "task_id": "6963000000272049", "status": "SUCCESS" } -------------------------------------------------------------------------------- title: "Copy Object" description: "This page describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.121Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/stratus/copy-object/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Stratus Help Documentation (/en/cloud-scale/help/stratus/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/stratus/copy-objects/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/stratus/copy-objects/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/stratus/copy-objects/) - Web SDK Documentation (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK Documentation (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK Documentation (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK Documentation (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API Documentation (/en/api/code-reference/cloud-scale/stratus/copy-object/#CopyObject) -------------------------------------------------------------------------------- # Copy Object Note: Ensure you have installed the required package to use this SDK method. #### Key Terns <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Name</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>The object that is being copied.</td> </tr> <tr> <td>destination</td> <td>Will contain the new path name of the object.</td> </tr> </tbody> </table> <br /> You can use the copyObject() SDK method, to create a copy of the required object in same or different paths of the bucket. The bucket reference used in the following code snippet is the component instance. The bucket reference used in the following code snippet is the component instance. Notes: * 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: - source_object value will be 'pictures/puppy/kitten.png' - dest_object value will be 'pictures/kitten/kitten.png' const res = await bucket.copyObject('sam/out/sample.txt', 'out/sam/sample.txt'); console.log(res); #### Example of Expected Response { "copy_to": "sam/out/sample.txt", "key": "out/sam/sample.txt", "message": "Object copied successfully." } -------------------------------------------------------------------------------- title: "Rename and Move an Object" description: "This page describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.121Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/stratus/rename-move/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Stratus Help Documentation (/en/cloud-scale/help/stratus/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/stratus/rename-move-object/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/stratus/rename-move-object/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/stratus/rename-move-object/) - Web SDK Documentation (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK Documentation (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK Documentation (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK Documentation (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API Documentation (/en/api/code-reference/cloud-scale/stratus/rename-object/#RenameObject) -------------------------------------------------------------------------------- # Rename and Move Operations on an Object Note: Ensure you have installed the required package to use this SDK method. #### Parameters Used <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Parameter Name</th> <th>Data Type</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>The original name of the object that you need to rename or move.</td> </tr> <tr> <td>destination</td> <td>String</td> <td>The new name of the object, containing the complete path information.</td> </tr> </tbody> </table> <br /> Notes: * 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: - source_object value will be 'pictures/puppy/kitten.png' - dest_object value will be 'pictures/kitten/kitten.png' The renameObject() SDK method can be used for both *rename* and *move* operations. The bucket reference used in the following code snippet is the component instance. ### Rename an Object Notes: * 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 Note: You cannot perform move operations in a bucket that has Versioning enabled. const moveRes = await bucket.renameObject("sam/out/sample.txt", "out/sample.txt"); console.log(moveRes); #### Example of Expected Response { "current_key": "sam/out/sample.txt", "message": "Rename successful", "rename_to": "sam/out/update_sample.txt" } -------------------------------------------------------------------------------- title: "Delete Objects" description: "This page describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.122Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/stratus/delete-object/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Stratus Help Documentation (/en/cloud-scale/help/stratus/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/stratus/delete-objects/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - Web SDK Documentation (/en/sdk/web/v4/cloud-scale/stratus/delete-object/) - iOS SDK Documentation (/en/sdk/ios/v2/cloud-scale/stratus/delete-object/) - Android SDK Documentation (/en/sdk/android/v2/cloud-scale/stratus/delete-object/) - Flutter SDK Documentation (/en/sdk/flutter/v2/cloud-scale/stratus/delete-object/) - REST API Documentation (/en/api/code-reference/cloud-scale/stratus/delete-objects/#DeleteObject) -------------------------------------------------------------------------------- # Delete Objects Note: Ensure you have installed the required package to use this SDK method. #### Parameters Used <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Parameter Name</th> <th>Data Type</th> <th>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 its path.</td> </tr> <tr> <td>versionId</td> <td>String</td> <td>An optional parameter. If Versioning is enabled for your bucket then this parameter 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.<br /><br />The value of ttl has to be \>= 60 seconds.</td> </tr> </tbody> </table> <br /> The following SDK methods will allow you to perform various types of delete operations on objects stored in a bucket in Stratus. The bucket reference used in the following code snippet is the component instance. ### Delete a Single Object You can delete the required object by passing its complete name to the deleteObject() SDK method. await bucket.deleteObject("sam/out/sample.txt"); Note: If Versioning is enabled on the bucket and if a specific versionId is not provided, deleting the object will remove all versions of that object by default. ### Delete a Specific Version of an Object after a Specific Time You need to provide the required versionId to the deleteObject() SDK method. You also have the option to schedule the delete operation using the ttl parameter. For example, if you pass the value of ttl as **100**, the delete operation will only occur after **100 seconds**. Always ensure the value of ttl is **greater than or equal to 60 seconds**. const options = { versionId: "01hthq82gwxtfyz6d9j8eg6k2f", // delete the object with given versionId ttl: 100 // Time to live in number of seconds }; await bucket.deleteObject("sam/out/sample.txt", options); ### Delete Multiple Objects The deleteObjects() SDK method can be used to delete multiple objects stored in a bucket in Stratus. You need to pass the names of the required objects as an array to the SDK method. Notes: * If Versioning is enabled for your bucket, ensure you provide the versionId of the object that you are required to delete. * Additionally, you also have the option to schedule the delete operation using the ttl parameter. - 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 or equal to 60 seconds. const objectDel = await bucket.deleteObjects( [ { key: "sam/out/sample.txt", versionId: "01hhch20nfkx9hw9ebqy2jnz9d" } ], 100); console.log(objectDel); #### Example of Expected Response {"message": "Object Deletion successful."} ### Delete a Path in the Bucket Using the deletePath() SDK method you will be able to delete the required path and all the objects stored in it. // 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 of Expected Response { "path": "sam/out/", "message": "Path deletion scheduled" } ### Truncate Bucket Using the truncate() SDK method, you can delete every single object stored in the bucket. const truncateRes = await bucket.truncate(); console.log(truncateRes); -------------------------------------------------------------------------------- title: "Create Object Instance" description: "This page describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.122Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/stratus/create-object-instance/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Stratus Help Documentation (/en/cloud-scale/help/stratus/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/stratus/create-object-instance/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/stratus/create-object-instance/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/stratus/create-object-instance/) - Web SDK Documentation (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK Documentation (/en/sdk/ios/v2/cloud-scale/stratus/get-object/) - Android SDK Documentation (/en/sdk/android/v2/cloud-scale/stratus/get-object/) - Flutter SDK Documentation (/en/sdk/flutter/v2/cloud-scale/stratus/get-object/) - REST API Documentation (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Object Instance Note: Ensure you have installed the required package to use this SDK method. To perform object level operations, you need to create an object instance. You will refer to this component instance in various code snippets of working with Objects in Stratus. The bucket reference used in the following code snippet is the component instance. const objectIns = bucket.object("sam/out/sample.txt"); -------------------------------------------------------------------------------- title: "List Object Versions" description: "This page describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.122Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/stratus/list-object-versions/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Stratus Help Documentation (/en/cloud-scale/help/stratus/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/stratus/list-object-versions/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/stratus/list-object-versions/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/stratus/list-object-versions/) - Web SDK Documentation (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK Documentation (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK Documentation (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK Documentation (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API Documentation (/en/api/code-reference/cloud-scale/stratus/get-all-versions/#GetAllVersionsofanObject) -------------------------------------------------------------------------------- # List Object Versions Note: Ensure you have installed the required package to use this SDK method. If Versioning is enabled for your bucket, you will be able to store multiple versions of the same object. Each version of the object will be assigned a unique versionID at time time of storage. The following SDK methods will allow you list all the versions of an object either in a paginated or iterated manner. ### List All Versions of an Object Through Pagination #### Parameters Used <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Parameter Name</th> <th>Data Type</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td>nextToken</td> <td>String</td> <td>Will hold the value that determines 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> <br /> You can use the listMyPaginatedVersions() SDK method, to list all the versions of a required object in a paginated manner. The objectIns, object reference used in the following code snippet is the component instance. 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 of Expected 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 an Object Through Iteration You can use the listIterableVersions() SDK method to get all the available versions of an object stored in a bucket in Stratus in a single call. The objectIns, object reference used in the following code snippet is the component instance. const versions = objectIns.listIterableVersions(); for await( const version of versions) { console.log(version); } #### Example of Expected 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 describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.122Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/stratus/get-object-details/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Stratus Help Documentation (/en/cloud-scale/help/stratus/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/stratus/object-details/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/stratus/object-details/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/stratus/object-details/) - Web SDK Documentation (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK Documentation (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK Documentation (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK Documentation (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API Documentation (/en/api/code-reference/cloud-scale/stratus/get-all-objects/#GetAllObjects) -------------------------------------------------------------------------------- # Get Object Details Note: Ensure you have installed the required package to use this SDK method. ### Get Details of All Objects You can use the getDetails() SDK method to get the details of all the objects that stored in a bucket in Stratus. The objectIns, object reference used in the following code snippet is the component instance. Note: If Versioning is enabled for your bucket, and no versionId is provided while using this SDK method, then the SDK method will only return the latest version's object details. const objectRes = await objectIns.getDetails(); console.log(objectRes); #### Example of Expected 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" } ### Get Details of a Particular Version of the Object #### Parameters Used <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Parameter Name</th> <th>Data Type</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td>versionId</td> <td>String</td> <td>An optional parameter. Needs to be used to refer to the required version of the object.</td> </tr> </tbody> </table> <br /> If Versioning is enabled for your bucket, then you will be able to store multiple versions of the object. To get the details of a particular version of the object, you need to pass the versionId of the required object's version to the getDetails() SDK method. The objectIns, object reference used in the following code snippet is the component instance. const objectRes = await objectIns.getDetails("versionId"); console.log(objectRes); #### Example of Expected 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 Metadata" description: "This page describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.122Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/cloudscale/stratus/put-object-metadata/" service: "CloudScale" related: - Catalyst CloudScale (/en/cloud-scale/) - Stratus Help Documentation (/en/cloud-scale/help/stratus/introduction/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/stratus/put-object-meta/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/stratus/put-object-meta/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/stratus/put-object-meta/) - Web SDK Documentation (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK Documentation (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK Documentation (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK Documentation (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API Documentation (/en/api/code-reference/cloud-scale/stratus/put-object-meta/#PutObjectMetadata) -------------------------------------------------------------------------------- # Put Object Metadata Note: Ensure you have installed the required package to use this SDK method. You can use the putMeta() SDK method to add meta details for a required object stored in a bucket in Stratus. The objectIns, object reference used in the following code snippet is the component instance. 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 of Expected Response { "message": "Metadata added successfully" } #### Connectors -------------------------------------------------------------------------------- title: "JavaScript Connectors" description: "This page describes the method to perform operations using the components in SmartBrowz Services." last_updated: "2026-07-02T09:34:10.123Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/connectors/js-connector/" service: "All Services" related: - Java SDK Documentation (/en/sdk/java/v1/connectors/connectors/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/connectors/connectors/) - Python SDK Documentation (/en/sdk/python/v1/connectors/connectors/) -------------------------------------------------------------------------------- # Catalyst Connectors JavaScript SDK A **Catalyst Connector** provides a seamless connection between Catalyst and an external Zoho service established through Zoho OAuth authentication. You can use a connector in your Catalyst application if your business logic includes an external Zoho service’s API, such as a Zoho CRM or a Zoho WorkDrive API. ### Prerequisites You need to install the following package to be able to use the Connector SDK methods. npm install @zcatalyst/connector Info: Ensure that you have applied the required authentication configuration to use the SDK methods of this component. Catalyst handles the connection by storing the Access Token you generate in Zoho API console for a specific application in Catalyst Cache until its expiration. 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 at a set rate. You can also incorporate your own logic in the connector based on your requirements. Notes: * 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, 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. // Create a new connection with your connector configuration const connection = new Connection({ ConnectorName: { client_id: '{add_client_id}', // Client ID of your app client_secret: '{add_client_secret}', // Client Secret of your app auth_url: '{add_auth_url}', // OAuth authorization URL refresh_url: '{add_refresh_url}', // OAuth refresh token URL refresh_token: '{add_refresh_token}', // Refresh token obtained from OAuth flow refresh_in: '{add_refresh_in}', // Time (in secs) after which token should be refreshed expires_in: '{add_expires_in}', // Token expiry duration secret_key: 'sample' // Key used to encrypt stored tokens // Configure these OAuth parameters using the values you get // after registering your application in the Zoho API Console // and generating the authorization code. } }); // Get the connector using the connector's registered name const connector = connection.getConnector('ConnectorName'); // Fetch a valid access token const accessToken = await connector.getAccessToken(); #### Job Scheduling -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the method to perform operations using the components in SmartBrowz Services." last_updated: "2026-07-02T09:34:10.123Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/job-scheduling/overview/" service: "Job Scheduling" related: - Catalyst Job Scheduling (/en/job-scheduling/help/jobpool/introduction/) - Java SDK Documentation (/en/sdk/java/v1/job-scheduling/initialize-job-scheduling-instance/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/job-scheduling/initialize-job-scheduling-instance/) - Python SDK Documentation (/en/sdk/python/v1/job-scheduling/initialize-job-scheduling-instance/) - REST API Documentation (/en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Job Scheduling JavaScript SDK # Overview Job Scheduling is a Catalyst service that is specifically designed to automate job executions for versatile use cases. The *Job Scheduling* service provides you with greater control over task thread pools through the Job Pool component. You can automate job executions using Cron, a scheduling component. Using the **Job Scheduling JavaScript SDK**, you will be able to submit jobs to the job pools, create crons, fetch required details and so much more through code. ### Prerequisites You will need to install the following package to be able to use the Job Scheduling SDK methods. npm install @zcatalyst/job-scheduling Info: Ensure that you have applied the required authentication configuration to use the SDK methods of this component. ### Import Requirement You will need to import the following modules to use the SDK methods of Job Scheduling components. const { JobScheduling } = require('@zcatalyst/job-scheduling'); //Job Scheduling module ### List of SDK Methods <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Category</th> <th>SDK Method</th> <th>Required Scope</th> </tr> </thead> <tbody> <tr> <td>General Operations</td> <td>Get Job Scheduling Instance</td> <td>No requirement</td> </tr> <tr> <td>Job Pool Operations</td> <td> <ul> <li>Get All Job Pools</li> <li>Get Details of a Specific Job Pool</li> </ul> </td> <td>Admin</td> </tr> <tr> <td>Job Operations</td> <td> <ul> <li>Create Job</li> <li>Get Job Details</li> <li>Delete a Job</li> </ul> </td> <td>Admin</td> </tr> <tr> <td>Cron Operations</td> <td> <ul> <li>Create a One-Time Cron</li> <li>Create a Recurring Cron</li> <li>Create Cron Using Cron Expressions</li> <li>Get Details of a Particular Cron</li> <li>Get Details of All Crons</li> <li>Update Cron</li> <li>Pause Cron</li> <li>Resume Cron</li> <li>Run Cron</li> <li>Delete Cron</li> </ul> </td> <td>Admin</td> </tr> </tbody> </table> <br /> Info: Learn more about the Job Scheduling service. -------------------------------------------------------------------------------- title: "Create a Job Scheduling Instance" description: "This page describes the method to perform operations using the components in SmartBrowz Services." last_updated: "2026-07-02T09:34:10.123Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/job-scheduling/create-instance/" service: "Job Scheduling" related: - Catalyst Job Scheduling (/en/job-scheduling/help/jobpool/introduction/) - Java SDK Documentation (/en/sdk/java/v1/job-scheduling/initialize-job-scheduling-instance/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/job-scheduling/initialize-job-scheduling-instance/) - Python SDK Documentation (/en/sdk/python/v1/job-scheduling/initialize-job-scheduling-instance/) - REST API Documentation (/en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Create a Job Scheduling Instance Note: Ensure you have installed the required package to use this SDK method. You can create a jobScheduling component reference as shown below. This will not fire a server-side call. You will refer to this component instance in various code snippets while working with Job Scheduling components. // Get a Job Scheduling instance const jobScheduling = new JobScheduling(); ##### Cron -------------------------------------------------------------------------------- title: "Create a One-Time Cron" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.124Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/job-scheduling/cron/create-one-time-cron/" service: "Job Scheduling" related: - Catalyst Job Scheduling (/en/job-scheduling/) - Cron (/en/job-scheduling/help/cron/introduction/) - Java SDK Documentation (/en/sdk/java/v1/job-scheduling/cron/create-one-time-cron/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/job-scheduling/cron/create-one-time-cron/) - Python SDK Documentation (/en/sdk/python/v1/job-scheduling/cron/create-one-time-cron/) - REST API Documentation (/en/api/code-reference/job-scheduling/cron/create-cron/create-one-time-cron/#CreateaOne-TimeCron) -------------------------------------------------------------------------------- # Create a One-Time Cron Note: Ensure you have installed the required package to use this SDK method. You can configure the required cron as a JSON object and pass it to the createCron() SDK method to create your required cron. The following example snippet will detail how to create a **One-Time Cron** that will schedule the submission of a job to the job pool only once. The jobScheduling reference used in the code snippets below is the component instance created to perform these operations. 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 the proper Job Pool ID or Job Pool Name, and provide the appropriate Target Name or Target ID. #### Parameters Used You need to construct two JSON objects, one that provides the meta of the job that needs to be submitted and the other is to contain your cron's meta that will schedule the submission of the job to the job pool. The JSON attributes used in these two JSONs are provided in the following table: <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>JSON Object</th> <th>JSON Attributes</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td rowspan="5">job_meta</td> <td>job_name</td> <td>Mandatory parameter. Contains the name of the job that needs to be submitted to the job pool.</td> </tr> <tr> <td>target_type</td> <td>Mandatory parameter. Contains the type of the job. (Function | Circuit | Webhook | AppSail).</td> </tr> <tr> <td>target_name or target_id</td> <td>Mandatory parameter. Contains the name or ID of the target type. While it is mandatory to provide value for either of them, it is optional to provide values for both fields.</td> </tr> <tr> <td>jobpool_name or jobpool_id</td> <td>Mandatory parameter. Contains the name or ID of the Job Pool. While it is mandatory to provide value for either of them, it is optional to provide values for both fields.</td> </tr> <tr> <td>job_config</td> <td> <ul> <li>Optional parameter. The number of retries and the retry interval can be provided as a JSON key-value pair.</li> <li>number_of_retries: The number of retries that need to be attempted.</li> <li>retry_interval: The interval in which the retries need to occur.</li> </ul> </td> </tr> <tr> <td rowspan="6">oneTimeCron</td> <td>cron_name</td> <td>Mandatory parameter. To refer to your cron. Ensure you provide a unique name.</td> </tr> <tr> <td>description</td> <td>Optional parameter. You can provide a description for your cron.</td> </tr> <tr> <td>cron_status</td> <td>Mandatory parameter. Determines if the cron is enabled or not. Ensure it is set as 'true'.</td> </tr> <tr> <td>cron_type</td> <td>Mandatory parameter. Determines the type of Cron.</td> </tr> <tr> <td>cron_detail</td> <td>Mandatory parameter. Provide the schedule time in a UNIX timestamp format.</td> </tr> <tr> <td>job_meta</td> <td>Mandatory parameter. Pass the jobMeta JSON object as value.</td> </tr> </tbody> </table> <br /> // 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 function'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); <br /> Note: We urge you to use this SDK to exclusively configure Dynamic Crons, and use the console's UI Builder to exclusively configure Pre-defined Crons. -------------------------------------------------------------------------------- title: "Create a Recurring Cron" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.124Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/job-scheduling/cron/create-recurring-cron/" service: "Job Scheduling" related: - Catalyst Job Scheduling (/en/job-scheduling/) - Cron (/en/job-scheduling/help/cron/introduction/) - Java SDK Documentation (/en/sdk/java/v1/job-scheduling/cron/create-recurring-cron/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/job-scheduling/cron/create-recurring-cron/) - Python SDK Documentation (/en/sdk/python/v1/job-scheduling/cron/create-recurring-cron/) - REST API Documentation (/en/api/code-reference/job-scheduling/cron/create-cron/create-every-cron/#CreateanEveryCron) -------------------------------------------------------------------------------- # Create a Recurring Cron Note: Ensure you have installed the required package to use this SDK method. You need to pass the required cron configurations as a JSON object to the createCron() SDK method to create your required recurring cron. The interval of a recurring cron can range anywhere from a minute to entire calendar years. With respect to its schedule type, there are four types of recurring cron: **Every**, **Daily**, **Monthly**, and **Yearly**. The jobScheduling reference used in the code snippets below is the component instance created to perform these operations. Notes: * 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. * The following SDK is configured to submit a job every two hours, one minute, and three seconds. You can change this value as per your requirement by passing the relevant value to the cron_detail JSON key-value pair. 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. #### Parameters Used You need to construct two JSON objects, one that provides the meta of the job that needs to be submitted and the other is to contain your cron's meta that will schedule the submission of the job to the job pool. The JSON attributes used in these two JSONs are provided in the following table: <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>JSON Object</th> <th>JSON Attributes</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td rowspan="5">job_meta</td> <td>job_name</td> <td>Mandatory parameter. Contains the name of the job that needs to be submitted to the job pool.</td> </tr> <tr> <td>target_type</td> <td>Mandatory parameter. Contains the type of the job. (Function | Circuit | Webhook | AppSail).</td> </tr> <tr> <td>target_name or target_id</td> <td>Mandatory parameter. Contains the name or ID of the target type. While it is mandatory to provide value for either of them, it is optional to provide values for both fields.</td> </tr> <tr> <td>jobpool_name or jobpool_id</td> <td>Mandatory parameter. Contains the name or ID of the Job Pool. While it is mandatory to provide value for either of them, it is optional to provide values for both fields.</td> </tr> <tr> <td>job_config</td> <td> <ul> <li>Optional parameter. The number of retries and the retry interval can be provided as a JSON key-value pair.</li> <li>number_of_retries: The number of retries that need to be attempted.</li> <li>retry_interval: The interval in which the retries need to occur.</li> </ul> </td> </tr> <tr> <td rowspan="6">everyCron</td> <td>cron_name</td> <td>Mandatory parameter. To refer to your cron. Ensure you provide a unique name.</td> </tr> <tr> <td>description</td> <td>Optional parameter. You can provide a description for your cron.</td> </tr> <tr> <td>cron_status</td> <td>Mandatory parameter. Determines if the cron is enabled or not. Ensure it is set as 'true'.</td> </tr> <tr> <td>cron_type</td> <td>Mandatory parameter. Determines the type of Cron. The value will need to provided as Periodic to create recurring crons.</td> </tr> <tr> <td>cron_detail</td> <td>Mandatory parameter. Provide the following details: <ul> <li>hour: To set the hour interval of the repetition.</li> <li>minute: To set the minute interval of the repetition.</li> <li>second: To set the second interval of the repetition.</li> <li>repetition type: Ensure you set value as "every" for an Every type recurring cron.</li> </ul> </td> </tr> <tr> <td>job_meta</td> <td>Mandatory parameter. Pass the jobMeta JSON object as value.</td> </tr> </tbody> </table> <br /> // 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 function'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); Notes: * 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. * 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. The following SDK can be used to schedule a cron job that submits a task to the job pool at a fixed **daily interval**. #### Parameters Used You need to construct two JSON objects, one that provides the meta of the job that needs to be submitted and the other is to contain your cron's meta that will schedule the submission of the job to the job pool. The JSON attributes used in these two JSONs are provided in the following table: <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>JSON Object</th> <th>JSON Attributes</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td rowspan="5">job_meta</td> <td>job_name</td> <td>Mandatory parameter. Contains the name of the job that needs to be submitted to the job pool.</td> </tr> <tr> <td>target_type</td> <td>Mandatory parameter. Contains the type of the job. (Function | Circuit | Webhook | AppSail).</td> </tr> <tr> <td>target_name or target_id</td> <td>Mandatory parameter. Contains the name or ID of the target type. While it is mandatory to provide value for either of them, it is optional to provide values for both fields.</td> </tr> <tr> <td>jobpool_name or jobpool_id</td> <td>Mandatory parameter. Contains the name or ID of the Job Pool. While it is mandatory to provide value for either of them, it is optional to provide values for both fields.</td> </tr> <tr> <td>job_config</td> <td> <ul> <li>Optional parameter. The number of retries and the retry interval can be provided as a JSON key-value pair.</li> <li>number_of_retries: The number of retries that need to be attempted.</li> <li>retry_interval: The interval in which the retries need to occur.</li> </ul> </td> </tr> <tr> <td rowspan="6">dailyCron</td> <td>cron_name</td> <td>Mandatory parameter. To refer to your cron. Ensure you provide a unique name.</td> </tr> <tr> <td>description</td> <td>Optional parameter. You can provide a description for your cron.</td> </tr> <tr> <td>cron_status</td> <td>Mandatory parameter. Determines if the cron is enabled or not. Ensure it is set as 'true'.</td> </tr> <tr> <td>cron_type</td> <td>Mandatory parameter. Determines the type of Cron. The value will need to provided as Calendar to create recurring crons.</td> </tr> <tr> <td>cron_detail</td> <td>Mandatory parameter. Provide the following details: <ul> <li>hour: To set the hour interval of the repetition.</li> <li>minute: To set the minute interval of the repetition.</li> <li>second: To set the second interval of the repetition.</li> <li>repetition type: Ensure you set value as "daily" for an Daily type recurring cron.</li> </ul> </td> </tr> <tr> <td>job_meta</td> <td>Mandatory parameter. Pass the jobMeta JSON object as value.</td> </tr> </tbody> </table> <br /> // 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); Notes: * 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. * 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. 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**. #### Parameters Used You need to construct two JSON objects, one that provides the meta of the job that needs to be submitted and the other is to contain your cron's meta that will schedule the submission of the job to the job pool. The JSON attributes used in these two JSONs are provided in the following table: <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>JSON Object</th> <th>JSON Attributes</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td rowspan="5">job_meta</td> <td>job_name</td> <td>Mandatory parameter. Contains the name of the job that needs to be submitted to the job pool.</td> </tr> <tr> <td>target_type</td> <td>Mandatory parameter. Contains the type of the job. (Function | Circuit | Webhook | AppSail).</td> </tr> <tr> <td>target_name or target_id</td> <td>Mandatory parameter. Contains the name or ID of the target type. While it is mandatory to provide value for either of them, it is optional to provide values for both fields.</td> </tr> <tr> <td>jobpool_name or jobpool_id</td> <td>Mandatory parameter. Contains the name or ID of the Job Pool. While it is mandatory to provide value for either of them, it is optional to provide values for both fields.</td> </tr> <tr> <td>job_config</td> <td> <ul> <li>Optional parameter. The number of retries and the retry interval can be provided as a JSON key-value pair.</li> <li>number_of_retries: The number of retries that need to be attempted.</li> <li>retry_interval: The interval in which the retries need to occur.</li> </ul> </td> </tr> <tr> <td rowspan="6">monthlyCron</td> <td>cron_name</td> <td>Mandatory parameter. To refer to your cron. Ensure you provide a unique name.</td> </tr> <tr> <td>description</td> <td>Optional parameter. You can provide a description for your cron.</td> </tr> <tr> <td>cron_status</td> <td>Mandatory parameter. Determines if the cron is enabled or not. Ensure it is set as 'true'.</td> </tr> <tr> <td>cron_type</td> <td>Mandatory parameter. Determines the type of Cron. The value will need to provided as Calendar to create recurring crons.</td> </tr> <tr> <td>cron_detail</td> <td>Mandatory parameter. Provide the following details: <ul> <li>hour: To set the hour interval of the repetition.</li> <li>minute: To set the minute interval of the repetition.</li> <li>second: To set the second interval of the repetition.</li> <li>days: To set the days of the month in which the cron should be executed.</li> <li>repetition type: Ensure you set value as "monthly" for an Monthly type recurring cron.</li> </ul> </td> </tr> <tr> <td>job_meta</td> <td>Mandatory parameter. Pass the jobMeta JSON object as value.</td> </tr> </tbody> </table> <br /> // 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); Notes: * 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. * 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. 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 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**. #### Parameters Used You need to construct two JSON objects, one that provides the meta of the job that needs to be submitted and the other is to contain your cron's meta that will schedule the submission of the job to the job pool. The JSON attributes used in these two JSONs are provided in the following table: <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>JSON Object</th> <th>JSON Attributes</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td rowspan="5">job_meta</td> <td>job_name</td> <td>Mandatory parameter. Contains the name of the job that needs to be submitted to the job pool.</td> </tr> <tr> <td>target_type</td> <td>Mandatory parameter. Contains the type of the job. (Function | Circuit | Webhook | AppSail).</td> </tr> <tr> <td>target_name or target_id</td> <td>Mandatory parameter. Contains the name or ID of the target type. While it is mandatory to provide value for either of them, it is optional to provide values for both fields.</td> </tr> <tr> <td>jobpool_name or jobpool_id</td> <td>Mandatory parameter. Contains the name or ID of the Job Pool. While it is mandatory to provide value for either of them, it is optional to provide values for both fields.</td> </tr> <tr> <td>job_config</td> <td> <ul> <li>Optional parameter. The number of retries and the retry interval can be provided as a JSON key-value pair.</li> <li>number_of_retries: The number of retries that need to be attempted.</li> <li>retry_interval: The interval in which the retries need to occur.</li> </ul> </td> </tr> <tr> <td rowspan="6">yearlyCron</td> <td>cron_name</td> <td>Mandatory parameter. To refer to your cron. Ensure you provide a unique name.</td> </tr> <tr> <td>description</td> <td>Optional parameter. You can provide a description for your cron.</td> </tr> <tr> <td>cron_status</td> <td>Mandatory parameter. Determines if the cron is enabled or not. Ensure it is set as 'true'.</td> </tr> <tr> <td>cron_type</td> <td>Mandatory parameter. Determines the type of Cron. The value will need to provided as Calendar to create recurring crons.</td> </tr> <tr> <td>cron_detail</td> <td>Mandatory parameter. Provide the following details: <ul> <li>hour: To set the hour interval of the repetition.</li> <li>minute: To set the minute interval of the repetition.</li> <li>second: To set the second interval of the repetition.</li> <li>days: To set the days of the month in which the cron should be executed.</li> <li>months: To set the months of the year in which the cron should be executed.</li> <li>repetition type: Ensure you set value as "yearly" for a Yearly type recurring cron.</li> </ul> </td> </tr> <tr> <td>job_meta</td> <td>Mandatory parameter. Pass the jobMeta JSON object as value.</td> </tr> </tbody> </table> <br /> // 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 function'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 exclusively configure Dynamic Crons, and use the console's UI Builder to exclusively configure Pre-defined Crons. -------------------------------------------------------------------------------- title: "Create a Cron Using Cron Expressions" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.125Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/job-scheduling/cron/create-cron-expressions/" service: "Job Scheduling" related: - Catalyst Job Scheduling (/en/job-scheduling/) - Cron (/en/job-scheduling/help/cron/introduction/) - Cron Expressions (/en/job-scheduling/help/cron/key-concepts/#cron-expressions) - Java SDK Documentation (/en/sdk/java/v1/job-scheduling/cron/create-cron-cron-expressions/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/job-scheduling/cron/create-cron-cron-expressions/) - Python SDK Documentation (/en/sdk/python/v1/job-scheduling/cron/create-cron-cron-expressions/) - REST API Documentation (/en/api/code-reference/job-scheduling/cron/create-cron/create-cron-cron-exp/#CreateaCronUsingCronExpressions) -------------------------------------------------------------------------------- # Create a Cron Using Cron Expressions Note: Ensure you have installed the required package to use this SDK method. The example code snippet in this section will detail the manner you can use *Cron Expressions* to configure the schedule of your cron. Once you've configured the cron, you can pass it to the createCron() SDK method to create the required cron. The jobScheduling reference used in the code snippets below is the component instance created to perform these operations. Notes: * Learn more about Cron Expressions * It is advised you generate your cron expression using the Builder in the console and then copy the expression for your use case. This will ensure you avoid any unintentional errors. * 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. #### Parameters Used You need to construct two JSON objects, one that provides the meta of the job that needs to be submitted and the other is to contain your cron's meta that will schedule the submission of the job to the job pool. The JSON attributes used in these two JSONs are provided in the following table: <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>JSON Object</th> <th>JSON Attributes</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td rowspan="5">job_meta</td> <td>job_name</td> <td>Mandatory parameter. Contains the name of the job that needs to be submitted to the job pool.</td> </tr> <tr> <td>target_type</td> <td>Mandatory parameter. Contains the type of the job. (Function | Circuit | Webhook | AppSail).</td> </tr> <tr> <td>target_name or target_id</td> <td>Mandatory parameter. Contains the name or ID of the target type. While it is mandatory to provide value for either of them, it is optional to provide values for both fields.</td> </tr> <tr> <td>jobpool_name or jobpool_id</td> <td>Mandatory parameter. Contains the name or ID of the Job Pool. While it is mandatory to provide value for either of them, it is optional to provide values for both fields.</td> </tr> <tr> <td>job_config</td> <td> <ul> <li>Optional parameter. The number of retries and the retry interval can be provided as a JSON key-value pair.</li> <li>number_of_retries: The number of retries that need to be attempted.</li> <li>retry_interval: The interval in which the retries need to occur.</li> </ul> </td> </tr> <tr> <td rowspan="6">expressionCron</td> <td>cron_name</td> <td>Mandatory parameter. To refer to your cron. Ensure you provide a unique name.</td> </tr> <tr> <td>description</td> <td>Optional parameter. You can provide a description for your cron.</td> </tr> <tr> <td>cron_status</td> <td>Mandatory parameter. Determines if the cron is enabled or not. Ensure it is set as 'true'.</td> </tr> <tr> <td>cron_type</td> <td>Mandatory parameter. Determines the type of Cron. The value will need to provided as CronExpression to create crons using Cron Expressions.</td> </tr> <tr> <td>cron_detail</td> <td>Mandatory parameter. The required details will be provided using cron expressions.</td> </tr> <tr> <td>job_meta</td> <td>Mandatory parameter. Pass the jobMeta JSON object as value.</td> </tr> </tbody> </table> <br /> // 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 function'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 exclusively configure Dynamic Crons, and use the console's UI Builder to exclusively configure Pre-defined Crons. -------------------------------------------------------------------------------- title: "Get Details of a Particular Cron" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.126Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/job-scheduling/cron/get-cron-details/" service: "Job Scheduling" related: - Catalyst Job Scheduling (/en/job-scheduling/) - Cron (/en/job-scheduling/help/cron/introduction/) - Java SDK Documentation (/en/sdk/java/v1/job-scheduling/cron/get-cron-details/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/job-scheduling/cron/get-cron-details/) - Python SDK Documentation (/en/sdk/python/v1/job-scheduling/cron/get-cron-details/) - REST API Documentation (/en/api/code-reference/job-scheduling/cron/get-cron/#GetCronByIdentifier) -------------------------------------------------------------------------------- # Get Details of a Particular Cron Note: Ensure you have installed the required package to use this SDK method. You can pass the name or the Cron ID of the required Pre-Defined or Dynamic Cron to the getCron() SDK method to get details about the cron. The jobScheduling reference used in the code snippets below is the component instance created to perform these operations. 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 method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.126Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/job-scheduling/cron/get-all-cron/" service: "Job Scheduling" related: - Catalyst Job Scheduling (/en/job-scheduling/) - Cron (/en/job-scheduling/help/cron/introduction/) - Java SDK Documentation (/en/sdk/java/v1/job-scheduling/cron/get-all-cron-details/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/job-scheduling/cron/get-all-cron-details/) - Python SDK Documentation (/en/sdk/python/v1/job-scheduling/cron/get-all-cron-details/) - REST API Documentation (/en/api/code-reference/job-scheduling/cron/get-all-cron/#GetAllCrons) -------------------------------------------------------------------------------- # Get Details of All Crons Note: Ensure you have installed the required package to use this SDK method. You can use the getAllCron() SDK method to get the details of all Pre-defined Crons. The jobScheduling reference used in the code snippets below is the component instance created to perform these operations. 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 method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.126Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/job-scheduling/cron/update-cron/" service: "Job Scheduling" related: - Catalyst Job Scheduling (/en/job-scheduling/) - Cron (/en/job-scheduling/help/cron/introduction/) - Java SDK Documentation (/en/sdk/java/v1/job-scheduling/cron/update-cron/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/job-scheduling/cron/update-cron/) - Python SDK Documentation (/en/sdk/python/v1/job-scheduling/cron/update-cron/) - REST API Documentation (/en/api/code-reference/job-scheduling/cron/update-cron/update-one-time-cron/#UpdateaOne-TimeCron) -------------------------------------------------------------------------------- # Update Cron Note: Ensure you have installed the required package to use this SDK method. You can use the updateCron() SDK method to update the name, description, and target of a Pre-defined or Dynamic cron. You can select your required cron by passing the cron ID to the getCron() method, and update the details using the updateCron() method. The jobScheduling reference used in the code snippets below is the component instance created to perform these operations. 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 method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.126Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/job-scheduling/cron/pause-cron/" service: "Job Scheduling" related: - Catalyst Job Scheduling (/en/job-scheduling/) - Cron (/en/job-scheduling/help/cron/introduction/) - Java SDK Documentation (/en/sdk/java/v1/job-scheduling/cron/pause-cron/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/job-scheduling/cron/pause-cron/) - Python SDK Documentation (/en/sdk/python/v1/job-scheduling/cron/pause-cron/) - REST API Documentation (/en/api/code-reference/job-scheduling/cron/get-cron/#GetCronByIdentifier) -------------------------------------------------------------------------------- # Pause Cron Note: Ensure you have installed the required package to use this SDK method. You can pass the cron ID or name of the Pre-defined or Dynamic cron to the pauseCron() SDK method to temporarily halt a cron from submitting a job to the job pool. The jobScheduling reference used in the code snippets below is the component instance created to perform these operations. 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 method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.126Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/job-scheduling/cron/resume-cron/" service: "Job Scheduling" related: - Catalyst Job Scheduling (/en/job-scheduling/) - Cron (/en/job-scheduling/help/cron/introduction/) - Java SDK Documentation (/en/sdk/java/v1/job-scheduling/cron/resume-cron/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/job-scheduling/cron/resume-cron/) - Python SDK Documentation (/en/sdk/python/v1/job-scheduling/cron/resume-cron/) - REST API Documentation (/en/api/code-reference/job-scheduling/cron/get-cron/#GetCronByIdentifier) -------------------------------------------------------------------------------- # Resume Cron Note: Ensure you have installed the required package to use this SDK method. You can pass a previously paused Pre-defined or Dynamic cron's cron ID or name to the resumeCron() SDK method to resume the cron's schedule and continue submitting a job to the job pool. The jobScheduling reference used in the code snippets below is the component instance created to perform these operations. 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 method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.126Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/job-scheduling/cron/run-cron/" service: "Job Scheduling" related: - Catalyst Job Scheduling (/en/job-scheduling/) - Cron (/en/job-scheduling/help/cron/introduction/) - Java SDK Documentation (/en/sdk/java/v1/job-scheduling/cron/run-cron/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/job-scheduling/cron/run-cron/) - Python SDK Documentation (/en/sdk/python/v1/job-scheduling/cron/run-cron/) - REST API Documentation (/en/api/code-reference/job-scheduling/cron/get-cron/#GetCronByIdentifier) -------------------------------------------------------------------------------- # Run Cron Note: Ensure you have installed the required package to use this SDK method. You can pass a Pre-defined or Dynamic cron's cron ID or name to the runCron() SDK method to instantly execute it. The executed cron will instantly submit a job to the job pool. The jobScheduling reference used in the code snippets below is the component instance created to perform these operations. const jobA = await jobScheduling.CRON.runCron('test_cron'); // run cron with cron name const jobB = await jobScheduling.CRON.runCron('1234567890'); // run cron with cron ID -------------------------------------------------------------------------------- title: "Delete Cron" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.126Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/job-scheduling/cron/delete-cron/" service: "Job Scheduling" related: - Catalyst Job Scheduling (/en/job-scheduling/) - Cron (/en/job-scheduling/help/cron/introduction/) - Java SDK Documentation (/en/sdk/java/v1/job-scheduling/cron/delete-cron/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/job-scheduling/cron/delete-cron/) - Python SDK Documentation (/en/sdk/python/v1/job-scheduling/cron/delete-cron/) - REST API Documentation (/en/api/code-reference/job-scheduling/cron/delete-cron/#DeleteCron) -------------------------------------------------------------------------------- # Delete Cron Note: Ensure you have installed the required package to use this SDK method. You can pass a Pre-defined or Dynamic cron's cron ID or name to the deleteCron() SDK method to delete it. The jobScheduling reference used in the code snippets below is the component instance created to perform these operations. const deletedCronWithName = await jobScheduling.CRON.deleteCron('test_cron'); // delete cron with name const deletedCronWithId = await jobScheduling.CRON.deleteCron('1234567890'); // delete cron with ID ##### Job -------------------------------------------------------------------------------- title: "Create a Job" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.127Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/job-scheduling/job/create-job/" service: "Job Scheduling" related: - Catalyst Job Scheduling (/en/job-scheduling/) - Jobs (/en/job-scheduling/help/job/introduction/) - Java SDK Documentation (/en/sdk/java/v1/job-scheduling/jobs/create-job/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/job-scheduling/jobs/create-job/) - Python SDK Documentation (/en/sdk/python/v1/job-scheduling/jobs/create-job/) - REST API Documentation (/en/api/code-reference/job-scheduling/job/submit-job/submit-webhook-job/#SubmitWebhookJobByID) -------------------------------------------------------------------------------- # Create a Job Note: Ensure you have installed the required package to use this SDK method. Using the submitJob() SDK method you will be able to create and submit a job to the job pool. You can use this method to create and submit a job to trigger a Job Function, Circuit, AppSail service, or a Webhook (any third-party URL). The required Job Pool will be referred to using its name. The jobScheduling reference used in the code snippets below is the component instance created to perform these operations. #### Parameters Used The details of the Job that needs to be created and submitted to the *Function Job Pool* to trigger a Job Function will be passed as a JSON object to the submitJob() SDK method. The following table defines the details that need to be provided in the JSON object. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>JSON Attributes</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td>job_name</td> <td>Mandatory parameter. The name to refer to your job.</td> </tr> <tr> <td>jobpool_name</td> <td>Mandatory parameter. The name of the job pool you are submitting your job to.</td> </tr> <tr> <td>target_type</td> <td>Mandatory parameter. Set the value as Function to submit a job to the Function Job Pool to trigger a Job Function.</td> </tr> <tr> <td>target_name or target_id</td> <td>You need to provide either the Name or the ID of the job function that needs to triggered. However, providing both is optional.</td> </tr> <tr> <td>params</td> <td>Optional parameter. These are params that you pass to the target function. The required parameters need to be provided as key-value pairs in a JSON.</td> </tr> <tr> <td>job_config</td> <td> <ul> <li>Optional parameter. The number of retries and the retry interval can be provided as a JSON key-value pair.</li> <li>number_of_retries: The number of retries that need to be attempted.</li> <li>retry_interval: The interval in which the retries need to occur.</li> </ul> </td> </tr> </tbody> </table> <br /> // 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 function'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) }); #### Parameters Used The details of the Job that needs to be created and submitted to the *Circuit Job Pool* to trigger a Circuit will be passed as a JSON object to the submitJob() SDK method. The following table defines the details that need to be provided in the JSON object. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>JSON Attributes</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td>job_name</td> <td>Mandatory parameter. The name to refer to your job.</td> </tr> <tr> <td>jobpool_name</td> <td>Mandatory parameter. The name of the job pool you are submitting your job to.</td> </tr> <tr> <td>target_type</td> <td>Mandatory parameter. Set the value as Circuit to submit a job to the Circuit Job Pool to trigger a Circuit.</td> </tr> <tr> <td>target_name or target_id</td> <td>You need to provide either the Name or the ID of the Circuit that needs to triggered. However, providing both is optional.</td> </tr> <tr> <td>test_cases</td> <td>Mandatory parameter. You need to provide the test cases as a JSON key-value pair.</td> </tr> <tr> <td>job_config</td> <td> <ul> <li>Optional parameter. The number of retries and the retry interval can be provided as a JSON key-value pair.</li> <li>number_of_retries: The number of retries that need to be attempted.</li> <li>retry_interval: The interval in which the retries need to occur.</li> </ul> </td> </tr> </tbody> </table> <br /> // 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) }); #### Parameters Used The details of the Job that needs to be created and submitted to the *AppSail Job Pool* to trigger an AppSail service will be passed as a JSON object to the submitJob() SDK method. The following table defines the details that need to be provided in the JSON object. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>JSON Attributes</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td>job_name</td> <td>Mandatory parameter. The name to refer to your job.</td> </tr> <tr> <td>jobpool_name</td> <td>Mandatory parameter. The name of the job pool you are submitting your job to.</td> </tr> <tr> <td>target_type</td> <td>Mandatory parameter. Set the value as AppSail to submit a job to the AppSail Job Pool to trigger an AppSail service.</td> </tr> <tr> <td>target_name or target_id</td> <td>You need to provide either the Name or the ID of the AppSail that needs to triggered. However, providing both is optional.</td> </tr> <tr> <td>request_method</td> <td>Mandatory parameter. Provide the AppSail request method.</td> </tr> <tr> <td>url</td> <td>Mandatory parameter. Provide the AppSail endpoint.</td> </tr> <tr> <td>params</td> <td>Optional parameter. You can provide query params as JSON key-value pairs.</td> </tr> <tr> <td>headers</td> <td>Optional parameter. You can provide headers as JSON key-value pairs.</td> </tr> <tr> <td>request_body</td> <td>Optional parameter. Provide the request body.</td> </tr> <tr> <td>job_config</td> <td> <ul> <li>Optional parameter. The number of retries and the retry interval can be provided as a JSON key-value pair.</li> <li>number_of_retries: The number of retries that need to be attempted.</li> <li>retry_interval: The interval in which the retries need to occur.</li> </ul> </td> </tr> </tbody> </table> <br /> // 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) }); #### Parameters Used The details of the Job that needs to be created and submitted to the *Webhook Job Pool* to trigger any URL will be passed as a JSON object to the submitJob() SDK method. The following table defines the details that need to be provided in the JSON object. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>JSON Attributes</th> <th>Definition</th> </tr> </thead> <tbody> <tr> <td>job_name</td> <td>Mandatory parameter. The name to refer to your job.</td> </tr> <tr> <td>jobpool_name</td> <td>Mandatory parameter. The name of the job pool you are submitting your job to.</td> </tr> <tr> <td>target_type</td> <td>Mandatory parameter. Set the value as Webhook to submit a job to the Webhook Job Pool to trigger the required URL.</td> </tr> <tr> <td>request_method</td> <td>Mandatory parameter. Provide the required request method.</td> </tr> <tr> <td>url</td> <td>Mandatory parameter. Provide the webhook's request URL.</td> </tr> <tr> <td>params</td> <td>Optional parameter. You can provide query params as JSON key-value pairs.</td> </tr> <tr> <td>headers</td> <td>Optional parameter. You can provide headers as JSON key-value pairs.</td> </tr> <tr> <td>request_body</td> <td>Optional parameter. Provide the webhook's request body.</td> </tr> <tr> <td>job_config</td> <td> <ul> <li>Optional parameter. The number of retries and the retry interval can be provided as a JSON key-value pair.</li> <li>number_of_retries: The number of retries that need to be attempted.</li> <li>retry_interval: The interval in which the retries need to occur.</li> </ul> </td> </tr> </tbody> </table> <br /> // 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) }); -------------------------------------------------------------------------------- title: "Get Details of a Job" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.127Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/job-scheduling/job/get-job-details/" service: "Job Scheduling" related: - Catalyst Job Scheduling (/en/job-scheduling/) - Jobs (/en/job-scheduling/help/job/introduction/) - Java SDK Documentation (/en/sdk/java/v1/job-scheduling/jobs/get-job/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/job-scheduling/jobs/get-job/) - Python SDK Documentation (/en/sdk/python/v1/job-scheduling/jobs/get-job/) - REST API Documentation (/en/api/code-reference/job-scheduling/job/get-job/#GetJobByID) -------------------------------------------------------------------------------- # Get Details of a Job Note: Ensure you have installed the required package to use this SDK method. Pass the required job's Job ID to the getJob() SDK method to get details about a job that has been submitted to a job pool. The jobScheduling reference used in the code snippets below is the component instance created to perform these operations. const job = await jobScheduling.JOB.getJob('1234567890'); // get job details with job ID -------------------------------------------------------------------------------- title: "Delete Job" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.127Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/job-scheduling/job/delete-job/" service: "Job Scheduling" related: - Catalyst Job Scheduling (/en/job-scheduling/) - Jobs (/en/job-scheduling/help/job/introduction/) - Java SDK Documentation (/en/sdk/java/v1/job-scheduling/jobs/delete-job/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/job-scheduling/jobs/delete-job/) - Python SDK Documentation (/en/sdk/python/v1/job-scheduling/jobs/delete-job/) - REST API Documentation (/en/api/code-reference/job-scheduling/job/delete-job/#DeleteJobByID) -------------------------------------------------------------------------------- # Delete Job Note: Ensure you have installed the required package to use this SDK method. Pass the required job's Job ID to the deleteJob() SDK method, to delete a job that has been submitted to the Job Pool. The jobScheduling reference used in the code snippets below is the component instance created to perform these operations. const deletedJob = await jobScheduling.JOB.deleteJob('1234567890'); // delete job with job ID ##### Job Pool -------------------------------------------------------------------------------- title: "Get Details of all Job Pools" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.127Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/job-scheduling/jobpool/get-all-jobpool/" service: "Job Scheduling" related: - Catalyst Job Scheduling (/en/job-scheduling/help/jobpool/introduction/) - Catalyst Job Pool (/en/job-scheduling/help/jobpool/introduction/) - Java SDK Documentation (/en/sdk/java/v1/job-scheduling/initialize-job-scheduling-instance/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/job-scheduling/initialize-job-scheduling-instance/) - Python SDK Documentation (/en/sdk/python/v1/job-scheduling/initialize-job-scheduling-instance/) - REST API Documentation (/en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Get Details of all Job Pools Note: Ensure you have installed the required package to use this SDK method. Using the getAllJobpool() SDK method, you can get the details of the job pools present in your project. The jobScheduling reference used in the code snippets below is the component instance created to perform these operations. // get details of all the Job Pools const allJobpools = await jobScheduling.getAllJobpool(); -------------------------------------------------------------------------------- title: "Get Details of a Specific Job Pool" description: "This page describes the method to perform operations in the DataStore component." last_updated: "2026-07-02T09:34:10.128Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/job-scheduling/jobpool/get-jobpool/" service: "Job Scheduling" related: - Catalyst Job Scheduling (/en/job-scheduling/help/jobpool/introduction/) - Catalyst Job Pool (/en/job-scheduling/help/jobpool/introduction/) - Java SDK Documentation (/en/sdk/java/v1/job-scheduling/jobpool/get-job-pool/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/job-scheduling/jobpool/get-job-pool/) - Python SDK Documentation (/en/sdk/python/v1/job-scheduling/jobpool/get-job-pool/) - REST API Documentation (/en/api/code-reference/job-scheduling/jobpool/get-jobpool/#GetJobPoolbyIdentifier) -------------------------------------------------------------------------------- # Get Details of a Specific Job Pool Note: Ensure you have installed the required package to use this SDK method. Pass the Job Pools ID or name of the required Job Pool to the getJobpool() SDK method to get its details. The jobScheduling reference used in the code snippets below is the component instance created to perform these operations. const jobpoolWithName = await jobScheduling.getJobpool('test'); // Get job pool by name const jobpoolWithId = await jobScheduling.getJobpool('123456789'); // Get job pool by ID #### Pipelines -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the method to perform operations using the components in Pipelines services." last_updated: "2026-07-02T09:34:10.128Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/pipelines/overview/" service: "Pipelines" related: - Catalyst Pipelines (/en/pipelines/help/pipelines/introduction/) - Java SDK Documentation (/en/sdk/java/v1/pipelines/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/pipelines/) - Python SDK Documentation (/en/sdk/python/v1/pipelines/) - REST API Documentation (/en/api/code-reference/smartbrowz/browser-grid/list-all-grids/#ListallBrowserGrids) -------------------------------------------------------------------------------- # Pipelines JavaScript SDK # Overview Pipelines is a Catalyst service, that allows you to implement a CI/CD approach. This enables the automation of building, testing, and deployment of web and mobile applications to preferred environments. ### Prerequisites You will need to install the following package to be able to use the Pipelines SDK methods. npm install @zcatalyst/pipelines Info: Ensure that you have applied the required authentication configuration to use the SDK methods of this component. ### Import Requirement You will need to import the following modules to use the SDK methods of Pipelines components. const { Pipelines } = require('@zcatalyst/pipelines');//Pipelines module ### List of SDK Methods <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Category</th> <th>SDK Method</th> <th>Required Scope</th> </tr> </thead> <tbody> <tr> <td>General Operations</td> <td>Get Pipelines Instance</td> <td>No requirement</td> </tr> <tr> <td>Pipelines Operations</td> <td> <ul> <li>Get Details of a Pipeline</li> <li>Execute Pipeline</li> </ul> </td> <td>Admin</td> </tr> </tbody> </table> <br /> Info: Learn more about the Pipelines service. -------------------------------------------------------------------------------- title: "Create Pipelines Instance" description: "This page describes the method to perform operations using the components in the Pipelines Services." last_updated: "2026-07-02T09:34:10.128Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/pipelines/create-instance/" service: "Pipelines" related: - Catalyst Pipelines (/en/pipelines/help/pipelines/introduction/) - Java SDK Documentation (/en/sdk/java/v1/pipelines/get-pipeline-instance/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/pipelines/get-pipeline-instance/) - Python SDK Documentation (/en/sdk/python/v1/pipelines/get-pipeline-instance/) - REST API Documentation (/en/api/code-reference/pipelines/get-pipeline-details/#GetPipelineDetails) -------------------------------------------------------------------------------- # Create Pipelines Instance Note: Ensure you have installed the required package to use this SDK method. You can get the pipelines component reference as shown below. This will not fire a server-side call. You will refer to this component instance in various code snippets of working with Pipelines. const pipelines = new Pipelines(); //Get a Pipelines instance -------------------------------------------------------------------------------- title: "Get Details of a Pipeline" description: "This page describes the method to perform operations using the components in SmartBrowz Services." last_updated: "2026-07-02T09:34:10.128Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/pipelines/get-pipeline-details/" service: "Pipelines" related: - Catalyst Pipelines (/en/pipelines/help/pipelines/introduction/) - Java SDK Documentation (/en/sdk/java/v1/pipelines/get-pipeline-details/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/pipelines/get-pipeline-details/) - Python SDK Documentation (/en/sdk/python/v1/pipelines/get-pipeline-details/) - REST API Documentation (/en/api/code-reference/pipelines/get-pipeline-details/#GetPipelineDetails) -------------------------------------------------------------------------------- # Get Details of a Pipeline Note: Ensure you have installed the required package to use this SDK method. You can fetch the details of a Pipeline by passing the pipeline ID to the getPipelineDetails() SDK method. The pipelines reference used in the code snippets below is the component instance created to perform these operations. // get the pipeline details const pipeline_details = pipelines.getPipelineDetails("16965000000019146"); #### Example of Expected Reponse 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. { "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 perform operations using the components in SmartBrowz Services." last_updated: "2026-07-02T09:34:10.129Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/pipelines/execute-pipeline/" service: "Pipelines" related: - Catalyst Pipelines (/en/pipelines/help/pipelines/introduction/) - Java SDK Documentation (/en/sdk/java/v1/pipelines/execute-pipeline/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/pipelines/execute-pipeline/) - Python SDK Documentation (/en/sdk/python/v1/pipelines/execute-pipeline/) - REST API Documentation (/en/api/code-reference/pipelines/execute-pipeline/#ExecutePipeline) -------------------------------------------------------------------------------- # Execute Pipeline Note: Ensure you have installed the required package to use this SDK method. You can initiate a Catalyst pipeline run by passing the pipeline ID and the branch name to the runPipeline() SDK 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 reference used in the code snippets below is the component instance created to perform these operations. // run the pipeline const execution_details = pipelines.runPipeline("PIPELINE_ID", 'BRANCH_NAME',{"EVENT": "push", "URL":"https://www.google.com"}); // replace the params with your pipeline id, branch, event and url #### Example of Expected Reponse { "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: "Overview" description: "This page describes the method to perform operations using the components in SmartBrowz Services." last_updated: "2026-07-02T09:34:10.129Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/quickml/overview/" service: "QuickML" related: - Catalyst QuickML (/en/quickml/) - Java SDK Documentation (/en/sdk/java/v1/quickml/execute-quickml-endpoints/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/quickml/execute-quickml-endpoints/) - Python SDK Documentation (/en/sdk/python/v1/pipelines/get-pipeline-instance/) - REST API Documentation (/en/api/code-reference/pipelines/get-pipeline-details/#GetPipelineDetails) -------------------------------------------------------------------------------- # QuickML JavaScript SDK # Overview 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. ### Prerequisites You will need to install the following package to be able to use the QuickML SDK methods. npm install @zcatalyst/quickml Info: Ensure that you have applied the required authentication configuration to use the SDK methods of this component. ### Import Requirement You will need to import the following module to use the QuickML SDK methods. const {QuickML} = require('@zcatalyst/quickml');//QuickML module ### List of SDK Methods <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Category</th> <th>SDK Method</th> <th>Required Scope</th> </tr> </thead> <tbody> <tr> <td>General Operations</td> <td>Get QuickML Instance</td> <td>No requirement</td> </tr> <tr> <td>QuickML Operations</td> <td>Execute QuickML Endpoint</td> <td>Admin</td> </tr> </tbody> </table> <br /> Info: Learn more about the QuickML service. -------------------------------------------------------------------------------- title: "Create QuickML Instance" description: "This page describes the method to perform operations using the components in SmartBrowz Services." last_updated: "2026-07-02T09:34:10.129Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/quickml/get-instance/" service: "QuickML" related: - Catalyst QuickML (/en/quickml/) - Java SDK Documentation (/en/sdk/java/v1/quickml/execute-quickml-endpoints/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/quickml/execute-quickml-endpoints/) - Python SDK Documentation (/en/sdk/python/v1/pipelines/get-pipeline-instance/) - REST API Documentation (/en/api/code-reference/pipelines/get-pipeline-details/#GetPipelineDetails) -------------------------------------------------------------------------------- # Create QuickML Instance Note: Ensure you have installed the required package to use this SDK method. You can get the quickML component reference as shown below. This will not fire a server-side call. You will refer to this component instance in various code snippets of working with QuickML. const quickML = new QuickML(); -------------------------------------------------------------------------------- title: "Execute QuickML Endpoint" description: "This page describes the method to perform operations using the components in SmartBrowz Services." last_updated: "2026-07-02T09:34:10.129Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/quickml/execute-endpoint/" service: "QuickML" related: - Catalyst QuickML (/en/quickml/) - Java SDK Documentation (/en/sdk/java/v1/quickml/execute-quickml-endpoints/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/quickml/execute-quickml-endpoints/) - Python SDK Documentation (/en/sdk/python/v1/pipelines/execute-pipeline/) - REST API Documentation (/en/api/code-reference/pipelines/execute-pipeline/#ExecutePipeline) -------------------------------------------------------------------------------- # Execute QuickML Endpoint Notes: * Ensure you have installed the required package to use this SDK method. * 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 use this SDK method. * QuickML is currently not available to Catalyst users accessing from the JP, SA or CA data centres. You can use the predict() SDK method to execute your required QuickMl endpoint through code. You can pass input data to a published QuickML endpoint, and predict the outcome based on the ML model’s processing. The input data needs to be passed as key-value pairs. The endpoint key and the input data are passed to the predict() method for execution. The endpoint_key mentioned in the example code snippet is the unique ID of the endpoint published for the ML model configured in your project. The quickML reference used in the code snippets below is the component instance created to perform these operations. // input data const input_data = { // Enter column name and value as per your dataset "column_name1": "value1", "column_name2": "value2", "column_name3": "value3" } // execute predict method const result = await quickML.predict("{endpoint_key}", input_data); // Replace {endpoint_key} with the endpoint key copied from the catalyst console #### Example of Expected Response The output returns the prediction of the values of the target column that is defined while creating the ML pipeline. { "status": "success", "result": ["results....."] } #### Serverless ##### Circuits -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.129Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/serverless/circuits/overview/" service: "Serverless" related: - Catalyst Serverless (/en/serverless/) - Circuits Help (/en/serverless/help/circuits/introduction/) - Basic IO Help (/en/serverless/help/functions/basic-io/) - Java SDK (/en/sdk/java/v1/serverless/circuits/execute-circuit/) - NodeJS SDK (/en/sdk/nodejs/v2/serverless/circuits/get-a-component-instance/) - Python SDK (/en/sdk/python/v1/serverless/circuits/get-a-component-instance/) - REST APIs (/en/api/code-reference/serverless/circuits/execute-circuit/#ExecuteCircuit) -------------------------------------------------------------------------------- # Circuits JavaScript SDK # Overview Circuits is a Catalyst Serverless component, that enables you to orchestrate tasks and automate workflows in Catalyst. A circuit is essentially a JSON file that helps you systematically define and organize a sequence of tasks to be carried out automatically. You can code your business logic in Basic IO functions, and orchestrate their executions in simultaneously or concurrently. The **Circuits JavaScript SDK** package enables you to execute the required Circuit through code. Notes: * Circuits is currently not available to Catalyst users accessing from the EU, AU, IN, JP, SA or CA data centers. * You will not be able to execute Job, Event, or Advanced I/O functions in a Catalyst circuit. This is because Catalyst supports the input and output of a circuit in the JSON format, that is supported by the Basic I/O functions alone. ### Prerequisites You will need to install the following package to be able to use the Circuits SDK methods. npm install @zcatalyst/circuits Info: Ensure that you have applied the required authentication configuration to use the SDK methods of this component. ### Import Requirement You will need to import the following modules to use the Circuits SDK methods. const { Circuits } = require('@zcatalyst/circuits'); ### List of SDK Methods The following table contains the list of SDK methods that can be used to perform operations with the Circuits component through code. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Category</th> <th>SDK Method</th> <th>Required Scope</th> </tr> </thead> <tbody> <tr> <td>General Operations</td> <td>Get Circuit Instance</td> <td>No requirement</td> </tr> <tr> <td>Circuit Operations</td> <td>Execute Circuits</td> <td>Admin</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Get Circuit Instance" description: "This page describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.129Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/serverless/circuits/get-circuit-instance/" service: "Serverless" related: - Catalyst Serverless (/en/serverless/) - Circuits Help (/en/serverless/help/circuits/introduction/) - Java SDK (/en/sdk/java/v1/serverless/circuits/execute-circuit/) - NodeJS SDK (/en/sdk/nodejs/v2/serverless/circuits/get-a-component-instance/) - Python SDK (/en/sdk/python/v1/serverless/circuits/get-a-component-instance/) - REST APIs (/en/api/code-reference/serverless/circuits/execute-circuit/#ExecuteCircuit) -------------------------------------------------------------------------------- # Get Circuit Instance Note: Ensure you have installed the required package to use this SDK method. You can get the circuit component reference 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 Circuits component. Note: Circuits is currently not available to Catalyst users accessing from the EU, AU, IN, JP, SA, or CA data centers. // Get a instance for Circuit const circuit = new Circuits(); -------------------------------------------------------------------------------- title: "Execute a Circuit" description: "This page describes the method to execute circuits in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.129Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/serverless/circuits/execute-circuit/" service: "Serverless" related: - Catalyst Serverless (/en/serverless/) - Circuits Help (/en/serverless/help/circuits/introduction/) - Java SDK (/en/sdk/java/v1/serverless/circuits/execute-circuit/) - NodeJS SDK (/en/sdk/nodejs/v2/serverless/circuits/get-a-component-instance/) - Python SDK (/en/sdk/python/v1/serverless/circuits/get-a-component-instance/) - REST APIs (/en/api/code-reference/serverless/circuits/execute-circuit/#ExecuteCircuit) -------------------------------------------------------------------------------- # Execute a Circuit Note: Ensure you have installed the required package to use this SDK method. The following code snippet details 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. Note: Circuits is currently not available to Catalyst users accessing from the EU, AU, IN, JP, SA, or CA data centers. // Get a instance for Circuit const circuit = new Circuits(); // execute the circuit const executeCircuitResponse = await circuit.execute('195000000041001','sampleName',{name:'Aaron Jones'}); console.log(executeCircuitResponse); // get the circuit status const circuitStatusResponse = await circuit.status('195000000041001','195000000043002'); console.log(circuitStatusResponse); // abort the running circuit const circuitAbortResponse = await circuit.abort('195000000041001','195000000043002'); console.log(circuitAbortResponse); ### Example of Expected Response { 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" } } ##### Functions -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the method to execute functions in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.129Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/serverless/functions/overview/" service: "Serverless" related: - Catalyst Serverless (/en/serverless/) - Functions Help (/en/serverless/help/functions/introduction/) - Java SDK (/en/sdk/java/v1/serverless/functions/execute-function/) - NodeJS SDK (/en/sdk/nodejs/v2/serverless/functions/get-component-instance/) - Python SDK (/en/sdk/python/v1/serverless/functions/get-component-instance/) - Web SDK (/en/sdk/web/v4/serverless/functions/get-component-instance/) - iOS SDK (/en/sdk/ios/v2/serverless/functions/create-function-instance/) - Android SDK (/en/sdk/android/v2/serverless/functions/create-function-instance/) - Flutter SDK (/en/sdk/flutter/v2/serverless/functions/create-function-instance/) - REST APIs (/en/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Functions JavaScript SDK # Overview Functions is a Catalyst Serverless component, that provides you with the ideal coding structure to define and code your business logic in *Java*, *Node.js*, or *Python* runtimes. Functions allow you to store the functionality of the application in a centralized and secure place, rather than storing it within the application’s main code. You can create your functions in the Catalyst console or using the Catalyst CLI. The business logic coded in the Functions component can be executed in the testing and production environment. The **Functions JavaScript SDK** package enables you to execute your required functions through code. ### Prerequisites You will need to install the following package to be able to use the Function SDK methods. npm install @zcatalyst/functions Info: Ensure that you have applied the required authentication configuration to use the SDK methods of this component. ### Import Requirement You will need to import the following modules to use the Function SDK methods. const { Functions } = require('@zcatalyst/functions'); ### List of SDK Methods The following table contains the list of SDK methods that can be used to perform operations with the Function component through code. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Category</th> <th>SDK Method</th> <th>Required Scope</th> </tr> </thead> <tbody> <tr> <td>General Operations</td> <td>Get Function Instance</td> <td>No requirement</td> </tr> <tr> <td>Function Operations</td> <td>Execute Function</td> <td>Admin</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Get Function Instance" description: "This page describes the method to execute functions in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.130Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/serverless/functions/get-function-instance/" service: "Serverless" related: - Catalyst Serverless (/en/serverless/) - Functions Help (/en/serverless/help/functions/introduction/) - Java SDK (/en/sdk/java/v1/serverless/functions/execute-function/) - NodeJS SDK (/en/sdk/nodejs/v2/serverless/functions/get-component-instance/) - Python SDK (/en/sdk/python/v1/serverless/functions/get-component-instance/) - Web SDK (/en/sdk/web/v4/serverless/functions/get-component-instance/) - iOS SDK (/en/sdk/ios/v2/serverless/functions/create-function-instance/) - Android SDK (/en/sdk/android/v2/serverless/functions/create-function-instance/) - Flutter SDK (/en/sdk/flutter/v2/serverless/functions/create-function-instance/) - REST APIs (/en/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Get Function Instance Note: Ensure you have installed the required package to use this SDK method. You can get the functions component reference 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 Functions component. // Get a functions instance const functions = new Functions(); -------------------------------------------------------------------------------- title: "Execute Function" description: "This page describes the method to execute functions in your application with sample code snippets." last_updated: "2026-07-02T09:34:10.130Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/serverless/functions/execute-function/" service: "Serverless" related: - Catalyst Serverless (/en/serverless/) - Functions Help (/en/serverless/help/functions/introduction/) - Java SDK (/en/sdk/java/v1/serverless/functions/execute-function/) - NodeJS SDK (/en/sdk/nodejs/v2/serverless/functions/execute-function/) - Python SDK (/en/sdk/python/v1/serverless/functions/execute-function/) - Web SDK (/en/sdk/web/v4/serverless/functions/execute-function/) - iOS SDK (/en/sdk/ios/v2/serverless/functions/execute-function/) - Android SDK (/en/sdk/android/v2/serverless/functions/execute-function/) - Flutter SDK (/en/sdk/flutter/v2/serverless/functions/execute-function/) - REST APIs (/en/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Execute Function Note: Ensure you have installed the required package to use this SDK method. 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. An example to set the configuration is detailed in the following code snippet // Create Configuration for function Execution const conf = { args: { Name: 'Amelia' } } 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. The functions reference used in the code below is the component instance. Note: You can also pass the function name as a string to the execute() method instead of using the function ID. const functionResponse = await functions.execute(1510000000059262,conf); console.log(functionResponse); #### SmartBrowz -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the method to perform operations using the components in SmartBrowz Services." last_updated: "2026-07-02T09:34:10.130Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/smartbrowz/overview/" service: "SmartBrowz" related: - Catalyst SmartBrowz (/en/smartbrowz/) - Java SDK Documentation (/en/sdk/java/v1/smartbrowz/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/smartbrowz/) - Python SDK Documentation (/en/sdk/python/v1/smartbrowz/) - REST API Documentation (/en/api/code-reference/smartbrowz/browser-grid/list-all-grids/#ListallBrowserGrids) -------------------------------------------------------------------------------- # SmartBrowz JavaScript SDK # Overview SmartBrowz is a Catalyst service that offers you a wide range of components that you can use to perform your required functions on headless browsers, generate visual documents, and even configure design and style templates using Liquid JS that can handle dynamic data while offering you the advantages of reusable HTML blueprints. Using the *SmartBrowz JavaScript SDK*, you can perform the following operations through code: ### Prerequisites You will need to install the following package to be able to use the SDK methods of SmartBrowz components. npm install @zcatalyst/smartbrowz Info: Ensure that you have applied the required authentication configuration to use the SDK methods of this component. ### Import Requirement You will need to import the following modules to use the SDK methods of Zia service's components. const { Smartbrowz } = require('@zcatalyst/smartbrowz'); //SmartBrowz module ### List of SDK Methods The following table provides you with the list of SmartBrowz operations that you can perform through code using the SmartBrowz JavaScript SDK. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Category</th> <th>SDK Method</th> <th>Required Scope</th> </tr> </thead> <tbody> <tr> <td>General Operations</td> <td>Get SmartBrowz Instance</td> <td>No requirement</td> </tr> <tr> <td rowspan="2">SmartBrowz Operations</td> <td>PDF & Screenshot <ul> <li>Generate visual documents using Templates as source</li> <li>Generate PDF using HTML as source</li> <li>Generate Screenshot using URL as source</li> </ul> </td> <td>Admin</td> </tr> <tr> <td>Dataverse <ul> <li>Lead enrichment</li> <li>Tech stack finder</li> <li>Similar companies</li> </ul> </td> <td>Admin</td> </tr> </tbody> </table> <br /> Info: Learn more about the Catalyst SmartBrowz service. -------------------------------------------------------------------------------- title: "Create a SmartBrowz Instance" description: "This page describes the method to perform operations using the components in SmartBrowz Services." last_updated: "2026-07-02T09:34:10.130Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/smartbrowz/create-smartbrowz-instance/" service: "SmartBrowz" related: - Catalyst SmartBrowz (/en/smartbrowz/) - Java SDK Documentation (/en/sdk/java/v1/smartbrowz/generate-pdfnscreenshot/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/smartbrowz/create-smartbrowz-instance/) - Python SDK Documentation (/en/sdk/python/v1/smartbrowz/create-smartbrowz-instance/) - REST API Documentation (/en/api/code-reference/smartbrowz/generate-pdfnscreenshoturl/#PDF%26ScreenshotwithHTMLorURLasInput) -------------------------------------------------------------------------------- # Create a SmartBrowz Instance Notes: * Ensure you have installed the required package to use this SDK method. * 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 that you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval.<br />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. 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. You can create a smartbrowz component reference as shown below. This will not fire a server-side call. You will refer to this component instance in various code snippets while working with SmartBrowz components. // Get a SmartBrowz instance const smartbrowz = new Smartbrowz(); ##### Dataverse -------------------------------------------------------------------------------- title: "Lead Enrichment" description: "This page describes the method to perform operations using the components in SmartBrowz Services." last_updated: "2026-07-02T09:34:10.130Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/smartbrowz/dataverse/lead-enrichment/" service: "SmartBrowz" related: - Catalyst SmartBrowz (/en/smartbrowz/) - Dataverse (/en/smartbrowz/help/dataverse/introduction/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/smartbrowz/dataverse/) - Python SDK Documentation (/en/sdk/python/v1/smartbrowz/dataverse/) -------------------------------------------------------------------------------- # Lead Enrichment Notes: * Ensure you have installed the required package to use this SDK method. * 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 that you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval.<br />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. The **Lead Enrichment** module allows you to fetch details of a specific organization from the web. Provide the organization’s name, its email address, or its website URL as the parameters to the getEnrichedLead() SDK method, to retrieve the required information. The smartbrowz reference used in the code snippets below is the component instance created to perform these operations. Note: You must provide the value for at least one key in the getEnrichedLead() SDK method. const response = await smartbrowz.getEnrichedLead({ leadName: "zoho", websiteUrl: "https://www.zoho.com", email: "sales@zohocorp.com" }); console.log(response); #### Example of Expected Response [ { "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" } ] -------------------------------------------------------------------------------- title: "Tech Stack Finder" description: "This page describes the method to perform operations using the components in SmartBrowz Services." last_updated: "2026-07-02T09:34:10.130Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/smartbrowz/dataverse/tech-stack-finder/" service: "SmartBrowz" related: - Catalyst SmartBrowz (/en/smartbrowz/) - Dataverse (/en/smartbrowz/help/dataverse/introduction/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/smartbrowz/dataverse/) - Python SDK Documentation (/en/sdk/python/v1/smartbrowz/dataverse/) -------------------------------------------------------------------------------- # Tech Stack Finder Notes: * Ensure you have installed the required package to use this SDK method. * 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 that you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval.<br />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. The **TechStack Finder** module allows you to fetch details of the technologies implemented and the frameworks used by an organization. Provide the organization’s website URL as a parameter to the findTechStack() SDK method, to retrieve the information. The smartbrowz reference used in the code snippets below is the component instance created to perform these operations. const response = await smartbrowz.findTechStack('https://www.zoho.com'); console.log('response::', response); #### Example of Expected Response [ { "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" } ] -------------------------------------------------------------------------------- title: "Similar Companies" description: "This page describes the method to perform operations using the components in SmartBrowz Services." last_updated: "2026-07-02T09:34:10.130Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/smartbrowz/dataverse/similar-companies/" service: "SmartBrowz" related: - Catalyst SmartBrowz (/en/smartbrowz/) - Dataverse (/en/smartbrowz/help/dataverse/introduction/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/smartbrowz/dataverse/) - Python SDK Documentation (/en/sdk/python/v1/smartbrowz/dataverse/) -------------------------------------------------------------------------------- # Similar Companies Notes: * Ensure you have installed the required package to use this SDK method. * 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 that you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval.<br />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. 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. Provide the name of the input organization or its website URL as a parameter to the getSimilarCompanies() SDK method. The smartbrowz reference used in the code snippets below is the component instance created to perform these operations. const response = await smartbrowz.getSimilarCompanies({ 'leadName': 'zoho', 'websiteUrl': 'https://www.zoho.com' }); console.log(response); #### Example of Expected Response [ "Cybage Software Pvt. Ltd.", "Google LLC", "Chargebee, Inc.", "Infosys Ltd.", "GlobalLogic Inc.", "Persistent Systems Ltd.", "DELTA ELECTRONICS Inc.", "Salesforce, Inc." ] ##### PDF & Screenshot -------------------------------------------------------------------------------- title: "Generate Visual Documents with Templates as Source" description: "This page describes the method to perform operations using the components in SmartBrowz Services." last_updated: "2026-07-02T09:34:10.130Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/smartbrowz/pdf-and-screenshot/docs-templates-source/" service: "SmartBrowz" related: - Catalyst SmartBrowz (/en/smartbrowz/) - PDF & Screenshot (/en/smartbrowz/help/pdfnscreenshot/introduction/) - Templates (/en/smartbrowz/help/templates/introduction/) - Java SDK Documentation (/en/sdk/java/v1/smartbrowz/generate-pdfnscreenshot/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/smartbrowz/generate-pdfnscreenshot/) - Python SDK Documentation (/en/sdk/python/v1/smartbrowz/generate-pdfnscreenshot/) - REST API Documentation (/en/api/code-reference/smartbrowz/generate-pdfnscreenshoturl/#PDF%26ScreenshotwithHTMLorURLasInput) -------------------------------------------------------------------------------- # Generate Visual Documents with Templates as Source Notes: * Ensure you have installed the required package to use this SDK method. * 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 that you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval.<br />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. Templates is a *Catalyst SmartBrowz* component that allows you to design custom HTML blueprints using LiquidJS components to handle dynamic data. Using the generateFromTemplate() SDK method you can generate the required visual document as per your requirement. The SDK method also allows you to implement multiple customization options including page orientation, size, password protection, and so much more. The required template is referred to using its Template ID. The smartbrowz reference used in the code snippets below is the component instance created to perform these operations. const 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); -------------------------------------------------------------------------------- title: "Generate PDF with HTML Code as Source" description: "This page describes the method to perform operations using the components in SmartBrowz Services." last_updated: "2026-07-02T09:34:10.130Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/smartbrowz/pdf-and-screenshot/pdf-from-htmlcode/" service: "SmartBrowz" related: - Catalyst SmartBrowz (/en/smartbrowz/) - PDF & Screenshot (/en/smartbrowz/help/pdfnscreenshot/introduction/) - Templates (/en/smartbrowz/help/templates/introduction/) - Java SDK Documentation (/en/sdk/java/v1/smartbrowz/generate-pdfnscreenshot/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/smartbrowz/generate-pdfnscreenshot/) - Python SDK Documentation (/en/sdk/python/v1/smartbrowz/generate-pdfnscreenshot/) - REST API Documentation (/en/api/code-reference/smartbrowz/generate-pdfnscreenshoturl/#PDF%26ScreenshotwithHTMLorURLasInput) -------------------------------------------------------------------------------- # Generate PDF with HTML Code as Source Notes: * Ensure you have installed the required package to use this SDK method. * 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 that you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval.<br />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. Using the convertToPdf() SDK method, you can generate a PDF document using HTML code as source. The SDK method also allows you to implement multiple customization options including page orientation, size, password protection, and so much more. The smartbrowz reference used in the code snippets below is the component instance created to perform these operations. const result = await smartbrowz.convertToPdf("HI", { pdf_options: { display_header_footer: true, footer_template: "Page Header", margin: { bottom: "20", left: "10", right: "10", top: "20" }, height: "100", width: "100", landscape: true, page_ranges: "1-2", scale: 1.0, password: "****123" }, 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); -------------------------------------------------------------------------------- title: "Generate PDF with URL as Source" description: "This page describes the method to perform operations using the components in SmartBrowz Services." last_updated: "2026-07-02T09:34:10.130Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/smartbrowz/pdf-and-screenshot/pdf-from-url-source/" service: "SmartBrowz" related: - Catalyst SmartBrowz (/en/smartbrowz/) - PDF & Screenshot (/en/smartbrowz/help/pdfnscreenshot/introduction/) - Templates (/en/smartbrowz/help/templates/introduction/) - Java SDK Documentation (/en/sdk/java/v1/smartbrowz/generate-pdfnscreenshot/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/smartbrowz/generate-pdfnscreenshot/) - Python SDK Documentation (/en/sdk/python/v1/smartbrowz/generate-pdfnscreenshot/) - REST API Documentation (/en/api/code-reference/smartbrowz/generate-pdfnscreenshoturl/#PDF%26ScreenshotwithHTMLorURLasInput) -------------------------------------------------------------------------------- # Generate PDF with URL as Source Notes: * Ensure you have installed the required package to use this SDK method. * 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 that you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval.<br />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. Pass the required URL to the convertToPdf() SDK method to generate a visual document of the corresponding webpage. The smartbrowz reference used in the code snippets below is the component instance created to perform these operations. const result = await smartbrowz.convertToPdf("https://www.google.com", { pdf_options: { display_header_footer: true, footer_template: "Page Header", margin: { bottom: "20", left: "10", right: "10", top: "20" }, height: "100", width: "100", landscape: true, page_ranges: "1-2", scale: 1.0, password: "*****123" }, 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); #### Zia Services -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the method to perform operations using the components in Zia Services." last_updated: "2026-07-02T09:34:10.131Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/zia-services/overview/" service: "Zia Services" related: - Catalyst Zia Services (/en/zia-services/) - Java SDK Documentation (/en/sdk/java/v1/cloud-scale/nosql/get-table-metadata/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/cloud-scale/nosql/get-component-instance/) - Python SDK Documentation (/en/sdk/python/v1/cloud-scale/nosql/get-component-instance/) - REST API Documentation (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # Zia Services JavaScript SDK # Overview Zia is a Catalyst service that offers you a suite of AI and ML powered microservices that you can incorporate in your Catalyst application. These components help detect, process, or predict data that can be highly beneficial in various aspects of your business, such as in understanding your customers better, fetching valuable insights, identifying trends with your existing datasets, analyzing and extracting information from images or documents, and so much more. ### Prerequisites You will need to install the following package to be able to use the SDK methods of Zia components. npm install @zcatalyst/zia Info: Ensure that you have applied the required authentication configuration to use the SDK methods of this component. ### Import Requirement You will need to import the following modules to use the SDK methods of Zia service's components. const { Zia } = require('@zcatalyst/zia'); //Zia module ### List of SDK Methods The following table provides you with the list of Zia service's operations that you can perform through code using the Zia JavaScript SDK. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>Category</th> <th>SDK Method</th> <th>Required Scope</th> </tr> </thead> <tbody> <tr> <td>General Operations</td> <td>Get Zia Instance</td> <td>No requirement</td> </tr> <tr> <td>Zia Operations</td> <td> <ul> <li>OCR</li> <li>AutoML</li> <li>Face Analytics</li> <li>Identity Scanner <ul> <li>Facial Comparison</li> <li>Aadhaar</li> <li>PAN</li> <li>Passbook</li> <li>Cheque</li> </ul> </li> <li>Text Analytics <ul> <li>Sentiment Analysis</li> <li>Named Entity Recognition</li> <li>Keyword Extraction</li> <li>All Text Analytics</li> </ul> </li> <li>Image Moderation</li> <li>Object Recognition</li> <li>Barcode Scanner</li> </ul> </td> <td>Admin</td> </tr> </tbody> </table> <br /> Info: Learn more about the Catalyst Zia service. -------------------------------------------------------------------------------- title: "Get Zia Instance" description: "This page describes the method to perform operations using the components in Zia Services." last_updated: "2026-07-02T09:34:10.131Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/zia-services/get-zia-instance/" service: "Zia Services" related: - Catalyst Zia Services (/en/zia-services/) - Java SDK Documentation (/en/sdk/java/v1/zia-services/ocr/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/zia-services/get-component-instance/) - Python SDK Documentation (/en/sdk/python/v1/zia-services/get-component-instance/) - REST API Documentation (/en/api/code-reference/zia-services/ocr/#OCR) -------------------------------------------------------------------------------- # Get Zia Instance Note: Ensure you have installed the required package to use this SDK method. You can create a zia component reference as shown below. This will not fire a server-side call. You will refer to this component instance in various code snippets while working with Zia service's components. const zia = new Zia(); //Get Zia instance -------------------------------------------------------------------------------- title: "Optical Character Recognition" description: "This page describes the method to perform operations using the components in Zia Services." last_updated: "2026-07-02T09:34:10.131Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/zia-services/ocr/" service: "Zia Services" related: - Catalyst Zia Services (/en/zia-services/) - Java SDK Documentation (/en/sdk/java/v1/zia-services/ocr/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/zia-services/ocr/) - Python SDK Documentation (/en/sdk/python/v1/zia-services/ocr/) - REST API Documentation (/en/api/code-reference/zia-services/ocr/#OCR) -------------------------------------------------------------------------------- # Optical Character Recognition Note: Ensure you have installed the required package to use this SDK method. Zia Optical Character Recognition 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. Notes: * View the list of languages and language codes. * 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 in the code snippets below is the component instance created to perform these operations. The promise returned here is resolved to a JSON object. const fs = require('fs'); // Define the file stream for file attachments const result = await zia.extractOpticalCharacters( fs.createReadStream('/Users/amelia-421/Desktop/MyDoc.webp'), { language: 'eng', modelType: 'OCR' } ); console.log(result); #### Example of Expected Response A sample response that you will receive is shown below. { "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 fox jumped over the\nlazy dog. The quick brown fox jumped\nover the lazy dog. The quick brown fox\njumped over the lazy dog. The quick\nbrown fox jumped over the lazy dog" } -------------------------------------------------------------------------------- title: "AutoML" description: "This page describes the method to perform operations using the components in Zia Services." last_updated: "2026-07-02T09:34:10.131Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/zia-services/automl/" service: "Zia Services" related: - Catalyst Zia Services (/en/zia-services/) - Java SDK Documentation (/en/sdk/java/v1/zia-services/automl/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/zia-services/automl/) - Python SDK Documentation (/en/sdk/python/v1/zia-services/automl/) - REST API Documentation (/en/api/code-reference/zia-services/automl/#AutoML) -------------------------------------------------------------------------------- # AutoML Note: Ensure you have installed the required package to use this SDK method. Zia AutoML enables you to train models and analyze a set of training data to predict the outcome of a subset of that data. You can build and train Binary Classification, Multi-Class Classification, and Regression Models, and obtain insightful evaluation reports. Note: AutoML is currently not available to Catalyst users accessing from the EU, AU, IN, JP, SA or CA data centers. You can use the automl() SDK method to pass inputs for a model’s columns and values to test it, by providing the model ID of the model. It returns the prediction of the values of a target column. The zia reference used in the code snippets below is the component instance created to perform these operations. The promise returned here is resolved to a JSON object. const result = await zia.automl(modelId, { "column_1": "column1_value", "column_2": "column2_value", "column_3": "column3_value", "column_4": "column4_value", "column_5": "column5_value" }); console.log(result); #### Example of Expected Response A sample response that you will receive is shown below. { "classification_result": { "Dollars": 0, "Percentage": 80, "Dollars (millions)": 20 } } -------------------------------------------------------------------------------- title: "Face Analytics" description: "This page describes the method to perform operations using the components in Zia Services." last_updated: "2026-07-02T09:34:10.131Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/zia-services/face-analytics/" service: "Zia Services" related: - Catalyst Zia Services (/en/zia-services/) - Face Analytics Help Documentation (/en/zia-services/help/face-analytics/introduction/) - Java SDK Documentation (/en/sdk/java/v1/zia-services/face-analytics/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/zia-services/face-analytics/) - Python SDK Documentation (/en/sdk/python/v1/zia-services/face-analytics/) - REST API Documentation (/en/api/code-reference/zia-services/face-analytics/#FaceAnalytics) -------------------------------------------------------------------------------- # Face Analytics Note: Ensure you have installed the required package to use this SDK method. 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. The analyseFace() method accepts the input image as its argument. You can 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 zia reference used in the code snippets below is the component instance created to perform these operations. The promise returned here is resolved to a JSON object. const fs = require('fs'); const result = await zia.analyseFace(fs.createReadStream('./face.png'), { mode: 'moderate', // set analysis mode age: true, // enable age detection emotion: true, // enable emotion detection gender: false // disable gender detection }); console.log(result); #### Example of Expected Response A sample response that you will receive is shown below. 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. { "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 perform operations using the components in Zia Services." last_updated: "2026-07-02T09:34:10.131Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/zia-services/image-moderation/" service: "Zia Services" related: - Catalyst Zia Services (/en/zia-services/) - Image Moderation Help Documentation (/en/zia-services/help/image-moderation/introduction/) - Java SDK Documentation (/en/sdk/java/v1/zia-services/image-moderation/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/zia-services/image-moderation/) - Python SDK Documentation (/en/sdk/python/v1/zia-services/image-moderation/) - REST API Documentation (/en/api/code-reference/zia-services/image-moderation/#ImageModeration) -------------------------------------------------------------------------------- # Image Moderation Note: Ensure you have installed the required package to use this SDK method. 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 zia reference used in the code snippets below is the component instance created to perform these operations. The promise returned here is resolved to a JSON object. const fs = require('fs'); const result = await zia.moderateImage(fs.createReadStream('./weapon.png'), {mode: 'moderate'}); //Pass the input file and the mode console.log(result); #### Example of Expected Response A sample response that you will receive is shown below. 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. { "probability": { "racy": "0.09", "nudity": "0.06" }, "confidence": "0.85", "prediction": "safe_to#_use" } -------------------------------------------------------------------------------- title: "Object Recognition" description: "This page describes the method to perform operations using the components in Zia Services." last_updated: "2026-07-02T09:34:10.131Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/zia-services/object-recognition/" service: "Zia Services" related: - Catalyst Zia Services (/en/zia-services/) - Object Recognition Help Documentation (/en/zia-services/help/object-recognition/introduction/) - Java SDK Documentation (/en/sdk/java/v1/zia-services/object-recognition/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/zia-services/object-recognition/) - Python SDK Documentation (/en/sdk/python/v1/zia-services/object-recognition/) - REST API Documentation (/en/api/code-reference/zia-services/object-recognition/#ObjectRecognition) -------------------------------------------------------------------------------- # Object Recognition Note: Ensure you have installed the required package to use this SDK method. 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 in the code snippets below is the component instance created to perform these operations. The promise returned here is resolved to a JSON object. const fs = require('fs'); const result = await zia.detectObject(fs.createReadStream('./sampimage.webp')); console.log(result); #### Example of Expected Response 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" } ] } -------------------------------------------------------------------------------- title: "Barcode Scanner" description: "This page describes the method to perform operations using the components in Zia Services." last_updated: "2026-07-02T09:34:10.131Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/zia-services/barcode-scanner/" service: "Zia Services" related: - Catalyst Zia Services (/en/zia-services/) - Object Recognition Help Documentation (/en/zia-services/help/object-recognition/introduction/) - Java SDK Documentation (/en/sdk/java/v1/zia-services/barcode-scanner/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/zia-services/barcode-scanner/) - Python SDK Documentation (/en/sdk/python/v1/zia-services/barcode-scanner/) - REST API Documentation (/en/api/code-reference/zia-services/barcode-scanner/#BarcodeScanner) -------------------------------------------------------------------------------- # Barcode Scanner Note: Ensure you have installed the required package to use this SDK method. 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, the Barcode Scanner automatically detects the format. It provides the decoded information as the response. The zia reference used in the code snippets below is the component instance created to perform these operations. The promise returned here is resolved to a JSON object. const fs = require('fs'); const result = await zia.scanBarcode(fs.createReadStream('./barcode.png'), {format: 'code39'}); //Pass the input file and the format console.log(result); #### Example of Expected Response A sample response that you will receive is shown below. { "content": "https://demo.dynamsoft.com/dbr_wasm/barcode_reader_javascript.html" } ##### Identity Scanner -------------------------------------------------------------------------------- title: "Facial Comparison" description: "This page describes the method to perform operations using the components in Zia Services." last_updated: "2026-07-02T09:34:10.131Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/zia-services/identity-scanner/facial-comparisson/" service: "Zia Services" related: - Catalyst Zia Services (/en/zia-services/) - Java SDK Documentation (/en/sdk/java/v1/zia-services/identity-scanner/facial-comparison/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/zia-services/identity-scanner/facial-comparison/) - Python SDK Documentation (/en/sdk/python/v1/zia-services/identity-scanner/facial-comparison/) - REST API Documentation (/en/api/code-reference/zia-services/identity-scanner/facial-comparison/#FacialComparison) -------------------------------------------------------------------------------- # Facial Comparison Notes: * Ensure you have installed the required package to use this SDK method. * 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. * 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. 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: 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. 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. **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. The zia reference used in the code snippets below is the component instance created to perform these operations. The promise returned here is resolved to a JSON object. const fs = require('fs'); 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 const res = await zia.compareFace(sourceImage, queryImage); console.log(res); #### Example of Expected Response A sample response that you will receive is shown below. { "confidence": 0.9464, "matched": "true" } -------------------------------------------------------------------------------- title: "Aadhaar" description: "This page describes the method to perform operations using the components in Zia Services." last_updated: "2026-07-02T09:34:10.131Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/zia-services/identity-scanner/aadhaar/" service: "Zia Services" related: - Catalyst Zia Services (/en/zia-services/) - Java SDK Documentation (/en/sdk/java/v1/zia-services/identity-scanner/aadhaar/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/zia-services/identity-scanner/aadhaar/) - Python SDK Documentation (/en/sdk/python/v1/zia-services/identity-scanner/aadhaar/) - REST API Documentation (/en/api/code-reference/zia-services/identity-scanner/aadhaar/#Aadhaar) -------------------------------------------------------------------------------- # Aadhaar Notes: * Ensure you have installed the required package to use this SDK method. * 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. * 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 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 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. You need to provide the path to the image files of the front and back of the Aadhaar card through createReadStream. 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. **Allowed file formats**: .webp, .jpeg, .png, .bmp, .tiff, .pdf **File size limit**: 15 MB The zia reference used in the code snippets below is the component instance created to perform these operations. The promise returned here is resolved to a JSON object. const fs = require('fs'); const result = await zia.extractAadhaarCharacters( fs.createReadStream('./frontImg.webp'), fs.createReadStream('./backImg.webp'), 'eng,tam' ); console.log(result); #### Example of Expected Response A sample response that you will receive is shown below. 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. { "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": "Saeyon Dheeran" }, "aadhaar": { "prob": 0.8, "value": "4000 0000 0000" } } } -------------------------------------------------------------------------------- title: "PAN" description: "This page describes the method to perform operations using the components in Zia Services." last_updated: "2026-07-02T09:34:10.131Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/zia-services/identity-scanner/pan/" service: "Zia Services" related: - Catalyst Zia Services (/en/zia-services/) - Java SDK Documentation (/en/api/code-reference/zia-services/identity-scanner/pan/#PAN) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/zia-services/identity-scanner/pan/) - Python SDK Documentation (/en/sdk/python/v1/zia-services/identity-scanner/pan/) - REST API Documentation (/en/api/code-reference/zia-services/identity-scanner/pan/#PAN) -------------------------------------------------------------------------------- # PAN Notes: * Ensure you have installed the required package to use this SDK method. * 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. * 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 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. You must provide the path to the image file of the front side of the PAN card. 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. **Allowed file formats**: .webp, .jpeg, .png **File size limit**: 15 MB The zia reference used in the code snippets below is the component instance created to perform these operations. The promise returned here is resolved to a JSON object. const fs = require('fs'); const result = await zia.extractOpticalCharacters(fs.createReadStream('/Users/amelia-421/Desktop/pan.webp'), {modelType: 'PAN'}); // Pass the input file with the model type console.log(result); #### Example of Expected Response A sample response that you will receive is shown below. 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. { "date_of_birth": "03/04/1982", "last_name": "Dheeran", "pan": "ANRPM2537J", "first_name": "Saeyon" } -------------------------------------------------------------------------------- title: "Passbook" description: "This page describes the method to perform operations using the components in Zia Services." last_updated: "2026-07-02T09:34:10.131Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/zia-services/identity-scanner/passbook/" service: "Zia Services" related: - Catalyst Zia Services (/en/zia-services/) - Java SDK Documentation (/en/sdk/java/v1/zia-services/identity-scanner/passbook/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/zia-services/identity-scanner/passbook/) - Python SDK Documentation (/en/sdk/python/v1/zia-services/identity-scanner/passbook/) - REST API Documentation (/en/api/code-reference/zia-services/identity-scanner/passbook/#Passbook) -------------------------------------------------------------------------------- # Passbook Notes: * Ensure you have installed the required package to use this SDK method. * 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. * 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 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. 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. You must specify the model type as PASSBOOK using the key modelType. Notes: * English will be considered as the default language, if it isn’t specified. * Identity Scanner will return the response only in English, irrespective of the languages present in the passbook. **Allowed file formats**: .webp, .jpeg, .png, .bmp, .tiff, .pdf **File size limit**: 15 MB The zia reference used in the code snippets below is the component instance created to perform these operations. The promise returned here is resolved to a JSON object. const fs = require('fs'); const result = await zia.extractOpticalCharacters(fs.createReadStream('/Users/amelia-421/Desktop/passbook.webp'), {language: 'tam', modelType: 'PASSBOOK'}); // Pass the input file with the model type and optional language console.log(result); #### Example of Expected Response A sample response that you will receive is shown below. 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. { "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 perform operations using the components in Zia Services." last_updated: "2026-07-02T09:34:10.132Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/zia-services/identity-scanner/cheque/" service: "Zia Services" related: - Catalyst Zia Services (/en/zia-services/) - Java SDK Documentation (/en/sdk/java/v1/zia-services/identity-scanner/cheque/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/zia-services/identity-scanner/cheque/) - Python SDK Documentation (/en/sdk/python/v1/zia-services/identity-scanner/cheque/) - REST API Documentation (/en/api/code-reference/zia-services/identity-scanner/cheque/#Cheque) -------------------------------------------------------------------------------- # Cheque Notes: * Ensure you have installed the required package to use this SDK method. * 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. * 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 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. You must provide the path to the image file of the front page of the cheque book. Notes: * Zia only processes cheques of the CTS-2010 format. * The CHEQUE model can only process text in English by default. No other languages are supported. **Allowed file formats**: .webp, .jpeg, .png **File size limit**: 15 MB You must specify the model type as CHEQUE using modelType(). The zia reference used in the code snippets below is the component instance created to perform these operations. The promise returned here is resolved to a JSON object. const fs = require('fs'); const result = await zia.extractOpticalCharacters(fs.createReadStream('/Users/amelia-421/Desktop/cheque.webp'), {modelType: 'CHEQUE'}); //Pass the input file with the model type console.log(result); #### Example of Expected Response A sample response that you will receive is shown below. { "date": "15/11/2025", "account_number": "89323223232222", "amount": "10615", "branch_name": "TAMBARAM", "bank_name": "ABX BANK", "ifsc": "BB9033232" } ##### Text Analytics -------------------------------------------------------------------------------- title: "Sentiment Analysis" description: "This page describes the method to perform operations using the components in Zia Services." last_updated: "2026-07-02T09:34:10.132Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/zia-services/text-analytics/sentiment-analysis/" service: "Zia Services" related: - Catalyst Zia Services (/en/zia-services/) - Java SDK Documentation (/en/sdk/java/v1/zia-services/text-analytics/sentiment-analysis/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/zia-services/text-analytics/sentiment-analysis/) - Python SDK Documentation (/en/sdk/python/v1/zia-services/text-analytics/sentiment-analysis/) - REST API Documentation (/en/api/code-reference/zia-services/text-analytics/sentiment-analysis/#SentimentAnalysis) -------------------------------------------------------------------------------- # Sentiment Analysis Note: Ensure you have installed the required package to use this SDK method. 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 these three sentiments, based on the sentiments recognized in each sentence. You can pass a block of text as the input of up to **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 in the code snippets below is the component instance created to perform these operations. The promise returned here is resolved to a JSON object. const result = await 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 console.log(result); #### Example of Expected Reponse A sample response that you will receive is shown below. 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. { "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 perform operations using the components in Zia Services." last_updated: "2026-07-02T09:34:10.132Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/zia-services/text-analytics/named-entity-recognition/" service: "Zia Services" related: - Catalyst Zia Services (/en/zia-services/) - Java SDK Documentation (/en/sdk/java/v1/zia-services/text-analytics/named-entity-recognition/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/zia-services/text-analytics/named-entity-recognition/) - Python SDK Documentation (/en/sdk/python/v1/zia-services/text-analytics/named-entity-recognition/) - REST API Documentation (/en/api/code-reference/zia-services/text-analytics/named-entity-recognition/#NamedEntityRecognition) -------------------------------------------------------------------------------- # Named Entity Recognition Note: Ensure you have installed the required package to use this SDK method. 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. You can pass a block of text as the input of up to **1500 characters** in a single request. The text is passed to getNERPrediction(). The zia reference used in the code snippets below is the component instance created to perform these operations. The promise returned here is resolved to a JSON object. const result = await 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 console.log(result); #### Exmaple of Expected Response A sample response that you will receive is shown below. 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. { "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 perform operations using the components in Zia Services." last_updated: "2026-07-02T09:34:10.132Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/zia-services/text-analytics/keyword-extraction/" service: "Zia Services" related: - Catalyst Zia Services (/en/zia-services/) - Java SDK Documentation (/en/sdk/java/v1/zia-services/text-analytics/keyword-extraction/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/zia-services/text-analytics/keyword-extraction/) - Python SDK Documentation (/en/sdk/python/v1/zia-services/text-analytics/keyword-extraction/) - REST API Documentation (/en/api/code-reference/zia-services/text-analytics/keyword-extraction/#KeywordExtraction) -------------------------------------------------------------------------------- # Keyword Extraction Note: Ensure you have installed the required package to use this SDK method. 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. You can pass a block of text as the input of up to **1500 characters** in a single request. The text is passed to getKeywordExtraction(). The keywords and keyphrases are then fetched as individual lists. The zia reference used in the code snippets below is the component instance created to perform these operations. The promise returned here is resolved to a JSON object. const result = await 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 console.log(result); #### Example of Expected Response A sample response that you will receive is shown below. The response contains an array of the key words, and another array of the key phrases that are extracted from the text. { "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 perform operations using the components in Zia Services." last_updated: "2026-07-02T09:34:10.132Z" source: "https://docs.catalyst.zoho.com/en/sdk/javascript/v1/zia-services/text-analytics/all-text-analytics/" service: "Zia Services" related: - Catalyst Zia Services (/en/zia-services/) - Java SDK Documentation (/en/sdk/java/v1/zia-services/text-analytics/all-text-analytics/) - NodeJS SDK Documentation (/en/sdk/nodejs/v2/zia-services/text-analytics/all-text-analytics/) - Python SDK Documentation (/en/sdk/python/v1/zia-services/text-analytics/all-text-analytics/) - REST API Documentation (/en/api/code-reference/zia-services/text-analytics/all-text-analytics/#AllTextAnalytics) -------------------------------------------------------------------------------- # All Text Analytics Note: Ensure you have installed the required package to use this SDK method. 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 up to **1500 characters** in a single request. The text is passed to getTextAnalytics(). You can also pass optional keywords to perform Sentiment Analysis on the sentences containing only those keywords. The zia reference used in the code snippets below is the component instance created to perform these operations. The promise returned here is resolved to a JSON object. const result = await 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 console.log(result); #### Example of Expected Response A sample response that you will receive is shown below. The response contains the results of each of the text analytics features. Refer to each feature page for detailed information on their respective functionalities and responses. [{ "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" }] } }] ## Node JS ### v2 -------------------------------------------------------------------------------- title: "Overview" description: "Node.js SDK Overview" last_updated: "2026-07-02T09:34:10.133Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/overview/" service: "All Services" related: - Catalyst Java SDK (/en/sdk/java/v1/overview/) - Catalyst Web SDK (/en/sdk/web/v4/overview/) - API Code Reference (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) - Catalyst Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Node JS SDK ## 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, File 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 and File 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-07-02T09:34:10.133Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/upgrade-sdk/" service: "All Services" related: - Catalyst Java SDK (/en/sdk/java/v1/overview/) - Catalyst Python SDK (/en/sdk/web/v4/overview/) - 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 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-07-02T09:34:10.133Z" 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 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-07-02T09:34:10.133Z" 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 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-07-02T09:34:10.133Z" 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 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-07-02T09:34:10.133Z" 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 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-07-02T09:34:10.133Z" 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 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-07-02T09:34:10.134Z" 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 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-07-02T09:34:10.134Z" 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 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-07-02T09:34:10.134Z" 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 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-07-02T09:34:10.134Z" 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 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-07-02T09:34:10.134Z" 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 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-07-02T09:34:10.134Z" 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 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-07-02T09:34:10.134Z" 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 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-07-02T09:34:10.134Z" 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 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-07-02T09:34:10.134Z" 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 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-07-02T09:34:10.134Z" 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 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-07-02T09:34:10.134Z" 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 ### 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-07-02T09:34:10.134Z" 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 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-07-02T09:34:10.134Z" 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 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-07-02T09:34:10.134Z" 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 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-07-02T09:34:10.134Z" 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 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-07-02T09:34:10.135Z" 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 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-07-02T09:34:10.135Z" 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 ### 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-07-02T09:34:10.135Z" 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 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-07-02T09:34:10.135Z" 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 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-07-02T09:34:10.135Z" 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 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-07-02T09:34:10.135Z" 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 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-07-02T09:34:10.135Z" 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 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-07-02T09:34:10.135Z" 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 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-07-02T09:34:10.135Z" 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 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-07-02T09:34:10.135Z" 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 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-07-02T09:34:10.135Z" 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 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-07-02T09:34:10.135Z" 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 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); }); ##### File Store -------------------------------------------------------------------------------- title: "Get File Store Instance" description: "This page describes the method to delete a folder from the File Store in your NodeJS application with sample code snippets." last_updated: "2026-07-02T09:34:10.136Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/file-store/get-component-instance/" service: "Cloud Scale" related: - Get Component Instance - API (/en/api/code-reference/cloud-scale/file-store/get-specific-folder/#GetSpecificFolder) - File Store (/en/cloud-scale/help/file-store/introduction/) -------------------------------------------------------------------------------- # File Store Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. ### Get Component Instance The file store reference can be created by the following method which would not fire a server-side call. //Get a file store instance let filestore = app.filestore(); -------------------------------------------------------------------------------- title: "Get Folder Instance" description: "This page describes the method to fetch a folder instance from the File Store in your NodeJS application with sample code snippets." last_updated: "2026-07-02T09:34:10.136Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/file-store/get-folder-instance/" service: "Cloud Scale" related: - Get Folder Instance - API (/en/api/code-reference/cloud-scale/file-store/download-file-from-folder/#DownloadaFileFromaFolder) - File Store (/en/cloud-scale/help/file-store/introduction) -------------------------------------------------------------------------------- # Get a Folder Instance Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. A folder reference can be created by the following method which would not fire a server-side call. The filestore reference used in the below code snippet is the component instance. There is no promise involved in the above method and the instance of the folder alone is returned. // Get a folder instance let filestore = app.filestore(); let folder = filestore.folder(1510000000109545); -------------------------------------------------------------------------------- title: "Retrieve Folder Details" description: "This page describes the method to retrieve the folder details from the File Store in your NodeJS application with sample code snippets." last_updated: "2026-07-02T09:34:10.136Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/file-store/retrieve-folder-details/" service: "Cloud Scale" related: - Retrieve Folder Details - API (/en/api/code-reference/cloud-scale/file-store/get-specific-folder/#GetSpecificFolder) - File Store (/en/cloud-scale/help/file-store/introduction/) -------------------------------------------------------------------------------- # Get Folder Details Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. You can retrieve the details of the folders created in the Catalyst File Store. It can be a single folder or all the folders located in the file store. The filestore reference used in the below code snippets is the component instance created earlier. ### Get Details of a Single Folder This particular method retrieves the details of a specific folder referred through its unique Folder ID by calling getFolderDetails() method. The promise is returned here which in turn resolves to the folder meta details. The resultant meta can be converted to a String or a JSON output by accessing the .toString() or .toJSON() method. //Get a single folder with details by passing the folder id which in turn returns a promise let filestore = app.filestore(); let folderPromise = filestore.getFolderDetails(1510000000109545); folderPromise.then((folder) => { console.log(folder); }); A sample response that you will receive for each version is shown below: { "folder_name":"Store_Data", "created_time":"Aug 13, 2021 05:32 PM", "created_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 05:32 PM", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "project_details":{ "project_name":"ShipmentTracking", "id":"2136000000007733", "project_type":"Live" }, "file_details":[ { "id":"2136000000020111", "file_location":null, "file_name":"Img.jpeg", "file_size":"84881", "created_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"p.boyle@zylker.com", "first_name":"Patricia", "last_name":"Boyle", "user_type":"Admin", "user_id":"2136000000006767" }, "created_time":"Aug 17, 2021 09:32 PM", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"p.boyle@zylker.com", "first_name":"Patricia", "last_name":"Boyle", "user_type":"Admin", "user_id":"2136000000006767" }, "modified_time":"Aug 17, 2021 09:32 PM", "project_details":{ "project_name":"ShipmentTracking", "id":"2136000000007733", "project_type":"Live" }, "folder_details":"2136000000008551" } ], "id":"2136000000008551" } } { "folder_name":"Store_Data", "created_time":"Aug 13, 2021 05:32 PM", "created_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 05:32 PM", "modified_by":{ "zuid":66466723, "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":2136000000006003 }, "project_details":{ "project_name":"ShipmentTracking", "id":2136000000007733, "project_type":"Live" }, "file_details":[ { "id":2136000000020111, "file_location":null, "file_name":"invoice1349.jpeg", "file_size":84881, "created_by":{ "zuid":66466723, "is_confirmed":false, "email_id":"p.boyle@zylker.com", "first_name":"Patricia", "last_name":"Boyle", "user_type":"Admin", "user_id":2136000000006767 }, "created_time":"Aug 17, 2021 09:32 PM", "modified_by":{ "zuid":66466723, "is_confirmed":false, "email_id":"p.boyle@zylker.com", "first_name":"Patricia", "last_name":"Boyle", "user_type":"Admin", "user_id":2136000000006767 }, "modified_time":"Aug 17, 2021 09:32 PM", "project_details":{ "project_name":"ShipmentTracking", "id":2136000000007733, "project_type":"Live" }, "folder_details":2136000000008551 } ], "id":2136000000008551 } ### Get Details of All Folders You can fetch the details of all folders in your Catalyst application using the getAllFolders() method. The promise returned here will be resolved to an array of folder meta details. //Get details of all the folders in the project let filestore = app.filestore(); let allFolderPromise = filestore.getAllFolders(); allFolderPromise.then((folders) => { console.log(folders); }); A sample response that you will receive for each version is shown below: [ { "folder_name":"Invoices", "created_time":"Aug 25, 2021 11:38 AM", "created_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 25, 2021 11:38 AM", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "project_details":{ "project_name":"ShipmentTracking", "id":"2136000000007733", "project_type":"Live" }, "id":"2136000000037021" }, { "folder_name":"Store_Data", "created_time":"Aug 13, 2021 05:32 PM", "created_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 05:32 PM", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "project_details":{ "project_name":"ShipmentTracking", "id":"2136000000007733", "project_type":"Live" }, "id":"2136000000008551" } ] [ { "folder_name":"Invoices", "created_time":"Aug 25, 2021 11:38 AM", "created_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 25, 2021 11:38 AM", "modified_by":{ "zuid":66466723, "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":2136000000006003 }, "project_details":{ "project_name":"ShipmentTracking", "id":2136000000007733, "project_type":"Live" }, "id":2136000000037021 }, { "folder_name":"Store_Data", "created_time":"Aug 13, 2021 05:32 PM", "created_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 05:32 PM", "modified_by":{ "zuid":66466723, "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":2136000000006003 }, "project_details":{ "project_name":"ShipmentTracking", "id":2136000000007733, "project_type":"Live" }, "id":2136000000008551 } ] -------------------------------------------------------------------------------- title: "Upload File" description: "This page describes the method to upload a file to a folder in the File Store in your NodeJS application with sample code snippets." last_updated: "2026-07-02T09:34:10.136Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/file-store/upload-file/" service: "Cloud Scale" related: - Upload File - API (/en/api/code-reference/cloud-scale/file-store/get-specific-file/#GetSpecificFile) - File Store (/en/cloud-scale/help/file-store/introduction/) -------------------------------------------------------------------------------- # Upload a File Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. You can upload a file from your local system to an existing folder in the File Store, by referring to the folder's unique ID. You can upload an image, text document, CSV, or any type of file you need. The maximum size of a file that you can upload is 100 MB. A unique File ID is created for the file after it is uploaded. Catalyst provides 1 GB of File Store space for each project in the development environment. There are no upper limits for storage in the production environment. #### Create a JSON Configuration You must initially create a JSON configuration object for the file to be uploaded, as shown below. This JSON object creates a ReadStream() for the file. You can include the file name in it optionally. //Create a JSON object with the file and its name, using the keys 'name' and 'code' let config = { code:fs.createReadStream('empdata.csv'), name: 'testFile.txt' }; ### Upload the File You must now upload the file by passing the JSON object to the uploadFile() method, as shown below. You can either use the folder reference or the folder meta created earlier, to refer the folder where the file needs to be uploaded in. You must pass the unique Folder ID of the folder. The promise returned here will be resolved to a JSON object with the uploaded file information. //Upload the file by passing the JSON config to the method, which in turn returns a promise let filestore = app.filestore(); let folder = filestore.folder(1510000000109545); //Provide the Folder ID let uploadPromise = folder.uploadFile(config); //Pass the JSON object created for the file uploadPromise.then((fileObject) => { console.log(fileObject); }); A sample response that you will receive for each version is shown below: { id: "2136000000020122", file_location: null, file_name: "empdata.csv", file_size: "84881", created_by: { zuid: "66466723", is_confirmed: false, email_id: "emma@zylker.com", first_name: "Amelia", last_name: "Burrows", user_type: "Admin", user_id: "2136000000006003" }, created_time: "Aug 17, 2021 09:33 PM", 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 17, 2021 09:33 PM", project_details: { project_name: "ShipmentTracking", id: "2136000000007733" }, folder_details: "2136000000008551" } { id: 2136000000020117, file_location: null, file_name: "empdata.csv", file_size: 84881, created_by: { zuid: 66466723, is_confirmed: false, email_id: "emma@zylker.com", first_name: "Amelia", last_name: "Burrows", user_type: "Admin", user_id: 2136000000006003 }, created_time: "Aug 17, 2021 09:33 PM", 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 17, 2021 09:33 PM", project_details: { project_name: "ShipmentTracking", id: 2136000000007733 }, folder_details: 2136000000008551 } -------------------------------------------------------------------------------- title: "Download File from Folder" description: "This page describes the method to download a file from folders in the File Store in your NodeJS application with sample code snippets." last_updated: "2026-07-02T09:34:10.136Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/file-store/download-file-from-folder/" service: "Cloud Scale" related: - Download File from Folder - API (/en/api/code-reference/cloud-scale/file-store/delete-file/#description) - File Store (/en/cloud-scale/help/file-store/introduction/) -------------------------------------------------------------------------------- # Download a File from the Folder Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. A file can be downloaded from the folder by referring to its unique FileID. A folder reference or a folder meta is used in the below code snippet. FileID is passed as an argument to the downloadFile() method. The promise returned here will be resolved to a buffer containing the content of the file. //Download the file by passing the file ID to the method which in turn returns a promise let filestore = app.filestore(); let folder = filestore.folder(1510000000109545); let downloadPromise = folder.downloadFile(1510000000107568); downloadPromise.then((fileObject) => { console.log(fileObject); }); -------------------------------------------------------------------------------- title: "Delete a File" description: "This page describes the method to delete a folder from the File Store in your Java application with sample code snippets." last_updated: "2026-07-02T09:34:10.136Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/file-store/delete-file/" service: "Cloud Scale" related: - Delete a File - API (/en/api/code-reference/cloud-scale/file-store/delete-file/#DeleteFile) - File Store (/en/cloud-scale/help/file-store/introduction/) -------------------------------------------------------------------------------- # Delete a File Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. A file from a folder can be deleted by referring its File ID. The folder reference or a folder meta is used in the below code snippet. A fileID is passed as a parameter to the deleteFile() method. The promise returned here will be resolved to an deleted file object which is a JSON. // Delete the file by passing the file ID to the method which in turn returns a promise let filestore = app.filestore(); let folder = filestore.folder(1510000000109545); let deletePromise = folder.deleteFile(1510000000107568); deletePromise.then((fileObject) => { console.log(fileObject); }); ##### 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-07-02T09:34:10.136Z" 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 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-07-02T09:34:10.136Z" 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 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-07-02T09:34:10.136Z" 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 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-07-02T09:34:10.136Z" 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 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-07-02T09:34:10.136Z" 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 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-07-02T09:34:10.137Z" 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 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-07-02T09:34:10.137Z" 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 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-07-02T09:34:10.137Z" 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 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-07-02T09:34:10.137Z" 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 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-07-02T09:34:10.137Z" 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) - Query Table (/en/sdk/nodejs/v2/cloud-scale/nosql/query-table/) -------------------------------------------------------------------------------- # Query NoSQL Table 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-07-02T09:34:10.137Z" 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) - Query Index (/en/sdk/nodejs/v2/cloud-scale/nosql/query-index/) -------------------------------------------------------------------------------- # Query Index in NoSQL 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-07-02T09:34:10.137Z" 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 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-07-02T09:34:10.137Z" 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 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-07-02T09:34:10.137Z" 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 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-07-02T09:34:10.137Z" 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 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-07-02T09:34:10.138Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/search/get-a-component-instance/" service: "Cloud Scale" -------------------------------------------------------------------------------- # Search ### 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-07-02T09:34:10.138Z" 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 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-07-02T09:34:10.138Z" 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/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Stratus ## 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-07-02T09:34:10.138Z" 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/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/) - 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 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-07-02T09:34:10.138Z" 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/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/check-bucket/) - 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 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-07-02T09:34:10.138Z" 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/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # List Buckets 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-07-02T09:34:10.138Z" 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/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - 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 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-07-02T09:34:10.138Z" 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/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - 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 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-07-02T09:34:10.138Z" 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/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Get Bucket CORS 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-07-02T09:34:10.138Z" 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/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - 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 ### 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-07-02T09:34:10.139Z" 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/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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 Object Availability 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-07-02T09:34:10.139Z" 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/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - 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 ### 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-07-02T09:34:10.139Z" 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/) - Web SDK (/en/sdk/web/v4/cloud-scale/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 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-07-02T09:34:10.141Z" 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/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Extract a Zipped Object In Stratus 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-07-02T09:34:10.141Z" 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/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Copy Object 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-07-02T09:34:10.141Z" 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/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Rename and Move Operations on an Object 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-07-02T09:34:10.142Z" 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/) - Web SDK (/en/sdk/web/v4/cloud-scale/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 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-07-02T09:34:10.142Z" 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/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Create Object Instance 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-07-02T09:34:10.142Z" 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/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # List Object Versions ### 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-07-02T09:34:10.142Z" 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/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Get Object Details ### 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-07-02T09:34:10.152Z" 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/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Put Object Meta Data 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-07-02T09:34:10.153Z" 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 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-07-02T09:34:10.153Z" 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 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-07-02T09:34:10.155Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/connectors/connectors/" service: "All Services" -------------------------------------------------------------------------------- # Catalyst Connectors 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-07-02T09:34:10.155Z" 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 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-07-02T09:34:10.155Z" 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 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-07-02T09:34:10.155Z" 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 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-07-02T09:34:10.155Z" 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 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-07-02T09:34:10.156Z" 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 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-07-02T09:34:10.156Z" 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 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-07-02T09:34:10.156Z" 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 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-07-02T09:34:10.156Z" 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 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-07-02T09:34:10.156Z" 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 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-07-02T09:34:10.156Z" 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 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-07-02T09:34:10.156Z" 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 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-07-02T09:34:10.157Z" 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 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-07-02T09:34:10.157Z" 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 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-07-02T09:34:10.157Z" 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 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-07-02T09:34:10.157Z" 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 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-07-02T09:34:10.157Z" 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 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-07-02T09:34:10.157Z" 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 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-07-02T09:34:10.157Z" 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 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-07-02T09:34:10.157Z" 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 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-07-02T09:34:10.158Z" 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 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-07-02T09:34:10.158Z" 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 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-07-02T09:34:10.158Z" 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 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-07-02T09:34:10.158Z" 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 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-07-02T09:34:10.158Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/serverless/appsail/implement-catalyst-sdk/" service: "Serverless" -------------------------------------------------------------------------------- # Implement Catalyst SDK in AppSail 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-07-02T09:34:10.158Z" 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 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-07-02T09:34:10.159Z" 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 ### 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-07-02T09:34:10.159Z" 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 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-07-02T09:34:10.159Z" 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 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-07-02T09:34:10.159Z" 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 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-07-02T09:34:10.159Z" 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 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-07-02T09:34:10.159Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/smartbrowz/dataverse/" service: "SmartBrowz" related: - Dataverse (/en/smartbrowz/help/dataverse/introduction/) -------------------------------------------------------------------------------- # Dataverse 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-07-02T09:34:10.159Z" 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 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-07-02T09:34:10.159Z" 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 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-07-02T09:34:10.160Z" 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 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 intialize 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-07-02T09:34:10.160Z" 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 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 intialize 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-07-02T09:34:10.160Z" 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 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 intialize 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-07-02T09:34:10.160Z" 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 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 intialize 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-07-02T09:34:10.160Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/zia-services/get-component-instance/" service: "Zia Services" -------------------------------------------------------------------------------- ### 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-07-02T09:34:10.160Z" 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 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-07-02T09:34:10.160Z" 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 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-07-02T09:34:10.161Z" 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 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-07-02T09:34:10.161Z" 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 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-07-02T09:34:10.161Z" 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 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-07-02T09:34:10.161Z" 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 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-07-02T09:34:10.161Z" 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 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-07-02T09:34:10.161Z" 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 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-07-02T09:34:10.161Z" 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 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-07-02T09:34:10.162Z" 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 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-07-02T09:34:10.162Z" 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 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-07-02T09:34:10.162Z" 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 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-07-02T09:34:10.162Z" 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 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-07-02T09:34:10.162Z" 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 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" } ] } } ## Python ### v1 -------------------------------------------------------------------------------- title: "Overview" description: "Catalyst Python SDK is a library that enables you to build Python apps for your Catalyst project. The Catalyst Python SDK package contains a host of tools and functionalities that help you in developing dynamic and robust Python apps, with powerful backends." last_updated: "2026-07-02T09:34:10.165Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/overview/" service: "All Services" related: - Java SDK (/en/sdk/java/v1/overview/) - Node.js SDK (/en/sdk/nodejs/v2/overview/) - Web SDK (/en/sdk/web/v4/overview/) - Serverless Functions (/en/serverless/help/functions/introduction/) -------------------------------------------------------------------------------- # Python SDK ## Overview Catalyst Python SDK is a library that helps you build robust Catalyst applications and microservices with powerful Python programming elements. The SDK package contains pre-defined modules, classes, and functions that can be used to access the various Catalyst services and their respective components. The prime purpose of Python SDK is to provide a readily available Python environment upon which you could build your Catalyst applications. Since the core attributes and behaviours of all the Catalyst components are pre-configured as a part of the SDK, you can quickly access them and implement the required component functionalities inside the Catalyst Serverless functions and build your application logic upon them easily. You can create Basic I/O, Advanced I/O, Cron, Event or Integration functions using the Python programming environment. The SDK packages help to minimize the time and effort spent on building certain application features from scratch as the required component specific functionalities can be accessed instantly by calling the pre-defined Python methods in the SDK, using an object. The Catalyst Python SDK package allows you to perform multiple backend jobs such as user Authentication, Data Store and File Store specific actions, caching, querying, search, document processing, workflow management, Catalyst function executions, and more. The Python SDK documentation explains the process of building Catalyst applications in the Python environment. You can learn about the components, configurations of the SDK package, the scopes of the SDK methods and also access the sample code snippets for various operations in this documentation. -------------------------------------------------------------------------------- title: "Components" description: "This page contains information regarding the Catalyst services and components that Catalyst Python SDK includes." last_updated: "2026-07-02T09:34:10.165Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/components/" service: "All Services" related: - CloudScale Help (/en/cloud-scale/getting-started/introduction) - Serverless Help (/en/serverless/getting-started/introduction) - Zia Services Help (/en/zia-services/getting-started/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Components of the Python SDK Catalyst Python SDK comprises of pre-defined packages and modules to work with all the Catalyst components. The classes present within each module include methods that help perform various operations using the Catalyst components in your application. The **zcatalyst-sdk** is the base package of the Catalyst Python SDK. It enables you to initialize the SDK package and implement the various Catalyst components in your application. The zcatalyst-sdk package allows you to implement the components of the following Catalyst services: ### Cloud Scale * Authentication * Data Store * File Store * Stratus * No SQL * Search * Cache * Mail * Push Notifications ### Serverless * Functions * AppSail * Circuits ### Zia Services * OCR * Face Analytics * Identity Scanner * Image Moderation * Object Recognition * Barcode Scanner * Text Analytics ### Other Services * Job Scheduling * Pipelines Note: You can explore the scopes of the range of operations available for the mentioned components in the Scopes Table. The hierarchy of the entities present with the zcatalyst-sdk package is depicted in the diagram below. The core functionalities of the components such as the Data Store, File Store, Cache, Push Notifications, and the ones that are a part of the Zia services are configured in individual sub-packages within the base package. The features of other components such as Authentication, Circuits, Functions, Search, Cron and ZCQL are configured as individual modules within the base package and they include the corresponding Python classes and methods. ### Instance Objects The zcatalyst-sdk base package contains the pre-defined Python modules and packages for each Catalyst component. The classes present within the modules contains corresponding methods for each operation to be performed using the Catalyst components. You can access the methods by creating an instance of the Python object, that can be fetched during initialization of the SDK. For detailed steps on initialization of the Python SDK, please refer to the setup help page. An **instance object** or **component instance** is a dummy object that can be used to retrieve the properties of a Catalyst component by accessing the methods present in the Python classes specific to that particular component. Therefore, to retrieve the properties of a particular Catalyst component you must call the component's object instance with the pre-defined method. -------------------------------------------------------------------------------- title: "SDK Scopes" description: "This page describes the SDK scopes of the Python SDK." last_updated: "2026-07-02T09:34:10.168Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/sdk-scopes/" service: "All Services" related: - Catalyst Java SDK (/en/sdk/java/v1/overview/) - Catalyst Node.js SDK (/en/sdk/node/v2/overview/) -------------------------------------------------------------------------------- # Python SDK Scopes This section outlines the various SDK operations supported and their corresponding scopes. To perform these operations, you must initialize the SDK with either the **Admin** or **User** scope, as specified in the table. For more details on initializing the SDK with the required scopes, refer to this section. <table class="content-table"> <thead> <tr> <th class="w30p">Service Name</th> <th class="w70p">Component Name</th> <th class="w70p">SDK Operations</th> <th class="w70p">Scope</th> </tr> </thead> <tbody> <tr> <td>Catalyst CloudScale</td> <td>DataStore</td> <td>Get Meta Data of All Tables, Get All Columns, Get Column Details, Delete Single Row, Delete All Rows, Update Single Row, Update All Rows, Get Row, Get All Rows </td> <td>User, Admin</td> </tr> <tr> <td>Catalyst CloudScale</td> <td>DataStore</td> <td>Bulk Operations</td> <td>Admin</td> </tr> <tr> <td>Catalyst CloudScale</td> <td>FileStore</td> <td>Get Details of All Folders, Get Details of a Single Folder, Upload a File, Download a File, Delete a File</td> <td>User, Admin</td> </tr> <tr> <td>Catalyst CloudScale</td> <td>FileStore</td> <td>Other File Operations</td> <td>Admin</td> </tr> <tr> <td>Catalyst CloudScale</td> <td>User Management</td> <td>Get Details of Current User, Reset Password </td> <td>User, Admin</td> </tr> <tr> <td>Catalyst CloudScale</td> <td>Cache</td> <td>All Operations</td> <td>Admin</td> </tr> <tr> <td>Catalyst CloudScale</td> <td>Search</td> <td>Execute Search Query</td> <td>User, Admin</td> </tr> <tr> <td>Catalyst CloudScale</td> <td>ZCQL</td> <td>Execute Query</td> <td>User, Admin</td> </tr> <tr> <td>Catalyst CloudScale</td> <td>Email</td> <td>Send Mail</td> <td>User, Admin</td> </tr> <tr> <td>Catalyst CloudScale</td> <td>Push Notifications</td> <td>All Operations</td> <td>Admin</td> </tr> <tr> <td>Catalyst Serverless</td> <td>Circuits</td> <td>All Operations</td> <td>Admin</td> </tr> <tr> <td>Catalyst Zia Services</td> <td>All Components</td> <td>All Operations</td> <td>Admin</td> </tr> <tr> <td>Catalyst Quick ML</td> <td>All Components</td> <td>All Operations</td> <td>Admin</td> </tr> <tr> <td>Catalyst SmartBrowz</td> <td>All Components</td> <td>All Operations</td> <td>Admin</td> </tr> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Setup" description: "This page describes the steps to follow to setup and initialize the Python SDK." last_updated: "2026-07-02T09:34:10.168Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/setup/" service: "All Services" related: - Install Python (https://www.python.org/) - Install Pip (https://pip.pypa.io/en/stable/installation/#) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Python SDK Setup ### Prerequisites Before you begin developing your application logic with Catalyst Python SDK in your local environment, please ensure you have the following package manager and programming environment installed on your local machine: * **Pip - Python Package Manager** * **Python version 3.10 to 3.13** You can install Python from their official website and the pip package manager will be auto-installed in your local system. Please make sure you install the pip package manually if you install Python from other sources. You can refer to the pip installation documentation for installing pip. Note: If you have other versions of Python installed in your local machine (any version outside the supported range of Python 3.10 to 3.13), then the execution of the Python functions in your directory will be skipped when the application is being served or deployed. These Python functions are also excluded when you pull the functions from the console to the CLI. If you are creating Python functions in an existing Catalyst project in your local directory, you can install the prerequisites mentioned above, and proceed to set up the function. The steps to set up a Python function in an existing project directory are given in this help page. To learn about initalizing a Python function during Catalyst project initialization, refer this help page. <br> ### Installing the SDK When you initialize a Catalyst project in the CLI and create or set up a Python function in an existing project directory in your local environment, the Python SDK package (zcatalyst-sdk) will automatically be installed inside the functions directory of your current project. A main function file and a configuration file will be auto-generated with the boilerplate code in your function's directory by default when you create a Catalyst Serverless function of any programming stack. For Python functions, an additional file named requirements.txt will also be created. This file contains the list of installed dependencies that are needed to implement the Python function. By default, it contains the entry for Catalyst's Python SDK package (zcatalyst-sdk), when you create the Python function from the CLI. When you need to install external dependencies, you will need to add the name of the dependency manually in the requirements.txt file. Note: If it is your first time initializing a Python function, you will need to additionally set the path information of Python installed in your system. You can set this information in a specific configuration file that is present in your local system as a hidden file. The path will need to be set using the config:set &lt;key=value&gt; CLI command. You can find out more about this command from this help page. You can use the following command to install the Catalyst Python SDK globally in your system: pip install zcatalyst-sdk <br> ### Initializing the SDK After Python SDK is installed in your function's directory, you can begin coding the Python function. You must first initialize the SDK within the function's code, using the initialize() method to access the Catalyst components of the current project. The initialization methods for the Catalyst function types are given below: **Basic I/O Functions** import zcatalyst_sdk def handler(context, basicio): app = zcatalyst_sdk.initialize() #This app variable is used to access the Catalyst components. #Your business logic comes here **Advanced I/O Functions** import zcatalyst_sdk def handler(request: Request): app = zcatalyst_sdk.initialize() #This app variable is used to access the Catalyst components. #Your business logic comes her **Event Functions** import zcatalyst_sdk def handler(event, context): app = zcatalyst_sdk.initialize() #This app variable is used to access the Catalyst components. #Your business logic comes here **Cron Functions** import zcatalyst_sdk def handler(cron_details, context): app = zcatalyst_sdk.initialize() #This app variable is used to access the Catalyst components. #Your business logic comes here When you initialize the SDK package inside the function, it returns a Python object as the response. This object can be used to call the component-specific methods defined in the Python classes and access the required Catalyst components. Note : You can create Python functions both from the web console or the CLI, based on your preference. However, you can only upload the function bundle from the local and can't code it in the console directly for now. We will be providing support for online editors in the future. <br> ### Initializing 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:<br /> * 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. * To learn more about the scopes of the SDK operations that can be performed in various components, refer to the Scopes Table * 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 or the Bucket Permissions section of the Data Store and Stratus respectively. * Catalyst Stratus is a brand new object storage component in the Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. The SDK snippets below will allow you to initialize the SDK using either *Admin* or *User* scope : **Admin Scope** import zcatalyst_sdk def handler(request: Request): app = zcatalyst_sdk.initialize(scope='admin') #This app variable is used to access the catalyst components. #You can refer the SDK docs for code samples. #Your business logic comes her **User Scope** import zcatalyst_sdk def handler(request: Request): app = zcatalyst_sdk.initialize(scope='user') #This app variable is used to access the catalyst components. #You can refer the SDK docs for code samples. #Your business logic comes here We will be discussing about upgrading the Python SDK in the next section. -------------------------------------------------------------------------------- title: "Upgrade SDK" description: "This page describes the steps to upgrade the Python SDK to the latest supported version in your code" last_updated: "2026-07-02T09:34:10.169Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/upgrade-sdk/" service: "All Services" related: - Catalyst Java SDK (/en/sdk/java/v1/overview/) - Catalyst Node.js SDK (/en/sdk/node/v2/overview/) -------------------------------------------------------------------------------- # Upgrade Your Python SDK Catalyst constantly strives to provide you with the latest, most secure, and efficient SDK packages to streamline your development process. We also upgrade our SDK support based on the upgrades in the technology. That is, when a new version of Python 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 recommend keeping up with the latest Catalyst SDK updates and bug fixes through our Release Notes and upgrading to the latest versions as they become available. Our SDK updates align with official Python releases, incorporating their latest enhancements while phasing out deprecated versions. Additionally, we continuously introduce new components and features to enhance the SDK experience. Note: If an immediate upgrade of your SDK is required due to deprecating an old SDK version, we will ensure you are notified on time via email to perform the necessary upgrades. Generally, it's highly recommended that you always upgrade your SDK to the latest version. You can upgrade your SDK globally and within Python functions. We will be discussing about steps to upgrade the SDK in both the places in this help doc. Note: When you upgrade the SDK globally, the existing functions won't automatically reflect the updated version. To apply the global version, you need to remove the specified version from the requirements.txt file of each function. <br> ### Upgrade SDK Globally To upgrade the Catalyst Python SDK globally, you can use the commands below from any directory in your terminal : Install a Specific Package To install a specific Python SDK version's package, execute the following command. Please ensure to replace the version number of the SDK package with the one you require. pip install zcatalyst-sdk==0.0.2 <br/> Note: 1. It is always recommended that you install the latest version of the SDK rather than a specific version. 2. By default, while executing Python functions, the function considers the SDK package listed in the requirements.txt file. If want to use the SDK that is installed globally, please remove the SDK package from requirements.txt file. <br> ### Install Latest Version Installing the latest version of the SDK gives you access to the newest features and includes all recent bug fixes. To install the latest available version of the SDK at any time, execute the following command: pip install zcatalyst-sdk <br> ### Upgrade SDK in a Function To upgrade the Catalyst Python SDK for a specific function, please follow the below steps: 1. Launch your terminal and navigate to the Python function's source directory. For example, consider you have a Catalyst project named "Pets Conglomerate" installed through the CLI in your system: **/Users/user/apps/petsConglomerate**. In this project, 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. Open the requirements.txt file in this function's directory, and update the version of the Python SDK and save the file. For example : zcatalyst-sdk==1.0.0rc1 3. Execute the below command to make sure the updated SDK version is reflected in your CLI instance. pip install -r requirements.txt This command ensures the updates in the latest version are reflected in the CLI right away. -------------------------------------------------------------------------------- title: "Exceptions" description: "This help page lists the common exceptions that can occur in your Catalyst Python app executions" last_updated: "2026-07-02T09:34:10.169Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/exceptions/" service: "All Services" -------------------------------------------------------------------------------- # Exceptions Exceptions are unexpected faulty behaviours that occur during execution of the application. All errors and exceptions thrown by the Catalyst applications built upon Python environment are handled by the Exceptions module and the classes within it. When an error or exception occurs in your application, the following properties of the exception are returned: * code: Unique identifier of the error. * errorMsg: General description about the error. * errorDetails: Additional information about the error. * originalException: In case of HTTP requests, returns HTTP status codes. Or else returns "None". The base class CatalystError is pre-defined in the Exceptions module of the Catalyst Python SDK package. It is inherited by multiple sub-classes which handles the exception and error scenarios that might occur during execution of the Catalyst components in your application. An individual error class is configured for each Catalyst component as a part of the Python SDK and any unexpected events in the defined flow of the component executions, the respective errors will be thrown. #### Example : Consider you are executing a Catalyst Serverless function in your Catalyst application and the function returns an error code as the response. In this case, the respective error class pre-defined for the Functions component (CatalystFunctionError) will handle the scenario. Likewise, if you are performing an incorrect database specific operation in the Catalyst DataStore, the exception will be caught and handled within the CatalystDataStoreError class. Therefore, a unique error class is pre-defined for each Catalyst component as a part of the Exceptions module. The other common classes included in the module are CatalystAuthenticationError, Catalyst FileStore Error, Catalyst CacheError,Catalyst CronError,CatalystZiaError and more. Additionally, the exceptions that are not caught by any component specific Python classes are handled in the CatalystAPIError class. This class handles the exceptions caught at the API level and defines the error codes for the failed API requests. Listed below are some of the typical API error codes applicable to all Catalyst components: <table class="content-table"> <thead> <tr> <th class="w30p">Error Codes</th> <th class="w70p">Descriptions</th> </tr> </thead> <tbody> <tr> <td><strong>INVALID ARGUEMENT ERROR</strong></td> <td>The arguments passed is not of a valid type for the specific format.</td> </tr> <tr> <td><strong>INVALID CREDENTIAL ERROR</strong></td> <td>The credentials entered is not valid.</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Integrate SDK in Third-Party Apps" last_updated: "2026-07-02T09:34:10.169Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 Python SDK Integration in Third-Party Applications You can integrate and use the Catalyst Python 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 Python 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 Python 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 Python 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 Python 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 Catalyst 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**. <br> 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**. <br> 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. <br> v. Switch to the **Client Secret** tab and note down the client ID and the client secret details. <br> 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 Python SDK into your application. The code below demonstrates this with the example of fetching buckets from Catalyst CloudScale Stratus. <br> ### Code Snippet import zcatalyst_sdk from zcatalyst_sdk import credentials from zcatalyst_sdk import types from zcatalyst_sdk.types import ICatalystOptions from flask import Flask, Request, make_response, jsonify from typing import Dict, Literal app = Flask(__name__) def list_all_buckets(): Cred = { "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 } project_id = PROJECT_ID //Provide Project ID value here project_key = ZAID //Provide ZAID value here environment = "Development" //Provide value as either "Development" or "Production" catalyst_credential = credentials.RefreshTokenCredential(Cred) catalyst_options = ICatalystOptions( project_id=project_id, project_key=project_key, project_domain="https://api.catalyst.zoho.com", environment=environment, ) catalystApp = zcatalyst_sdk.initialize_app( credential=catalyst_credential, options=catalyst_options, name="TaskSDKPython" ) stratus = catalystApp.stratus() buckets = stratus.list_buckets() print(buckets) return jsonify({"message": "Success", "bucket_data": buckets}) @app.route("/listbuckets", methods=["GET"]) def handle_list_all_buckets(): return list_all_buckets() if __name__ == "__main__": with app.app_context(): response = handle_list_all_buckets() port = 3006 printf("Server running on http://localhost:{port}") app.run(port=port) #### Cloud Scale ##### Authentication -------------------------------------------------------------------------------- title: "Get Authentication Instance" description: "This page describes the method to create a component instance in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.169Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/authentication/get-component-instance/" service: "Cloud Scale" related: - Authentication Help (/en/cloud-scale/help/authentication/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Authentication Catalyst Cloud Scale Authentication features in Python SDK help you perform user authentication-specific operations, such as adding a new user, fetching details of the current user or all users, resetting the password of an existing user account, and deleting a user. ### Get a Component Instance A component instance is an object that can be used to access the predefined configurations specific to a particular component. You can create a component instance for Authentication to execute various user management actions, which will not fire a server-side call. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new authentication_serviceinstance as shown below : #Get Authentication component instance authentication_service = app.authentication() This component instance will be used as shown in the various Authentication sections of the Python SDK documentation. -------------------------------------------------------------------------------- title: "Add New User" description: "This page describes the method to add new end-users to your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.169Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 Help (/en/cloud-scale/help/authentication/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Add New User You can add end-users to your Catalyst application and they will be assigned to a default organization automatically, if the organization is not specified explicitly. When the user is added, a unique user_ID and ZUID are generated for them by Catalyst. #### Create a Dictionary Before you add a new user to the Catalyst application, you must create a dictionary that contains the user details such as the last name of the user, the role they have to be assigned to, their email address, the application platform and the ZAID data based on the current working environment. The dictionary that contains these details will be passed as a parameter to the register_user() 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. * You can obtain the ZAID from the Environment settings in your 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 dictionary signup_config = { "platform_type": "web", "zaid": "81008807534807534", "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;", }, } user_details = { "first_name": "Amelia", "last_name": "Burrows", "role_id": "1008807534", "email_id": "amelia.burrows@zylker.com", } ### Add New User After you have configured the necessary user information in the dictionary, you can proceed to add a new user to an organization. In this case, an organization will automatically be assigned to the user. The register_user() method handles the user creation process and returns a response. To know more about the component instance authentication_service used below, please refer to this section. Note : You will only be able to add 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. **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>signup_config</td> <td>Object</td> <td>A Mandatory parameter. Will store the user registration details, including the application platform, ZAID, and the email information to be sent after registration.</td> </tr> <tr> <td>user_details</td> <td>Object</td> <td>A Mandatory parameter. Will hold the user registration details such as first name, last name, email ID and the ID of the organization to which the user has to be added.</td> </tr> </tbody> </table> #Add a new user authentication_service = app.authentication() response_data = authentication_service.register_user(signup_config, user_details) A sample response is shown below : { "zaid":"81008807534807534", "user_details":{ "zuid":"1005641290", "org_id":"1005641456", "status":"ACTIVE", "is_confirmed":false, "email_id":"amelia.burrows@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "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":"1005641456" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Add New User to Existing Org" description: "This page describes the method to add a new user to the existing organisation in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.170Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 Help (/en/cloud-scale/help/authentication/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Add a New User to an Existing Organization 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. When the user has signed up, unique identification values such as ZUID and User ID are created for them by Catalyst. Note : * You must provide the values for org_id, email_id, last_name mandatorily to add a user to an existing organization. * You can obtain the ZAID from the Environment settings in your Catalyst console. * 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 Dictionary Before you add a new end-user to your Catalyst application, you must create a dictionary that contains the registration details of the particular user, as shown below. You can then pass the configured dictionary to the method that handles the user signup process. #Create a dictionary signup_config = { "platform_type": "web", "zaid": "1008807534", "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;", }, } user_details = { "first_name": "Amelia", "last_name": "Burrows", "email_id": "amelia.burrows@gmail.com", "org_id": "1005641456", } ### Add a New User to Existing Org You can add a new end-user to an existing organization using the code below. You must pass the dictionary you created in the previous section as an argument to the add_user_to_org() method. This method handles the user sign-up process and returns a response. Note : You will only be able to add 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. To know more about the component instance authentication_service used below, please refer to 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>signup_config</td> <td>Object</td> <td>A Mandatory parameter. Will store the user registration details, including the application platform, ZAID, and the email information to be sent after registration.</td> </tr> <tr> <td>user_details</td> <td>Object</td> <td>A Mandatory parameter. Will hold the user registration details such as first name, last name, email ID and ID of the organization to which the user has to be registered.</td> </tr> </tbody> </table> #Add new user to an existing organization authentication_service = app.authentication() response_data = authentication_service.add_user_to_org(signup_config, user_details) A sample response is shown below : { "zaid":"1008807534", "user_details":{ "zuid":"1005643749", "org_id":"1005641456", "status":"ACTIVE", "is_confirmed":false, "email_id":"amelia.burrows@gmail.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":"1005641456" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Reset Password" description: "This page describes the method to reset the password of a user account in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.170Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/authentication/reset-password/" service: "Cloud Scale" related: - Reset Password - API (/en/api/code-reference/cloud-scale/authentication/reset-user-password/#ResetUserPassword) - Authentication Help (/en/cloud-scale/help/authentication/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Reset Password You can reset the password of a registered user's account using the following code snippet. While calling the reset_password() method, a reset password link will be generated and sent to the user's email address. Note: * The email_id, platform_type, and zaid are 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 Dictionary You will need to create a dictionary that contains the registration details of a particular user as given below. You can then pass the configured dictionary to the method that handles the password reset process. #Create a dictionary reset_config = { "platform_type": "web", "zaid": "1008807534", "template_details": { "senders_mail": "dogogetu@tutuapp.bid", "subject": "Welcome to %APP_NAME%", "message": "<p>Hello ,</p> <p>Follow this link to join in %APP_NAME% .</p> <p><a href='%LINK%'>%LINK%</a></p><p>If you didnt ask to join the application, you can ignore this email.</p><p>Thanks,</p> <p>Your %APP_NAME% team</p>", }, } ### Reset the Password The objects that contains the user information and user signup configuration are passed as arguments to the reset_password() method which returns a response. To know more about the component instance authentication_service used below, please refer to 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>email_id</td> <td>String</td> <td>A Mandatory parameter. Will hold the value of the the user's email address.</td> </tr> <tr> <td>reset_config</td> <td>Object</td> <td>A Mandatory parameter. Will store the details of the user account for which the password needs to be reset. These details include the application platform type, the ZAID, and the email information to be sent after the password reset.</td> </tr> </tbody> </table> user = app.user_management() users = user.reset_password('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' } }) print(users) A sample response is shown below : "Reset link sent to amelia.burrows@zylker.com. Please check your email". Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Custom User Validation" description: "This page describes the method to reset the password of a user account in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.170Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/authentication/custom-user-validation/" service: "Cloud Scale" related: - Authentication Help (/en/cloud-scale/help/authentication/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Custom User Validation 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. To know more about the component instance authentication_service used below, please refer to this section. A sample code for a Custom User Validation function is given below. **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>basicio</td> <td>Function</td> <td>A Mandatory parameter. The Basic IO Catalyst function that allows to authorize and validate your end-users.</td> </tr> </tbody> </table> import json import zcatalyst_sdk def handler(context, basicio): app = zcatalyst_sdk.initialize() authentication_service = app.authentication() request_details = authentication_service.get_signup_validation_request(basicio) if request_details: print("response :", request_details) if "spam.com" in request_details["user_details"]["email_id"]: basicio.write(json.dumps({"status": "failure"})) else: basicio.write( json.dumps( { "status": "success", "user_details": { "first_name": "Amelia", "last_name": "Jack", "role_identifier": "cx_role", "org_id": 1012535411 # If you are providing the Org ID, it must be copied 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" } } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Generate a Custom Server Token" description: "This page describes the method to reset the password of a user account in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.170Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/authentication/third-party-server-token/" service: "Cloud Scale" related: - Authentication Help (/en/cloud-scale/help/authentication/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Generate a Custom Server Token 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. Info : Refer to the SDK Scopes table to determine the required permission level for performing the below operation. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">String</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>type</td> <td>String</td> <td>A Mandatory parameter. Will hold the value of the application type.</td> </tr> <tr> <td>user_details</td> <td>Object</td> <td>A Mandatory parameter. Will hold values of first_name and email_id of the end user.</td> </tr> </tbody> </table> import zcatalyst_sdk def handler(context, basicio): app = zcatalyst_sdk.initialize() auth = app.authentication() resp = auth.generate_custom_token( { "type": "web", "user_details": { "first_name": "Amelia", "email_id": "amelia.burrows@zylker.com", }, } ) basicio.write(str(resp)) context.close() 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: "Get User Details" description: "This page describes the method to fetch user details from the Data Store in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.170Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/authentication/get-user-details/" service: "Cloud Scale" related: - Get User Details - API (/en/api/code-reference/cloud-scale/authentication/get-current-user/#GetCurrentUser) - Authentication Help (/en/cloud-scale/help/authentication/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Get user details 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 get_current_user() method fetches the details of the current user accessing the application and on whose scope the function is being executed. To know more about the component instance authentication_service used below, please refer to this section. #Get details of user authentication_service = app.authentication() current_user = authentication_service.get_current_user() A sample response is shown below : { "zuid":"1005641433", "org_id":"1005641434", "status":"ACTIVE", "is_confirmed":false, "email_id":"amelia.burrows@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "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 userID of the user to the get_user_details() method. The response returns the details of the particular user, such as their lastname, the list of the roles the user holds, the type of the user, the orgID of the organization the user belongs to, their email address, and more. To know more about the component instance authentication_service used below, please refer to 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>user_id</td> <td>String</td> <td>A Mandatory parameter. Will store the unique ID of the user whose details need to be retrieved.</td> </tr> </tbody> </table> #Get details by userid authentication_service = app.authentication() user_details=authentication_service.get_user_details('12345') A sample response is shown below : { "zuid":"1005665160", "org_id":"1005665245", "status":"ACTIVE", "is_confirmed":false, "email_id":"mikerogers@zylker.com ", "first_name":"Michael", "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 get_all_users() method can fetch the details of all the users of all organizations. The response returns the following details of all the users : lastname, the list of the roles, the type of the user, email address, userID, zuid, time zone, and more. To know more about the component instance authentication_service used below, please refer to this section. #Get details of all users authentication_service = app.authentication() user_details = authentication_service.get_all_users() A sample response is shown below : [ { "zuid":"1005648252", "org_id":"1005648253", "status":"ACTIVE", "is_confirmed":false, "email_id":"p.boyle@zylker.com", "first_name":"Parker", "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", "org_id":"1005665245", "status":"ACTIVE", "is_confirmed":false, "email_id":"rsmith@zylker.com ", "first_name":"Robert", "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":[ ] } ] ### Get Details of All Users in an org The org_id is passed as a parameter to the get_all_users() method in order to fetch the users belonging to a particular organization. To know more about the component instance authentication_service used below, please refer to 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>org_id</td> <td>String</td> <td>An Optional parameter. Will store the ID of the organization whose user details need to be retrieved. If `org_id` is not specified, details of all users across all organizations will be retrieved.</td> </tr> </tbody> </table> #Get details of all users authentication_service = app.authentication() user_details = authentication_service.get_all_users(1293028) A sample response is shown below : [ { "zuid":"1005648252", "org_id":"1005648253", "status":"ACTIVE", "is_confirmed":false, "email_id":"roger.p@zylker.com", "first_name":"Roger", "last_name":"Parkinson", "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":[ ] } ] Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Update User Details" description: "This page describes the method to reset the password of a user account in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.170Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/authentication/update-user-details/" service: "Cloud Scale" related: - Authentication Help (/en/cloud-scale/help/authentication/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Update User Details Catalyst allows you to modify and update the following details of an end-user: * First Name * Last Name * OrgID : OrgID 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. ### Create a dictionary update_config = { "email_id": "amelia.burrows@zylker.com", "last_name": "Burrows", "first_name": "Amelia", "org_id": "1012585680", "role_id": "6759000000054065", } The SDK snippet below demonstrates updating an end-user’s details using the update_user_details(userID, userDetails) method. The first name of the user is updated in the example below. To know more about the component instance authentication_service used below, please refer to 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>UserID</td> <td>String</td> <td>A Mandatory parameter. Will hold the UserID of the user whose details are to be updated.</td> </tr> <tr> <td>update_config </td> <td>Object</td> <td>A Mandatory parameter. Will hold the values of email_id, last_name, first_name, org_id and role_id. You can update the first_name or last_name parameter here.</td> </tr> </tbody> </table> authentication_service = app.authentication() user_details=authentication_service.update_user_details('6759000000124659', update_config) Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Delete User" description: "This page describes the method to delete users from your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.170Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/authentication/delete-user/" service: "Cloud Scale" related: - Authentication Help (/en/cloud-scale/help/authentication/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Delete a User The end-user of a Catalyst application can be deleted from a Catalyst application to discontinue their access to it. This can be done by calling the delete_user() method and by passing the UserID of the user to be deleted as a parameter to it. This method returns a response as true when the user is deleted. To know more about the component instance authentication_service used below, please refer to 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>UserID</td> <td>String</td> <td>A Mandatory parameter. Will store the ID of the user to be deleted.</td> </tr> </tbody> </table> #Delete an existing user authentication_service = app.authentication() delete_response = authentication_service.delete_user(2305000000007745) Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Enable or Disable a User" description: "This page describes the method to enable or disable a user in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.170Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/authentication/enable-disable-user/" service: "Cloud Scale" related: - Authentication Help (/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) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Enable or Disable a User 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 update_user_status(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 know more about the component instance authentication_service used below, please refer to this section. ### To Enable a User **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>userId</td> <td>String</td> <td>A Mandatory parameter. Will hold the UserID of the user to be enabled for the application.</td> </tr> <tr> <td>user_status</td> <td>String</td> <td>A Mandatory parameter. Will hold the default value "enable".</td> </tr> </tbody> </table> authentication_service = app.authentication() user_details = authentication_service.update_user_status('6759000000124659', 'enable') # Replace the user id ### To Disable a User **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>userId</td> <td>String</td> <td>A Mandatory parameter. Will hold the UserID of the user to be disabled for the application.</td> </tr> <tr> <td>user_status</td> <td>String</td> <td>A Mandatory parameter. Will hold the default value "disable"</td> </tr> </tbody> </table> authentication_service = app.authentication() user_details = authentication_service.update_user_status('6759000000124659', 'disable') # Replace the user id Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ##### Cache -------------------------------------------------------------------------------- title: "Get Cache Instance" description: "This page describes the method to delete a key-value pair using a key or cache object in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.170Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/cache/get-component-instance/" service: "Cloud Scale" related: - Cache Help (/en/cloud-scale/help/cache/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Cache Catalyst Cloud Scale Cache is provided as an ephemeral storage component that can be used independently of your main data storage unit. It is highly useful when implemented in dynamic, memory-intensive applications. Catalyst cache can be implemented in your application using the SDK methods listed below. # Get component instance A component instance is an object that can be used to access the pre-defined configurations specific to a particular component. This process will not fire a server-side call. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new cache_serviceinstance as shown below. This instance will be used in multiple scenarios while performing cache component related operations. #Get cache component instance cache_service = app.cache() -------------------------------------------------------------------------------- title: "Get Segment Instance" description: "This page describes the method to get a cache segment instance in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.170Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/cache/get-segment-instance/" service: "Cloud Scale" related: - Cache Help (/en/cloud-scale/help/cache/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Get a segment instance To know more about the component instance cache_service used below, please refer to this section. When the segment ID is passed as a parameter, the cache implementation will refer to that particular segment. When the segment ID is not specified explicitly, then it will refer to the default segment. #Get segment instance cache_service = app.cache() segment_service = cache_service.segment() -------------------------------------------------------------------------------- title: "Retrieve Data from the Cache" description: "This page describes the method to retrieve data from the cache in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.170Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 Help (/en/cloud-scale/help/cache/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Retrieve data from the cache ### Get Cache Value Catalyst Cloud Scale 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 type String. You can retrieve the value of a cache item from a segment in the cache using the get_value() method. You must pass the key name as the argument and the value corresponding to that key will be returned as a response. To know more about the component instance cache_service and the segment_service segment_service used below, please refer to their respective help sections. **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 key for retrieving the cache value.</td> </tr> </tbody> </table> #Get cache value cache_service = app.cache() segment_service = cache_service.segment() data = segment_service.get_value('key') A sample response is shown below : { "cache_name": "Name", "cache_value": "Amelia Burrows", "expires_in": "Mar 09, 2023 06:20 PM", "expiry_in_hours": "48", "project_details": { "id": "2648000001343001", "project_name": "appEngine", "project_type": "Live", }, "segment_details": {"id": "2648000001343037", "segment_name": "Default"}, "ttl_in_milliseconds": "172800000", } ### Get Cache Object You can retrieve the details of the cache where the key-value pair is of type dictionary. The key object is retrieved using the get() method, where the key name is passed as an argument. To know more about the component instance cache_service and the segment instance segment_service used below, please refer to their respective help sections. **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>cache_name</td> <td>String</td> <td>A Mandatory parameter. Will hold the key for retrieving the cache object.</td> </tr> </tbody> </table> cache_service = app.cache() segment_service = cache_service.segment() data = segment_service.get('key') A sample response is shown below : { cache_name: "Name", cache_value: "Amelia Burrows", project_details: { project_name: "AlienCity", id: "2136000000007733" }, segment_details: { segment_name: "Location", id: "2136000000008572" }, expires_in: "Aug 18, 2021 06:39 PM", expiry_in_hours: "47", ttl_in_milliseconds: "172727000" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Insert Data to Cache" description: "This page describes the method to insert data into the cache in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.171Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/#InsertKey-ValueinCacheSegment) - Cache Help (/en/cloud-scale/help/cache/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Insert Data in Cache 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 type String and are passed as arguments to the method. You can also optionally pass the expiry time parameter. The expiration time will be set to 48 hours by default if the value is not specified explicitly. To know more about the component instance cache_service and the segment instance segment_service used below, please refer to their respective help sections. **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>cache_name</td> <td>String</td> <td>A Mandatory parameter. Will hold the key to be inserted in the cache.</td> </tr> <tr> <td>cache_value</td> <td>String</td> <td>A Mandatory parameter. Will hold the value to be inserted in the cache.</td> </tr> <tr> <td>expiry_in_hours</td> <td>Numeric</td> <td>A Optional parameter. Will hold the value of the expiry time of the data.</td> </tr> </tbody> </table> # Insert Data to Cache cache_service = app.cache() segment_service = cache_service.segment() segment_service.put('Name', 'Smith',2) A sample response is shown below : { cache_name: "Name", cache_value: "Smith", project_details: { project_name: "AlienCity", id: "2136000000007733" }, segment_details: { segment_name: "Location", id: "1234324234" }, expires_in: "Aug 18, 2021 06:46 PM", expiry_in_hours: "2", ttl_in_milliseconds: "172800000" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Update Data in Cache" description: "This page describes the method to update data in the cache in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.171Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 Help (/en/cloud-scale/help/cache/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Update Data in Cache 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. You can also optionally pass the expiry time parameter. The expiration time will be set to 48 hours by default if the value is not specified explicitly. To know more about the component instance cache_service and the segment instancesegment_service used below, please refer to their respective help sections. **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>cache_name</td> <td>String</td> <td>A Mandatory parameter. Will hold the key to be updated in the cache.</td> </tr> <tr> <td>cache_value</td> <td>String</td> <td>A Mandatory parameter. Will hold the value of the key that has to be updated in the cache.</td> </tr> </tbody> </table> #Update data in cache cache_service = app.cache() segment_service = cache_service.segment() segment_service.update('Name', 'Michael Scott') A sample response is shown below : { cache_name: "Name", cache_value: "Michael Scott", project_details: { project_name: "AlienCity", id: "2136000000007733" }, segment_details: { segment_name: "Data Store", id: "2136000000008572" }, expires_in: "Aug 18, 2021 06:46 PM", expiry_in_hours: "47", ttl_in_milliseconds: "172596000" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- 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 Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.171Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/cache/delete-key-value-pair/" service: "Cloud Scale" related: - Cache Help (/en/cloud-scale/help/cache/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Delete a Key-Value Pair 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. To know more about the component instancecomponent_service and the segment instance segment_service used below, please refer to their respective help sections. ### Delete using a Key You can delete a key-value pair by passing the key name directly as a parameter to the delete() method. **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 key name of the cache segment.</td> </tr> </tbody> </table> #Delete a key-value pair cache_service = app.cache() segment_service = cache_service.segment() segment_service.delete('Name') Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ##### 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-07-02T09:34:10.171Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/connections/get-connections-instance/) -------------------------------------------------------------------------------- # Connections 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 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-07-02T09:34:10.171Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/connections/get-credentials/) -------------------------------------------------------------------------------- # Get Authentication Credentials 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 connections = app.connections() #retrieve the authentication credentials for the specified connection connection_response = connections.get_connection_credentials('payrollcon') #connection response print('connection response:', connection_response) ##### 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 Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.171Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" service: "Cloud Scale" related: - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Data Store Catalyst Cloud Scale Data Store is a cloud-based relational database management system that stores the persistent data of your application. This section covers the various methods that you can use to perform data-intensive operations in the Data Store such as fetching the metadata of the tables and columns, fetching row details, inserting new rows, updating rows, or deleting them. ### Get a component instance A component instance is an object that can be used to access the pre-defined configurations specific to a particular component. This process will not fire a server-side call. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new datastore_serviceinstance as shown below. Also note that this instance will be used in multiple scenarios while performing database specific operations. #Get Data Store component instance datastore_service = app.datastore() -------------------------------------------------------------------------------- title: "Get Table Meta" description: "This page describes the method to fetch the meta data of a single table or multiple tables in your Python application with sample code snippets" last_updated: "2026-07-02T09:34:10.171Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Get Table Metadata The metadata of a single table in the Catalyst Data Store can be obtained in two ways. The data store reference used in the code snippets below is the component instance created earlier. ### Get a Table's Metadata by Table ID A table's meta data is fetched by referring the respective tableID in the method get_table_details() as given below. You can obtain the table ID from the Data Store or from the URL when the table is opened in the console. To know more about the component instance datastore_service used below, please refer to this help 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>tableID</td> <td>String</td> <td>A Mandatory parameter. Will hold the ID of the table whose meta data has to be retrieved.</td> </tr> </tbody> </table> #Get table metadata using TableID datastore_service = app.datastore() table_data = datastore_service.get_table_details(5249000000011745) A sample response is shown below : { "project_id":{ "project_name":"AlienCity", "id":"2136000000007733" }, "table_name":"COUNTRY", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"amelia@burrows.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":"5249000000011745", "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":"5249000000011745", "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":"2136000000007785" }, { "table_id":"5249000000011745", "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":"2136000000007786" }, { "table_id":"5249000000011745", "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":"2136000000007787" }, { "table_id":"5249000000011745", "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":"2136000000008588" } ], "table_id":"5249000000011745" } ### Get a Table's Metadata by Table Name You can use the below-mentioned code snippet to fetch a table's metadata by referring the table_name. Note : If you rename the table, you must update the changes in the code in all applicable sections. To know more about the component instance datastore_service used below, please refer to this help 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>table_name</td> <td>String</td> <td>A Mandatory parameter. Will hold the name of the table whose meta data has to be retrieved.</td> </tr> </tbody> </table> datastore_service = app.datastore() table_data = datastore_service.get_table_details("Aliens") A sample response is shown below : { "project_id":{ "project_name":"AlienCity", "id":"2136000000007733" }, "table_name":"Aliens", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"amelia.burrows@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":"5249000000011745", "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":"5249000000011745", "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":"2136000000007785" }, { "table_id":"5249000000011745", "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":"2136000000007786" }, { "table_id":"5249000000011745", "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":"2136000000007787" }, { "table_id":"5249000000011745", "column_sequence":"5", "column_name":"AlienType", "category":2, "data_type":"varchar", "max_length":"100", "is_mandatory":false, "decimal_digits":"2", "is_unique":true, "search_index_enabled":true, "column_id":"2136000000008588" } ], "table_id":"5249000000011745" } ### 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. To know more about the component instance datastore_service used below, please refer to this help section. datastore_service = app.datastore() tables = datastore_service.get_all_tables() A sample response is shown below: [ { "project_id":{ "project_name":"AlienCity", "id":"2136000000007733" }, "table_name":"Attackers", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"amelia.burrows@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":"Aliens", "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":"5249000000011745" } ] Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- 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 Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.171Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" service: "Cloud Scale" related: - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Get a Table Instance A table reference can be created by referring to the predefined data store reference by passing either the tableID or table name as the parameter. The datastore_service reference used in the below code snippet is the component instance created earlier. ### Get the Table Instance using TableID The table_service reference can be created by passing the tableID as a parameter to the table() method. To know more about the component instance datastore_service used below, please refer to this help 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>tableID</td> <td>String</td> <td>A Mandatory parameter. Will hold the ID of the table.</td> </tr> </tbody> </table> #Get table instance using table ID datastore_service = app.datastore() table_service = datastore_service.table(5249000000011745) ### Get the Table Instance using Table Name Alternatively, a table reference can be created by referring the tablename in the table() method. There is no explicit response involved in these methods and only the instance of the table is returned. To know more about the component instance datastore_service used below, please refer to this help 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>table_name</td> <td>String</td> <td>A Mandatory parameter. Will hold the name of the table.</td> </tr> </tbody> </table> #Get table instance using table name datastore_service = app.datastore() table_service = datastore_service.table("CITY") -------------------------------------------------------------------------------- title: "Get Column Meta" 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 Python application with sample code snippets" last_updated: "2026-07-02T09:34:10.171Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Get Column Metadata Column metadata details of a single column of a table in the Catalyst Data Store can be retrieved either by using the columnID or the column name. ### Get a Column's Metadata by ID You can fetch a column's meta data of a particular table using get_column_details() method. To know more about the component instancedatastore_service and the table instancetable_service used below, please refer to their respective help sections. **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>columnID</td> <td>String</td> <td>A Mandatory parameter. Will hold the ID of the column for which metadata has to be retrieved.</td> </tr> </tbody> </table> #Get column's metadata using columnID datastore_service = app.datastore() table_service = datastore_service.table("CITY") column_data = table_service.get_column_details(5249000000032372) A sample response is shown below : { table_id: "5249000000011745", 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: "5249000000032372" } ### 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 response is returned here directly. To know more about the component instancedatastore_service and the table instancetable_service used below, please refer to their respective help sections. **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>column_name</td> <td>String</td> <td>A Mandatory parameter. Will hold the name of the column for which metadata has to be retrieved.</td> </tr> </tbody> </table> #Get column's metadata using column name datastore_service = app.datastore() table_service = datastore_service.table("CITY") column_data = table_service.get_column_details("CITYNAME") A sample response is shown below : { table_id: "5249000000011745", 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 in a particular table using get_all_columns() method. To know more about the component instancedatastore_service and the table instancetable_service used below, please refer to their respective help sections. #Get metadata of all columns datastore_service = app.datastore() table_service = datastore_service.table("CITY") columns = table_service.get_all_columns() A sample response is shown below : [ { table_id: "5249000000011745", 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: "5249000000011745", 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: "2136000000007785" }, { table_id: "5249000000011745", 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: "2136000000007786" }, { table_id: "5249000000011745", 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: "2136000000007787" }, { table_id: "5249000000011745", 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: "2136000000008588" } ] Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- 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 Python application with sample code snippets" last_updated: "2026-07-02T09:34:10.171Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Get Rows You can retrieve a single row or multiple rows of data from a table in the Catalyst Data Store. The table_service reference used in these code snippets can either be a table instance or table meta. ### Get A Single Row You can fetch a single row from the table using the get_row() method. You must pass the unique RowID of the row to this method as shown in the code snippet below. To know more about the component instancedatastore_service and the table instancetable_service used below, please refer to their respective help sections. **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>rowID</td> <td>String</td> <td>A Mandatory parameter. Will store the ID of the row whose details has to be retrieved.</td> </tr> </tbody> </table> # Get A Single Row datastore_service = app.datastore() table_service = datastore_service.table("CITY") row_data = table_service.get_row(5249000000032385) A sample response is shown below : { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-17 13:02:11:184", CREATEDTIME: "2021-08-16 16:29:10:499", CITYNAME: "Pune", ROWID: "5249000000032385" } ### 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 get_paged_rows() 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 are fetched, which is validated by a simple if condition, as shown in the code below. You can refer to the table by its unique tablename. 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 max_rows 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, 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 next_token during the subsequent iteration, as shown in the code below. During the first execution of the loop, the value for the next_token string is assigned as None. 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. **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>next_token</td> <td>String</td> <td>A Mandatory parameter. Will store the token from the response data, authorizing subsequent data retrieval.</td> </tr> <tr> <td>max_rows</td> <td>Numeric</td> <td>A Optional parameter. Will hold the the number of batches in which the rows has to be fetched.</td> </tr> </tbody> </table> datastore_service = app.datastore() table_service = datastore_service.table("Aliens") def getMyPagedRows(next_token=None, more_records=True): rows = table_service.get_paged_rows(next_token, max_rows=100) more_records = rows['more_records'] if not more_records: return None next_token = rows['next_token'] return getMyPagedRows(next_token, more_records) getMyPagedRows() When the more_records parameter is set to true, the sample response is shown below: { "status": 200, "content": [ { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:24:855", "CITYNAME": "New York", "CREATEDTIME": "2022-01-11 18:18:24:855", "ROWID": "5249000000032385" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:25:117", "CITYNAME": "Houston", "CREATEDTIME": "2022-01-11 18:18:25:117", "ROWID": "5249000000032386" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:25:120", "CITYNAME": "Chicago", "CREATEDTIME": "2022-01-11 18:18:25:120", "ROWID": "5249000000032387" } ], "message": "OK", "more_records": true, "next_token": "{{token}}" } When the more_records parameter is set to false, the sample response is shown below: { "status": 200, "content": [ { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:556", "name": "San Diego", "CREATEDTIME": "2022-01-11 18:18:43:556", "ROWID": "5249000000032385" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:557", "name": "Phoenix", "CREATEDTIME": "2022-01-11 18:18:43:557", "ROWID": "5249000000032386" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:568", "name": "Seattle", "CREATEDTIME": "2022-01-11 18:18:43:568", "ROWID": "5249000000032387" } ], "message": "OK", "more_records": false } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- 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 Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.171Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Insert Rows You can insert a new row in a table in the Catalyst 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_service reference used in the code below can either be a table instance or 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 dictionary containing the row details in a {column name : column value} format, and pass it as an argument to the insert_row() method, as shown below. This inserts the rows in the table that you refer by its unique tablename or tableID. A unique ID value for the row is automatically generated once the row is inserted. To know more about the component instancedatastore_service and the table instancetable_service used below, please refer to their respective help sections. **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>row_data</td> <td>Array</td> <td>A Mandatory parameter. Will hold the details of the row to be inserted in key-value pairs.</td> </tr> </tbody> </table> #Insert a single row in the table datastore_service = app.datastore() table_service = datastore_service.table("Employee") row_data = {'name': 'George Hamilton', 'id': '6868', 'age': '22'} row_response = table_service.insert_row(row_data) A sample response is shown below : { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-16 16:30:12:799", Name: "George Hamilton", Age: 22, ID: 6868, CREATEDTIME: "2021-08-16 16:30:12:799", ROWID: "2136000000011015" } ### 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 insert_rows() method as shown below. To know more about the component instancedatastore_service and the table instancetable_service used below, please refer to their respective help sections. This returns a response containing an array of row objects. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w60p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>row_data</td> <td>Array</td> <td>A Mandatory parameter. Will hold the details of the rows to be inserted in key-value pairs.</td> </tr> </tbody> </table> datastore_service = app.datastore() table_service = datastore_service.table("Employee") row_data = [{'name': 'Mark Wellington', 'id': '7218', 'age': '29'}, {'name': 'Zendaya Jones', 'id': '3211', 'age': '32'}] row_response = table_service.insert_rows(row_data) A sample response is shown below : [ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-25 13:55:04:904", Name: "Mark Wellington", Age: 29, ID: 7218, CREATEDTIME: "2021-08-25 13:55:04:904", ROWID: 2136000000011015 }, { 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: 2136000000011016 } ] Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- 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 Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.172Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Update Rows You can update a single row or multiple rows in a table in the Catalyst Data Store. The table_service reference used in the below code snippets can either be a table instance or table meta created earlier. ### Update a Single Row This particular method allows you to update a single row by constructing an object with modified values in the required columns. Refer the unique ROWID and pass the newly constructed object that contains the updated row details to the update_row() method. Please note that it is mandatory to specify the ROWID value here. To know more about the component instancedatastore_service and the table instancetable_service used below, please refer to their respective help sections. **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>row_data</td> <td>Array</td> <td>A Mandatory parameter. Will hold the details of the row to be updated in key-value pairs.</td> </tr> </tbody> </table> #Update a single row datastore_service = app.datastore() table_service = datastore_service.table("table_name") row_data = {'name': 'Mathew Jones', 'id': '7211', 'age': '31', 'ROWID': 2136000000011011} row_response = table_service.update_row(row_data) logging.info(row_response) A sample response is shown below : { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-17 13:02:11:184", CREATEDTIME: "2021-08-16 16:29:10:499", Name: "Mathew Jones", ID : "7211", Age: 31, ROWID: "2136000000011011" } ### Update Multiple Rows To update multiple rows, an array of objects is constructed containing the modified row values, which is passed as an argument to the update_rows() method. The ROWIDs are used in corresponding array objects to refer the specific rows which requires modification. To know more about the component instancedatastore_service and the table instancetable_service used below, please refer to their respective help sections. The response returned here will be resolved to an array of row objects. **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>row_data</td> <td>Array</td> <td>A Mandatory parameter. Will hold the details of the rows to be updated in key-value pairs.</td> </tr> </tbody> </table> #Update multiple rows datastore_service = app.datastore() table_service = datastore_service.table("Employee") row_data = [{'name': 'Mathew Jones', 'id': '7211', 'age': '31', 'ROWID': 2136000000034043}, {'name': 'Rhonda Watson', 'id': '7212', 'age': '28', 'ROWID': 2136000000034045}] row_response = table_service.update_rows(row_data) A sample response is shown below : [ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-24 13:22:14:718", CREATEDTIME: "2021-08-24 13:12:55:999", Name: "Mathew Jones", ID : "7211", 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", ID : "7212", Age: 28, ROWID: "2136000000034045" } ] Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Delete Row" description: "This page describes the method to delete a single row from a table in the Data Store in your Python application with sample code snippets" last_updated: "2026-07-02T09:34:10.172Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Delete a row A row can be deleted from a table simply by passing the ROWID as a parameter to the delete_row() method. This method will return true as response on deletion of the row. To know more about the component instancedatastore_service and the table instancetable_service used below, please refer to their respective help sections. **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>ROWID</td> <td>String</td> <td>A Mandatory parameter. Will hold the ID of the row to be deleted.</td> </tr> </tbody> </table> #Delete a row datastore_service = app.datastore() table_service = datastore_service.table("CITY") row_response = table_service.delete_row(5249000000032461) Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Bulk Read Rows" description: "This page describes the method to read rows in bulk from a table in the Data Store in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.172Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/bulk-read-rows/" service: "Cloud Scale" related: - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Bulk Read Rows 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. To know more about the component instance datastore_service used below, please refer to this help section. <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>criteria</td> <td>Array</td> <td>A Mandatory parameter. Will hold the conditions based on which the rows has to be read.</td> </tr> <tr> <td>page</td> <td>Numeric</td> <td>A Mandatory parameter. Will hold the number of page rows that has to be read.</td> </tr> <tr> <td>select_columns</td> <td>Array</td> <td>A Mandatory parameter. Will hold specific columns that has to be read.</td> </tr> </tbody> </table> Copy the SDK snippet below to perform a bulk read job on a particular table. #Bulk read datastore_service = app.datastore() bulk_read = datastore_service.table("sampleTable").bulk_read() #Create bulk read job bulk_read_Job = bulk_read.create_job({ "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'] }) #Get bulk read status status = bulk_read.get_status(bulk_read_Job['job_id']) #Get bulk read result result = bulk_read.get_result(bulk_read_Job['job_id']) <br /> Note: A maximum of 200,000 rows can be read simultaneously. Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Bulk Write Rows" description: "This page describes the method to write rows in bulk from a table in the Data Store in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.172Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/bulk-write-rows/" service: "Cloud Scale" related: - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Bulk Write Rows 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. <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>tableID</td> <td>String</td> <td>A Mandatory parameter. Will hold the ID of the table to which data has to be written.</td> </tr> <tr> <td>find_by</td> <td>String</td> <td>A Mandatory parameter. Will hold the name of the column to which data has to be written.</td> </tr> <tr> <td>fk_mapping</td> <td>Array</td> <td>A Mandatory parameter. Will hold the local_column and reference_column details.</td> </tr> <tr> <td>operation</td> <td>String</td> <td>A Mandatory parameter. The value of this parameter should be insert.</td> </tr> <tr> <td>object_details</td> <td>JSON Object</td> <td> <ul> <li>bucket_name: The name of the bucket, where the object is stored.</li> <li>object_key: Can contain the path or the Object URL of the required object.</li> <li>version_id: If the bucket has versioning enabled, then the specific versionID of the file will be stored in this attribute.</li> </ul> </td> </tr> </tbody> </table> Copy the SDK snippet below to perform a bulk write job on a particular table. To know more about the component instance datastore_service used below, please refer to this help section. datastore_service = app.datastore() bulk_write = datastore_service.table("Sample").bulk_write() object_details = { "bucket_name": "zcstratus12345", "object_key": "sample.csv", "version_id": "64832huidksnd83" } #create bulk write job bulk_write_job = bulk_write.create_job(object_details, { "find_by": "S1", "fk_mapping": [ {"local_column": "EmployeeID", "reference_column": "EmpId"}, {"local_column": "DepartmentID", "reference_column": "DepId"} ], "operation": "insert" }) #get bulk write status status = bulk_write.get_status('6759000000167103') #get bulk write result result = bulk_write.get_result('6759000000167103') <br /> Note: A maximum of 100,000 rows can be written at one time. Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Bulk Delete Rows" description: "This page describes the method to delete rows in bulk from a table in the Data Store in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.172Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/bulk-delete-rows/" service: "Cloud Scale" related: - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Bulk Delete Rows Catalyst enables you to delete rows in bulk from a specific table in the Catalyst Data Store. The table is referred by its unique tableID or tablename. You can obtain the table ID from the 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 up to a maximum of 200 ROWIDs in the code snippet given below. The rows are passed to the delete_rows() function through datastore_service instance in the sample code. The tablename or tableID must be passed as a parameter to the table() method. The response returns a boolean value ( true or false ) based on the status of deletion. To know more about the component instancedatastore_service and the table instancetable_service used below, please refer to their respective help sections. **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>ROWID</td> <td>String</td> <td>A Mandatory parameter. Will hold the rowIDs to be deleted.</td> </tr> </tbody> </table> #Bulk delete rows datastore_service = app.datastore() table_service = datastore_service.table("sampleTable") row_response = table_service.delete_rows([6759000000159113, 6759000000159115, 5249000000032411]) Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ##### File Store -------------------------------------------------------------------------------- title: "Get File Store Instance" description: "This page describes the method to delete a folder from the File Store in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.172Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/file-store/get-component-instance/" service: "Cloud Scale" related: - File Store Help (/en/cloud-scale/help/file-store/introduction) -------------------------------------------------------------------------------- # File Store Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. Catalyst File Store provides cloud storage solutions for the application files and user data files of your Catalyst application, and enables access to shared data. You can store, manage, and organize images, videos, text files, document files, spreadsheets, or files of other formats. ### Get a Component Instance A component instance is an object that can be used to access the pre-defined configurations specific to a particular component. This process will not fire a server-side call. Also note that this component instance will be used in multiple scenarios while using the File Store component in your Catalyst application. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new filestore_serviceinstance as shown below : #Get filestore component instance filestore_service = app.filestore() -------------------------------------------------------------------------------- title: "Get Folder Instance" description: "This page describes the method to fetch a folder instance from the File Store in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.172Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/file-store/get-folder-instance/" service: "Cloud Scale" related: - File Store Help (/en/cloud-scale/help/file-store/introduction) -------------------------------------------------------------------------------- # Get a folder instance Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. To know more about the component instance filestore_service used below, please refer to this help section. #Get folder instance filestore_service = app.filestore() folder_service = filestore_service.folder(5249000000016011) -------------------------------------------------------------------------------- title: "Retrieve Folder Details" description: "This page describes the method to retrieve the folder details from the File Store in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.172Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/file-store/retrieve-folder-details/" service: "Cloud Scale" related: - Retrieve Folder Details - API (/en/api/code-reference/cloud-scale/file-store/get-specific-file/#GetSpecificFile) - File Store Help (/en/cloud-scale/help/file-store/introduction/) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Get Folder Details Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. You can retrieve the details of the folders created in the Catalyst File Store. It can be a single folder or all the folders located in the File store. To know more about the component instance filestore_service used below, please refer to this help section. ### Get Details of a Single Folder This particular method retrieves the details of a specific folder referred through its unique folder ID by calling the get_folder_details() method. You can obtain the folder ID from the Data Store or from the URL when the folder is opened in the console. The folder meta details are returned as response to this method. **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>file_ID</td> <td>String</td> <td>A Mandatory parameter. Will hold the ID of the folder for which details has to be fetched.</td> </tr> </tbody> </table> #Get details of a single folder filestore_service = app.filestore() data = filestore_service.get_folder_details(5249000000016011) A sample response is shown below : { "folder_name":"Store_Data", "created_time":"Aug 13, 2021 05:32 PM", "created_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"amelia.burrows@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "modified_time":"Aug 13, 2021 05:32 PM", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"amelia.burrows@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "project_details":{ "project_name":"ShipmentTracking", "id":"2136000000007733", "project_type":"Live" }, "file_details":[ { "id":"2136000000020111", "file_location":null, "file_name":"Img.jpeg", "file_size":"84881", "created_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"p.boyle@zylker.com", "first_name":"Patricia", "last_name":"Boyle", "user_type":"Admin", "user_id":"2136000000006767" }, "created_time":"Aug 17, 2021 09:32 PM", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"p.boyle@zylker.com", "first_name":"Patricia", "last_name":"Boyle", "user_type":"Admin", "user_id":"2136000000006767" }, "modified_time":"Aug 17, 2021 09:32 PM", "project_details":{ "project_name":"ShipmentTracking", "id":"2136000000007733", "project_type":"Live" }, "folder_details":"5249000000016011" } ], "id":"2136000000008551" } ### Get Details of All Folders You can fetch the details of all folders in your Catalyst application using the get_all_folders() method. An array of folder meta details is returned as response to this method. #Get details of all folders filestore_service = app.filestore() data = filestore_service.get_all_folders() A sample response is shown below : [ { "folder_name":"Invoices", "created_time":"Aug 25, 2021 11:38 AM", "created_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 25, 2021 11:38 AM", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "project_details":{ "project_name":"ShipmentTracking", "id":"2136000000007733", "project_type":"Live" }, "id":"2136000000037021" }, { "folder_name":"Store_Data", "created_time":"Aug 13, 2021 05:32 PM", "created_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 05:32 PM", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "project_details":{ "project_name":"ShipmentTracking", "id":"2136000000007733", "project_type":"Live" }, "id":"2136000000008551" } ] Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Upload File" description: "This page describes the method to upload a file to a folder in the File Store in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.172Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/file-store/upload-file/" service: "Cloud Scale" related: - Upload File - API (/en/api/code-reference/cloud-scale/file-store/upload-file-in-folder/#UploadFileInaFolder) - File Store Help (/en/cloud-scale/help/file-store/introduction/) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Upload a File Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. You can upload a file from your local system to an existing folder in the Catalyst File Store, by referring to its unique folder ID. You can upload an image, text document, CSV, or any type of file you need. The maximum size of a file that you can upload is 100 MB. A unique file ID is created for the file after it is uploaded. Note : Catalyst provides 1 GB of File Store space for each project in the development environment. There are no upper limits for storage in the production environment. You can either use the component reference or the folder reference created earlier, to refer the folder where the file needs to be uploaded in. You must pass the unique folder ID of the folder. The response returned here will be the information of the uploaded file. To know more about the component instance filestore_service used below, please refer to this help 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>file_name</td> <td>String</td> <td>A Mandatory parameter. Will hold the name of the file to be uploaded in FileStore.</td> </tr> <tr> <td>content_type</td> <td>File</td> <td>A Mandatory parameter. Will hold the the default value as "file".</td> </tr> </tbody> </table> #Upload a file file = open('file.txt', "rb") filestore_service = app.filestore() folder = filestore_service.folder(6759000000166049) folder.upload_file('testFile.txt',file) A sample response is shown below : { id: "5249000000016011", file_location: null, file_name: "testFile.txt", file_size: "84881", created_by: { zuid: "66466723", is_confirmed: false, email_id: "amelia.burrows@zylker.com", first_name: "Amelia", last_name: "Burrows", user_type: "Admin", user_id: "2136000000006003" }, created_time: "Aug 17, 2021 09:33 PM", modified_by: { zuid: "66466723", is_confirmed: false, email_id: "amelia.burrows@zylker.com", first_name: "Amelia", last_name: "Burrows", user_type: "Admin", user_id: "2136000000006003" }, modified_time: "Aug 17, 2021 09:33 PM", project_details: { project_name: "ShipmentTracking", id: "2136000000007733" }, folder_details: "5249000000016011" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Download File from Folder" description: "This page describes the method to download a file from folders in the File Store in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.172Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/file-store/download-a-file-from-the-folder/" service: "Cloud Scale" related: - Download File from Folder - API (/en/api/code-reference/cloud-scale/file-store/download-file-from-folder/#DownloadaFileFromaFolder) - File Store Help (/en/cloud-scale/help/file-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Download a File from the Folder Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. A file can be downloaded from the folder by referring to its unique file ID. To know more about the component instancefilestore_service and the folder instancefolder_service used below, please refer to their respective help sections. The file ID is passed as an argument to the download_file() method. This method returns the text file in the Bytes format as a response. **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>file_ID</td> <td>String</td> <td>A Mandatory parameter. Will hold the ID of the file to be downloaded.</td> </tr> </tbody> </table> #Download a File filestore_service = app.filestore() folder_service = filestore_service.folder(5249000000016011) data = folder_service.download_file(5249000000032063) Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Delete a File" description: "This page describes the method to delete a folder from the File Store in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.173Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/file-store/delete-a-file/" service: "Cloud Scale" related: - Delete a File - API (/en/api/code-reference/cloud-scale/file-store/delete-file/#DeleteFile) - File Store Help (/en/cloud-scale/help/file-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Delete a file Note: Catalyst now offers you a brand new object storage component called Stratus in Early Access mode. This component is a significant upgrade to the current Cloud Scale File Store component. You can find out more about the Stratus component here.<br /><br />To use the Stratus component in the Early Access mode, email us at support@zohocatalyst.com. A file from a folder can be deleted by referring its file ID. The component reference or folder reference is used in the below code snippet. A file ID is passed as a parameter to the delete_file() method. The response returns a boolean value ( true or false) based on the status of deletion. To know more about the component instancefilestore_service and the folder instancefolder_service used below, please refer to their respective help sections. **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>file_ID</td> <td>String</td> <td>A Mandatory parameter. Will hold the ID of the file to be deleted.</td> </tr> </tbody> </table> #Delete a file filestore_service = app.filestore() folder_service = filestore_service.folder(5249000000016011) folder_service.delete_file(5249000000032063) Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ##### Mail -------------------------------------------------------------------------------- title: "Get Mail Instance" description: "This page describes the method to send out emails to end-users from your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.173Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/mail/get-component-instance/" service: "Cloud Scale" related: - Mail Help (/en/cloud-scale/help/mail/introduction) -------------------------------------------------------------------------------- # Catalyst Mail 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. This section covers the various SDK methods that can be used to implement the Catalyst Mail functionality in your application. ### Get a Component Instance A component instance is an object that can be used to access the pre-defined configurations specific to a particular component. This process will not fire a server-side call. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new mail_serviceinstance as shown below. Also note that this component instance will be used in multiple scenarios while implementing the Catalyst Mail service in your application. #Get a mail component instance mail_service = app.email() -------------------------------------------------------------------------------- title: "Send Email" description: "This page describes the method to send out emails to end-users from your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.173Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/mail/send-email/" service: "Cloud Scale" related: - Send Email - API (/en/api/code-reference/cloud-scale/mail/send-email/#SendEmail) - Mail Help (/en/cloud-scale/help/mail/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Send Mail 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 Dictionary You must initially create a dictionary containing the required attributes of the email. This includes the sender's email address and all the recipients of the email. You should first configure and verify the sender's email address in the Catalyst console. 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. #Create a dictionary mail_obj = { 'from_email': 'emma@zylker.com', 'to_email': ["vanessa.hyde@zoho.com"], 'cc': ["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!', 'attachments': [file1], 'content': "<p>Hello,</p> 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.</p>We cannot wait to get started!<p><p>Cheers!</p><p>Team Zylker</p>" } ### Send Email You must now pass the configured dictionary to the send_mail() method as an argument as shown in the code below. This will initiate the email sending process. To know more about the component instance mail_service used below, please refer to this help 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>mail_obj</td> <td>Object</td> <td>A Mandatory parameter. Will store details of the sender's email address, recipient's email address, CC, BCC, reply-to address, subject, attachments, and email content.</td> </tr> </tbody> </table> #Send Email mail_service = app.email() response = mail_service.send_mail(mail_obj) A sample response is given below : { isAsync: false, project_details: { project_name: "Onboarding", id: "2136000000007733" }, from_email: ["emma@zylker.com"], to_email: ["vanessa.hyde@zoho.com"], cc:["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: "<p>Hello,</p> 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.</p>We cannot wait to get started!<p><p>Cheers!</p><p>Team Zylker</p>" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ##### 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-07-02T09:34:10.173Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/nosql/get-component-instance/) -------------------------------------------------------------------------------- # Get Component Instance 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 Python 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 Python 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 Python object returned as the response during the SDK initialization. #Create a NoSQL instance 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-07-02T09:34:10.173Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 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 by referring the table name using the method getTable() as given below. 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. # Create a NoSQL instance nosql = app.nosql() #Get table metadata using the table name table_details = nosql.get_table_resources("EmpTable") print(table_details) 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 get_all_tables() method as shown below. table_res = nosql.get_all_tables() print(table_res) -------------------------------------------------------------------------------- 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-07-02T09:34:10.173Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 Catalyst NoSQL enables you to fetch an empty table instance of a 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 by referring to the table's name as shown in this section. The nosql reference used in the code snippets below is the component instance created earlier. table = nosql.get_table('employees') # Create a table instance with the table name -------------------------------------------------------------------------------- title: "Construct 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-07-02T09:34:10.173Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 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. The code snippet below shows the formats for constructing an item with attributes of different data types: # Construct a NoSQL item of different data types attributes = { # string "custom_attrib_string": { "S": "John Doe" }, # Number "custom_attrib_num": { "N": "234521" }, # Binary encoded value "custom_attrib_bin": { "B": "SGVsbG9Xb3JsZA==" }, # Set of string "custom_attrib_set_string": { "SS": ["John Doe", "New York", "USA"] }, # set of numbers "custom_attrib_set_num": { "SN": ["23423", "821n", "11"] }, # set of binary values "custom_attrib_set_bin": { "SB": ["SGVsbG8=", "V29ybGQ="] }, # boolean attribute "custom_attrib_bool": { "BOOL": True }, # list attribute "custom_attrib_list": { "L": [{"name": "banana"}, {"quantity": 4}] }, # map attribute "custom_attrib_map": { "M": { "name": { "S": "John Doe" }, "age": { "N": "23" } } } } -------------------------------------------------------------------------------- title: "Insert Items" 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-07-02T09:34:10.173Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 Tables 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. For example, in the code snippet below, the values for the partition key and sort key attributes of the item, fruitName and Location respectively, are provided. Other attributes of the string data type such as fruitType and availability are provided as a list fruitProperties. The item is then inserted using the insert_items() method. # Insert a NoSQL item without conditions item = { "fruitName": { "S": "Banana" }, "Location": { "S": "Indonesia" }, "fruitProperties": { "L": [ { "fruitType": "Berries" }, { "availability": "abundant" } } ] } } # Insert the item based on the defined condition and set the item to be returned in the response. Other supported values are "OLD" and "NULL" res = table.insert_items({ 'item': item, 'return': '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 nested attribute fruitColour in the existing data to contain the value "Yellow". This attribute is part of the attribute fruitProperties. If the condition is satisfied, the attributes fruitType and availability are added to the items. The item is then inserted using the insert_items() method. # Insert a NoSQL item with a conditional function condition_function = { "function": { "function_name": "attribute_type", "args": [ { "attribute_path": ["fruitProperties", "[0]"] }, { "fruitColour": "Yellow" } ] } } item = { "Location": { "S": "Indonesia" }, "fruitName": { "S": "Banana" }, "fruitProperties": { "L": [ { "fruitType": "Berries" }, { "availability": "abundant" } } ] } } # Insert the item based on the defined condition and set the return value in the response. Other supported values are "OLD" and "NULL" res = table.insert_items({ 'item': item, 'condition': condition_function, 'return': 'NEW' }) <br> ### Insert Items with Conditional Operators Catalyst also enables you to insert items based on conditions defined with operators in the Catalyst custom JSON format. 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, as listed in the [previous section](#insert-items-with-conditional-functions). The example below illustrates inserting an item based on conditions defined with the between operator. The condition states that only when the attribute count has values between 0 and 10 in the existing data, the attributes backupID and count are to be inserted in those items. The item is inserted with the insert_items() method. # Insert a NoSQL item with a conditional operator condition_function = { "attribute": ["count"], "operator": "between", "value": { "L": [ { "N": "0" }, { "N": "10" } ] } } item = { "countryCode": { "N": 054 }, "backupID": { "N": 2379992 }, "count": { "N": "3" } } # Insert the item based on the defined condition and set the return value in the response. Other supported values are "OLD" and "NULL" res = table.insert_items({ 'item': item, 'condition': condition_function, 'return': 'NEW' }) -------------------------------------------------------------------------------- title: "Update Items" 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-07-02T09:34:10.173Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/nosql/update-items/" service: "Cloud Scale" -------------------------------------------------------------------------------- # Update NoSQL Items in Table 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 retrieving an item with the partition key fruitName and the sort key location. The attributes of this item to be updated are color and taste. The values for all these attributes are provided. You can also optionally define a condition for update. The update will occur only if the condition is met. # Update a NoSQL item by identifying it with its primary keys res = table.update_items({ "keys": { "fruitName": { "S": "Banana" }, "location": { "S": "Indonesia" } },# Define the attributes to be updated in the item "update_attributes": [ { "operation_type": "PUT", "color": { "S": "Yellow" }, "taste": { "S": "Sweet" }, "attribute_path": "fruitProperties" } ],# Define a condition. The item will be updated only if this is satisfied. (optional) "condition" : { "function": { "function_name": "attribute_exists", "args": [ { "attribute_path": "fruitProperties" } ] } } }) print(res) -------------------------------------------------------------------------------- title: "Fetch Items" 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-07-02T09:34:10.173Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 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 and the sort key location using fetch_item(). Specific attributes such as properties and taste are filtered to be fetched using required_objects. # Fetch properties of a NoSQLItem identified with the partition key and sort key res = table.fetch_item({ "keys": [ { "fruit": { "S": "apple" }, "location: { "S": "USA" } } ], # Specify the attributes to be fetched 'required_objects': ["properties", "taste"] }) print(res) -------------------------------------------------------------------------------- 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-07-02T09:34:10.173Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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) - Query Table (/en/sdk/nodejs/v2/cloud-scale/nosql/query-table/) -------------------------------------------------------------------------------- # Query NoSQL Table 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. You can also specify additional conditions with the group operators. 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". We also specify an additional condition with the attribute location matching "USA". Catalyst NoSQL also lets you define other elements of the query, such 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. # Query a NoSQL table to fetch the items identified by the partition key fruitType with the value "citrus" res = table.query_table( { # Set consistent_read to true to query from master. If set to false, it is queried from slave. 'consistent_read': 'true',# Set forwardScan to true to sort the results in ascending order. Otherwise, it is sorted in the descending order. 'forwardScan': 'true',# Limit the number of rows to be returned by specifying a value 'limit': 10,# Define the key condition to identify items 'key_condition': { 'attribute': 'fruitType', 'operator': 'equals', 'value': { 'S': 'citrus' } }, # Specify additional conditions to query the table items using group operators 'other_condition': { 'group_operator': 'and', 'group': [ { 'attribute': 'location', 'operator': 'equals', 'value': { 'S': 'USA' } } ] } }) print(res) -------------------------------------------------------------------------------- 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-07-02T09:34:10.173Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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) - Query Index (/en/sdk/nodejs/v2/cloud-scale/nosql/query-index/) -------------------------------------------------------------------------------- # Query Index 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. You can also specify additional conditions with the group operators. 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 performed with an index referenced by its unique Index ID. The query identifies the items using the index's partition key fruitColor and specifying the condition value as "yellow". We also specify an additional condition with the attribute fruitType matching "citrus". The query is done using the query_index() method. Catalyst NoSQL also lets you define other elements of the query, such 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. # Query a NoSQL table index to fetch the items identified by the partition key fruitColour with the value "yellow"# Pass the index's unique ID cres = table.query_index('6759000000740017', { # Set consistent_read to true to query from master. If set to false, it is queried from slave. 'consistent_read': 'true',# Set forward_scan to true to sort the results in ascending order. Otherwise, it is sorted in the descending order. 'forwardScan': 'true',# Limit the number of rows to be returned by specifying a value 'limit': 10,# Define the key condition to query the items with 'key_condition': { 'attribute': 'fruitColor', 'operator': 'equals', 'value': { 'S': 'yellow' } }, # Define additional conditions to query the data with, using group operators 'other_condition': { 'group_operator': 'AND', 'group': [ { 'attribute': 'fruitType', 'operator': 'equals', 'value': { 'S': 'citrus' } } ] } }) print(res) -------------------------------------------------------------------------------- title: "Delete Items" 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-07-02T09:34:10.174Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 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 thedelete_items() method as shown in the example below. The item with the partition key fruit matching "apple" and the sort key location matching "USA" is deleted. You can also specify additional conditions for delete. Only if the item matches the condition, it will be deleted. # Delete a NoSQL item from the table by identifying it with the partition key and sort key res = table.delete_items( { "keys": { "fruit": { "S": "apple" }, "location": { "S": "USA" } } }), # Specify a condition for delete (optional) "condition": { "function": { "function_name": "attribute_exists", "args": [ { "attribute_path": ["properties"] } ] } } }) print(res) ##### Push-Notifications -------------------------------------------------------------------------------- title: "Get Push Notifications Instance" description: "This page describes the method to send out remote notifications to end-users from your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.174Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/push-notifications/get-component-instance/" service: "Cloud Scale" related: - Push Notifications Help (/en/cloud-scale/help/push-notifications/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Push Notifications Catalyst Cloud Scale 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 a Component Instance A component instance is an object that can be used to access the pre-defined configurations specific to a particular component. This process will not fire a server-side call. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new push_notification_serviceinstance as shown below. We will refer to this component instance while sending push notifications from your Catalyst application. #Get push notification instance push_notification_service = app.push_notification() -------------------------------------------------------------------------------- title: "Send Notifications to Web Apps" description: "This page describes the method to send out remote notifications to end-users from your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.174Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 Help (/en/cloud-scale/help/push-notifications/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Send Push Notifications to Web Apps 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 send_notification() 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. To know more about the component instance push_notification_service used below, please refer to this help 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>notification_message</td> <td>String</td> <td>A Mandatory parameter. Will store the notification message.</td> </tr> <tr> <td>user_list</td> <td>Array</td> <td>A Mandatory parameter. Will store the IDs or email addresses of the users to whom notification has to be sent.</td> </tr> </tbody> </table> #Send push notifications using userID's push_notification_service = app.push_notification() user_list = [1234556789098, 6756467677890] logging.info(push_notification_service.web().send_notification("Hi there! The task you scheduled has been completed.", user_list)) 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 send_notification() along with the message string in the same way. #Send push notifications using user email addresses's push_notification_service = app.push_notification() user_list = ["amelia.burrows@gmail.com", "emma.hillary@gmail.com"] logging.info(push_notification_service.web().send_notification("Hi there! The task you scheduled has been completed.", user_list)) Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Send Notifications to Mobile Apps" description: "This page describes the method to send out remote notifications to end-users from your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.174Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/push-notifications/send-notifications-mobile/" service: "Cloud Scale" related: - Push Notifications Help (/en/cloud-scale/help/push-notifications/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Push Notifications to Mobile Apps 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 Python 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 push_notification().mobile() method, by passing the generated appID as a parameter. We will use this mobile notification instance to perform additional operations with the Python SDK methods, such as sending push notifications, which will be covered in the next section. mobile_notification = app.push_notification().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. mobile_notification = app.push_notification().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 send_android_notification() method to send push notifications to your application. You will need to pass two parameters to the send_android_notification() method: * notify_obj - 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 send_android_notification() method in your application: mobile_notification.send_android_notification( notify_obj={"message": "This message is to test if the functionality is working fine!", "badge_count": 1}, recipient="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 Similar to Android, after you have registered your iOS application with Catalyst for sending push notifications, you can use the send_ios_notification() method to send push notifications to your application. mobile_notification.send_ios_notification( notify_obj={"message": "test_notification", "badge_count": 1}, recipient="testuser@zylker.com" ) ##### Search -------------------------------------------------------------------------------- title: "Get Search Instance" description: "This page describes the method to search data in multiple tables in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.174Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/search/get-component-instance/" service: "Cloud Scale" related: - Search Integration Help (/en/cloud-scale/help/search-integration/introduction) -------------------------------------------------------------------------------- # Search Catalyst CloudScale Search allows the process of specifying a particular pattern to search for in the search-indexed columns of a particular table. You can also search in the indexed columns of multiple tables. This section covers the various SDK methods that can be used to implement the Catalyst search functionality in your application. ### Get a Component Instance A component instance is an object that can be used to access the pre-defined configurations specific to a particular component. This process will not fire a server-side call. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new search_serviceinstance as shown below. Also note that this component instance will be used in multiple scenarios while implementing the search component in your application. #Get a search component instance search_service = app.search() -------------------------------------------------------------------------------- title: "Search Data" description: "This page describes the method to search data in multiple tables in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.174Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 Help (/en/cloud-scale/help/search-integration/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Search Data Catalyst Search enables you to search and retrieve data records from the Catalyst Data Store. You can execute a search query using the execute_search_query() method to search for a particular pattern of data. ### Create a Dictionary The following code snippet creates a dictionary that contains the attributes of the pattern to be searched for, in the indexed columns of the individual Data Store tables. #Create a dictionary config = { 'search': 'burrows*', 'search_table_columns': { 'Employee': ['EmployeeID'], 'Users': ['Name'] } } ### Execute Search Query The dictionary object created in the previous section is passed as a parameter to the execute_search_query() method, which returns the response. To know more about the component instance search_service used below, please refer to this help 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>config</td> <td>Object</td> <td>A Mandatory parameter. Will hold the details of the search patterns.</td> </tr> </tbody> </table> #Execute Search query search_service = app.search() response_data = search_service.execute_search_query(config) A sample response will be shown below : { AlienCity: [ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-13 13:49:19:475", CITYNAME: "Dallas", CREATEDTIME: "2021-08-13 13:49:19:475", ROWID: "2136000000008508" } ] } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ##### Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page lists all the Python SDK methods required to carry out Stratus operations through code." last_updated: "2026-07-02T09:34:10.174Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Stratus ## 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 All 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 <ul> <li>Get Zip Extraction Status </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> </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 Python SDK method to create a Stratus instance." last_updated: "2026-07-02T09:34:10.174Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-stratus-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/) - 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 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. The app reference used in the below code snippet is the catalyst instance. stratus = app.stratus() -------------------------------------------------------------------------------- title: "Check Bucket Availability" description: "This page lists the Python SDK method to check if the bucket exists in your project." last_updated: "2026-07-02T09:34:10.175Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/check-bucket/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/check-bucket/) - 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 Using the head_bucket() 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>bucket_name</td> <td>String</td> <td>A Mandatory parameter. Will hold the unique name of the bucket.</td> </tr> <tr> <td>throw_err</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> bucket_res = stratus.head_bucket('bucket_name', throw_err=False) print(bucket_res) #### 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 All Buckets" description: "This page lists the Python SDK method to list buckets created in your project." last_updated: "2026-07-02T09:34:10.175Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/list-buckets/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # List All Buckets The following SDK method will return all the buckets present in the project. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section The stratus reference used in the below code snippet is the component instance. buckets = stratus.list_buckets() # return all the buckets and it's details print(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" }, { "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 Python SDK method to create a bucket instance." last_updated: "2026-07-02T09:34:10.175Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - 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 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. The stratus reference used in the below code snippet is the component instance. bucket = stratus.bucket('bucket_name') -------------------------------------------------------------------------------- title: "Get Bucket Details" description: "This page lists the Python SDK method to get the details of a bucket." last_updated: "2026-07-02T09:34:10.175Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - 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 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. bucket_details = bucket.get_details() print(bucket_details) #### 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.lzstratus.com", "caching_url": "https://zcstratus122-development.nimbuslocaledge.com", "objects_count": "74", "size_in_bytes": "925906411" } -------------------------------------------------------------------------------- title: "Get Bucket CORS" description: "This page lists the Python SDK method to get the current CORS configuration of the bucket." last_updated: "2026-07-02T09:34:10.175Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/get-bucket-cors/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Get Bucket CORS The get_cors() 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. res = bucket.get_cors() print(res) -------------------------------------------------------------------------------- title: "List Objects in a Bucket" description: "This page lists the Python SDK method to list all the objects stroed in a bucket." last_updated: "2026-07-02T09:34:10.175Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/list-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - 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) -------------------------------------------------------------------------------- # List Objects in a Bucket ### List all Objects by Pagination This SDK method will allow you to get 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>max_keys</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>continuation_token</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>order_by</td> <td>String</td> <td>An Optional parameter. To list objects either in ascending or descending order. Default Value: asc</td> </tr> <tr> <td>folder_listing</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 max_keys. 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_key: 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 * next_token: If the response was truncated, the value of this key must be passed as next_token to the same method for retrieving the next set of objects. With each iteration, we will list the max_keys number of objects and check if next_token has been created. Using next_token we will continue the iteration till all the objects have been listed. # Define a recursive function to list objects from the bucket using pagination def list_my_paged_objects(max_keys=None, prefix=None, next_token=None): # Fetch a paged list of objects from the bucket with specified options data = bucket.list_paged_objects( max_keys, # Maximum number of objects to retrieve in this call prefix, # Filter objects that start with this prefix next_token, # Continuation token to fetch the next page of results folder_listing=True, # List objects in a folder-like structure order_by='desc' # Sort objects in descending order (most recent first) ) # Print the list of retrieved objects print(data['contents']) # Check if more objects are available (pagination is not yet complete) if data['truncated']: # Recursively call the function to fetch the next page of objects list_my_paged_objects(max_keys, prefix, data['next_continuation_token']) #Start listing objects with a page size of 2 list_my_paged_objects(2, '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" } ] } ### List Objects Through Iteration Using this SDK method, you can get all the objects present in a bucket in a single API call, using iteration technique. 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 # List objects from the bucket using iterable pagination with specified options objects = bucket.list_iterable_objects( max_keys=5, # Maximum number of objects to retrieve per batch (default is 1000) prefix='sam', # Filter objects that start with this prefix folder_listing=True, # List objects in a folder-like structure (default is False) order_by='desc' # Sort objects in descending order (default is 'asc') ) #Iterate over and print each object key for key in objects: print(key) #### 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 Python SDK method to check if an object is present in a bucket." last_updated: "2026-07-02T09:34:10.175Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/check-object-availability/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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 Object Availability 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 version_id as the param, to check if a particular version of the object is available. 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>key</td> <td>String</td> <td>A Mandatory parameter. Will hold the complete name of the object.</td> </tr> <tr> <td>version_id</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>throw_err</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> head_object_res = bucket.head_object( "sam/out/sample.txt", 'version_id', throw_err=False) print(head_object_res) #### Possible Errors Note: If you use the SDK with the throw_err 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 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 object.</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Download Object" description: "This page lists the Python SDK method to download objects from a bucket." last_updated: "2026-07-02T09:34:10.175Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/download-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/download-object/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/download-object/) - 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 ### 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". res = bucket.get_object("sam/out/sample.txt") # download the object to local machine file = open('file_path','wb') file.write(res) ### 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. options = { 'version_id': '01hx66f1383jm48w9sa4z20kve', # download the object with given version Id 'range': '0-200' # start and end range of an object } res = bucket.get_object('"sam/out/sample.txt", options) # download the object to local machine file = open('file_path','wb') file.write(res) ### 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. #### Get Transfer Manager Instance To perform transfer manager operations, you need to get a transfer manager object instance. We will refer to this component instance in various code snippets where we work with transfer manager 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. **Ensure the following packages are imported** from zcatalyst_sdk.stratus.transfer_manager import TransferManager transfer_manager = TranferManager(bucket) #### Get Iterable Object It return the iterable object parts. User can write these parts to our local machine using iterator. Note: Use single file to write because it return iterable parts not whole object. If you write in individual files, you need to combine them in to one. Info: Ensure you provide part_size in Mb. res = transfer_manager.get_iterable_object("sam/out/sample.txt", 20) file = open('file_path','wb') # store the object to local machine for chunk in res: file.write(chunk) #### Generate Object Part Downloaders When a user needs to download a large file (example: 10 GB file), using the get_object() method is not practical. Instead, the user can opt for this SDK method. By calling the generate_part_downloaders() method with the parameters key(str) and part_size(Long), the user can obtain transfer manager functions. These functions, returned in ascending order, each download a specific part of the object. The parts are determined based on the specified part size. res = transfer_manager.generate_part_downloaders("sam/out/sample.txt",20) file = open('file_path','wb') for part in res: file.write(part()) Info: The file must be uploaded via the API or SDK to enable partial downloads. The part_size should be greater than 5 MB and less than 100 MB. ### 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>url_action</td> <td>Request Method</td> <td>A Mandatory parameter. This is the parameter that will allow you to generate a presigned URL for 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>active_from</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> pre_signed_url_res = bucket.generate_presigned_url("sam/out/sample.txt",url_action='GET',expiry_in_sec='300', active_from='1023453725828', version_id='jdery748tfge78') print(pre_signed_url_res) **Example Response for Generating a Presigned URL for Download** { "signature": "https://zcstratus123-development.zohostratus.com/_signed/sam/out/sample.txt?organizationId=83963316&stsCredential=74660608-83963316&stsDate=1726492859577&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=_G8mnq-03vKgPlnJPmqBvzEnT3Hk-SnECuG-cgURyDs", "expiry_in_seconds": "300", "active_from": "1726492859577" } **Example Snippet Illustrating Usage of Presigned URL to Download an Object** import requests #Pre-signed URL to download the file url = "https://sadi-development.zohostratus.com/_signed/code.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747899927592&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=-l10AlSsbZzkq6t8HHgDfNkEiiDWFaaU9M3-hPBz0M8" #Path where the downloaded file will be saved locally file_path = "file_path" # Replace with actual file path #Send a GET request to download the file response = requests.get(url, stream=True) #Check if the request was successful if response.status_code == 200: #Open the destination file in binary write mode with open(file_path, "wb") as f: #Write data in chunks to handle large files for chunk in response.iter_content(chunk_size=8192): if chunk: f.write(chunk) print("Download completed successfully.") else: print("Object download failed. Status code:", response.status_code) -------------------------------------------------------------------------------- title: "Upload Object" description: "This page lists the Python SDK method to upload objects to a bucket." last_updated: "2026-07-02T09:34:10.176Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/upload-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Upload an Object Help Documentation (/en/cloud-scale/help/stratus/objects/upload-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/upload-object/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/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 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 version_id. 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. file = open('file_path','rb') res = bucket.put_object("sam/out/sample.txt",file) print(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; put_object() res = bucket.put_object("sam/out/sample.txt",'content of the file') print(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**. * **meta_data**: This is an option you can use to upload meta details of the object that is being uploaded. * **content_type**: This is an option you can provide, if you need to set the MIME type of the object. options = { 'overwrite': 'true', 'ttl': '300', #provide time to live in seconds 'meta_data': { 'author': 'John' } } file = open('file_path','rb') res = bucket.put_object("sam/out/sample.txt",file, options) print(res) ### Upload Object With Extract Option When you upload a zip file using the following method, the zip file will be extracted, and the objects will be uploaded to the bucket. # Define upload options including extract_upload options = { # Overwrite the object if it already exists 'overwrite': 'true', # Time-to-live in seconds after which the object will expire 'ttl': '300', # Automatically extract contents of ZIP file 'extract_upload': 'true', # MIME type of the object 'content-type': 'application/zip', # Custom metadata associated with the object 'meta_data': { 'author': 'Sam' } } #Open the file in binary mode file = open('sam.zip', 'rb') #Upload and extract ZIP contents res = bucket.put_object('sam/sample.zip', file, options) This SDK method will return a task_id. You can use this task_id in this SDK method to find out the status of the extraction. **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 Multipart 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. init_res = bucket.initiate_multipart_upload(key="") print(init_res) **Example Response** { bucket: 'zcstratus123-development', key: 'objectName.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. upload_res = bucket.upload_part(key="",upload_id="", part_number=3, body=open('file_path','rb')) print(upload_res) #### 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 get_multipart_upload_summary() method. summary_res = bucket.get_multipart_upload_summary(key="", upload_id="") print(summary_res) **Example Response** { "bucket": "zcstratus12345-development", "key": "sasm.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 complete_multipart_upload() method. complete_res = bucket.complete_multipart_upload(key="", upload_id="") print(complete_res) **Example SDK Implementation** from concurrent.futures import ThreadPoolExecutor import zcatalyst_sdk def handler(request: Request): app = zcatalyst_sdk.initialize() if request.path == "/": # stratus instance stratus = app.stratus() # bucket instance bucket = stratus.bucket('bucket_name') # multipart upload key = "sam/out/sample.txt" file_path = '/sam/smple.mp4' initiate_res = bucket.initiate_multipart_upload(key) part_number = 1 part_size = 50 * 1024 * 1024 futures = [] try: with open(file_path, 'rb') as file: with ThreadPoolExecutor(max_workers=3) as executor: while True: chunk = file.read(part_size) if not chunk: break futures.append(executor.submit( bucket.upload_part, key, initiate_res['upload_id'], chunk, part_number ) ) part_number += 1 for future in futures: future.result() except Exception as err: raise err multipart_upload_res = bucket.complete_multipart_upload(key, initiate_res['upload_id']) return multipart_upload_res else: response = make_response('Unknown path') response.status_code = 400 return response ### Upload an Object Using Transfer Manager When the Object that you need to upload is too large to upload, you can perform a transfer manager operation. The transfer manager operation will split the object into multiple parts and perform a quicker upload. In this SDK section, we are going to go over all the SDK methods that are available to perform upload objects in Stratus using Transfer Manager. #### Get Transfer Manager Instance To perform transfer manager operations, you need to get a transfer manager object instance. We will refer to this component instance in various code snippets where we work with transfer manager 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. **Ensure the following packages are imported** from zcatalyst_sdk.stratus.transfer_manager import TransferManager transfer_manager = TranferManager(bucket) #### Upload an Object Using Transfer Manager 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. #### Create Multipart Instance Using the following SDK method, we are going to generate a upload_id. Using this ID we are going to create and return an instance that allows you to perform multipart operations on the object. init_ins = transfer_manager.create_multipart_instance(key="") If you are required to create an instance for an already initialized multipart upload operation, then copy and use the code snippet given below. init_ins = transfer_manager.create_multipart_instance(key="", upload_id="") #### Perform Multipart Upload for 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 part_number 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. **Parameters Used** * part_number: Will have the ordering of the parts that are being uploaded. * body: Will contain the data/content of the object. upload_res = init_ins.upload_part(body=open('file_path','rb'), part_number=3) print(upload_res) #### 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 get_upload_summary() method. summary_res = init_ins.get_upload_summary() print(summary_res) #### 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 upload_id to the complete_upload() method. complete_res = init_ins.complete_upload() print(complete_res) #### Upload an Object Wrapping all the Transfer Manager Functionality The following SDK method acts as a wrapper, where the entire transfer manager 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. Note: For object's that are larger than 2GB, we would recommend that you use the individual SDK methods to carry out the multipart upload operation successfully.<br /> upload_res = transfer_res.put_object_as_parts(key='', body=open('file_path', 'rb'), part_size=50) print(upload_res) ### 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>url_action</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>active_from</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> pre_signed_url_res = bucket.generate_presigned_url("sam/out/sample.txt",url_action='PUT',expiry_in_sec='300', active_from='1023453725828') print(pre_signed_url_res) **Example Response for Generating a Presigned URL for Upload** { "signature": "https://sadi-development.zohostratus.com/_signed/code.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747899245773&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=YBPoNE9txCIUWWX3ntdgVd95VTt1jGFlSuvnTRFbCMQ" file_path = "/Users/ranjitha-18338/Documents/Pyhton-SDK/filestore2.0/output.txt", "expiry_in_seconds": "300", "active_from": "1726492859577" } **Example Snippet Illustrating Usage of Presigned URL to Upload an Object** import requests #Replace this with your actual pre-signed URL url = "https://sadi-development.zohostratus.com/_signed/code.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747899245773&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=YBPoNE9txCIUWWX3ntdgVd95VTt1jGFlSuvnTRFbCMQ" #Path to the local file that you want to upload file_path = "file_path" #Set required headers headers = { # 'Content-Type': 'text/plain', # Specify content type of the file # 'overwrite': 'true', # Optional custom header to indicate overwrite (if required by server) } #Open the file in binary read mode and send a PUT request to upload it with open(file_path, 'rb') as f: files = {'file': f} #Create a file payload response = requests.put(url, headers=headers, files=files) #Check the response status if response.status == 200: print('Object uploaded successfully') else: print('Object upload failed') -------------------------------------------------------------------------------- title: "Extract a Zipped Object" description: "This page lists the Python SDK method to extract a zipped object." last_updated: "2026-07-02T09:34:10.176Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/extract-zipped-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Extract a Zipped Object 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>destination</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> unzip_res = bucket.unzip_object("sam/out/sample.zip","output/") print(unzip_res) #### Example Response { "key": "sam/out/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 task_id parameter, in the following SDK method, we can determine the status of the extraction. The task_id is returned in the response of unzip_object() method. res = bucket.get_unzip_status("sam/out/sample.zip", 'task_id') print(res) #### Example Response { "task_id": "6963000000272049", "status": "SUCCESS" } -------------------------------------------------------------------------------- title: "Copy Object" description: "This page lists the Python SDK method to make a copy of an object within its own bucket." last_updated: "2026-07-02T09:34:10.176Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/copy-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Copy Object 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 dest_object. 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 /> key value will be 'pictures/puppy/kitten.png'<br /> destination value will be 'pictures/kitten/kitten.png'<br /> res = bucket.copy_object("sam/out/sample.txt","output/sample.txt") print(res) #### Example Response { "copy_to": "output/sample.txt", "object_key": "sam/out/sample.txt", "message": "Object copied successfully." } -------------------------------------------------------------------------------- title: "Rename and Move Operations on an Object" description: "This page lists the Python SDK method to perform rename and move operations on an object." last_updated: "2026-07-02T09:34:10.176Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/rename-move-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Rename and Move Operations on an Object To rename and to move an object, we will be using the same rename_object() SDK method. The Bucket reference used in the below code snippet is the component instance. **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 sourceObject and destObject values. * For example, if you have file named "kitten.png" in the path pictures/puppy, and you need to move or rename 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 rename_object() 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. rename_res = bucket.rename_object("sam/out/sample.txt","sam/out/update_sample.txt") print(rename_res)<br /> #### Example Response { "current_key": "sam/out/sample.txt", "message": "Rename successful", "rename_to": "sam/out/update_sample.txt" } ### Move an Object Using the rename_object() SDK method, we can move the object from one path to another 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 rename_res = bucket.rename_object("sam/out/sample.txt","output/sample.txt") print(rename_res)<br /> Note: You cannot perform move operations in a bucket that has Versioning enabled. #### Example Response { "current_key": "sam/out/sample.txt", "message": "Rename successful", "rename_to": "sutput/sample.txt" } -------------------------------------------------------------------------------- title: "Delete Objects" description: "This page lists the Python SDK method to delete objects stores in a bucket." last_updated: "2026-07-02T09:34:10.176Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/delete-objects/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/delete-objects/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/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 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. **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>version_id</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 delete_object() method. delete_res = bucket.delete_object("sam/out/sample.txt") print(delete_res) Note: If Versioning is enabled on the bucket and no specific version_id 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. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section 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**. delete_res = bucket.delete_object("sam/out/sample.txt", 'version_id', ttl=300) print(delete_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**. delete_objects_res = bucket.delete_objects([ { 'key' : "sam/out/sample.txt", 'version_id':'01hj6ackcxpha9151n7mj0cq6g' }, { 'key' :"sam/out/sample1.txt", 'version_id':'01hj68v1tmb33wa7zchb1vtbjn' }],ttl=300) print(delete_objects_res) #### 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 # delete all the objects in the bucket truncate_res = bucket.truncate() print(truncate_res) ### Delete a Path in the Bucket Using this SDK, you will be able to delete all the objects present in a path. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section You need to pass the complete path to the delete_path() method. path_res = bucket.delete_path("sam/") print(path_res)<br /> 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 Python SDK method to create an object instance." last_updated: "2026-07-02T09:34:10.177Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-object-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Create Object Instance 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. object_ins = bucket.object("sam/out/sample.txt") -------------------------------------------------------------------------------- title: "List Object Versions" description: "This page lists the Python SDK method to get versions of an object." last_updated: "2026-07-02T09:34:10.177Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/list-object-versions/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/get-object-versions/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/get-object-versions/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # List Object Versions ### 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. 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>next_token</td> <td>String</td> <td>Will hold the value to determine the next set of versions.</td> </tr> <tr> <td>max_versions</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> def list_my_paged_versions(max_versions = None, next_token= None): res = object_ins.list_paged_versions(max_versions, next_token) print(res) if not res['is_truncated']: # return 'true' if more versions are available for the object. Return 'false' no more versions available for the object return list_my_paged_versions(max_versions, next_token) list_my_paged_versions(2) #### Example Response { "key": "downloaded_file.json", "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 versions = object_ins.list_iterable_versions(2) for key in versions: print(key) #### Example Response { "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" } -------------------------------------------------------------------------------- title: "Get Object Details" description: "This page lists the Python SDK method to get details of objects stored in a bucket." last_updated: "2026-07-02T09:34:10.177Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/object-details/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/object-details/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/object-details/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Get Object Details ### Get Details of an Object Use the following SDK method to get details of an object 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 res = object_ins.get_details() print(res) Note: If Versioning is enabled, then using this SDK method will only return the latest version's object details. #### 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" } ### Get Details of a Particular Version of the Object Using this SDK method, you will be able to get all details of a particular object's version. 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>version_id</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. res = object_ins.get_details('version_id') print(res) #### Example Response { "key": "sample.txt", "version_id": "01j7xgnmv5dhpk45kn3pctkasp", "size": 16, "content_type": "text/plain", "etag": "ad6affccd08876ad9ae5f60b7848b2c7", "last_modified": "Sep 16, 2024 07:04 PM", "object_url": "https://zcstratus123-development.zohostratus.com/sample.txt", "cached_object_url": "https://zcstratus123-development.nimbuslocaledge.com/sample.txt", } -------------------------------------------------------------------------------- title: "Put Object Meta Data" description: "This page lists the Python SDK method to add meta data for an object stored in the object." last_updated: "2026-07-02T09:34:10.177Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/put-object-meta/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/put-object-meta/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/put-object-meta/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # Put Object Meta Data 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"} res = object_ins.put_meta({'author': 'Amelia Burrows'}) print(res) Note: * Using this 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. #### 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 Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.177Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/zcql/get-component-instance/" service: "Cloud Scale" related: - ZCQL Help (/en/cloud-scale/help/zcql/introduction) - Data Store Help (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # ZCQL Catalyst Cloud Scale ZCQL is Catalyst's own query language that enables you to perform data retrieval, insertion, updation, and deletion operations on the tables in the Catalyst Cloud Scale 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 a Component Instance A component instance is an object that can be used to access the predefined configurations specific to a particular component. This process will not fire a server-side call. The app reference used in the code below is the Python object returned as a response during SDK initialization. Also note that this instance will be used in multiple scenarios while performing retrieval, insertion, updating, or deleting operations in the Catalyst Data Store. #Get a ZCQL component instance zcql_service = app.zcql() -------------------------------------------------------------------------------- title: "Execute Query" description: "This page describes the method to execute ZCQL queries on a table in the Data Store in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.177Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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 Help (/en/cloud-scale/help/zcql/introduction) - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Execute Query The zcql_service reference used in the code snippet below is the component instance created earlier. Based on the query object being passed, the response returns a row object or an 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 object and pass it to the execute_query() method as shown below. These queries can include SELECT, INSERT, UPDATE, or DELETE statements. A sample INSERT query is shown below: #Construct the ZCQL query query = 'INSERT into ShipmentData (productID, productName, region) VALUES (3782, A4 Reams, India)' result = zcql_service.execute_query(query) ### 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 execute_olap_query() method. A sample analytical SELECT query is shown below. //Construct the query to execute query = 'SELECT SUM(price) FROM ShipmentData'; result = zcql_service.execute_olap_query(query); **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>query</td> <td>String</td> <td>A Mandatory parameter. Will store the query to be executed.</td> </tr> </tbody> </table> Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. #### Connectors -------------------------------------------------------------------------------- title: "Connectors" description: "This page describes the method to use connectors to manage access token in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.177Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/connectors/connectors/" service: "All Services" related: - Cache Help (/en/cloud-scale/help/cache/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Connectors 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 Python 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. 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 Python connector. The app reference used below is the Python object returned as a response during SDK initialization. The response returns the access token: **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>ConnectorName</td> <td>Array</td> <td>A Mandatory parameter. Will store the connector details like client_id, client_secret, auth_url, refresh_url and refresh_token.</td> </tr> </tbody> </table> 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 } } ).get_connector("{ConnectorName}") #Provide a unique connector name for each connector you create access_token = connector.get_access_token() Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. #### Job Scheduling -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the methods to perform Job Scheduling operations" last_updated: "2026-07-02T09:34:10.177Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/job-scheduling/overview/) - REST API Collection (/en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Job Scheduling SDK 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 AppSail 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-07-02T09:34:10.177Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/job-scheduling/initialize-job-scheduling-instance/) - REST API Collection (/en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Initialize Job Scheduling Instance 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. job_scheduling = app.job_scheduling() # get job scheduling instance ##### Cron -------------------------------------------------------------------------------- title: "Create a One-Time Cron" description: "This page describes the Python method to create a one-time cron in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.178Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/job-scheduling/cron/create-one-time-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/key-concepts/#schedule-type) - Java SDK (/en/sdk/java/v1/job-scheduling/cron/create-one-time-cron/) - Node.js SDK (/en/sdk/nodejs/v2/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 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 job_meta = { "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 one_time_cron = job_scheduling.CRON.create( { "cron_name": "one_time", # set a name for the cron (unique) "description": "one_time_cron", # set the cron description (optional) "cron_status": True, # set the cron status as enabled "cron_type": "OneTime", # set the cron type as OneTime "cron_detail": { "time_of_execution": int(time.time()) + (60 * 10 * 1000), # set the execution time as UNIX timestamp # 'timezone': 'America/Los_Angeles' # set the timezone (optional) }, "job_meta": job_meta, # set the function job meta } ) 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 Python method to create a recurring cron in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.178Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/job-scheduling/cron/create-recurring-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/key-concepts/#schedule-type) - Java SDK (/en/sdk/java/v1/job-scheduling/cron/create-recurring-cron/) - Node.js SDK (/en/sdk/nodejs/v2/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 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 job_meta = { '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 every_cron = job_scheduling.CRON.create({ 'cron_name': 'every_cron', # set a name for the cron (unique) 'description': 'every_cron', # set the cron description (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': job_meta # set the function job meta }) <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 job_meta = { '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) } daily_cron = job_scheduling.CRON.create({ 'cron_name': 'daily_cron', # set a name for the cron (unique) 'description': 'daily_cron', # set the cron description (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': job_meta # set the function job meta }) <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 job_meta = { '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 monthly_cron = job_scheduling.CRON.create({ 'cron_name': 'monthly_cron', # set a name for the cron (unique) 'description': 'monthly_cron', # set the cron description (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': job_meta # set function job meta }) <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 job_meta = { "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 yearly_cron = job_scheduling.CRON.create( { "cron_name": "yearly_cron", # set a name for the cron (unique) "description": "yearly_cron", # set the cron description (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": job_meta, # set function job meta } ) 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 Python method to create a cron using Cron Expressions in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.178Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/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 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 job_meta = { '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 expression_cron = job_scheduling.CRON.create({ 'cron_name': 'expression_cron', # set a name for the cron (unique) 'description': 'expression_cron', # set the cron description (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': job_meta # set function job meta }) 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 Python method to get details of a cron in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.178Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/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 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 the get() SDK method. cron = job_scheduling.CRON.get('1234567890') # get cron with cron Id cron = job_scheduling.CRON.get('test') # get cron with cron name -------------------------------------------------------------------------------- title: "Get Details of All Crons" description: "This page describes the Python method to get details of all the crons in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.178Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/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 The following SDK will allow you to get all available information on all Pre-Defined Crons using the get_all() SDK method. Note: This method will only fetch you details of Pre-Defined Crons. This method will not work for Dynamic Crons. all_cron = job_scheduling.CRON.get_all() # get all static cron -------------------------------------------------------------------------------- title: "Update Cron" description: "This page describes the Python method to update a cron in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.178Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/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 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 get() method, and update the details using the update() method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. cron = job_scheduling.CRON.get('test') # get cron with cron name cron.&#95;&#95;setitem&#95;&#95;('cron_name', 'test_new_name') # set cron name updated_cron = job_scheduling.CRON.update('1234567890', cron) # updating cron name with cron Id cron = job_scheduling.CRON.get('test') # get cron with cron name cron.&#95;&#95;setitem&#95;&#95;('cron_name', 'test_name') # set cron name updated_cron = job_scheduling.CRON.update('test', cron) # updating cron name with the existing cron name -------------------------------------------------------------------------------- title: "Pause Cron" description: "This page describes the Python method to pause a cron in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.178Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/job-scheduling/cron/pause-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - Java SDK (/en/sdk/java/v1/job-scheduling/cron/pause-cron/) - Node.js SDK (/en/sdk/nodejs/v2/job-scheduling/cron/pause-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/create-cron/create-one-time-cron/#CreateaOne-TimeCron) -------------------------------------------------------------------------------- # Pause Cron 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 pause() SDK method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. paused_cron = job_scheduling.CRON.pause('1234567890') # disable a cron with the cron Id paused_cron = job_scheduling.CRON.pause('test_cron') # disable a cron with the cron name -------------------------------------------------------------------------------- title: "Resume Cron" description: "This page describes the Python method to resume a cron in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.178Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/job-scheduling/cron/resume-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/create-cron/create-one-time-cron/#CreateaOne-TimeCron) -------------------------------------------------------------------------------- # Resume Cron 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 resume() SDK method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. resumed_cron = job_scheduling.CRON.resume('1234567890') # enable a cron with the cron Id resumed_cron = job_scheduling.CRON.resume('test_cron') # enable a cron with the cron name -------------------------------------------------------------------------------- title: "Run Cron" description: "This page describes the Python method to execute a cron in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.178Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/job-scheduling/cron/run-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/create-cron/create-one-time-cron/#CreateaOne-TimeCron) -------------------------------------------------------------------------------- # Run Cron 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 run() SDK method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. job = job_scheduling.CRON.run('1234567890') # run cron with cron Id job = job_scheduling.CRON.run('test_cron') # run cron with cron name -------------------------------------------------------------------------------- title: "Delete Cron" description: "This page describes the Python method to delete a cron in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.178Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/job-scheduling/cron/delete-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/delete-cron/#DeleteCron) -------------------------------------------------------------------------------- # Delete Cron This SDK method can be used to delete a particular cron. This can be done by passing the cron id or name to the delete() SDK method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. deleted_cron = job_scheduling.CRON.delete('1234567890') # delete cron with cron Id deleted_cron = job_scheduling.CRON.delete('test_cron') # delete a cron with cron name ##### Job Pool -------------------------------------------------------------------------------- title: "Get All Job Pools’ Details" description: "This page describes the Python method to get all the job pools present in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.179Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/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 Using the following SDK, you will be able to get all the available details on all of the available Job Pools. all_jobpools = job_scheduling.get_all_jobpool() # get all jobpools -------------------------------------------------------------------------------- title: "Get Specific Job Pool’s Details" description: "This page describes the Python method to get details of a specific job pool present in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.179Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/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 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 get_jobpool() SDK method. ### Get Job Pool Details Using Job Pool ID jobpool = job_scheduling.get_jobpool('1234567890') # get jobpool with the jobpool id "1234567890" ### Get Job Pool Details Using Job Pool Name jobpool = job_scheduling.get_jobpool('test') # get jobpool with the jobpool name "test" ##### Jobs -------------------------------------------------------------------------------- title: "Create Job" description: "This page describes the Python method to create a job in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.179Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/job-scheduling/jobs/create-job/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/job/introduction/) - Java SDK (/en/sdk/java/v1/job-scheduling/jobs/create-job/) - Node.js SDK (/en/sdk/nodejs/v2/job-scheduling/jobs/create-job/) - REST API Collection (/en/api/code-reference/job-scheduling/job/submit-job/submit-webhook-job/#SubmitWebhookJobByID) -------------------------------------------------------------------------------- # Create Job 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 function_job = job_scheduling.JOB.submit_job( { "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 circuit_job = job_scheduling.JOB.submit_job( { "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 webhook_job = job_scheduling.JOB.submit_job( { "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 appsail_job = job_scheduling.JOB.submit_job( { "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 Python method to get details of a job in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.179Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/job-scheduling/jobs/get-job/) - REST API Collection (/en/api/code-reference/job-scheduling/job/get-job/#GetJobByID) -------------------------------------------------------------------------------- # Get Job Details 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 get_job() SDK method. job = job_scheduling.JOB.get_job('1234567890') # get job with job Id -------------------------------------------------------------------------------- title: "Delete Job" description: "This page describes the Python method to delete a job in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.179Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/job-scheduling/jobs/delete-job/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/job/introduction/) - Java SDK (/en/sdk/java/v1/job-scheduling/jobs/delete-job/) - Node.js SDK (/en/sdk/nodejs/v2/job-scheduling/jobs/delete-job/) - REST API Collection (/en/api/code-reference/job-scheduling/job/delete-job/#DeleteJobbyID) -------------------------------------------------------------------------------- # Delete Job 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 delete_job() SDK method. job = job_scheduling.JOB.delete_job('1234567890') # delete job with 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-07-02T09:34:10.179Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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) - NodeJS SDK (/en/sdk/nodejs/v2/pipelines/get-pipeline-instance) - REST API (/en/api/code-reference/pipelines/get-pipeline-details) -------------------------------------------------------------------------------- # Catalyst Pipelines 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 Python object returned as a response during SDK initialization. You can create a new pipelines_service instance as shown below. 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-07-02T09:34:10.179Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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) - NodeJS SDK (/en/sdk/nodejs/v2/pipelines/get-pipeline-instance) - REST API (/en/api/code-reference/pipelines/get-pipeline-details) -------------------------------------------------------------------------------- # Get Pipeline Details You can fetch the details of the Catalyst Pipeline by passing the pipeline ID as a parameter to the get_pipeline_details() 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. pipeline_details = pipelines_service.get_pipeline_details("16965000000027475") A sample response is shown below: { "status": "success", "data": { "pipeline_id": "16965000000027475", "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-07-02T09:34:10.179Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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) - NodeJS SDK (/en/sdk/nodejs/v2/pipelines/get-pipeline-instance) - REST API (/en/api/code-reference/pipelines/get-pipeline-details) -------------------------------------------------------------------------------- # Execute Pipeline You can initiate a Catalyst pipeline run by passing the pipeline ID and the branch name as parameters to the run_pipeline() 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. execution_details = pipelines_service.run_pipeline("18014000000023048", "main", {"EVENT": "push","URL":"https://www.google.com"}) A sample response is shown below: { "status": "success", "data": { "history_id": "5000000021007", "pipeline_id": "18014000000023048", "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 Python application with a sample code snippet." last_updated: "2026-07-02T09:34:10.179Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/quickml/execute-quickml-endpoints/" service: "QuickML" related: - QuickML Help (/en/quickml/) - QuickML Pipeline Endpoints (/en/quickml/help/pipeline-endpoints/) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Catalyst QuickML 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 ML pipeline, you can access the models you created 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 will need to create a data dictionary through which 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. The app reference used in the code below is the Python object returned as a response during SDK initialization. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>endpoint_key</td> <td>A Mandatory parameter. Will store the unique ID of the endpoint published for the ML model.</td> </tr> <tr> <td>input_data</td> <td>A Mandatory parameter. Will store the the data to be published to the QuickML endpoint.</td> </tr> </tbody> </table> # Input data dictionary input_data = { # Give column name and value as per your data set "column_name1": "value1", "column_name2": "value2", "column_name3": "value3", } #Create quickml instance quickml = app.quick_ml() #Execute method result = quickml.predict("{endpoint_key}", input_data) #Replace {endpoint_key} with the endpoint key copied from the catalyst console print(result) The syntax of the output received is shown below: { "status":"success", "result":[ "results....." ] } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. #### Serverless ##### AppSail -------------------------------------------------------------------------------- title: "Implement SDK in AppSail" description: "This page describes the method to implement Python SDK in an AppSail service for Catalyst-managed runtimes and avail Catalyst features within the application." last_updated: "2026-07-02T09:34:10.179Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/serverless/appsail/implement-sdk-in-appsail/" service: "Serverless" related: - AppSail Help (/en/serverless/help/appsail/introduction) -------------------------------------------------------------------------------- # Catalyst AppSail 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 Python SDK in your AppSail applications for Catalyst-managed runtimes. AppSail supports frameworks of Python such as Flask, Django, Bottle, CherryPy, etc. You can access help guides for building sample apps in Python. ## Implement Python SDK in AppSail You can implement the Catalyst Python SDK in the codebase of your AppSail service with ease. The SDK will need to be initialized with the request object before each request. Given below is an example of importing and initializing the Python SDK in a Flask web app. 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) Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ##### Circuits -------------------------------------------------------------------------------- title: "Get Component Instance" description: "This page describes the method to make use of circuits to organize and orchestrate tasks in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.179Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/serverless/circuits/get-a-component-instance/" service: "Serverless" related: - Circuits Help (/en/serverless/help/circuits/introduction) -------------------------------------------------------------------------------- # Circuits Catalyst Serverless Circuits is a component that is a part of the Catalyst development platform that helps to orchestrate tasks and automate workflows. You can enable concurrent or sequential executions of Catalyst functions in a circuit, and additionally include conditions, data, and paths in the workflow, to define a repeatable pattern of activities that achieves a business outcome. This section covers the various SDK methods that can be used to implement the circuits component in your Catalyst application. Note: Circuits is currently not available to Catalyst users accessing from the EU, AU, IN, JP, SA or CA data centers. #### Get a component instance A component instance is an object that can be used to access the pre-defined configurations specific to a particular component. This process will not fire a server-side call. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new circuitinstance as shown below. Also note that this component instance will be used in multiple scenarios while implementing the circuit component in your application. #Get a circuit component instance circuit = app.circuit() -------------------------------------------------------------------------------- title: "Execute Circuit" description: "This page describes the method to make use of circuits to organize and orchestrate tasks in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.179Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/serverless/circuits/execute-circuit/" service: "Serverless" related: - Execute Circuit - API (/en/api/code-reference/serverless/circuits/execute-circuit/#ExecuteCircuit) - Circuits Help (/en/serverless/help/circuits/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- ### Execute a Circuit The sample code below illustrates executing a circuit by referring to its unique circuit ID and passing key-value pairs as the input to the circuit in the form of a dictionary. To know more about the component instance circuit_service used below, please refer to this help 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>circuit ID</td> <td>Numeric</td> <td>A Mandatory parameter. Will store the unique ID the circuit to be executed.</td> </tr> <tr> <td>circuit input</td> <td>Object</td> <td>A Mandatory parameter. Will store the dictionary that contains the input to the cricut.</td> </tr> </tbody> </table> #Execute a circuit circuit = app.circuit() result = circuit.execute(5249000000108030, name="Test_Circuit") A sample response is shown below : { "id":"5249000000108030", "name":"Test_Circuit", "start_time":"Aug 18, 2021 07:35 PM", "status":"running", "status_code":1, "execution_meta":{ }, "circuit_details":{ "name":"Test_Circuit", "ref_name":"testcircuit", "description":"", "instance_id":"70454fc5-3bf6-45af-81ca-2742cc049698" }, "input":{ "name":"Aaron Jones" } } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ##### Functions -------------------------------------------------------------------------------- title: "Get Component Instance" description: "This page describes the method to execute functions in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.179Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/serverless/functions/get-component-instance/" service: "Serverless" related: - Functions Help (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Functions Catalyst Serverless Functions are custom-built coding structures that contain the business logic of your Catalyst application. They can be created either using the Catalyst console or the CLI. This section covers the various SDK methods that can be used to implement functions in your Catalyst application. #### Get a Component Instance A component instance is an object that can be used to access the pre-defined configurations specific to a particular component. This process will not fire a server-side call. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new function_serviceinstance as shown below. This component instance will be used in the next section while executing the function. #Get function component instance function_service = app.functions() -------------------------------------------------------------------------------- title: "Execute Function" description: "This page describes the method to execute functions in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.179Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/serverless/functions/execute-function/" service: "Serverless" related: - Execute Function - API (/en/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) - Functions Help (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Execute the function A function can be executed by calling the execute() method in which the function ID and the configuration (of type dictionary) are passed as parameters. To know more about the component instance function_service used below, please refer to this help section. Before executing a function, you must set the configuration required for it. Here, the configuration specifies the function arguments and their values. The unique functionID is passed as a parameter to the execute() method to call the function to be executed with the necessary configuration. The configuration can be set using the following code snippet : **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>function_ID</td> <td>Numeric</td> <td>A Mandatory parameter. Will store the unique ID the function to be executed.</td> </tr> <tr> <td>function_config</td> <td>Object</td> <td>A Mandatory parameter. Will store the configuration of the function to be executed.</td> </tr> </tbody> </table> function_service = app.functions() args = {"Name": "Amelia"} return_value = function_service.execute(5249000000015567, args) Info : 1. Refer to the SDK Scopes table to determine the required permission level for performing the above operation. 2. 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-07-02T09:34:10.180Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/smartbrowz/create-smartbrowz-instance/" service: "SmartBrowz" related: - SmartBrowz Help (/en/smartbrowz/getting-started/introduction/) -------------------------------------------------------------------------------- # Catalyst SmartBrowz 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. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new smart_browzinstance as shown below. smart_browz = app.smart_browz() This component instance will be used for all SmartBrowz operations in Python SDK. 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: "PDF & Screenshot" description: "This page describes the method to generate PDF and Screenshot" last_updated: "2026-07-02T09:34:10.180Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/smartbrowz/generate-pdfnscreenshot/" service: "SmartBrowz" related: - PDF & Screenshot - API (/en/api/code-reference/smartbrowz/generate-pdfnscreenshoturl/#PDF%26ScreenshotwithHTML%2fURLasInput) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # PDF & Screenshot 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. To know more about the component instance smart_browz used below, please refer to this help section. # Generate PDF or Screenshot from template smart_browz = app.smart_browz() result = smart_browz.generate_from_template( "153000000009001", # Replace template id template_data={}, output_options={"output_type": "pdf"}, pdf_options={ "scale": 1, "display_header_footer": true, "print_background": false, "landscape": false, "page_ranges": "1", "format": "A4", "width": "100", "height": "100", "omit_background": false, "password": "Demo$", }, page_options={ "css": {"content": "body{background: lightgrey}"}, "viewport": {"width": 1440, "height": 900}, "javascript_enabled": true, }, navigation_options={"timeout": 5000, "wait_until": "networkidle0"}, ) # Convert to PDF from HTML smart_browz = app.smart_browz() result = smart_browz.convert_to_pdf( "<h1>Welcome</h1>", pdf_options={ "scale": 1, "display_header_footer": true, "print_background": false, "landscape": false, "page_ranges": "1", "format": "A4", "width": "100", "height": "100", "omit_background": false, "password": "Demo$", }, page_options={ "css": {"content": "body{background: lightgrey}"}, "viewport": {"width": 1440, "height": 900}, "javascript_enabled": true, }, navigation_options={"timeout": 5000, "wait_until": "networkidle0"}, ) # Generate PDF from URL smart_browz = app.smart_browz() result = smart_browz.convert_to_pdf( "https://catalyst.zoho.com/", pdf_options={ "scale": 1, "display_header_footer": true, "print_background": false, "landscape": false, "page_ranges": "1", "format": "A4", "width": "100", "height": "100", "omit_background": false, "password": "Demo$", }, page_options={ "css": {"content": "body{background: lightgrey}"}, "viewport": {"width": 1440, "height": 900}, "javascript_enabled": true, }, navigation_options={"timeout": 5000, "wait_until": "networkidle0"}, ) # Take a screenshot from HTML smart_browz = app.smart_browz() output_screenshot = smart_browz.take_screenshot( source='<h1>Welcome</h1>', "output_options": { "output_type": "screenshot" }, screenshot_options= { "type": "jpeg", "quality": 100, "full_page": false, "omit_background": false, "capture_beyond_viewport": true, "clip": { "x": 50, "y": 100, "width": 1000, "height": 100 } }, page_options= { "css": { "content": "body{background: lightgrey}" }, "viewport": { "width": 1440, "height": 900 "viewport": { "width": 1440, "height": 900 }, "javascript_enabled": true "javascript_enabled": true }, navigation_options= { "timeout": 5000, "wait_until": "networkidle0" "navigation_options": { "timeout": 5000, "wait_until": "networkidle0" } } }) # Take a screenshot from URL smart_browz = app.smart_browz() output_screenshot = smart_browz.take_screenshot( source='YOUR_URL', "output_options": { "output_type": "screenshot" }, screenshot_options= { "type": "jpeg", "quality": 100, "full_page": false, "omit_background": false, "capture_beyond_viewport": true, "clip": { "x": 50, "y": 100, "width": 1000, "height": 100 } }, page_options= { "css": { "content": "body{background: lightgrey}" }, "viewport": { "width": 1440, "height": 900 "viewport": { "width": 1440, "height": 900 }, "javascript_enabled": true "javascript_enabled": true }, navigation_options= { "timeout": 5000, "wait_until": "networkidle0" "navigation_options": { "timeout": 5000, "wait_until": "networkidle0" } } }) 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. Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Dataverse" description: "This page describes the SDK methods for Catalyst Dataverse modules." last_updated: "2026-07-02T09:34:10.180Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/smartbrowz/dataverse/" service: "SmartBrowz" related: - Dataverse Help (/en/smartbrowz/help/dataverse/introduction/) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Dataverse 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. 1. **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 get_enriched_lead() method, in order to retrieve the information. Note: You must provide the value for at least one key in the get_enriched_lead() method. The smart_browz reference used here is the component instance that we created earlier. **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>lead_details</td> <td>Array</td> <td>A Mandatory parameter. Will store the details of the lead to be collected from the web.</td> </tr> </tbody> </table> smart_browz = app.smart_browz() response = smart_browz.get_enriched_lead( { "email": "sales@zohocorp.com", "lead_name": "zoho", "website_url": "https://www.zoho.com", } ) print(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" } ] 2. **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 find_tech_stack() method, in order to retrieve the information. The smart_browz reference used here is the component instance that we created earlier. **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>org_url</td> <td>String</td> <td>A Mandatory parameter. Will store the URL of the organization for which tech stack details are needed.</td> </tr> </tbody> </table> smart_browz = app.smart_browz() response = smart_browz.find_tech_stack('https://www.zoho.com') print(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" } ] 3. **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 get_similar_companies() method. To know more about the component instance smart_browz used below, please refer to this help 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>company_url</td> <td>String</td> <td>A Mandatory parameter. Will store the URL of the organization for which similar organizations need to be retrieved.</td> </tr> </tbody> </table> smart_browz = app.smart_browz() response = smart_browz.get_similar_companies( {"lead_name": "zoho", "website_url": "https://www.zoho.com"} ) print(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. Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ##### Browser Grid -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the Python method to get all the job pools present in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.180Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Overview 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 Python 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 describes the Python method to get all the job pools present in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.180Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get Browser Grid Instance 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. grid = app.smart_browz().browser_grid() # get Browser Grid instance -------------------------------------------------------------------------------- title: "Get All Browser Grid Details" description: "This page describes the Python method to get all the job pools present in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.180Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-all-grids/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get All Browser Grid Details You can use the get_all_grid() 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 intialize it with Admin scope. You can learn more about this requirement from this section grid_list = grid.get_all_grid() # return details of all grids print(grid_list) ### 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 describes the Python method to get all the job pools present in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.180Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-specific-grid/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get a Specific Browser Grid 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 intialize 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 get_grid() SDK method. The grid instance used in the following snippet is the component reference. grid_details = grid.get_grid(3970000000005013) # get grid details using the Grid ID print(grid_details) ### Using the Grid's Name You can pass the name of the required browser grid to the get_grid() SDK method. The grid instance used in the following snippet is the component reference. grid_details = grid.get_grid("Selenium_Grid") # get grid details using the name of the grid print(grid_details) ### 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 describes the Python method to get all the job pools present in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.180Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-specific-node/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get Details of a Node By passing the **Grid ID** or name of the required browser grid to the get_grid_nodes() SDK method, you can get the details of a node in that grid. 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 Grid ID You can pass the **Grid ID** of the required browser grid to the get_grid_nodes() SDK method, to get its node details. The grid instance used in the following snippet is the component reference. node_details = grid.get_grid_nodes(3970000000005013) # get details of the node using its Grid ID print(node_details) ### Using the Grid's Name You can pass the name of the required browser grid to the get_grid_nodes() SDK method, to get its node details. The grid instance used in the following snippet is the component reference. node_details = grid.get_grid_nodes("Selenium_Grid") # get details of the node using the grid's name print(node_details) -------------------------------------------------------------------------------- title: "Stop the Browser Grid" description: "This page describes the Python method to get all the job pools present in your project with sample code snippets." last_updated: "2026-07-02T09:34:10.180Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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/) - Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/stop-grid/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Stop the Browser Grid By passing the **Grid ID** or name of the required browser grid to the stop_grid() SDK method, you can terminate all executions and stop the browser grid. 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 Grid ID You can pass the **Grid ID** of the required browser grid to the stop_grid() SDK method, to stop the grid, and terminate all its executions. The grid instance used in the following snippet is the component reference. grid_terminate = grid.stop_grid(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 stop_grid() SDK method, to stop the grid, and terminate all its executions. The grid instance used in the following snippet is the component reference. grid_terminate = grid.stop_grid("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 Python application with sample code snippets" last_updated: "2026-07-02T09:34:10.180Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/get-component-instance/" service: "Zia Services" related: - Catalyst Zia (/en/zia-services/getting-started/introduction) -------------------------------------------------------------------------------- # Catalyst Zia Catalyst Zia is a suite of fully managed AI/ML powered components that can be readily incorporated to build smart and reliable applications. These components help you detect, process, or predict data that can be highly beneficial in various aspects of your business. You can use a Catalyst Zia service in your application by implementing its component specific SDK snippet in your source code. # Get component instance A component instance is an object that can be used to access the predefined configurations specific to a particular component. This process will not fire a server-side call. Also note that this component instance will be used in multiple scenarios while implementing Zia services in your application. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new ziainstance as shown below : #Get Zia component instance zia = app.zia() -------------------------------------------------------------------------------- title: "OCR" description: "This page describes the method to use the Optical Character Recognition feature to detect textual characters in your Python application with sample code snippets" last_updated: "2026-07-02T09:34:10.180Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/ocr/" service: "Zia Services" related: - OCR - API (/en/api/code-reference/zia-services/ocr/#OCR) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Optical Character Recognition 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 nine 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 as a parameter to the open() method. This opens the file and returns a file object as a response. 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 extract_optical_characters() 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. To know more about the component instance zia used below, please refer to this help 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>img</td> <td>Image</td> <td>A Mandatory parameter. Will store the image that has to be analyzed.</td> </tr> <tr> <td>language</td> <td>String</td> <td>A Mandatory parameter. Will store the language to be identified.</td> </tr> <tr> <td>modelType</td> <td>String</td> <td>A Mandatory parameter. Will store the default value as "OCR".</td> </tr> </tbody> </table> # OCR Implementation zia = app.zia() img = open("sample.webp", "rb") result = zia.extract_optical_characters(img, {"language": "eng", "modelType": "OCR"}) A sample response is shown below : { "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" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Face Analytics" description: "This page describes the method to use the Face Analytics feature to detect faces with specified criteria in your Python application with sample code snippets" last_updated: "2026-07-02T09:34:10.181Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/face-analytics/" service: "Zia Services" related: - Face Analytics - API (/en/api/code-reference/zia-services/face-analytics/#FaceAnalytics) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Face Analytics 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 a .webp/.jpeg or .png file as the input to the open() method to perform Face Analytics on that image. This opens the provided file and returns a file object as a response. The analyse_face() 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. Refer to the API documentation for the request and response formats. To know more about the component instance zia used below, please refer to this help section. 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. **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>img</td> <td>Image</td> <td>A Mandatory parameter. Will store the image of the face to be analyzed.</td> </tr> <tr> <td>mode</td> <td>String</td> <td>A Optional parameter. Will store the analysis mode values - "basic", "moderate" or "advanced".</td> </tr> <tr> <td>age</td> <td>Boolean</td> <td>A Optional parameter. Will decide whether to determine age or not. Values accepted are "Yes" or "No"</td> </tr> <tr> <td>emotion</td> <td>Boolean</td> <td>A Optional parameter. Will decide whether to determine emotion or not. Values accepted are "Yes" or "No"</td> </tr> <tr> <td>gender</td> <td>Boolean</td> <td>A Optional parameter. Will decide whether to determine gender or not. Values accepted are "True" or "False"</td> </tr> </tbody> </table> # Face Analytics implementation zia = app.zia() img = open("sample.webp", "rb") result = zia.analyse_face( img, {"mode": "moderate", "age": True, "emotion": True, "gender": False} ) A sample response 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" } } ] } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Image Moderation" description: "This page describes the method to use the Image Moderation feature to detect vulnerability in images within your Python application with sample code snippets" last_updated: "2026-07-02T09:34:10.181Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/image-moderation/" service: "Zia Services" related: - Image Moderation - API (/en/api/code-reference/zia-services/image-moderation/#ImageModeration) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Image Moderation 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 .webp/.jpeg or .png file as the input to the open() method. This method returns the image file object as a response. 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. To know more about the component instance zia used below, please refer to this help 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>img</td> <td>Image</td> <td>A Mandatory parameter. Will store the image to be analyzed.</td> </tr> <tr> <td>options</td> <td>Array</td> <td>A Optional parameter. Will store the analysis mode values - "basic", "moderate" or "advanced"</td> </tr> </tbody> </table> zia = app.zia() img = open("sample.webp", "rb") result = zia.moderate_image(img, options={"mode": "moderate"}) A sample response is shown below : { "probability":{ "racy":"0.09", "nudity":"0.06" }, "confidence":"0.85", "prediction":"safe_to_use" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Object Recognition" description: "This page describes the method to use the Object Recognition feature to locate objects in your Python application with sample code snippets" last_updated: "2026-07-02T09:34:10.181Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/object-recognition/" service: "Zia Services" related: - Object Recognition - API (/en/api/code-reference/zia-services/object-recognition/#ObjectRecognition) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Object Recognition 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 .webp/.jpeg or .png file as the input to the open() method. This method returns the image file object as a response. Refer to the API documentation for the request and response formats. The detect_object() 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. To know more about the component instance zia used below, please refer to this help section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Tyoe</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>img</td> <td>Image</td> <td>A Mandatory parameter. Will store the image that has to be analyzed for objects.</td> </tr> </tbody> </table> zia = app.zia() img = open("sample.webp", "rb") result = zia.detect_object(img) A sample response is shown below : { "objects":[ { "co_ordinates":[ "322", "125", "708", "1201" ], "object_type":"person", "confidence":"99.82" } ] } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Barcode Scanner" description: "This page describes the method to use the Barcode Scanner feature to scan certain data formats in your Python application with sample code snippets" last_updated: "2026-07-02T09:34:10.181Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/barcode-scanner/" service: "Zia Services" related: - Barcode Scanner - API (/en/api/code-reference/zia-services/barcode-scanner/#BarcodeScanner) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Barcode Scanner 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 .webp/.jpeg or .png to the open() method. This method returns the image file object as a response. 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. To know more about the component instance zia used below, please refer to this help 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>img</td> <td>Image</td> <td>A Mandatory parameter. Will store the ID of the model to be trained.</td> </tr> <tr> <td>options</td> <td>Array</td> <td>A Mandatory parameter. Will store the format of the barcode.</td> </tr> </tbody> </table> zia = app.zia() img = open("sample.webp", "rb") result = zia.scan_barcode(img, options={"format": "code39"}) A sample response is shown below : { "content":"https://demo.dynamsoft.com/dbr_wasm/barcode_reader_javascript.html" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ##### Identity Scanner -------------------------------------------------------------------------------- title: "Facial Comparison" description: "This page describes the method to use facial comparison feature in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.181Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/identity-scanner/facial-comparison/" service: "Zia Services" related: - Facial Comparison - API (/en/api/code-reference/zia-services/identity-scanner/facial-comparison/#FacialComparison) - Facial Comparison Help (/en/zia-services/help/identity-scanner/key-concepts/#facial-comparison-process) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Identity Scanner 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 only used for one-time processing. They are not used for ML model training purposes. 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 compare_face() method processes both these images. To know more about the component instance zia used below, please refer to this help section. 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, which 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. **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>img</td> <td>Image</td> <td>A Mandatory parameter. Will store the first image file of the face.</td> </tr> <tr> <td>img2</td> <td>Image</td> <td>A Mandatory parameter. Will store the second image file of the face.</td> </tr> </tbody> </table> # Facial Comparison feature implementation zia = app.zia() img = open("sample1.webp", "rb") img2 = open("sample2.webp", "rb") result = zia.compare_face(img, img2) The sample response is shown below : { "confidence":0.9464, "matched":"true" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Aadhaar" description: "This page describes the method to use the AADHAAR document processing feature in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.181Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/identity-scanner/aadhaar/" service: "Zia Services" related: - Aadhaar - API (/en/api/code-reference/zia-services/identity-scanner/aadhaar/#Aadhaar) - Aadhaar Help (/en/zia-services/help/identity-scanner/key-concepts/#model-types) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Identity Scanner 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 to the open() method, as shown in the code below. This opens both the files and returns the respective file objects as a response. To know more about the component instance zia used below, please refer to this help section. Identity Scanner will now automatically identify the languages in an Aadhaar card and process it. 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. **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>aadhar_front</td> <td>Image</td> <td>A Mandatory parameter. Will store the front side Aadhaar image in less than 15 MB.</td> </tr> <tr> <td>aadhar_back</td> <td>Image</td> <td>A Mandatory parameter. Will store the back side Aadhaar image in less than 15 MB.</td> </tr> <tr> <td>language</td> <td>String</td> <td>A Mandatory parameter. Will store the language to be identified.</td> </tr> </tbody> </table> zia = app.zia() img = open("sample.webp", "rb") img2 = open("sample2.webp", "rb") result = zia.extract_aadhaar_characters(img, img2, language="eng,tam") A sample response is shown below : { "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" } } } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "PAN" description: "This page describes the method to use the PAN document processing feature in your Python application with sample code snippets" last_updated: "2026-07-02T09:34:10.181Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/identity-scanner/pan/" service: "Zia Services" related: - PAN - API (/en/api/code-reference/zia-services/identity-scanner/pan/#PAN) - PAN Help (/en/zia-services/help/identity-scanner/key-concepts/#model-types) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Identity Scanner 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 DCs. 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 to the open() method, as shown in the code below. This method opens the file and returns the file object as a response. To know more about the component instance zia used below, please refer to this help section. 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. **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>img</td> <td>Image</td> <td>A Mandatory parameter. Will store the image file of the front side of the PAN card.</td> </tr> <tr> <td>modelType</td> <td>String</td> <td>A Mandatory parameter. Will store the default value as "PAN".</td> </tr> </tbody> </table> zia = app.zia() img = open("sample.webp", "rb") result = zia.extract_optical_characters(img, {"modelType": "PAN"}) The response is shown below : { "date_of_birth":"03/04/1982", "last_name":"VASUDEV MAHTO", "pan":"ANRPM2537J", "first_name":"PRAMOD KUMAR MAHTO" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Passbook" description: "This page describes the method to use the PASSBOOK document processing feature in your Python application with sample code snippets" last_updated: "2026-07-02T09:34:10.181Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/identity-scanner/passbook/" service: "Zia Services" related: - Passbook - API (/en/api/code-reference/zia-services/identity-scanner/passbook/#Passbook) - Passbook Help (/en/zia-services/help/identity-scanner/key-concepts/#model-types) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Identity Scanner 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. To know more about the component instance zia used below, please refer to this help 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>img</td> <td>Image</td> <td>A Mandatory parameter. Will store the language to be detected.</td> </tr> <tr> <td>modelType</td> <td>String</td> <td>A Mandatory parameter. Will store the default value as "PASSBOOK".</td> </tr> </tbody> </table> zia = app.zia() img = open("sample.webp", "rb") result = zia.extract_optical_characters( img, {"language": "tam", "modelType": "PASSBOOK"} ) A sample reference is shown below : { "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" } } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Cheque" description: "This page describes the method to use the Cheque document processing feature in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.181Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/identity-scanner/cheque/" service: "Zia Services" related: - Cheque - API (/en/api/code-reference/zia-services/identity-scanner/cheque/#Cheque) - Cheque Help (/en/zia-services/help/identity-scanner/key-concepts/#model-types) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Identity Scanner 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, JP, SA, US, or CA DCs. 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 to the open() method, as shown in the code below. This method returns the file object as a response. 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. To know more about the component instance zia used below, please refer to this help 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>img</td> <td>Image</td> <td>A Mandatory parameter. Will store the image file of the front page of the chequebook.</td> </tr> <tr> <td>modelType</td> <td>String</td> <td>A Mandatory parameter. Will store the default value as "CHEQUE".</td> </tr> </tbody> </table> zia = app.zia() img = open('sample.webp', 'rb') result = zia.extract_optical_characters(img, {'modelType': 'CHEQUE'}) A sample response is shown below : { "date":"15/11/2014", "account_number":"89323223232222", "amount":"10615", "branch_name":"ANNA NAGAR", "bank_name":"ABX BANK", "ifsc":"BB9033232" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ##### Text Analytics -------------------------------------------------------------------------------- title: "Sentiment Analysis" description: "This page describes the method to use the sentiment analysis feature in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.181Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/text-analytics/sentiment-analysis/" service: "Zia Services" related: - Sentiment Analysis - API (/en/api/code-reference/zia-services/text-analytics/sentiment-analysis/#SentimentAnalysis) - Sentiment Analysis Help (/en/zia-services/help/text-analytics/key-concepts/#sentiment-analysis) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Sentiment Analysis 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 analyzes 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 get_sentiment_analysis(). 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. This method takes in a second parameter as an empty list. To know more about the component instance zia used below, please refer to this help 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>text</td> <td>String</td> <td>A Mandatory parameter. Will store the text to be analyzed.</td> </tr> <tr> <td>keyword</td> <td>String</td> <td>A Optional parameter. Will store the keywords to filter sentences containing them and analyze their sentiments.</td> </tr> </tbody> </table> zia = app.zia() result = zia.get_sentiment_analysis( [ "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"], [], ) A sample response is shown below : { "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 } } ], "overall_score":0.83 } ] } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Named Entity Recognition" description: "This page describes the method to use the named entity recognition feature in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.182Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/text-analytics/named-entity-recognition/" service: "Zia Services" related: - Named Entity Recognition Help (/en/zia-services/help/text-analytics/key-concepts/#named-entity-recognition) - Named Entity Recognition - API (/en/api/code-reference/zia-services/text-analytics/named-entity-recognition/#NamedEntityRecognition) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Named Entity Recognition 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 get_NER_prediction(). To know more about the component instance zia used below, please refer to this help 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>text</td> <td>String</td> <td>A Mandatory parameter. Will store the text in which entities has to be recognized.</td> </tr> </tbody> </table> zia = app.zia() result = zia.get_NER_prediction( [ "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." ] ) The sample response is shown below : { "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" } ] } } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Keyword Extraction" description: "This page describes the method to use the keyword extraction feature in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.182Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/text-analytics/keyword-extraction/" service: "Zia Services" related: - Keyword Extraction Help (/en/zia-services/help/text-analytics/key-concepts/#keyword-extraction) - Keyword Extraction - API (/en/api/code-reference/zia-services/text-analytics/keyword-extraction/#KeywordExtraction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Keyword Extraction 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 get_keyword_extraction(). The keywords and keyphrases are then fetched as individual lists. To know more about the component instance zia used below, please refer to this help 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>text</td> <td>String</td> <td>A Mandatory parameter. Will store the text from which keywords has to be extracted.</td> </tr> </tbody> </table> zia = app.zia() result = zia.get_keyword_extraction( [ "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." ] ) The sample response is shown below : { "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" ] } } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "All Text Analytics" description: "This page describes the method to use the text analytics feature in your Python application with sample code snippets." last_updated: "2026-07-02T09:34:10.182Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/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) - All Text Analytics Help (/en/zia-services/help/text-analytics/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # All Text Analytics 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 get_text_analytics(). You can also pass optional keywords to perform Sentiment Analysis on the sentences containing only those keywords. This method takes in a second parameter as an empty list. 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. To know more about the component instance zia used below, please refer to this help 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>text</td> <td>String</td> <td>A Mandatory parameter. Will store the text to be analyzed.</td> </tr> </tbody> </table> zia = app.zia() result = zia.get_text_analytics( [ "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"], [] ) A sample response is shown below : [ { "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" } ] } } ] Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ## Web ### v4 -------------------------------------------------------------------------------- title: "Overview" description: "Catalyst Web SDK is a set of tools and libraries that enable you to access Catalyst components and create web client applications" last_updated: "2026-07-02T09:34:10.182Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/overview/" service: "All Services" related: - Overview - Node.js SDK (/en/sdk/nodejs/v2/overview/) - Overview - Java SDK (/en/sdk/java/v1/overview/) - Overview - Python SDK (/en/sdk/python/v1/overview/) -------------------------------------------------------------------------------- # Web SDK ## Overview The Catalyst Web SDK has the javascript methods which helps you to access the Catalyst Components from your client web application. ### Prerequisites * Catalyst CLI (Refer CLI Installation) * Catalyst project (Refer Catalyst Projects) * Any text editor(Xcode or Sublime) ### Authentication Catalyst provides a straightforward authentication mechanism for users to access the Catalyst REST APIs and our SDKs. In order to use the catalyst components from your client application, it is mandatory to integrate the authentication mechanism provided by Catalyst. <br> ### Initialize SDK Catalyst Authentication can be integrated with your application, by including the code snippet given below in your application. This script allows you to access the JavaScript methods of Catalyst Web SDK. This initializes the Web SDK and refers to an init.js file which will automatically populate the essential details of your project, such as the Project ID which is your project's unique ID and ZAID which is the project's key. Note: The request pattern /\_\_catalyst/ \* is reserved. You will not be able to include your own files in that location. These values are automatically populated based on the environment that you are working on. That is, if this script is called from the Development environment URL of your app, the appropriate ZAID value is populated. &lt;script src="https://static.zohocdn.com/catalyst/sdk/js/4.0.0/catalystWebSDK.js"&gt;&lt;/script&gt; &lt;script src="/__catalyst/sdk/init.js"&gt;&lt;/script&gt; &lt;script&gt; catalyst.auth.signIn("your element id here...."); &lt;/script&gt; You can build the sign-in form of your application as an iFrame using this code snippet. You must however add this code snippet in all of your pages. This initialization script is required in all pages because the scope of the catalyst object is limited to a single page. The code contains the line: catalyst.auth.signIn("Your elementID here"); . The elementID can be the ID of any HTML element or div element in your application's login page. You should replace this with the elementID of your application's login and implement this in the page that contains the user login. You can now create a division in the same page for your iFrame as: _&lt;div id="Your elementID here"&gt; &lt;/div&gt;_. This will span the iFrame for user login in the same page. For example, if your elementID is "login", your code will look like this: * In the Web SDK Initialisation script: _catalyst.auth.signIn("login");_ * In the body of your page: _&lt;div id="login"&gt;&lt;/div&gt;_ Note: You can also access an older version (v 1.0.0) of the web initialization script from the Embedded Authentication section in Authentication. Refer to the Embedded Authentication help page for details. <br> ### Manage Environment Variables You can manage the environment variables through code using the following Catalyst methods: * To set the environment variable: catalyst.setCatalystEnv(keyName,value) * To get the environment variable: catalyst.getCatalystEnv(key) * To delete the environment variable: catalyst.deleteCatalystEnv(key) <br> ### Instance Objects It is always effective to minimize the API access whenever not required. In case, you need an API reference which should not actually fire the API, but should refer the component in your code for subsequent access, then Catalyst WebSDK provides that facility. For example, the following code will not fire an API call to refer a specific file component. catalyst.file.folderId(folder_id).fileId(file_id); However, the following code will actually fire an API call to delete a file from a selected folder, catalyst.file.folderId(folder_id).fileId(file_id).delete(); Note: Promises are returned with a specified object after firing the actual API call. Therefore, .then() is handled only after the actual API calls. The API calls cannot be used with dummy objects that don't fire an API. <br> ### Responses and Exceptions All the responses are returned as JSON objects containing data, status codes, and status messages. A developer can track the responses easily from these objects. #### Exceptions The faulty behaviors of the application output are called exceptions or errors. The Catalyst Web SDK throws 3 types of errors called appET, ServerET, and DeveloperET. These errors define whether faulty behavior is caused by application code, server error, or something else. #### Code the Client Application 1. Open your system's terminal and create an empty resource directory. 2. Initialize catalyst and select the client option. 3. Select the project you created ,to deploy the client application. 4. A boiler plate client code will be generated as shown below. 5. Open it in your text editor, whose structure looks like the one shown below. Note: The location where the boiler plate code (client folder and catalyst.json) is generated, is the project's home location. The following table describes the list of files and their purposes in your resource directory, <table class="content-table"> <thead> <tr> <th class="w10p">S.No</th> <th class="w30p">Files/Packages</th> <th class="w60p">Purpose</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>client (folder)</td> <td>The folder that has the static files(js, css, html,etc) of your client application.</td> </tr> <tr> <td>2</td> <td>client-package.json</td> <td>A json file that has the configuration information of your client application</td> </tr> </tbody> </table> <br> ### Structure of client-package.json { "name": "SampleApp", "version": "1.0.0", "description": "This is my sample app", "homepage": "index.html", "login_redirect":"home.html" } Here are the attributes of client-package.json: <table class="content-table"> <thead> <tr> <th class="w30p">Key Name</th> <th class="w70p">Description</th> </tr> </thead> <tbody> <tr> <td>name</td> <td>Name of your client application</td> </tr> <tr> <td>version</td> <td>Version of your client application. Refer to <a href="/en/cloud-scale/help/web-client-hosting/introduction">Web Client Hosting help page</a> for detailed information about Client application version management.</td> </tr> <tr> <td>description</td> <td>A short description about the current version you are going to deploy.</td> </tr> <tr> <td>homepage</td> <td>The landing page of your application, say <strong>index.html</strong> .</td> </tr> <tr> <td>login_redirect</td> <td>The page to be redirected after the login page. It should be mandatory if you integrate Catalyst Authentication in your application. Refer to <a href="/en/cloud-scale/help/authentication/introduction">Authentication</a> and <a href="/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser">Authentication API</a> help pages for details.</td> </tr> </tbody> </table> You can code your web application's UI elements, java script files and CSS in the appropriate files given in the Client folder. <br> ### Deploy the Client Application You can deploy the client application using Catalyst CLI. Refer to the Deploy Resources help page for detailed help. 1. Open your system's terminal. 2. From the Project's home location, deploy your client app using the command: catalyst deploy --only client Note: You can also deploy the client using the catalyst web console. Once deployed , you will get an URL endpoint with which you can access your client application. <br /> #### Cloud Scale ##### Authentication -------------------------------------------------------------------------------- title: "Get an Authentication Instance" description: "This page describes the method to fetch an authentication instance in your Web application with sample code snippets." last_updated: "2026-07-02T09:34:10.182Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/authentication/get-auth-instance/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Get an Authentication Instance The auth reference can be created to perform sign-in and sign-out operations.The following method will be used for this purpose and does not fire a server side call: //Get an Auth instance var auth = catalyst.auth; -------------------------------------------------------------------------------- title: "Get a Component Instance" description: "This page describes the method to fetch a component instance in your Web application with sample code snippets." last_updated: "2026-07-02T09:34:10.183Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/authentication/get-comp-instance/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Get a Component Instance The userManagement reference can be created using the following method which does not fire a server side call. //Get an UserManagement Instance var userManagement = catalyst.userManagement; -------------------------------------------------------------------------------- title: "Add New User" description: "This page describes the method to add a new user account to your Web application with sample code snippets." last_updated: "2026-07-02T09:34:10.183Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/authentication/add-new-user/" service: "Cloud Scale" related: - Get Authentication Instance - Web SDK (/en/sdk/web/v4/cloud-scale/authentication/get-auth-instance) - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Add New User 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 userID are created for them. The user is also assigned to an organization by Catalyst. You can learn more about this from the Users help page. You can use the following code snippet to register a new user to access your Catalyst application. This registration process is handled using the signUp() method. The auth reference used in the code snippet below is defined in the auth instance page. You must provide the email address and last name to register of the user mandatorily while adding the user. 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. The JSON objects containing the registration details of a particular user are created as shown below. //Enter the first name, last name, email id, platform and the redirect url var data = { "first_name": "Jason", "last_name": "Chang", "email_id": "jason.c@zylker.com", "platform_type": "web", "redirect_url": "https://shipmenttracking.zylker.com/" }; This object is passed as an argument to the signUp() method. The promise returned here will be resolved to an object whose content key contains details of the registered user. //Register the user by passing the object This in turn returns a promise var auth = catalyst.auth; var signupPromise = auth.signUp(data); signupPromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); 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: "loki", 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: "10103000000115016" }, user_type: "App User", source: "Email", user_id: "10103000000111308" }, redirect_url: "https://aliencity-66446133.development.catalystserverless.com/app/", platform_type": "web", org_id: "10062221186" } { 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", 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: "Reset Password" description: "This page describes the method to reset the password of a user account in your Web application with sample code snippets." last_updated: "2026-07-02T09:34:10.183Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/authentication/reset-password/" service: "Cloud Scale" related: - Get Component Instance - Web SDK (/en/sdk/web/v4/cloud-scale/authentication/get-comp-instance) - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Reset Password Once a user has been successfully registered, you can reset their password using the following code snippet. When the the forgotPassword() method is called, a reset password link will be generated and sent to the user's email address. Only the user's email address is a mandatory attribute. The userManagement reference used in the code snippet below is the component instance. JSON objects containing the registration details of a particular user are created as follows: //Create an object with the details such as email Id, platform and redirect url var data = { "email_id": "amelia.burrows@zylker.com", "platform_type": "web", "redirect_url": "https://catalyst.zoho.com" }; This object is passed as an argument to the forgotPassword() method. Note : The promise returned will be resolved to an object in which the content key contains a confirmation message. //Reset password by passing the details. This in turn returns a promise. var userManagement = catalyst.userManagement; var forgotPromise = userManagement.forgotPassword(data); forgotPromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); -------------------------------------------------------------------------------- title: "Set New Password" description: "This page describes the method to set the password of the user after they complete the login process with Authentication." last_updated: "2026-07-02T09:34:10.183Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/authentication/set-new-password/" service: "Cloud Scale" related: - Get Component Instance - Web SDK (/en/sdk/web/v4/cloud-scale/authentication/get-comp-instance) - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- This SDK snippet allows your end-user to reset their password after they have logged in to your applicaiton. It is mandatory that they input their oldPassword to change it. The auth reference used in the code snippet below is defined in the auth instance page. catalyst.auth.changePassword(oldPassword,newPassword) Note: This SDK snippet is only available if you install Web SDK 4.3.0 -------------------------------------------------------------------------------- title: "Get a User Object" description: "This page describes the method to fetch a user object instance in your Web application with sample code snippets." last_updated: "2026-07-02T09:34:10.183Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/authentication/get-user-object/" service: "Cloud Scale" related: - Get Component Instance - Web SDK (/en/sdk/web/v4/cloud-scale/authentication/get-comp-instance) - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Get a User Object A user object can be created using the following method which does not fire a server side call. The userManagementreference used in the code snippet below is the component instance. //Get the user object passing the user id. var userManagement = catalyst.userManagement; var user = userManagement.userId(USER_ID); -------------------------------------------------------------------------------- title: "Get User Details" description: "This page describes the method to fetch a user account details in your Web application with sample code snippets." last_updated: "2026-07-02T09:34:10.183Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/authentication/get-user-details/" service: "Cloud Scale" related: - Get Component Instance - Web SDK (/en/sdk/web/v4/cloud-scale/authentication/get-comp-instance) - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Get User Details 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 Current User Details The method getCurrentProjectUser() 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 an object in which the content key contains the details of the current user of the application. //Get the details of the current user var userManagement = catalyst.userManagement; var currentUserPromise = userManagement.getCurrentProjectUser(); currentUserPromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); Additionally, you can also use the isUserAuthenticated() method which is an alternative to the getCurrentProjectUser() method. //Get the details of the current user var userManagement = catalyst.auth; var currentUserPromise = userManagement.isUserAuthenticated(); currentUserPromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); A sample response that you will receive for each version is shown below: { zuid: "10062169698", zaaid: "10062169862", org_id: "10062169862", status: "ACTIVE", is_confirmed: false, email_id: "amelia.burrows@zylker.com", first_name: "Amelia", last_name: "Burrows", created_time: "Jul 05, 2023 10:30 AM", modified_time: "Jul 05, 2023 10:30 AM", invited_time: "Jul 05, 2023 10:30 AM", role_details: { role_name: "App Administrator", role_id: "10103000000115014" }, user_type: "App User", user_id: "10103000000115057", locale: "us|en_us|America/Los_Angeles", time_zone: "America/Los_Angeles" } { 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: [] } -------------------------------------------------------------------------------- title: "Third-party Authentication" description: "This page describes the methods required to enable third-party authentication in your Catalyst application" last_updated: "2026-07-02T09:34:10.183Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/authentication/third-party-custom-token/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Third-party Authentication 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. Before you associate a third-party authentication with your Catalyst application, you must ensure that you have first completed handling the third-party logic in the external service. You can configure the authentication with any third-party of your choice. 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. Next, you set up the third-party authentication that you configured in Catalyst by navigating to the Authentication component in *Cloud Scale* in the Catalyst console. The steps are explained in Set Up Third-party Authentication in Catalyst help page. This process involves the following steps that you must perform: ### Generate a Custom Server Token First, we generate a custom server token. 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 will need to code in Java, Node.js, or Python. This function will generate a Catalyst server-side token **JSON Web Token** token (JWT) which will then be passed to the client. Note: To enable a third-party authentication in your Catalyst application, you must ensure that you have enabled Public Signup in the console. ### Authenticate User Using JWT The below SDK will use the generated JWT or custom token to authenticate the end-user. You must incorporate this code into your web client logic, to enable third-party authentication. This is a sample code that uses a JWT to authenticate the user is given below. &lt;script src="https://static.zohocdn.com/catalyst/sdk/js/4.0.0/catalystWebSDK.js"&gt;&lt;/script&gt; &lt;script src="/__catalyst/sdk/init.js"&gt;&lt;/script&gt; &lt;script&gt; catalyst.auth.signinWithJwt(getCustomTokenCallback); function getCustomTokenCallback(){ return fetch("{domain}/server/{function_name}/execute") //function url to get the generated custom token .then(resp => resp.json() .then(resp => { return new Promise((resolve, reject) => { resolve({ client_id : "********", scopes : "ZOHOCATALYST.tables.rows.ALL,ZOHOCATALYST.cache.READ", jwt_token : "*********" }); }); })) } &lt;/script&gt; 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. ### Configure Addional Settings Finally, you can onfigure Customer User Validation or Authorized Domains as a part of *Whitelisting* and finish the set up. Catalyst will display a confirmation that a third-party authentication service has been enabled and your application’s authentication is being handled by it. -------------------------------------------------------------------------------- title: "Sign a User Out From The Application" description: "This page describes the method to sign out an user account from your Web application with sample code snippets" last_updated: "2026-07-02T09:34:10.183Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/authentication/sign-out-user/" service: "Cloud Scale" related: - Get Authentication Instance - Web SDK (/en/sdk/web/v4/cloud-scale/authentication/get-auth-instance) - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Sign a User Out From The Application A user can log out from the application using the signOut() method where the redirect URL is passed as an argument.The auth reference used in the code snippet below is the auth instance. Note : This does not return a promise. //Configure the redirect url after successful logout var redirectURL = "https://catalyst.zoho.com"; //Use the redirect url and call the method to sign out  var auth = catalyst.auth; auth.signOut(redirectURL); -------------------------------------------------------------------------------- title: "Cross Domain Access" description: "This page describes the method to authenticte your backend and frontend servvices when they are hosted in different domains" last_updated: "2026-07-02T09:34:10.183Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/authentication/cross-domain-access/" service: "Cloud Scale" related: - Get Authentication Instance - Web SDK (/en/sdk/web/v4/cloud-scale/authentication/get-auth-instance) - Authentication (/en/cloud-scale/help/authentication/introduction) - Cross Domain Access Help Doc (/en/cloud-scale/help/authentication/cross-domain-access/) -------------------------------------------------------------------------------- # Authenticate Backend Requirements for Frontend Services The generateAuthToken() SDK method will generate the required token to validate backend invocation calls made from the frontend services; when the backend and front services are hosted in different domains. Notes:<br /> * You need to ensure that the backend and frontend services though hosted on different hosting services are part of the same Catalyst project. * You must ensure you have whitelisted the domains of the backend and frontend services using the CORS feature present in Catalyst Authentication. You can find out more about the CORS feature from this help documentation. * The generateAuthToken() SDK method is available from Web SDK version v4.6.1. var auth = catalyst.auth; auth.generateAuthToken().then((response) => { const token = response.access_token; // the required user token will be shared as value in the response }); ##### Data Store -------------------------------------------------------------------------------- title: "Get a Component Instance" description: "This page describes the method to fetch component instance from the Data Store in your Web application with sample code snippets." last_updated: "2026-07-02T09:34:10.183Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/data-store/get-component-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Data Store ### 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 var datastore = catalyst.table; -------------------------------------------------------------------------------- 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 Web application with sample code snippets." last_updated: "2026-07-02T09:34:10.183Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/data-store/get-table-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get a Table Object A table object 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 a Table Instance Using TableID A tableobject can be created by referring to the table ID. //Get a table object using table ID var table = datastore.tableId('1510000000110121'); ### Get a Table Instance Using TableName Alternatively, a table object can be created by referring to the table name. Note : There is no promise involved in the above methods and the table object contains the methods accessible by the table. //Get a table object using the table name var table = datastore.tableId('SampleTable'); -------------------------------------------------------------------------------- title: "Get Table Metadata" description: "This page describes the method to fetch the meta data of a single table or multiple tables in your Web application with sample code snippets" last_updated: "2026-07-02T09:34:10.183Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/data-store/get-table-meta/" service: "Cloud Scale" related: - Get Table Metadata - 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 You can obtain the metadata of the tables in the Catalyst Data Store. ### Get Metadata of All Tables You can fetch the details of all the tables in a Catalyst project using getAll() method. The datastore and table instances used in the code snippet below are the component instance and the table object respectively. This returns a promise which will be resolved to an object in which the content key contains the array of the meta details of all the tables. //Get metadata of all the tables in the project var datastore = catalyst.table; var allTablePromise = datastore.getAll(); allTablePromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); 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 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 Web application with sample code snippets" last_updated: "2026-07-02T09:34:10.183Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/data-store/get-column-meta/" service: "Cloud Scale" related: - Get Column Metadata - 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 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. //Get The Column Object using Columnid var datastore = catalyst.table; var table = datastore.tableId("SampleTable"); var column = table.columnId(COLUMN_ID); 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", audit_consent: false, 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 } <br> ### 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. //Get The Column Object using Columnname var datastore = catalyst.table; var table = datastore.tableId('SampleTable'); var column = table.columnId(COLUMN_NAME); 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", audit_consent: false, 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 } <br> ### Get Column Metadata Details To fetch the metadata details of a column, you must use any one of the column objects created in the previous steps which will return a promise. The promise returned will be resolved to an object in which the content key contains the column metadata details. //Get The column details which in turn returns a promise var datastore = catalyst.table; var table = datastore.tableId('SampleTable'); var column = table.columnId(COLUMN_NAME); var columnPromise = column.get(); columnPromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); 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", audit_consent: false, 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 } <br> ### 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. Note : The promise returned here is resolved into an array of column meta details. //Get all the columns in the table which in turn returns a promise var datastore = catalyst.table; var table = datastore.tableId('SampleTable'); var allcolumnPromise = table.getColumns(); allcolumnPromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); 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", audit_consent: false, 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: "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 Web application with sample code snippets." last_updated: "2026-07-02T09:34:10.183Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/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 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 in the same operation. Note: 1. The table and the columns in it must already be created. You can create a table and the columns for it from the console. 2. 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. You must construct an array containing the rows to be inserted in the table, and pass the array as an argument to the addRow() method as shown below. This inserts the rows in the table you refer to by its unique name or ID. The rows are specified in a {column name : column value} format. The promise returned here is resolved to an object, where the content key contains the array of the rows. The table reference used in the code below is the table object created earlier. //Create an array with the rows to be inserted var details = [ {"Name": "Heather Drake", "Age": 26}, {"Name": "Lucy Park", "Age": 34} ]; //Insert the rows by passing the array, which in turn returns a promise var datastore = catalyst.table; var table = datastore.tableId('EmpDetails'); //Provide the table ID or table name to insert the rows var insertPromise = table.addRow(details); //Pass the JSON array insertPromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); A sample response that you will receive is shown below. The response is the same for both versions. #### Web SDK [ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-25 13:55:04:904", Name: "Heather Drake", Age: 26, CREATEDTIME: "2021-08-25 13:55:04:904", ROWID: 2136000000038008 }, { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-25 13:55:04:906", Name: "Lucy Park", Age: 34, 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 Web application with sample code snippets." last_updated: "2026-07-02T09:34:10.183Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/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 If a single row or multiple rows are to be updated with one or more column values in a table, the following method is used. The table used in the below code snippet is the table object. Note : The promise returned here will be resolved to an object in which the content key contains an array of updated row details. //Create an object with the details to be updated referring to the corresponding ROWID var details = [ { "Name": "John Denver", "Age": 25, "ROWID": 1510000000085482}, { "Name": "Jill Scott", "Age": 39, "ROWID": 1510000000113707} ]; //Update The Row Object using details var datastore = catalyst.table; var table = datastore.tableId('SampleTable'); var updatePromise = table.updateRow(details); updatePromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); A sample response that you will receive is shown below. The response is the same for both versions. #### Web SDK [ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-24 13:22:14:718", CREATEDTIME: "2021-08-24 13:12:55:999", Name: "John Denver", Age: 25 ROWID: "2136000000034043" }, { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-24 13:22:14:728", CREATEDTIME: "2021-08-24 13:12:56:001", Name: "Jill Scott", Age: 39 ROWID: "2136000000034045" } ] -------------------------------------------------------------------------------- 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 Web application with sample code snippets" last_updated: "2026-07-02T09:34:10.184Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/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 You can retrieve single row or multiple rows of data from a table in the Catalyst Data Store. The table object used in these code snippets is defined in the component instance page. ### Get a Row Object Before you fetch a row from a table in the Data Store, you must first create a row object for it using the unique Row ID of the row as shown below. This will not fire a server-side call. //Create a row object using the Rowid var datastore = catalyst.table; var table = datastore.tableId("ShipmentTracking"); var row = table.rowId("12781121212121"); ### Get a Single Row You can now fetch a single row from a table using the get() method. You must pass the unique Row ID of the row to the row object that you created in the previous section, as shown below. The promise returned here will be resolved to a JSON row object, in which the content key contains a row object. //Fetch the row details by passing the row ID to the row object var datastore = catalyst.table; var table = datastore.tableId('ShipmentTracking'); var row = table.rowId("12781121212121"); var rowPromise = row.get(); rowPromise.then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); A sample response that you will receive is shown below. The response is the same for all versions of Web SDK. { 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 getPagedRows() 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 sample code below. You can refer to the table by its unique Table ID or name. For example, if you require the rows to be fetched in batches of 100 as individual pages, you can specify the count of the max_rows parameter as 100, as shown below. Note: The max_rows 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 must pass this token through the next_token parameter during the subsequent iteration, as shown below. During the first execution of the loop, the value for the next_token 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 Web SDK v3.1.0 update. This will not be available in the older versions of the Web SDK. { if (!hasNext) { return; } catalyst.table .tableId('userDetails') //Specify the Table ID or Table name of the table to fetch the records from .getPagedRows({ next_token, max_rows: 100 }) //Define the maximum rows to be fetched in a single page and pass it along with nextToken .then(resp => { console.log('rows : ', resp.content); //Fetch the rows from the table return getMyPagedRows(resp.more_records, resp.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. #### Web SDK v3.1.0 { "status": 200, "content": [ { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:24:855", "name": "raj", "CREATEDTIME": "2022-01-11 18:18:24:855", "ROWID": "3359000000108111" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:25:117", "name": "raj", "CREATEDTIME": "2022-01-11 18:18:25:117", "ROWID": "3359000000108114" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:25:120", "name": "raj", "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. { "status": 200, "content": [ { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:556", "name": "raj99", "CREATEDTIME": "2022-01-11 18:18:43:556", "ROWID": "3359000000108410" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:557", "name": "raj98", "CREATEDTIME": "2022-01-11 18:18:43:557", "ROWID": "3359000000108413" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:568", "name": "raj96", "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 in the earlier versions of the Web SDK 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: "Delete a Row" description: "This page describes the method to delete a single row from a table in the Data Store in your Web application with sample code snippets" last_updated: "2026-07-02T09:34:10.184Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/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 A single row can be deleted, but multiple rows cannot be deleted at a time. The _row_ used in the below code snippets is the row object. A row can be deleted from a table simply by passing the ROWID as a parameter to the delete() method. Note : The promise returned here will be resolved to an object in which the content key contains a deleted row object. //Delete the row which in turn returns a promise var datastore = catalyst.table; var table = datastore.tableId('SampleTable'); var row = table.rowId(ROW_ID); var rowPromise = row.delete(); rowPromise.then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); -------------------------------------------------------------------------------- title: "Bulk Delete Rows" description: "This page describes the method to delete rows in bulk from a table in the Data Store in your Web application with sample code snippets." last_updated: "2026-07-02T09:34:10.184Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/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 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 array is assigned to a variable which is passed to the deleteRows() function through deletePromise in the sample code. The table name or table ID must be passed to datastore.tableId(). The datastore reference used below is defined in the component instance page. var datastore = catalyst.table; //Pass the table ID or table name var table = datastore.tableId('EmpDetails'); //Declare the ROWIDs of the records to be deleted var rowIds =[1028000000171815, 1028000000171810, 1028000000171805, 1028000000171617, 1028000000171098]; //Pass the array of the ROWIDs to the deleteRows() function var deletePromise = table.deleteRows(rowIds); //Returns the promise and prints in the browser console deletePromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); ##### File Store -------------------------------------------------------------------------------- title: "Get Component Instance" description: "This page describes the method to delete a folder from the File Store in your Web application with sample code snippets." last_updated: "2026-07-02T09:34:10.184Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/file-store/get-component-instance/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction/) -------------------------------------------------------------------------------- # File Store Catalyst File Store provides cloud storage solutions for the application files and user data files of your Catalyst application, and enables access to shared data. You can store, manage, and organize images, videos, text files, document files, spreadsheets, or files of other formats. ### Get a Component Instance The file store component instance can be created as shown below. This does not fire a server-side call. //Get a file store instance var filestore = catalyst.file; -------------------------------------------------------------------------------- title: "Get Folder Instance" description: "This page describes the method to fetch a folder instance from the File Store in your Web application with sample code snippets." last_updated: "2026-07-02T09:34:10.184Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/file-store/get-folder-instance/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction/) -------------------------------------------------------------------------------- # Get a Folder Object A folder object can be created using the following code snippet, which does not fire a server-side call. The filestore used in the code snippet below is the component instance. Note : There is no promise involved in the method above and the folder object is returned. // Get a folder instance var filestore = catalyst.file; var folder = filestore.folderId(FOLDER_ID); -------------------------------------------------------------------------------- title: "Retrieve Folder Details" description: "This page describes the method to retrieve the folder details from the File Store in your NodeJS application with sample code snippets." last_updated: "2026-07-02T09:34:10.184Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/file-store/retrieve-folder-details/" service: "Cloud Scale" related: - Retrieve Folder Details - API (/en/api/code-reference/cloud-scale/file-store/get-specific-folder/#GetSpecificFolder) - File Store (/en/cloud-scale/help/file-store/introduction/) -------------------------------------------------------------------------------- # Get Folder Details ### Get the Details of a Single Folder The method that retrieves the details of a specific folder referred through its unique folder ID is the get() method. The folder used in the code snippet below is the folder object. Note : The promise returned here will be resolved to an object in which the content key contains details of a single folder. //Get the folder details using the folder Object var filestore = catalyst.file; var folder = filestore.folderId(2136000000008551); var folderPromise = folder.get(); folderPromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); A sample response that you will receive for each version is shown below: { "folder_name":"Store_Data", "created_time":"Aug 13, 2021 05:32 PM", "created_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 05:32 PM", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "project_details":{ "project_name":"ShipmentTracking", "id":"2136000000007733", "project_type":"Live" }, "file_details":[ { "id":"2136000000020111", "file_location":null, "file_name":"Img.jpeg", "file_size":"84881", "created_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"p.boyle@zylker.com", "first_name":"Patricia", "last_name":"Boyle", "user_type":"Admin", "user_id":"2136000000006767" }, "created_time":"Aug 17, 2021 09:32 PM", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"p.boyle@zylker.com", "first_name":"Patricia", "last_name":"Boyle", "user_type":"Admin", "user_id":"2136000000006767" }, "modified_time":"Aug 17, 2021 09:32 PM", "project_details":{ "project_name":"ShipmentTracking", "id":"2136000000007733", "project_type":"Live" }, "folder_details":"2136000000008551" } ], "id":"2136000000008551" } { "folder_name":"Store_Data", "created_time":"Aug 13, 2021 05:32 PM", "created_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 05:32 PM", "modified_by":{ "zuid":66466723, "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":2136000000006003 }, "project_details":{ "project_name":"ShipmentTracking", "id":2136000000007733, "project_type":"Live" }, "file_details":[ { "id":2136000000020111, "file_location":null, "file_name":"invoice1349.jpeg", "file_size":84881, "created_by":{ "zuid":66466723, "is_confirmed":false, "email_id":"p.boyle@zylker.com", "first_name":"Patricia", "last_name":"Boyle", "user_type":"Admin", "user_id":2136000000006767 }, "created_time":"Aug 17, 2021 09:32 PM", "modified_by":{ "zuid":66466723, "is_confirmed":false, "email_id":"p.boyle@zylker.com", "first_name":"Patricia", "last_name":"Boyle", "user_type":"Admin", "user_id":2136000000006767 }, "modified_time":"Aug 17, 2021 09:32 PM", "project_details":{ "project_name":"ShipmentTracking", "id":2136000000007733, "project_type":"Live" }, "folder_details":2136000000008551 } ], "id":2136000000008551 } You can retrieve the details of the folders created in the file store. This can be a single folder or all the folders located in the file store. The _filestore_ used in the code snippets below is the component instance. ### Get all the Folder Details If you want to fetch the details of all the folders in your Catalyst project, the getAllFolder() method is used. Note : The promise returned here will be resolved to an object in which the content key contains an array of all the folder details. //Get all the folders by calling the method which in turn return a promise var filestore = catalyst.file; var allFolderPromise = filestore.getAllFolder(); allFolderPromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); A sample response that you will receive for each version is shown below: [ { folder_name: "Store_Data", created_time: "Jul 05, 2023 12:42 PM", created_by: { zuid: 788778872, is_confirmed: false, email_id: "amelia.burrows@zylker.com", first_name: "Amelia", last_name: "Burrows", user_type: "Admin", user_id: 10103000000003004 }, modified_time: "Jul 05, 2023 12:42 PM", modified_by: { zuid: 788778872, is_confirmed: false, email_id: "amelia.burrows@zylker.com", first_name: "Amelia", last_name: "Burrows", user_type: "Admin", user_id: 10103000000003004 }, project_details: { project_name: "Shipment_Tracking", id: 10103000000115000, project_type: "Live" }, audit_consent: false, id: 10103000000114006 }, { folder_name: "Git_Details", created_time: "Jul 05, 2023 12:36 PM", created_by: { zuid: 788778872, is_confirmed: false, email_id: "amelia.burrows@zylker.com", first_name: "Amelia", last_name: "Burrows", user_type: "Admin", user_id: 10103000000003004 }, modified_time: "Jul 05, 2023 12:36 PM", modified_by: { zuid: 788778872, is_confirmed: false, email_id: "amelia.burrows@zylker.com", first_name: "Amelia", last_name: "Burrows", user_type: "Admin", user_id: 10103000000003004 }, project_details: { project_name: "GitHubBot", id: 10103000000115000, project_type: "Live" }, audit_consent: false, id: 10103000000115076 } ] [ { "folder_name":"Invoices", "created_time":"Aug 25, 2021 11:38 AM", "created_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 25, 2021 11:38 AM", "modified_by":{ "zuid":66466723, "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":2136000000006003 }, "project_details":{ "project_name":"ShipmentTracking", "id":2136000000007733, "project_type":"Live" }, "id":2136000000037021 }, { "folder_name":"Store_Data", "created_time":"Aug 13, 2021 05:32 PM", "created_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 05:32 PM", "modified_by":{ "zuid":66466723, "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":2136000000006003 }, "project_details":{ "project_name":"ShipmentTracking", "id":2136000000007733, "project_type":"Live" }, "id":2136000000008551 } ] -------------------------------------------------------------------------------- title: "Upload a File" description: "This page describes the method to upload a file to a folder in the File Store in your Web application with sample code snippets." last_updated: "2026-07-02T09:34:10.184Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/file-store/upload-file/" service: "Cloud Scale" related: - Upload File - API (/en/api/code-reference/cloud-scale/file-store/upload-file-in-folder/#UploadFileInaFolder) - File Store (/en/cloud-scale/help/file-store/introduction/) -------------------------------------------------------------------------------- # Upload a File You can upload a file from your local system to an existing folder in the File Store, by referring to the folder's unique ID. You can upload an image, text document, CSV, or any type of file you need. The maximum size of a file that you can upload is 100 MB. Note: Catalyst provides 1 GB of File Store space for each project in the development environment. There are no upper limits for storage in the production environment. You must create a file object for the file to be uploaded, as shown below. The fileobject is passed as an argument to the uploadFile() method. The upload starts only when the start() method is called. You must specify Folder ID of the folder while referring to it. The folder reference used in the code below is the folder object created earlier. The promise returned here will be resolved to an object in which the content key contains the details of the uploaded file. A unique File ID is created for the file after it is uploaded. var filestore = catalyst.file; var folder = filestore.folderId(7189310908031); //Specify the Folder ID var uploadPromise = folder.uploadFile(fileobject).start(); //Pass the file object and upload the file uploadPromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); A sample response that you will receive for each version is shown below: { id: "2136000000020122", file_location: null, file_name: "shipmentdetails.csv", file_size: "84881", created_by: { zuid: "66466723", is_confirmed: false, email_id: "amelia.burrows@zylker.com", first_name: "Amelia", last_name: "Burrows", user_type: "Admin", user_id: "2136000000006003" }, created_time: "Aug 17, 2021 09:33 PM", modified_by: { zuid: "66466723", is_confirmed: false, email_id: "amelia.burrows@zylker.com", first_name: "Amelia", last_name: "Burrows", user_type: "Admin", user_id: "2136000000006003" }, modified_time: "Jul 06, 2023 11:38 AM", project_details: { project_name: "ShipmentTracking", id: 10103000000115000, project_type: "Live" }, folder_details: 10103000000114006 } { id: 2136000000020117, file_location: null, file_name: "empdata.csv", file_size: 84881, created_by: { zuid: 66466723, is_confirmed: false, email_id: "emma@zylker.com", first_name: "Amelia", last_name: "Burrows", user_type: "Admin", user_id: 2136000000006003 }, created_time: "Aug 17, 2021 09:33 PM", 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 17, 2021 09:33 PM", project_details: { project_name: "ShipmentTracking", id: 2136000000007733 }, folder_details: 2136000000008551 } -------------------------------------------------------------------------------- title: "Get File Object" description: "This page describes the method to fetch a file object from the File Store in your Web application with sample code snippets." last_updated: "2026-07-02T09:34:10.184Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/file-store/get-file-object/" service: "Cloud Scale" related: - File Store (/en/cloud-scale/help/file-store/introduction/) -------------------------------------------------------------------------------- # Get File Object A file object can be created using the following code snippet, which does not fire a server-side call. The unique File ID is passed as an argument here.The folder used in the code snippet below is the folder object. //Get a file object by passing the file ID var filestore = catalyst.file; var folder = filestore.folderId(FOLDER_ID); var file = folder.fileId(FILE_ID); -------------------------------------------------------------------------------- title: "Download a File from the Folder" description: "This page describes the method to download a file from folders in the File Store in your Web application with sample code snippets." last_updated: "2026-07-02T09:34:10.184Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/file-store/download-file-from-folder/" service: "Cloud Scale" related: - Download a File from the Folder - API (/en/api/code-reference/cloud-scale/file-store/download-file-from-folder/#DownloadaFileFromaFolder) - File Store (/en/cloud-scale/help/file-store/introduction/) -------------------------------------------------------------------------------- # Download a File from the Folder Unlike other SDKs, Catalyst Web SDK allows you to get the download URL of a file where the actual file can be downloaded. It requires the folder ID and file ID to identify which file is to be downloaded from the URL. The file used in the code snippet below is the file object. The getDownloadLink() method is used to return the promise. Note : The promise returned here will be resolved to an object in which the content key contains a download_url key where the download URL will be available. //Get the download Link by calling the method which returns a promise. var filestore = catalyst.file; var folder = filestore.folderId(FOLDER_ID); var file = folder.fileId(FILE_ID); var downloadPromise = file.getDownloadLink(); downloadPromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); -------------------------------------------------------------------------------- title: "Delete File" description: "This page describes the method to delete a file from the File Store in your Web application with sample code snippets." last_updated: "2026-07-02T09:34:10.184Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/file-store/delete-file/" service: "Cloud Scale" related: - Delete File - API (/en/api/code-reference/cloud-scale/file-store/delete-file/#DeleteFile) - File Store (/en/cloud-scale/help/file-store/introduction/) -------------------------------------------------------------------------------- # Delete a File The delete() method is used to delete a file from the folder. The file used in the code snippet below is the file object. Note : The promise returned here will be resolved to an object in which the content key contains the deleted file details. //Delete the file by calling the method which returns a promise. var filestore = catalyst.file; var folder = filestore.folderId(FOLDER_ID); var file = folder.fileId(FILE_ID); var deletePromise = file.delete(); deletePromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); ##### Push Notifications -------------------------------------------------------------------------------- title: "Push Notifications" description: "Push notifications can be created using Catalyst Web SDK" last_updated: "2026-07-02T09:34:10.184Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/push-notifications/get-component-instance/" service: "Cloud Scale" related: - Mobile Device Management (/en/cloud-scale/help/mobile-device-management/introduction) - Push Notifications (/en/cloud-scale/help/push-notifications/introduction) - Push Notification - API (/en/api/code-reference/cloud-scale/push-notifications/web/enable-web-push-notifications/#EnableWebNotification) -------------------------------------------------------------------------------- # Push Notifications Push notifications are remote notifications that an application provider can send to the users of their application, even when the application is not actively running on the user device. Catalyst provides you with an easy way to integrate push notifications into your Catalyst web and iOS applications. ### Get a Component Instance The notification instance can be created as shown below. Note: The promise returned here will be resolved to an object in which the content key contains the output of the executed function. // Get a notification instance var notification = catalyst.notification; -------------------------------------------------------------------------------- title: "Register a Client" description: "This Web SDK script allows you to register a client device to receive push notifications from your Catalyst web application." last_updated: "2026-07-02T09:34:10.184Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/push-notifications/register-client/" service: "Cloud Scale" related: - Push Notifications (/en/cloud-scale/help/push-notifications/introduction) - Push Notification - API (/en/api/code-reference/cloud-scale/push-notifications/web/send-web-push-notifications/#SendWebPushNotifications) -------------------------------------------------------------------------------- # Register a Client for Receiving Web Push Notifications The enableNotification() method registers a client for receiving push notifications from your web application. The notification reference used in the code snippet below is the component instance created earlier. The enableNotification() method returns a promise which is resolved to an object. After resolving the promise, you can handle the notification message through the messagehandler. //Register the client var notification = catalyst.notification; notification.enableNotification().then((response) => { //Create a handler for the message when received catalyst.notification.messageHandler = (msg) => { //Action to be performed when the message is generated } }); You can then send push notifications to the registered client either from the Catalyst console, or through this API. ##### Search -------------------------------------------------------------------------------- title: "Get a Component Instance" description: "Using Catalyst Web SDK you can create a search object." last_updated: "2026-07-02T09:34:10.184Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/search/get-component-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Search (/en/cloud-scale/help/search-integration/introduction) - Search - API (/en/api/code-reference/cloud-scale/search/execute-search-query/#ExecuteSearchQuery) -------------------------------------------------------------------------------- # Search ### Search for Data in Indexed Columns The search process specifies the pattern to be searched for when you search indexed columns of the tables. You can search for: * Data in multiple tables * Only data in search indexed columns To learn more about search, please refer to the information here. ### Get a Component Instance The search object can be created using the following method which does not fire a server side call. //Get a search object var search = catalyst.search; -------------------------------------------------------------------------------- title: "Search Data" description: "Using Catalyst Web SDK you can execute a method for searching for a particular pattern of data." last_updated: "2026-07-02T09:34:10.184Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/search/search-data/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Search (/en/cloud-scale/help/search-integration/introduction) - Search - API (/en/api/code-reference/cloud-scale/search/execute-search-query/#ExecuteSearchQuery) -------------------------------------------------------------------------------- # Search Data Search executes a searchQuery() method for searching for a particular pattern of data. The search used in the code snippet is the component instance. ### Create a Search Configuration(JSON) 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 the Query Object to be used for searching //The Search key contains the patterns to be searched //The search_table_columns is a JSON object which contains the table name as key and an array of the columns to be searched as the value. var QUERY = { "search": "santh*", "search_table_columns": { "customerDetails" : ["indexC1"], "SampleTable" : ["indexC2"] } }; ### Execute Search The JSON object created in the previous section is passed as a parameter to the searchQuery() method which returns a promise. Note : The promise returned will be resolved to an object in which the content key contains the search results with the key as the table name and its value as the array of rows. //search the table by passing the query object which in turn returns a promise var search = catalyst.search; var searchPromise = search.searchQuery(QUERY); searchPromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); A sample response that you will receive is shown below. The response is the same for both versions of Web SDK. { 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 describes the web SDK method to perform operations in Stratus." last_updated: "2026-07-02T09:34:10.185Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/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) -------------------------------------------------------------------------------- # 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. Note: * It is advised you enable CORS to whitelist your required application or AppSail service domain and use the following SDKs. * To use the Stratus SDK methods, you need to ensure you upgrade your Web SDK to v4.5.0-beta. * You also need to upgrade the Catalyst CLI to v1.18.0-beta.5 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 <ul> <li>Initialize Bucket Instance</li> </ul> </li> </ul> </td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>Check Object Availability <ul> <li>Check Object Availability Without VersionID</li> <li>Check Object Availability With VersionID</li> </ul> </li> <li>Download Object <ul> <li>Download Object Using Object Name</li> <li>Download a Particular Version of the Object</li> <li>Download Object With Process Callback</li> <li>Download a Particular Part of the Object</li> <li>Download Object Using a Signed URL <ul> <li>Using Asynchronous Functions</li> <li>Using Promises</li> <li>Using SignedURL with Options</li> </ul> </li> <li>Download a Cached Object Using Cached URL</li> </ul> </li> <li>Upload Object <ul> <li>Upload Object as File</li> <li>Upload Object as String</li> <li>Upload Object With Options</li> <li>Upload Object With Process Callback</li> <li>Upload Object With Its Meta Details</li> <li>Mutlipart Upload</li> <li>Upload an Object Wrapping all the Multipart Functionality</li> </ul> </li> <li>Delete Object <ul> <li>Delete Object With Object Name</li> <li>Delete Object With Object Name and VersionID</li> </ul> </li> </ul> </td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Create Stratus Instance" description: "This page describes the web SDK method to initialize Stratus instance." last_updated: "2026-07-02T09:34:10.185Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/stratus/initialize-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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-stratus-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-stratus-instance/) - 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 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. const stratus = catalyst.stratus ### Initialize Bucket Instance To perform bucket level operations, you need to initialize 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: "Check Object Availability" description: "This page describes the web SDK method to check if an object is present in a bucket." last_updated: "2026-07-02T09:34:10.185Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/stratus/check-object/" 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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/check-bucket/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/check-bucket/) - 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 Using the headObject() SDK method, you can check the existence of an object in a bucket, and further check if the user has the relevant permissions to access the objects present in the bucket. The Bucket 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 objects in it, the response '**true**' will be returned. * If the bucket does not exist, or if the user does not have permission to access the objects in it, 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>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>options</td> <td>JSON Object</td> <td>An Optional parameter to hold the following parameters: <ul> <li>versionId: <ul> <li>An optional String parameter.</li> <li>If Versioning is enabled for your bucket then, this param will help you refer to a particular version using its unique Version ID.</li> </ul> </li> <li>throwErr: <ul> <li>An optional Boolean parameter.</li> <li>If you set this parameter as "true", then it will throw an error when the bucket is not found in the project.</li> <li>The default value is "false"</li> </ul> </li> </ul> </td> </tr> </tbody> </table> ### Check Object Availability Without VersionID The following SDK method will provide you with the topVersion (latest version) of the object in the bucket. // Check if an object is available const checkObjectAvailability = await bucket.headObject("key") ### Check Object Availability With VersionID The following SDK method will check the availability of a specific version of the object. the required version will be reffered by its unique versionId. // Check if certain version of an object is Available const options = { versionId: 'djkfhdiufy762', throwErr: false }; const checkObjectAvailability = await bucket.headObject("key", options) **Example Response** { "status": 200, "content": true | false, "message": "OK" } -------------------------------------------------------------------------------- title: "Download Object" description: "This page describes the web SDK method to retreive an object from Stratus." last_updated: "2026-07-02T09:34:10.185Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/stratus/download-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/download-object/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/download-object/) - 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 This SDK method can be used to download an object from the bucket. The response will be in **blob** format. The Stratus reference used in the below code snippet is the component instance. Expected responses with respect to Versioning status of the bucket: * If you do not pass the versionId, then you will get the **latest object**, along with the key you mention in the request. * If Versioning was enabled for a bucket, then disabled. By default, the principal first object will be returned. To ensure you download the latest version of this object, you need to pass the versionId param with the value "topVersion". * To retrieve a specific version, use the versionId query parameter with a valid version as a value. **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>Will hold the name of the object</td> </tr> <tr> <td>options</td> <td>JSON Object</td> <td> <ul> <li>versionId: This is an optional String parameter. Will hold the unique version ID of the required object's version. </li> <li>range: This is an optional String parameter. The byte range of the required object. Will be used to get a specific part of the object.</li> <li>cached: This is an optional Boolean parameter. <ul> <li>Will be used to get cached version of the object</li> <li>Will only accept two values: "true" or "false"</li> <li>false will be the value, if this param is not used</li> <li>true will be the value, if Caching is enabled for your bucket and you pass this param. In this case, the object will be retrieved from the cached domain.</li> </ul> </li> <li>signed: This is an optional Boolean parameter. The default value is "false". Will make an api call to get a signed url. </li> <li>signedUrlFn: <ul> <li>This is an optional Function parameter.</li> <li>This is a Callback function that will return a signedurl api respone given in server SDK (Java, Node.js, and Python) to download a file.</li> <li>This function will only accept asynchronous functions and promises.</li> <li>When this function is used, Catalyst will pass the cached url and expiry time to it as parameters which can be used to generate a signed url.</li> </ul> </li> </ul> </td> </tr> <tr> <td>processCallback</td> <td>Function</td> <td>Callback function while downloading file</td> </tr> </tbody> </table> ### Download Object Using Object Name The following SDK snippet will allow you to download an object from a bucket in Stratus using its key. const getObject = await bucket.getObject("key"); const getObjectStart = getObject.start(); // to start the request const getObjectAbort = getObject.abort(); // to abort the request ### Download a Particular Version of the Object The following SDK snippet will allow you to download a particular version of the object from a bucket in Stratus using its key, and versionId. const options = { 'versionId': 'djkshr8374yiuhf48', // download a specific version of an object } const getObject = await bucket.getObject("key", options); const getObjectStart = getObject.start(); // to start the request const getObjectAbort = getObject.abort(); // to abort the request ### Download Object With Process Callback The following SDK snippet will allow you to download a particular object from a bucket in Stratus with process callback options. This SDK is best used when you wish to perform an additional function like logging, rendering load/buffer screens, etc. alongside the download operation. // process callback while an object is being downloaded const processCallback = () => { // Function to execute while the object is being fetched console.log("Downloading Object"); } const options = { 'versionId': 'djkshr8374yiuhf48' } const getObject = await bucket.getObject("key", options, processCallback); const getObjectStart = getObject.start(); // to start the request const getObjectAbort = getObject.abort(); // to abort the request **Example Response** { "status": 200, "content": {Blob Data}, "message": "OK" } **Possible Exceptions** * **404**: Object or Bucket Not Found * **416**: Requested range not satisfiable ### Download a Particular Part of the Object In this section, we are going to go over an SDK method that will allow you to successfully download a required byte range of the object from Stratus to your local system. The Stratus reference used in the below code snippet is the component instance. This method functions in a manner where the object is split into multiple byte ranges using the start and end bytes range of the object. const processCallback = () => { // Function to execute while the object is being fetched console.log("Downloading Object"); } const options = { 'range': '0-2000' // start and end range of the object in bytes } const getObject = await stratus.getObject("key", options, processCallback); const getObjectStart = getObject.start(); // to start the request const getObjectAbort = getObject.abort(); // to abort the request **Example Response** { "status": 206, "content": {Blob Data}, "message": "PARTIAL_CONTENT" } ### Download Object Using a Signed URL #### Using Asynchronous Functions // Download Object Using Signed Url // Using Asynchronous Function const processCallback = () => { // Function to execute while the object is being fetched console.log("Downloading Object"); } const options = { 'range': '0-2000' // start and end range of the object in bytes, 'signed': true, // to declare we will be using signed url to getObject from bucket. 'signedUrlFn' : async (functionData) => { console.log("Data : " + functionData); // Function Logic return { "signed_url": "" //signed url } } } const getObject = await stratus.getObject("key", options, processCallback); const getObjectStart = getObject.start(); // to start the request const getObjectAbort = getObject.abort(); // to abort the request #### Using Promises // Using Promises const processCallback = () => { // Function to execute while the object is being fetched console.log("Downloading Object"); } const options = { 'range': '0-2000' // start and end range of the object in bytes, 'signed': true, // to declare we will be using signed url to getObject from bucket. 'signedUrlFn' : (functionData) => { return new Promise((resolve, reject) => { console.log("Data : " + functionData); // Function Logic resolve({ "signed_url" : "" }) }) } } const getObject = await stratus.getObject("key", options, processCallback); const getObjectStart = getObject.start(); // to start the request const getObjectAbort = getObject.abort(); // to abort the request #### Using SignedURL with Options The following SDK method will allow you download an object using a signed URL, and to set an **expiry time** for the signed URL. // Download Object Using Signed Url and Expiry Time const processCallback = () => { // Function to execute while the object is being fetched console.log("Downloading Object"); } const options = { 'range': '0-2000' // start and end range of the object in bytes, 'signed': true, // to declare we will be using signed url to getObject from bucket. 'signedUrlFn' : async (functionData) => { console.log("Data : " + functionData); // Function Logic return { "signed_url": "" // Signed Url } }, "expiryInSeconds" : 3000 // In Seconds } const getObject = await stratus.getObject("key", options, processCallback); const getObjectStart = getObject.start(); // to start the request const getObjectAbort = getObject.abort(); // to abort the request ### Download a Cached Object Using Cached URL The following SDK method will allow you to download a cached object using the Cached URL. // Cached URL const processCallback = () => { // Function to execute while the object is being fetched console.log("Downloading Object"); } const options = { 'range': '0-2000' // start and end range of the object in bytes, 'cached': true, // to declare we will be using cached url to getObject from bucket. } const getObject = await stratus.getObject("key", options, processCallback); const getObjectStart = getObject.start(); // to start the request const getObjectAbort = getObject.abort(); // to abort the request -------------------------------------------------------------------------------- title: "Upload Object" description: "This page describes the web SDK method to upload an object to a bucket." last_updated: "2026-07-02T09:34:10.185Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/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 The SDK method listed in this section will allow you to upload objects to the bucket. The Stratus 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. **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>File</td> <td>File | String</td> <td>A Mandatory parameter. The object that needs to be uploaded.</td> </tr> <tr> <td>options <td>JSON Object</td> <td> <ul> <li>overwrite: This is an optional String parameter. <ul> <li>If Versioning for your bucket is not enabled, then you need to use this option if you wish to overwrite a resource.</li> <li>Default value: false</li> </ul> </li> <li>ttl: This is an optional String | Number parameter. <ul> <li>You can set Time-to-Live (ttl) in seconds for an object.</li> <li>The value should be greater than or equal to 60 seconds.</li> </ul> </li> <li>type: This is an optional String parameter. <ul> <li>This paramater can be used to overwrite the content-type of the object.</li> <li>If you do not pass this parameter, then by default the value of type will be application/octet-stream</li> </ul> </li> <li>meta: This is an optional JSON Object parameter. It is used to add the meta details of an object that is being uploaded to a bucket. Default value is an empty JSON object </li> </ul> </td> <tr> <td>processCallback</td> <td>Function</td> <td>Callback function while downloading file</td> </tr> </tbody> </table> ### Upload Object as File The following SDk method will allow you to upload an object file to a bucket in Stratus. // Upload Object as File const file = document.getElementById("uploadedFiles").files[0] const putObject = await bucket.putObject("key", file); const putObjectStart = putObject.start(); // to start the request const putObjectAbort = putObject.abort(); // to abort the request ### Upload Object as String The following SDk method will allow you to upload a string object to a bucket in Stratus. // Upload Object as String const putObject = await bucket.putObject("key", "Content of the file"); const putObjectStart = putObject.start(); // to start the request const putObjectAbort = putObject.abort(); // to abort the request ### Upload Object With Options The following SDK method will allow you to upload any object to a bucket in Stratus. Using this SDK method you can implement the options parameter to provide type, overwrite, and ttl instructions. // Upload Object with options const options = { "overwrite": true, //To overwrite an existing object "ttl": 300, //After 300 seconds the object will be deleted from the bucket "type": "text/plain" // File type of the object being uploaded } const putObject = await bucket.putObject("key", "Content of the file", options); const putObjectStart = putObject.start(); // to start the request const putObjectAbort = putObject.abort(); // to abort the request ### Upload Object With Process Callback The following SDK snippet will allow you to upload a particular object to a bucket in Stratus with process callback options. This SDK is best used when you wish to perform an additional function like logging, rendering load/buffer screens, etc. alongside the upload operation. // Execute a function while object being uploaded const processCallback = () => { // Function to execute while the object is being uploaded console.log("Uploading Object"); } const options = { "overwrite": true, "ttl": 300, "type": "text/plain" } const putObject = await bucket.putObject("key", "Content of the file", options, processCallback); const putObjectStart = putObject.start(); // to start the request const putObjectAbort = putObject.abort(); // to abort the request ### Upload Object With Its Meta Details The following SDK snippet will allow you to upload a particular object along with its metadata to a bucket in Stratus. // Upload Object with meta const options = { "overwrite": true, "ttl": 300, "type": "text/plain" // File type of the uploading object "meta": { "object_meta_key" : "object_meta_value" } } const putObject = await bucket.putObject("key", "Content of the file", options); const putObjectStart = putObject.start(); // to start the request const putObjectAbort = putObject.abort(); // to abort the request **Example Response** { "status": 200, "content": true | false, //true: successfully uploaded and false: upload failure "message": "OK" } ### Mutlipart Upload When the Object that you need to upload is too large to upload, you can perform a multipart operation. The multipart operation will split the object into multiple parts and perform a quicker upload. In this SDK section, we are going to go over all the SDK methods that are available to perform multipart upload of objects in Stratus. #### Create Multipart Instance 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. The Bucket reference used in the below code snippet is the component instance. const multipart = bucket.getMultipartInstance("key"); #### Initiate Multipart Upload **Initiate Multipart Upload Without Options** Using the following SDK method, Stratus will return an uploadId. This ID will allow us to upload multiple pats of the object. // initiate upload const initiateUpload = await multipart.initiateUpload(); **Initiate Multipart Upload With Options** Using the following SDK method, Stratus will return an uploadId. This ID will allow us to upload multiple pats of the object. Additionally, using this SDK method you can implement the options parameter to provide type instructions. **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>type</td> <td>String</td> <td> <ul> <li>This parameter is a key in the options JSON Object parameter. <li>This paramater can be used to overwrite the content-type of the object.</li> <li>If you do not pass this parameter, then by default the value of type will be application/octet-stream</li> </ul> </td> </tr> </tbody> </table> // initiate upload with options const options = { type: "application/json" } const initiateUpload = await multipart.initiateUpload(options); **Example Response** { "status": 200, "content": { "bucket": "llm-development", "key": "a/cv", "upload_id": "01hyj639a9zfbg8j7q86nsrj6r" }, "message": "OK" } #### Upload a Part 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 part 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. **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>file</td> <td>File</td> <td>The object that needs to be uploaded.</td> </tr> <tr> <td>part</td> <td>Number</td> <td>Will contain the ordering of the parts that are being uploaded.</td> </tr> </tbody> </table> const partNumber = 1; const file = document.getElementById("uploadedFiles").files[0] const uploadPart = await multipart.uploadPart(file, partNumber) const uploadPartStart = uploadPart.start(); // to start the request const uploadPartAbort = uploadPart.abort(); // to abort the request **Example Response** { "status": 200, "content": true | false, //true: successfully uploaded and false: upload failure "message": "OK" } #### Complete Multipart Upload The following method allows us to terminate the multipart process once all the parts have been successfully uploaded. const completeUpload = await multipart.completeUpload() **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>options</td> <td>JSON Object</td> <td>meta: This is an optional JSON Object parameter. It is used to add the meta details of an object that is being uploaded to a bucket. Default value is an empty JSON object</td> </tr> </tbody> </table> **Example Response** { "status": 200, "content": true | false, //true: successfully uploaded and false: upload failure "message": "OK" } #### Get 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 getUploadSummary() method. const getUploadSummary = await multipart.getUploadSummary(); **Example Response** { "bucket": "zcstratus12345-development", "key": "sasm.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 } ] } ### Upload an Object Wrapping all the Multipart Functionality 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. However, the following method is only recommended to be used in the following conditions: * The max_part_size of the object can be the entire file size. However, to ensure a quicker upload, we urge you to keep the max_part_size **100MB** or less. * The min_part_size of the object should be **5MB** or more. * The entire object's size should be **10GB** or less. Note: For object's that are larger than 10GB, we would recommend that you use the individual SDK methods to carry out the multipart upload operation successfully.<br /> **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>file</td> <td>File</td> <td>The object that needs to be uploaded.</td> </tr> <tr> <td>partSize</td> <td>Number</td> <td>Will contain the size of each part of the object that is being uploaded.</td> </tr> <tr> <td>options</td> <td>JSON Object</td> <td> type: This parameter is a key in this JSON object. <ul> <li>It is a String parameter.</li> This paramater can be used to overwrite the content-type of the object.</li> <li>If you do not pass this parameter, then the type of the file will be taken by default. If the file itself does not have a type, then by default the value of type will be application/octet-stream</li> <li>meta: This is an optional JSON Object parameter. It is used to add the meta details of an object that is being uploaded to a bucket. Default value is an empty JSON object </li> </ul> </td> </tr> </tbody> </table> **Upload an Object Wrapping all the Multipart Functionality Without Options** // upload object const partSize = 10; // in MB const file = document.getElementById("uploadedFiles").files[0] const uploadObject = await multipart.uploadObject(file, partSize); **Upload an Object Wrapping all the Multipart Functionality With Options** // upload object with options const partSize = 10; // in MB const file = document.getElementById("uploadedFiles").files[0] const options = { type: "application/json" // content type of the object to overwrite } const uploadObject = await multipart.uploadObject(file, partSize, options); **Example Response** { "status": 200, "content": true | false, //true: successfully uploaded and false: upload failure "message": "OK" } -------------------------------------------------------------------------------- title: "Delete Object" description: "This page describes the web SDK method to delete an object." last_updated: "2026-07-02T09:34:10.186Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/stratus/delete-object/" 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/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - 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 Object Using this SDK method, you can delete a particular object by passing the complete name of the object to the deleteObject() method. The Bucket reference used in the below code snippet is the component instance. **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>options</td> <td>JSON Object</td> <td> <ul> <li>versionId: An optional String parameter. If Versioning is enabled for your bucket then, this param will help you refer to a particular version using its unique Version ID. </li> <li>ttl: An optional String | Number parameter. You can set Time-to-Live (TTL) in seconds for an object. The value should be greater than or equal to 60 seconds. </li> </ul> </td> </tr> </tbody> </table> ### Delete Object With Object Name Using the following SDK method will delete the required object and all of its versions from the bucket. // Delete an object const deleteObject = await bucket.deleteObject("key"); ### Delete Object With Object Name and VersionID Using the following SDK method will delete a specific version of the object. // Delete a specific version of an object after ttl time const options = { versionId: "01hthq82gwxtfyz6d9j8eg6k2f", // Delete an object with the given versionId ttl: 100 // Time to live in seconds }; const deleteObject = await bucket.deleteObject("key", options); **Example Response** { "status": 200, "content": {}, "message": "Object deleted successfully." } **Possible Exception** * **404**: Object or Bucket Not Found ##### ZCQL -------------------------------------------------------------------------------- title: "Get a Component Instance" description: "ZCQL is Catalyst's own query language that enables you to perform data retrieval operations in the Data Store." last_updated: "2026-07-02T09:34:10.186Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/zcql/get-component-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - ZCQL (/en/cloud-scale/help/zcql/introduction/) - Execute ZCQL - API (/en/api/code-reference/cloud-scale/zcql/execute-zcql-query/#ExecuteZCQLQuery) -------------------------------------------------------------------------------- # ZCQL 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. ### Get a Component Instance The zcql reference can be created as shown below. This does not a fire server-side call. //Get a ZCQL instance var zcql = catalyst.ZCatalystQL; -------------------------------------------------------------------------------- title: "Execute ZCQL Query" description: "ZCQL is Catalyst's own query language that enables you to perform data retrieval operations in the Data Store." last_updated: "2026-07-02T09:34:10.186Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/zcql/execute-zcql-query/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - ZCQL (/en/cloud-scale/help/zcql/introduction/) - Execute ZCQL - API (/en/api/code-reference/cloud-scale/zcql/execute-zcql-query/#ExecuteZCQLQuery) -------------------------------------------------------------------------------- # Execute ZCQL Query ### Construct the Query You must construct a ZCQL query on the required data set before you execute it. A sample SELECT query is shown below: //Create a query to execute var query = 'SELECT * FROM ShipmentData'; ### Execute the Query The query object created in the step above is passed to the executeZCQLQuery() method. The zcql reference used here is the component instance defined earlier. This will return a promise which will be resolved to an object. The content key will contain the array of row objects. //Execute the query by passing it var zcql = catalyst.ZCatalystQL; var zcqlPromise = zcql.executeQuery(query); zcqlPromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); Note: To use ZCQL V2 commands in your code, use the Catalyst methods listed here with the values listed below to set the appropriate environment variable:<br /> * Key: ZOHO_CATALYST_ZCQL_PARSER * Value: V2 A sample response that you will receive is shown below. The response is the same for both versions of Web SDK. [ { AlienCity: { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-13 13:49:19:475", CREATEDTIME: "2021-08-13 13:49:19:475", CityName: "Dallas", ROWID: "2136000000008508" } }, { AlienCity: { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-16 15:55:32:969", CREATEDTIME: "2021-08-16 15:55:32:969", CityName: "Houston", ROWID: "2136000000011002" } }, { AlienCity: { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-16 17:03:01:507", CREATEDTIME: "2021-08-16 16:29:10:499", CityName: "Austin", ROWID: "2136000000011011" } } ] #### Serverless ##### Functions -------------------------------------------------------------------------------- title: "Get a Component Instance" description: "Catalyst functions enable you to build custom functionalities in your application, automate tasks, or integrate with third-party services." last_updated: "2026-07-02T09:34:10.186Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/serverless/functions/get-component-instance/" service: "Serverless" related: - Functions (/en/serverless/help/functions/introduction) - Function - API (/en/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Functions The Function group in Catalyst is created and defined through either Catalyst's Online editor or 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 functions reference can be created by the following method which would not fire a server side call. //Get a function instance var functions = catalyst.function; -------------------------------------------------------------------------------- title: "Get a Function Object" description: "Catalyst functions enable you to build custom functionalities in your application, automate tasks, or integrate with third-party services." last_updated: "2026-07-02T09:34:10.186Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/serverless/functions/get-function-object/" service: "Serverless" related: - Functions (/en/serverless/help/functions/introduction) - Function - API (/en/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Get a Function Object A function object can be created by the following method which would not fire a server-side call. The unique function ID is passed as a parameter to the method. The **functions** used in the below code snippet is the component instance. //Get the function object by passsing the function ID var functions = catalyst.function; var functionObject = functions.functionId(FUNCTION_ID); -------------------------------------------------------------------------------- title: "Execute the Function" description: "Catalyst functions enable you to build custom functionalities in your application, automate tasks, or integrate with third-party services." last_updated: "2026-07-02T09:34:10.186Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/serverless/functions/execute-function/" service: "Serverless" related: - Functions (/en/serverless/help/functions/introduction) - Function - API (/en/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Execute the Function A function can be executed by calling the execute() method in which the configuration (of type JSON) is passed as a parameter. The **function** object used in the code snippet is the function object. ### Create a Function Configuration Before executing a function, it is mandatory to set the configuration required for it. Here, the configuration specifies, the function arguments(as **args**) if any. //Create the config object used to execute the function. //The args is an JSONObject to pass values to the function as parameters. var config = { "args": {"name": "xxx"}, "method":"GET" }; The supported HTTP methods are: GET, PUT, POST, PATCH, and DELETE. The GET method is the default. If you use GET in your code, the function arguments are passed as query strings. If you use any of the other HTTP methods, the function arguments are passed in the request body. ### Execute Function The function can be executed by passing the **configuration** object as an argument to the execute() method. The promise returned here will be resolved to an object in which the content key contains the output of the executed function. //Execute the function by passing the config object var functions = catalyst.function; var functionObject = functions.functionId(FUNCTION_NAME); //can pass Function Id or Function Name as argument var functionPromise = functionObject.execute(config); functionPromise .then((response) => { response.json().then(responseBody => { console.log(responseBody); }); }) .catch((err) => { console.log(err); }); --- ## FAQ — Catalyst SDK # Catalyst SDK You can access Catalyst SDKs from two places in the Catalyst console: 1. **From the expanded menu in the project page**: Open your project in the Catalyst console and click your profile picture. The expanded menu contains the links to download various SDKs that you can use in your application. 2. **From the Developer Tools in Settings**: The Developer Tools in Settings also contains the links to access and download the SDKs that are available for your project. You can refer to the **Catalyst console help page** for detailed help with accessing the SDKs and using the console. If the client portal wasn't authenticated before triggering the Basic I/O or Advanced I/O function that contains the getCurrentUser() method, then the function will run using the admin authentication. This will cause the method to return a null response. Therefore, you should ensure that you have authenticated the client portal before executing the getCurrentUser() method. This error will occur if you try to generate the token with the auth URL domain for a different data center (DC) other than your account's DC. You must ensure that you have generated the grant token (code), refresh_token and access_token for the same DC as your account. This error will occur if you do not include proper scopes for the POST operation or for other operations while generating the grant token (code). Generate the grant token by adding the required scopes for all the operations you are going to perform, and then use the new token for the operations. You can store the access token for multiple users in a cache segment by specifying a unique key name for each user. If the value is present in the cache, it will return the same access token value for all subsequent calls, till it expires. After it expires, Connectors will automatically get a new access token and store it in the cache. You can refer this tutorial where we have implemented the logic of handling the access tokens of multiple users via Catalyst Connectors.