# 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-03-18T07:41:08.564Z" 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 {{%link href="https://www.android.com/intl/en_in/"%}}Android{{%/link%}} 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 {{%link href="/en/cloud-scale/"%}}Catalyst Cloud Scale{{%/link%}} and {{%link href="/en/serverless/"%}}Catalyst Serverless{{%/link%}} 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%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: After you develop and test your Android app, you can host and distribute the app using {{%link href="/en/cloud-scale/help/mobile-device-management/introduction"%}}Mobile Device Management.{{%/link%}} 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. {{%/note%}} -------------------------------------------------------------------------------- title: "Class Hierarchy" description: "Class Hierarchy denotes the hierarchy of the Kotlin classes in the Catalyst Android SDK." last_updated: "2026-03-18T07:41:08.564Z" 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:** {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/#change-the-time-zone-of-the-project"%}}Timezone{{%/link%}} * **Serverless:** {{%link href="/en/serverless/help/functions/introduction"%}}Functions{{%/link%}} * **Cloud Scale:** {{%link href="/en/cloud-scale/help/authentication/introduction"%}}Authentication{{%/link%}}, {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}, {{%link href="/en/cloud-scale/help/file-store/introduction"%}}File Store{{%/link%}}, {{%link href="/en/cloud-scale/help/search-integration/introduction"%}}Search{{%/link%}}, {{%link href="/en/cloud-scale/help/zcql/introduction"%}}ZCQL{{%/link%}} The hierarchy of the Catalyst Android SDK component classes is depicted in the architecture diagram below. The {{%badge%}}**ZCatalystApp**{{%/badge%}} 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 {{%badge%}}ZCatalystApp{{%/badge%}} 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 {{%badge%}}**getInstance()**{{%/badge%}} 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 {{%badge%}}getInstance(){{%/badge%}} 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-03-18T07:41:08.564Z" 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 {{%badge%}}{{%bold%}}ZCatalystException{{%/bold%}}{{%/badge%}}, defined in the Android SDK package. If an exception occurs in your app, the following properties of the exception are returned: * {{%bold%}}{{%badge%}}code{{%/badge%}}:{{%/bold%}} Unique identifier of the error * {{%bold%}}{{%badge%}}errorMsg{{%/badge%}}:{{%/bold%}} General description about the error * {{%bold%}}{{%badge%}}errorDetails{{%/badge%}}:{{%/bold%}} Additional information about the error * {{%bold%}}{{%badge%}}originalException{{%/badge%}}:{{%/bold%}} 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-03-18T07:41:08.564Z" 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: * {{%link href="/en/getting-started/catalyst-projects/"%}}Create a Catalyst project{{%/link%}} in the Catalyst console to host your mobile app. {{%note%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: 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 {{%link href="/en/sdk/ios/v2/overview/"%}}iOS{{%/link%}} SDKs, or with Catalyst {{%link href="/en/sdk/flutter/v2/overview/"%}}Flutter SDK{{%/link%}}.{{%/note%}} * Create or import an Android project in {{%link href="https://developer.android.com/studio"%}}Android Studio{{%/link%}} * 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 {{%italics%}}setup section{{%/italics%}}. -------------------------------------------------------------------------------- title: "Setup" description: "Steps to follow to setup the Catalyst project and the Android project." last_updated: "2026-03-18T07:41:08.564Z" 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 {{%italics%}}Project Settings{{%/italics%}} 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%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: 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.{{%/note%}} 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 {{%link href="/en/deployment-and-billing/environments/introduction"%}}Environments help page{{%/link%}}. 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: {{%badge%}}**app_configuration_development.properties**{{%/badge%}} * Production: {{%badge%}}**app_configuration_production.properties**{{%/badge%}} 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 {{%link href="/en/deployment-and-billing/environments/initial-deployment"%}}deploy your project to production{{%/link%}} first, and then {{%link href="/en/getting-started/set-up-a-catalyst-project/developer-tools"%}}download the file{{%/link%}} from the {{%italics%}}Developer Tools{{%/italics%}} settings section. The configuration file must be added to the {{%badge%}}**assets**{{%/badge%}} directory of your Android app module. Typically, the {{%badge%}}assets{{%/badge%}} folder is created in the {{%badge%}}app/src/main{{%/badge%}} directory. Refer to the {{%link href="https://developer.android.com/studio/projects"%}}official Android documentation{{%/link%}} 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%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: You can refer to the links specified in the table, to know where you can obtain these values from.{{%/note%}} <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>{{%badge%}}**clientID**{{%/badge%}}</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>{{%badge%}}**clientSecret**{{%/badge%}}</td> <td>String</td> <td>Secret value generated for a specific {{%badge%}}clientID{{%/badge%}}, which is passed along with the API hits. This is received in the configuration file.</td> </tr> <tr> <td>{{%badge%}}**portalID**{{%/badge%}}</td> <td>String</td> <td>Unique identifier received in the configuration file</td> </tr> <tr> <td>{{%badge%}}**redirectUrl**{{%/badge%}}</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>{{%badge%}}**projectID**{{%/badge%}}</td> <td>Long</td> <td>The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/" %}}unique ID{{%/link%}} of your Catalyst Project</td> </tr> <tr> <td>{{%badge%}}**apiBaseURL**{{%/badge%}}</td> <td>String</td> <td>The URL of the Catalyst server through which the internal API is called. You must use the appropriate URL ({{%link href="/en/deployment-and-billing/environments/development-environment/#function-url-and-web-app-url-in-the-development-environment"%}}development URL{{%/link%}} or {{%link href="/en/deployment-and-billing/environments/production-environment/#function-url-and-web-app-url-in-the-production-environment"%}}production URL{{%/link%}}), based on the environment you are working in.</td> </tr> <tr> <td>{{%badge%}}**oauthScopes**{{%/badge%}}</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 {{%link href="/en/api/oauth2/scopes/#Scopes" %}}here{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}**requestHeaders**{{%/badge%}}</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: {{%badge%}}requestHeaders={{%/badge%}}{{%italics%}}key1:value1, key2:value2{{%/italics%}}</td> </tr> <tr> <td>{{%badge%}}**serverTLD**{{%/badge%}}</td> <td>String</td> <td>The top level domain of the data server<br /> Acceptable values: {{%badge%}}**AU**{{%/badge%}}, {{%badge%}}**CN**{{%/badge%}}, {{%badge%}}**COM**{{%/badge%}}, {{%badge%}}**EU**{{%/badge%}} and {{%badge%}}**IN**{{%/badge%}}</td> </tr> <tr> <td>{{%badge%}}**printStackTrace**{{%/badge%}}</td> <td>Boolean</td> <td>Enables you to obtain a detailed trace of the logs, if the {{%badge%}}**printStackTrace**{{%/badge%}} value is set as '{{%bold%}}true{{%/bold%}}'. The default value is '{{%bold%}}false{{%/bold%}}'.</td> </tr> <tr> <td>{{%badge%}}**minLogLevel**{{%/badge%}}</td> <td>String</td> <td>Enables you to set the logging preferences for the app<br /> Acceptable values: {{%badge%}}**warnings**{{%/badge%}}, {{%badge%}}**errors**{{%/badge%}}, {{%badge%}}**information**{{%/badge%}}, {{%badge%}}**debug**{{%/badge%}}, {{%badge%}}**ALL**{{%/badge%}}</td> </tr> <tr> <td>{{%badge%}}**httpRequestMode**{{%/badge%}}</td> <td>String</td> <td>Defines whether the HTTP requests are synchronous or asynchronous<br /> Acceptable values: {{%badge%}}**SYNC**{{%/badge%}}, {{%badge%}}**ASYNC**{{%/badge%}}<br /> Default value: {{%badge%}}ASYNC{{%/badge%}}</td> </tr> <tr> <td>{{%badge%}}**connectTimeOut<br>InSec**{{%/badge%}}</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>{{%badge%}}**readTimeOutInSec**{{%/badge%}}</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>{{%badge%}}**writeTimeOutInSec**{{%/badge%}}</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>{{%badge%}}**JWTClientID**{{%/badge%}}</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>{{%badge%}}**JWTClientSecret**{{%/badge%}}</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%}}{{%bold%}}Note{{%/bold%}}:<br /> * If the values of the {{%badge%}}**clientID**{{%/badge%}}, {{%badge%}}**clientSecret**{{%/badge%}}, {{%badge%}}**projectID**{{%/badge%}}, or {{%badge%}}**portalID**{{%/badge%}} 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 {{%link href="/en/getting-started/set-up-a-catalyst-project/developer-tools/#create-a-mobile-sdk-package" %}}create a new package{{%/link%}} for the required project from the Developer Tools section and download a new configuration file for the appropriate environment, then add it to the {{%badge%}}assets{{%/badge%}} 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 {{%badge%}}**ZCatalystApp.configs**{{%/badge%}} object.{{%/note%}} <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** {{%badge%}}**build.gradle**{{%/badge%}} file in your Android app structure: {{%code class="language-bash line-numbers"%}}maven { url "https<span></span>://maven.zohodl.com/" } {{%/code%}} 2. Add the code snippet given below to the **app-level** {{%badge%}}**build.gradle**{{%/badge%}} file in your Android app structure: {{%code class="language-bash line-numbers"%}}dependencies { implementation 'com.zoho.catalyst:android-sdk:3.0.1' } {{%/code%}} <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 {{%badge%}}strings.xml{{%/badge%}} file of your Android app: {{%code class="language-bash line-numbers"%}}&lt;string name="url_scheme"&gt;{redirection_url}&lt;/string&gt; {{%/code%}} The {{%badge%}}strings.xml{{%/badge%}} file is automatically created when you create the Android project. You can find it by navigating to {{%badge%}}app/src/main/res/values{{%/badge%}} 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 {{%link href="/en/sdk/android/v2/setup/#step-1-register-your-android-app-with-catalyst"%}}creating the package{{%/link%}} for your app in Catalyst, in place of {{%badge%}}redirection_url{{%/badge%}} 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: * {{%badge%}}**INTERNET**{{%/badge%}}: To execute Catalyst APIs * {{%badge%}}**ACCESS_NETWORK_STATE**{{%/badge%}}: To handle network failures To enable these permissions, you must declare them in the {{%badge%}}**AndroidManifest.xml**{{%/badge%}} file, as shown below: {{%code class="language-bash line-numbers"%}}&lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/&gt; &lt;uses-permission android:name="android.permission.INTERNET"/&gt; {{%/code%}} You can find the the {{%badge%}}AndroidManifest.xml{{%/badge%}} file by navigating to {{%badge%}}app/src/main{{%/badge%}} 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 {{%link href="https://developer.android.com/studio/run"%}}**build your project**{{%/link%}}. 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 {{%badge%}}**Environment**{{%/badge%}} indicates if the app is operating in the Development or the Production environment. Similar to including the appropriate configuration file ({{%badge%}}app_configuration_development.properties/ app_configuration_production.properties{{%/badge%}}) based on the {{%link href="/en/deployment-and-billing/environments/introduction"%}}environment{{%/link%}} 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 {{%badge%}}Environment{{%/badge%}} of your app as either {{%badge%}}**DEVELOPMENT**{{%/badge%}} or {{%badge%}}**PRODUCTION**{{%/badge%}}, and pass it to the {{%badge%}}init(){{%/badge%}} method through the {{%badge%}}ZCatalystApp{{%/badge%}} class as shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.init( context: Context, Environment: ZCatalystSDKConfigs.Environment.{DEVELOPMENT} ): ZCatalystApp {{%/code%}} <br /> #### Method 2: Without specifying the Environment If the {{%badge%}}Environment{{%/badge%}} is not specified in the SDK initialization, it would be considered as {{%badge%}}**PRODUCTION**{{%/badge%}} by default. Therefore, if your app is operating in the Production environment, you can initialize the SDK directly without specifying the {{%badge%}}Environment{{%/badge%}} in the following way: {{%code class="language-bash line-numbers"%}}ZCatalystApp.init(context: Context): ZCatalystApp{{%/code%}} <br /> {{%note%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: * If you make any changes to the {{%badge%}}app_configuration_development.properties{{%/badge%}} or {{%badge%}}app_configuration_production.properties{{%/badge%}} 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 {{%link href="/en/sdk/android/v2/cloud-scale/authentication/third-party-authentication/"%}}this help page{{%/link%}}.{{%/note%}} 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-03-18T07:41:08.592Z" 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 {{%link href="/en/cloud-scale/help/authentication/introduction"%}}Catalyst Authentication{{%/link%}} 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 {{%badge%}}**newUser()**{{%/badge%}} 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. {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().newUser( lastName: String, email:String ): ZCatalystUser{{%/code%}} **Parameters**: * {{%badge%}}**lastName**{{%/badge%}}: The last name of the new user * {{%badge%}}**email**{{%/badge%}}: Email address of the user, to which the {{%link href="/en/cloud-scale/help/authentication/user-management/users/implementation/"%}}invitation mail{{%/link%}} will be sent A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}val user = ZCatalystApp.getInstance().newUser("Burrows", "emma@zylker.com"){{%/code%}} -------------------------------------------------------------------------------- title: "User Signup" description: "Adding new users to your catalyst application" last_updated: "2026-03-18T07:41:08.592Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/"%}}user{{%/link%}} to your Catalyst app by calling the {{%badge%}}**signUp()**{{%/badge%}} method. You must pass the {{%link href="/en/sdk/android/v2/cloud-scale/authentication/create-user-instance"%}}user instance defined here{{%/link%}} as the argument to the {{%badge%}}signup(){{%/badge%}} method. The code syntax for user signup is given below: {{%code class="language-bash line-numbers"%}}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;? {{%/code%}} **Parameters**: * {{%badge%}}**newUser**{{%/badge%}}: The user instance created before this operation A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().signUp(user, { success -> println("User Sign up success") }, { exception -> println("User Sign up failed $exception") }) {{%/code%}} -------------------------------------------------------------------------------- title: "User Login" description: "You can display the login page to the end user of your Catalyst Android app." last_updated: "2026-03-18T07:41:08.592Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/"%}}end user{{%/link%}} of your Catalyst Android app using the {{%badge%}}**login()**{{%/badge%}} 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: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().login( success: () → Unit, failure: (ZCatalystException) → Unit ): Unit {{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers" scroll="set-scroll" %}}ZCatalystApp.getInstance().login( { ZCatalystLogger.logInfo("Login Success") //Actions to execute on successful login }, { ZCatalystLogger.logError("Login failed - $it") //Actions to execute on failed login }) {{%/code%}} The methods of the {{%badge%}}ZCatalystLogger{{%/badge%}} 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-03-18T07:41:08.592Z" 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 {{%badge%}}logout(){{%/badge%}} method can log an {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/"%}}app user{{%/link%}} out from the Catalyst Android app. The code syntax for user logout is given below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().logout( success: () → Unit, failure: (ZCatalystException) → Unit ): Unit {{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().logout( { ZCatalystLogger.logInfo("Logout Success") //Actions to execute on successful logout }, { ZCatalystLogger.logError("Logout failed - $it") //Actions to execute on failed logout }) {{%/code%}} The methods of the {{%badge%}}ZCatalystLogger{{%/badge%}} 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-03-18T07:41:08.593Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/"%}}end user{{%/link%}} of your application by calling the {{%badge%}}getCurrentUser(){{%/badge%}} 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: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().getCurrentUser( success: (ZCatalystUser) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystUser&gt;&gt;? {{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().getCurrentUser( { user -> println("The current user is : ${user.firstName}") }, { exception -> println("Get current user failed! $exception") } ) {{%/code%}} -------------------------------------------------------------------------------- title: "Social Logins" description: "You can provide a native Google login and logout through Social Logins in your Android app." last_updated: "2026-03-18T07:41:08.593Z" 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 {{%link href="/en/cloud-scale/help/authentication/social-logins/introduction/"%}}Social Logins{{%/link%}} through Authentication. Catalyst Android SDK enables you to provide Google login and logout functionality for your Android app users. {{%note%}}{{%bold%}}Note:{{%/bold%}} {{%link href="/en/cloud-scale/help/authentication/public-signup/"%}}Public Signup{{%/link%}} must be enabled to use Social Logins.{{%/note%}} ### 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 {{%link href="/en/cloud-scale/help/authentication/social-logins/configuring-social-logins/#enable-google-social-login"%}}Enable Google Social Login help section{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} You must configure the application type as a web application in step 12.{{%/note%}} 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. {{%code class="language-bash line-numbers"%}}fun login(activity: Activity, googleClientID: String, success: () -> Unit, failure: (ZCatalystException) -> Unit){{%/code%}} **Parameters**: * {{%badge%}}**googleClientID**{{%/badge%}}: The client ID obtained after configuring OAuth in Google's API console A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().login("activity", "570*******************", { success -> println("User login success") }, { exception -> println("User login failed $exception") }){{%/code%}} ### 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. {{%code class="language-bash line-numbers"%}}fun logout(activity: Activity, googleClientID: String, success: () -> Unit, failure: (ZCatalystException) -> Unit){{%/code%}} **Parameters**: * {{%badge%}}**googleClientID**{{%/badge%}}: The client ID obtained after configuring OAuth in Google's API console A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().logout("activity", "570*******************", { println("Logout success") }, { println("Logout failed $exception") }){{%/code%}} -------------------------------------------------------------------------------- title: "Third-Party Authentication" description: "You can implement a third-party authentication service of your preference in your Android app." last_updated: "2026-03-18T07:41:08.593Z" 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 {{%link href="/en/cloud-scale/help/authentication/third-party-authentication/introduction/"%}}third-party authentication{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} 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 {{%link href="/en/cloud-scale/help/authentication/third-party-authentication/implementation/"%}}Set Up Third-party Authentication in Catalyst help page{{%/link%}}. 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 {{%link href="/en/sdk/java/v1/cloud-scale/authentication/third-party-server-token/"%}}Java{{%/link%}}, {{%link href="/en/sdk/nodejs/v2/cloud-scale/authentication/third-party-server-token/"%}}Node.js{{%/link%}}, or {{%link href="/en/sdk/python/v1/cloud-scale/authentication/third-party-server-token/"%}}Python{{%/link%}}. This function will generate a Catalyst server-side token {{%badge%}}**jwtToken**{{%/badge%}} or {{%badge%}}**customToken**{{%/badge%}} which will then be passed to client-side (Android app). The Catalyst console provides readymade scripts to generate the {{%badge%}}customToken{{%/badge%}}. You can incorporate this script in the server-side function you write, to return the {{%badge%}}customToken{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} To enable a third-party authentication in your Catalyst application, you must ensure that you have enabled {{%link href="/en/cloud-scale/help/authentication/public-signup/"%}}Public Signup{{%/link%}} in the console.{{%/note%}} **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 {{%link href="/en/sdk/android/v2/setup/#step-2-import-the-configuration-file-in-your-android-project"%}}{{%badge%}}app_configuration_development{{%/badge%}} or the {{%badge%}}app_configuration_production{{%/badge%}} properties file{{%/link%}} in your Android project again, based on your app's {{%link href="/en/deployment-and-billing/environments/introduction/"%}}environment{{%/link%}}. This is because this file will now include two additional properties: {{%link href="/en/sdk/android/v2/setup/#properties-of-the-app_configuration_developmentproperties-app_configuration_productionproperties-file"%}}{{%badge%}}JWTClientID{{%/badge%}} and {{%badge%}}JWTClientSecret{{%/badge%}}{{%/link%}}. 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 {{%link href="/en/getting-started/set-up-a-catalyst-project/developer-tools/"%}}**Developer Tools**{{%/link%}} 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 {{%link href="/en/sdk/android/v2/setup/#step-2-import-the-configuration-file-in-your-android-project"%}}here{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} You need not perform the steps 3 to 5 given in the SDK setup help page again.{{%/note%}} <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 {{%link href="/en/sdk/android/v2/setup/#step-6-initialize-the-sdk"%}}initializing the SDK for the first time{{%/link%}}: 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 {{%badge%}}Environment{{%/badge%}} as either {{%badge%}}DEVELOPMENT{{%/badge%}} or {{%badge%}}PRODUCTION{{%/badge%}} based on the environment the app is operating in. The {{%badge%}}isCustomLogin{{%/badge%}} indicates a boolean value that is set for the presence of a third-party authentication. These are passed to the {{%badge%}}init(){{%/badge%}} method through the {{%badge%}}ZCatalystApp{{%/badge%}} class as shown below: {{%code class="language-bash line-numbers"%}}fun init( context: Context, environment: ZCatalystSDKConfigs.Environment, isCustomLogin: Boolean = false ): ZCatalystApp{{%/code%}} A sample code snippet for this operation is given below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.init( context, ZCatalystSDKConfigs.Environment.{DEVELOPMENT}, true ){{%/code%}} <br> #### Method 2: Without specifying the environment If the {{%badge%}}Environment{{%/badge%}} is not specified in the SDK initialization, it would be considered as {{%badge%}}PRODUCTION{{%/badge%}} by default. This method also lets you re-initialize the SDK by specifying the {{%badge%}}JWTClientID{{%/badge%}} and {{%badge%}}JWTClientSecret{{%/badge%}} properties obtained from the newly-downloaded configuration file through with {{%badge%}}ZCatalystSDKConfigsBuilder{{%/badge%}}. This can be done in the following way: {{%code class="language-bash line-numbers"%}}fun init(context: Context, sdkConfigs: ZCatalystSDKConfigs, isCustomLogin: Boolean = false): ZCatalystApp{{%/code%}} A sample code snippet is given below: {{%code class="language-bash line-numbers"%}}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){{%/code%}} <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 {{%badge%}}customToken{{%/badge%}} or {{%badge%}}jwtToken{{%/badge%}} 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 {{%badge%}}handleCustomLogin(){{%/badge%}} method as shown below: {{%code class="language-bash line-numbers"%}}fun handleCustomLogin(jwtToken :String, success: () -> Unit, failure: (ZCatalystException) -> Unit){{%/code%}} A sample code snippet is given below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().handleCustomLogin("123xxxxxxxx", { println("Login successfully.") }, { println("Login failed.") }){{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ##### 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-03-18T07:41:08.593Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Catalyst Data Store{{%/link%}} 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 {{%badge%}}**getDataStoreInstance()**{{%/badge%}} method as shown in the code syntax below, to obtain the Data Store instance successfully: {{%code class="language-bash"%}}ZCatalystApp.getInstance().getDataStoreInstance(): ZCatalystDataStore{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.593Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}, 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 {{%badge%}}**getTableInstance()**{{%/badge%}} method in either of the two ways mentioned below. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used in both the methods is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-data-store-instance"%}}Data Store Instance page{{%/link%}}. ### Create a Table Instance by its ID You can create a table instance by passing the particular table ID as the argument to the {{%badge%}}getTableInstance(){{%/badge%}} method, as shown in the code syntax below: {{%code class="language-bash line-numbers"%}}&lt;DATA_STORE_INSTANCE&gt;.getTableInstance( id: Long ): ZCatalystTable {{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/data-store/tables"%}}unique table ID{{%/link%}} of the specific table the instance needs to be created for A sample code snippet is shown below: {{%code class="language-bash"%}}val table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance(2823000000017011) //Replace this with your Table ID{{%/code%}} ### 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 {{%badge%}}**getTableInstance()**{{%/badge%}} method, as shown in the code syntax below: {{%code class="language-bash line-numbers"%}}&lt;DATA_STORE_INSTANCE&gt;.getTableInstance( identifier: String ): ZCatalystTable {{%/code%}} **Parameters**: * {{%badge%}}**identifier**{{%/badge%}}: The name of the specific table the instance needs to be created for A sample code snippet is shown below: {{%code class="language-bash"%}}val table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails") //Replace this with your table name{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.594Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table of the given instance by calling the {{%badge%}}**getColumn()**{{%/badge%}} 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 {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in both the methods is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. #### 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 {{%badge%}}getColumn(){{%/badge%}} method, as shown in the code syntax below: {{%code class="language-bash line-numbers"%}}&lt;TABLE_INSTANCE&gt;.getColumn( id: Long, success: (ZCatalystColumn) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystColumn&gt;&gt;? {{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/data-store/columns/#column-characteristics"%}}unique Column ID{{%/link%}} of the particular column that needs to be retrieved A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") }) {{%/code%}} #### 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 {{%badge%}}getColumn(){{%/badge%}} method, as shown in the code syntax below: {{%code class="language-bash line-numbers"%}}&lt;TABLE_INSTANCE&gt;.getColumn( name: String, success: (ZCatalystColumn) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystColumn&gt;&gt;? {{%/code%}} **Parameters**: * {{%badge%}}**name**{{%/badge%}}: The name of the particular column that needs to be retrieved A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") }) {{%/code%}} ### Get the Metadata of all Columns You can retrieve the metadata of all the columns of a table of the given instance, using the {{%badge%}}**getColumns()**{{%/badge%}} 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 {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;TABLE_INSTANCE&gt;.getColumns( success: (List&lt;ZCatalystColumn&gt;) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystColumn&gt;&gt;&gt;? {{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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.") } ) {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.594Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table of the given instance using the {{%badge%}}**getRow()**{{%/badge%}} 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 {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;TABLE_INSTANCE&gt;.getRow( id: Long, success: (ZCatalystRow) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystRow&gt;&gt;? {{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/data-store/records/#create-a-new-record"%}}unique ROWID{{%/link%}} of the particular row that needs to be retrieved A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") }) {{%/code%}} <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 {{%badge%}}**maxRows**{{%/badge%}} as shown below. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code snippets below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&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;?{{%/code%}} **Parameters**: * {{%badge%}}**maxRows**{{%/badge%}}: The maximum number of rows to be fetched in this iteration A sample code snippet is given below: {{%code class="language-bash line-numbers"%}}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") }){{%/code%}} 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 {{%badge%}}info.nextToken{{%/badge%}}, and pass it as the value for {{%badge%}}nextToken{{%/badge%}} during the subsequent iteration. During the first execution of the loop, the {{%badge%}}nextToken{{%/badge%}} string is not passed. You can also verify the number of pending rows to be fetched through {{%badge%}}info.moreRecords{{%/badge%}} as shown in the code snippet. You can fetch the next set of rows by passing the nextToken as well as {{%badge%}}maxRows{{%/badge%}} if you require pagination to continue. This can be done as shown below. {{%code class="language-bash line-numbers"%}}&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;?{{%/code%}} **Parameters**: * {{%badge%}}**maxRows**{{%/badge%}}: The maximum number of rows to be fetched in this iteration * {{%badge%}}**nextToken**{{%/badge%}}: The authorization token to fetch the next set of rows A sample code snippet is given below: {{%code class="language-bash line-numbers"%}}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") }){{%/code%}} You can fetch the {{%badge%}}nextToken{{%/badge%}} and {{%badge%}}moreRecords{{%/badge%}} information until {{%badge%}}info.moreRecords{{%/badge%}} returns {{%badge%}}FALSE{{%/badge%}}. If you prefer to fetch all pending rows after the first iteration and don't want to set a {{%badge%}}maxRows{{%/badge%}} limit, you can do so in the following manner: {{%code class="language-bash line-numbers"%}}&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;?{{%/code%}} **Parameters**: * {{%badge%}}**nextToken**{{%/badge%}}: The authorization token to fetch the next set of rows A sample code snippet is given below: {{%code class="language-bash line-numbers"%}}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") }){{%/code%}} This will make {{%badge%}}info.moreRecords{{%/badge%}} return {{%badge%}}FALSE{{%/badge%}}. <br> ### Get All Rows You can retrieve all the rows of a table of the given instance using the {{%badge%}}**getRows()**{{%/badge%}} 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 {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&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;? {{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") }) {{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Because this is an operation to fetch all the rows, you can ignore the {{%badge%}}info.nextToken{{%/badge%}}. This will return all the rows available without pagination. The {{%badge%}}info.moreRecords{{%/badge%}} will also return {{%badge%}}FALSE{{%/badge%}} if all the rows are fetched.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.594Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table using the {{%badge%}}getFieldValue(){{%/badge%}} 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 {{%badge%}}getFieldValue(){{%/badge%}}method, as shown in the code syntax below. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;TABLE_INSTANCE&gt;.getRow( id : Long, success: (ZCatalystRow) → ZCatalystRow.getFieldValue(fieldAPIName: String): Any, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystRow&gt;&gt;? {{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The The {{%link href="/en/cloud-scale/help/data-store/records/#create-a-new-record"%}}unique ROWID{{%/link%}} of the particular row that needs to be retrieved * {{%badge%}}**fieldAPIName**{{%/badge%}}: The name of the column whose value needs to be fetched A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") }) {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.594Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}, 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 {{%badge%}}**newRow()**{{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used here is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. <br /> {{%code class="language-bash"%}}&lt;TABLE_INSTANCE&gt;.newRow(): ZCatalystRow{{%/code%}} <br /> A sample code snippet is shown below: <br /> {{%code class="language-bash"%}}val rowInstance = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").newRow() //Replace this with your table name{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.595Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table of the given instance using the {{%badge%}}**newRow()**{{%/badge%}} 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 {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-row-instance"%}}Row Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;ROW_INSTANCE&gt;.create( success: (ZCatalystRow) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystRow&gt;&gt;&gt;? {{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If a column was created with the {{%badge%}}{{%bold%}}is_unique{{%/bold%}}{{%/badge%}} or {{%badge%}}{{%bold%}}is_mandatory{{%/bold%}}{{%/badge%}} 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.{{%/note%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") } ) {{%/code%}} ### 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 {{%badge%}}**createRows()**{{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&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;? {{%/code%}} **Parameters**: * {{%badge%}}**rows**{{%/badge%}}: The array of rows to be created A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") }) {{%/code%}} -------------------------------------------------------------------------------- title: "Delete a Row" description: "Catalyst Android SDK enables you to delete a single row from a specific Data Store table." last_updated: "2026-03-18T07:41:08.595Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} 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 {{%badge%}}**deleteRow()**{{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;TABLE_INSTANCE&gt;.deleteRow( rowId: Long, success: () → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;Unit&gt;? {{%/code%}} **Parameters**: * {{%badge%}}**rowId**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/data-store/records/#create-a-new-record"%}}unique ROWID{{%/link%}} of the row to be deleted. A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") }) {{%/code%}} ### Delete a Row by passing the Row Instance You can delete a row from a table simply by calling the {{%badge%}}**delete()**{{%/badge%}} method for the row instance. The {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-row-instance"%}}Row Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;ROW_INSTANCE&gt;.delete( success: () → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;Unit&gt;? {{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") }) {{%/code%}} -------------------------------------------------------------------------------- title: "Update Rows" description: "You can update a single specific row or all rows in a Data Store table." last_updated: "2026-03-18T07:41:08.595Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table using the {{%badge%}}**update()**{{%/badge%}} 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 {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-row-instance"%}}Row Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;ROW_INSTANCE&gt;.update( success: (ZCatalystRow) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystRow&gt;&gt;&gt;? {{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") } ) }) {{%/code%}} ### Update all Rows You can update multiple row in a table by passing an array of the rows as an argument to the {{%badge%}}**updateRows()**{{%/badge%}} 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 {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&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;? {{%/code%}} **Parameters**: * {{%badge%}}**rows**{{%/badge%}}: The array of rows to be updated A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") }) {{%/code%}} ##### 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-03-18T07:41:08.596Z" 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 {{%link href="/en/cloud-scale/help/file-store/introduction"%}}Catalyst File Store{{%/link%}} 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 {{%badge%}}**getFileStoreInstance()**{{%/badge%}} 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: {{%code class="language-bash"%}}ZCatalystApp.getInstance().getFileStoreInstance(): ZCatalystFileStore{{%/code%}} -------------------------------------------------------------------------------- title: "Get Folders" description: "You can obtain the details of a specific folder in the File Store." last_updated: "2026-03-18T07:41:08.596Z" 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 {{%link href="/en/cloud-scale/help/file-store/introduction"%}}File Store{{%/link%}}, by passing its unique Folder ID as an argument to the {{%badge%}}**getFolder()**{{%/badge%}} 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 {{%badge%}}&lt;FILE_STORE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/file-store/create-file-store-instance/"%}}File Store Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;FILE_STORE_INSTANCE&gt;.getFolder( id: Long, success: (ZCatalystFolder) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystFolder&gt;&gt;? {{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The unique {{%link href="/en/cloud-scale/help/file-store/implementation/#create-a-folder"%}}Folder ID{{%/link%}} of the folder to be retrieved A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") }) {{%/code%}} ### Get the Metadata of all Folders You can retrieve the details of all the folders available in your project's File Store using the {{%badge%}}**getFolders()**{{%/badge%}} method, as shown in the code syntax below. This can fetch the meta data of all the folders, and the files in them. The {{%badge%}}&lt;FILE_STORE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/file-store/create-file-store-instance/"%}}File Store Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&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;? {{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().getFileStoreInstance().getFolders( { folders -> for (folder in folders){ println("Folder names: ${folder.name}") } }, { exception -> println("Get Folders Failed! $exception") } ) {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.596Z" 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 {{%link href="/en/cloud-scale/help/file-store/introduction"%}}File Store{{%/link%}} using the {{%badge%}}**getFolderInstance()**{{%/badge%}} 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 {{%badge%}}getFolderInstance(){{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;FILE_STORE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/file-store/create-file-store-instance/"%}}File Store Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;FILE_STORE_INSTANCE&gt;.getFolderInstance( id: Long ): ZCatalystFolder {{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The unique {{%link href="/en/cloud-scale/help/file-store/implementation/#create-a-folder"%}}Folder ID{{%/link%}} of the folder that the instance object must be returned for A sample code snippet is shown below: {{%code class="language-bash"%}}ZCatalystApp.getInstance().getFileStoreInstance().getFolderInstance(2823000000006561) //Replace this with your Folder ID{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.596Z" 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 {{%link href="/en/cloud-scale/help/file-store/introduction"%}}File Store{{%/link%}}, by passing its unique File ID as an argument to the {{%badge%}}**getFile()**{{%/badge%}} 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 {{%badge%}}&lt;FILE_STORE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/file-store/create-file-store-instance/"%}}File Store Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;FOLDER_INSTANCE&gt;.getFile( id: Long, success: (ZCatalystFile) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystFile&gt;&gt;? {{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The unique {{%link href="/en/cloud-scale/help/file-store/implementation/#upload-a-file-into-a-folder"%}}File ID{{%/link%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") }) {{%/code%}} ### Get the Metadata of all Files You can retrieve the details of all the files available in a specific folder using the {{%badge%}}**getFiles()**{{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;FOLDER_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/file-store/create-folder-instance"%}}Folder Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;FOLDER_INSTANCE&gt;.getFiles( success: (List&lt;ZCatalystFile&gt;) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystFile&gt;&gt;&gt;? {{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") } ) {{%/code%}} -------------------------------------------------------------------------------- title: "Upload a File" description: "You can upload a file to an existing folder in the File Store." last_updated: "2026-03-18T07:41:08.596Z" 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 {{%link href="/en/cloud-scale/help/file-store/introduction"%}}File Store{{%/link%}}, by calling the {{%badge%}}**uploadFile()**{{%/badge%}} method. After the file is uploaded in the folder, a unique {{%link href="/en/cloud-scale/help/file-store/implementation/#create-a-folder"%}}File ID{{%/link%}} 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 {{%badge%}}&lt;FOLDER_INSTANCE&gt;{{%/badge%}} used in the code sections of all the methods below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/file-store/create-folder-instance"%}}Folder Instance page{{%/link%}}. 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 {{%badge%}}uploadFile(){{%/badge%}} method: {{%code class="language-bash line-numbers"%}}&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;? {{%/code%}} **Parameters**: * {{%badge%}}**uri**{{%/badge%}}: The File URI scheme of the file to be uploaded A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().getFileStoreInstance().getFolderInstance(2823000000006561).uploadFile("/src.example.com/files/productImage.png", { println(" >> File Upload Success -$it") }, { println(" >> File Upload Failed -$it") }) {{%/code%}} ### 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 {{%badge%}}uploadFile(){{%/badge%}} method: {{%code class="language-bash line-numbers"%}}&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;? {{%/code%}} **Parameters**: * {{%badge%}}**filepath**{{%/badge%}}: The file path of the file to be uploaded A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().getFileStoreInstance().getFolderInstance(2823000000006561).uploadFile("/Desktop/HelplineCard.jpg", { println(" &gt;&gt; File Upload Success -$it") }, { println(" &gt;&gt; File Upload Failed -$it") }) {{%/code%}} ### 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 {{%badge%}}uploadFile(){{%/badge%}} method: {{%code class="language-bash line-numbers"%}}&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;? {{%/code%}} **Parameters**: * {{%badge%}}**uri**{{%/badge%}}: The File URI scheme of the file to be uploaded * {{%badge%}}**fileName**{{%/badge%}}: The name of the file to be uploaded A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") }) {{%/code%}} ### 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 {{%badge%}}uploadFile(){{%/badge%}} method: {{%code class="language-bash line-numbers"%}}&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;? {{%/code%}} **Parameters**: * {{%badge%}}**filepath**{{%/badge%}}: The file path of the file to be uploaded * {{%badge%}}**fileName**{{%/badge%}}: The name of the file to be uploaded A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().getFileStoreInstance().getFolderInstance(2823000000006561).uploadFile("/Desktop", "HelplineCard.jpg", { println(" &gt;&gt; File Upload Success -$it") }, { println(" &gt;&gt; File Upload Failed -$it") }) {{%/code%}} ### 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 {{%badge%}}uploadFile(){{%/badge%}} method: {{%code class="language-bash line-numbers"%}}&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;? {{%/code%}} **Parameters**: * {{%badge%}}**stream**{{%/badge%}}: The inputStream of the file * {{%badge%}}**fileName**{{%/badge%}}: The name of the file to be uploaded A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") }) {{%/code%}} -------------------------------------------------------------------------------- title: "Download a File" description: "You can download a file from an existing folder in the File Store." last_updated: "2026-03-18T07:41:08.597Z" 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 {{%link href="/en/cloud-scale/help/file-store/introduction/"%}}File Store{{%/link%}} by calling the {{%badge%}}**download()**{{%/badge%}} method. The operation will return a temporary URL where the file is stored. The {{%badge%}}&lt;FILE_INSTANCE&gt;{{%/badge%}} 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 {{%link href="/en/cloud-scale/help/file-store/implementation/"%}}File ID{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;FILE_INSTANCE&gt;.download( success: (InputStream) → Unit, failure: ((ZCatalystException) → Unit)?, progress: ((Long, Long, Double) → Unit)? ): ZCatalystRequest&lt;ResponseBody&gt;? {{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") } ) }) {{%/code%}} -------------------------------------------------------------------------------- title: "Delete a File" description: "You can delete an existing file from a folder in the File Store." last_updated: "2026-03-18T07:41:08.597Z" 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 {{%link href="/en/cloud-scale/help/file-store/introduction"%}}File Store{{%/link%}} by calling the {{%badge%}}**delete()**{{%/badge%}} method and referring to the file with the file instance. This will delete the file permanently. The {{%badge%}}&lt;FILE_INSTANCE&gt;{{%/badge%}} 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 {{%link href="/en/cloud-scale/help/file-store/implementation/"%}}File ID{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;FILE_INSTANCE&gt;.delete( success: () → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;Unit&gt;? {{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") }) {{%/code%}} ##### 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-03-18T07:41:08.597Z" 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 {{%link href="/en/cloud-scale/help/push-notifications/introduction" %}}Catalyst Push notifications{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} The {{%bold%}}first three steps{{%/bold%}} are covered in detail in the {{%link href="/en/cloud-scale/help/push-notifications/android" %}}Push Notifications- Android help section{{%/link%}}. 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.{{%/note%}} <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 {{%badge%}}registerNotification(){{%/badge%}} method with the required parameters as shown in the following code snippet: {{%code class="language-bash line-numbers"%}}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"); }) {{%/code%}} **Parameters:** * {{%badge%}}device_token{{%/badge%}}: The device token obtained from {{%link href="/en/cloud-scale/help/push-notifications/android/#configure-and-enroll-for-android-push-notifications" %}}FCM for your app{{%/link%}}. * {{%badge%}}bundleID{{%/badge%}}: The Android app's bundle ID that you configured while {{%link href="/en/sdk/android/v2/setup/" %}}registering the app with Catalyst{{%/link%}} as well as in Firebase. * {{%badge%}}appID{{%/badge%}}: The app ID generated by Catalyst for your app in Push Notifications. You can find this in the {{%italics%}}Android{{%/italics%}} section of Push Notifications in your Catalyst console. * {{%badge%}}test_device_boolean{{%/badge%}}: The value is set to {{%badge%}}true{{%/badge%}} for test devices, and set to {{%badge%}}false{{%/badge%}} for production devices. <br> {{%note%}}{{%bold%}}Note:{{%/bold%}} You can register a maximum of 10 Android devices as test devices to test Android push notifications. {{%/note%}} 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 {{%link href="/en/cloud-scale/help/push-notifications/android/#test-android-push-notifications" %}}this help section{{%/link%}}. You can also send test notifications from the {{%link href="/en/api/code-reference/cloud-scale/push-notifications/android/send-android-push-notifications/#SendAndroidPushNotifications" %}}API{{%/link%}}. Refer to the {{%link href="/en/sdk/java/v1/cloud-scale/push-notifications/send-notifications/"%}}Java{{%/link%}}, {{%link href="/en/sdk/nodejs/v2/cloud-scale/push-notifications/send-notifications/"%}}Node.js{{%/link%}}, and {{%link href="/en/sdk/python/v1/cloud-scale/push-notifications/send-notifications/"%}}Python{{%/link%}} 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-03-18T07:41:08.597Z" 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 {{%badge%}}deregisterNotification(){{%/badge%}} method as shown below. {{%code class="language-bash line-numbers"%}}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"); }) {{%/code%}} **Parameters:** * {{%badge%}}device_token{{%/badge%}}: The device token obtained from {{%link href="/en/cloud-scale/help/push-notifications/android/#configure-and-enroll-for-android-push-notifications" %}}FCM for your app{{%/link%}}. * {{%badge%}}bundleID{{%/badge%}}: The Android app's bundle ID that you configured while {{%link href="/en/sdk/android/v2/setup/" %}}registering the app with Catalyst{{%/link%}} as well as in Firebase. * {{%badge%}}appID{{%/badge%}}: The app ID generated by Catalyst for your app in Push Notifications. You can find this in the {{%italics%}}Android{{%/italics%}} section of Push Notifications in your Catalyst console. * {{%badge%}}test_device_boolean{{%/badge%}}: The value is set to {{%badge%}}true{{%/badge%}} for test devices, and set to {{%badge%}}false{{%/badge%}} 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-03-18T07:41:08.598Z" 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 {{%link href="/en/cloud-scale/help/search-integration/introduction"%}}Catalyst Search{{%/link%}} enables data searching in the indexed columns of the tables in the {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}. It allows you to perform powerful searches through volumes of data with a single search query. {{%note%}}{{%bold%}}Note:{{%/bold%}} The columns you search for data must be indexed. You can enable search indexing for a column while {{%link href="/en/cloud-scale/help/data-store/columns/#create-a-new-column"%}}creating it{{%/link%}} or by {{%link href="/en/cloud-scale/help/data-store/columns/#edit-a-column"%}}editing it{{%/link%}} later.{{%/note%}} ### 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 {{%badge%}}**search()**{{%/badge%}} method along with the keywords to be searched through an instance of the class {{%badge%}}ZCatalystSearchOptions{{%/badge%}}. You must construct the search pattern to pass to the {{%badge%}}search(){{%/badge%}} method before you execute a search operation, as shown in the code syntax below. {{%code class="language-bash line-numbers"%}}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;? {{%/code%}} **Parameters**: * {{%badge%}}**searchOptions**{{%/badge%}}: The instance of the {{%badge%}}**ZCatalystSearchOptions**{{%/badge%}} class to be passed to the {{%badge%}}search(){{%/badge%}} method You can create the instance for {{%badge%}}searchOptions(){{%/badge%}} in the following way: {{%code class="language-bash line-numbers"%}}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 {{%/code%}} A sample code snippet of a search execution is shown below: {{%code class="language-bash line-numbers"%}}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") }) {{%/code%}} ##### Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page provides an overview of the mobile SDK methods required to perform Stratus operations." last_updated: "2026-03-18T07:41:08.599Z" 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 {{%link href="/en/cloud-scale/help/stratus/introduction" %}}Stratus{{%/link%}} is Catalyst's robust and powerful storage solution. You can store data of any format in the form of {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}Objects{{%/link%}} in containers called {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}}. Each Bucket and every individual object in the bucket has a secure {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} and {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/#bucket-url" %}}Bucket URL{{%/link%}}. You can perform upload and download operations on objects and even provide {{%link href="/en/cloud-scale/help/stratus/stratus-permissions/#custom-permissions" %}}custom permissions{{%/link%}} 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>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/" %}}Create Bucket Instance{{%/link%}}</td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/get-object/" %}}Get Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/get-object/#get-all-objects" %}}Get All Objects{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/download-object/" %}}Download an Object{{%/link%}}</li> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/upload-object/" %}}Upload Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/upload-object/#upload-an-object-using-file-path-and-name" %}}Upload an Object Using File Path and Name{{%/link%}}</li> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/upload-object/#upload-an-object-using-file-path" %}}Upload an Object Using File Path{{%/link%}}</li> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/upload-object/#upload-an-object-using-inputstream-and-file-name" %}}Upload an Object Using InputStream and File Name{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/delete-object/" %}}Delete Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/delete-object/#delete-a-single-object" %}}Delete a Single Object{{%/link%}}</li> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/delete-object/#delete-multiple-objects" %}}Delete Multiple Objects{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/delete-path/" %}}Delete Path{{%/link%}}</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-03-18T07:41:08.599Z" 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 {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}} in Stratus. {{%code class="language-bash"%}}var bucket = ZCatalystStratus.getBucketInstance("{bucket_name}"){{%/code%}} -------------------------------------------------------------------------------- title: "Get Object" description: "This page lists the Android SDK method to get an object or objects from the bucket." last_updated: "2026-03-18T07:41:08.600Z" 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 {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for the bucket: * If you do not pass the {{%badge%}}versionId{{%/badge%}}, then only the **latest object** will be returned. * To retrieve a specific version, use the {{%badge%}}versionId{{%/badge%}} 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>{{%badge%}}name{{%/badge%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the object name.</td> </tr> <tr> <td>{{%badge%}}versionId{{%/badge%}}</td> <td>An {{%bold%}}optional{{%/bold%}} parameter. Will hold the unique version ID of the required object's version.</td> </tr> </tbody> </table> {{%code class="language-bash"%}}bucketInstance.getObject("{object_name}", "{version_id}", { object -> println("The name of the object is : ${object.name}") }, { exception -> println("Get object failed! $exception") } ){{%/code%}} ### 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>{{%badge%}}prefix{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. This will get the objects that match the prefix value.</td> </tr> <tr> <td>{{%badge%}}max_keys{{%/badge%}}</td> <td>{{%bold%}}Number{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. Will contain the maximum limit of objects that can be listed by pagination.</td> </tr> <tr> <td>{{%badge%}}continuation_token{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If the response was truncated, the value of this key must be passed as {{%badge%}}continuation_token{{%/badge%}} to the same method for retrieving the next set of objects.</td> </tr> </tbody> </table> {{%code class="language-bash"%}}bucketInstance.getObjects({max_keys}, {continuation_token}, {prefix}, { objects -> for (obj in objects){ println("Object name: ${obj.name}") } }, { exception -> println("Get objects failed! $exception") } ){{%/code%}} -------------------------------------------------------------------------------- title: "Download Object" description: "This page lists the Android SDK methods to download an object to the bucket." last_updated: "2026-03-18T07:41:08.600Z" 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>{{%badge%}}versionId{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}optional{{%/bold%}} parameter. Will hold the unique version ID of the required object's version.</td> </tr> <tr> <td>{{%badge%}}fromCache{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To be used to specify whether this file has to be retrieved from the cache or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> </tbody> </table> {{%code class="language-bash"%}}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") } ) }{{%/code%}} -------------------------------------------------------------------------------- title: "Upload Object" description: "This page lists the Android SDK methods to upload an object to the bucket." last_updated: "2026-03-18T07:41:08.600Z" 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 {{%link href="/en/cloud-scale/help/stratus/objects/upload-object/" %}}upload objects{{%/link%}} to the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}bucket{{%/link%}} If you do not have {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} 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 {{%badge%}}versionId{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ### 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 {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}. **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>{{%badge%}}filePath{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the complete path of the location from where the file needs to be uploaded from.</td> </tr> <tr> <td>{{%badge%}}fileName{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}mandatory{{%/bold%}} parameter. Will hold the complete name of the object.</li> <li>{{%bold%}}Default Value{{%/bold%}}: Will hold the value of the last path value that was used.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}shouldCompress{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}progress{{%/badge%}}</td> <td>{{%bold%}}Function{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. This is a callback function while uploading a file.</li> </ul> </td> </tr> </tbody> </table> {{%code class="language-bash"%}}bucketIntance.uploadObject("/Desktop", "Helplinecard.jpeg", true, { println(" >> Object Upload Success -$it") }, { println(" >> Object Upload Failed -$it") }, progress = { bytesWritten, contentLength, percentage -> println("Percentage: $percentage") } ){{%/code%}} ### Upload an Object Using File Path This SDK can be used to upload an object to the bucket using its complete {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}. **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>{{%badge%}}filePath{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the complete path of the location from where the file needs to be uploaded from.</td> </tr> <tr> <td>{{%badge%}}shouldCompress{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}progress{{%/badge%}}</td> <td>{{%bold%}}Function{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. This is a callback function while uploading a file.</li> </ul> </td> </tr> </tbody> </table> {{%code class="language-bash"%}}bucketIntance.uploadObject("/Desktop", "Helplinecard.jpeg", true, { println(" >> Object Upload Success -$it") }, { println(" >> Object Upload Failed -$it") }, progress = { bytesWritten, contentLength, percentage -> println("Percentage: $percentage") } ){{%/code%}} ### 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>{{%badge%}}stream{{%/badge%}}</td> <td>{{%bold%}}InputStream{{%/bold%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the input stream of the object that needs to be uploaded.</td> </tr> <tr> <td>{{%badge%}}fileName{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}mandatory{{%/bold%}} parameter. Will hold the complete name of the object.</li> <li>{{%bold%}}Default Value{{%/bold%}}: Will hold the value of the last path value that was used.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}shouldCompress{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}progress{{%/badge%}}</td> <td>{{%bold%}}Function{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. This is a callback function while uploading a file.</li> </ul> </td> </tr> </tbody> </table> {{%code class="language-bash"%}}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") } ){{%/code%}} -------------------------------------------------------------------------------- title: "Delete Object" description: "This page lists the Android SDK methods to delete an object or objects from the bucket." last_updated: "2026-03-18T07:41:08.600Z" 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. {{%code class="language-bash"%}}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") } ){{%/code%}} ### 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>{{%badge%}}objects{{%/badge%}}</td> <td>{{%bold%}}ArrayList&lt;ZCatalystObject&gt;{{%/bold%}}</td> <td>An array containing the list of objects (and version IDs, if {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for the bucket) that needs to be deleted.</td> </tr> </tbody> </table> {{%code class="language-bash"%}}bucketInstance.getObjects( success = { objects, resInfo -> bucketInstance.deleteObjects(objects, { println("DELETE BULK OBJECTS : SUCCESS"), }, { println("Delete Objects Failed: $it") } ){{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.601Z" 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 {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}. **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>{{%badge%}}path{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the complete path of where the file should be uploaded.</td> </tr> </tbody> </table> {{%code class="language-bash"%}}bucketInstance.deletePath("myFolder/", { println("Objects deleted successfully.") }, { println("Failed to delete the objects - $it") } ){{%/code%}} ##### 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-03-18T07:41:08.601Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}. 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 {{%badge%}}**execute()**{{%/badge%}} method. You can learn about the ZCQL syntax from the {{%link href="/en/cloud-scale/help/zcql/introduction"%}}ZCQL help page{{%/link%}}. You must pass an instance of {{%badge%}}**ZCatalystSelectQuery**{{%/badge%}} to the {{%badge%}}execute(){{%/badge%}} method, as shown in the code syntax of a ZCQL query execution below. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used here is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-data-store-instance"%}}Data Store Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}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;? {{%/code%}} **Parameters**: * {{%badge%}}**selectQuery**{{%/badge%}}: The instance of the type {{%badge%}}ZCatalystSelectQuery{{%/badge%}} to be passed You can create a {{%badge%}}selectQuery{{%/badge%}} instance for {{%badge%}}ZCatalystSelectQuery{{%/badge%}} for the statements supported by ZCQL, in the following way: {{%code class="language-bash line-numbers"%}}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 {{%/code%}} A sample code snippet of a ZCQL query execution is shown below: {{%code class="language-bash line-numbers"%}}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") }) {{%/code%}} #### General -------------------------------------------------------------------------------- title: "Get Current Time Zone" description: "This enables you to fetch the current time zone active for your project." last_updated: "2026-03-18T07:41:08.603Z" 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 {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/#change-the-time-zone-of-the-project"%}}time zone{{%/link%}} 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 {{%badge%}}getCurrentTimeZone(){{%/badge%}} method in the {{%badge%}}ZCatalystUtil{{%/badge%}} class as shown in the syntax below. {{%code class="language-bash line-numbers"%}}fun getCurrentTimeZone( success: (String) -> Unit, failure: ((ZCatalystException) -> Unit)? = null): ZCatalystRequest&lt;ZCatalystResponse&lt;JsonObject&gt;&gt;? {{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystUtil.getCurrentTimeZone({ timeZone -> println("Current time zone + $timeZone") }, { println("Failed to get current time zone.") }){{%/code%}} #### 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-03-18T07:41:08.603Z" 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 {{%link href="/en/serverless/help/functions/introduction"%}}Catalyst Serverless Functions{{%/link%}} 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%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: 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. {{%/note%}} ### Create a Function Instance You can create an instance of a Catalyst function using the {{%badge%}}**getFunctionInstance()**{{%/badge%}} 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 {{%badge%}}getFunctionInstance(){{%/badge%}} method and create an instance for it: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().getFunctionInstance( id: Long ): ZCatalystFunction {{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The unique {{%link href="/en/serverless/help/functions/introduction"%}}Function ID{{%/link%}} of the function A sample code snippet is shown below: {{%code class="language-bash"%}}ZCatalystApp.getInstance().getFunctionInstance(2823000000011091) //Replace this with your Function ID{{%/code%}} ### 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 {{%badge%}}getFunctionInstance(){{%/badge%}} method and create an instance for it: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().getFunctionInstance( apiName: String ): ZCatalystFunction {{%/code%}} **Parameters**: * {{%badge%}}**apiName**{{%/badge%}}: The name of the function configured in Catalyst A sample code snippet is shown below: {{%code class="language-bash"%}}ZCatalystApp.getInstance().getFunctionInstance("LocalBackup") //Replace this with your function name{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.603Z" 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 {{%link href="/en/serverless/help/functions/introduction"%}}Catalyst Basic I/O function{{%/link%}} 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 {{%badge%}}&lt;FUNCTION_INSTANCE&gt;{{%/badge%}} used in all the code sections below is the instance defined in the {{%link href="/en/sdk/android/v2/serverless/functions/create-function-instance"%}}Function Instance page{{%/link%}}. ### Execute a GET function You can execute a function of the HTTP GET type by passing the parameters to the {{%badge%}}**executeGet()**{{%/badge%}} method as a Hash map: {{%code class="language-bash line-numbers"%}}&lt;FUNCTION_INSTANCE&gt;.executeGet( params: HashMap&lt;String, Any&gt;, success: (String) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;String&gt;? {{%/code%}} **Parameters**: * {{%badge%}}**params**{{%/badge%}}: The parameters to be passed to the function as a Hash map A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") } ) {{%/code%}} <br> ### Execute a PUT function You can execute a function of the HTTP PUT type by passing the parameters to the {{%badge%}}**executePut()**{{%/badge%}} method as a Hash map. You can pass the payload in the PUT request to this method as a Hash map argument as well: {{%code class="language-bash line-numbers"%}}&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;? {{%/code%}} **Parameters**: * {{%badge%}}**params**{{%/badge%}}: The parameters to be passed to the function as a Hash map * {{%badge%}}**body**{{%/badge%}}: The data payload to be passed as a Hash map A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") } ) {{%/code%}} <br> ### Execute a POST function You can execute a function of the HTTP POST type by passing the parameters to the {{%badge%}}**executePOST()**{{%/badge%}} method as a Hash map. You can pass the payload in the POST request to this method as a Hash map argument as well: {{%code class="language-bash line-numbers"%}}&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;? {{%/code%}} **Parameters**: * {{%badge%}}**params**{{%/badge%}}: The parameters to be passed to the function as a Hash map * {{%badge%}}**body**{{%/badge%}}: The data payload to be passed as a Hash map A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") } ) {{%/code%}} <br> ### Execute a DELETE function You can execute a function of the HTTP DELETE type by passing the parameters to the {{%badge%}}**executeDelete()**{{%/badge%}} method as a Hash map. You can pass the payload in the DELETE request to this method as a Hash map argument as well: {{%code class="language-bash line-numbers"%}}&lt;FUNCTION_INSTANCE&gt;.executeDelete( params: HashMap&lt;String, Any&gt;, success: (String) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;String&gt;? {{%/code%}} **Parameters**: * {{%badge%}}**params**{{%/badge%}}: The parameters to be passed to the function as a Hash map A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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") } ) {{%/code%}} ## 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-03-18T07:41:08.604Z" 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 {{%link href="https://flutter.dev/"%}}Flutter{{%/link%}} is an open-source framework by Google built on the {{%link href="https://dart.dev/"%}}Dart{{%/link%}} 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 {{%link href="https://flutter.dev/multi-platform/mobile"%}}mobile development targets{{%/link%}} 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 {{%link href="/en/sdk/android/v2/overview/"%}}Android SDK{{%/link%}} and {{%link href="/en/sdk/ios/v2/overview/"%}}iOS SDK{{%/link%}}. Flutter SDK primarily contains tools for {{%link href="/en/cloud-scale/"%}}Catalyst Cloud Scale{{%/link%}} and {{%link href="/en/serverless/"%}}Catalyst Serverless{{%/link%}} 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 {{%link href="https://docs.flutter.dev/get-started/flutter-for/android-devs"%}}Flutter's official guide for Android{{%/link%}} and {{%link href="https://docs.flutter.dev/get-started/flutter-for/swiftui-devs"%}}official guide for iOS{{%/link%}} 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 {{%link href="https://docs.flutter.dev/deployment/android"%}}deploying Android{{%/link%}} and {{%link href="https://docs.flutter.dev/deployment/ios"%}}deploying iOS{{%/link%}} apps. {{%note%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: You can host and distribute the app using {{%link href="/en/cloud-scale/help/mobile-device-management/introduction/"%}}Mobile Device Management.{{%/link%}} It also enables you to manage the app's versioning and end-users easily from the Catalyst console. You can also configure {{%link href="/en/cloud-scale/help/push-notifications/introduction/"%}}Push Notifications{{%/link%}} 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. {{%/note%}} -------------------------------------------------------------------------------- title: "Class Hierarchy" description: "Class Hierarchy denotes the hierarchy of the classes in the Catalyst Flutter SDK." last_updated: "2026-03-18T07:41:08.604Z" 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:** {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/#change-the-time-zone-of-the-project"%}}Timezone{{%/link%}} * **Serverless:** {{%link href="/en/serverless/help/functions/introduction"%}}Functions{{%/link%}} * **Cloud Scale:** {{%link href="/en/cloud-scale/help/authentication/introduction"%}}Authentication{{%/link%}}, {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}, {{%link href="/en/cloud-scale/help/file-store/introduction"%}}File Store{{%/link%}}, {{%link href="/en/cloud-scale/help/search-integration/introduction"%}}Search{{%/link%}}, {{%link href="/en/cloud-scale/help/zcql/introduction"%}}ZCQL{{%/link%}} The hierarchy of the Catalyst Flutter SDK component classes is depicted in the architecture diagram below. The {{%badge%}}**ZCatalystApp**{{%/badge%}} 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 {{%badge%}}ZCatalystApp{{%/badge%}} 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 {{%badge%}}**getInstance()**{{%/badge%}} 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 {{%badge%}}getInstance(){{%/badge%}} 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-03-18T07:41:08.605Z" 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 {{%badge%}}{{%bold%}}ZCatalystException{{%/bold%}}{{%/badge%}}, defined in the Android SDK package. If an exception occurs in your mobile app, the following Dart properties of the exception are returned: * {{%bold%}}{{%badge%}}code{{%/badge%}}:{{%/bold%}} Unique identifier of the error * {{%bold%}}{{%badge%}}errorMsg{{%/badge%}}:{{%/bold%}} General description about the error * {{%bold%}}{{%badge%}}errorDetails{{%/badge%}}:{{%/bold%}} Additional information about the error * {{%bold%}}{{%badge%}}originalException{{%/badge%}}:{{%/bold%}} 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: * {{%badge%}}**code**{{%/badge%}}: Unique identifier of the error * {{%badge%}}**message**{{%/badge%}}: General description about the error * {{%badge%}}**details**{{%/badge%}}: 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-03-18T07:41:08.605Z" 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 {{%link href="/en/getting-started/catalyst-projects/"%}}create a Catalyst project{{%/link%}} in the Catalyst console to host your mobile app in. {{%note%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: 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 {{%link href="/en/sdk/android/v2/overview/"%}}Android{{%/link%}} or {{%link href="/en/sdk/ios/v2/overview/"%}}iOS{{%/link%}} SDKs, or with the Flutter SDK. {{%/note%}} <br> 2. **Install IDE:** Depending on the development target you choose, you must install a {{%link href="https://docs.flutter.dev/get-started/editor?tab=vscode"%}}supporting IDE or editor{{%/link%}}. You must install an IDE and its version that supports working with Flutter SDK, extensions, and plugins. The supported choices are: {{%link href="https://developer.android.com/studio"%}}Android Studio{{%/link%}}, {{%link href="https://www.jetbrains.com/idea/"%}}IntelliJ IDEA{{%/link%}}, and {{%link href="https://code.visualstudio.com/"%}}Visual Studio Code{{%/link%}}. {{%note%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: 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 {{%link href="https://developer.apple.com/xcode/"%}}Xcode{{%/link%}} to build and deploy the iOS app. {{%/note%}} 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: {{%link href="https://docs.flutter.dev/get-started/install/windows"%}}Windows{{%/link%}}, {{%link href="https://docs.flutter.dev/get-started/install/macos"%}}macOS{{%/link%}}, {{%link href="https://docs.flutter.dev/get-started/install/linux"%}}Linux{{%/link%}}, {{%link href="https://docs.flutter.dev/get-started/install/chromeos"%}}ChromeOS{{%/link%}}. -------------------------------------------------------------------------------- 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-03-18T07:41:08.605Z" 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: * {{%link href="https://docs.flutter.dev/get-started/test-drive?tab=androidstudio"%}}Create a Flutter project in Android Studio or any supported IDE{{%/link%}} * 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 {{%italics%}}Project Settings{{%/italics%}} 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%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: 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.{{%/note%}} 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 {{%link href="/en/deployment-and-billing/environments/introduction"%}}Environments help page{{%/link%}}. 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: {{%badge%}}**app_configuration_development.properties**{{%/badge%}} * Production: {{%badge%}}**app_configuration_production.properties**{{%/badge%}} 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 {{%link href="/en/deployment-and-billing/environments/initial-deployment"%}}deploy your project to production{{%/link%}} first and then {{%link href="/en/getting-started/set-up-a-catalyst-project/developer-tools"%}}download the file{{%/link%}} from the {{%italics%}}Developer Tools{{%/italics%}} settings section. The configuration file must be added to the {{%badge%}}**assets**{{%/badge%}} directory of your Android app module. Typically, the {{%badge%}}assets{{%/badge%}} folder is created in the {{%badge%}}app/src/main{{%/badge%}} directory. Refer to the {{%link href="https://developer.android.com/studio/projects"%}}official Android documentation{{%/link%}} 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%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: You can refer to the links specified in the table, to know where you can obtain these values from.{{%/note%}} <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>{{%badge%}}**clientID**{{%/badge%}}</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>{{%badge%}}**clientSecret**{{%/badge%}}</td> <td>String</td> <td>Secret value generated for a specific {{%badge%}}clientID{{%/badge%}}, which is passed along with the API hits. This is received in the configuration file.</td> </tr> <tr> <td>{{%badge%}}**portalID**{{%/badge%}}</td> <td>String</td> <td>Unique identifier received in the configuration file</td> </tr> <tr> <td>{{%badge%}}**redirectUrl**{{%/badge%}}</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>{{%badge%}}**projectID**{{%/badge%}}</td> <td>Long</td> <td>The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/" %}}unique ID{{%/link%}} of your Catalyst Project</td> </tr> <tr> <td>{{%badge%}}**apiBaseURL**{{%/badge%}}</td> <td>String</td> <td>The URL of the Catalyst server through which the internal API is called. You must use the appropriate URL ({{%link href="/en/deployment-and-billing/environments/development-environment/#function-url-and-web-app-url-in-the-development-environment"%}}development URL{{%/link%}} or {{%link href="/en/deployment-and-billing/environments/production-environment/#function-url-and-web-app-url-in-the-production-environment"%}}production URL{{%/link%}}), based on the environment you are working in.</td> </tr> <tr> <td>{{%badge%}}**oauthScopes**{{%/badge%}}</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 {{%link href="/en/api/oauth2/scopes/#Scopes" %}}here{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}**requestHeaders**{{%/badge%}}</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: {{%badge%}}requestHeaders={{%/badge%}}{{%italics%}}key1:value1, key2:value2{{%/italics%}}</td> </tr> <tr> <td>{{%badge%}}**serverTLD**{{%/badge%}}</td> <td>String</td> <td>The top level domain of the data server<br /> Acceptable values: {{%badge%}}**AU**{{%/badge%}}, {{%badge%}}**CN**{{%/badge%}}, {{%badge%}}**COM**{{%/badge%}}, {{%badge%}}**EU**{{%/badge%}} and {{%badge%}}**IN**{{%/badge%}}</td> </tr> <tr> <td>{{%badge%}}**printStackTrace**{{%/badge%}}</td> <td>Boolean</td> <td>Enables you to obtain a detailed trace of the logs, if the {{%badge%}}**printStackTrace**{{%/badge%}} value is set as '{{%bold%}}true{{%/bold%}}'. The default value is '{{%bold%}}false{{%/bold%}}'.</td> </tr> <tr> <td>{{%badge%}}**minLogLevel**{{%/badge%}}</td> <td>String</td> <td>Enables you to set the logging preferences for the app<br /> Acceptable values: {{%badge%}}**warnings**{{%/badge%}}, {{%badge%}}**errors**{{%/badge%}}, {{%badge%}}**information**{{%/badge%}}, {{%badge%}}**debug**{{%/badge%}}, {{%badge%}}**ALL**{{%/badge%}}</td> </tr> <tr> <td>{{%badge%}}**httpRequestMode**{{%/badge%}}</td> <td>String</td> <td>Defines whether the HTTP requests are synchronous or asynchronous<br /> Acceptable values: {{%badge%}}**SYNC**{{%/badge%}}, {{%badge%}}**ASYNC**{{%/badge%}}<br /> Default value: {{%badge%}}ASYNC{{%/badge%}}</td> </tr> <tr> <td>{{%badge%}}**connectTimeOut<br>InSec**{{%/badge%}}</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>{{%badge%}}**readTimeOutInSec**{{%/badge%}}</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>{{%badge%}}**writeTimeOutInSec**{{%/badge%}}</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>{{%badge%}}**JWTClientID**{{%/badge%}}</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>{{%badge%}}**JWTClientSecret**{{%/badge%}}</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%}}{{%bold%}}Note{{%/bold%}}:<br /> * If the values of the {{%badge%}}**clientID**{{%/badge%}}, {{%badge%}}**clientSecret**{{%/badge%}}, {{%badge%}}**projectID**{{%/badge%}}, or {{%badge%}}**portalID**{{%/badge%}} 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 {{%link href="/en/getting-started/set-up-a-catalyst-project/developer-tools/#create-a-mobile-sdk-package" %}}create a new package{{%/link%}} for the required project from the Developer Tools section and download a new configuration file for the appropriate environment, and add it to the {{%badge%}}assets{{%/badge%}} 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 {{%badge%}}**ZCatalystApp.configs**{{%/badge%}} object.{{%/note%}} <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 {{%badge%}}strings.xml{{%/badge%}} file of your Android app: {{%code class="language-bash line-numbers"%}}&lt;string name="url_scheme"&gt;{redirection_url}&lt;/string&gt; {{%/code%}} The {{%badge%}}strings.xml{{%/badge%}} file is automatically created when you create the Android project. You can find it by navigating to {{%badge%}}app/src/main/res/values{{%/badge%}} 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 {{%link href="/en/sdk/android/v2/setup/#step-1-register-your-android-app-with-catalyst"%}}creating the package{{%/link%}} for your app in Catalyst, in place of {{%badge%}}redirection_url{{%/badge%}} 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: * {{%badge%}}**INTERNET**{{%/badge%}}: To execute Catalyst APIs * {{%badge%}}**ACCESS_NETWORK_STATE**{{%/badge%}}: To handle network failures To enable these permissions, you must declare them in the {{%badge%}}**AndroidManifest.xml**{{%/badge%}} file, as shown below: {{%code class="language-bash line-numbers"%}}&lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/&gt; &lt;uses-permission android:name="android.permission.INTERNET"/&gt; {{%/code%}} You can find the the {{%badge%}}AndroidManifest.xml{{%/badge%}} file by navigating to {{%badge%}}app/src/main{{%/badge%}} 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 {{%link href="/en/sdk/flutter/v2/implement-flutter-sdk/" %}}implementing Catalyst Flutter SDK in your app{{%/link%}}. -------------------------------------------------------------------------------- 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-03-18T07:41:08.605Z" 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: * {{%link href="https://docs.flutter.dev/get-started/test-drive?tab=vscode"%}}Create a Flutter project in any supported IDE or from the terminal{{%/link%}} * Ensure that your iOS project meets these minimum supported environments: * {{%link href="https://guides.cocoapods.org/"%}}CocoaPods{{%/link%}} * 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 {{%italics%}}Project Settings{{%/italics%}} 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%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: 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.{{%/note%}} 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 {{%link href="/en/deployment-and-billing/environments/introduction"%}}Environments help page{{%/link%}}. 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: {{%badge%}}**AppConfigurationDevelopment.plist**{{%/badge%}} * Production: {{%badge%}}**AppConfigurationProduction.plist**{{%/badge%}} 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 {{%link href="/en/deployment-and-billing/environments/initial-deployment"%}}deploy your project to production{{%/link%}} first and then {{%link href="/en/getting-started/set-up-a-catalyst-project/developer-tools"%}}download the file{{%/link%}} from the {{%italics%}}Developer Tools{{%/italics%}} settings section. The configuration file must be added to **Targets** -> **Runner** of your iOS project. Refer to the {{%link href="https://developer.apple.com/documentation/"%}}official iOS documentation{{%/link%}} 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%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: You can refer to the links specified in the table, to know where you can obtain these values from.{{%/note%}} <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>{{%badge%}}**ClientID**{{%/badge%}}</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>{{%badge%}}**ClientSecretID**{{%/badge%}}</td> <td>String</td> <td>Secret value generated for a specific {{%badge%}}clientID{{%/badge%}}, which is passed along with the API hits. This is received in the configuration file.</td> </tr> <tr> <td>{{%badge%}}**PortalID**{{%/badge%}}</td> <td>String</td> <td>Unique identifier received in the configuration file</td> </tr> <tr> <td>{{%badge%}}**RedirectURLScheme**{{%/badge%}}</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>{{%badge%}}**ProjectID**{{%/badge%}}</td> <td>Long</td> <td>The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/" %}}unique ID{{%/link%}} of your Catalyst Project</td> </tr> <tr> <td>{{%badge%}}**APIBaseURL**{{%/badge%}}</td> <td>String</td> <td>The URL of the Catalyst server through which the internal API is called. You must use the appropriate URL ({{%link href="/en/deployment-and-billing/environments/development-environment/#function-url-and-web-app-url-in-the-development-environment"%}}development URL{{%/link%}} or {{%link href="/en/deployment-and-billing/environments/production-environment/#function-url-and-web-app-url-in-the-production-environment"%}}production URL{{%/link%}}), based on the environment you are working in.</td> </tr> <tr> <td>{{%badge%}}**APIVersion**{{%/badge%}}</td> <td>String</td> <td>Version of the API</td> </tr> <tr> <td>{{%badge%}}**OauthScopes**{{%/badge%}}</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 {{%link href="/en/api/oauth2/scopes/#Scopes" %}}here{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}**RequestHeaders**{{%/badge%}}</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: {{%badge%}}requestHeaders={{%/badge%}}{{%italics%}}key1:value1, key2:value2{{%/italics%}}</td> </tr> <tr> <td>{{%badge%}}**ServerTLD**{{%/badge%}}</td> <td>String</td> <td>The top level domain of the data server<br /> Acceptable values: {{%badge%}}**AU**{{%/badge%}}, {{%badge%}}**CN**{{%/badge%}}, {{%badge%}}**COM**{{%/badge%}}, {{%badge%}}**EU**{{%/badge%}} and {{%badge%}}**IN**{{%/badge%}}</td> </tr> <tr> <td>{{%badge%}}**MinLogLevel**{{%/badge%}}</td> <td>String</td> <td>Enables you to set the logging preferences for the app<br /> Acceptable values: {{%badge%}}**warnings**{{%/badge%}}, {{%badge%}}**errors**{{%/badge%}}, {{%badge%}}**information**{{%/badge%}}, {{%badge%}}**debug**{{%/badge%}}, {{%badge%}}**ALL**{{%/badge%}}</td> </tr> <tr> <td>{{%badge%}}**TurnLoggerOn**{{%/badge%}}</td> <td>Boolean</td> <td>Turns the logger on based on the value<br /> Acceptable values: {{%badge%}}**true**{{%/badge%}}, {{%badge%}}**false**{{%/badge%}}</td> </tr> <tr> <td>{{%badge%}}**RequestTimeOut**{{%/badge%}}</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>{{%badge%}}**JWTClientID**{{%/badge%}}</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>{{%badge%}}**JWTClientSecret**{{%/badge%}}</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%}}{{%bold%}}Note{{%/bold%}}:<br /> * If the values of the {{%badge%}}**clientID**{{%/badge%}}, {{%badge%}}**clientSecretID**{{%/badge%}}, {{%badge%}}**projectID**{{%/badge%}}, or {{%badge%}}**portalID**{{%/badge%}} 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 {{%link href="/en/getting-started/set-up-a-catalyst-project/developer-tools/#create-a-mobile-sdk-package"%}}create a new package{{%/link%}} 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 {{%badge%}}**ZCatalystApp.configs**{{%/badge%}} object.{{%/note%}} <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 {{%badge%}}**info.plist**{{%/badge%}} file of your iOS project: {{%note%}}Key - {{%badge%}}**URL Types**{{%/badge%}} -----> {{%badge%}}**URL Schemes**{{%/badge%}}<br /> Type - String<br /> Value - The Redirect URL that you configured while {{%link href="/en/sdk/ios/v2/setup/#register-your-iOS-app-with-catalyst"%}}creating the package{{%/link%}} for your app in Catalyst {{%/note%}} <br> The setup for building a Flutter app with iOS as the primary development target is now ready. You can now proceed to {{%link href="/en/sdk/flutter/v2/implement-flutter-sdk/" %}}implementing Catalyst Flutter SDK in your app{{%/link%}}. -------------------------------------------------------------------------------- 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-03-18T07:41:08.606Z" 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 {{%link href="https://docs.flutter.dev/tools/pubspec" %}}{{%badge%}}pubspec.yaml{{%/badge%}}{{%/link%}} 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 {{%badge%}}pubspec.yaml{{%/badge%}} of your Flutter project: {{%code class="language-bash line-numbers"%}}dependencies: zcatalyst_sdk: ^2.2.1{{%/code%}} To install the Flutter SDK in your project, you will need to execute the following command from your IDE's terminal: {{%code class="language-bash"%}}flutter pub get{{%/code%}} {{%note%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: 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 {{%badge%}}pubspec.yaml{{%/badge%}} indicated by the Download icon. * Android Studio/IntelliJ: Click **Pub get** in the action ribbon at the top of {{%badge%}}pubspec.yaml{{%/badge%}}.{{%/note%}} <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 {{%badge%}}pubspec.yaml{{%/badge%}} file as mentioned above: {{%code class="language-bash"%}}flutter pub add zcatalyst_sdk{{%/code%}} <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 {{%badge%}}lib{{%/badge%}}/{{%badge%}}main.dart{{%/badge%}} file in your Flutter project directory: {{%code class="language-bash line-numbers"%}}import 'package:zcatalyst_sdk/zcatalyst_sdk.dart'; {{%/code%}} ### 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 {{%badge%}}main(){{%/badge%}} function using the {{%badge%}}ZCatalystApp.init(){{%/badge%}} method in any one of the following methods: #### 1. Using the Catalyst Configuration File: The configuration function that you downloaded previously for {{%link href="/en/sdk/flutter/v2/setup-for-android/#step-1-register-your-android-app-with-catalyst" %}}Android{{%/link%}} or {{%link href="/en/sdk/flutter/v2/setup-for-ios/#step-1-register-your-ios-app-with-catalyst" %}}iOS{{%/link%}} will indicate the environment of the app. Similar to including the appropriate configuration file ({{%badge%}}app_configuration_development.properties{{%/badge%}} / {{%badge%}}app_configuration_production.properties{{%/badge%}} for Android and {{%badge%}}AppConfigurationDevelopment.plist{{%/badge%}} / {{%badge%}}AppConfigurationProduction.plist{{%/badge%}} for iOS) based on the {{%link href="/en/deployment-and-billing/environments/introduction"%}}environment{{%/link%}} 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 {{%badge%}}environment{{%/badge%}} of your app as either {{%badge%}}DEVELOPMENT{{%/badge%}} or {{%badge%}}PRODUCTION{{%/badge%}}, and pass it to the {{%badge%}}init(){{%/badge%}} method through the {{%badge%}}ZCatalystApp{{%/badge%}} class as shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.init({ ZCatalystEnvironment? environment, });{{%/code%}} <br> A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}void main() async { try { await ZCatalystApp.init(environment: ZCatalystEnvironment.DEVELOPMENT); } on ZCatalystException catch (ex) { print('Initialized Failed: ${ex.toString()}'); } }{{%/code%}} <br> **Without specifying the environment:** If the {{%badge%}}environment{{%/badge%}} is not specified in the SDK initialization, it would be considered as {{%badge%}}PRODUCTION{{%/badge%}} by default. Therefore, if your app is operating in the Production environment, you can initialize the SDK directly in the following way: {{%code class="language-bash line-numbers"%}}await ZCatalystApp.init();{{%/code%}} <br> A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}void main() async { try { await ZCatalystApp.init(); } on ZCatalystException catch (ex) { print('Initialized Failed: ${ex.toString()}'); } }{{%/code%}} {{%note%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: If you make any changes to the Android or iOS configuration file, you must reinitialize the SDK. {{%/note%}} <br> #### 2. By passing the custom SDK Configuration Object: Alternatively, you can initialize the Flutter SDK by building a custom {{%badge%}}ZCatalystSDKConfigs{{%/badge%}} object that you can pass using the {{%badge%}}ZCatalystSDKConfigsBuilder{{%/badge%}} class. **ZCatalystSDKConfigs Object** The {{%badge%}}ZCatalystSDKConfigsBuilder{{%/badge%}} 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>{{%badge%}}**environment**{{%/badge%}}</td> <td>{{%badge%}}ZCatalystEnvironment{{%/badge%}}</td> <td>The {{%link href="/en/deployment-and-billing/environments/introduction"%}}environment{{%/link%}} under which the app is currently running</td> </tr> <tr> <td>{{%badge%}}**apiBaseURL**{{%/badge%}}</td> <td>String</td> <td>The URL of the Catalyst server through which the internal API is called. You must use the appropriate URL ({{%link href="/en/deployment-and-billing/environments/development-environment/#function-url-and-web-app-url-in-the-development-environment"%}}development URL{{%/link%}} or {{%link href="/en/deployment-and-billing/environments/production-environment/#function-url-and-web-app-url-in-the-production-environment"%}}production URL{{%/link%}}), based on the environment you are working in.</td> </tr> <tr> <td>{{%badge%}}**clientID**{{%/badge%}}</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>{{%badge%}}**clientSecret**{{%/badge%}}</td> <td>String</td> <td>Secret value generated for a specific {{%badge%}}clientID{{%/badge%}}, which is passed along with the API hits. This is received in the configuration file. </td> </tr> <tr> <td>{{%badge%}}**projectID**{{%/badge%}}</td> <td>int</td> <td>The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/" %}}unique ID{{%/link%}} of your Catalyst Project</td> </tr> <tr> <td>{{%badge%}}**redirectURL**{{%/badge%}}</td> <td>String</td> <td>The callback URL of your app that you provided while creating a package for {{%link href="/en/sdk/flutter/v2/setup-for-android/" %}}Android{{%/link%}} or {{%link href="/en/sdk/flutter/v2/setup-for-ios/" %}}iOS{{%/link%}} in the console</td> </tr> <tr> <td>{{%badge%}}**portalID**{{%/badge%}}</td> <td>String</td> <td>Unique identifier received in the configuration file while setting up the Android or iOS app</td> </tr> <tr> <td>{{%badge%}}**oauthScopes**{{%/badge%}}</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 {{%link href="/en/api/oauth2/scopes/#Scopes" %}}here{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}**JWTClientID**{{%/badge%}}</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>{{%badge%}}**JWTClientSecret**{{%/badge%}}</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 {{%badge%}}ZCatalystSDKConfigs{{%/badge%}} object can now be passed using the {{%badge%}}ZCatalystSDKConfigsBuilder{{%/badge%}} class as shown below: {{%code class="language-bash line-numbers"%}}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()}'); } {{%/code%}} 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-03-18T07:41:08.609Z" 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 {{%link href="/en/cloud-scale/help/authentication/introduction"%}}Catalyst Authentication{{%/link%}} 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 {{%badge%}}**newUser()**{{%/badge%}} 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. {{%code class="language-bash line-numbers"%}}ZCatalystUserDelegate newUser({ required String firstName, required String emailId, String? lastName, ZCatalystRole? role, }){{%/code%}} **Parameters**: * {{%badge%}}**lastName**{{%/badge%}} (Mandatory): The last name of the new user. * {{%badge%}}**email**{{%/badge%}} (Mandatory): Email address of the user to which the {{%link href="/en/cloud-scale/help/authentication/user-management/users/implementation/"%}}invitation mail{{%/link%}} will be sent. * {{%badge%}}**lastName**{{%/badge%}}: The last name of the new user. * {{%badge%}}**role**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/authentication/user-management/roles/introduction/"%}}role{{%/link%}} the user must be assigned to. A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystUserDelegate newUser = ZCatalystApp.getInstance().newUser( firstName: 'Patricia', emailId: 'p.boyle@zylker.com', lastname: 'Boyle', role: Admin, );{{%/code%}} -------------------------------------------------------------------------------- title: "User Signup" description: "You can add new users to your Flutter application through signup" last_updated: "2026-03-18T07:41:08.609Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/"%}}user{{%/link%}} to your Catalyst app by calling the {{%badge%}}**signUp()**{{%/badge%}} method. You must pass the {{%link href="/en/sdk/flutter/v2/cloud-scale/authentication/create-user-instance"%}}user instance defined here{{%/link%}} as the argument to the {{%badge%}}signup(){{%/badge%}} method. The code syntax for user signup is given below: {{%code class="language-bash line-numbers"%}}Future<(APIResponse, ZCatalystUser)> signUp(ZCatalystUserDelegate newUser){{%/code%}} **Parameters**: * {{%badge%}}**newUser**{{%/badge%}}: The user instance created {{%link href="/en/sdk/flutter/v2/cloud-scale/authentication/create-user-instance/"%}}before this operation{{%/link%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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()); }{{%/code%}} -------------------------------------------------------------------------------- title: "User Login" description: "You can display the login page to the end user of your Catalyst Flutter app." last_updated: "2026-03-18T07:41:08.609Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/"%}}end user{{%/link%}} of your Catalyst Flutter app using the {{%badge%}}**login()**{{%/badge%}} 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: {{%code class="language-bash line-numbers" scroll="set-scroll" %}}await ZCatalystApp.getInstance().login(){{%/code%}} -------------------------------------------------------------------------------- title: "User Logout" description: "You can log an app user out from the Catalyst Flutter app." last_updated: "2026-03-18T07:41:08.609Z" 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 {{%badge%}}logout(){{%/badge%}} method can log an {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/"%}}app user{{%/link%}} out from the Catalyst Flutter app. A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}await ZCatalystApp.getInstance().logout(){{%/code%}} -------------------------------------------------------------------------------- title: "User Authentication Status" description: "You can find the authentication status of a Flutter app user easily." last_updated: "2026-03-18T07:41:08.609Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/"%}}app user{{%/link%}} using the {{%badge%}}isUserLoggedIn(){{%/badge%}} method. This will return a boolean response as to the user's login status. The code syntax for user logout is given below: {{%code class="language-bash line-numbers"%}}bool isUserLoggedIn = await ZCatalystApp.getInstance().isUserLoggedIn(); //Actions to be executed upon successfully fetching the status{{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}bool isUserLoggedIn = await ZCatalystApp.getInstance().isUserLoggedIn(); print(isUserLoggedIn); //prints "true" or "false"{{%/code%}} -------------------------------------------------------------------------------- title: "Get Current User" description: "You can obtain the details of the current end user of your Flutter application." last_updated: "2026-03-18T07:41:08.609Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/"%}}end user{{%/link%}} of your application by calling the {{%badge%}}getCurrentUser(){{%/badge%}} 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: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().getCurrentUser( void Function() onSuccess, void Function(ZCatalystException) onFailed ){{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}try { var (response, user) = await app.getCurrentUser(); print('User ID: ${user.id}') } on ZCatalystException catch (ex) { print(ex.toString()); }{{%/code%}} -------------------------------------------------------------------------------- title: "Third-Party Authentication" description: "You can implement a third-party authentication service of your preference in your Flutter app." last_updated: "2026-03-18T07:41:08.609Z" 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 {{%link href="/en/cloud-scale/help/authentication/third-party-authentication/introduction/"%}}third-party authentication{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} 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 {{%link href="/en/cloud-scale/help/authentication/third-party-authentication/implementation/"%}}Set Up Third-party Authentication in Catalyst help page{{%/link%}}. 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 {{%link href="/en/sdk/java/v1/cloud-scale/authentication/third-party-server-token/"%}}Java{{%/link%}}, {{%link href="/en/sdk/nodejs/v2/cloud-scale/authentication/third-party-server-token/"%}}Node.js{{%/link%}}, or {{%link href="/en/sdk/python/v1/cloud-scale/authentication/third-party-server-token/"%}}Python{{%/link%}}. This function will generate a Catalyst server-side token {{%badge%}}**jwtToken**{{%/badge%}} or {{%badge%}}**customToken**{{%/badge%}} which will then be passed to client-side (Flutter app). The Catalyst console provides readymade scripts to generate the {{%badge%}}customToken{{%/badge%}}. You can incorporate this script in the server-side function you write, to return the {{%badge%}}customToken{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} To enable a third-party authentication in your Catalyst application, you must ensure that you have enabled {{%link href="/en/cloud-scale/help/authentication/public-signup/"%}}Public Signup{{%/link%}} in the console.{{%/note%}} **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 {{%link href="/en/deployment-and-billing/environments/introduction/"%}}environment{{%/link%}}. That is, if you are developing an Android app, download the {{%link href="/en/sdk/flutter/v2/setup-for-android/#properties-of-the-app_configuration_developmentproperties-app_configuration_productionproperties-file"%}}{{%badge%}}app_configuration_development{{%/badge%}} or the {{%badge%}}app_configuration_production{{%/badge%}} file{{%/link%}}, and if you are developing an iOS app, download the {{%link href="/en/sdk/flutter/v2/setup-for-ios/#properties-of-the-appconfigurationdevelopmentplist-appconfigurationproductionplist-file"%}}{{%badge%}}AppConfigurationDevelopment.plist{{%/badge%}} or {{%badge%}}AppConfigurationProduction.plist{{%/badge%}} file{{%/link%}}. This is because this file will now include two additional properties: {{%badge%}}JWTClientID{{%/badge%}} and {{%badge%}}JWTClientSecret{{%/badge%}}. 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 {{%link href="/en/getting-started/set-up-a-catalyst-project/developer-tools/"%}}**Developer Tools**{{%/link%}} 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 {{%link href="/en/sdk/android/v2/setup/#step-2-import-the-configuration-file-in-your-android-project"%}}here{{%/link%}} for Android and {{%link href="/en/sdk/flutter/v2/setup-for-ios/#step-2-import-the-configuration-file-in-your-ios-project"%}}here{{%/link%}} for iOS. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} <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 {{%link href="/en/sdk/flutter/v2/implement-flutter-sdk/#initialize-the-sdk"%}}initializing the SDK for the first time{{%/link%}}: 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 {{%badge%}}Environment{{%/badge%}} as either {{%badge%}}DEVELOPMENT{{%/badge%}} or {{%badge%}}PRODUCTION{{%/badge%}} based on the environment the app is operating in. The {{%badge%}}isCustomLogin{{%/badge%}} indicates a boolean value that is set for the presence of a third-party authentication. These are passed to the {{%badge%}}init(){{%/badge%}} method through the {{%badge%}}ZCatalystApp{{%/badge%}} class as shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.init({ ZCatalystEnvironment? environment, bool isCustomLogin = false });{{%/code%}} A sample code snippet for this operation is given below: {{%code class="language-bash line-numbers"%}}void main() async { try { await ZCatalystApp.init( environment: ZCatalystEnvironment.DEVELOPMENT, isCustomLogin: true ); } on ZCatalystException catch (ex) { print('Initialized Failed: ${ex.toString()}'); } }{{%/code%}} <br> **Without specifying the environment:** If the {{%badge%}}Environment{{%/badge%}} is not specified in the SDK initialization, it would be considered as {{%badge%}}PRODUCTION{{%/badge%}} by default. Therefore, if your app is operating in the Production environment, you can initialize the SDK directly in the following way: {{%code class="language-bash line-numbers"%}}ZCatalystApp.init({ bool isCustomLogin = false });{{%/code%}} A sample code snippet for this operation is given below: {{%code class="language-bash line-numbers"%}}void main() async { try { await ZCatalystApp.init( isCustomLogin: true ); } on ZCatalystException catch (ex) { print('Initialized Failed: ${ex.toString()}'); } }{{%/code%}} <br> #### 2. By passing the custom SDK Configuration Object: Alternatively, you can re-initialize the Flutter SDK by building a custom {{%badge%}}ZCatalystSDKConfigs{{%/badge%}} object that you can pass using the {{%badge%}}ZCatalystSDKConfigsBuilder{{%/badge%}} class. You can refer {{%link href="/en/sdk/flutter/v2/implement-flutter-sdk/#2-by-passing-the-custom-sdk-configuration-object"%}}here{{%/link%}} for the properties included in this object. This method also lets you re-initialize the SDK by specifying the {{%badge%}}JWTClientID{{%/badge%}} and {{%badge%}}JWTClientSecret{{%/badge%}} properties obtained from the newly-downloaded configuration file through with {{%badge%}}ZCatalystSDKConfigsBuilder{{%/badge%}}. This can be done in the following way: {{%code class="language-bash line-numbers"%}}ZCatalystApp.init({ ZCatalystSDKConfigs? sdkConfigs, ZCatalystEnvironment? environment, bool isCustomLogin = true });{{%/code%}} A sample code snippet is given below: {{%code class="language-bash line-numbers"%}}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: "*****" );{{%/code%}} <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 {{%badge%}}customToken{{%/badge%}} or {{%badge%}}jwtToken{{%/badge%}} 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 {{%badge%}}handleCustomLogin(){{%/badge%}} method as shown below: {{%code class="language-bash line-numbers"%}}Future&lt;void&gt; handleCustomLogin(String jwtToken){{%/code%}} A sample code snippet is given below: {{%code class="language-bash line-numbers"%}}await ZCatalystApp.getInstance().handleCustomLogin("123xxxxxxxx");{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ##### 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-03-18T07:41:08.610Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Catalyst Data Store{{%/link%}} 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 {{%badge%}}**getDataStoreInstance()**{{%/badge%}} method as shown in the code syntax below, to obtain the Data Store instance successfully: {{%code class="language-bash"%}}ZCatalystDataStore dataStore = ZCatalystApp.getInstance().getDataStoreInstance();{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.610Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}, 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 {{%badge%}}**getTableInstance()**{{%/badge%}} method in either of the two ways mentioned below. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used in both the methods is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-data-store-instance"%}}Data Store Instance page{{%/link%}}. ### Create a Table Instance by its ID You can create a table instance by passing the particular table ID as the argument to the {{%badge%}}getTableInstance(){{%/badge%}} method, as shown in the code syntax below: {{%code class="language-bash line-numbers"%}}ZCatalystTable &lt;DATA_STORE_INSTANCE&gt;.getTableInstance(String identifier){{%/code%}} **Parameters**: * {{%badge%}}**identifier**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/data-store/tables"%}}unique table ID{{%/link%}} of the specific table the instance needs to be created for A sample code snippet is shown below: {{%code class="language-bash"%}}var table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("2823000000017011"){{%/code%}} <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 {{%badge%}}**getTableInstance()**{{%/badge%}} method, as shown in the code syntax below: {{%code class="language-bash line-numbers"%}}&lt;DATA_STORE_INSTANCE&gt;.getTableInstance( String identifier ){{%/code%}} **Parameters**: * {{%badge%}}**identifier**{{%/badge%}}: The name of the specific table the instance needs to be created for A sample code snippet is shown below: {{%code class="language-bash"%}}var table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance(identifier: "Products"); {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.610Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table of the given instance by calling the {{%badge%}}**getColumn()**{{%/badge%}} 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 {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in both the methods is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. #### 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 {{%badge%}}getColumn(){{%/badge%}} method in the String format, as shown in the code structure below: {{%code class="language-bash line-numbers"%}}Future<(APIResponse, ZCatalystColumn)> &lt;TABLE_INSTANCE&gt;.getColumn(String identifier){{%/code%}} **Parameters**: * {{%badge%}}**identifier**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/data-store/columns/#column-characteristics"%}}unique Column ID{{%/link%}} of the particular column that needs to be retrieved A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}try { var (response, column) = await app .getDataStoreInstance() .getTableInstance('Projects') .getColumn('1624000000139101'); print(column.id) } on ZCatalystException catch (ex) { print(ex.toString()); }{{%/code%}} #### 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 {{%badge%}}getColumn(){{%/badge%}} method, as shown in the code syntax below: {{%code class="language-bash line-numbers"%}}Future<(APIResponse, ZCatalystColumn)> &lt;TABLE_INSTANCE&gt;.getColumn(String identifier){{%/code%}} **Parameters**: * {{%badge%}}**identifier**{{%/badge%}}: The name of the particular column that needs to be retrieved A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}try { var (response, column) = await app .getDataStoreInstance() .getTableInstance('Projects') .getColumn('Category'); print(column.id); } on ZCatalystException catch (ex) { print(ex.toString()); }{{%/code%}} <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 {{%badge%}}**getColumns()**{{%/badge%}} 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 {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, List&lt;ZCatalystColumn&gt;)> &lt;TABLE_INSTANCE&gt;.getColumns(){{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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()); }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.610Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table of the given instance using the {{%badge%}}**getRow()**{{%/badge%}} 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 {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, ZCatalystRow)> &lt;TABLE_INSTANCE&gt;.getRow(int id){{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/data-store/records/#create-a-new-record"%}}unique ROWID{{%/link%}} of the particular row that needs to be retrieved A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}try { ZCatalystTable table = app.getDataStoreInstance().getTableInstance('Projects'); var (response, row) = await table.getRow(1624000000139040); print(row.id); } on ZCatalystException catch (ex) { print(ex.toString()); }{{%/code%}} <br> ### Get All Rows You can retrieve all the rows of a table of the given instance using the {{%badge%}}**getRows()**{{%/badge%}} 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 {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, List)> &lt;TABLE_INSTANCE&gt;.getRows(){{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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()); }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.611Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table using the {{%badge%}}getColumnValue(){{%/badge%}} 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 {{%badge%}}getColumnValue(){{%/badge%}}method, as shown in the sample code syntax. You must first fetch an instance of the row as shown below. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}dynamic &lt;ROWINSTANCE&gt;.getColumnValue(){{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The The {{%link href="/en/cloud-scale/help/data-store/records/#create-a-new-record"%}}unique ROWID{{%/link%}} of the particular row that needs to be retrieved A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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"); }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.611Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}, 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 {{%badge%}}**newRow()**{{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used here is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. <br /> {{%code class="language-bash"%}}&lt;TABLE_INSTANCE&gt;.newRow(){{%/code%}} <br /> A sample code snippet is shown below: <br /> {{%code class="language-bash"%}}var row = ZCatalystApp.getInstance() .getDataStoreInstance() .getTableInstance(identifier: 'Products') .newRow(); {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.611Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table of the given instance using the {{%badge%}}**newRow()**{{%/badge%}} 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 {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-row-instance"%}}Row Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, ZCatalystRow)> &lt;ROW_INSTANCE&gt;.create(){{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If a column was created with the {{%badge%}}{{%bold%}}is_unique{{%/bold%}}{{%/badge%}} or {{%badge%}}{{%bold%}}is_mandatory{{%/bold%}}{{%/badge%}} 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.{{%/note%}} A sample code snippet with creating a row instance is shown below: {{%code class="language-bash line-numbers"%}}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'); }{{%/code%}} <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 {{%badge%}}**createRows()**{{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, List&lt;ZCatalystRow&gt;)> &lt;TABLE_INSTANCE&gt;.createRows(List&lt;ZCatalystRow&gt; rows){{%/code%}} **Parameters**: * {{%badge%}}**rows**{{%/badge%}}: The array of rows to be created A sample code snippet with creating row instances is shown below: {{%code class="language-bash line-numbers"%}}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:') }{{%/code%}} -------------------------------------------------------------------------------- title: "Update Rows" description: "You can update a single specific row or all rows in a Data Store table." last_updated: "2026-03-18T07:41:08.611Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table using the {{%badge%}}**update()**{{%/badge%}} 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 {{%badge%}}setColumnValue(){{%/badge%}} method. The {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-row-instance"%}}Row Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, ZCatalystRow)> &lt;ROW_INSTANCE&gt;.update(){{%/code%}} A sample code snippet with fetching the row instance is shown below: {{%code class="language-bash line-numbers"%}}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'); }{{%/code%}} <br> ### Update all Rows You can update multiple row in a table by passing a list of the rows as an argument to the {{%badge%}}**updateRows()**{{%/badge%}} method. You must fetch the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-row-instance"%}}row instances{{%/link%}} for each column key-value pair to be updated in a row and pass the modified data through the {{%badge%}}setColumnValue(){{%/badge%}} method. You can then add the row instances to an array and passing the array as an argument to the {{%badge%}}updateRows(){{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, List&lt;ZCatalystRow&gt;)> &lt;TABLE_INSTANCE&gt;.updateRows(List&lt;ZCatalystRow&gt; rows){{%/code%}} **Parameters**: * {{%badge%}}**rows**{{%/badge%}}: The list of rows to be updated A sample code snippet with fetching the row instance is shown below: {{%code class="language-bash line-numbers"%}}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") }{{%/code%}} -------------------------------------------------------------------------------- title: "Delete a Row" description: "Catalyst Flutter SDK enables you to delete a single row from a specific Data Store table." last_updated: "2026-03-18T07:41:08.611Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} 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 {{%badge%}}delete(){{%/badge%}} method. The {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-row-instance"%}}Row Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future&lt;void&gt; &lt;ROW_INSTANCE&gt;.delete(){{%/code%}} A sample code snippet with fetching the row instance is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystTable table = app.getDataStoreInstance().getTableInstance('Products'); var (_, row) = await developers.getRow(1624000000139040); await row.delete();{{%/code%}} ##### 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-03-18T07:41:08.613Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} {{%link href="/en/cloud-scale/help/file-store/introduction"%}}Catalyst File Store{{%/link%}} 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 {{%badge%}}**getFileStoreInstance()**{{%/badge%}} 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: {{%code class="language-bash"%}}var fileStore = ZCatalystApp.getInstance().getFileStoreInstance();{{%/code%}} -------------------------------------------------------------------------------- title: "Get Folders" description: "You can obtain the details of a specific folder in the File Store." last_updated: "2026-03-18T07:41:08.613Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} ### Get the Metadata of a Specific Folder You can obtain the details of a specific folder in the {{%link href="/en/cloud-scale/help/file-store/introduction"%}}File Store{{%/link%}}, by passing its unique Folder ID as an argument to the {{%badge%}}**getFolder()**{{%/badge%}} 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 {{%badge%}}&lt;FILE_STORE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/file-store/create-file-store-instance/"%}}File Store Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, ZCatalystFolder)> &lt;FILE_STORE_INSTANCE&gt;.getFolder(int id){{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The unique {{%link href="/en/cloud-scale/help/file-store/implementation/#create-a-folder"%}}Folder ID{{%/link%}} of the folder to be retrieved A sample code snippet with the File Store instance is shown below: {{%code class="language-bash line-numbers"%}}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") }{{%/code%}} <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 {{%badge%}}**getFolders()**{{%/badge%}} method, as shown in the code syntax below. This can fetch the meta data of all the folders, and the files in them. The {{%badge%}}&lt;FILE_STORE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/file-store/create-file-store-instance/"%}}File Store Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, List&lt;ZCatalystFolder&gt;)> &lt;FILE_STORE_INSTANCE&gt;.getFolders(){{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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"); }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.613Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} You can create an instance for a specific folder in the {{%link href="/en/cloud-scale/help/file-store/introduction"%}}File Store{{%/link%}} using the {{%badge%}}**getFolderInstance()**{{%/badge%}} 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 {{%badge%}}getFolderInstance(){{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;FILE_STORE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/file-store/create-file-store-instance/"%}}File Store Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;FILE_STORE_INSTANCE&gt;.getFolderInstance( int id ){{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The unique {{%link href="/en/cloud-scale/help/file-store/implementation/#create-a-folder"%}}Folder ID{{%/link%}} of the folder that the instance object must be returned for A sample code snippet is shown below: {{%code class="language-bash"%}}ZCatalystFolder folder = ZCatalystApp.getInstance() .getFileStoreInstance() .getFolderInstance(2823000000006561);{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.613Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} ### Get the Metadata of a Specific File You can retrieve the details of a specific file in the {{%link href="/en/cloud-scale/help/file-store/introduction"%}}File Store{{%/link%}}, by passing its unique File ID as an argument to the {{%badge%}}**getFile()**{{%/badge%}} 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 {{%badge%}}&lt;FOLDER_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/file-store/create-file-store-instance/"%}}File Store Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, ZCatalystFile)> &lt;FOLDER_INSTANCE&gt;.getFile(int id){{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The unique {{%link href="/en/cloud-scale/help/file-store/implementation/#upload-a-file-into-a-folder"%}}File ID{{%/link%}} of the file to be retrieved A sample code snippet with the folder instance is shown below: {{%code class="language-bash line-numbers"%}}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); }{{%/code%}} <br> ### Get the Metadata of all Files You can retrieve the details of all the files available in a specific folder using the {{%badge%}}**getFiles()**{{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;FOLDER_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/file-store/create-folder-instance"%}}Folder Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, List&lt;ZCatalystFile&gt;)> &lt;FOLDER_INSTANCE&gt;.getFiles(){{%/code%}} A sample code snippet with the folder instance is shown below: {{%code class="language-bash line-numbers"%}}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()); }{{%/code%}} -------------------------------------------------------------------------------- title: "Upload a File" description: "You can upload a file to an existing folder in the File Store." last_updated: "2026-03-18T07:41:08.613Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} You can upload a file to an existing folder in the {{%link href="/en/cloud-scale/help/file-store/introduction"%}}File Store{{%/link%}}, by calling the {{%badge%}}**uploadFile()**{{%/badge%}} method. After the file is uploaded in the folder, a unique {{%link href="/en/cloud-scale/help/file-store/implementation/#create-a-folder"%}}File ID{{%/link%}} will be generated for it. You can upload an image, text document, CSV, or any other type of file you need. The {{%badge%}}&lt;FOLDER_INSTANCE&gt;{{%/badge%}} used in the code sections of all the methods below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/file-store/create-folder-instance"%}}Folder Instance page{{%/link%}}. This will refer to the folder that the file must be uploaded in. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, ZCatalystFile)> &lt;FOLDER_INSTANCE&gt;.uploadFile(String filePath, String fileName){{%/code%}} **Parameters**: * {{%badge%}}**filepath**{{%/badge%}}: The file path of the file to be uploaded * {{%badge%}}**fileName**{{%/badge%}}: The name of the file to be uploaded A sample code snippet with the folder instance is shown below: {{%code class="language-bash line-numbers"%}}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()); }{{%/code%}} -------------------------------------------------------------------------------- title: "Download a File" description: "You can download a file from an existing folder in the File Store." last_updated: "2026-03-18T07:41:08.614Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} You can download a file from an existing folder in the {{%link href="/en/cloud-scale/help/file-store/introduction/"%}}File Store{{%/link%}} by calling the {{%badge%}}**download()**{{%/badge%}} 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 {{%badge%}}download(){{%/badge%}} method as shown in the example. The {{%badge%}}&lt;FILE_INSTANCE&gt;{{%/badge%}} 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 {{%link href="/en/cloud-scale/help/file-store/implementation/"%}}File ID{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, String)> &lt;FILE_INSTANCE&gt;.download( void Function(int, int, double) inProgress){{%/code%}} A sample code snippet with the file instance is shown below: {{%code class="language-bash line-numbers"%}}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()); }{{%/code%}} -------------------------------------------------------------------------------- title: "Delete a File" description: "You can delete an existing file from a folder in the File Store." last_updated: "2026-03-18T07:41:08.614Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} You can delete an existing file from a folder in the {{%link href="/en/cloud-scale/help/file-store/introduction"%}}File Store{{%/link%}} by calling the {{%badge%}}**delete()**{{%/badge%}} method and referring to the file with the file instance. This will delete the file permanently. The {{%badge%}}&lt;FILE_INSTANCE&gt;{{%/badge%}} 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 {{%link href="/en/cloud-scale/help/file-store/implementation/"%}}File ID{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future&lt;APIResponse&gt; &lt;FILE_INSTANCE&gt;.delete(){{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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()); }{{%/code%}} ##### 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-03-18T07:41:08.614Z" 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 {{%link href="/en/cloud-scale/help/push-notifications/introduction" %}}Catalyst Push notifications{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} The {{%bold%}}first five steps{{%/bold%}} are covered in detail in the {{%link href="/en/cloud-scale/help/push-notifications/ios" %}}Push Notifications- iOS help section{{%/link%}}. 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.{{%/note%}} <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%}}{{%bold%}}Note:{{%/bold%}} The {{%bold%}}first three steps{{%/bold%}} are covered in detail in the {{%link href="/en/cloud-scale/help/push-notifications/android" %}}Push Notifications- Android help section{{%/link%}}. 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.{{%/note%}} ### 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 {{%badge%}}registerNotification(){{%/badge%}} method with the required parameters as shown in the following code snippet: {{%code class="language-bash line-numbers"%}}try { var response = await ZCatalystApp.getInstance().registerNotification(deviceToken: deviceToken, notificationAppId: '1624000000074620',isTestDevice: false); print(response?.responseJson); } on ZCatalystException catch (ex) { log("Register Failed: $ex"); }{{%/code%}} **Parameters:** * {{%badge%}}deviceToken{{%/badge%}}: The device token obtained from {{%link href="/en/cloud-scale/help/push-notifications/android/#configure-and-enroll-for-android-push-notifications" %}}FCM for you Android app{{%/link%}}, or the device token obtained after {{%link href="/en/cloud-scale/help/push-notifications/ios/#configure-and-enroll-for-ios-push-notifications" %}}registering the device for remote push notifications with APNS{{%/link%}} for your iOS app. * {{%badge%}}notificationAppID{{%/badge%}}: 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 {{%badge%}}AppConfigurationDevelopment.plist{{%/badge%}}/ {{%badge%}}AppConfigurationProduction.plist{{%/badge%}} file generated by Catalyst for your app when you {{%link href="/en/sdk/ios/v2/setup/" %}}registered your iOS app in Catalyst{{%/link%}}. * {{%badge%}}testDevice{{%/badge%}}: The value is set to {{%badge%}}true{{%/badge%}} for test devices, and set to {{%badge%}}false{{%/badge%}} for production devices. <br> {{%note%}}{{%bold%}}Note:{{%/bold%}} You can register a maximum of 10 Android or iOS devices as test devices to test Android push notifications.{{%/note%}} 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 {{%link href="/en/cloud-scale/help/push-notifications/ios/#test-ios-push-notifications" %}}iOS apps{{%/link%}} and for {{%link href="/en/cloud-scale/help/push-notifications/android/#test-android-push-notifications" %}}Android apps{{%/link%}} from their respective help documentation. You can also send test notifications from the {{%link href="/en/api/code-reference/cloud-scale/push-notifications/ios/send-ios-push-notifications/#SendiOSPushNotifications" %}}API{{%/link%}}. Refer to the {{%link href="/en/sdk/java/v1/cloud-scale/push-notifications/send-notifications/"%}}Java{{%/link%}}, {{%link href="/en/sdk/nodejs/v2/cloud-scale/push-notifications/send-notifications/"%}}Node.js{{%/link%}}, and {{%link href="/en/sdk/python/v1/cloud-scale/push-notifications/send-notifications/"%}}Python{{%/link%}} 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-03-18T07:41:08.616Z" 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 {{%badge%}}deregisterNotification(){{%/badge%}} method as shown below. {{%code class="language-javascript line-numbers"%}}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"); }{{%/code%}} **Parameters:** * {{%badge%}}deviceToken{{%/badge%}}: The device token obtained from {{%link href="/en/cloud-scale/help/push-notifications/android/#configure-and-enroll-for-android-push-notifications" %}}FCM for you Android app{{%/link%}}, or the device token obtained after {{%link href="/en/cloud-scale/help/push-notifications/ios/#configure-and-enroll-for-ios-push-notifications" %}}registering the device for remote push notifications with APNS{{%/link%}} for your iOS app. * {{%badge%}}notificationAppID{{%/badge%}}: 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 {{%badge%}}AppConfigurationDevelopment.plist{{%/badge%}}/ {{%badge%}}AppConfigurationProduction.plist{{%/badge%}} file generated by Catalyst for your app when you {{%link href="/en/sdk/ios/v2/setup/" %}}registered your iOS app in Catalyst{{%/link%}}. * {{%badge%}}testDevice{{%/badge%}}: The value is set to {{%badge%}}true{{%/badge%}} for test devices, and set to {{%badge%}}false{{%/badge%}} 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-03-18T07:41:08.616Z" 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 {{%link href="/en/cloud-scale/help/search-integration/introduction"%}}Catalyst Search{{%/link%}} enables data searching in the indexed columns of the tables in the {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}. It allows you to perform powerful searches through volumes of data with a single search query. {{%note%}}{{%bold%}}Note:{{%/bold%}} The columns you search for data must be indexed. You can enable search indexing for a column while {{%link href="/en/cloud-scale/help/data-store/columns/#create-a-new-column"%}}creating it{{%/link%}} or by {{%link href="/en/cloud-scale/help/data-store/columns/#edit-a-column"%}}editing it{{%/link%}} later.{{%/note%}} ### 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 {{%badge%}}**search()**{{%/badge%}} method along with the keywords to be searched through an instance of the class {{%badge%}}ZCatalystSearchOptions{{%/badge%}}. You must construct the search pattern to pass to the {{%badge%}}search(){{%/badge%}} method before you execute a search operation, as shown in the code syntax below. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, Map&lt;String, dynamic&gt;?)> search(ZCatalystSearchOptions searchOptions){{%/code%}} **Parameters**: * {{%badge%}}**searchOptions**{{%/badge%}}: The instance of the {{%badge%}}**ZCatalystSearchOptions**{{%/badge%}} class to be passed to the {{%badge%}}search(){{%/badge%}} method You can create the instance for {{%badge%}}searchOptions{{%/badge%}} in the following way: {{%code class="language-bash line-numbers"%}}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){{%/code%}} A sample code snippet of a search execution is shown below: {{%code class="language-bash line-numbers"%}}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 :'); }{{%/code%}} ##### Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page provides an overview of the mobile SDK methods required to perform Stratus operations." last_updated: "2026-03-18T07:41:08.616Z" 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 {{%link href="/en/cloud-scale/help/stratus/introduction" %}}Stratus{{%/link%}} is Catalyst's robust and powerful storage solution. You can store data of any format in the form of {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}Objects{{%/link%}} in containers called {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}}. Each Bucket and every individual object in the bucket has a secure {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} and {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/#bucket-url" %}}Bucket URL{{%/link%}}. You can perform upload and download operations on objects and even provide {{%link href="/en/cloud-scale/help/stratus/stratus-permissions/#custom-permissions" %}}custom permissions{{%/link%}} 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>{{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/initialize-stratus/" %}}Initialize Stratus{{%/link%}} <ul> <li>{{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/initialize-stratus/#initialize-bucket-instance" %}}Initialize Bucket Instance{{%/link%}}</li> </ul> </li> </ul> </td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>{{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/get-object/" %}}Get Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/get-object/#get-all-objects" %}}Get All Objects{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/download-object/" %}}Download Object{{%/link%}}</li> <li>{{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/upload-object/" %}}Upload Object{{%/link%}}</li> <li>{{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/delete-object/" %}}Delete Object{{%/link%}}</li> <li>{{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/delete-path/" %}}Delete Path{{%/link%}}</li> </ul> </td> </tr> </tbody> </table> {{%note%}}{{%bold%}}Note:{{%/bold%}} All the SDK methods in this section will return multiple data using Dart's new feature called {{%link href="https://dart.dev/language/records" %}}{{%bold%}}Records{{%/bold%}}{{%/link%}}. To use this feature, you need to have Dart {{%badge%}}v3.0{{%/badge%}} or above.{{%/note%}} -------------------------------------------------------------------------------- title: "Initialize Stratus" description: "This page lists the Flutter SDK method to create a bucket instance." last_updated: "2026-03-18T07:41:08.617Z" 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 {{%badge%}}stratus{{%/badge%}} 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. {{%code class="language-javascript"%}}ZCatalystStratus stratus = ZCatalystApp.getInstance().stratus{{%/code%}} ### 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 {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}} in Stratus. {{%code class="language-javascript"%}}ZCatalystBucket bucket = stratus.bucket("{bucket_name}"){{%/code%}} -------------------------------------------------------------------------------- title: "Get Object" description: "This page lists the Flutter SDK method to get an object or objects from the bucket." last_updated: "2026-03-18T07:41:08.617Z" 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 {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for the bucket: * If you do not pass the {{%badge%}}versionId{{%/badge%}}, then only the **latest object** will be returned. * To retrieve a specific version, use the {{%badge%}}versionId{{%/badge%}} 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>{{%badge%}}name{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will hold the name of the object.</td> </tr> <tr> <td>{{%badge%}}versionId{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}optional{{%/bold%}} parameter. Will hold the unique version ID of the required object's version.</td> </tr> </tbody> </table> {{%code class="language-javascript"%}}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()); }{{%/code%}} ### 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>{{%badge%}}prefix{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. This will get the objects that match the prefix value.</td> </tr> <tr> <td>{{%badge%}}maxKeys{{%/badge%}}</td> <td>{{%bold%}}Number{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. Will contain the maximum limit of objects that can be listed by pagination.</td> </tr> <tr> <td>{{%badge%}}continuationToken{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If the response was truncated, the value of this key must be passed as {{%badge%}}continuationToken{{%/badge%}} to the same method for retrieving the next set of objects.</td> </tr> </tbody> </table> {{%code class="language-javascript"%}}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()); }{{%/code%}} -------------------------------------------------------------------------------- title: "Download Object" description: "This page lists the Flutter SDK methods to download an object to the bucket." last_updated: "2026-03-18T07:41:08.617Z" 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>{{%badge%}}pathToDownload{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will hold the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}} where the object needs to be downloaded.</td> </tr> <tr> <td>{{%badge%}}newObjectName{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}optional{{%/bold%}} 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>{{%badge%}}versionId{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}optional{{%/bold%}} parameter. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for the bucket, it will hold the unique version ID of the required object's version.</td> </tr> <tr> <td>{{%badge%}}fromCache{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To be used to specify whether this file has to be retrieved from the cache or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}progress{{%/badge%}}</td> <td>{{%bold%}}Function(int, int, Double)?{{%/bold%}}</td> <td>A callback function that can provide progess information about the object download</td> </tr> </tbody> </table> {{%code class="language-javascript"%}}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()); }{{%/code%}} -------------------------------------------------------------------------------- title: "Upload Object" description: "This page lists the Flutter SDK methods to upload an object to the bucket." last_updated: "2026-03-18T07:41:08.617Z" 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 {{%link href="/en/cloud-scale/help/stratus/objects/upload-object/" %}}upload objects{{%/link%}} to the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}bucket{{%/link%}} If you do not have {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} 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 {{%badge%}}versionId{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} **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>{{%badge%}}filePath{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the complete path of the location from where the file needs to be uploaded from.</td> </tr> <tr> <td>{{%badge%}}shouldCompress{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> </tbody> </table> {{%code class="language-javascript"%}}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()); }{{%/code%}} -------------------------------------------------------------------------------- title: "Delete Object" description: "This page lists the Flutter SDK methods to delete an object or objects from the bucket." last_updated: "2026-03-18T07:41:08.618Z" 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>{{%badge%}}objects{{%/badge%}}</td> <td>{{%bold%}}ArrayList&lt;ZCatalystObject&gt;{{%/bold%}}</td> <td>An array containing the list of objects (and version IDs, if {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for the bucket) that needs to be deleted.</td> </tr> </tbody> </table> {{%note%}}{{%bold%}}Note:{{%/bold%}} If the SDK method is used without the {{%badge%}}objects{{%/badge%}} parameter, then all the objects in the bucket will be deleted.{{%/note%}} {{%code class="language-javascript"%}}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()); }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.618Z" 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 {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}. **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>{{%badge%}}path{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the complete path of where the file should be uploaded.</td> </tr> </tbody> </table> {{%code class="language-javascript"%}}try { ZCatalystBucket bucket = stratus.bucket("testing"); var response = await bucket.deletePath("photos"); print("Delete Objects: ${response.statusCode}"); } on ZCatalystException catch (ex) { print(ex.toString()); }{{%/code%}} ##### 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-03-18T07:41:08.618Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}. 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 {{%badge%}}**getData()**{{%/badge%}} method. You can learn about the ZCQL syntax from the {{%link href="/en/cloud-scale/help/zcql/introduction"%}}ZCQL help page{{%/link%}}. You must pass an instance of {{%badge%}}**ZCatalystSelectQuery**{{%/badge%}} to the {{%badge%}}getData(){{%/badge%}} method, as shown in the code syntax of a ZCQL query execution below. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used here is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-data-store-instance"%}}Data Store Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, List&lt;dynamic&gt;?)> ZCatalystApp.getInstance().getDataStoreInstance().getData( ZCatalystSelectQuery selectQuery){{%/code%}} **Parameters**: * {{%badge%}}**selectQuery**{{%/badge%}}: The instance of the type {{%badge%}}ZCatalystSelectQuery{{%/badge%}} to be passed You can create a {{%badge%}}selectQuery{{%/badge%}} instance for {{%badge%}}ZCatalystSelectQuery{{%/badge%}} for the statements supported by ZCQL, in the following way: {{%code class="language-bash line-numbers"%}}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{{%/code%}} A sample code snippet of a ZCQL query execution is shown below: {{%code class="language-bash line-numbers"%}}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()); }{{%/code%}} #### General -------------------------------------------------------------------------------- title: "Get Current Time Zone" description: "This enables you to fetch the current time zone active for your project." last_updated: "2026-03-18T07:41:08.618Z" 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 {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/#change-the-time-zone-of-the-project"%}}time zone{{%/link%}} 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 {{%badge%}}getCurrentTimeZone(){{%/badge%}} method in the {{%badge%}}ZCatalystUtil{{%/badge%}} class as shown in the syntax below. {{%code class="language-bash line-numbers"%}}Future<String> ZCatalystUtil.getCurrentTimezone(){{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}String currTimezone = await ZCatalystUtil.getCurrentTimeZone();{{%/code%}} #### 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-03-18T07:41:08.619Z" 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 {{%link href="/en/serverless/help/functions/introduction"%}}Catalyst Serverless Functions{{%/link%}} 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%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: 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. {{%/note%}} ### Create a Function Instance You can create an instance of a Catalyst function using the {{%badge%}}**getFunctionInstance()**{{%/badge%}} 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 {{%badge%}}getFunctionInstance(){{%/badge%}} method in the String format as shown in the syntax below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().getFunctionInstance( String identifier ){{%/code%}} **Parameters**: * {{%badge%}}**functionID**{{%/badge%}}: The unique {{%link href="/en/serverless/help/functions/introduction"%}}ID{{%/link%}} of the function configured in Catalyst A sample code snippet is shown below: {{%code class="language-bash"%}}ZCatalystFunction function = ZCatalystApp.getInstance().getFunctionInstance(identifier: "158798998356682");{{%/code%}} <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 {{%badge%}}getFunctionInstance(){{%/badge%}} method in the String format as shown in the syntax below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().getFunctionInstance( String identifier ){{%/code%}} **Parameters**: * {{%badge%}}**identifier**{{%/badge%}}: The name of the function configured in Catalyst A sample code snippet is shown below: {{%code class="language-bash"%}}ZCatalystFunction function = ZCatalystApp.getInstance().getFunctionInstance(identifier: "LocalBackUp");{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.619Z" 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 {{%link href="/en/serverless/help/functions/introduction"%}}Catalyst Basic I/O function{{%/link%}} 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 {{%badge%}}&lt;FUNCTION_INSTANCE&gt;{{%/badge%}} used in all the code sections below is the instance defined in the {{%link href="/en/sdk/flutter/v2/serverless/functions/create-function-instance"%}}Function Instance page{{%/link%}}. ### Execute a GET function You can execute a function of the HTTP GET type by passing the parameters to the {{%badge%}}**executeGET()**{{%/badge%}} method as a Hash map: {{%code class="language-bash line-numbers"%}}Future&lt;String?&gt; &lt;FUNCTION_INSTANCE&gt;.executeGET( Map&lt;String, Dynamic&gt; params){{%/code%}} **Parameters**: * {{%badge%}}**params**{{%/badge%}}: The parameters to be passed to the function as a Hash map A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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()); }{{%/code%}} <br> ### Execute a PUT function You can execute a function of the HTTP PUT type by passing the parameters to the {{%badge%}}**executePUT()**{{%/badge%}} method as a Hash map. You can pass the payload in the PUT request to this method as a Hash map argument as well: {{%code class="language-bash line-numbers"%}}Future&lt;String?&gt; &lt;FUNCTION_INSTANCE&gt;.executePUT(Map&lt;String, Dynamic&gt; body, [Map&lt;String, Dynamic&gt;? params]){{%/code%}} **Parameters**: * {{%badge%}}**params**{{%/badge%}}: The parameters to be passed to the function as a Hash map * {{%badge%}}**body**{{%/badge%}}: The data payload to be passed as a Hash map A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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()); }{{%/code%}} <br> ### Execute a POST function You can execute a function of the HTTP POST type by passing the parameters to the {{%badge%}}**executePOST()**{{%/badge%}} method as a Hash map. You can pass the payload in the POST request to this method as a Hash map argument as well: {{%code class="language-bash line-numbers"%}}Future&lt;String?&gt; executePOST(Map&lt;String, dynamic&gt; body){{%/code%}} **Parameters**: * {{%badge%}}**params**{{%/badge%}}: The parameters to be passed to the function as a Hash map * {{%badge%}}**body**{{%/badge%}}: The data payload to be passed as a Hash map A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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()); }{{%/code%}} ### Execute a DELETE function You can execute a function of the HTTP DELETE type by passing the parameters to the {{%badge%}}**executeDELETE()**{{%/badge%}} method as a Hash map. You can pass the payload in the DELETE request to this method as a Hash map argument as well: {{%code class="language-bash line-numbers"%}}Future&lt;APIResponse&gt; &lt;FUNCTION_INSTANCE&gt;.executeDELETE(Map&lt;String, Dynamic&gt; body, [Map&lt;String, Dynamic&gt;? params]) {{%/code%}} **Parameters**: * {{%badge%}}**params**{{%/badge%}}: The parameters to be passed to the function as a Hash map * {{%badge%}}**body**{{%/badge%}}: The data payload to be passed as a Hash map A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}try { ZCatalystFunction function = app.getFunctionInstance(identifier: 'DeleteData'); var response = await function.executeDELETE({"id": 298922}); } on ZCatalystException catch (ex) { print(ex.toString()); } {{%/code%}} ## 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-03-18T07:41:08.623Z" 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 {{%link href="https://www.apple.com/in/ios/"%}}iOS{{%/link%}} 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 {{%link href="/en/cloud-scale/"%}}Catalyst Cloud Scale{{%/link%}} and {{%link href="/en/serverless/"%}}Catalyst Serverless{{%/link%}} 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%}} {{%bold class="bold-primary"%}}Note:{{%/bold%}} After you develop and test your iOS app, you can host and distribute the app using {{%link href="/en/cloud-scale/help/mobile-device-management/introduction/"%}}Mobile Device Management{{%/link%}}. It also enables you to manage the app's versioning and end-users easily from the Catalyst console. You can also configure {{%link href="/en/cloud-scale/help/push-notifications/introduction/"%}}Push Notifications{{%/link%}} 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. {{%/note%}} -------------------------------------------------------------------------------- title: "Class Hierarchy" description: "Class Hierarchy denotes the hierarchy of the Swift classes in the Catalyst iOS SDK." last_updated: "2026-03-18T07:41:08.623Z" 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:** {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/#change-the-time-zone-of-the-project"%}}Timezone{{%/link%}} * **Serverless:** {{%link href="/en/serverless/help/functions/introduction"%}}Functions{{%/link%}} * **Cloud Scale:** {{%link href="/en/cloud-scale/help/authentication/introduction"%}}Authentication{{%/link%}}, {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}, {{%link href="/en/cloud-scale/help/file-store/introduction"%}}File Store{{%/link%}}, {{%link href="/en/cloud-scale/help/search-integration/introduction"%}}Search{{%/link%}}, {{%link href="/en/cloud-scale/help/zcql/introduction"%}}ZCQL{{%/link%}} The hierarchy of the Catalyst iOS SDK component classes is depicted in the architecture diagram below. The {{%badge%}}**ZCatalystApp**{{%/badge%}} 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 {{%badge%}}ZCatalystApp{{%/badge%}} 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 {{%badge%}}**getInstance()**{{%/badge%}} 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 {{%badge%}}getInstance(){{%/badge%}} 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-03-18T07:41:08.624Z" 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 {{%badge%}}**ZCatalystError**{{%/badge%}}, defined in the iOS SDK package. If an error occurs in your app, the following properties of the error are returned: * {{%badge%}}**code**{{%/badge%}}: Unique identifier of the error * {{%badge%}}**message**{{%/badge%}}: General description about the error * {{%badge%}}**details**{{%/badge%}}: 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-03-18T07:41:08.624Z" 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: * {{%link href="/en/getting-started/catalyst-projects/"%}}Create a Catalyst Project{{%/link%}} in the Catalyst console to host your mobile app in {{%note%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: You can host one Android app and one iOS app in each project.{{%/note%}} * Create or import an iOS project in {{%link href="https://developer.apple.com/xcode/"%}}XCode{{%/link%}} {{%note%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: You can host one Android app and one iOS app in each project. The Android or iOS can either be built natively with the {{%link href="/en/sdk/android/v2/overview/"%}}Catalyst Android{{%/link%}} or iOS SDKs, or with Catalyst {{%link href="/en/sdk/flutter/v2/overview/"%}}Flutter SDK{{%/link%}}.{{%/note%}} * Ensure that your iOS project and the development environment meet these **minimum supported environments**: * XCode- 10.2 or later * {{%link href="https://guides.cocoapods.org/"%}}CocoaPods{{%/link%}} * 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 {{%link href="/en/sdk/ios/v2/setup"%}}next section{{%/link%}}. -------------------------------------------------------------------------------- title: "Setup" description: "Steps to follow to setup the Catalyst project and the iOS project." last_updated: "2026-03-18T07:41:08.624Z" 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 {{%italics%}}Project Settings{{%/italics%}} 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%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: 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.{{%/note%}} 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 {{%link href="/en/deployment-and-billing/environments/introduction"%}}Environments help page{{%/link%}}. 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: {{%badge%}}**AppConfigurationDevelopment.plist**{{%/badge%}} * Production: {{%badge%}}**AppConfigurationProduction.plist**{{%/badge%}} 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 {{%link href="/en/deployment-and-billing/environments/initial-deployment"%}}deploy your project to production{{%/link%}} first and then {{%link href="/en/getting-started/set-up-a-catalyst-project/developer-tools"%}}download the file{{%/link%}} from the {{%italics%}}Developer Tools{{%/italics%}} settings section. The configuration file must be added to **Targets** -> **Runner** of your iOS project. Refer to the {{%link href="https://developer.apple.com/documentation/"%}}official iOS documentation{{%/link%}} 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%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: You can refer to the links specified in the table, to know where you can obtain these values from.{{%/note%}} <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>{{%badge%}}**ClientID**{{%/badge%}}</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>{{%badge%}}**ClientSecretID**{{%/badge%}}</td> <td>String</td> <td>Secret value generated for a specific {{%badge%}}clientID{{%/badge%}}, which is passed along with the API hits. This is received in the configuration file.</td> </tr> <tr> <td>{{%badge%}}**PortalID**{{%/badge%}}</td> <td>String</td> <td>Unique identifier received in the configuration file</td> </tr> <tr> <td>{{%badge%}}**RedirectURLScheme**{{%/badge%}}</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>{{%badge%}}**ProjectID**{{%/badge%}}</td> <td>Long</td> <td>The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/" %}}unique ID{{%/link%}} of your Catalyst Project</td> </tr> <tr> <td>{{%badge%}}**APIBaseURL**{{%/badge%}}</td> <td>String</td> <td>The URL of the Catalyst server through which the internal API is called. You must use the appropriate URL ({{%link href="/en/deployment-and-billing/environments/development-environment/#function-url-and-web-app-url-in-the-development-environment"%}}development URL{{%/link%}} or {{%link href="/en/deployment-and-billing/environments/production-environment/#function-url-and-web-app-url-in-the-production-environment"%}}production URL{{%/link%}}), based on the environment you are working in.</td> </tr> <tr> <td>{{%badge%}}**APIVersion**{{%/badge%}}</td> <td>String</td> <td>Version of the API</td> </tr> <tr> <td>{{%badge%}}**OauthScopes**{{%/badge%}}</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 {{%link href="/en/api/oauth2/scopes/#Scopes" %}}here{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}**RequestHeaders**{{%/badge%}}</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: {{%badge%}}requestHeaders={{%/badge%}}{{%italics%}}key1:value1, key2:value2{{%/italics%}}</td> </tr> <tr> <td>{{%badge%}}**ServerTLD**{{%/badge%}}</td> <td>String</td> <td>The top level domain of the data server<br /> Acceptable values: {{%badge%}}**AU**{{%/badge%}}, {{%badge%}}**CN**{{%/badge%}}, {{%badge%}}**COM**{{%/badge%}}, {{%badge%}}**EU**{{%/badge%}} and {{%badge%}}**IN**{{%/badge%}}</td> </tr> <tr> <td>{{%badge%}}**MinLogLevel**{{%/badge%}}</td> <td>String</td> <td>Enables you to set the logging preferences for the app<br /> Acceptable values: {{%badge%}}**warnings**{{%/badge%}}, {{%badge%}}**errors**{{%/badge%}}, {{%badge%}}**information**{{%/badge%}}, {{%badge%}}**debug**{{%/badge%}}, {{%badge%}}**ALL**{{%/badge%}}</td> </tr> <tr> <td>{{%badge%}}**TurnLoggerOn**{{%/badge%}}</td> <td>Boolean</td> <td>Turns the logger on based on the value<br /> Acceptable values: {{%badge%}}**true**{{%/badge%}}, {{%badge%}}**false**{{%/badge%}}</td> </tr> <tr> <td>{{%badge%}}**RequestTimeOut**{{%/badge%}}</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>{{%badge%}}**X-Catalyst-Environment**{{%/badge%}}</td> <td>String</td> <td>The environment (development or production) that the configuration file is downloaded for</td> </tr> <tr> <td>{{%badge%}}**X-CATALYST-USER**{{%/badge%}}</td> <td>String</td> <td>The user role of the app's user</td> </tr> <tr> <td>{{%badge%}}**AccountsPortalDomain**{{%/badge%}}</td> <td>String</td> <td>Domain of your Zoho account's portal</td> </tr> <tr> <td>{{%badge%}}**notificationAppID**{{%/badge%}}</td> <td>String</td> <td>ID generated by Catalyst after you enroll for {{%link href="/en/cloud-scale/help/push-notifications/ios/#configure-and-enroll-for-ios-push-notifications"%}}Push Notifications{{%/link%}} for your iOS app</td> </tr> <tr> <td>{{%badge%}}**JWTClientID**{{%/badge%}}</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>{{%badge%}}**JWTClientSecret**{{%/badge%}}</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%}}{{%bold%}}Note{{%/bold%}}:<br /> * If the values of the {{%badge%}}**clientID**{{%/badge%}}, {{%badge%}}**clientSecretID**{{%/badge%}}, {{%badge%}}**projectID**{{%/badge%}}, or {{%badge%}}**portalID**{{%/badge%}} 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 {{%link href="/en/getting-started/set-up-a-catalyst-project/developer-tools/#create-a-mobile-sdk-package"%}}create a new package{{%/link%}} 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 {{%badge%}}**ZCatalystApp.configs**{{%/badge%}} object.{{%/note%}} ### 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 {{%link href="https://guides.cocoapods.org/"%}}CocoaPods{{%/link%}}. 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: {{%code class="language-bash"%}}pod 'ZCatalyst', :git =>'https://github.com/zoho/Catalyst-iOS-SDK.git', :tag => '2.2.2'{{%/code%}} 2. Execute the {{%badge%}}**pod install**{{%/badge%}} 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 {{%badge%}}**info.plist**{{%/badge%}} file of your iOS project: {{%note%}}Key - {{%badge%}}**URL Types**{{%/badge%}} -----> {{%badge%}}**URL Schemes**{{%/badge%}}<br /> Type - String<br /> Value - The Redirect URL that you configured while {{%link href="/en/sdk/ios/v2/setup/#register-your-iOS-app-with-catalyst"%}}creating the package{{%/link%}} for your app in Catalyst {{%/note%}} ### 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: {{%code class="language-bash"%}}public func initSDK( window : UIWindow, environment : ZCatalystEnvironment, appConfiguration : ZCatalystAppConfiguration ) throws{{%/code%}} **Parameters:** * {{%badge%}}**window**{{%/badge%}}: The window object that dispatches events to your views * {{%badge%}}**environment**{{%/badge%}}: The environment of your app, either {{%badge%}}**.development**{{%/badge%}} or {{%badge%}}**.production**{{%/badge%}}. * {{%badge%}}**appConfiguration**{{%/badge%}}: An object containing all the configuration details for the functioning of the SDK. The {{%badge%}}environment{{%/badge%}} here indicates if the app is operating in the {{%link href="/en/deployment-and-billing/environments/introduction"%}}Development or the Production{{%/link%}} 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%}} {{%bold class="bold-primary"%}}Note{{%/bold%}}: * If you make any changes to the {{%badge%}}AppConfigurationDevelopment.plist{{%/badge%}} or {{%badge%}}AppConfigurationProduction.plist{{%/badge%}} 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 {{%link href="/en/sdk/ios/v2/cloud-scale/authentication/third-party-authentication/"%}}this help page{{%/link%}}.{{%/note%}} 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 {{%badge%}}UIApplication{{%/badge%}}instance is given below: {{%code class="language-bash"%}}ZCatalystApp.shared.handleLoginRedirection( _ url : URL, sourceApplication : String?, annotation : Any ) AppDelegate.swift{{%/code%}} **Parameters:** * {{%badge%}}**url**{{%/badge%}}: The URL resource that must be opened after a successful login * {{%badge%}}**sourceApplication**{{%/badge%}}: The bundle ID of the app that is requesting to open the URL * {{%badge%}}**annotation**{{%/badge%}}: Additional data that the app wants to send along with the URL The code for the {{%badge%}}UIScene{{%/badge%}} instance is given below: {{%code class="language-bash line-numbers"%}}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) } } {{%/code%}} 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-03-18T07:41:08.625Z" 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 {{%link href="/en/cloud-scale/help/authentication/introduction"%}}Catalyst Authentication{{%/link%}} 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 {{%badge%}}**newUser()**{{%/badge%}} 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. {{%code class="language-bash"%}}ZCatalystApp.shared.newUser( lastName : String, email : String ) -> ZCatalystUser{{%/code%}} **Parameters**: * {{%badge%}}**lastName**{{%/badge%}}: The last name of the new user * {{%badge%}}**email**{{%/badge%}}: Email address of the user, to which the {{%link href="/en/cloud-scale/help/authentication/user-management/users/implementation/"%}}invitation mail{{%/link%}} will be sent A sample code snippet is shown below: {{%code class="language-bash"%}}ZCatalystApp.shared.newUser( lastName : "Burrows", email : "emma@zylker.com" ) -> ZCatalystUser{{%/code%}} -------------------------------------------------------------------------------- title: "User Signup" description: "Adding new users to your catalyst application." last_updated: "2026-03-18T07:41:08.626Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/"%}}user{{%/link%}} to your Catalyst app by calling the {{%badge%}}signUp(){{%/badge%}} method. You must pass the {{%link href="/en/sdk/ios/v2/cloud-scale/authentication/create-user-instance"%}}user instance defined here{{%/link%}} as the argument to the {{%badge%}}**signUp()**{{%/badge%}} method. The code syntax for user signup is given below: {{%code class="language-bash"%}}ZCatalystApp.shared.signUp(user: ZCatalystUser, completion: @escaping (Result&lt;( ZCatalystUser, Int64 ), ZCatalystError &gt;) -> Void){{%/code%}} **Parameters**: * {{%badge%}}**user**{{%/badge%}}: The user instance created before this operation * {{%badge%}}**completion**{{%/badge%}}: If the call executes successfully, the completion block returns the user object with an {{%badge%}}UserID{{%/badge%}}, {{%badge%}}ZUID{{%/badge%}}, {{%badge%}}Org ID{{%/badge%}}, etc assigned for the user. Else, it returns an error. A sample code snippet is shown below: {{%code class="language-bash"%}}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 )" ) } } {{%/code%}} -------------------------------------------------------------------------------- title: "User Login" description: "You can display the login page to the end user of your Catalyst iOS app." last_updated: "2026-03-18T07:41:08.626Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/"%}}end user{{%/link%}} of your Catalyst iOS app using the {{%badge%}}**showLogin()**{{%/badge%}} 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: {{%code class="language-bash"%}}ZCatalystApp.shared.showLogin( completion : @escaping ( Error? ) -> Void ) ViewController.swift{{%/code%}} **Parameters**: * {{%badge%}}**completion**{{%/badge%}}: 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-03-18T07:41:08.626Z" 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 {{%badge%}}**logout()**{{%/badge%}} method can log an {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/"%}}app user{{%/link%}} out from the Catalyst iOS app. The code syntax for user logout is given below: {{%code class="language-bash"%}}ZCatalystApp.shared.logout( completion : @escaping ( Error? ) -> Void ) ViewController.swift{{%/code%}} **Parameters**: * {{%badge%}}**completion**{{%/badge%}}: 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-03-18T07:41:08.626Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/"%}}end user{{%/link%}} of your application by calling the {{%badge%}}**getCurrentUser()**{{%/badge%}} 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: {{%code class="language-bash"%}}ZCatalystApp.shared.getCurrentUser( completion: @escaping (Result&lt; ZCatalystUser,ZCatalystError &gt; ) -> Void ){{%/code%}} **Parameters**: * {{%badge%}}**completion**{{%/badge%}}: 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: {{%code class="language-bash line-numbers"%}}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 )" ) } } {{%/code%}} -------------------------------------------------------------------------------- title: "Third-Party Authentication" description: "You can implement a third-party authentication service of your preference in your iOS app." last_updated: "2026-03-18T07:41:08.626Z" 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 {{%link href="/en/cloud-scale/help/authentication/third-party-authentication/introduction/"%}}third-party authentication{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} 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 {{%link href="/en/cloud-scale/help/authentication/third-party-authentication/implementation/"%}}Set Up Third-party Authentication in Catalyst help page{{%/link%}}. 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 {{%link href="/en/sdk/java/v1/cloud-scale/authentication/third-party-server-token/"%}}Java{{%/link%}}, {{%link href="/en/sdk/nodejs/v2/cloud-scale/authentication/third-party-server-token/"%}}Node.js{{%/link%}}, or {{%link href="/en/sdk/python/v1/cloud-scale/authentication/third-party-server-token/"%}}Python{{%/link%}}. This function will generate a Catalyst server-side token {{%badge%}}**jwtToken**{{%/badge%}} or {{%badge%}}**customToken**{{%/badge%}} which will then be passed to client-side (iOS app). The Catalyst console provides readymade scripts to generate the {{%badge%}}customToken{{%/badge%}}. You can incorporate this script in the server-side function you write, to return the {{%badge%}}customToken{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} To enable a third-party authentication in your Catalyst application, you must ensure that you have enabled {{%link href="/en/cloud-scale/help/authentication/public-signup/"%}}Public Signup{{%/link%}} in the console.{{%/note%}} **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 {{%link href="/en/sdk/ios/v2/setup/#step-2-import-the-configuration-file-in-your-ios-project"%}}{{%badge%}}AppConfigurationDevelopment.plist{{%/badge%}} or the {{%badge%}}AppConfigurationProduction.plist{{%/badge%}} properties file{{%/link%}} in your iOS project again, based on your app's {{%link href="/en/deployment-and-billing/environments/introduction/"%}}environment{{%/link%}}. This is because this file will now include two additional properties: {{%link href="/en/sdk/ios/v2/setup/#properties-of-the-appconfigurationdevelopmentplist-appconfigurationproductionplist-file"%}}{{%badge%}}JWTClientID{{%/badge%}} and {{%badge%}}JWTClientSecret{{%/badge%}}{{%/link%}}. 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 {{%link href="/en/getting-started/set-up-a-catalyst-project/developer-tools/"%}}**Developer Tools**{{%/link%}} 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 {{%link href="/en/sdk/ios/v2/setup/#step-2-import-the-configuration-file-in-your-ios-project"%}}here{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} You need not perform the steps 3, 4, 6 given in the SDK setup help page again.{{%/note%}} <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 {{%link href="/en/sdk/ios/v2/setup/#step-5-initialize-the-sdk"%}}initializing the SDK for the first time{{%/link%}}. However, you will now need to specify the {{%badge%}}JWTClientID{{%/badge%}} and {{%badge%}}JWTClientSecret{{%/badge%}} properties obtained from the newly-downloaded configuration file through with {{%badge%}}ZCatalystAppConfiguration{{%/badge%}}. {{%code class="language-bash line-numbers"%}}public func initSDK( window : UIWindow, environment : ZCatalystEnvironment, appConfiguration : ZCatalystAppConfiguration ) throws{{%/code%}} **Parameters:** * {{%badge%}}**window**{{%/badge%}}: The window object that dispatches events to your views * {{%badge%}}**appConfiguration**{{%/badge%}}: An object containing all the configuration details for the functioning of the SDK. * {{%badge%}}**environment**{{%/badge%}}: The environment of your app, either {{%badge%}}**.development**{{%/badge%}} or {{%badge%}}**.production**{{%/badge%}}. The {{%badge%}}environment{{%/badge%}} here indicates if the app is operating in the {{%link href="/en/deployment-and-billing/environments/introduction"%}}Development or the Production{{%/link%}} 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 {{%badge%}}customToken{{%/badge%}} or {{%badge%}}jwtToken{{%/badge%}} 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 {{%badge%}}handleCustomLogin(){{%/badge%}} method as shown below: {{%code class="language-bash line-numbers"%}}public func handleCustomLogin( withJWT token : String, completion : @escaping ( Error? ) -> Void ){{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ##### 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-03-18T07:41:08.627Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Catalyst Data Store{{%/link%}} 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 {{%badge%}}**getDataStoreInstance()**{{%/badge%}} method as shown in the code syntax below, to obtain the Data Store instance successfully: {{%code class="language-bash"%}}ZCatalystApp.shared.getDataStoreInstance(tableIdentifier : String) -> ZCatalystDataStore{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.627Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table of the given instance, by calling the {{%badge%}}**getColumn()**{{%/badge%}} 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 {{%badge%}}getColumn(){{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used here is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;DATA_STORE_INSTANCE&gt;.getColumn( id : Int64, completion : @escaping ( Result&lt; ZCatalystColumn, ZCatalystError &gt; ) -> Void ){{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/data-store/columns/#column-characteristics"%}}unique Column ID{{%/link%}} of the particular column that needs to be retrieved * {{%badge%}}**completion**{{%/badge%}}: 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: {{%code class="language-bash line-numbers"%}}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 )" ) } } {{%/code%}} ### Get the Metadata of all Columns You can retrieve the metadata of all the columns of a table of the given instance, using the {{%badge%}}**getColumns()**{{%/badge%}} 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 {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance created earlier in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;DATA_STORE_INSTANCE&gt;.getColumns( completion : @escaping ( Result&lt; [ ZCatalystColumn ], ZCatalystError &gt; ) -> Void ){{%/code%}} **Parameters**: * {{%badge%}}**completion**{{%/badge%}}: 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: {{%code class="language-bash line-numbers"%}}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 )" ) } } {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.632Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table of the given instance using the {{%badge%}}**getRow()**{{%/badge%}} 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 {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance"%}}Data Store Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;DATA_STORE_INSTANCE&gt;.getRow(id : Int64, completion: @escaping (Result&lt;ZCatalystRow, ZCatalystError&gt;) -> Void){{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/data-store/records/#create-a-new-record"%}}unique ROWID{{%/link%}} of the particular row that needs to be retrieved * {{%badge%}}**completion**{{%/badge%}}: 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: {{%code class="language-bash line-numbers"%}}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 )" ) } } {{%/code%}} <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 {{%badge%}}**maxRows**{{%/badge%}} 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 {{%badge%}}nextToken{{%/badge%}} during the subsequent iteration. During the first execution of the loop, the {{%badge%}}nextToken{{%/badge%}} string is not passed. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used in the code snippets below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance/"%}}Data Store Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;DATA_STORE_INSTANCE&gt;.getRows(nextToken : String?, maxRecord : String?, completion: @escaping (Result&lt;[ZCatalystRow], ZCatalystError&gt;) -&gt; Void){{%/code%}} **Parameters**: * {{%badge%}}**maxRows**{{%/badge%}}: The maximum number of rows to be fetched in this iteration * {{%badge%}}**nextToken**{{%/badge%}}: 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 {{%badge%}}maxRows{{%/badge%}} 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 {{%badge%}}**getRows()**{{%/badge%}} 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 {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance"%}}Data Store Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;DATA_STORE_INSTANCE&gt;.getRows(completion: @escaping (Result&lt;[ZCatalystRow], ZCatalystError&gt;) -> Void){{%/code%}} **Parameters**: * {{%badge%}}**completion**{{%/badge%}}: 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: {{%code class="language-bash line-numbers"%}}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 )" ) } } {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.633Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}, 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 {{%badge%}}**newRow()**{{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used here is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance"%}}Data Store Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;DATA_STORE_INSTANCE&gt;.newRow() -> ZCatalystRow{{%/code%}} A sample code snippet is shown below: {{%code class="language-bash"%}}let instance = ZCatalystApp.shared.getDataStoreInstance(tableIdentifier: “1096000000002071” ).newRow() //Replace this with your table ID{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.633Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} 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 {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in all the code sections below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-new-row-instance"%}}Row Instance page{{%/link%}}. ### If you know the data type of the column: {{%code class="language-bash"%}}let data : &lt;T&gt; = try &lt;ROW_INSTANCE&gt;.getValue(forKey: "&lt;columnName&gt;"){{%/code%}} **Parameters**: * {{%badge%}}**T**{{%/badge%}}: Datatype of the expected value * {{%badge%}}**columnName**{{%/badge%}}: Name of the column for that needs to be fetched A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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 )" ) } } {{%/code%}} ### If you don't know the data type of the column: {{%code class="language-bash"%}}let data : &lt;T&gt;? = &lt;ROW_INSTANCE&gt;.getValue(forKey: "&lt;columnName&gt;"){{%/code%}} **Parameters**: * {{%badge%}}**T**{{%/badge%}}: Datatype of the expected value * {{%badge%}}**columnName**{{%/badge%}}: Name of the column for that needs to be fetched A sample code snippet is shown below: {{%code class="language-bash"%}}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 )" ) } } {{%/code%}} ### Without using getValue(): {{%code class="language-bash"%}}let data : &lt;T&gt;? = &lt;ROW_INSTANCE&gt;[ "&lt;columnName&gt;" ]{{%/code%}} **Parameters**: * {{%badge%}}**T**{{%/badge%}}: Datatype of the expected value * {{%badge%}}**columnName**{{%/badge%}}: Name of the column for that needs to be fetched {{%code class="language-bash"%}}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 )" ) } } {{%/code%}} -------------------------------------------------------------------------------- title: "Get Row Data" description: "The actual data of a specific row can be retrieved." last_updated: "2026-03-18T07:41:08.634Z" 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 {{%badge%}}getData(){{%/badge%}} method, as shown below. This returns the row in a dictionary format. The {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance generated in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-new-row-instance"%}}Row Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;ROW_INSTANCE&gt;.getRow() -> [ String : Any? ]{{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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 )" ) } } {{%/code%}} -------------------------------------------------------------------------------- title: "Add Column Value to Row" description: "You can set the value for a single specific column in a row." last_updated: "2026-03-18T07:41:08.635Z" 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 {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code below is the instance created in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-new-row-instance"%}}Row Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;ROW_INSTANCE&gt;.setColumnValue( columnName : String, value : Any? ){{%/code%}} **Parameters**: * {{%badge%}}**columnName**{{%/badge%}}: The name of the column the value should be set for * {{%badge%}}**value**{{%/badge%}}: The value to be set for the column A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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 {{%/code%}} -------------------------------------------------------------------------------- title: "Create Rows" description: "You can create a single row or multiple rows in a data store table." last_updated: "2026-03-18T07:41:08.635Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table of the given instance using the {{%badge%}}**newRow()**{{%/badge%}} 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 {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-new-row-instance"%}}Row Instance page{{%/link%}}. The column value is set using the method discussed in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/add-column-value-to-row"%}}Add a Column Value page{{%/link%}}. **Parameters**: * {{%badge%}}**completion**{{%/badge%}}: 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%}}{{%bold%}}Note:{{%/bold%}} If a column was created with the {{%badge%}}{{%bold%}}is_unique{{%/bold%}}{{%/badge%}} or {{%badge%}}{{%bold%}}is_mandatory{{%/bold%}}{{%/badge%}} 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. {{%/note%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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 )" ) } } {{%/code%}} ### 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 {{%badge%}}**create()**{{%/badge%}} method, as shown in the code structure below. You must pass the array of {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}}, after creating the instance for each row as explained in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-new-row-instance"%}}Row Instance page{{%/link%}}. Their column value must be set as discussed in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/add-column-value-to-row"%}}Add a Column Value page{{%/link%}}. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance created earlier in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance/"%}}Data Store Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;DATA_STORE_INSTANCE&gt;.create(_ rows: [ ZCatalystRow ], completion: @escaping(Result&lt;[ZCatalystRow], ZCatalystError&gt;) -> Void){{%/code%}} **Parameters**: * {{%badge%}}**rows**{{%/badge%}}: The array of rows to be created. * {{%badge%}}**completion**{{%/badge%}}: 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: {{%code class="language-bash line-numbers"%}}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 )" ) } } {{%/code%}} -------------------------------------------------------------------------------- title: "Update Rows" description: "You can update a single row or multiple rows in a data store table." last_updated: "2026-03-18T07:41:08.636Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table using the {{%badge%}}**update()**{{%/badge%}} 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 {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-new-row-instance"%}}Row Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;ROW_INSTANCE&gt;.update( completion: @escaping(Result&lt;ZCatalystRow, ZCatalystError&gt;) -> Void){{%/code%}} **Parameters**: * {{%badge%}}**completion**{{%/badge%}}: 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: {{%code class="language-bash line-numbers"%}}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 )" ) } } {{%/code%}} ### Update all Rows You can update multiple row in a table by passing an array of the rows as an argument to the {{%badge%}}update(){{%/badge%}} 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 {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-new-row-instance"%}}creating the instance for each row{{%/link%}}, and passing the updated value of each corresponding column using the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/add-column-value-to-row"%}}Add Column Value method{{%/link%}}, as shown in the code below. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-new-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;DATA_STORE_INSTANCE&gt;.update(_ rows: [ ZCatalystRow ], completion: @escaping(Result&lt;[ZCatalystRow], ZCatalystError&gt;) -> Void){{%/code%}} **Parameters**: * {{%badge%}}**rows**{{%/badge%}}: The array of rows to be updated * {{%badge%}}**completion**{{%/badge%}}: 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: {{%code class="language-bash line-numbers"%}}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 )") } } {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.637Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} 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 {{%badge%}}**deleteRow()**{{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance/"%}}Data Store Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;DATA_STORE_INSTANCE&gt;.deleteRow( id : Int64, completion : @escaping( ZCatalystError? ) -> Void ){{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/data-store/records/#create-a-new-record"%}}unique ROWID{{%/link%}} of the row to be deleted. * {{%badge%}}**completion**{{%/badge%}}: 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: {{%code class="language-bash line-numbers"%}}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.") } } {{%/code%}} ### Delete a Row by passing the Row Instance You can delete a row from a table simply by calling the {{%badge%}}**delete()**{{%/badge%}} method for the row instance. The {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-new-row-instance"%}}Row Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;ROW_INSTANCE&gt;.delete(completion: @escaping( ZCatalystError? ) -> Void){{%/code%}} **Parameters**: * {{%badge%}}**completion**{{%/badge%}}: 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: {{%code class="language-bash line-numbers"%}} 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 )") } } {{%/code%}} ##### 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-03-18T07:41:08.651Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} {{%link href="/en/cloud-scale/help/file-store/introduction"%}}Catalyst File Store{{%/link%}} 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 {{%badge%}}**getFileStoreInstance()**{{%/badge%}} 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: {{%code class="language-bash"%}}ZCatalystApp.shared.getFileStoreInstance() -> ZCatalystFileStore{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.651Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} ### Get the Metadata of a Specific Folder You can obtain the details of a specific folder in the {{%link href="/en/cloud-scale/help/file-store/introduction"%}}File Store{{%/link%}}, by passing its unique Folder ID as an argument to the {{%badge%}}**getFolder()**{{%/badge%}} 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 {{%badge%}}&lt;FILE_STORE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/file-store/create-file-store-instance"%}}File Store Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;FILE_STORE_INSTANCE&gt;.getFolder( id : Int64, completion : @escaping ( Result&lt; ZCatalystFolder, ZCatalystError &gt; ) -> Void ){{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The unique {{%link href="/en/cloud-scale/help/file-store/implementation/#create-a-folder"%}}Folder ID{{%/link%}} of the folder to be retrieved * {{%badge%}}**completion**{{%/badge%}}: 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: {{%code class="language-bash line-numbers"%}}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 )" ) } } {{%/code%}} ### Get the Metadata of all Folders You can retrieve the details of all the folders available in your project's File Store using the {{%badge%}}**getFolders()**{{%/badge%}} method, as shown in the code syntax below. This can fetch the meta data of all the folders, and the files in them. The {{%badge%}}&lt;FILE_STORE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/file-store/create-file-store-instance"%}}File Store Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;FILE_STORE_INSTANCE&gt;.getFolders( completion : @escaping ( Result&lt; [ ZCatalystFolder ], ZCatalystError &gt; ) -> Void ){{%/code%}} **Parameters**: * {{%badge%}}**completion**{{%/badge%}}: 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: {{%code class="language-bash line-numbers"%}}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 )" ) } } {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.651Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} You can create an instance for a specific folder in the {{%link href="/en/cloud-scale/help/file-store/introduction"%}}Catalyst File Store{{%/link%}} using the {{%badge%}}**getFolderInstance()**{{%/badge%}} 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 {{%badge%}}getFolderInstance(){{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;FILE_STORE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/file-store/create-file-store-instance"%}}File Store Instance page{{%/link%}} {{%code class="language-bash"%}}&lt;FILE_STORE_INSTANCE&gt;.getFolderInstance( id : Int64 ) -> ZCatalystFolder{{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The unique {{%link href="/en/cloud-scale/help/file-store/implementation/#create-a-folder"%}}Folder ID{{%/link%}} of the folder that the instance object must be returned for A sample code snippet is shown below: {{%code class="language-bash"%}}let folderInstance = ZCatalystApp.shared.getFileStoreInstance().getFolderInstance(id : 3376000000427654) //Replace this with your Folder ID{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.652Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} ### Get the Metadata of a Specific File You can retrieve the details of a specific file in the {{%link href="/en/cloud-scale/help/file-store/introduction"%}}File Store{{%/link%}}, by passing its unique File ID as an argument to the {{%badge%}}**getFile()**{{%/badge%}} 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 {{%badge%}}&lt;FOLDER_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/file-store/create-folder-instance"%}}Folder Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;FOLDER_INSTANCE&gt;.getFile( fileId : Int64, completion : @escaping ( Result&lt; ZCatalystFile, ZCatalystError &gt; ) -> Void ){{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The unique {{%link href="/en/cloud-scale/help/file-store/implementation/#upload-a-file-into-a-folder"%}}File ID{{%/link%}} of the file to be retrieved * {{%badge%}}**completion**{{%/badge%}}: 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: {{%code class="language-bash line-numbers"%}}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 )" ) } } {{%/code%}} ### Get the Metadata of all Files You can retrieve the details of all the files available in a specific folder using the {{%badge%}}**getFiles()**{{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;FOLDER_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/file-store/create-folder-instance"%}}Folder Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;FOLDER_INSTANCE&gt;.getFiles( completion : @escaping ( Result&lt; [ ZCatalystFile ], ZCatalystError &gt; ) -> Void ){{%/code%}} **Parameters**: * {{%badge%}}**completion**{{%/badge%}}: 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: {{%code class="language-bash line-numbers"%}}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 )" ) } } {{%/code%}} -------------------------------------------------------------------------------- title: "Upload a File" description: "You can upload a file to an existing folder in the File Store." last_updated: "2026-03-18T07:41:08.652Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} You can upload a file to an existing folder in the {{%link href="/en/cloud-scale/help/file-store/introduction"%}}File Store{{%/link%}}. After the file is uploaded in the folder, a unique {{%link href="/en/cloud-scale/help/file-store/implementation/#create-a-folder"%}}File ID{{%/link%}} 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 {{%badge%}}&lt;FOLDER_INSTANCE&gt;{{%/badge%}} used in the code sections of all the methods below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/file-store/create-folder-instance"%}}Folder Instance page{{%/link%}}. 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 {{%badge%}}upload(){{%/badge%}} method: {{%code class="language-bash"%}}&lt;FOLDER_INSTANCE&gt;.upload( fileRefId : String, filePath : URL, fileUploadDelegate : ZCatalystFileUploadDelegate ){{%/code%}} **Parameters**: * {{%badge%}}**fileRefId**{{%/badge%}}: A unique reference ID to identify a specific upload task. This is returned in the Delegate method after the task is successfully completed. * {{%badge%}}**filePath**{{%/badge%}}: The file path of the file to be uploaded in the local system. * {{%badge%}}**fileUploadDelegate**{{%/badge%}}: An instance of the type {{%badge%}}ZCatalystFileUploadDelegate{{%/badge%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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 {{%/code%}} #### ii. By passing the file data You can pass the file data along with the delegate method object as the arguments to the {{%badge%}}upload(){{%/badge%}} method: {{%code class="language-bash"%}}&lt;FOLDER_INSTANCE&gt;.upload( fileRefId : String, fileName : String, fileData : Data, fileUploadDelegate : ZCatalystFileUploadDelegate ){{%/code%}} **Parameters**: * {{%badge%}}**fileRefId**{{%/badge%}}: A unique reference ID to identify a specific upload task. This is returned in the Delegate method after the task is successfully completed. * {{%badge%}}**fileName**{{%/badge%}}: The name of the file to be uploaded. * {{%badge%}}**fileData**{{%/badge%}}: The contents of the file of the type {{%badge%}}Data{{%/badge%}} * {{%badge%}}**fileUploadDelegate**{{%/badge%}}: An instance of the type {{%badge%}}ZCatalystFileUploadDelegate{{%/badge%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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 {{%/code%}} ### 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 {{%badge%}}upload(){{%/badge%}} method: {{%code class="language-bash"%}}&lt;FOLDER_INSTANCE&gt;.upload( filePath : URL, completion : @escaping ( Result&lt; ZCatalystFile, ZCatalystError &gt; ) -> Void ){{%/code%}} **Parameters**: * {{%badge%}}**filePath**{{%/badge%}}: The file path of the file to be uploaded in the local system. * {{%badge%}}**completion**{{%/badge%}}: 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: {{%code class="language-bash line-numbers"%}}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 )" ) } } {{%/code%}} #### ii. By passing the file data You can pass the file data along with the completion handler as the arguments to the {{%badge%}}upload(){{%/badge%}} method: {{%code class="language-bash"%}}&lt;FOLDER_INSTANCE&gt;.upload( fileName : String, fileData : Data, completion: @escaping (Result&lt;ZCatalystFile, ZCatalystError&gt;) -> Void ){{%/code%}} **Parameters**: * {{%badge%}}**fileName**{{%/badge%}}: The name of the file to be uploaded. * {{%badge%}}**fileData**{{%/badge%}}: The contents of the file of the type {{%badge%}}Data{{%/badge%}}. * {{%badge%}}**completion**{{%/badge%}}: 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: {{%code class="language-bash line-numbers"%}}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 )" ) } } } {{%/code%}} -------------------------------------------------------------------------------- title: "Download a File" description: "You can download a file from an existing folder in the File Store." last_updated: "2026-03-18T07:41:08.652Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} You can download a file from an existing folder in the {{%link href="/en/cloud-scale/help/file-store/introduction"%}}File Store{{%/link%}} by calling the {{%badge%}}**download()**{{%/badge%}} 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 {{%badge%}}&lt;FILE_INSTANCE&gt;{{%/badge%}} 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: {{%code class="language-bash"%}}&lt;FILE_INSTANCE&gt;.download( fileDownloadDelegate : ZCatalystFileDownloadDelegate ){{%/code%}} **Parameters**: * {{%badge%}}**FileDownloadDelegate**{{%/badge%}}: An instance of the type {{%badge%}}ZCatalystFileDownloadDelegate{{%/badge%}}. A sample code snippet is shown below: {{%code class="language-bash"%}}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 )" ) } } {{%/code%}} ### Through a Completion Handler The file is downloaded through a completion handler in this method, as shown in the code syntax below: {{%code class="language-bash"%}}&lt;FILE_INSTANCE&gt;.download( completion : @escaping ( Result&lt; ( Data, URL ), ZCatalystError &gt; ) -> Void ){{%/code%}} **Parameters**: * {{%badge%}}**completion**{{%/badge%}}: 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: {{%code class="language-bash line-numbers"%}}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 )" ) } } {{%/code%}} ##### 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-03-18T07:41:08.652Z" 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 {{%link href="/en/cloud-scale/help/push-notifications/introduction" %}}Catalyst Push notifications{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} The {{%bold%}}first five steps{{%/bold%}} are covered in detail in the {{%link href="/en/cloud-scale/help/push-notifications/ios" %}}Push Notifications- iOS help section{{%/link%}}. 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.{{%/note%}} <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 {{%badge%}}registerNotification(){{%/badge%}} method with the required parameters as shown in the following code snippet: {{%code class="language-bash line-numbers"%}}ZCatalystApp.shared.registerNotification(token: e5********21, appID: 12345678, testDevice: false) { error in if let error = error { return print("Error : \( error )") } print("Registered successfully") } {{%/code%}} **Parameters:** * {{%badge%}}token{{%/badge%}}: Device token obtained after {{%link href="/en/cloud-scale/help/push-notifications/ios/#configure-and-enroll-for-ios-push-notifications" %}}registering the device for remote push notifications with APNS{{%/link%}}. * {{%badge%}}appID{{%/badge%}}: The {{%badge%}}notificationAppID{{%/badge%}} obtained from the {{%badge%}}AppConfigurationDevelopment.plist{{%/badge%}}/ {{%badge%}}AppConfigurationProduction.plist{{%/badge%}} file generated by Catalyst for your app when you {{%link href="/en/sdk/ios/v2/setup/" %}}registered your iOS app in Catalyst{{%/link%}}. * {{%badge%}}testDevice{{%/badge%}}: The value is set to {{%badge%}}true{{%/badge%}} for test devices, and set to {{%badge%}}false{{%/badge%}} for production devices. <br> {{%note%}}{{%bold%}}Note:{{%/bold%}} You can register a maximum of 10 iOS devices as test devices to test iOS push notifications. {{%/note%}} 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 {{%link href="/en/cloud-scale/help/push-notifications/ios/#test-ios-push-notifications" %}}this help section{{%/link%}}. You can also send test notifications from the {{%link href="/en/api/code-reference/cloud-scale/push-notifications/ios/send-ios-push-notifications/#SendiOSPushNotifications" %}}API{{%/link%}}. Refer to the {{%link href="/en/sdk/java/v1/cloud-scale/push-notifications/send-notifications/"%}}Java{{%/link%}}, {{%link href="/en/sdk/nodejs/v2/cloud-scale/push-notifications/send-notifications/"%}}Node.js{{%/link%}}, and {{%link href="/en/sdk/python/v1/cloud-scale/push-notifications/send-notifications/"%}}Python{{%/link%}} 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-03-18T07:41:08.653Z" 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 {{%badge%}}deregisterNotification(){{%/badge%}} method as shown below. {{%code class="language-javascript line-numbers"%}}ZCatalystApp.shared.deregisterNotification(token: e5********21, appID: 1234567, testDevice: true) { error in if let error = error { return print("Error : \( error )") } print("UnRegistered successfully") } {{%/code%}} **Parameters:** * {{%badge%}}token{{%/badge%}}: {{%badge%}}token{{%/badge%}}: Device token obtained after {{%link href="/en/cloud-scale/help/push-notifications/ios/#configure-and-enroll-for-ios-push-notifications" %}}registering the device for remote push notifications with APNS{{%/link%}}. * {{%badge%}}appID{{%/badge%}}: The {{%badge%}}notificationAppID{{%/badge%}} obtained from the {{%badge%}}AppConfigurationDevelopment.plist{{%/badge%}}/ {{%badge%}}AppConfigurationProduction.plist{{%/badge%}} file generated by Catalyst for your app when you {{%link href="/en/sdk/ios/v2/setup/" %}}registered your iOS app in Catalyst{{%/link%}}. * {{%badge%}}testDevice{{%/badge%}}: The value is set to {{%badge%}}true{{%/badge%}} for test devices, and set to {{%badge%}}false{{%/badge%}} 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-03-18T07:41:08.653Z" 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 {{%link href="/en/cloud-scale/help/search-integration/introduction"%}}Catalyst Search{{%/link%}} enables data searching in the indexed columns of the tables in the {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}. It allows you to perform powerful searches through volumes of data with a single search query. ### Search Data in Tables The {{%badge%}}**search()**{{%/badge%}} 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 {{%badge%}}search(){{%/badge%}} method, as shown in the code syntax below: {{%code class="language-bash"%}}ZCatalystApp.shared.search( searchOptions : ZCatalystSearchOptions, completion : @escaping( Result&lt; [ String : Any ], ZCatalystError &gt; ) -> Void ){{%/code%}} **Parameters**: * {{%badge%}}**searchOptions**{{%/badge%}}: The instance of the {{%badge%}}ZCatalystSearchOptions{{%/badge%}} class to be passed to the {{%badge%}}search(){{%/badge%}} method. * {{%badge%}}**completion**{{%/badge%}}: 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 {{%badge%}}searchOptions{{%/badge%}} in the following way: {{%code class="language-bash line-numbers"%}}ZCatalystSearchOptions(searchText: String, searchColumns : [ TableColumns ]) .add(searchColumns : TableColumns) .add(displayColumns : TableColumns) .add(sortColumn : String, in table : String) TableColumns( tableName : String ) TableColumns.add( column : String ) {{%/code%}} A sample code snippet of a search execution is shown below: {{%code class="language-bash line-numbers"%}}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 )" ) } } {{%/code%}} ##### Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page provides an overview of the mobile SDK methods required to perform Stratus operations." last_updated: "2026-03-18T07:41:08.653Z" 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 {{%link href="/en/cloud-scale/help/stratus/introduction" %}}Stratus{{%/link%}} is Catalyst's robust and powerful storage solution. You can store data of any format in the form of {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}Objects{{%/link%}} in containers called {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}}. Each Bucket and every individual object in the bucket has a secure {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} and {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/#bucket-url" %}}Bucket URL{{%/link%}}. You can perform upload and download operations on objects and even provide {{%link href="/en/cloud-scale/help/stratus/stratus-permissions/#custom-permissions" %}}custom permissions{{%/link%}} 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>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-instance/" %}}Create Bucket Instance{{%/link%}}</li> </ul> </td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/get-object/" %}}Get Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/get-object/#get-all-objects" %}}Get All Objects{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/download-object/" %}}Download Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/download-object/#download-an-object-completion-callback" %}}Download an Object (Completion Callback){{%/link%}}</li> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/download-object/#download-an-object-with-progress" %}}Download an Object (With Progress){{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/upload-object/" %}}Upload Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/upload-object/#upload-an-object-using-path-completion-callback" %}}Upload an Object Using Path (Completion Callback){{%/link%}}</li> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/upload-object/#upload-an-object-using-file-name-and-file-data-completion-callback" %}}Upload an Object Using File Name and File Data (Completion Callback){{%/link%}}</li> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/upload-object/#upload-an-object-using-path-with-progress" %}}Upload an Object Using Path (With Progress){{%/link%}}</li> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/upload-object/#upload-an-object-using-file-name-and-file-data-with-progress" %}}Upload an Object Using File Name and File Data (With Progress){{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/delete-object/" %}}Delete Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/delete-object/#delete-a-single-object" %}}Delete a Single Object{{%/link%}}</li> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/delete-object/#delete-multiple-objects" %}}Delete Multiple Objects{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/delete-path/" %}}Delete Path{{%/link%}}</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-03-18T07:41:08.653Z" 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 {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}} in Stratus. {{%code class="language-bash"%}}let bucket = ZCatalystStratus.getBucketInstance( name : "{bucket_name}" ){{%/code%}} -------------------------------------------------------------------------------- title: "Get Object" description: "This page lists the iOS SDK method to get an object or objects from the bucket." last_updated: "2026-03-18T07:41:08.654Z" 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 {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for the bucket: * If you do not pass the {{%badge%}}versionId{{%/badge%}}, then only the **latest object** will be returned. * To retrieve a specific version, use the {{%badge%}}versionId{{%/badge%}} 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>{{%badge%}}objectKey{{%/badge%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the object name.</td> </tr> <tr> <td>{{%badge%}}versionId{{%/badge%}}</td> <td>An {{%bold%}}optional{{%/bold%}} parameter. Will hold the unique version ID of the required object's version.</td> </tr> </tbody> </table> {{%code class="language-bash"%}}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 )") } }{{%/code%}} 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>{{%badge%}}prefix{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. This will get the objects that match the prefix value.</td> </tr> <tr> <td>{{%badge%}}maxKeys{{%/badge%}}</td> <td>{{%bold%}}Number{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. Will contain the maximum limit of objects that can be listed by pagination.</td> </tr> <tr> <td>{{%badge%}}continuation_token{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If the response was truncated, the value of this key must be passed as {{%badge%}}continuation_token{{%/badge%}} to the same method for retrieving the next set of objects.</td> </tr> </tbody> </table> {{%code class="language-bash"%}}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 )") } }{{%/code%}} 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-03-18T07:41:08.654Z" 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>{{%badge%}}fromCache{{%/badge%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To be used to specify whether this file has to be retrieved from the cache or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> </tbody> </table> {{%code class="language-bash"%}}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 )") } }{{%/code%}} ### 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>{{%badge%}}fromCache{{%/badge%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To be used to specify whether this file has to be retrieved from the cache or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}fileRefId{{%/badge%}}</td> <td>A unique ID to refer to the file that is being uploaded.</td> </tr> <tr> <td>{{%badge%}}fileUploadDelegate{{%/badge%}}</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> {{%code class="language-bash"%}}objectInstance.download( fromCache : true, fileRefId : "{file_ref_id}", fileDownloadDelegate : self ){{%/code%}} -------------------------------------------------------------------------------- title: "Upload Object" description: "This page lists the iOS SDK methods to upload an object to the bucket." last_updated: "2026-03-18T07:41:08.654Z" 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 {{%link href="/en/cloud-scale/help/stratus/objects/upload-object/" %}}upload objects{{%/link%}} to the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}bucket{{%/link%}} If you do not have {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} 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 {{%badge%}}versionId{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ### Upload an Object Using Path (Completion Callback) This SDK can be used to upload an object to the bucket using its {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w30p">Parameter Name</th> <th class="w70p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}filePath{{%/badge%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the complete path of the location from where the file needs to be uploaded from.</td> </tr> <tr> <td>{{%badge%}}fileName{{%/badge%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. Will hold the complete name of the object.</li> <li>{{%bold%}}Default Value{{%/bold%}}: Will hold the value of the last path value that was used.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}shouldCompress{{%/badge%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> </tbody> </table> {{%code class="language-bash"%}}bucketInstance.upload( filePath : "{file_path}", fileName : "{file_name}", shouldCompress : true ) { error in if let error = error { print("Error : \( error )") return } print("Uploaded Successfully") }{{%/code%}} ### 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>{{%badge%}}fileName{{%/badge%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the complete name of the object that needs to be uploaded.</td> </tr> <tr> <td>{{%badge%}}data{{%/badge%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. The object that needs to be uploaded in data format.</td> </tr> <tr> <td>{{%badge%}}shouldCompress{{%/badge%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> </tbody> </table> {{%code class="language-bash"%}}bucketInstance.upload( fileName : "{file_name}", data : "{file_data}", shouldCompress : false ) { error in if let error = error { print("Error : \( error )") return } print("Uploaded Successfully") }{{%/code%}} ### Upload an Object Using Path (With Progress) This SDK can be used to upload an object to the bucket using its {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}. 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>{{%badge%}}fileRefId{{%/badge%}}</td> <td>A unique ID to refer to the file that is being uploaded.</td> </tr> <tr> <td>{{%badge%}}filePath{{%/badge%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the complete path of where the file should be uploaded.</td> </tr> <tr> <td>{{%badge%}}fileName{{%/badge%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. Will hold the complete name of the object.</li> <li>{{%bold%}}Default Value{{%/bold%}}: Will hold the value of the last path value that was used.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}shouldCompress{{%/badge%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}fileUploadDelegate{{%/badge%}}</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> {{%code class="language-bash"%}}bucketInstance.upload( fileRefId : "{file_ref_id}", filePath : "{file_path}", fileName : "{file_name}", shouldCompress : true, fileUploadDelegate : self ){{%/code%}} ### 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>{{%badge%}}fileRefId{{%/badge%}}</td> <td>A unique ID to refer to the file that is being uploaded.</td> </tr> <tr> <td>{{%badge%}}data{{%/badge%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. The object that needs to be uploaded in data format.</td> </tr> <tr> <td>{{%badge%}}fileName{{%/badge%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. Will hold the complete name of the object.</li> <li>{{%bold%}}Default Value{{%/bold%}}: Will hold the value of the last path value that was used.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}shouldCompress{{%/badge%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}fileUploadDelegate{{%/badge%}}</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> {{%code class="language-bash"%}}bucketInstance.upload( fileRefId : "{file_ref_id}", fileName : "{file_name}", data : "{file_data}", shouldCompress : true, fileUploadDelegate : self){{%/code%}} -------------------------------------------------------------------------------- title: "Delete Object" description: "This page lists the iOS SDK methods to delete an object or objects from the bucket." last_updated: "2026-03-18T07:41:08.654Z" 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. {{%code class="language-bash"%}}objectInstance.delete() { error in if let error = error { print("Error : \( error )") return } print("Deleted Successfully") }{{%/code%}} ### Delete Multiple Objects The following SDK method can be used to delete multiple objects from the bucket. {{%code class="language-bash"%}}bucketInstance.deleteObjects( deletableObjectInstances ) { error in if let error = error { print("Error : \( error )") return } print("Deleted Successfully") }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.654Z" 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 {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}. {{%code class="language-bash"%}}bucketInstance.deletePath("{path_to_be_deleted}") { error in if let error = error { print("Error : \( error )") return } print("Path Deleted Successfully") }{{%/code%}} ##### 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-03-18T07:41:08.657Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}. 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 {{%badge%}}**execute()**{{%/badge%}} method. You can learn about the ZCQL syntax from the {{%link href="/en/cloud-scale/help/zcql/introduction"%}}ZCQL help page{{%/link%}}. You must pass an instance of {{%badge%}}**ZCatalystSelectQuery**{{%/badge%}} to the {{%badge%}}execute(){{%/badge%}} method, as shown in the code syntax of a ZCQL query execution below. {{%code class="language-bash"%}}&lt;ZCatalystApp&gt;.execute( query : ZCatalystSelectQuery, completion: @escaping (Result&lt;[ [ String : Any ] ], ZCatalystError&gt;) -> Void){{%/code%}} **Parameters**: * {{%badge%}}**query**{{%/badge%}}: The instance of the type {{%badge%}}ZCatalystSelectQuery{{%/badge%}} to be passed * {{%badge%}}**completion**{{%/badge%}}: 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 {{%badge%}}query{{%/badge%}} instance for the ZCatalystSelectQuery for the statements supported by ZCQL, in the following way: {{%code class="language-bash line-numbers"%}}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 {{%/code%}} A sample code snippet of a ZCQL query execution is shown below: {{%code class="language-bash line-numbers"%}}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 )" ) } } } {{%/code%}} #### General -------------------------------------------------------------------------------- title: "Get Current Time Zone" description: "This enables you to fetch the current time zone active for your project." last_updated: "2026-03-18T07:41:08.658Z" 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 {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/#change-the-time-zone-of-the-project"%}}time zone{{%/link%}} 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 {{%badge%}}getCurrentTimeZone(){{%/badge%}} method as shown in the syntax below. {{%code class="language-bash line-numbers"%}}public func getCurrentTimeZone( completion : @escaping ( Result&lt;TimeZone, ZCatalystError&gt; ) ->Void ){{%/code%}} #### 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-03-18T07:41:08.658Z" 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 {{%link href="/en/serverless/help/functions/introduction"%}}Catalyst functions{{%/link%}} 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 {{%badge%}}**getFunctionInstance()**{{%/badge%}} 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 {{%badge%}}getFunctionInstance(){{%/badge%}} method and create an instance for it: {{%code class="language-bash"%}}ZCatalystApp.shared.getFunctionInstance( id : Int64 ) -> ZCatalystFunction{{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The unique {{%link href="/en/serverless/help/functions/introduction"%}}Function ID{{%/link%}} of the function. A sample code snippet is shown below: {{%code class="language-bash"%}}let function_instance = ZCatalystApp.shared.getFunctionInstance ( id : 1096000000002053 ) //Replace this with your Function ID{{%/code%}} #### ii. By passing the name of the function You can pass the function's API name as an argument to the {{%badge%}}getFunctionInstance(){{%/badge%}} method and create an instance for it: {{%code class="language-bash"%}}ZCatalystApp.shared.getFunctionInstance( name : String ) -> ZCatalystFunction{{%/code%}} **Parameters**: * {{%badge%}}**name**{{%/badge%}}: The name of the function configured in Catalyst A sample code snippet is shown below: {{%code class="language-bash"%}}let function_instance = ZCatalystApp.shared.getFunctionInstance ( name : "LocalBackup") //Replace this with you function name{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.658Z" 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 {{%link href="/en/serverless/help/functions/introduction"%}}Catalyst function{{%/link%}} 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%}}{{%bold%}}Note{{%/bold%}}: 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.{{%/note%}} The {{%badge%}}&lt;FUNCTION_INSTANCE&gt;{{%/badge%}} used in all the code sections below is the instance defined in the {{%link href="/en/sdk/ios/v2/serverless/functions/create-function-instance"%}}Function Instance page{{%/link%}}. ### Execute a GET function You can execute a function of the HTTP GET type by passing the parameters to the {{%badge%}}**executeGet()**{{%/badge%}} method: {{%code class="language-bash line-numbers"%}}&lt;FUNCTION_INSTANCE&gt;.executeGet( parameters params : [ String : Any ]? = nil, completion : @escaping( Result< String, ZCatalystError &gt; ) -&gt; Void ) {{%/code%}} **Parameters**: * {{%badge%}}**params**{{%/badge%}}: The parameters to be passed to the function as a Hash map A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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 )") } } {{%/code%}} ### Execute a PUT function You can execute a function of the HTTP PUT type, by passing the parameters to the {{%badge%}}**executePut()**{{%/badge%}} method as a Hash map. You can pass the payload in the PUT request to this method as a Hash map argument as well: {{%code class="language-bash line-numbers"%}}&lt;FUNCTION_INSTANCE&gt;.executePut( parameters params : [ String : Any ]? = nil, body : [ String : Any ]? = nil, completion : @escaping( Result< String, ZCatalystError > ) -> Void ) {{%/code%}} **Parameters**: * {{%badge%}}**params**{{%/badge%}}: The parameters to be passed to the function as a Hash map * {{%badge%}}**body**{{%/badge%}}: The data payload to be passed as a Hash map A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}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 )") } } {{%/code%}} ### Execute a POST function You can execute a function of the HTTP POST type, by passing the parameters to the {{%badge%}}**executePOST()**{{%/badge%}} method as a Hash map. You can pass the payload in the POST request to this method as a Hash map argument as well: {{%code class="language-bash line-numbers"%}}&lt;FUNCTION_INSTANCE&gt;.executePost( parameters params : [ String : Any ]? = nil, body : [ String : Any ]? = nil, completion : @escaping( Result< String, ZCatalystError > ) -> Void ) {{%/code%}} **Parameters**: * {{%badge%}}**params**{{%/badge%}}: The parameters to be passed to the function as a Hash map * {{%badge%}}**body**{{%/badge%}}: The data payload to be passed as a Hash map A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}} 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 )") } } {{%/code%}} ## 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-03-18T07:41:08.659Z" 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 8** * **Java 11** * **Java 17** ### 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. {{%code class="language-java"%}}ZCProject.initProject();{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} In Java SDK it is not mandatory to include this initialize command as it will be automatically initialized in functions. {{%/note%}} #### 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 {{%link href="/en/cloud-scale/help/data-store/introduction/" %}}Data Store{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}}<br /> * It is not mandatory for you to initialize the projects with scopes. By default, a project that is initialized will have {{%italics%}}Admin{{%/italics%}} 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 {{%link href="/en/cloud-scale/help/data-store/introduction/" %}}Data Store{{%/link%}}, {{%link href="/en/cloud-scale/help/file-store/introduction/" %}}File Store{{%/link%}}, and {{%link href="/en/cloud-scale/help/zcql/introduction/" %}}ZCQL{{%/link%}}. * Depending on how you engineer your business logic, you can decide if your end-users can perform {{%italics%}}Admin{{%/italics%}} or {{%italics%}}User{{%/italics%}} actions. This is decided based on the {{%link href="/en/cloud-scale/help/authentication/user-management/roles/introduction/" %}}role{{%/link%}} 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 {{%italics%}}Scopes & Permissions{{%/italics%}} section of the {{%link href="/en/cloud-scale/help/data-store/scopes-and-permissions/" %}}Data Store{{%/link%}} and {{%link href="/en/cloud-scale/help/file-store/implementation/#set-permissions-for-a-folder" %}}File store{{%/link%}}.{{%/note%}} 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** {{%code class="language-java"%}}ZCProject adminProject = ZCProject.initProject("admin", ZCUserScope.ADMIN); ZCQL.getInstance(adminProject).executeQuery("select * from test"); {{%/code%}} * **Initialize the Catalyst project with User Scope** {{%code class="language-java"%}}ZCProject userProject = ZCProject.initProject("user", ZCUserScope.USER); ZCQL.getInstance().executeQuery("select * from test"); {{%/code%}} ### Class Hierarchy All the Catalyst components are modelled as Java classes with their members and methods defining the behaviour of the component. * {{%badge%}}ZCProject{{%/badge%}} 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, {{%badge%}}ZCDataStore{{%/badge%}} will have member functions to access tables that can use the functions of its immediate child class {{%badge%}}ZCTable{{%/badge%}} 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 {{%badge%}}getInstance(){{%/badge%}} method to get its dummy object and methods to get dummy objects of its child entities. {{%note%}}{{%bold%}}Note:{{%/bold%}} {{%badge%}}getInstance(){{%/badge%}} 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.{{%/note%}} To retrieve the properties of a Catalyst component, call the component's object with its {{%badge%}}getInstance(){{%/badge%}} 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 {{%badge%}}ZCException{{%/badge%}} defined by our Java SDK. We have {{%badge%}}ZCServerException{{%/badge%}} and {{%badge%}}ZCClientException{{%/badge%}} 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-03-18T07:41:08.659Z" 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 {{%link href="/en/release-notes/sdk/" %}}Release Notes section{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ### 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 {{%link href="/en/tools/maven-tools/introduction/" %}}Maven for Java{{%/link%}} development {{%tabs%}} {{%tab "Download the SDK from the console" %}} #### Install using the static download URL available in the console 1. Go to the {{%link href="http://console.catalyst.zoho.com" %}}Catalyst console{{%/link%}} 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 {{%badge%}}**lib**{{%/badge%}} folder of your java function. The {{%badge%}}**lib**{{%/badge%}} folder will be present in the source directory of your Java function. {{%note%}}{{%bold%}}Note:{{%/bold%}} * You need to paste the SDK content in the {{%badge%}}{{%bold%}}lib{{%/bold%}}{{%/badge%}} 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 {{%link href="/en/release-notes/sdk/" %}}release notes{{%/link%}}.{{%/note%}} {{%/tab%}} {{%tab "Update through Maven" %}} #### Update SDK Through Maven To update Java SDK through {{%link href="/en/tools/maven-tools/introduction/" %}}Maven{{%/link%}}, you will be need to make the following changes to your {{%link href="/en/tools/maven-tools/pom-xml/" %}}{{%badge%}}pom.xml{{%/badge%}}{{%/link%}} file present in your project directory. {{%code class="language-xml" scroll="set-scroll" %}} &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; {{%/code%}} 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%}}{{%bold%}}Note:{{%/bold%}} * You need to apply the same changes in every {{%badge%}}pom.xml{{%/badge%}} 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 {{%link href="/en/release-notes/sdk/" %}}release notes{{%/link%}}.{{%/note%}} {{%/tab%}} {{%/tabs%}} -------------------------------------------------------------------------------- title: "Integrate SDK in Third-Party Apps" last_updated: "2026-03-18T07:41:08.660Z" 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 {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}Catalyst Cloud Scale Stratus{{%/link%}} or a data pipeline running on Amazon Web Services EC2 can push customer data into {{%link href="/en/cloud-scale/help/data-store/introduction/" %}}Catalyst Cloud Scale Data Store{{%/link%}} using {{%link href="/en/cloud-scale/help/zcql/introduction/" %}}Catalyst Cloud Scale ZCQL{{%/link%}} 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 {{%link href="/en/getting-started/catalyst-projects/" %}}Catalyst project{{%/link%}}. * **ZAID (Zoho Account ID):** A unique portal identifier assigned by Catalyst to link your project with the {{%link href="/en/deployment-and-billing/environments/introduction/" %}}Catalyst environment{{%/link%}} ({{%link href="/en/deployment-and-billing/environments/development-environment/" %}}development{{%/link%}} or {{%link href="/en/deployment-and-billing/environments/production-environment/" %}}production{{%/link%}}). * **Environment:** The {{%link href="/en/deployment-and-billing/environments/introduction/" %}}target environment{{%/link%}} ({{%link href="/en/deployment-and-billing/environments/development-environment/" %}}development{{%/link%}} or {{%link href="/en/deployment-and-billing/environments/production-environment/" %}}production{{%/link%}}) 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 {{%link href="/en/getting-started/catalyst-projects/#introduction-to-catalyst-projects" %}}Catalyst project{{%/link%}} in the {{%link href="https://console.catalyst.zoho.com/" %}}console{{%/link%}} by using the steps mentioned in {{%link href="/en/getting-started/catalyst-projects/#create-a-catalyst-project" %}}this help page{{%/link%}}. 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 ({{%link href="/en/deployment-and-billing/environments/development-environment/" %}}development{{%/link%}} or {{%link href="/en/deployment-and-billing/environments/production-environment/" %}}production{{%/link%}}). To retrieve the ZAID, setting up the {{%link href="/en/cloud-scale/help/authentication/introduction/" %}}Catalyst CloudScale Authentication{{%/link%}} component is mandatory. However, using it for your application's authentication flow is optional. To fetch the ZAID: i. Navigate to the {{%link href="https://docs.catalyst.zoho.com/en/cloud-scale/" %}}Catalyst CloudScale{{%/link%}} service in the console and under **Security & Identity**, select **Authentication**. <br> ii. You will need to set up {{%link href="/en/cloud-scale/help/authentication/native-catalyst-authentication/introduction/" %}}Native Catalyst Authentication{{%/link%}}, 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 {{%link href="/en/cloud-scale/help/authentication/public-signup/" %}}Public Signup{{%/link%}} option to display the signup feature in your login component, allowing new users to register and access your application. You can refer to the {{%link href="/en/cloud-scale/help/authentication/native-catalyst-authentication/hosted-authentication-type/introduction/" %}}hosted authentication help page{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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. {{%link href="/en/cloud-scale/help/authentication/social-logins/configuring-social-logins/" %}}Learn how to obtain the ZAID for a specific social login{{%/link%}}.{{%/note%}} <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 {{%link href="https://api-console.zoho.com" %}}API console{{%/link%}}. 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. {{%link href="/en/api/oauth2/scopes/#Scopes" %}}Learn more about available scopes{{%/link%}}. 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. {{%link href="/en/api/oauth2/generate-grant-token/#GenerateGrantToken" %}}Learn more about generating a grant token{{%/link%}}. <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 {{%link href="/en/api/oauth2/generate-access-and-refresh-token/#GenerateAccessandRefreshToken" %}}this help page{{%/link%}}. You can also refresh the access token by using the steps listed in {{%link href="/en/api/oauth2/refresh-access-token/#RefreshAccessToken" %}}this page{{%/link%}}. 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 {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}Catalyst CloudScale Stratus{{%/link%}}. <br> ### Code Snippet {{%code class="language-java"%}}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()); } } } } {{%/code%}} #### 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-03-18T07:41:08.661Z" 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 {{%link href="/en/cloud-scale/help/authentication/introduction" %}}Authentication help document{{%/link%}}. ### Add New User When a user has signed up to a Catalyst application, unique identification values like {{%badge%}}ZUID{{%/badge%}} and {{%badge%}}userID{{%/badge%}} are created for them. The user is also assigned to an organization by Catalyst. You can learn more about this from the {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/" %}}Users help page{{%/link%}}. 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 {{%badge%}}ZCSignUpData{{%/badge%}} class. The user registration process is handled by the {{%badge%}}registerUser(){{%/badge%}} method, after obtaining an instance of the {{%badge%}}ZCUser{{%/badge%}} class. {{%note%}} {{%bold class="bold-primary" %}}Note:{{%/bold%}} * You will be able to add only 25 users in your application in the {{%link href="/en/deployment-and-billing/environments/development-environment" %}}development environment{{%/link%}}. After you deploy your application to production, you can include any number of end-users in it. * You must provide the values for {{%badge%}}EmailId{{%/badge%}} and {{%badge%}}FirstName{{%/badge%}} to register a user mandatorily. * You can obtain the {{%badge%}}RoleId{{%/badge%}} 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 {{%link href="/en/cloud-scale/help/mail/email-configuration/" %}}Catalyst Mail Component{{%/link%}} and get it verified before using it in the SDK code.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.users.PlatformType; import com.zc.component.users.ZCSignUpData; import com.zc.component.users.ZCUser; import com.zc.component.ZCMailTemplateDetails; {{% /panel_without_adjustment %}} {{%code class="language-java line-numbers"%}}//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); {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.661Z" 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 {{%badge%}}ZAAID{{%/badge%}} 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 {{%link href="/en/cloud-scale/help/authentication/authentication-types/" %}}authentication types{{%/link%}}, gets added through the {{%link href="/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser" %}}Add User API{{%/link%}} or through the {{%link href="/en/cloud-scale/help/authentication/user-management/users/implementation/#adding-a-new-user-from-the-console" %}}Add User button{{%/link%}} in the console. The SDK snippet below demonstrates fetching all the Org IDs generated while adding new users to your application using the {{%badge%}}getAllOrgs(){{%/badge%}} method. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.users.ZCUser; {{% /panel_without_adjustment %}} {{%code class="language-java line-numbers"%}}ZCUser user = ZCUser.getInstance(); user.getAllOrgs(); {{%/code%}} <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-03-18T07:41:08.661Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/" %}}user{{%/link%}} to an existing orginization without creating a new organization. {{%note%}} {{%bold class="bold-primary" %}}Note: {{%/bold%}} * {{%badge%}}FirstName{{%/badge%}}, {{%badge%}}EmailId{{%/badge%}} and {{%badge%}}OrgID{{%/badge%}}are 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 {{%link href="/en/cloud-scale/help/mail/email-configuration/" %}}Catalyst Mail Component{{%/link%}} and get it verified before using it in the SDK code. {{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.users.PlatformType; import com.zc.component.users.ZCSignUpData; import com.zc.component.users.ZCUser; import com.zc.component.ZCMailTemplateDetails; {{% /panel_without_adjustment %}} {{%code class="language-java line-numbers"%}}//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); {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.661Z" 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 {{%badge%}}getAllUsers(){{%/badge%}} method. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.users.ZCUser; {{% /panel_without_adjustment %}} {{%code class="language-java line-numbers"%}}ZCUser user = ZCUser.getInstance(); user.getAllUser(10062701096); // Enter your Org ID here {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.661Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/" %}}user{{%/link%}}, you can reset the password using the following code snippet. When called, the {{%badge%}}resetPassword(){{%/badge%}} method generates a reset password link and sends it to the user's Email address. {{%note%}} {{%bold class="bold-primary" %}}Note: {{%/bold%}} You can configure the sender's email address, subject and the email message. You must add the email address in the {{%link href="/en/cloud-scale/help/mail/email-configuration/" %}}Catalyst Mail Component{{%/link%}} and get it verified before using it in the SDK code. {{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.users.PlatformType; import com.zc.component.users.ZCSignUpData; import com.zc.component.users.ZCUser; import com.zc.component.ZCMailTemplateDetails; {{% /panel_without_adjustment %}} {{%code class="language-java line-numbers"%}}//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); {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.661Z" 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 {{%link href="/en/cloud-scale/help/authentication/third-party-authentication/introduction/" %}}third-party authentication service{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} * 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 {{%link href="/en/cloud-scale/help/authentication/public-signup/" %}}Public Signup{{%/link%}} in the console.{{%/note%}} 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 {{%code class="language-java line-numbers"%}}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); {{%/code%}} You can now pass this token to the client logic as explained in this {{%link href="/en/sdk/web/v4/cloud-scale/authentication/third-party-custom-token/" %}}Web SDK help page{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.661Z" 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 {{%link href="/en/serverless/help/functions/basic-io/" %}}Basic I/O function{{%/link%}} 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 {{%link href="/en/cloud-scale/help/authentication/whitelisting/custom-user-validation/introduction/" %}}Custom User Validation{{%/link%}} function is given below. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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; {{% /panel_without_adjustment %}} The validation logic can be set based on your preference. In this example, we have depicted the logic with {{%badge%}}@notallowedemail{{%/badge%}}. If the user tries to sign up using a disallowed email addressed, the user will not be allowed to sign up. {{%code class="language-java line-numbers"%}}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); } } }{{%/code%}} <br> To test this function, you can pass the details of the user in the following {{%badge%}}.JSON{{%/badge%}} format: {{%code class="language-json line-numbers"%}}{ "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" } }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.661Z" 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 {{%link href="/en/cloud-scale/help/authentication/introduction" %}}Catalyst Authentication{{%/link%}} 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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.ZCUserDetail; import com.zc.component.users.ZCUser; {{% /panel_without_adjustment %}} {{%code class="language-java"%}}//Create an instance of the ZCUser object to get current user information ZCUserDetail details = ZCUser.getInstance().getCurrentUser(); {{%/code%}} ### Get All User Details This code can fetch the details of all the users who are registered with the application. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.ZCUserDetail; import com.zc.component.users.ZCUser; {{% /panel_without_adjustment %}} {{%code class="language-java"%}}//Create an instance of ZCUser and call getAllUser to get all the users in the application List&lt;ZCUserDetail&gt; details = ZCUser.getInstance().getAllUser(); {{%/code%}} ### 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 {{%badge%}}getUser(){{%/badge%}} method. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.ZCUserDetail; import com.zc.component.users.ZCUser; {{% /panel_without_adjustment %}} {{%code class="language-java"%}}//Create an instance of the ZCUser object and use user id to get user information based on id ZCUserDetail details = ZCUser.getInstance().getUser(1510000000113214L); {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.662Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/implementation/#modify-a-users-details" %}}modify and update{{%/link%}} the following details of an end-user: * First Name * Last name * {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/" %}}{{%badge%}}**ZAAID**{{%/badge%}}{{%/link%}}: {{%badge%}}**ZAAID**{{%/badge%}} or Org ID, is a unique value that is generated by Catalyst to associate with an organization. * {{%link href="/en/cloud-scale/help/authentication/user-management/roles/implementation/" %}}RoleID{{%/link%}}: Role ID is the value generated by Catalyst that is assigned to a particular {{%link href="/en/cloud-scale/help/authentication/user-management/roles/introduction/" %}}user role{{%/link%}}. The SDK snippet below demonstrates updating an end-user's details using the {{%badge%}}updateUser(){{%/badge%}} method. The first name of the user is updated in the example below. The {{%badge%}}getUserID(){{%/badge%}} method will fetch the {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/" %}}User ID{{%/link%}} of the user. The UserID will be present in the *Users* > *User Management* section of the Authentication component. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.ZCUserDetail; import com.zc.component.users.ZCUser; {{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCUser user = ZCUser.getInstance(); ZCUserDetail userDetail = user.getCurrentUser(); userDetail.setFirstName("Josh"); user.updateUser(userDetail.getUserId(), userDetail); {{%/code%}} <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-03-18T07:41:08.662Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/implementation/#enable-or-disable-a-user" %}}disable or enable a user{{%/link%}} 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 {{%badge%}}updateUserStatus(){{%/badge%}} method. The user is referred by their unique {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/" %}}User ID{{%/link%}}. You can find the User IDs of all users by navigating to the *Users* > {{%link href="/en/cloud-scale/help/authentication/user-management/introduction/" %}}*User Management*{{%/link%}} section of the Authentication component. ### To Enable a User #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.ZCUserDetail; import com.zc.component.users.ZCUser; {{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCUser user = ZCUser.getInstance(); user.updateUserStatus(USER_ID, USER_STATUS.ENABLE); {{%/code%}} ### To Disable a User #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.ZCUserDetail; import com.zc.component.users.ZCUser; {{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCUser user = ZCUser.getInstance(); user.updateUserStatus(USER_ID, USER_STATUS.DISABLE); {{%/code%}} <br /> -------------------------------------------------------------------------------- title: "Delete User" description: "This page describes the method to delete users from your Java application with sample code snippets." last_updated: "2026-03-18T07:41:08.662Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/" %}} end users{{%/link%}} of a Catalyst application to remove their access to it permanently. This is done using the {{%badge%}}deleteUser(){{%/badge%}} method. You must pass the {{%bold%}}UserID{{%/bold%}} of the user as the parameter to this method as shown below. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.users.ZCUser; {{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCUser.getInstance().deleteUser(1510000000109587l); //Pass the UserID of the user to be deleted {{%/code%}} ##### 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-03-18T07:41:08.662Z" 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 {{%badge%}}getSegmentInstance(){{%/badge%}} method which doesn't actually fire a server side call. This empty segment instance does not hold any values. #### Sample Code Snippet {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCSegment; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with segment ID ZCSegment segment = cacheobj.getSegmentInstance(1510000000054091L); {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.662Z" 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 {{%badge%}}getCacheValue(){{%/badge%}} method. #### Sample Code Snippet {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCSegment; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//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"); {{%/code%}} ### 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%}}{{%bold%}}Note:{{%/bold%}} The cache object contains all of its attributes such as key, value, and expiry time.{{%/note%}} #### Sample Code Snippet {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCCacheObject; import com.zc.component.cache.ZCSegment; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//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 {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.662Z" 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 {{%badge%}}putCache(){{%/badge%}} 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 {{%badge%}}putCacheValue(){{%/badge%}} method. {{%note%}}{{%bold%}}Note:{{%/bold%}} The expiry time is set to 48 hours by default. {{%/note%}} #### Sample Code Snippet {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCCacheObject; import com.zc.component.cache.ZCSegment; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//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"); {{%/code%}} ### 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%}}{{%bold%}}Note:{{%/bold%}} The value of the expiry time must be passed as a long value in hours. {{%/note%}} #### Sample Code Snippet {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCCacheObject; import com.zc.component.cache.ZCSegment; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//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); {{%/code%}} ### Insert a key-value pair through a cache object The following code inserts a key-value pair to a cache segment through {{%badge%}}putCacheObject(){{%/badge%}} method. {{%note%}}{{%bold%}}Note:{{%/bold%}} If the key name already exists in a cache segment, it will be replaced with the new value inserted. {{%/note%}} #### Sample Code Snippet {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCCacheObject; import com.zc.component.cache.ZCSegment; {{%/code%}} {{%code class="language-java" scroll="set-scroll" %}}//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); {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.662Z" 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 {{%badge%}}updateCacheValue(){{%/badge%}} 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 {{%badge%}}updateCacheValue(){{%/badge%}} method. The expiry time of the key is maintained as its previous value. #### Sample Code Snippet {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCSegment; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//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"); {{%/code%}} ### 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 {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCSegment; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//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); {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.662Z" 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 {{%badge%}}deleteCacheValue(){{%/badge%}} method as a parameter. #### Sample Code Snippet {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCSegment; {{% /panel_without_adjustment %}} {{%code class="language-java line-numbers" scroll="set-scroll" %}}//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"); {{%/code%}} ### 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 {{%badge%}}deleteCacheObject(){{%/badge%}} method. #### Sample Code Snippet {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCCacheObject; import com.zc.component.cache.ZCSegment; {{% /panel_without_adjustment %}} {{%code class="language-java line-numbers" scroll="set-scroll" %}}//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); {{%/code%}} ##### 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-03-18T07:41:08.663Z" 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%}}{{%bold%}}Note:{{%/bold%}} This SDK can only be accessed within Catalyst services like {{%link href="/en/serverless/help/functions/introduction/" %}}Functions{{%/link%}} and {{%link href="/en/serverless/help/appsail/introduction/" %}}AppSail{{%/link%}}. It cannot be used to integrate with third-party services.{{%/note%}} You can get the {{%badge%}}connections{{%/badge%}} 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** {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}} import com.zc.component.connections.ZCConnections; import com.zc.component.connections.beans.ZCConnectionResponse;{{%/panel_without_adjustment%}} {{%code class="language-java line-numbers"%}}// create connection instance ZCConnections connections = ZCConnections.getInstance();{{%/code%}} -------------------------------------------------------------------------------- title: "Get Authentication Credentials" description: "This page describes the method to acquire the required authentication credentials." last_updated: "2026-03-18T07:41:08.663Z" 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%}}{{%bold%}}Note:{{%/bold%}} This SDK can only be accessed within Catalyst services like {{%link href="/en/serverless/help/functions/introduction/" %}}Functions{{%/link%}} and {{%link href="/en/serverless/help/appsail/introduction/" %}}AppSail{{%/link%}}. It cannot be used to integrate with third-party services.{{%/note%}} This SDK method can be used obtain the authentication credentials for various Zoho services, listed as {{%link href="/en/cloud-scale/help/connections/establish-default-connection/" %}}Default Services{{%/link%}}. The {{%badge%}}connections{{%/badge%}} reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/connections/get-connections-instance/" %}}component instance{{%/link%}}. {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}} import com.zc.component.connections.ZCConnections; import com.zc.component.connections.beans.ZCConnectionResponse;{{%/panel_without_adjustment%}} {{%code class="language-java line-numbers"%}}// 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());{{%/code%}} ##### 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-03-18T07:41:08.663Z" 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 {{%badge%}}getTable(){{%/badge%}} as given below, #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; {{% /panel_without_adjustment %}} {{%code class="language-java"%}}//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); {{%/code%}} ### 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 {{%badge%}}getTable(){{%/badge%}} method. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}//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"); {{%/code%}} ### 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 {{%badge%}}getAllTables(){{%/badge%}} method. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; {{% /panel_without_adjustment %}} {{%code class="language-java"%}}//Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get all the Tables in a given Project List<ZCTable> tableList =object.getAllTables(); {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.663Z" 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 {{%badge%}}getColumn(){{%/badge%}} method. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCColumn; import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; {{% /panel_without_adjustment %}} {{%code class="language-java"%}}//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"); {{%/code%}} <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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCColumn; import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; {{% /panel_without_adjustment %}} {{%code class="language-java"%}}//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"); {{%/code%}} <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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCColumn; import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; {{% /panel_without_adjustment %}} {{%code class="language-java"%}}//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(); {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.663Z" 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 {{%badge%}}getTableInstance(){{%/badge%}} method which actually doesn't fire a server side call. This does not hold any values. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; {{% /panel_without_adjustment %}} {{%code class="language-java"%}}//Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the tableID on base object ZCTable tableMeta =object.getTableInstance(1510000000110121L); {{%/code%}} <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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}//Create Base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable tableMeta = object.getTableInstance("SampleTable"); {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.664Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 1. The table and the columns in it must already be created. You can {{%link href="/en/cloud-scale/help/data-store/tables/#create-a-new-table" %}}create a table{{%/link%}} and {{%link href="/en/cloud-scale/help/data-store/columns/#create-a-new-column" %}}the columns for it{{%/link%}} from the console. 2. You will be able to insert upto 5000 records in each table per project in the {{%link href="/en/deployment-and-billing//environments/introduction" %}}development environment{{%/link%}}. 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.{{%/note%}} ### 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 {{%badge%}}insertRow(){{%/badge%}} method inserts a row to the table whose instance you create by referring to its unique name or ID. A unique {{%badge%}}RowID{{%/badge%}} value for the row is automatically generated once a row is inserted. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCTable; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}} //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); {{% /code%}} <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 {{%badge%}}insertRows(){{%/badge%}} method as shown below. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCTable; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}} //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); {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.664Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}}. You can fetch the rows by passing the unique Table ID of table to the {{%badge%}}getTable(){{%/badge%}} 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 {{%badge%}}getRow(){{%/badge%}} 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 {{%badge%}}getInstance(){{%/badge%}}. Using the base object instance, you must fetch a table instance that can be used to fetch the row. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCTable; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//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); {{%/code%}} <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 {{%badge%}}ZCRowPagedResponse{{%/badge%}} 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 {{%badge%}}maxRows{{%/badge%}} as 100. {{%note%}}{{%bold%}}Note:{{%/bold%}} The {{%badge%}}maxRows{{%/badge%}} parameter is optional. The SDK call will return 200 rows in a single page by default if this value is not specified.{{%/note%}} 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 {{%badge%}}getNextToken(){{%/badge%}} method, and pass it as the value for {{%badge%}}nextToken{{%/badge%}} during the subsequent iteration, as shown in the code below. During the first execution of the loop, the value for the {{%badge%}}nextToken{{%/badge%}} string is assigned as null. This iteration is executed until all the rows fetched, which is validated by the {{%badge%}}moreRecordsAvailable(){{%/badge%}} method. You can specify the table name and the names of the columns to be fetched as shown in the sample code. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCRowPagedResponse; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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()); {{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} We have deprecated support for the {{%badge%}}getAllRows(){{%/badge%}} 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 {{%badge%}}getAllRows(){{%/badge%}} method will be removed from all future SDK versions. Please ensure that you upgrade your code accordingly.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.664Z" 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,{{%badge%}} updateRows(){{%/badge%}} method is used. {{%note%}}{{%bold%}}Note:{{%/bold%}} ROWDID should be set to update a row.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCTable;{{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//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); {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.664Z" 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 {{%bold%}}ROWID{{%/bold%}} in the calling method {{%badge%}}deteleRow().{{%/badge%}} You will not be able to delete more than one row at a time. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//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); {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.664Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}}. 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 {{%link href="/en/cloud-scale/help/data-store/tables/" %}}Table ID{{%/link%}}. 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>{{%badge%}}createBulkReadJob(){{%/badge%}}</td> <td>Create a new bulk read job.</td> </tr> <td>{{%badge%}}getBulkReadJobStatus(){{%/badge%}}</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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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;{{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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 {{%/code%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} A maximum of {{%bold%}}200,000 rows{{%/bold%}} can be read simultaneously using the {{%badge%}}createBulkReadJob(){{%/badge%}} method.{{%/note%}} <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-03-18T07:41:08.664Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}}. The bulk write operation can fetch thousands of records from a CSV file uploaded in {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}Stratus{{%/link%}} and insert them in a specific table. The table is referred to by its unique {{%link href="/en/cloud-scale/help/data-store/tables/" %}}Table ID{{%/link%}}. The column in which the write operation must be performed is referred to by its unique {{%link href="/en/cloud-scale/help/data-store/columns/#column-characteristics" %}}column ID{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} To perform a bulk write operation, you must {{%link href="/en/cloud-scale/help/stratus/objects/upload-object/" %}}first upload{{%/link%}} the required data as a CSV file in Stratus.{{%/note%}} During the write job, the file will be referred to using the following attributes: * {{%badge%}}bucketName{{%/badge%}}: The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}name of the bucket{{%/link%}}, where the object is stored. * {{%badge%}}objectKey{{%/badge%}}: Can contain the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}} or the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} of the required object. * {{%badge%}}versionID{{%/badge%}}: If the bucket has {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}versioning{{%/link%}} 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 {{%badge%}}objectDetails{{%/badge%}}, and passed to the {{%badge%}}setObjectDetails(){{%/badge%}} 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>{{%badge%}}createBulkWriteJob(bulkWriteDetails){{%/badge%}}</td> <td>Create a new bulk write job on a specific table.</td> </tr> <td>{{%badge%}}createInsertBulkWriteJob(table ID, objectDetails){{%/badge%}}</td> <td>Create a new bulk write insert job.</td> <tr> <td>{{%badge%}}createUpsertBulkWriteJob(tableId, objectDetails, column ID){{%/badge%}}</td> <td>Create a new bulk write upsert job.</td> </tr> <tr> <td>{{%badge%}}getBulkWriteJobDetails(jobID){{%/badge%}}</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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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 {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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 {{%/code%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} A maximum of {{%bold%}}100,000 rows{{%/bold%}} can be written simultaneously using the {{%badge%}}createBulkWriteJob(){{%/badge%}} method.{{%/note%}} <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-03-18T07:41:08.664Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}}. 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 {{%badge%}}ArrayList{{%/badge%}} as shown in the sample code below. You must include at least one ROWID, and can include upto 200 ROWIDs, in the code. The {{%badge%}}ArrayList{{%/badge%}} is passed to the {{%badge%}}deleteRows(){{%/badge%}} function through a {{%badge%}}ZCRowObject{{%/badge%}} list. The table name or table ID must be passed to {{%badge%}}getTableInstance(){{%/badge%}}. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//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); {{% /code%}} ##### 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-03-18T07:41:08.665Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} {{%link href="/en/cloud-scale/help/file-store/introduction"%}}Catalyst File Store{{%/link%}} 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 {{%badge%}}getInstance(){{%/badge%}} method, and using it to fetch the folder instance with the {{%badge%}}getFolderInstance(){{%/badge%}} 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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.files.ZCFile; import com.zc.component.files.ZCFolder;{{% /panel_without_adjustment %}} ### Fetch the Folder Instance using the Folder ID {{%code class="language-java" scroll="set-scroll" %}} //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); {{%/code%}} ### Fetch the Folder Instance using the Folder Name {{%code class="language-java" scroll="set-scroll" %}} //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"); {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.665Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} You can retrieve the metadata of the folders created in the {{%link href="/en/cloud-scale/help/file-store/introduction"%}}Catalyst File Store{{%/link%}}. 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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.files.ZCFile; import com.zc.component.files.ZCFolder; {{% /panel_without_adjustment %}} 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 {{%badge%}}getFolder(){{%/badge%}} method, as shown below. {{%code class="language-java" scroll="set-scroll" %}}//Get an instance of the File Store ZCFile fileStore = ZCFile.getInstance(); //Get Folder Details by passing the Folder ID ZCFolder folderDetails = fileStore.getFolder(1510000000109393L); {{% /code%}} #### Refer to the Folder by its Name You can specify the name of the folder to be fetched to the {{%badge%}}getFolder(){{%/badge%}} method, as shown below. {{%code class="language-java" scroll="set-scroll" %}}//Get an instance of the File Store ZCFile fileStore = ZCFile.getInstance(); //Get Folder Details by passing the folder name ZCFolder folderDetails = fileStore.getFolder("EmpDetails"); {{% /code%}} <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 {{%badge%}}getFolder(){{%/badge%}} method: #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.files.ZCFile; import com.zc.component.files.ZCFolder;{{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//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(); {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.665Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} You can upload a file from your local system to an existing folder in the {{%link href="/en/cloud-scale/help/file-store/introduction" %}}File Store{{%/link%}}, 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 {{%badge%}}getFolderInstance(){{%/badge%}}, and upload the file object to the folder instance using the {{%badge%}}uploadFile(){{%/badge%}} method. A unique File ID is created for the file after it is uploaded. {{%note%}}{{%bold%}}Note :{{%/bold%}} Catalyst provides 1 GB of File Store space for each project in the {{%link href="/en/deployment-and-billing/environments/development-environment" %}}development environment{{%/link%}}. There are no upper limits for storage in the production environment.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.files.ZCFile; import com.zc.component.files.ZCFolder; import java.io.File; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}// 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); {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.665Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} 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 {{%badge%}}downloadFile(){{%/badge%}} method. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.files.ZCFile; import com.zc.component.files.ZCFolder; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//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); {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.665Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} A file can be deleted from a folder using the following code snippet. {{%note%}}{{%bold%}}Note :{{%/bold%}} File once deleted will not be restored.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.files.ZCFile; import com.zc.component.files.ZCFolder; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//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); {{% /code%}} ##### 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-03-18T07:41:08.666Z" 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 {{%link href="/en/cloud-scale/help/mail/introduction" %}}Catalyst Mail{{%/link%}} 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 {{%bold%}}maximum supported limits{{%/bold%}} for email recipients and file attachments in a single send mail operation are specified below: * {{%bold%}}To address:{{%/bold%}} 10 * {{%bold%}}CC:{{%/bold%}} 10 * {{%bold%}}BCC:{{%/bold%}} 5 * {{%bold%}}Reply to:{{%/bold%}} 5 * {{%bold%}}Number of file attachments:{{%/bold%}} 5 * {{%bold%}}Size of file attachments:{{%/bold%}} 15 MB (through a single file or multiple files upto 5 files) {{%note%}}{{%bold%}}Note:{{%/bold%}} The subject, sender, and atleast one recipient email addresses are mandatory. Other attributes of the email are optional.{{%/note%}} You must fetch an instance of {{%badge%}}ZCMailContent{{%/badge%}} 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 {{%badge%}}ZCMailContent{{%/badge%}} object, and pass it as an argument to the {{%badge%}}sendMail(){{%/badge%}} method to send the email. {{%note%}}{{%bold%}}Note:{{%/bold%}} You must have {{%link href="/en/cloud-scale/help/mail/introduction" %}}configured and verified the sender's email address{{%/link%}} 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.{{%/note%}} #### Sample Code Snippet {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import java.io.File; import com.zc.component.mail.ZCMail; import com.zc.component.mail.ZCMailContent; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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 {{%/code%}} ##### 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-03-18T07:41:08.666Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}Catalyst NoSQL{{%/link%}} 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 {{%link href="/en/cloud-scale/help/nosql/working-with-data/introduction/#the-catalyst-custom-json-format" %}}JSON format{{%/link%}}. 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 {{%link href="/en/cloud-scale/help/nosql/components/" %}}items{{%/link%}} of various {{%link href="/en/cloud-scale/help/nosql/working-with-data/introduction/#supported-data-types" %}}supported data types{{%/link%}}, and insert, update, fetch, or delete items in a specific table. You can also query tables or {{%link href="/en/cloud-scale/help/nosql/indexing/introduction/" %}}indexes{{%/link%}} 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 {{%badge%}}getInstance(){{%/badge%}} 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 {{%link href="/en/cloud-scale/help/nosql/create-manage-tables/" %}}Table ID{{%/link%}} using the method {{%badge%}}getTable(){{%/badge%}} as given below. {{%code class="language-java"%}}//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);{{%/code%}} <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 {{%badge%}}getTable(){{%/badge%}} as given below. {{%code class="language-java"%}}//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');{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If you rename the table, you will need to update the changes in your code.{{%/note%}} <br> ### Get Metadata of All Tables Catalyst enables you to fetch the metadata of all the tables in your project using the {{%badge%}}getAllTables() method{{%/badge%}} as shown below. {{%code class="language-java"%}}//public List&lt;ZCNoSQLTable&gt; getAllTables() throws Exception; ZCNoSQL.getInstance().getAllTables();{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.667Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}Catalyst NoSQL{{%/link%}} 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 {{%link href="/en/cloud-scale/help/nosql/create-manage-tables/" %}}unique ID{{%/link%}} of the table to {{%badge%}}getTableInstance(){{%/badge%}} as shown below. {{%code class="language-java"%}}//public ZCNoSQLTable getTableInstance(Long tableId); //public ZCNoSQLTable getTableInstance(String tableName); // Create a table instance with Table ID ZCNoSQL.getInstance().getTableInstance(37898901211);{{%/code%}} <br> ### Get Instance with Table Name Get a table instance by passing the table name to {{%badge%}}getTableInstance(){{%/badge%}} as shown below. {{%code class="language-java"%}}//public ZCNoSQLTable getTableInstance(Long tableId); //public ZCNoSQLTable getTableInstance(String tableName); // Create a table instance with Table ID ZCNoSQL.getInstance().getTableInstance('Employees');{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.667Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}Catalyst NoSQL{{%/link%}} items represent a collection of attributes that hold the data of a single data point, like records. You can insert or update {{%link href="/en/cloud-scale/help/nosql/components/#basic-components" %}}items{{%/link%}} into an existing NoSQL table in your project in a {{%link href="/en/cloud-scale/help/nosql/working-with-data/introduction/#the-catalyst-custom-json-format" %}}Custom JSON format{{%/link%}}. 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 {{%link href="/en/cloud-scale/help/nosql/working-with-data/introduction/#supported-data-types" %}}supported data types{{%/link%}} 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 {{%link href="/en/cloud-scale/help/nosql/components/#table-keys" %}}Table Keys help section{{%/link%}} 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 {{%badge%}}ZCNoSQLItem(){{%/badge%}} method, as shown below. {{%code class="language-java"%}}ZCNoSQLItem item = new ZCNoSQLItem();{{%/code%}} #### 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. {{%code class="language-java"%}}//public static ZCNoSQLItem fromJSON(String json) throws Exception; ZCNoSQLItem.fromJSON(&lt;json string&gt;);{{%/code%}} <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: {{%code class="language-java"%}}//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;");{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.667Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}Catalyst NoSQL{{%/link%}} 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 {{%link href="/en/cloud-scale/help/nosql/components/#basic-components" %}}item{{%/link%}} and perform various operations on it. #### Remove attributes from a constructed item {{%code class="language-java"%}}//public ZCNoSQLItem removeAttribute(String attrName) throws Exception; item.removeAttribute("attribute name");{{%/code%}} #### Get all the keys from the item being constructed {{%code class="language-java"%}}//public Iterable&lt;Map.Entry&gt;String, Object&gt;&gt; attributes(); item.attributes();{{%/code%}} #### Check if the constructed item contains a specific attribute {{%code class="language-java"%}}//public boolean hasAttribute(String attrName); item.hasAttribute("attribute name");{{%/code%}} #### Getting the item as a map {{%code class="language-java"%}}//public Map<String, Object> asMap(); item.asMap(); //public Map&lt;String, Object&gt; getAllAttributesAsMap(); item.getAllAttributesAsMap();{{%/code%}} #### Get the item as a JSON {{%code class="language-java"%}}//public String toJSON() throws Exception; item.toJSON();{{%/code%}} #### Get the count of the attributes in the constructed item {{%code class="language-java"%}}//public int numberOfAttributes(); item.numberOfAttributes();{{%/code%}} <br> ### ZCNoSQLAttribute You can use the {{%badge%}}ZCNoSQLAttribute{{%/badge%}} 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 {{%badge%}}ZCNoSQLAttribute{{%/badge%}}. To access a specific index of a list, you can denote it as "[&lt;index&gt;]". This is demonstrated in the example below. {{%code class="language-java"%}}//public static ZCNoSQLAttribute getInstance(String ...pathElements) throws Exception; //public ZCNoSQLAttribute(List&lt;String&gt; pathElements) throws Exception; ZCNoSQLAttribute.getInstance("", ...); new ZCNoSQLAttribute("", ...){{%/code%}} The datatypes supported by NoSQL can be denoted with the {{%badge%}}ZCNoSQLAttribute{{%/badge%}} 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>{{%badge%}}ZCNoSQLValue.DataType.S{{%/badge%}} </td> </tr> <tr> <td>Numeric</td> <td>{{%badge%}}ZCNoSQLValue.DataType.N{{%/badge%}}</td> </tr> <tr> <td>Binary</td> <td>{{%badge%}}ZCNoSQLValue.DataType.B{{%/badge%}} </td> </tr> <tr> <td>Boolean</td> <td>{{%badge%}}ZCNoSQLValue.DataType.BOOL{{%/badge%}}</td> </tr> <tr> <td>Set of String</td> <td>{{%badge%}}ZCNoSQLValue.DataType.SS{{%/badge%}}</td> </tr> <tr> <td>Set of Numbers</td> <td>{{%badge%}}ZCNoSQLValue.DataType.SN{{%/badge%}}</td> </tr> <tr> <td>Set of Binary</td> <td>{{%badge%}}ZCNoSQLValue.DataType.SB{{%/badge%}}</td> </tr> <tr> <td>List</td> <td>{{%badge%}}ZCNoSQLValue.DataType.L{{%/badge%}}</td> </tr> <tr> <td>Map</td> <td>{{%badge%}}ZCNoSQLValue.DataType.M{{%/badge%}}</td> </tr> <tr> <td>Null</td> <td>{{%badge%}}ZCNoSQLValue.DataType.NuLL{{%/badge%}}</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. {{%code class="language-java"%}}// 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;){{%/code%}} <br> ### ZCNoSQLResponseBean This class contains the response of the SDK calls made to the server. This includes the following methods. * {{%badge%}}getSize{{%/badge%}} - Used to return the size of data read/write from or to the server. {{%code class="language-java"%}}//public int getSize(); responseBean.getSize();{{%/code%}} * {{%badge%}}getStartKey{{%/badge%}} - Used to return the start key for next set of data for pagination, if more data exists. {{%code class="language-java"%}}//public ZCNoSQLItem getStartKey(); responseBean.getStartKey();{{%/code%}} * {{%badge%}}getResponseDataList{{%/badge%}} - Returns the actual data. Based on the {{%badge%}}NOSQL_RETURN_VALUE{{%/badge%}}, either the old or new data is returned in {{%badge%}}getNew_item(){{%/badge%}} or {{%badge%}}getOld_Item(){{%/badge%}} method. {{%code class="language-java"%}}//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();{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.667Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}NoSQL{{%/link%}} 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 {{%link href="/en/cloud-scale/help/nosql/working-with-data/introduction/#the-catalyst-custom-json-format" %}}Catalyst custom JSON format{{%/link%}}, and the {{%link href="/en/cloud-scale/help/nosql/working-with-data/introduction/#supported-data-types" %}}supported data types{{%/link%}} to learn these topics in detail. {{%note%}}{{%bold%}}Note:{{%/bold%}} Catalyst enables you to insert a maximum of 25 items in bulk in a NoSQL table with a single SDK operation.{{%/note%}} ### Insert Items without Conditions You can insert new items into a NoSQL table without any conditions either by using the {{%badge%}}ZCNoSQLTable{{%/badge%}} instance, or the {{%badge%}}ZCNoSQLInsertHelper{{%/badge%}} instance which can be used to construct the various parts of the request. You can insert data with the {{%badge%}}ZCNoSQLTable{{%/badge%}} instance as shown below. {{%code class="language-java"%}}//public ZCNoSQLResponseBean insert(ZCNoSQLItem item) throws Exception; table.insert(&lt;ZCNoSQLItem&gt;);{{%/code%}} You can insert data with the {{%badge%}}ZCNoSQLInsertHelper{{%/badge%}} instance as shown below. {{%code class="language-java"%}}//public ZCNoSQLInsertHelper getInsertHelper(ZCNoSQLItem item) throws Exception; //public ZCNoSQLResponseBean insert() throws Exception; table.getInsertHelper(&lt;ZCNoSQLItem&gt;).insert();{{%/code%}} This class can be used to insert data into a table with conditions. This can be obtained from {{%badge%}}ZCNoSQLTable{{%/badge%}} 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 {{%badge%}}ZCNoSQLCondition{{%/badge%}}. {{%code class="language-java"%}}//public ZCNoSQLInsertHelper withCondition(ZCNoSQLCondition condition) throws Exception; table.getInsertHelper(&lt;ZCNoSQLItem&gt;).withCondition(&lt;ZCNoSQLCondition&gt;).insert();{{%/code%}} Condition can be passed with the help of {{%badge%}}ZCNoSQLCondition{{%/badge%}} instance which can be obtained by using a constructor or calling the {{%badge%}}getInstance(){{%/badge%}} method. Conditions can be initialized in 3 methods #### 1. Using functions {{%code class="language-java"%}}//public static ZCNoSQLCondition getInstance(NoSQLConditionFunction function) throws Exception; //public ZCNoSQLCondition(NoSQLConditionFunction function) throws Exception; ZCNoSQLCondition.getInstance(&lt;NoSQLCondtitionFunction&gt;); new ZCNoSQLCondition(&lt;NoSQLCondtitionFunction&gt;){{%/code%}} There are two built in-functions available. {{%bold%}}i. ZCNoSQLAttributeTypeFunction{{%/bold%}} Check if the data type of the given attribute matched the given datatype. {{%code class="language-java"%}}//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;);{{%/code%}} {{%bold%}}ii. ZCNoSQLAttributeExistFunction {{%/bold%}} This is used to evaluate if an attribute already exists in the retrieved item. {{%code class="language-java"%}}//public ZCNoSQLAttributeExistFunction(ZCNoSQLAttribute attribute); //public static ZCNoSQLAttributeExistFunction getInstance(ZCNoSQLAttribute attribute); ZCNoSQLAttributeExistFunction.getInstance(&lt;ZCNoSQLAttribute&gt;); new ZCNoSQLAttributeExistFunction(&lt;ZCNoSQLAttribute&gt;){{%/code%}} <br> #### 2. Using operator, operand and value {{%code class="language-java"%}}//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;);{{%/code%}} #### NOSQL_OPERATOR The allowed {{%badge%}}NOSQL_OPERATOR{{%/badge%}} values are contains, {{%badge%}}not_contains{{%/badge%}}, {{%badge%}}begins_with{{%/badge%}}, {{%badge%}}ends_with{{%/badge%}}, {{%badge%}}in{{%/badge%}}, {{%badge%}}not_in{{%/badge%}}, {{%badge%}}between{{%/badge%}}, {{%badge%}}not_between{{%/badge%}}, {{%badge%}}equals{{%/badge%}}, {{%badge%}}not_equals{{%/badge%}}, {{%badge%}}greater_than{{%/badge%}}, {{%badge%}}less_than{{%/badge%}}, {{%badge%}}greater_equal{{%/badge%}}, {{%badge%}}less_equal{{%/badge%}} #### Using group of conditions {{%code class="language-java"%}}//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;){{%/code%}} #### NOSQL_CONDITION_GROUP_OPERATOR The allowed {{%badge%}}NOSQL_CONDITION_GROUP_OPERATOR{{%/badge%}} values are {{%badge%}}AND{{%/badge%}}, {{%badge%}}OR{{%/badge%}} #### NOSQL_RETURN_VALUE Indicates the return value after evaluating condition. {{%code class="language-java"%}}//public ZCNoSQLInsertHelper withReturnValue(NOSQL_RETURN_VALUE returnValue) throws Exception table.getInsertHelper(&lt;ZCNoSQLItem&gt;).withReturnValue(&lt;NOSQL_RETURN_VALUE&gt;).insert();{{%/code%}} The allowed {{%badge%}}NOSQL_RETURN_VALUE{{%/badge%}} values are {{%badge%}}NEW{{%/badge%}}, {{%badge%}}OLD{{%/badge%}}, {{%badge%}}NULL{{%/badge%}} #### Insert with Condition and Return Value {{%code class="language-java"%}}table.getInsertHelper(&lt;ZCNoSQLItem&gt;).withCondition(&lt;ZCNoSQLCondition&gt;).withReturnValue(&lt;NOSQL_RETURN_VALUE&gt;).insert();{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.668Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}NoSQL{{%/link%}} table after you construct them. An item can be updated by identifying it using its {{%link href="/en/cloud-scale/help/nosql/components/#table-keys" %}}primary keys{{%/link%}}. 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst enables you to update a maximum of 25 items in bulk in a NoSQL table with a single SDK operation.{{%/note%}} There are two ways to update the data. Data can be updated without any conditions by using the {{%badge%}}ZCNoSQLTable{{%/badge%}} instance or it can be updated with the help of {{%badge%}}ZCNoSQLUpdateHelper{{%/badge%}} instance which can be used to construct the various parts of the request. You can update the data with the {{%badge%}}ZCNoSQLTable{{%/badge%}} instance as shown below. {{%code class="language-java"%}}//public ZCNoSQLResponseBean update(ZCNoSQLItem item, ZCNoSQLUpdateAttributeOperation updateAttributeOperation) throws Exception; table.update(&lt;ZCNoSQLItem&gt;, &lt;ZCNoSQLUpdateAttributeOperation&gt;); {{%/code%}} To update with ZCNoSQLUpdateHelper #### ZCNoSQLUpdateHelper {{%code class="language-java"%}}//public ZCNoSQLInsertHelper getInsertHelper(ZCNoSQLItem item) throws Exception; //public ZCNoSQLResponseBean insert() throws Exception; table.getUpdateHelper(&lt;ZCNoSQLItem&gt;, &lt;ZCNoSQLUpdateAttributeOperation&gt;).update(); {{%/code%}} #### 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 {{%code class="language-java"%}}//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;) {{%/code%}} For Deleting attributes {{%code class="language-java"%}}//ZCNoSQLUpdateAttributeOperation(ZCNoSQLAttribute attribute); //public static ZCNoSQLUpdateAttributeOperation getDeleteAttributeInstance(ZCNoSQLAttribute attribute); new ZCNoSQLUpdateAttributeOperation(&lt;ZCNoSQLAttribute&gt;); ZCNoSQLUpdateAttributeOperation.getDeleteAttributeInstance(&lt;ZCNoSQLAttribute&gt;); {{%/code%}} 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. {{%code class="language-java"%}}//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;) {{%/code%}} #### ZCNoSQLAppendListFunction This function is append elements to existing or new list attribute. {{%code class="language-java"%}}//public ZCNoSQLAppendListFunction(ZCNoSQLValue...values); //public static ZCNoSQLAppendListFunction getInstance(ZCNoSQLValue...values); new ZCNoSQLAppendListFunction(&lt;List of ZCNoSQLValue&gt;) ZCNoSQLAppendListFunction.getInstance(&lt;List of ZCNoSQLValue&gt;) {{%/code%}} #### 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. {{%code class="language-java"%}}//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;) {{%/code%}} #### 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. {{%code class="language-java"%}}//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;) {{%/code%}} 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 {{%code class="language-java"%}}table.getUpdateHelper(&lt;ZCNoSQLItem&gt;,&lt;ZCNoSQLUpdateAttributeOperation&gt;).withCondition(&lt;ZCNoSQLCondition&gt;).withReturnValue(&lt;NOSQL_RETURN_VALUE&gt;).update(); {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.668Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst enables you to fetch a maximum of 100 items from a NoSQL table in a single SDK read operation.{{%/note%}} 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. {{%code class="language-java"%}}//public ZCNoSQLResponseBean fetch(ZCNoSQLItem key) throws Exception; table.fetch(&lt;ZCNoSQLItem&gt;);{{%/code%}} 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. {{%code class="language-java"%}}//public ZCNoSQLFetchHelper getFetchHelper(ZCNoSQLItem key) throws Exception; //public ZCNoSQLResponseBean fetch() throws Exception; table.getFetchHelper(&lt;ZCNoSQLItem&gt;).fetch();{{%/code%}} Other methods available in ZCNoSQLFetchHelper #### Required Attributes This method can be used to filter and retrieve only the specific required attributes {{%code class="language-java"%}}/public ZCNoSQLFetchHelper withRequiredAttributes(List&lt;ZCNoSQLAttribute&gt; requiredAttributesList) throws Exception; table.getFetchHelper(&lt;ZCNoSQLItem&gt;).withRequiredAttributes(&lt;List of ZCNoSQLAttributes&gt;).fetch(); {{%/code%}} 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. {{%code class="language-java"%}}//public ZCNoSQLFetchHelper withConsistency(boolean consistency) throws Exception; table.getFetchHelper(&lt;ZCNoSQLItem&gt;).withConsistency(true/false).fetch();{{%/code%}} Fetch with Required Attributes and Consistency {{%code class="language-java"%}}table.getFetchHelper(&lt;ZCNoSQLItem&gt;).withRequiredAttributes(&lt;List of ZCNoSQLAttributes&gt;).withConsistency(true/false).fetch();{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.668Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst enables you to retrieve a maximum of 100 items in bulk from a NoSQL table with pagination from a single SDK operation.{{%/note%}} 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. {{%code class="language-java"%}}//public ZCNoSQLResponseBean queryTable(ZCNoSQLPartitionKeyCondition partitionKeyCondition, boolean forwardScan, int limit) throws Exception; table.query(&lt;ZCNoSQLPartitionKeyCondition&gt;, &lt;true/false&gt;, &lt;limit&gt;); {{%/code%}} 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. {{%code class="language-java"%}}//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(); {{%/code%}} ZCNoSQLPartitionKeyCondition This is used to construct partition key criteria. This is necessary to query data from the table or index. {{%code class="language-java"%}}//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;) {{%/code%}} 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. {{%code class="language-java"%}}//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(); {{%/code%}} 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. {{%code class="language-java"%}}//public ZCNoSQLQueryHelper withOtherCondition(ZCNoSQLCondition otherCondition) throws Exception; table.getQueryHelper(<ZCNoSQLPartitionKeyCondition>, <true/false>, <limit>).withOtherCondition(<ZCNoSQLCondition>).queryTable(); {{%/code%}} 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. {{%code class="language-java"%}}//public ZCNoSQLQueryHelper withStartKey(ZCNoSQLItem startKey); table.getQueryHelper(&lt;ZCNoSQLPartitionKeyCondition&gt;, &lt;true/false&gt;, &lt;limit&gt;).withStartKey(&lt;ZCNoSQLItem&gt;).queryTable(); {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.668Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst enables you to retrieve a maximum of 100 items in bulk from a NoSQL table with pagination from a single SDK operation. {{%/note%}} 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. {{%code class="language-java"%}}//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;);{{%/code%}} 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. {{%code class="language-java"%}}//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;);{{%/code%}} 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 {{%code class="language-java"%}}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;);{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.668Z" 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. {{%code class="language-java"%}}//public ZCNoSQLResponseBean delete(ZCNoSQLItem key) throws Exception; table.delete(&lt;ZCNoSQLItem&gt;);{{%/code%}} 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. {{%code class="language-java"%}}//public ZCNoSQLDeleteHelper getDeleteHelper(ZCNoSQLItem keys) throws Exception; //public ZCNoSQLResponseBean delete() throws Exception; table.getDeleteHelper(&lt;ZCNoSQLItem&gt;).delete();{{%/code%}} 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 {{%code class="language-java"%}}table.getDeleteHelper(&lt;ZCNoSQLItem&gt;).withCondition(&lt;ZCNoSQLCondition&gt;).withReturnValue(&lt;NOSQL_RETURN_VALUE&gt;).delete();{{%/code%}} ##### 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-03-18T07:41:08.669Z" 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 {{%link href="/en/cloud-scale/help/push-notifications/introduction" %}}Catalyst Push notifications{{%/link%}} 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 {{%link href="/en/api/code-reference/cloud-scale/push-notifications/web/enable-web-push-notifications/#EnableWebNotifications" %}}this code snippet{{%/link%}} 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 {{%link href="/en/sdk/web/v4/overview" %}}web initialization script{{%/link%}}. ### Send Push Notifications to Web Apps Catalyst enables you to send push notifications to {{%bold%}}50 users{{%/bold%}} in a single function call. You can add the {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/" %}}user IDs{{%/link%}} of all users to be notified in an array as shown below. You must then pass the array to the {{%badge%}}notifyUser(){{%/badge%}} 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 {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.notifications.ZCWebNotification; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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 {{% /code%}} 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 {{%badge%}}notifyUser(){{%/badge%}} along with the message string in a similar way. #### Sample Code Snippet {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.notifications.ZCWebNotification; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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 {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.669Z" 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 {{%link href="/en/cloud-scale/help/push-notifications/introduction" %}}Catalyst Cloud Scale Push Notifications{{%/link%}} 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 ({{%badge%}}appId{{%/badge%}}) 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 {{%badge%}}appId{{%/badge%}} can be fetched by {{%link href="/en/cloud-scale/help/push-notifications/android/#configure-and-enroll-for-android-push-notifications" %}}configuring Android Push Notifications service{{%/link%}} directly in the Catalyst console. {{%link href="/en/sdk/android/v2/cloud-scale/push-notifications/register-device/" %}}Learn about registering your Android app using Android SDK.{{%/link%}} {{%link href="/en/sdk/ios/v2/cloud-scale/push-notifications/register-device/" %}}Learn about registering your iOS app using iOS SDK.{{%/link%}} {{%link href="/en/sdk/flutter/v2/cloud-scale/push-notifications/register-device/" %}}Learn about registering your mobile apps (Android or iOS) using Flutter SDK.{{%/link%}} 2. The mobile application must mandatorily use the {{%link href="/en/cloud-scale/help/authentication/introduction/" %}}Catalyst Cloud Scale Authentication{{%/link%}} 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 {{%badge%}}getInstance(){{%/badge%}} method, by passing the generated {{%badge%}}appID{{%/badge%}} 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 {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.notifications.ZCMobileNotification;{{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}ZCMobileNotification mobile = ZCMobileNotification.getInstance(1234567890l);{{% /code%}} Here, {{%bold%}}1234567890{{%/bold%}} is the {{%badge%}}appID{{%/badge%}}. Alternatively, if your application involves Catalyst scope-based access, you can pass the {{%badge%}}ZCProject project{{%/badge%}} parameter along with the {{%badge%}}appID{{%/badge%}}. {{%code class="language-java" scroll="set-scroll" %}}ZCMobileNotification mobile = ZCMobileNotification.getInstance(1234567890l, ZCProject project);{{% /code%}} <br> ### Send Android Push Notifications After you have {{%link href="/en/sdk/flutter/v2/cloud-scale/push-notifications/register-device/" %}}registered your Android application{{%/link%}} with Catalyst for sending push notifications, you can use the {{%badge%}}sendAndroidPushNotification(){{%/badge%}} method to send push notifications to your application. You will need to pass two parameters to the {{%badge%}}sendAndroidPushNotification(){{%/badge%}} method : * {{%badge%}}pushMessage{{%/badge%}} - A {{%badge%}}ZCPush{{%/badge%}} type object with the details of the push notification message. * {{%badge%}}recipient{{%/badge%}} - 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 {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.notifications.ZCMobileNotification; import com.zc.component.notifications.ZCPush; import com.zc.component.notifications.ZCPushMessage; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}ZCPushMessage notificationRes = mobile.sendAndroidPushNotification(new ZCPush() { { setMessage("This message is to test if the functionality is working fine!"); setBadgeCount(1); } }, "emma.b@zylker.com"); {{% /code%}} {{%badge%}}setBadgeCount(){{%/badge%}} 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 {{%link href="/en/sdk/flutter/v2/cloud-scale/push-notifications/register-device/" %}}registered your iOS application{{%/link%}} with Catalyst for sending push notifications, you can use the {{%badge%}}sendIOSPushNotification(){{%/badge%}} method to send push notifications to your application. #### Sample Code Snippet {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.notifications.ZCMobileNotification; import com.zc.component.notifications.ZCPush; import com.zc.component.notifications.ZCPushMessage; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}ZCPushMessage notificationRes = mobile.sendIOSPushNotification(new ZCPush() { { setMessage("This message is to test if the functionality is working fine!"); setBadgeCount(1); } }, "emma.b@zylker.com"); {{% /code%}} ##### 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-03-18T07:41:08.669Z" 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 {{%badge%}}searchQuery(){{%/badge%}} 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 {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCRowObject; import com.zc.component.search.ZCSearch; import com.zc.component.search.ZCSearchDetails; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//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); {{%/code%}} ##### Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page lists all the Java SDK methods required to carry out Stratus operations through code." last_updated: "2026-03-18T07:41:08.670Z" 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 {{%link href="/en/cloud-scale/help/stratus/introduction" %}}Stratus{{%/link%}} is Catalyst's robust and powerful storage solution. You can store data of any format in the form of {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}Objects{{%/link%}} in containers called {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}}. Each Bucket and every individual object in the bucket has a secure {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} and {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/#bucket-url" %}}Bucket URL{{%/link%}}. You can perform upload and download operations on objects and even provide {{%link href="/en/cloud-scale/help/stratus/stratus-permissions/#custom-permissions" %}}custom permissions{{%/link%}} 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>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-stratus-instance/" %}}Create Stratus Instance{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/check-bucket/" %}}Check Bucket Availability{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/list-buckets/" %}}List Buckets{{%/link%}}</li> </ul> </td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}Create Bucket Instance{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/get-bucket-details/" %}}Get a Bucket’s Details{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/get-bucket-cors/" %}}Get Bucket CORS{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/list-objects/" %}}List Objects in a Bucket{{%/link%}} <ul> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/list-objects/#list-all-objects-by-pagination" %}}List All Objects by Pagination{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/list-objects/#list-objects-through-iteration" %}}List Objects Through Iteration{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/check-object-availability/" %}}Check Object Availability{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/download-object/" %}}Download Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/download-object/#download-a-portion-of-the-object" %}}Download a Portion of the Object{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/download-object/#download-an-object-using-transfer-manager" %}}Download an Object Using Transfer Manager{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/download-object/#generate-presigned-url-to-download-an-object" %}}Generate Presigned URL to Download an Object{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/download-object/#generate-presigned-url-with-expiry-and-active-time" %}}Generate Presigned URL With Expiry and Active Time{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/upload-object/" %}}Upload Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/upload-object/#upload-object-as-a-stream" %}}Upload Object as a Stream{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/upload-object/#upload-object-as-a-string" %}}Upload Object as a String{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/upload-object/#upload-object-with-options" %}}Upload Object with Options{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/upload-object/#upload-an-object-using-multipart-operations" %}}Upload an Object Using Multipart Operations{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/upload-object/#upload-an-object-using-transfer-manager-technique" %}}Upload an Object Using Transfer Manager{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/upload-object/#generate-presigned-url-to-upload-an-object" %}}Generate Presigned URL to Upload an Object{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/upload-object/#generate-presigned-url-with-expiry-and-active-time" %}}Generate Presigned URL With Expiry and Active Time{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/extract-zipped-object/" %}}Extract a Zipped Object{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/copy-objects/" %}}Copy Object{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/rename-move-object/" %}}Rename and Move Operations on an Object{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/delete-objects/" %}}Delete Objects{{%/link%}} <ul> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/delete-objects/#delete-a-single-object" %}}Delete a Single Object{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/delete-objects/#delete-multiple-objects" %}}Delete Multiple Objects{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/delete-objects/#truncate-bucket" %}}Truncate Bucket{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/delete-objects/#delete-a-path-in-the-bucket" %}}Delete a Path in the Bucket{{%/link%}}</li> </ul> </li> </ul> </td> </tr> <tr> <td>Object Operations</td> <td> <ul> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-object-instance/" %}}Create Object Instance{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/list-object-versions/" %}}List Versions of an Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/list-object-versions/#list-all-versions-of-an-object" %}}List All Versions of an Object{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/list-object-versions/#list-all-versions-of-the-object-in-an-iterable-manner" %}}List All Versions of the Object in an Iterable Manner{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/object-details/" %}}Get Object Details{{%/link%}} <ul> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/object-details/#get-details-of-an-object" %}}Get Details of an Object{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/object-details/#get-details-of-a-particular-version-of-the-object" %}}Get Details of a Particular Version of the Object{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/put-object-meta/" %}}Put Object Meta Data{{%/link%}}</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-03-18T07:41:08.670Z" 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 {{%badge%}}stratus{{%/badge%}} 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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.ZCStratus;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCStratus stratus = ZCStratus.getInstance();{{%/code%}} -------------------------------------------------------------------------------- title: "Check Bucket Availability" description: "This page lists the Java SDK method to check if the bucket exists in your project." last_updated: "2026-03-18T07:41:08.670Z" 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 {{%badge%}}headBucket(){{%/badge%}} 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>{{%badge%}}bucket_name{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique name of the bucket{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}throwErr{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If you set this parameter as "{{%bold%}}true{{%/bold%}}", then it will throw an error when the bucket is not found in the project. The default value is "{{%bold%}}false{{%/bold%}}"</td> </tr> </tbody> </table> {{%code class="language-java"%}}Boolean throwErr = false; Boolean res = stratus.headBucket("bucket_name", throwErr); System.out.println(res);{{%/code%}} #### Possible Errors {{%note%}}{{%bold%}}Note:{{%/bold%}} If you use the SDK with the {{%badge%}}throw_err{{%/badge%}} 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.{{%/note%}} <table class="content-table"> <thead> <tr> <th class="w30p">Error Code</th> <th class="w70p">Meaning</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}{{%bold%}}404{{%/bold%}}{{%/badge%}}</td> <td>Not Found. Bucket Not found in Stratus.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}401{{%/bold%}}{{%/badge%}}</td> <td>Unauthorized/Access Denied - User doesn't have permission to perform the particular operation.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}403{{%/bold%}}{{%/badge%}}</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-03-18T07:41:08.670Z" 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 {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-stratus-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import java.util.List; import com.zc.component.stratus.ZCStratus; import com.zc.component.stratus.ZCBucket;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCStratus stratus = ZCStratus.getInstance(); List&lt;ZCBucket&gt; buckets = stratus.listBuckets(); // will return all the buckets in the organization {{%/code%}} -------------------------------------------------------------------------------- title: "Create Bucket Instance" description: "This page lists the Java SDK method to create a bucket instance." last_updated: "2026-03-18T07:41:08.671Z" 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 {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}} in Stratus. The Stratus reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-stratus-instance/" %}}component instance{{%/link%}}. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.ZCBucket;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCBucket bucket = stratus.bucketInstance("bucketName");{{%/code%}} -------------------------------------------------------------------------------- title: "Get a Bucket's Details" description: "This page lists the Java SDK method to get a bucket's details." last_updated: "2026-03-18T07:41:08.671Z" 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 {{%badge%}}getDetails(){{%/badge%}} SDK method to get a single bucket's details from the project. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.ZCBucket;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCBucket bucketDetails = bucket.getDetails(); // return the bucket details{{%/code%}} -------------------------------------------------------------------------------- title: "Get Bucket CORS" description: "This page lists the Java SDK method to get the current CORS configuration of the bucket." last_updated: "2026-03-18T07:41:08.671Z" 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 {{%badge%}}getCors(){{%/badge%}} 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 {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} CORS of a bucket can be edited by any user that has or has been granted {{%badge%}}Write{{%/badge%}} permission for Stratus component in the project, using the {{%link href="/en/getting-started/set-up-a-catalyst-project/profiles-and-permissions/" %}}Profiles & Permissions{{%/link%}} section. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can find out more about Bucket CORS from this {{%link href="/en/cloud-scale/help/stratus/stratus-config/bucket-cors/" %}}help section{{%/link%}}.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.beans.ZCStratusCorsResponse; import java.util.List;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}List&lt;ZCStratusCorsResponse&gt; res = bucket.getCors(); for(ZCStratusCorsResponse cors: res){ System.out.println(cors.getDomain()); }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.671Z" 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 {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} 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>{{%badge%}}maxKey{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will contain the maximum limit of objects that can be listed by pagination.</td> </tr> <tr> <td>{{%badge%}}nextToken{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Mandatory{{%/bold%}} parameter. Will contain the token to get the next set of objects.</td> </tr> <tr> <td>{{%badge%}}prefix{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. To list objects that match the prefix value.</td> </tr> <tr> <td>{{%badge%}}orderBy{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. To list objects either in ascending or descending order. {{%bold%}}Default Value{{%/bold%}}: {{%badge%}}asc{{%/badge%}}</td> </tr> </tbody> </table> The response we get will contain the following properties of the bucket, which will be stored in {{%badge%}}moreOptions{{%/badge%}}: * {{%badge%}}key count{{%/badge%}}: Will contain the value of the number of objects that are being returned * {{%badge%}}max keys{{%/badge%}}: The maximum limit of objects that can be returned * {{%badge%}}Truncated{{%/badge%}}: Will contain the status to notify if a bucket is truncated or not. * {{%badge%}}contents{{%/badge%}}: List of object details * {{%badge%}}continuation_token{{%/badge%}}: If you a sent a {{%badge%}}continuation_token{{%/badge%}} in the request, it will be shown in the response. * {{%badge%}}next_continuation_token{{%/badge%}}: If the response was truncated, the value of this key must be passed as {{%badge%}}continuation_token{{%/badge%}} to the same method for retrieving the next set of objects. With each iteration, we will list the {{%badge%}}maxKey{{%/badge%}} number of objects and check if {{%badge%}}nextToken{{%/badge%}} has been created. Using {{%badge%}}nextToken{{%/badge%}} we will continue the iteration till all the objects have been listed. **Ensure the following packages are imported:** {{%code class="language-java"%}}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; {{%/code%}} {{%code class="language-java"%}}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); {{%/code%}} ### 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 {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **Ensure the following packages are imported:** {{%code class="language-java"%}}import java.util.Iterator; import com.zc.component.stratus.ZCObject; import com.zc.component.stratus.beans.ZCListObjectOptions; import java.util.List; {{%/code%}} {{%code class="language-java"%}}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()); } } {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.672Z" 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 {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} If you have enabled {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} for your bucket, then you need to pass the {{%badge%}}versionID{{%/badge%}} 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: - {{%badge%}}**true**{{%/badge%}}: If the object is available, the specified version is available, and if the user has the relevant permissions to access the objects. - {{%badge%}}**false**{{%/badge%}}: - 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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object.</td> </tr> <tr> <td>{{%badge%}}versionId{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. Will hold the unique version ID of the object, if {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled.</td> </tr> <tr> <td>{{%badge%}}throwErr{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If you set this parameter as "{{%bold%}}true{{%/bold%}}", then it will throw an error when the object is not found in the project. The default value is "{{%bold%}}false{{%/bold%}}"</td> </tr> </tbody> </table> {{%code class="language-java"%}}Boolean throwErr = true; Boolean headObjectRes = bucket.headObject("sam/out/sample.txt", "versionId", throwErr); System.out.println(headObjectRes);{{%/code%}} **Possible Errors** {{%note%}}{{%bold%}}Note:{{%/bold%}} If you use the SDK with the {{%badge%}}throw_err{{%/badge%}} 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.{{%/note%}} <table class="content-table"> <thead> <tr> <th class="w30p">Error Code</th> <th class="w70p">Meaning</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}{{%bold%}}404{{%/bold%}}{{%/badge%}}</td> <td>Not Found. Object Not found.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}401{{%/bold%}}{{%/badge%}}</td> <td>Unauthorized/Access Denied - User doesn't have permission to perform the particular operation.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}403{{%/bold%}}{{%/badge%}}</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-03-18T07:41:08.672Z" 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 {{%link href="/en/cloud-scale/help/stratus/objects/manage-object/download-object/" %}}download a particular object{{%/link%}}, or version of the object. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. The first step of the download operation is a {{%badge%}}GET{{%/badge%}} operation that retrieves the required object from the bucket. To be able to download an object, the requester must have {{%badge%}}READ{{%/badge%}} access permissions. However, owners of the bucket do have the option to grant {{%badge%}}READ{{%/badge%}} access permissions to users, allowing them to download the object without using the required response headers. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for your bucket, you need to pass the {{%badge%}}versionId{{%/badge%}} to download the particular version of the object. If no {{%badge%}}versionId{{%/badge%}} 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 {{%badge%}}versionId{{%/badge%}} param with the value "{{%badge%}}topVersion{{%/badge%}}". #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.io.*;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}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);{{%/code%}} ### Download a Portion of the Object The following SDK implements the {{%badge%}}setRange(){{%/badge%}} method. This method allows you to download a specific range of bytes of an object. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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.*;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}// 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);{{%/code%}} ### 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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.transfer.ZCTransferManager;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCTransferManager transferManager= ZCTransferManager.getInstance(bucket);{{%/code%}} #### Download Object as Iterable Part Streams #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import java.nio.file.StandardOpenOption; import java.nio.file.Files; import java.util.Iterator; import java.nio.file.Path; import java.io.*;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}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 }{{%/code%}} #### 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** * {{%badge%}}PartSize{{%/badge%}}: It is the size of each part in Mb * {{%badge%}}key{{%/badge%}}: Will hold the name of the object #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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.*;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}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); }{{%/code%}} ### 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 {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}URL_ACTION{{%/badge%}}</td> <td>{{%bold%}}Enum{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. This is the parameter that will allow you to generate a presigned URL for download action. <ul> <li>{{%badge%}}**URL_ACTION.GET**{{%/badge%}}: To download an object</li> </ul> </td> </tr> <tr> <td>{{%badge%}}expiry{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. The URL validity time in seconds. <ul> <li>Default value: {{%bold%}}3600 seconds{{%/bold%}}</li> <li>Minimum value: {{%bold%}}30 seconds{{%/bold%}}</li> <li>Maximum value: {{%bold%}}7 days{{%/bold%}}</li> </ul> </td> </tr> <tr> <td>{{%badge%}}activeFrom{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. This param will contain the time after which the URL is valid. Maximum value is {{%bold%}}7 days{{%/bold%}}. URLs are made active as soon as they are generated by default.</td> </tr> </tbody> </table> #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.enums.URL_ACTION; import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}JSONObject res = bucket.generatePreSignedUrl("sam/out/sample.txt",URL_ACTION.GET); System.out.println(res.get("signature"));{{%/code%}} ### Generate Presigned URL With Expiry and Active Time #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.enums.URL_ACTION; import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}JSONObject res = bucket.generatePreSignedUrl("object_name",URL_ACTION.GET, "expiry_in","active_from"); System.out.println(res.get("signature")); {{%/code%}} **Example Response for Generating a Presigned URL for Download** {{%code class="language-json" scroll="set-scroll" %}}{ signature: 'https://sadi-development.zoho stratus.com/_signed/text.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747896279887&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=3YBUX1HFSxNQzQJjFrln82AyJsEEuC5T9dsZwWxGyEE' } {{%/code%}} **Example Snippet Illustrating Usage of Presigned URL to Upload an Object** {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}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(); } } } {{%/code%}} -------------------------------------------------------------------------------- title: "Upload Object" description: "This page lists the Java SDK method to upload objects to a bucket." last_updated: "2026-03-18T07:41:08.672Z" 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 {{%link href="/en/cloud-scale/help/stratus/objects/upload-object/" %}}upload objects{{%/link%}} to the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}bucket{{%/link%}} 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 {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. If you do not have {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} 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 {{%badge%}}versionId{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ### 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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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.*;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}InputStream file =new FileInputStream("filePath"); Boolean res = bucket.putObject("sam/out/sample.txt", file); System.out.println(res);{{%/code%}} ### 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; {{%badge%}}putObject(){{%/badge%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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.*;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}Boolean res = bucket.putObject("sam/out/sample.txt", "content of the file"); System.out.println(res);{{%/code%}} ### Upload Object with Options Using this SDK method, you can use the following options while you upload an object. * {{%badge%}}**setOverwrite()**{{%/badge%}}: 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**'. * {{%badge%}}**setTTL()**{{%/badge%}}: 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**. * {{%badge%}}**setMetaData()**{{%/badge%}}: This is an option you can use to upload {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#metadata" %}}meta details{{%/link%}} of the object that is being uploaded. * {{%badge%}}**contentType**{{%/badge%}}: This is an option you can provide, if you need to set the MIME type of the object. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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.*;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}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);{{%/code%}} ### Upload Object With Extract Option When you upload a zipped object using the {{%badge%}}putZipObject(){{%/badge%}} SDK method, the objects present in the zip will be extracted, and uploaded. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.ZCBucket; import com.zc.component.stratus.ZCStratus; import com.zc.component.stratus.beans.ZCPutObjectOptions;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}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); {{%/code%}} This SDK method will return the value of a {{%badge%}}taskId{{%/badge%}}. You can use this value to find out the status of the extraction using this {{%link href="/en/sdk/java/v1/cloud-scale/stratus/extract-zipped-object/#get-zip-extraction-status" %}}SDK method{{%/link%}}. **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ 'task_id': '1234263749' }{{%/code%}} ### 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 {{%badge%}}uploadId{{%/badge%}}. This ID will allow us to upload multiple pats of the object. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.beans.ZCInitiateMultipartUpload;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCInitiateMultipartUpload multipart = bucket.initiateMultipartUpload("sam/out/sample.txt");{{%/code%}} #### 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 {{%badge%}}part_number{{%/badge%}} 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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the name of the object.</td> </tr> <tr> <td>{{%badge%}}uploadId{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. This value is returned in the Initiate Multipart Upload method.</td> </tr> <tr> <td>{{%badge%}}part{{%/badge%}}</td> <td>{{%bold%}}InputStream{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the data of the object part.</td> </tr> <tr> <td>{{%badge%}}partNumber{{%/badge%}}</td> <td>{{%bold%}}Int{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will have the ordering of the parts that are being uploaded.</td> </tr> </tbody> </table> #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import java.io.*;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}int partNumber = 1; InputStream part = new FileInputStream("filePath"); Boolean res = bucket.uploadPart("sam/out/sample.txt", "uploadId", part, partNumber); System.out.println(res);{{%/code%}} #### 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 {{%badge%}}uploadId{{%/badge%}} to the {{%badge%}}getMultipartUploadSummary(){{%/badge%}} method. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.beans.ZCMultipartObjectSummary;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}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()); {{%/code%}} #### 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 {{%badge%}}uploadId{{%/badge%}} to the {{%badge%}}completeMultipartUpload(){{%/badge%}} method. {{%code class="language-java"%}}Boolean completeRes = bucket.completeMultipartUpload("sam/out/sample.txt", "uploadId"); System.out.println(completeRes);{{%/code%}} #### Example Snippet Illustring Implementation of Multipart Operations #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}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); } } }{{%/code%}} ### Upload an Object Using Transfer Manager #### Create Transfer Manager Instance #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.transfer.ZCTransferManager;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCTransferManager transferManager= ZCTransferManager.getInstance(bucket);{{%/code%}} #### Multipart Upload **Create Multipart Upload Instance** The following SDK method will create a multipart instance by initiating multipart upload. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.beans.ZCMultipartUpload;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCMultipartUpload multipart = transferManager.createMultipartInstance("sam/out/sample.txt");{{%/code%}} If you are required to create an instance for an already initialized multipart upload operation, then copy and use the code snippet given below {{%code class="language-java"%}}ZCMultipartUpload multipart = transferManager.createMultipartInstance("sam/out/sample.txt", "uploadId");{{%/code%}} #### Upload Part In the following SDK method we are going to be using the {{%badge%}}multipart{{%/badge%}} instance we initialized in the *Create Multipart Upload Instance* section. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import java.io.InputStream;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}int partNumber = 1; InputStream part = new FileInputStream("filePath"); Boolean uploadRes = multipart.uploadPart(part, partNumber); System.out.println(uploadRes);{{%/code%}} #### Upload Summary #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.beans.ZCMultipartObjectSummary;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}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());{{%/code%}} #### Complete Upload {{%code class="language-java"%}}Boolean completeRes = multipart.completeUpload(); System.out.println(completeRes);{{%/code%}} #### 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. {{%code class="language-java"%}}import java.io.InputStream; import com.zc.component.stratus.beans.ZCMultipartObjectSummary;{{%/code%}} {{%code class="language-java"%}}InputStream file =new FileInputStream("filePath"); int partSize = 50; ZCMultipartObjectSummary res = transferManager.putObjectAsParts("objetName", file, partSize);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} For object's that are larger than {{%bold%}}2GB{{%/bold%}}, we would recommend that you use the individual SDK methods to carry out the multipart upload operation successfully.{{%/note%}} ### 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 {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}URL_ACTION{{%/badge%}}</td> <td>{{%bold%}}Enum{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. This is the parameter that will allow you to generate a presigned URL for an upload action. <ul> <li>{{%badge%}}**URL_ACTION.PUT**{{%/badge%}}: To upload an object</li> </ul> </td> </tr> <tr> <td>{{%badge%}}expiry{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. The URL validity time in seconds. <ul> <li>Default value: {{%bold%}}3600 seconds{{%/bold%}}</li> <li>Minimum value: {{%bold%}}30 seconds{{%/bold%}}</li> <li>Maximum value: {{%bold%}}7 days{{%/bold%}}</li> </ul> </td> </tr> <tr> <td>{{%badge%}}activeFrom{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. This param will contain the time after which the URL is valid. Maximum value is {{%bold%}}7 days{{%/bold%}}. URLs are made active as soon as they are generated by default.</td> </tr> </tbody> </table> #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.enums.URL_ACTION; import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}JSONObject res = bucket.generatePreSignedUrl("sam/out/sample.txt", URL_ACTION.PUT); System.out.println(res.get("signature")); {{%/code%}} ### Generate Presigned URL With Expiry and Active Time #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.enums.URL_ACTION; import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}JSONObject res = bucket.generatePreSignedUrl("object_name",URL_ACTION.GET, "expiry_in","active_from"); System.out.println(res.get("signature")); {{%/code%}} **Example Response for Generating a Presigned URL for Upload** {{%code class="language-json" scroll="set-scroll" %}}{ "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" }{{%/code%}} **Example Snippet Illustrating Usage of Presigned URL to Upload an Object** {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import okhttp3.*; import java.io.File; import java.io.IOException;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}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()); } } } }{{%/code%}} -------------------------------------------------------------------------------- title: "Extract a Zipped Object" description: "This page lists the Java SDK method to extract a zipped object." last_updated: "2026-03-18T07:41:08.674Z" 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 {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} **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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will be the name of the zip file, you need to extract</td> </tr> <tr> <td>{{%badge%}}destination{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will contain the complete {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path information{{%/link%}} of the destination, where the extracted objects will be stored in the bucket.</td> </tr> </tbody> </table> #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.beans.ZCStratusZipExtractResponse;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCStratusZipExtractResponse res = bucket.unzipObject("sam/out/sample.zip","output/"); System.out.println(res.getObjectName()); System.out.println(res.getTaskId());{{%/code%}} ### 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%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} Using the {{%badge%}}taskId{{%/badge%}} parameter, in the following SDK method, we can determine the status of the extraction. The {{%badge%}}taskId{{%/badge%}} is returned in the response of {{%badge%}}unzipObject(){{%/badge%}} method. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}JSONObject res = object.getUnzipStatus("sam/out/sample.zip","taskId"); System.out.println(res);{{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "task_id": "6963000000272049", "status": "SUCCESS" }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.674Z" 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 {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} The {{%badge%}}key{{%/badge%}} will be the object you are going to copy, and the {{%badge%}}destination{{%/badge%}}, 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 {{%badge%}}destination{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} * You need to provide the complete object name, along with the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}{{%bold%}}path{{%/bold%}}{{%/link%}} for both {{%badge%}}key{{%/badge%}} and {{%badge%}}destination{{%/badge%}} values. * For example, if you have file named "{{%badge%}}kitten.png{{%/badge%}}" in the path {{%badge%}}pictures/puppy{{%/badge%}}, and you need to copy the file to {{%badge%}}pictures/kitten{{%/badge%}} path, then: <br /> {{%badge%}}key{{%/badge%}} value will be '{{%badge%}}pictures/puppy/kitten.png{{%/badge%}}'<br /> {{%badge%}}destination{{%/badge%}} value will be '{{%badge%}}pictures/kitten/kitten.png{{%/badge%}}'{{%/note%}}<br /> #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}JSONObject copyRes = bucket.copyObject("sam/out/sample.txt", "output/sample.txt") System.out.println(copyRes);{{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "copy_to": "output/sample.txt", "object_key": "sam/out/sample.txt", "message": "Object copied successfully." }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.675Z" 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 {{%badge%}}renameObject(){{%/badge%}} SDK method. ### Rename an Object Using the {{%badge%}}renameObject(){{%/badge%}} SDK method you can rename objects present in a bucket. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} **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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>The original name of the object that you need to rename</td> </tr> <tr> <td>{{%badge%}}destination{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>The new name that you rename the object with</td> </tr> </tbody> </table> #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}JSONObject res = bucket.renameObject("sam/out/sample.txt", "sam/out/update_sample.txt"); System.out.println(res);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} You cannot rename objects in a bucket that has {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} enabled.{{%/note%}} ### Move an Object Using the {{%badge%}}renameObject(){{%/badge%}} SDK method, we can move the object from one path to another within a bucket. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>The complete name and {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}} of the object that you are required to move.</td> </tr> <tr> <td>{{%badge%}}destination{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>The complete name and new path of the object.</td> </tr> </tbody> </table> {{%note%}}{{%bold%}}Note:{{%/bold%}} * You need to provide the complete object name, along with the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}{{%bold%}}path{{%/bold%}}{{%/link%}} for both {{%badge%}}key{{%/badge%}} and {{%badge%}}destination{{%/badge%}} values. * For example, if you have file named "{{%badge%}}kitten.png{{%/badge%}}" in the path {{%badge%}}pictures/puppy{{%/badge%}}, and you need to move the file to {{%badge%}}pictures/kitten{{%/badge%}} path, then: <br /> {{%badge%}}key{{%/badge%}} value will be '{{%badge%}}pictures/puppy/kitten.png{{%/badge%}}'<br /> {{%badge%}}destination{{%/badge%}} value will be '{{%badge%}}pictures/kitten/kitten.png{{%/badge%}}'{{%/note%}}<br /> #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}JSONObject res = bucket.renameObject("sam/out/sample.txt", "output/sample.txt"); System.out.println(res);{{%/code%}}<br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} You cannot perform move operations in a bucket that has {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} enabled.{{%/note%}} -------------------------------------------------------------------------------- title: "Delete Objects" description: "This page lists the Java SDK method to delete objects stores in a bucket." last_updated: "2026-03-18T07:41:08.675Z" 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 {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}versionId{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} 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>{{%badge%}}ttl{{%/badge%}}</td> <td>{{%bold%}}int{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. It allows you to schedule your delete operations. For example, if you provide the value of {{%badge%}}ttl{{%/badge%}} as {{%bold%}}60{{%/bold%}}, the delete operation will only occur after 60 seconds. The value of {{%badge%}}ttl{{%/badge%}} 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 {{%badge%}}deleteObject(){{%/badge%}} method. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}int ttl = 200; //time to live in seconds JSONObject deleteRes = bucket.deleteObject("sam/out/sample.txt", "versionId", ttl); System.out.println(deleteRes); {{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled on the bucket and no specific {{%badge%}}versionId{{%/badge%}} is provided, deleting an object will {{%bold%}}remove all versions{{%/bold%}} of that object by default.{{%/note%}} ### 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%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} Ensure you provide the {{%badge%}}versionId{{%/badge%}} of the object if you enabled {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} for your bucket. You can also schedule your delete operation using the {{%badge%}}ttl{{%/badge%}} variable. For example, if you provide the value of {{%badge%}}ttl{{%/badge%}} as **60**, the delete operation will only occur after **60 seconds**. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.beans.ZCDeleteObjectRequest; import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}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);{{%/code%}} ### Truncate Bucket Using this SDK method you will be able to essentially every single object present in the bucket. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}JSONObject truncateRes = bucket.truncate(); System.out.println(truncateRes);{{%/code%}} ### Delete a Path in the Bucket Using this SDK, you will be able to delete all the objects present in a {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}. You need to pass the complete path to the {{%badge%}}deletePath(){{%/badge%}} method. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}JSONObject res = bucket.deletePath("sam/"); System.out.println(res);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} -------------------------------------------------------------------------------- title: "Create Object Instance" description: "This page lists the Java SDK method to create an object instance." last_updated: "2026-03-18T07:41:08.675Z" 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 {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.ZCObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCObject object = bucket.getObjectInstance("sam/out/sample.txt");{{%/code%}} -------------------------------------------------------------------------------- title: "List Versions of an Object" description: "This page lists the Java SDK method to get versions of an object." last_updated: "2026-03-18T07:41:08.676Z" 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 {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} 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 {{%badge%}}versionId{{%/badge%}}. 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 {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-object-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **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>{{%badge%}}nextToken{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>Will hold the value to determine the next set of versions.</td> </tr> <tr> <td>{{%badge%}}maxVersion{{%/badge%}}</td> <td>{{%bold%}}int{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} 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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}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);{{%/code%}} ### 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%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import java.util.Iterator; import com.zc.component.stratus.beans.ZCObjectVersions; import com.zc.component.stratus.beans.ZCObjectVersions.ZCVersionDetail;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}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()); } }{{%/code%}} -------------------------------------------------------------------------------- title: "Get Object Details" description: "This page lists the Java SDK method to get details of objects stored in a bucket." last_updated: "2026-03-18T07:41:08.676Z" 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 {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-object-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.ZCObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCObject objectRes = object.getDetails(); System.out.println(objectRes);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled, then using this SDK method will only return the latest version's object details.{{%/note%}} ### 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%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **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>{{%badge%}}versionId{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} 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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.ZCObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCObject objectRes = object.getDetails("versionId"); System.out.println(objectRes);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} You can get the details of the latest version of the object by passing the parameter valuse as {{%badge%}}topVersion{{%/badge%}}.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.676Z" 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 {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#metadata" %}}meta details{{%/link%}} for a particular object stored in a bucket in Stratus. The Object reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-object-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} The meta details will be passed as JSON key value pairs. For example, {"meta_key" : "meta_value"} {{%note%}}{{%bold%}}Note:{{%/bold%}} * 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 {{%badge%}}**HEAD**{{%/badge%}} request method. In the response, the metadata will be listed in the key '{{%badge%}}x-user-meta{{%/badge%}}'. * 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.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import org.json.simple.JSONObject; import java.util.HashMap;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}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);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "message": "Metadata added successfully" }{{%/code%}} ##### 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-03-18T07:41:08.680Z" 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 {{%link href="/en/cloud-scale/help/zcql/introduction" %}}ZCQL{{%/link%}} is Catalyst's own query language that enables you to perform data retrieval, insertion, updating, and deletion operations on the tables in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}}. 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 {{%link href="/en/cloud-scale/help/data-store/olap-database/introduction/" %}}**OLAP database**{{%/link%}}, 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 {{%link href="/en/cloud-scale/help/zcql/zcql-functions/" %}}ZCQL functions{{%/link%}} 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 {{%badge%}}executeQuery(){{%/badge%}} method for execution as shown in the sample code below. The {{%badge%}}executeQuery(){{%/badge%}} method supports these three parameters: * The String variable containing the constructed query statement * {{%badge%}}isV2?{{%/badge%}}: A boolean value ({{%badge%}}true{{%/badge%}} or {{%badge%}}false{{%/badge%}}) indicating if it is a ZCQL v2 query * {{%badge%}}isOLAP?{{%/badge%}}: A boolean value ({{%badge%}}true{{%/badge%}} or {{%badge%}}false{{%/badge%}}) indicating if the query needs to be executed on the OLAP database {{%code class="language-sql"%}}executeQuery(query: string, isV2?: boolean , isOLAP?:boolean){{%/code%}} 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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCRowObject; import com.zc.component.zcql.ZCQL;{{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//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) {{%/code%}} #### 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-03-18T07:41:08.681Z" 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 **{{%link href="https://www.zoho.com/accounts/protocol/oauth.html"%}}Zoho OAuth authentication{{%/link%}}**. 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 {{%link href="https://api-console.zoho.com/"%}}Zoho API console{{%/link%}} for a specific application in {{%link href="/en/cloud-scale/help/cache/introduction/"%}}Catalyst Cache{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} Before you configure the connector in your Java business logic as shown below, you will need to register a new client in the {{%link href="https://api-console.zoho.com/"%}}Zoho API console{{%/link%}}, 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%}}{{%bold%}}Note:{{%/bold%}} * 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.{{%/note%}} The code below illustrates a Java connector. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import org.json.simple.JSONObject; import com.zc.auth.connectors.ZCConnection; import com.zc.auth.connectors.ZCConnector;{{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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();{{% /code%}} #### 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-03-18T07:41:08.682Z" 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 {{%badge%}}getProject(){{%/badge%}} method to retrieve the cached app object at any time. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.common.ZCProject; import com.zc.component.zcql.ZCQL;{{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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 {{%/code%}} #### Job Scheduling -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the methods to perform Job Scheduling operations" last_updated: "2026-03-18T07:41:08.683Z" 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 {{%link href="/en/serverless/help/circuits/introduction/" %}}Circuits{{%/link%}}, Webhooks(any third-party URL), {{%link href="/en/serverless/help/functions/job-functions/" %}}Job Functions{{%/link%}}, and {{%link href="/en/serverless/help/appsail/introduction/" %}}App Sail{{%/link%}} 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>{{%link href="/en/sdk/java/v1/job-scheduling/jobpool/get-all-job-pool/" %}}Get All Job Pool{{%/link%}}<br />{{%link href="/en/sdk/java/v1/job-scheduling/jobpool/get-job-pool/" %}}Get a Specific Job Pool{{%/link%}}</td> </tr> <tr> <td>Job</td> <td>{{%link href="/en/sdk/java/v1/job-scheduling/jobs/create-job/" %}}Create Job{{%/link%}}<br />{{%link href="/en/sdk/java/v1/job-scheduling/jobs/get-job/" %}}Get Job Details{{%/link%}}<br />{{%link href="/en/sdk/java/v1/job-scheduling/jobs/delete-job/" %}}Delete a Job{{%/link%}}</td> </tr> <tr> <td>Cron</td> <td>{{%link href="/en/sdk/java/v1/job-scheduling/cron/create-one-time-cron/" %}}Create a One-Time Cron{{%/link%}}<br />{{%link href="/en/sdk/java/v1/job-scheduling/cron/create-recurring-cron/" %}}Create a Recurring Cron{{%/link%}}<br />{{%link href="/en/sdk/java/v1/job-scheduling/cron/create-cron-cron-expressions/" %}}Create Cron Using Cron Expressions{{%/link%}}<br />{{%link href="/en/sdk/java/v1/job-scheduling/cron/get-cron-details/" %}}Get Details of a Particular Cron{{%/link%}}<br />{{%link href="/en/sdk/java/v1/job-scheduling/cron/get-all-cron-details/" %}}Get Details of All Crons{{%/link%}}<br />{{%link href="/en/sdk/java/v1/job-scheduling/cron/update-cron/" %}}Update Cron{{%/link%}}<br />{{%link href="/en/sdk/java/v1/job-scheduling/cron/pause-cron/" %}}Pause Cron{{%/link%}}<br />{{%link href="/en/sdk/java/v1/job-scheduling/cron/resume-cron/" %}}Resume Cron{{%/link%}}<br />{{%link href="/en/sdk/java/v1/job-scheduling/cron/run-cron/" %}}Run Cron{{%/link%}}<br />{{%link href="/en/sdk/java/v1/job-scheduling/cron/delete-cron/" %}}Delete Cron{{%/link%}}</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-03-18T07:41:08.684Z" 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 {{%link href="/en/job-scheduling/" %}}Job Scheduling{{%/link%}} 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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.jobscheduling.ZCJobScheduling;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance(); // get job scheduling instance{{%/code%}} ##### 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-03-18T07:41:08.684Z" 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 {{%link href="/en/job-scheduling/help/cron/introduction/" %}}Cron{{%/link%}} component is used to schedule the submission of a {{%link href="/en/job-scheduling/help/job/introduction/" %}}job{{%/link%}} to the {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job Pool{{%/link%}}. Using the following SDK, you will be able to create a cron that will schedule a job submission only once. {{%note%}}{{%bold%}}Note:{{%/bold%}} The following SDK is written for a job that will trigger a {{%link href="/en/serverless/help/functions/job-functions/" %}}Job Function{{%/link%}}. To make the SDK compatible for the other types, you need to replace the value with proper {{%link href="/en/job-scheduling/help/jobpool/key-concepts/#job-pool-id" %}}{{%bold%}}Job Pool ID{{%/bold%}}{{%/link%}}, or {{%bold%}}Job Pool Name{{%/bold%}}, and provide the appropriate {{%bold%}}Target Name{{%/bold%}}, or {{%bold%}}Target ID{{%/bold%}}.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}// 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);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} We urge you to use this SDK to configure only {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}. Use the {{%italics%}}UI Builder{{%/italics%}} to configure {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-defined Crons{{%/link%}}.{{%/note%}} -------------------------------------------------------------------------------- title: "Create a Recurring Cron" description: "This page describes the Java method to create a recurring cron with sample code snippets." last_updated: "2026-03-18T07:41:08.685Z" 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. {{%tabs%}} {{%tab "Every Cron" %}} ### 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%}}{{%bold%}}Note:{{%/bold%}} The following SDK is configured to {{%link href="/en/api/code-reference/job-scheduling/job/submit-job/submit-function-job/#SubmitaFunctionJobByID" %}}submit a job{{%/link%}} every {{%bold%}}2Hrs 1Mins and 3secs{{%/bold%}}. You can change this value as per your requirement by passing the relevant value to the {{%badge%}}setTime(){{%/badge%}} method.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}// 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); {{%/code%}} {{%/tab%}} {{%tab "Daily Cron" %}} <br> ### Create a Daily Cron The following SDK can be used to schedule a cron to {{%link href="/en/job-scheduling/help/implementation/submit-jobs-using-jobs/" %}}submit a job{{%/link%}} to the {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job pool{{%/link%}} at a fixed time at a **daily interval**. {{%note%}}{{%bold%}}Note:{{%/bold%}} The following SDK is configured to execute the cron on {{%bold%}}0Hr 0Min 0Sec{{%/bold%}} every single day. You can change this value as per your requirement by passing the relevant value to the {{%badge%}}setTime(){{%/badge%}} method.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}// 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); {{%/code%}} {{%/tab%}} {{%tab "Monthly Cron" %}} <br> ### Create a Monthly Cron The following SDK can be used to schedule a cron to {{%link href="/en/job-scheduling/help/implementation/submit-jobs-using-jobs/" %}}submit a job{{%/link%}} to the {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job pool{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} The following SDK is configured to execute the cron that will submit a job to the job pool {{%bold%}}every month{{%/bold%}} on the {{%bold%}}1st{{%/bold%}}, {{%bold%}}3rd{{%/bold%}}, and {{%bold%}}5th{{%/bold%}} at {{%bold%}}0Hrs,0Mins, 0Secs{{%/bold%}}. You can change this value as per your requirement by passing the relevant value to the {{%badge%}}setTime(){{%/badge%}} method.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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;{{% /panel_without_adjustment %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} In the following SDK snippet, if you comment out the lines {{%badge%}}.setWeeksOfMonth(1, 3){{%/badge%}} and {{%badge%}}.setDayOfTheWeek(1, 2){{%/badge%}}, and comment in code lines {{%badge%}}.setTime(0, 0, 0){{%/badge%}} and {{%badge%}}.setDays(1, 3, 5){{%/badge%}}, 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.{{%/note%}} {{%code class="language-java"%}}// 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); {{%/code%}} {{%/tab%}} {{%tab "Yearly Cron" %}} <br> ### Create a Yearly Cron The following SDK can be used to schedule a cron to{{%link href="/en/job-scheduling/help/implementation/submit-jobs-using-jobs/" %}}submit a job{{%/link%}} to the {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job pool{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} The following SDK is configured to execute the cron that will submit a job to the job pool on the {{%bold%}}1st{{%/bold%}}, {{%bold%}}2nd{{%/bold%}}, and {{%bold%}}3rd{{%/bold%}} on the {{%bold%}}8th month{{%/bold%}} of {{%bold%}}every year{{%/bold%}}. You can change this value as per your requirement by passing the relevant value to the {{%badge%}}setTime(){{%/badge%}} method.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}// 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); {{%/code%}} {{%/tab%}} {{%/tabs%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} We urge you to use this SDK to configure only {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}. Use the {{%italics%}}UI Builder{{%/italics%}} to configure {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-defined Crons{{%/link%}}.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.685Z" 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 {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-expressions" %}}Cron Expressions{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} In the following SDK, the cron has been configured using Cron Expressions, to submit a job to the job pool on {{%bold%}}0Hrs 0Mins 0Secs{{%/bold%}} on {{%bold%}}every 1st day of the week{{%/bold%}} on the {{%bold%}}1st month of every year{{%/bold%}}.{{%/link%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}// 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); {{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} We urge you to use this SDK to configure only {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}. Use the {{%italics%}}UI Builder{{%/italics%}} to configure {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-defined Crons{{%/link%}}.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.686Z" 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 {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}**Pre-Defined Cron**{{%/link%}} or {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}**Dynamic Cron**{{%/link%}}. You need to pass the {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-id" %}}{{%badge%}}cron id{{%/badge%}}{{%/link%}} or the name of the cron to {{%badge%}}getCron(){{%/badge%}} SDK method. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.jobscheduling.beans.cron.ZCCronDetails;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}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 {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.686Z" 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 {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-Defined Crons{{%/link%}} using the {{%badge%}}getCron(){{%/badge%}} SDK method. {{%note%}}{{%bold%}}Note:{{%/bold%}} This method will only fetch you details of Pre-Defined Crons. This method will not work for {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import java.util.List; import com.zc.component.jobscheduling.beans.cron.ZCCronDetails;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}List&lt;ZCCronDetails&gt; allCrons = jobScheduling.cron.getCron(); // get all cron details {{%/code%}} -------------------------------------------------------------------------------- title: "Update Cron" description: "This page describes the Java method to update a cron in the project with sample code snippets." last_updated: "2026-03-18T07:41:08.686Z" 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 {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-id" %}}{{%badge%}}cron id{{%/badge%}}{{%/link%}} to {{%badge%}}getCron(){{%/badge%}} method. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can use this method to update details of both {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-Defined Crons{{%/link%}} and {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.jobscheduling.beans.cron.ZCCronDetails;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}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 {{%/code%}} -------------------------------------------------------------------------------- title: "Pause Cron" description: "This page describes the Java method to pause a cron in the project with sample code snippets." last_updated: "2026-03-18T07:41:08.715Z" 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 {{%link href="/en/job-scheduling/help/job/introduction/" %}}job{{%/link%}} to the {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job Pool{{%/link%}}. You need to pass the {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-id" %}}{{%badge%}}cron id{{%/badge%}}{{%/link%}} or name of the cron you wish to pause to the {{%badge%}}pauseCron(){{%/badge%}} SDK method. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can use this method to update details of both {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-Defined Crons{{%/link%}} and {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.jobscheduling.beans.cron.ZCCronDetails;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCCronDetails pausedCronA = jobScheduling.cron.pauseCron(123456789l); // pause cron with corn id ZCCronDetails pausedCronB = jobScheduling.cron.pauseCron("test_cron"); // pause cron with cron name {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.715Z" 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 {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-id" %}}{{%badge%}}cron id{{%/badge%}}{{%/link%}} or name to the {{%badge%}}resumeCron(){{%/badge%}} SDK method. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can use this method to update details of both {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-Defined Crons{{%/link%}} and {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.jobscheduling.beans.cron.ZCCronDetails;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCCronDetails resumedCronA = jobScheduling.cron.resumeCron(123456789l); // resume cron with cron id ZCCronDetails resumedCronB = jobScheduling.cron.resumeCron("test_cron"); // resume cron with cron name {{%/code%}} -------------------------------------------------------------------------------- title: "Run Cron" description: "This page describes the Java method to execute a cron in the project with sample code snippets." last_updated: "2026-03-18T07:41:08.715Z" 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 {{%link href="/en/job-scheduling/help/cron/introduction/" %}}execute a cron{{%/link%}}. The cron once executed will immediately submit the associated {{%link href="/en/job-scheduling/help/job/introduction/" %}}job{{%/link%}} to the {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job Pool{{%/link%}}. This can be done by passing the {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-id" %}}{{%badge%}}cron id{{%/badge%}}{{%/link%}} or name to the {{%badge%}}runCron(){{%/badge%}} SDK method. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can use this method to update details of both {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-Defined Crons{{%/link%}} and {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.jobscheduling.beans.job.ZCJobDetails;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCJobDetails runCronA = jobScheduling.cron.runCron(123456789l); // run cron with cron id ZCJobDetails runCronB = jobScheduling.cron.runCron("test_cron"); // run cron with cron name {{%/code%}} -------------------------------------------------------------------------------- title: "Delete Cron" description: "This page describes the Java method to delete a cron in the project with sample code snippets." last_updated: "2026-03-18T07:41:08.715Z" 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 {{%link href="/en/job-scheduling/help/cron/introduction/" %}}cron{{%/link%}}. This can be done by passing the {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-id" %}}{{%badge%}}cron id{{%/badge%}}{{%/link%}} or name to the {{%badge%}}deleteCron(){{%/badge%}} SDK method. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can use this method to update details of both {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-Defined Crons{{%/link%}} and {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.jobscheduling.beans.cron.ZCCronDetails;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCCronDetails deletedCronA = jobScheduling.cron.deleteCron(123456789l); // delete cron with cron Id ZCCronDetails deletedCronB = jobScheduling.cron.deleteCron("test_cron"); // delete cron with cron name {{%/code%}} ##### 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-03-18T07:41:08.733Z" 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 {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}Job Pools{{%/link%}}. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import java.util.ArrayList; import com.zc.component.jobscheduling.beans.jobpool.ZCJobpoolDetails;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ArrayList&lt;ZCJobpoolDetails&gt; jobpools = jobScheduling.getJobpool(); // get all jobpool {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.733Z" 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 {{%badge%}}getJobpool(){{%/badge%}} SDK method. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.jobscheduling.beans.jobpool.ZCJobpoolDetails;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCJobpoolDetails jobpoolA = jobScheduling.getJobpool("test_jobpool"); // get jobpool with jobpool name ZCJobpoolDetails jobpoolB = jobScheduling.getJobpool(1234567889L); // get jobpool with jobpool Id{{%/code%}} ##### Jobs -------------------------------------------------------------------------------- title: "Create Job" description: "This page describes the Java method to create a Job with sample code snippets." last_updated: "2026-03-18T07:41:08.733Z" 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 {{%link href="/en/serverless/help/functions/job-functions/" %}}Job Functions{{%/link%}}, Webhooks, {{%link href="/en/serverless/help/circuits/introduction/" %}}Circuits{{%/link%}}, and {{%link href="/en/serverless/help/appsail/introduction/" %}}App Sail{{%/link%}} services. You can also pass optional arguments in the form of JSON key value pairs. SDK snippet to create and submit Job to trigger: {{%tabs%}} {{%tab "Job Function" %}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}// 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); {{%/code%}} {{%/tab%}} {{%tab "Circuit" %}} **Ensure the following packages are imported:** {{%code class="language-java"%}} 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; {{%/code%}} {{%code class="language-java"%}} // 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); {{%/code%}} {{%/tab%}} {{%tab "Webhook" %}} **Ensure the following packages are imported:** {{%code class="language-java"%}} 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; {{%/code%}} {{%code class="language-java"%}} // 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); {{%/code%}} {{%/tab%}} {{%tab "AppSail" %}} **Ensure the following packages are imported:** {{%code class="language-java"%}} 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; {{%/code%}} {{%code class="language-java"%}} // 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); {{%/code%}} {{%/tab%}} {{%/tabs%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.733Z" 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 {{%link href="/en/job-scheduling/help/job/introduction/" %}}job{{%/link%}} that has been submitted to a {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job Pool{{%/link%}}. You need to pass the {{%link href="/en/job-scheduling/help/job/key-concepts/#job-id" %}}{{%badge%}}Job Id{{%/badge%}}{{%/link%}} to the {{%badge%}}getJob(){{%/badge%}} SDK method. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.jobscheduling.beans.job.ZCJobDetails;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCJobDetails fetchedJob = jobScheduling.job.getJob(1234567890L); // get job with job Id {{%/code%}} -------------------------------------------------------------------------------- title: "Delete a Job" description: "This page describes the Java method to delete a Job with sample code snippets." last_updated: "2026-03-18T07:41:08.733Z" 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 {{%link href="/en/job-scheduling/help/job/introduction/" %}}job{{%/link%}} that is in the process of being executed in a {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job Pool{{%/link%}}. You need to pass the Job Id to the {{%badge%}}deleteJob(){{%/badge%}} SDK method. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.jobscheduling.beans.job.ZCJobDetails;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCJobDetails deletedJob = jobScheduling.job.deleteJob(1234567890L); // delete job with job Id {{%/code%}} #### 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-03-18T07:41:08.734Z" 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 {{%link href="/en/pipelines/help/pipelines/introduction" %}}Catalyst Pipelines{{%/link%}} implements a CI/CD approach to enable automation of building, testing, and deployment of web or mobile applications to preferred environments. You can {{%link href="/en/pipelines/help/pipelines/create-a-pipeline" %}}create a pipeline{{%/link%}} 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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.pipeline.ZCPipeline; import com.zc.component.pipeline.ZCPipelineDetails; import com.zc.component.pipeline.ZCPipelineRunHistory;{{% /panel_without_adjustment %}} # 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 {{%badge%}}pipelines_service{{%/badge%}} instance as shown below. This component instance will be used for all Pipeline operations in the Java SDK. {{%code class="language-java line-numbers"%}}ZCPipeline pipelines_service = ZCPipeline.getInstance();{{%/code%}} -------------------------------------------------------------------------------- title: "Get Pipeline Details" description: "This page describes the method to fetch all the details of an existing Catalyst Pipeline." last_updated: "2026-03-18T07:41:08.734Z" 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 {{%badge%}}getPipelineDetails(){{%/badge%}} 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 {{%badge%}}pipelines_service{{%/badge%}} reference used below is already defined in {{%link href="/en/sdk/java/v1/pipelines/get-pipeline-instance" %}}this component instance page{{%/link%}}. {{%code class="language-java line-numbers"%}}ZCPipelineDetails pipeline_details = pipelines_service.getPipelineDetails(16965000000019202L); {{%/code%}} A sample response is shown below: {{%code class="language-java line-numbers"%}}{ "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 } } {{%/code%}} -------------------------------------------------------------------------------- title: "Execute Pipeline" description: "This page describes the method to run the Catalyst Pipeline manually." last_updated: "2026-03-18T07:41:08.734Z" 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 {{%badge%}}runPipeline(){{%/badge%}} 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. {{%code class="language-java line-numbers"%}}JSONObject env = new JSONObject(); env.put("EVENT", "push"); env.put("URL", "https://www.google.com"); ZCPipelineRunHistory run = pipelines_service.runPipeline(8431000000161112051L,main,env); {{%/code%}} A sample response is shown below: {{%code class="language-java line-numbers"%}}{ "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" } } {{%/code%}} #### 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-03-18T07:41:08.734Z" 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 {{%link href="/en/quickml/" %}}Catalyst QuickML{{%/link%}} 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 {{%link href="/en/quickml/help/pipeline-endpoints/" %}}QuickML endpoint{{%/link%}}, 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%}}{{%bold class="bold-primary" %}}Note:{{%/bold%}} 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. {{%/note%}} The input data to the model's endpoint are passed as key-value pairs through a hashmap. The {{%badge%}}endpoint_key{{%/badge%}} 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 {{%badge%}}predict(){{%/badge%}} method for execution. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import java.util.HashMap; import com.zc.component.quickml.ZCQuickML; import com.zc.component.quickml.ZCQuickMLDetail;{{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll"%}}// 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{{%/code%}} #### 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-03-18T07:41:08.734Z" 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 {{%link href="/en/serverless/help/appsail/introduction/" %}}Catalyst AppSail{{%/link%}} 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 {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/" %}}Catalyst-managed runtimes{{%/link%}}. AppSail supports frameworks of Java such as Embedded Jetty, Spring MVC, and Spring Boot. You can {{%link href="/en/serverless/help/appsail/help-guides/introduction/" %}}access help guides{{%/link%}} 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 {{%badge%}}**AuthHeaderProvider**{{%/badge%}} interface from the Catalyst Java SDK package. The implementation defines the {{%badge%}}getHeader(){{%/badge%}} method that returns the value of the request header. You can then pass an object of the implementation class to the {{%badge%}}init(){{%/badge%}} 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 ({{%badge%}}{{%link href="https://docs.oracle.com/javaee%2F7%2Fapi%2F%2F/javax/servlet/package-summary.html"%}}javax.servlet{{%/link%}}{{%/badge%}}): **Implementation Class:** {{%code class="language-java"%}}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); } } {{%/code%}} <br> **Initialization:** {{%code class="language-json"%}}AuthProviderImpl authProviderImpl = new AuthProviderImpl(req); CatalystSDK.init(authProviderImpl){{%/code%}} <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 ({{%badge%}}{{%link href="https://mvnrepository.com/artifact/jakarta.servlet"%}}jakarta.servlet{{%/link%}}{{%/badge%}}): **Implementation Class:** {{%code class="language-java"%}}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); } }{{%/code%}} <br> **Initialization:** {{%code class="language-json"%}}CatalystSDK.init(new AuthProviderImpl((HttpServletRequest) servletRequest));{{%/code%}} <br> ### Implement Java SDK in a Maven Project If you are developing a Java application with the {{%link href="https://maven.apache.org/"%}}Maven{{%/link%}} build tool, you can include the Catalyst Java SDK as a dependency in the Maven configuration file ({{%link href="https://maven.apache.org/guides/introduction/introduction-to-the-pom.html"%}}{{%badge%}}pom.xml{{%/badge%}}{{%/link%}}), 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 {{%link href="https://mvnrepository.com/"%}}MvnRepository{{%/link%}}) in the {{%badge%}}pom.xml{{%/badge%}} file as shown below: {{%code class="language-json"%}}&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;{{%/code%}} You can then add the Java SDK as a dependency in pom.xml as shown below: {{%code class="language-json"%}}&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;{{%/code%}} ##### 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-03-18T07:41:08.734Z" 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 {{%link href="/en/serverless/help/circuits/introduction" %}}Catalyst Circuits{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} Circuits is currently not available to Catalyst users accessing from the EU, AU, IN, JP, SA or CA data centers.{{%/note%}} 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 {{%badge%}}Execution ID{{%/badge%}} saved in the execution history of the circuit. {{%badge%}}ZCCircuitDetails{{%/badge%}} is used to refer to the circuit, and {{%badge%}}ZCCircuitExecutionDetails{{%/badge%}} returns the circuit execution details. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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;{{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//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); {{%/code%}} ##### Functions -------------------------------------------------------------------------------- title: "Execute Function" description: "This page describes the method to execute functions in your Java application with sample code snippets." last_updated: "2026-03-18T07:41:08.734Z" 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 {{%badge%}}executeFunction(){{%/badge%}} method. The {{%badge%}}function ID{{%/badge%}} is an auto-generated numeric long integer value. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import org.json.simple.JSONObject; import com.zc.functions.ZCatalystFunction;{{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//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); {{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} You can also pass the function name as a string to the {{%badge%}}getFunctionInstance(){{%/badge%}} method instead of using the function ID.{{%/note%}} #### SmartBrowz -------------------------------------------------------------------------------- title: "PDF & Screenshot" description: "This page describes the method to generate PDF and Screenshot" last_updated: "2026-03-18T07:41:08.734Z" 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 {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}PDF & Screenshot{{%/link%}} 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 {{%link href="/en/smartbrowz/help/templates/create-templates/" %}}Templates{{%/link%}} as your input. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.smartbrowz.ZCSmartBrowz; import com.zc.component.smartbrowz.ZCSmartBrowzConvertDetails;{{% /panel_without_adjustment %}} ### Generate Visual Document From a Predefined Template {{%code class="language-java" scroll="set-scroll"%}}// 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);{{%/code%}} ### Convert to PDF from HTML {{%code class="language-java" scroll="set-scroll"%}}// 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);{{%/code%}} ### Take a screenshot from URL {{%code class="language-java" scroll="set-scroll"%}}// 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);{{%/code%}} In the PDF & Screenshot section of the console, you can directly test this component using the {{%link href="/en/smartbrowz/help/pdfnscreenshot/implementation/#generating-pdf--screenshots-through-playground" %}}Playground feature{{%/link%}}, and you can also {{%link href="/en/smartbrowz/help/pdfnscreenshot/implementation/#generating-pdf--screenshots-through-code" %}}copy the SDK{{%/link%}} directly from the console. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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 {{%bold%}}Catalyst SmartBrowz{{%/bold%}} 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.{{%/note%}} ##### 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-03-18T07:41:08.735Z" 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 {{%link href="/en/smartbrowz/help/browser-grid/introduction/" %}}Browser Grid{{%/link%}} 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>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/" %}}Get Browser Grid Instance{{%/link%}}</td> <td>{{%bold%}}Admin{{%/bold%}}</td> </tr> <tr> <td>Browser Grid Operations</td> <td> <ul> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-all-grids/" %}}Get all browser grids{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-grid/" %}}Get specific browser grid{{%/link%}}</li> <ul> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-grid/#using-the-grid-id" %}}Get specific browser grid with ID{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-grid/#using-the-grids-name" %}}Get specific browser grid with name{{%/link%}}</li> </ul> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-node/" %}}Get nodes of a grid{{%/link%}}</li> <ul> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-node/#using-the-grid-id" %}}Using Grid ID{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-node/#using-the-grids-name" %}}Using Grid Name{{%/link%}}</li> </ul> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/stop-grid/" %}}Stop browser grid{{%/link%}}</li> <ul> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/stop-grid/#using-the-grid-id" %}}Using Grid ID{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/stop-grid/#using-the-grids-name" %}}Using Grid Name{{%/link%}}</li> </ul> </ul> </td> <td>{{%bold%}}Admin{{%/bold%}}</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-03-18T07:41:08.735Z" 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** {{%code class="language-java" scroll="set-scroll"%}}import com.zc.component.smartbrowz.*;{{%/code%}} {{%code class="language-java" scroll="set-scroll"%}}ZCBrowserGrid grid = ZCBrowserGrid.getInstance()// get instance for the project{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.735Z" 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 {{%badge%}}getGrid(){{%/badge%}} SDK method to get the grid details of all the browser grids that are present in your project. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **Ensure you import the following packages** {{%code class="language-java" scroll="set-scroll"%}}import com.zc.component.smartbrowz.*;{{%/code%}} {{%code class="language-java" scroll="set-scroll"%}}List<\ZCGrid> gridList = grid.getGrid(); // Will return a list of details of all the grids that are present in the project.{{%/code%}} ### Example of Expected Response {{%code class="language-json" scroll="set-scroll"%}}{ "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 } ] }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.735Z" 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 {{%badge%}}getGrid(){{%/badge%}} SDK method. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the {{%badge%}}getGrid(){{%/badge%}} SDK method. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. **Ensure you import the following packages** {{%code class="language-java" scroll="set-scroll"%}}import com.zc.component.smartbrowz.*;{{%/code%}} {{%code class="language-java" scroll="set-scroll"%}}ZCBrowserGrid gridDetails = grid.getGrid(3970000000005013l); // get grid details using the Grid ID{{%/code%}} ### Using the Grid's Name You can pass the name of the required browser grid to the {{%badge%}}getGrid(){{%/badge%}} SDK method. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. **Ensure you import the following packages** {{%code class="language-java" scroll="set-scroll"%}}import com.zc.component.smartbrowz.*;{{%/code%}} {{%code class="language-java" scroll="set-scroll"%}}ZCBrowserGrid gridDetails = grid.getGrid("Selenium_Grid"); // get grid details using the name of the grid{{%/code%}} ### Example of Expected Response {{%code class="language-json" scroll="set-scroll"%}}{ "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 } }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.735Z" 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 {{%badge%}}getGridNodes(){{%/badge%}} SDK method, you can get the details of a node in that grid. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the {{%badge%}}getGridNodes(){{%/badge%}} SDK method, to get its node details. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. **Ensure you import the following packages** {{%code class="language-java" scroll="set-scroll"%}}import com.zc.component.smartbrowz.*;{{%/code%}} {{%code class="language-java" scroll="set-scroll"%}}ZCBrowserGrid nodeDetails = grid.getGridNodes(3970000000005013l); // get details of the node using its Grid ID{{%/code%}} ### Using the Grid's Name You can pass the name of the required browser grid to the {{%badge%}}getGridNodes(){{%/badge%}} SDK method, to get its node details. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. **Ensure you import the following packages** {{%code class="language-java" scroll="set-scroll"%}}import com.zc.component.smartbrowz.*;{{%/code%}} {{%code class="language-java" scroll="set-scroll"%}}ZCBrowserGrid gridDetails = grid.getGridNodes("Selenium_Grid"); // get details of the node using the grid's name{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.735Z" 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 {{%badge%}}stopGrid(){{%/badge%}} SDK method, you can terminate all executions and stop the browser grid. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the {{%badge%}}stopGrid(){{%/badge%}} SDK method, to stop the grid, and terminate all its executions. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. **Ensure you import the following packages** {{%code class="language-java" scroll="set-scroll"%}}import com.zc.component.smartbrowz.*;{{%/code%}} {{%code class="language-java" scroll="set-scroll"%}}ZCBrowserGrid gridTerminate = grid.stopGrid(3970000000005013l); // stop the grid using the Grid ID{{%/code%}} ### Using the Grid's Name You can pass the name of the required browser grid to the {{%badge%}}stopGrid(){{%/badge%}} SDK method, to stop the grid, and terminate all its executions. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. **Ensure you import the following packages** {{%code class="language-java" scroll="set-scroll"%}}import com.zc.component.smartbrowz.*;{{%/code%}} {{%code class="language-java" scroll="set-scroll"%}}ZCBrowserGrid gridTerminate = grid.stopGrid("Selenium_Grid"); //stop the grid using the name of the grid{{%/code%}} ### Example of Expected Response {{%code class="language-json" scroll="set-scroll"%}}{ "status": "success", "data": true }{{%/code%}} #### 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-03-18T07:41:08.735Z" 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 {{%link href="/en/zia-services/help/optical-character-recognition/introduction" %}}Zia Optical Character Recognition{{%/link%}} 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 {{%link href="/en/api/code-reference/zia-services/ocr/#OCR" %}}check the list of languages and language codes from the API documentation{{%/link%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} 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. {{%bold%}}Allowed file formats:{{%/bold%}} ._jpg,_ ._jpeg_, ._png_, ._tiff_, ._bmp_, ._pdf_ {{%bold%}}File size limit:{{%/bold%}} 20 MB You must specify the model type as {{%badge%}}OCR{{%/badge%}} in {{%badge%}}setModelType(){{%/badge%}}, and the language codes using {{%badge%}}setLanguageCode{{%/badge%}}. These values are optional for the {{%badge%}}OCR{{%/badge%}} model type. By default, it is processed as the {{%badge%}}OCR{{%/badge%}} model type, and the languages are automatically detected if they are not specified. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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 {{% /code%}} -------------------------------------------------------------------------------- title: "AutoML" description: "This page describes the method to use the AutoML feature to train data models and predict their outcomes in your Java application with sample code snippets" last_updated: "2026-03-18T07:41:08.735Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/automl/" service: "Zia Services" related: - AutoML - API (/en/api/code-reference/zia-services/automl/#AutoML) -------------------------------------------------------------------------------- # AutoML {{%link href="/en/zia-services/help/automl/introduction" %}}Zia AutoML{{%/link%}} 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. Refer to the {{%link href="/en/api/code-reference/zia-services/automl/#AutoML" %}}API documentation{{%/link%}} for the request and response formats. The {{%badge%}}predictData{{%/badge%}} function is used 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. {{%note%}}{{%bold%}}Note:{{%/bold%}} AutoML is currently not available to Catalyst users accessing from the EU, AU, IN, JP, SA or CA data centers. {{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import org.json.simple.JSONObject; import com.zc.component.ml.ZCAutomlPredictionData; import java.io.File; import com.zc.component.ml.ZCML; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}JSONObject obj = new JSONObject(); obj.put("column1", "value1"); obj.put("column2", "value2"); obj.put("column3", "value3");​ ​​ ​ZCAutomlPredictionData data = ZCML.getInstance().predictData({modelId}, obj); //For Binary-class and Multi-class Classification models JSONObject classificationResult = data.getClassificationResultData(); //For Regression models Object regressionResult =data.getRegressionResultData(); {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.735Z" 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 {{%link href="/en/zia-services/help/face-analytics/introduction" %}}Face Analytics help page{{%/link%}}. You must provide ._jpg_/._jpeg_ or ._png_ files as the input. Refer to the {{%link href="/en/api/code-reference/zia-services/face-analytics/#FaceAnalytics" %}}API documentation{{%/link%}} for the request and response formats. You can enable or disable the age, smile, or gender detection by setting the attributes as {{%badge%}}true{{%/badge%}} or {{%badge%}}false{{%/badge%}}. You can also specify the mode as {{%badge%}}BASIC{{%/badge%}}, {{%badge%}}MODERATE{{%/badge%}}, or {{%badge%}}ADVANCED{{%/badge%}}. These values are optional. All attributes are detected and the {{%badge%}}ADVANCED{{%/badge%}} 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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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 } {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.735Z" 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 {{%link href="/en/zia-services/help/image-moderation/introduction" %}}Image Moderation help page{{%/link%}}. You can provide a ._jpg_/._jpeg_ or ._png_ file as the input. Refer to the {{%link href="/en/api/code-reference/zia-services/image-moderation/#ImageModeration" %}}API documentation{{%/link%}} for the request and response formats. You can set the moderation mode as {{%badge%}}BASIC{{%/badge%}}, {{%badge%}}MODERATE{{%/badge%}}, or {{%badge%}}ADVANCED{{%/badge%}} optionally. The image is processed in the {{%badge%}}ADVANCED{{%/badge%}} mode by default. The response returns the probability of each criteria with their confidence scores, and the prediction of the image being {{%badge%}}safe\_to\_use{{%/badge%}} or {{%badge%}}unsafe\_to\_use{{%/badge%}}. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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 {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.736Z" 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 {{%link href="/en/zia-services/help/object-recognition/introduction" %}}Object Recognition help page{{%/link%}}. You can provide a ._jpg_/._jpeg_ or ._png_ file as the input. Refer to the {{%link href="/en/api/code-reference/zia-services/object-recognition/#ObjectRecognition" %}}API documentation{{%/link%}} for the request and response formats. The {{%badge%}}detectObject(){{%/badge%}} 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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.ml.ZCML; import com.zc.component.ml.ZCObjectDetectionData; import com.zc.component.ml.ZCObjectPoints; import java.io.File; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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 } {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.736Z" 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 {{%link href="/en/zia-services/help/barcode-scanner/introduction" %}}Barcode Scanner help page{{%/link%}}. You can provide an input file of the format ._jpg_/._jpeg_ or ._png_. Refer to the {{%link href="/en/api/code-reference/zia-services/barcode-scanner/#BarcodeScanner" %}}API documentation{{%/link%}} for the request and response formats. You can specify the barcode format using {{%badge%}}setFormat{{%/badge%}}. If you enter the format as {{%badge%}}ALL{{%/badge%}}, Barcode Scanner automatically detects the format. It provides the decoded information as the response. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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 {{% /code%}} ##### 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-03-18T07:41:08.736Z" 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 {{%link href="/en/zia-services/help/identity-scanner/introduction" %}}Identity Scanner{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ## 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} 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 {{%badge%}}compareFace(){{%/badge%}} method processes both these images. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} {{%bold%}}Allowed file formats:{{%/bold%}} _.webp_, _.jpeg_, _.png_ {{%bold%}}File size limit:{{%/bold%}} 10 MB The result of the comparison is set to {{%bold%}}{{%badge%}}true{{%/badge%}}{{%/bold%}} if the faces match, or {{%bold%}}{{%badge%}}false{{%/badge%}}{{%/bold%}} 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 {{%badge%}}true{{%/badge%}}. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.catalyst.advanced.CatalystAdvancedIOHandler; import com.zc.component.ml.ZCFaceComparisonData; import com.zc.component.ml.ZCML; import java.io.File;{{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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 {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.736Z" 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 {{%link href="/en/zia-services/help/identity-scanner/introduction" %}}Identity Scanner{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ## Aadhaar The {{%badge%}}AADHAAR{{%/badge%}} 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%}}{{%bold%}}Note:{{%/bold%}} Document Processing is only relevant to Indian users and is {{%bold%}}only available in the IN DC{{%/bold%}}. 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 {{%link href="/en/sdk/java/v1/zia-services/ocr" %}}general OCR component{{%/link%}} to read and process textual content.{{%/note%}} You must provide the path to the image files of the front and back of the Aadhaar card using the keys {{%badge%}}aadhaarFront{{%/badge%}} and {{%badge%}}aadhaarBack{{%/badge%}}, as shown in the code below. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} 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 {{%badge%}}tam{{%/badge%}} and {{%badge%}}eng{{%/badge%}} as the languages. You can check the list of languages and language codes from the {{%link href="/en/api/code-reference/zia-services/identity-scanner/aadhaar/#Aadhaar" %}}API documentation{{%/link%}}. {{%bold%}}Allowed file formats:{{%/bold%}} _.webp_, _.jpeg_, _.png_, _.bmp_, _.tiff_, _.pdf_<br /> {{%bold%}}File size limit:{{%/bold%}} 15 MB {{%bold%}}Note:{{%/bold%}} The variables should be declared only in following order: {{%badge%}}aadhaarFront{{%/badge%}}, {{%badge%}}aadhaarBack{{%/badge%}}, {{%badge%}}languageCode{{%/badge%}} 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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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 {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.736Z" 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 {{%link href="/en/zia-services/help/identity-scanner/introduction" %}}Identity Scanner{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ## PAN The {{%badge%}}PAN{{%/badge%}} 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%}}{{%bold%}}Note:{{%/bold%}} Document Processing is only relevant to Indian users and is {{%bold%}}only available in the IN DC{{%/bold%}}. 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 {{%link href="/en/sdk/java/v1/zia-services/ocr" %}}general OCR component{{%/link%}} to read and process textual content.{{%/note%}} You must provide the path to the image file of the front side of the PAN card, as shown in the code below. {{%bold%}}Allowed file formats:{{%/bold%}} _.webp_, _.jpeg_, _.png_<br /> {{%bold%}}File size limit:{{%/bold%}} 15 MB You must specify the model type as {{%badge%}}PAN{{%/badge%}} using {{%badge%}}ZCOCRModelType{{%/badge%}}. The {{%badge%}}PAN{{%/badge%}} 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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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(); {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.736Z" 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 {{%link href="/en/zia-services/help/identity-scanner/introduction" %}}Identity Scanner{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ## Passbook The {{%badge%}}PASSBOOK{{%/badge%}} 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%}}{{%bold%}}Note:{{%/bold%}} Document Processing is only relevant to Indian users and is {{%bold%}}only available in the IN DC{{%/bold%}}. 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 {{%link href="/en/sdk/java/v1/zia-services/ocr/" %}}general OCR component{{%/link%}} to read and process textual content.{{%/note%}} 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 {{%link href="/en/api/code-reference/zia-services/identity-scanner/passbook/#Passbook" %}}API documentation{{%/link%}}. You must provide the path to the image of the front page of the passbook, as shown in the code below. {{%bold%}}Allowed file formats:{{%/bold%}} _.webp_, _.jpeg_, _.png_, _.bmp_, _.tiff_, _.pdf_<br /> {{%bold%}}File size limit:{{%/bold%}} 15 MB You must specify the model type as {{%badge%}}PASSBOOK{{%/badge%}} using {{%badge%}}ZCOCRModelType{{%/badge%}}. You can also optionally specify the language using {{%badge%}}setLanguageCode(){{%/badge%}}. 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%}}{{%bold%}}Note:{{%/bold%}} Identity Scanner will return the response only in English, irrespective of the languages present in the passbook.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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 {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.736Z" 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 {{%link href="/en/zia-services/help/identity-scanner/introduction" %}}Identity Scanner{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ## Cheque The {{%badge%}}CHEQUE{{%/badge%}} 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%}}{{%bold%}}Note:{{%/bold%}} Document Processing is only relevant to Indian users and is {{%bold%}}only available in the IN DC{{%/bold%}}. 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 {{%link href="/en/sdk/java/v1/zia-services/ocr/" %}}general OCR component{{%/link%}} to read and process textual content.{{%/note%}} You must provide the path to the image file of the front page of the chequebook, as shown in the code below. The {{%badge%}}CHEQUE{{%/badge%}} model can only process text in English by default. No other languages are supported. {{%bold%}}Allowed file formats:{{%/bold%}} _.webp_, _.jpeg_, _.png_<br /> {{%bold%}}File size limit:{{%/bold%}} 15 MB You must specify the model type as {{%badge%}}CHEQUE{{%/badge%}} using {{%badge%}}setModelType(){{%/badge%}}. {{%bold%}}Note:{{%/bold%}} 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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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(); {{%/code%}} ##### 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-03-18T07:41:08.736Z" 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 {{%link href="/en/zia-services/help/text-analytics/key-concepts/#sentiment-analysis" %}}Zia Sentiment Analysis{{%/link%}} 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 {{%bold%}}positive{{%/bold%}}, {{%bold%}}negative{{%/bold%}}, or {{%bold%}}neutral{{%/bold%}}. 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 {{%bold%}}1500 characters{{%/bold%}} 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 {{%badge%}}getSentimentAnalysis(){{%/badge%}} function of the {{%badge%}}ZCSentimentAnalysisData{{%/badge%}} 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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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 }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.736Z" 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 {{%link href="/en/zia-services/help/text-analytics/key-concepts/#named-entity-recognition" %}}Zia Named Entity Recognition{{%/link%}} 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 {{%link href="/en/zia-services/help/text-analytics/#NER" %}}here{{%/link%}} 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 {{%bold%}}1500 characters{{%/bold%}} in a single request, as shown below. The text is passed to {{%badge%}}getNERPrediction(){{%/badge%}}. The code contains statements to fetch the entities, their tags, locations, and the confidence scores. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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 {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.736Z" 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 {{%link href="/en/zia-services/help/text-analytics/key-concepts/#keyword-extraction" %}}Zia Keyword Extraction{{%/link%}} 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: {{%bold%}}Keywords{{%/bold%}} and {{%bold%}}Keyphrases{{%/bold%}}. 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 {{%bold%}}1500 characters{{%/bold%}} in a single request, as shown below. The text is passed to {{%badge%}}getKeywordExtraction(){{%/badge%}}. The keywords and keyphrases are then fetched as individual lists. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import org.json.simple.JSONArray; import com.zc.component.ml.ZCKeywordExtractionData; import com.zc.component.ml.ZCML; import java.io.File; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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 {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.736Z" 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 {{%link href="/en/zia-services/help/text-analytics/introduction" %}}Text Analytics{{%/link%}} as a whole includes a combination of all three features specified in the previous sections: {{%bold%}}Sentiment Analysis{{%/bold%}}, {{%bold%}}Named Entity Recognition{{%/bold%}}, and {{%bold%}}Keyword Extraction{{%/bold%}}. 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 {{%bold%}}1500 characters{{%/bold%}} in a single request, as shown below. The text is passed to {{%badge%}}getTextAnalytics(){{%/badge%}}. 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> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}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; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}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 {{%/code%}} ## Node JS ### v2 -------------------------------------------------------------------------------- title: "Overview" description: "Node.js SDK Overview" last_updated: "2026-03-18T07:41:08.737Z" 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: {{%code class="language-json"%}}npm install zcatalyst-sdk-node{{%/code%}} You can also install the latest supported version in this way: {{%code class="language-json"%}}npm install zcatalyst-sdk-node@2.5.0{{%/code%}} <br> {{%note%}}{{%bold%}}Note:{{%/bold%}} 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. {{%/note%}} ### 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. {{% panel_with_adjustment header="SDK Initialization in Advanced I/O Functions with the Basic Template" footer="button" class="language-javascript line-numbers"%}}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 } {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="SDK Initialization in Advanced I/O Functions with Express.js" footer="button" class="language-javascript line-numbers"%}}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; {{% /panel_with_adjustment %}} {{% panel_with_adjustment class="language-javascript line-numbers" header="SDK Initialization in BasicIO Functions" footer="button" %}}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 } {{% /panel_with_adjustment %}} {{% panel_with_adjustment class="language-javascript line-numbers" header="SDK Initialization in Event Functions" footer="button" %}}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 } {{% /panel_with_adjustment %}} {{% panel_with_adjustment class="language-javascript line-numbers" header="SDK Intialization in Cron Functions" footer="button" %}}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 }{{% /panel_with_adjustment %}} 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 {{%link href="/en/cloud-scale/help/data-store/introduction/" %}}Data Store{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} * It is not mandatory for you to initialize the projects with scopes. By default, a project that is initialized will have {{%italics%}}Admin{{%/italics%}} 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 {{%link href="/en/cloud-scale/help/data-store/introduction/" %}}Data Store{{%/link%}}, {{%link href="/en/cloud-scale/help/file-store/introduction/" %}}File Store{{%/link%}}, and {{%link href="/en/cloud-scale/help/zcql/introduction/" %}}ZCQL{{%/link%}}. * Depending on how you engineer your business logic, you can decide if your end-users can perform {{%italics%}}Admin{{%/italics%}} or {{%italics%}}User{{%/italics%}} actions. This is decided based on the {{%link href="/en/cloud-scale/help/authentication/user-management/roles/introduction/" %}}role{{%/link%}} 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 {{%italics%}}Scopes & Permissions{{%/italics%}} section of the {{%link href="/en/cloud-scale/help/data-store/scopes-and-permissions/" %}}Data Store{{%/link%}} and {{%link href="/en/cloud-scale/help/file-store/implementation/#set-permissions-for-a-folder" %}}File store{{%/link%}}.{{%/note%}} 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** {{%code class="language-javascript" scroll="set-scroll" %}}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'); }{{%/code%}} * **Initialize the Catalyst project with User Scope** {{%code class="language-javascript" scroll="set-scroll" %}}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'); }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.737Z" 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 {{%link href="/en/release-notes/sdk/" %}}Release Notes section{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ### Steps to Upgrade Your SDK There are two methods you can use to upgrade your Node.js SDK: 1. Using the {{%link href="https://docs.npmjs.com/cli/v10/commands/npm-update" %}}{{%badge%}}npm update{{%/badge%}}{{%/link%}} command. 2. Using the {{%link href="https://docs.npmjs.com/cli/v10/commands/npm-install" %}}{{%badge%}}npm install{{%/badge%}}{{%/link%}} command. {{%tabs%}} {{%tab "Using npm update 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 {{%code class="language-json"%}}npm update zcatalyst-sdk-node{{%/code%}} This will perform the required update, and the latest version of {{%badge%}}zcatalyst-sdk-node{{%/badge%}} can be used. {{%note%}}{{%bold%}}Note:{{%/bold%}} You need to apply the same steps for {{%bold%}}every Node.js function{{%/bold%}} present in your project.{{%/note%}} {{%/tab%}} {{%tab "Using npm install command" %}} #### Using npm install command {{%note%}}{{%bold%}}Note:{{%/bold%}} The {{%badge%}}npm install{{%/badge%}} command can be used to both install a new package and update an existing package.{{%/note%}} 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 {{%code class="language-json"%}}npm install -save zcatalyst-sdk-node@latest{{%/code%}}<br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} * The {{%badge%}}@latest{{%/badge%}} tag is optional. However, we do recommend that you include it while performing the install. * You need to apply the same steps for {{%bold%}}every Node.js function{{%/bold%}} present in your project.{{%/note%}} {{%/tab%}} {{%/tabs%}} ### 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 {{%code class="language-json"%}}npm install -save zcatalyst-sdk-node@2.5.1{{%/code%}}<br /><br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} It is always recommended that you install the latest and more stable version of the SDK rather than a specific version.{{%/note%}} -------------------------------------------------------------------------------- title: "Integrate SDK in Third-Party Apps" last_updated: "2026-03-18T07:41:08.737Z" 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 {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}Catalyst Cloud Scale Stratus{{%/link%}} or a data pipeline running on Amazon Web Services EC2 can push customer data into {{%link href="/en/cloud-scale/help/data-store/introduction/" %}}Catalyst Cloud Scale Data Store{{%/link%}} using {{%link href="/en/cloud-scale/help/zcql/introduction/" %}}Catalyst Cloud Scale ZCQL{{%/link%}} 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 {{%link href="/en/getting-started/catalyst-projects/" %}}Catalyst project{{%/link%}}. * **ZAID (Zoho Account ID):** A unique portal identifier assigned by Catalyst to link your project with the {{%link href="/en/deployment-and-billing/environments/introduction/" %}}Catalyst environment{{%/link%}} ({{%link href="/en/deployment-and-billing/environments/development-environment/" %}}development{{%/link%}} or {{%link href="/en/deployment-and-billing/environments/production-environment/" %}}production{{%/link%}}). * **Environment:** The {{%link href="/en/deployment-and-billing/environments/introduction/" %}}target environment{{%/link%}} ({{%link href="/en/deployment-and-billing/environments/development-environment/" %}}development{{%/link%}} or {{%link href="/en/deployment-and-billing/environments/production-environment/" %}}production{{%/link%}}) 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 {{%link href="/en/getting-started/catalyst-projects/#introduction-to-catalyst-projects" %}}Catalyst project{{%/link%}} in the {{%link href="https://console.catalyst.zoho.com/" %}}console{{%/link%}} by using the steps mentioned in {{%link href="/en/getting-started/catalyst-projects/#create-a-catalyst-project" %}}this help page{{%/link%}}. 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 ({{%link href="/en/deployment-and-billing/environments/development-environment/" %}}development{{%/link%}} or {{%link href="/en/deployment-and-billing/environments/production-environment/" %}}production{{%/link%}}). {{%link href="/en/deployment-and-billing/environments/introduction/" %}}Learn more about Catalys environments{{%/link%}}. To retrieve the ZAID, setting up the {{%link href="/en/cloud-scale/help/authentication/introduction/" %}}Catalyst CloudScale Authentication{{%/link%}} component is mandatory. However, using it for your application's authentication flow is optional. To fetch the ZAID: i. Navigate to the {{%link href="https://docs.catalyst.zoho.com/en/cloud-scale/" %}}Catalyst CloudScale{{%/link%}} service in the console and under **Security & Identity**, select **Authentication**. <br> ii. You will need to set up {{%link href="/en/cloud-scale/help/authentication/native-catalyst-authentication/introduction/" %}}Native Catalyst Authentication{{%/link%}}, 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 {{%link href="/en/cloud-scale/help/authentication/public-signup/" %}}Public Signup{{%/link%}} option to display the signup feature in your login component, allowing new users to register and access your application. You can refer to the {{%link href="/en/cloud-scale/help/authentication/native-catalyst-authentication/hosted-authentication-type/introduction/" %}}hosted authentication help page{{%/link%}} 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. {{%link href="/en/cloud-scale/help/authentication/social-logins/configuring-social-logins/" %}}Learn how to obtain the ZAID for a specific social login{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} <br> {{%link href="/en/cloud-scale/help/authentication/native-catalyst-authentication/hosted-authentication-type/introduction/" %}}Learn more about this hosted authentication type{{%/link%}}.<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 {{%link href="https://api-console.zoho.com" %}}API console{{%/link%}}. 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. {{%link href="/en/api/oauth2/scopes/#Scopes" %}}Learn more about available scopes{{%/link%}}. 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. {{%link href="/en/api/oauth2/generate-grant-token/#GenerateGrantToken" %}}Learn more about generating a grant token{{%/link%}}. 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 {{%link href="/en/api/oauth2/generate-access-and-refresh-token/#GenerateAccessandRefreshToken" %}}this help page{{%/link%}}. You can also refresh the access token by using the steps listed in {{%link href="/en/api/oauth2/refresh-access-token/#RefreshAccessToken" %}}this page{{%/link%}}. 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 {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}Catalyst CloudScale Stratus{{%/link%}}. <br> ### Code Snippet {{%code class="language-javascript" scroll="set-scroll" %}}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}`); }); {{%/code%}} #### 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-03-18T07:41:08.738Z" 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 {{%link href="/en/cloud-scale/help/authentication/introduction" %}}Catalyst Authentication{{%/link%}} 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 {{%badge%}}userManagement{{%/badge%}} 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. {{%code class="language-javascript"%}}//Get a UserManagement Instance let userManagement = app.userManagement();{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.738Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/" %}}end users{{%/link%}} 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%}}{{%bold class="bold-primary" %}}Note:{{%/bold%}} * You must provide the values for {{%badge%}}email_id{{%/badge%}} and {{%badge%}}first_name{{%/badge%}} to register a user mandatorily. * You can obtain the {{%badge%}}role_id{{%/badge%}} from the _Roles_ section in _Authentication_ in the Catalyst console.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}//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' };{{% /code%}} ### 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 {{%badge%}}registerUser(){{%/badge%}} method. The {{%badge%}}registerUser(){{%/badge%}} method handles the user sign-up process and returns a promise. This promise will be resolved to a JSON object. The {{%badge%}}userManagement{{%/badge%}} reference used below is defined in the {{%link href="/en/sdk/nodejs/v2/cloud-scale/authentication/get-component-instance" %}}component instance page{{%/link%}}. {{%note%}}{{%bold class="bold-primary" %}}Note :{{%/bold%}} You will be able to add only 25 users in your application in the {{%link href="/en/deployment-and-billing/environments/development-environment" %}}development environment{{%/link%}}. After you deploy your application to production, you can include any number of end-users in it.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}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); });{{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-javascript line-numbers"%}} { 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 }{{% /divtag %}} {{% divtag id="V1" class="language-json line-numbers"%}} { 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 }{{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.738Z" 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 {{%badge%}}ZAAID{{%/badge%}} 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 {{%link href="/en/cloud-scale/help/authentication/authentication-types/" %}}authentication types{{%/link%}}, gets added through the {{%link href="/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser" %}}Add User API{{%/link%}} or through the {{%link href="/en/cloud-scale/help/authentication/user-management/users/implementation/#adding-a-new-user-from-the-console" %}}Add User button{{%/link%}} in the console. The SDK snippet below demonstrates fetching all the Org IDs generated while adding new users to your application using the {{%badge%}}getAllOrgs(){{%/badge%}} method: {{%code class="language-javascript" scroll="set-scroll" %}}const userManagement = app.userManagement(); userManagement.getAllOrgs(){{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.738Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/" %}}**OrgID**{{%/link%}} 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/" %}}ZUID and User ID{{%/link%}} are created for them. {{%note%}}{{%bold class="bold-primary" %}}{{%/bold%}} * You must provide the values for {{%badge%}}OrgID{{%/badge%}}, {{%badge%}}email_id{{%/badge%}}, {{%badge%}}first_name{{%/badge%}} mandatorily to add a user to an existing organization. * You can also add them to a role by providing the {{%badge%}}role_id{{%/badge%}}, 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 {{%link href="/en/cloud-scale/help/mail/email-configuration/" %}}Catalyst Mail Component{{%/link%}} and get it verified before using it in the SDK code.{{%/note%}} ### 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. {{%code class="language-javascript" scroll="set-scroll" %}}//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 };{{%/code%}} ### 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 {{%badge%}}addUserToOrg(){{%/badge%}} method. This method handles the user sign-up process and returns a promise. This promise will be resolved to a JSON object. The {{%badge%}}userManagement{{%/badge%}} reference used in the code is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/authentication/get-component-instance/" %}}component instance{{%/link%}} created earlier. {{%note%}}{{%bold class="bold-primary" %}}{{%/bold%}} You will be able to add only 25 users in your application in the {{%link href="/en/deployment-and-billing/environments/development-environment" %}}development environment{{%/link%}}. After you deploy your application to production, you can include any number of end-users in it.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}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); });{{%/code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-javascript line-numbers"%}} { 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 } {{% /divtag %}} {{% divtag id="V1" class="language-javascript line-numbers"%}} { 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 } {{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.738Z" 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 {{%badge%}}getAllUsers(Org ID){{%/badge%}} method. {{%code class="language-javascript" scroll="set-scroll" %}}const userManagement = app.userManagement(); userManagement.getAllUsers('10062701096'); // Enter your Org ID here{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.738Z" 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 {{%badge%}}resetPassword(){{%/badge%}} method, a reset password link will be generated and sent to the user's Email address. The {{%badge%}}userManagement{{%/badge%}} reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/authentication/get-component-instance" %}}component instance{{%/link%}}. {{%note%}}{{%bold class="bold-primary" %}}Note: {{%/bold%}} * **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 {{%link href="/en/cloud-scale/help/mail/email-configuration/" %}}Catalyst Mail Component{{%/link%}} and get it verified before using it in the SDK code. {{%/note%}} ### Create a Configuration JSON JSON objects containing the registration details of a particular user is created as given below, {{%code class="language-javascript" scroll="set-scroll" %}}//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' };{{% /code%}} ### Reset the Password These objects are passed as arguments to the {{%badge%}}registerUser(){{%/badge%}} method which returns a promise. The promise returned will be resolved to an object which is a JSON. {{%code class="language-javascript" scroll="set-scroll" %}}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);{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.739Z" 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 {{%link href="/en/cloud-scale/help/authentication/third-party-authentication/introduction/" %}}third-party authentication service{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} * 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 {{%link href="/en/cloud-scale/help/authentication/public-signup/" %}}Public Signup{{%/link%}} in the console.{{%/note%}} 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. {{%code class="language-javascript"%}}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}" } });{{%/code%}} You can now pass this token to the client logic as explained in this {{%link href="/en/sdk/web/v4/cloud-scale/authentication/third-party-custom-token/" %}}Web SDK help page{{%/link%}}. {{%note%}}{{%bold%}}Note :{{%/bold%}} 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.{{%/note%}} -------------------------------------------------------------------------------- title: "Custom User Validation" description: "This page describes the method to delete users from your NodeJS application with sample code snippets." last_updated: "2026-03-18T07:41:08.739Z" 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 {{%link href="/en/serverless/help/functions/basic-io/" %}}Basic I/O function{{%/link%}} 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 {{%link href="/en/cloud-scale/help/authentication/whitelisting/custom-user-validation/introduction/" %}}Custom User Validation{{%/link%}} function is given below. {{%code class="language-javascript line-numbers"%}}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(); }{{%/code%}} To test this function, you can pass the details of the user in the following {{%badge%}}.JSON{{%/badge%}} format: {{%code class="language-json line-numbers"%}}{ "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" } }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.739Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/" %}}application users{{%/link%}}. 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 {{%badge%}}getCurrentUser(){{%/badge%}} fetches the details of a user on whose scope the function is getting executed. The {{%badge%}}userManagement{{%/badge%}} reference used in the code snippets is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/authentication/get-component-instance" %}}component instance{{%/link%}} created earlier. The promise returned here will be resolved to a JSON object. {{%code class="language-javascript" scroll="set-scroll" %}}// get the details of the current user as a promise let userManagement = app.userManagement(); let userPromise = userManagement.getCurrentUser(); userPromise.then(currentUser => { console.log(currentUser); });{{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-javascript line-numbers"%}} { 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: [] } {{% /divtag %}} {{% divtag id="V1" class="language-javascript line-numbers"%}} { 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: [] } {{% /divtag %}} {{% /panel_with_select %}} ### 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 {{%badge%}}getUserDetails(){{%/badge%}} method. The promise is resolved to a JSON object. {{%code class="language-javascript" scroll="set-scroll" %}}//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); }); {{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-javascript line-numbers"%}} { 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: [] } {{% /divtag %}} {{% divtag id="V1" class="language-javascript line-numbers"%}} { 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: [] } {{% /divtag %}} {{% /panel_with_select %}} ### Get Details of All Users The {{%badge%}}getAllUsers(){{%/badge%}} 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. {{%code class="language-javascript" scroll="set-scroll" %}}//Get details of all users let userManagement = app.userManagement(); let allUserPromise = userManagement.getAllUsers(); allUserPromise.then(allUserDetails => { console.log(allUserDetails); }); {{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-javascript line-numbers" %}} [ { 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: [] } ] {{% /divtag %}} {{% divtag id="V1" class="language-javascript line-numbers"%}} [ { 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: [] } ] {{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.739Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/implementation/#modify-a-users-details" %}}modify and update{{%/link%}} the following details of an end-user: * First Name * Last name * {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/" %}}{{%badge%}}**ZAAID**{{%/badge%}}{{%/link%}}: {{%badge%}}**ZAAID**{{%/badge%}} or Org ID, is a unique value that is generated by Catalyst to associate with an organization. * {{%link href="/en/cloud-scale/help/authentication/user-management/roles/implementation/" %}}RoleID{{%/link%}}: Role ID is the value generated by Catalyst that is assigned to a particular {{%link href="/en/cloud-scale/help/authentication/user-management/roles/introduction/" %}}user role{{%/link%}}. The SDK snippet below demonstrates updating an end-user’s details using the {{%badge%}}updateUserDetails(userID, userDetails){{%/badge%}} method. The first name of the user is updated in the example below. {{%code class="language-javascript line-numbers"%}}const userManagement = app.userManagement(); userManagement.updateUserDetails('13749831', { email_id: 'emma@zylker.com', last_name: 'Burrows', zaaid: '1483013413294234', role_id: '843974989234859', first_name: 'Amelia' });{{%/code%}} <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-03-18T07:41:08.739Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/implementation/#enable-or-disable-a-user" %}}disable or enable a user{{%/link%}} 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 {{%badge%}}updateUserStatus(userId, USER_STATUS){{%/badge%}} method. The user is referred by their unique {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/" %}}User ID{{%/link%}}. You can find the User IDs of all users by navigating to the *Users* > {{%link href="/en/cloud-scale/help/authentication/user-management/introduction/" %}}*User Management*{{%/link%}} section of the Authentication component. ### To Enable a User {{%code class="language-javascript line-numbers"%}}const userManagement = app.userManagement(); userManagement.updateUserStatus('195000000042777', USER_STATUS.ENABLE){{%/code%}} ### To Disable a User {{%code class="language-javascript line-numbers"%}}const userManagement = app.userManagement(); userManagement.updateUserStatus('195000000042777', USER_STATUS.DISABLE){{%/code%}} <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-03-18T07:41:08.739Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/" %}}end-user of a Catalyst application{{%/link%}} can be deleted to discontinue accessing the application. This is done through {{%badge%}}deleteUser(){{%/badge%}} method, in which the {{%bold%}}User ID{{%/bold%}} 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. {{%code class="language-javascript" scroll="set-scroll" %}}//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); });{{% /code%}} ##### 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-03-18T07:41:08.739Z" 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. {{%code class="language-javascript" scroll="set-scroll" %}}//Get a cache instance let cache = app.cache();{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.739Z" 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 {{%badge%}}segment{{%/badge%}} reference can be created using the following method which does not fire a server-side call. The {{%badge%}} cache{{%/badge%}} reference used in the code snippet below is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/authentication/get-component-instance" %}}component instance.{{%/link%}} 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. {{%code class="language-javascript" scroll="set-scroll" %}}//Refer a cache segment through the segment ID let cache = app.cache(); let segment = cache.segment();{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.739Z" 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 {{%link href="/en/cloud-scale/help/cache/introduction" %}}Catalyst cache{{%/link%}} 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 {{%badge%}}getValue(){{%/badge%}} 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 {{%badge%}}segment{{%/badge%}} reference used in the code snippet below is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/cache/get-segment-instance" %}}segment instance{{%/link%}} created earlier. {{%code class="language-javascript" scroll="set-scroll" %}}//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); });{{% /code%}} ### 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 {{%link href="/en/sdk/nodejs/v2/cloud-scale/cache/get-segment-instance" %}}segment instance.{{%/link%}} The promise returned here will be resolved to an object which is a JSON. {{%code class="language-javascript" scroll="set-scroll" %}}//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); });{{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-javascript line-numbers"%}} { 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" } {{% /divtag %}} {{% divtag id="V1" class="language-javascript line-numbers"%}} { 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 } {{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.739Z" 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 {{%link href="/en/cloud-scale/help/cache/introduction" %}}cache element{{%/link%}} using the {{%badge%}}put(){{%/badge%}} 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 {{%badge%}}segment{{%/badge%}} reference used in the code snippet below is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/cache/get-segment-instance" %}}segment instance{{%/link%}} created earlier. The promise returned here will be resolved to a JSON object. {{%code class="language-javascript" scroll="set-scroll" %}}//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); });{{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-javascript line-numbers"%}} { 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" }{{% /divtag %}} {{% divtag id="V1" class="language-javascript line-numbers"%}} { 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 }{{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.739Z" 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 {{%badge%}}update(){{%/badge%}} 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 {{%badge%}}segment{{%/badge%}} reference used in the code snippet below is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/cache/get-segment-instance" %}}segment instance{{%/link%}} created earlier. {{%code class="language-javascript" scroll="set-scroll" %}}//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); });{{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-javascript line-numbers"%}} { 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" } {{% /divtag %}} {{% divtag id="V1" class="language-javascript line-numbers"%}} { 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 } {{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.739Z" 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 {{%link href="/en/sdk/nodejs/v2/cloud-scale/cache/get-segment-instance" %}}segment instance.{{%/link%}} ### 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. {{%code class="language-javascript" scroll="set-scroll" %}}//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); });{{% /code%}} ##### 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-03-18T07:41:08.739Z" 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%}}{{%bold%}}Note:{{%/bold%}} This SDK can only be accessed within Catalyst services like {{%link href="/en/serverless/help/functions/introduction/" %}}Functions{{%/link%}} and {{%link href="/en/serverless/help/appsail/introduction/" %}}AppSail{{%/link%}}. It cannot be used to integrate with third-party services.{{%/note%}} You can get the {{%badge%}}connections{{%/badge%}} 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. {{%code class="language-javascript line-numbers"%}}// create connection instance const connections = app.connections();{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.739Z" 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%}}{{%bold%}}Note:{{%/bold%}} This SDK can only be accessed within Catalyst services like {{%link href="/en/serverless/help/functions/introduction/" %}}Functions{{%/link%}} and {{%link href="/en/serverless/help/appsail/introduction/" %}}AppSail{{%/link%}}. It cannot be used to integrate with third-party services.{{%/note%}} This SDK method can be used obtain the authentication credentials for various Zoho services, listed as {{%link href="/en/cloud-scale/help/connections/establish-default-connection/" %}}Default Services{{%/link%}}. The {{%badge%}}connections{{%/badge%}} reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/connections/get-connections-instance/" %}}component instance{{%/link%}}. {{%code class="language-javascript line-numbers"%}}// 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);{{%/code%}} ##### 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-03-18T07:41:08.740Z" 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. {{%code class="language-javascript" scroll="set-scroll" %}}//Get a datastore instance let datastore = app.datastore();{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.740Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}} can be obtained in two ways. The {{%badge%}}datastore{{%/badge%}} reference used in the code snippets below is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-component-instance" %}}component instance.{{%/link%}} ### Get a Table's Metadata by Table ID A table's meta data is fetched by referring the table Id, using the method {{%badge%}}getTableDetails(){{%/badge%}} as given below, {{%code class="language-javascript" scroll="set-scroll" %}}//Get a Single Table's details using table ID let datastore = app.datastore(); let tablePromise = datastore.getTableDetails(1510000000110121); tablePromise.then((table) => { console.log(table); });{{%/code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-json line-numbers"%}} { "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" } {{% /divtag %}} {{% divtag id="V1" class="language-json line-numbers"%}} { "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 } {{% /divtag %}} {{% /panel_with_select %}} ### 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 {{%bold%}}.toString(){{%/bold%}} or {{%bold%}}.toJSON(){{%/bold%}} methods. {{%code class="language-javascript" scroll="set-scroll" %}}//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); });{{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-json line-numbers"%}} { "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" } {{% /divtag %}} {{% divtag id="V1" class="language-json line-numbers"%}}{ "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 } {{% /divtag %}} {{% /panel_with_select %}} ### 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 {{%badge%}}getAllTables(){{%/badge%}} method. The promise returned here will be resolved to an array of table meta details. {{%code class="language-javascript" scroll="set-scroll" %}}//Get meta data of all tables let datastore = app.datastore(); let allTablePromise = datastore.getAllTables(); allTablePromise.then((tables) => { console.log(tables); });{{%/code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-json line-numbers"%}} [ { "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" } ] {{% /divtag %}} {{% divtag id="V1" class="language-json line-numbers"%}} [ { "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 } ] {{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.740Z" 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 {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-component-instance" %}}component instance.{{%/link%}} ### Get the table instance using tableID A table reference can be created by referring the table ID using the {{%badge%}}getTable(){{%/badge%}} method. {{%code class="language-javascript" scroll="set-scroll" %}}//Get a Single Table without details using table ID let datastore = app.datastore(); let table = datastore.table(1510000000110121);{{% /code%}} ### Get the table instance using table name Alternatively, A table reference can be created by referring the table name using the {{%badge%}}getTable(){{%/badge%}} method. There is no promise involved in these methods and the instance of the table alone is returned. {{%code class="language-javascript" scroll="set-scroll" %}}//Get a Single Table without details using table name let datastore = app.datastore(); let table = datastore.table('SampleTable');{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.740Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}} can be retrieved through the following methods. The table reference used in the below code snippets can either be a {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-instance" %}}table instance{{%/link%}} or a {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-meta" %}}table meta.{{%/link%}} ### Get a Column's Metadata by ID You can fetch a column's meta data of a particular table using {{%badge%}}getColumnDetails(){{%/badge%}} method. {{%code class="language-javascript" scroll="set-scroll" %}} //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); });{{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-javascript line-numbers"%}} { 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" } {{% /divtag %}} {{% divtag id="V1" class="language-javascript line-numbers"%}} { 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 } {{% /divtag %}} {{% /panel_with_select %}} ### 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. {{%code class="language-javascript" scroll="set-scroll" %}}//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); });{{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-javascript line-numbers"%}} { 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" } {{% /divtag %}} {{% divtag id="V1" class="language-javascript line-numbers"%}} { 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 } {{% /divtag %}} {{% /panel_with_select %}} ### 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. {{%code class="language-javascript" scroll="set-scroll" %}}//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); });{{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-javascript line-numbers"%}} [ { 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" } ] {{% /divtag %}} {{% divtag id="V1" class="language-javascript line-numbers"%}} [ { 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 } ] {{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.740Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}}. The {{%badge%}}table{{%/badge%}} reference used in these code snippets can either be a {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-instance" %}}table instance{{%/link%}} or the {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-meta" %}}table meta{{%/link%}}. ### Get A Single Row You can fetch a single row from a table using the {{%badge%}}getRow(){{%/badge%}} 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. {{%code class="language-javascript" scroll="set-scroll" %}} //Use the table instance or the table meta object to fetch a row by passing the Row ID let rowPromise = table.getRow(1510000000109476);{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. {{%code class="language-javascript" scroll="set-scroll" %}}{ CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-17 13:02:11:184", CREATEDTIME: "2021-08-16 16:29:10:499", CityName: "Pune", ROWID: "2136000000011011" }{{% /code%}} ### 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 {{%badge%}}getMyPagedRows(){{%/badge%}} 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 {{%badge%}}hasNext, {{%/badge%}}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 {{%badge%}}maxRows{{%/badge%}} as 100. {{%note%}}{{%bold%}}Note: {{%/bold%}} The {{%badge%}}maxRows{{%/badge%}} parameter is optional. The SDK call will return 200 rows in a single page by default if this value is not specified.{{%/note%}} 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 {{%badge%}}next\_token{{%/badge%}}, and pass it as the value for {{%badge%}}nextToken{{%/badge%}} during the subsequent iteration, as shown in the code below. During the first execution of the loop, the value for the {{%badge%}}nextToken{{%/badge%}} string is assigned as {{%badge%}}undefined{{%/badge%}}. The next set of records are fetched through {{%badge%}}more\_records{{%/badge%}} in the response data. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}//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()); }); }{{% /code%}} A sample response that you will receive if there are more records available is shown below. The {{%badge%}}more_records{{%/badge%}} parameter will be set to {{%badge%}}true{{%/badge%}} in this case. #### Node.js v2.1.0 {{%code class="language-json" scroll="set-scroll" %}}{ "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}}" } {{%/code%}} A sample response that you will receive if there are no more records available is shown below. The {{%badge%}}more_records{{%/badge%}} parameter will be set to {{%badge%}}false{{%/badge%}} in this case. #### Node.js v2.1.0 {{%code class="language-json" scroll="set-scroll" %}}{ "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 }{{% /code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} We have deprecated support for the {{%badge%}}getAllRows(){{%/badge%}} 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 {{%badge%}}getAllRows(){{%/badge%}} method will be removed from all future SDK versions. Please ensure that you upgrade your code accordingly.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.740Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}} 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 {{%badge%}}table{{%/badge%}} reference used in the code below can either be a {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-instance" %}}table instance{{%/link%}} or a {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-meta" %}}table meta{{%/link%}} created earlier. {{%note%}}{{%bold%}}Note:{{%/bold%}} * The table and the columns in it must already be created. You can {{%link href="/en/cloud-scale/help/data-store/tables/#create-a-new-table" %}}create a table{{%/link%}} and {{%link href="/en/cloud-scale/help/data-store/columns/#create-a-new-column" %}}the columns for it{{%/link%}} from the console. * You will be able to insert upto 5000 records in each table per project in the {{%link href="/en/deployment-and-billing/environments/development-environment" %}}development environment{{%/link%}}. 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.{{%/note%}} ### 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 {{%badge%}}insertRow(){{%/badge%}} method as shown below. This inserts the row in the table that you refer by its name or unique Table ID. A unique {{%badge%}}RowID{{%/badge%}} value for the row is automatically generated once a row is inserted. The promise returned here will be resolved to a JSON row object. {{%code class="language-javascript" scroll="set-scroll" %}}//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); });{{% /code%}} A sample response that you will receive for each version is shown below: {{%code class="language-javascript" scroll="set-scroll" %}}{ 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 }{{% /code%}} ### 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 {{%badge%}}insertRows(){{%/badge%}} method as shown below. The promise returned here is resolved to an array containing the row objects. {{%code class="language-javascript" scroll="set-scroll" %}}//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); });{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions. {{%code class="language-javascript" scroll="set-scroll" %}}[ { 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 } ]{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.740Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}}, and update one more column values. The {{%badge%}}table{{%/badge%}} reference used in the below code snippets can either be a {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-instance" %}}table instance{{%/link%}} or the {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-meta" %}}table meta.{{%/link%}} ### 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 {{%bold%}}ROWID{{%/bold%}} and pass the newly constructed Object to the {{%badge%}}updateRow(){{%/badge%}} method. Here {{%bold%}}ROWID{{%/bold%}} is a mandatory attribute. The promise returned here will be resolved to a JSON row object. {{%code class="language-javascript" scroll="set-scroll" %}}//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); });{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node.js {{%code class="language-javascript" scroll="set-scroll" %}}{ 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" }{{% /code%}} ### Update Multiple Rows To update multiple rows, an array of objects is constructed containing modified values which is passed as an argument to the {{%badge%}}updateRows(){{%/badge%}} method. {{%bold%}}ROWIDs{{%/bold%}} 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. {{%code class="language-javascript" scroll="set-scroll" %}}//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); });{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node.js {{%code class="language-javascript" scroll="set-scroll" %}}[ { 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" } ]{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.740Z" 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 {{%badge%}}ROWID{{%/badge%}}as a parameter to the {{%badge%}}deteleRow(){{%/badge%}} method. Multiple rows cannot be deleted at a time. The promise returned here will be resolved to a row object which is a JSON. {{%code class="language-javascript" scroll="set-scroll" %}}//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); });{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.740Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}}. 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 {{%link href="/en/cloud-scale/help/data-store/tables/" %}}{{%badge%}}Table ID{{%/badge%}}{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can also use the {{%badge%}}dataStore.table().bulkJob('read' | 'write'){{%/badge%}} method to perform either a bulk read or a bulk write job.{{%/note%}} <table class="content-table"> <thead> <tr> <th>Method Used</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}bulkRead.createJob({ criteria, page, select_columns }){{%/badge%}}</td> <td> Create a new bulk read job.</td> </tr> <td>{{%badge%}}bulkRead.getStatus(job ID){{%/badge%}}</td> <td>Get a bulk read job's status.</td> <tr> <td>{{%badge%}}bulkRead.getResult(job ID){{%/badge%}}</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. {{%code class="language-javascript" scroll="set-scroll" %}}// 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);{{%/code%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} A maximum of {{%bold%}}200,000 rows{{%/bold%}} can be read simultaneously.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.741Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}}. The bulk write operation can fetch thousands of records from a CSV file uploaded in {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}Stratus{{%/link%}} and insert them in a specific table. The table is referred to by its unique {{%link href="/en/cloud-scale/help/data-store/tables/" %}}{{%badge%}}table ID{{%/badge%}}{{%/link%}} that is generated by Catalyst during creation. The column in which the write operation must be performed is referred to by its unique {{%link href="/en/cloud-scale/help/data-store/columns/#column-characteristics" %}}column ID{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} To perform a bulk write operation, you must {{%link href="/en/cloud-scale/help/stratus/objects/upload-object/" %}}first upload{{%/link%}} the required data as a CSV file in Stratus.{{%/note%}} During the write job, the file will be referred to using the following attributes: * {{%badge%}}bucketName{{%/badge%}}: The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}name of the bucket{{%/link%}}, where the object is stored. * {{%badge%}}objectKey{{%/badge%}}: Can contain the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}} or the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} of the required object. * {{%badge%}}versionID{{%/badge%}}: If the bucket has {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}versioning{{%/link%}} 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>{{%badge%}}bulkWrite.createJob(objectDetails, {find_by,fk_mapping,operation}){{%/badge%}}</td> <td>Create a new bulk write job on a specific table.</td> </tr> <td>{{%badge%}}bulkWrite.status(job ID){{%/badge%}}</td> <td>Get the status of a bulk write operation.</td> <tr> <td>{{%badge%}}bulkWrite.result(job ID){{%/badge%}}</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. {{%code class="language-javascript" scroll="set-scroll" %}}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); {{%/code%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} A maximum of {{%bold%}}100,000 rows{{%/bold%}} can be written at one time.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.741Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}}. 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 {{%badge%}}deleteRows(){{%/badge%}} function through {{%badge%}}rowPromise{{%/badge%}} in the sample code. The table name or table ID must be passed to {{%badge%}}datastore.table(){{%/badge%}}. The {{%badge%}}datastore{{%/badge%}} reference used below is defined in the {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-component-instance" %}}component instance page{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}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); });{{% /code%}} ##### 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-03-18T07:41:08.741Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} ### Get Component Instance The file store reference can be created by the following method which would not fire a server-side call. {{%code class="language-javascript" scroll="set-scroll" %}}//Get a file store instance let filestore = app.filestore();{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.741Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} 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 {{%link href="/en/sdk/nodejs/v2/cloud-scale/file-store/get-component-instance" %}}component instance.{{%/link%}} There is no promise involved in the above method and the instance of the folder alone is returned. {{%code class="language-javascript" scroll="set-scroll" %}}// Get a folder instance let filestore = app.filestore(); let folder = filestore.folder(1510000000109545);{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.741Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} You can retrieve the details of the folders created in the {{%link href="/en/cloud-scale/help/file-store/introduction" %}}Catalyst File Store{{%/link%}}. It can be a single folder or all the folders located in the file store. The {{%badge%}}filestore{{%/badge%}} reference used in the below code snippets is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/file-store/get-component-instance" %}}component instance{{%/link%}} created earlier. ### Get Details of a Single Folder This particular method retrieves the details of a specific folder referred through its unique {{%bold%}}Folder ID{{%/bold%}} by calling {{%badge%}}getFolderDetails(){{%/badge%}} 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 {{%badge%}}.toString(){{%/badge%}} or {{%badge%}}.toJSON(){{%/badge%}} method. {{%code class="language-javascript" scroll="set-scroll" %}}//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); });{{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-json line-numbers"%}} { "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" } } {{% /divtag %}} {{% divtag id="V1" class="language-json line-numbers"%}} { "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 } {{% /divtag %}} {{% /panel_with_select %}} ### Get Details of All Folders You can fetch the details of all folders in your Catalyst application using the {{%badge%}}getAllFolders(){{%/badge%}} method. The promise returned here will be resolved to an array of folder meta details. {{%code class="language-javascript" scroll="set-scroll" %}}//Get details of all the folders in the project let filestore = app.filestore(); let allFolderPromise = filestore.getAllFolders(); allFolderPromise.then((folders) => { console.log(folders); });{{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-json line-numbers"%}} [ { "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" } ] {{% /divtag %}} {{% divtag id="V1" class="language-json line-numbers"%}} [ { "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 } ] {{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.741Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} You can upload a file from your local system to an existing folder in the {{%link href="/en/cloud-scale/help/file-store/introduction" %}}File Store{{%/link%}}, 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. {{%note%}}{{%bold class="bold-primary" %}}{{%/bold%}} Catalyst provides 1 GB of File Store space for each project in the {{%link href="/en/deployment-and-billing/environments/development-environment" %}}development environment{{%/link%}}. There are no upper limits for storage in the production environment.{{%/note%}} #### 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 {{%badge%}}ReadStream(){{%/badge%}} for the file. You can include the file name in it optionally. {{%code class="language-javascript" scroll="set-scroll" %}}//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' };{{% /code%}} ### Upload the File You must now upload the file by passing the JSON object to the {{%badge%}}uploadFile(){{%/badge%}} method, as shown below. You can either use the {{%link href="/en/sdk/nodejs/v2/cloud-scale/file-store/get-folder-instance" %}}folder reference{{%/link%}} or the {{%link href="/en/sdk/nodejs/v2/cloud-scale/file-store/retrieve-folder-details" %}}folder meta{{%/link%}} 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. {{%code class="language-javascript" scroll="set-scroll" %}}//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); });{{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-javascript line-numbers"%}} { 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" } {{% /divtag %}} {{% divtag id="V1" class="language-javascript line-numbers"%}} { 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 } {{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.741Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} A file can be downloaded from the folder by referring to its unique {{%bold%}}FileID.{{%/bold%}} A {{%link href="/en/sdk/nodejs/v2/cloud-scale/file-store/get-folder-instance" %}}folder reference {{%/link%}}or a {{%link href="/en/sdk/nodejs/v2/cloud-scale/file-store/retrieve-folder-details" %}}folder meta{{%/link%}} is used in the below code snippet. {{%bold%}}FileID{{%/bold%}} is passed as an argument to the {{%badge%}}downloadFile(){{%/badge%}} method. The promise returned here will be resolved to a buffer containing the content of the file. {{%code class="language-javascript" scroll="set-scroll" %}}//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); });{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.741Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} A file from a folder can be deleted by referring its {{%bold%}}File ID{{%/bold%}}. The {{%link href="/en/sdk/nodejs/v2/cloud-scale/file-store/get-folder-instance" %}}folder reference{{%/link%}} or a {{%link href="/en/sdk/nodejs/v2/cloud-scale/file-store/retrieve-folder-details" %}}folder meta{{%/link%}} is used in the below code snippet. A {{%bold%}}fileID{{%/bold%}} is passed as a parameter to the {{%badge%}}deleteFile(){{%/badge%}} method. The promise returned here will be resolved to an deleted file object which is a JSON. {{%code class="language-javascript" scroll="set-scroll" %}}// 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); });{{% /code%}} ##### 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-03-18T07:41:08.741Z" 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 {{%link href="/en/cloud-scale/help/mail/introduction" %}}Catalyst Mail{{%/link%}} 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 {{%badge%}}email{{%/badge%}} 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. {{%code class="language-javascript" scroll="set-scroll" %}}//Create an email instance let email = app.email();{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.741Z" 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 {{%bold%}}maximum supported limits{{%/bold%}} for email recipients and file attachments in a single send mail operation are specified below: * {{%bold%}}To address:{{%/bold%}} 10 * {{%bold%}}CC:{{%/bold%}} 10 * {{%bold%}}BCC:{{%/bold%}} 5 * {{%bold%}}Reply to:{{%/bold%}} 5 * {{%bold%}}Number of file attachments:{{%/bold%}} 5 * {{%bold%}}Size of file attachments:{{%/bold%}} 15 MB (through a single file or multiple files upto 5 files) {{%note%}}{{%bold%}}Note:{{%/bold%}} The subject, sender, and atleast one recipient email addresses are mandatory. Other attributes of the email are optional.{{%/note%}} #### 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 {{%badge%}}createReadStream(){{%/badge%}} method, as well as specify the subject and content of the email as shown below. {{%note%}}{{%bold%}}Note:{{%/bold%}} You must have {{%link href="/en/cloud-scale/help/mail/introduction" %}}configured and verified the sender's email address{{%/link%}} 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.{{%/note%}} The {{%badge%}}email{{%/badge%}} reference used in the code below is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/mail/get-component-instance" %}}component instance{{%/link%}} created earlier. {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}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 };{{% /code%}} ### Send the Email You must now pass the JSON object to the {{%badge%}}sendMail(){{%/badge%}} 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. {{%code class="language-javascript" scroll="set-scroll" %}}let mailPromise = await email.sendMail(config); console.log(mailPromise);{{% /code%}} A sample response that you will receive for different versions of Node.js is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-javascript line-numbers"%}} { 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" } {{% /divtag %}} {{% divtag id="V1" class="language-javascript line-numbers"%}} { 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" } {{% /divtag %}} {{% /panel_with_select %}} ##### 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-03-18T07:41:08.742Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}Catalyst NoSQL{{%/link%}} 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 {{%badge%}}app{{%/badge%}} reference used to create the NoSQL instance is the Node.js object returned as the response during the {{%link href="/en/sdk/nodejs/v2/overview/#initialize-the-sdk" %}}SDK initialization{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}// Create a NoSQL instance const nosql = app.nosql();{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.742Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}Catalyst NoSQL{{%/link%}} 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 {{%badge%}}nosql{{%/badge%}} 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 {{%badge%}}getTable(){{%/badge%}} as given below. {{%code class="language-javascript" scroll="set-scroll" %}}// Create a NoSQL instance const nosql = app.nosql(); // Get table metadata using the Table ID const tableA = await nosql.getTable('124567890'); {{% /code%}} #### 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 {{%badge%}}getTable(){{%/badge%}} as given below. {{%code class="language-javascript" scroll="set-scroll" %}}// Create a NoSQL instance const nosql = app.nosql(); // Get table metadata using the table name const tableB = await nosql.getTable('EmpTable'); {{% /code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If you rename the table, you will need to update the changes in your code.{{%/note%}} <br> ### Get Metadata of All Tables Catalyst enables you to fetch the metadata of all the tables in your project using the {{%badge%}}getAllTable(){{%/badge%}} method as shown below. {{%code class="language-javascript" scroll="set-scroll" %}}// Get metadata of all tables const allTables = await nosql.getAllTable();{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.742Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}Catalyst NoSQL{{%/link%}} 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 {{%badge%}}nosql{{%/badge%}} reference used in the code snippets below is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/nosql/get-component-instance/" %}}component instance{{%/link%}} created earlier. ### Get Instance with Table ID Get a table instance with the unique ID of the table as shown below. {{%code class="language-javascript" scroll="set-scroll" %}}const tableInstanceA = nosql.table('1234567890'); // Create a table instance with Table ID{{% /code%}} <br> ### Get Instance with Table Name Get a table instance with the table's name as shown below. {{%code class="language-javascript" scroll="set-scroll" %}}const tableInstanceB = nosql.table('Emptable'); // Create a table instance with the table name{{% /code%}} <br> ### Get Instance with Table Details Get a table instance by specifying the details of the table and resolving it to {{%badge%}}toJSON(){{%/badge%}} 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. {{%code class="language-javascript" scroll="set-scroll" %}}const tableInstanceC = nosql.table(tableA.toJSON()); // Create a table instance with table details{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.742Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}Catalyst NoSQL{{%/link%}} 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 {{%link href="/en/cloud-scale/help/nosql/working-with-data/introduction/#the-catalyst-custom-json-format" %}}Custom JSON format{{%/link%}}. 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 {{%link href="/en/cloud-scale/help/nosql/working-with-data/introduction/#supported-data-types" %}}supported data types{{%/link%}} 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 {{%link href="/en/cloud-scale/help/nosql/components/#table-keys" %}}Table Keys help section{{%/link%}} 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 {{%badge%}}NoSQLItem(){{%/badge%}} method after requiring the {{%badge%}}no-sql{{%/badge%}} library which is a part of the {{%badge%}}zcatalyst-sdk-node{{%/badge%}} package, as shown below. {{%code class="language-javascript" scroll="set-scroll" %}}const { NoSQLItem } = require('zcatalyst-sdk-node/lib/no-sql'); const item = new NoSQLItem() // Create a new NoSQL item{{%/code%}} <br> ### Construct a NoSQL Item of String In the example below, we construct an item that includes string values and a nested JSON attribute {{%badge%}}color{{%/badge%}} as a Map. {{%code class="language-javascript" scroll="set-scroll" %}}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' });{{% /code%}} <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 {{%badge%}}ArrayBuffers{{%/badge%}} object that represents a raw binary data buffer, or from a Base64 string that represents binary data in the ASCII format. {{%code class="language-javascript" scroll="set-scroll" %}}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{{% /code%}} <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 {{%badge%}}ArrayBuffers{{%/badge%}} 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. {{%code class="language-javascript" scroll="set-scroll" %}}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{{% /code%}} <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. {{%code class="language-javascript" scroll="set-scroll" %}}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{{% /code%}} <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. {{%code class="language-javascript" scroll="set-scroll" %}}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{{% /code%}} <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 {{%badge%}}NoSQLItem.from(){{%/badge%}} as shown in the sample code below. You can also convert a NoSQL item back into a plain JavaScript object using {{%badge%}}itemFromObj.to(){{%/badge%}}, as depicted in the code. {{%code class="language-javascript" scroll="set-scroll" %}}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{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.742Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}NoSQL{{%/link%}} 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 {{%link href="/en/cloud-scale/help/nosql/working-with-data/introduction/#the-catalyst-custom-json-format" %}}Catalyst custom JSON format{{%/link%}}, and the {{%link href="/en/cloud-scale/help/nosql/working-with-data/introduction/#supported-data-types" %}}supported data types{{%/link%}} to learn these topics in detail. {{%note%}}{{%bold%}}Note:{{%/bold%}} Catalyst enables you to insert a maximum of 25 items in bulk in a NoSQL table with a single SDK operation.{{%/note%}} <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 {{%link href="/en/cloud-scale/help/nosql/components/#table-keys" %}}partition key and sort key{{%/link%}} attributes configured for the table. In the example given below, an item containing the value of the partition key attribute {{%badge%}}fruitName{{%/badge%}} is provided as "Banana". Other attributes of the string data type such as {{%badge%}}fruitColor{{%/badge%}} and {{%badge%}}fruitType{{%/badge%}} are also added as a map called {{%badge%}}fruitProperties{{%/badge%}}. The item is inserted using the {{%badge%}}insertItems(){{%/badge%}} method. {{%code class="language-javascript" scroll="set-scroll" %}}// 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 });{{%/code%}} <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>{{%badge%}}contains{{%/badge%}}</td> </tr> <tr> <td>NOT_CONTAINS</td> <td>{{%badge%}}not_contains{{%/badge%}}</td> </tr> <tr> <td>BEGINS_WITH</td> <td>{{%badge%}}begins_with{{%/badge%}}</td> </tr> <tr> <td>ENDS_WITH</td> <td>{{%badge%}}ends_with{{%/badge%}}</td> </tr> <tr> <td>IN</td> <td>{{%badge%}}in{{%/badge%}}</td> </tr> <tr> <td>NOT_IN</td> <td>{{%badge%}}not_in{{%/badge%}}</td> </tr> <tr> <td>BETWEEN</td> <td>{{%badge%}}between{{%/badge%}}</td> </tr> <tr> <td>NOT_BETWEEN</td> <td>{{%badge%}}not_between{{%/badge%}}</td> </tr> <tr> <td>EQUALS</td> <td>{{%badge%}}equals{{%/badge%}}</td> </tr> <tr> <td>NOT_EQUALS</td> <td>{{%badge%}}not_equals{{%/badge%}}</td> </tr> <tr> <td>GREATER_THAN</td> <td>{{%badge%}}greater_than{{%/badge%}}</td> </tr> <tr> <td>LESS_THAN</td> <td>{{%badge%}}less_than{{%/badge%}}</td> </tr> <tr> <td>GREATER_THAN_OR_EQUALS</td> <td>{{%badge%}}greater_equal{{%/badge%}}</td> </tr> <tr> <td>LESSER_THAN_OR_EQUALS</td> <td>{{%badge%}}less_equal{{%/badge%}}</td> </tr> <tr> <td>AND</td> <td>{{%badge%}}AND{{%/badge%}}</td> </tr> <tr> <td>OR</td> <td>{{%badge%}}OR{{%/badge%}}</td> </tr> </tbody> </table> <br> The example below illustrates this by defining a condition for the data type of the attribute {{%badge%}}fruitName{{%/badge%}} to be String in the existing data. If the condition is satisfied, the attribute {{%badge%}}taste{{%/badge%}} with the value "Sweet" is added to these items. {{%code class="language-javascript" scroll="set-scroll" %}}// 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" } ] } } });{{%/code%}} <br> Here are some more sample snippets for inserting items with conditional functions. {{%code class="language-javascript" scroll="set-scroll" %}}//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" } } });{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.742Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}NoSQL{{%/link%}} table after you construct them. An item can be updated by identifying it using its {{%link href="/en/cloud-scale/help/nosql/components/#table-keys" %}}primary keys{{%/link%}}. 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst enables you to update a maximum of 25 items in bulk in a NoSQL table with a single SDK operation.{{%/note%}} The example below illustrates this by identifying an item with the partition key {{%badge%}}fruitName{{%/badge%}} and value "Apple". The values for the attributes of this item to be updated, {{%badge%}}color{{%/badge%}} and {{%badge%}}taste{{%/badge%}} are provided, along with the path to these attributes. The {{%badge%}}no-sql{{%/badge%}} library from the {{%badge%}}zcatalyst-sdk-node package{{%/badge%}} is required to define and construct the NoSQL item. {{%code class="language-javascript" scroll="set-scroll" %}}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'] } ] });{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.742Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}NoSQL{{%/link%}} table by identifying them with their {{%link href="/en/cloud-scale/help/nosql/components/#table-keys" %}}primary keys{{%/link%}}. 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst enables you to fetch a maximum of 100 items from a NoSQL table in a single SDK read operation. {{%/note%}} The example below illustrates fetching an item identified by its partition key {{%badge%}}fruit{{%/badge%}} with the value "apple" using {{%badge%}}fetchItem(){{%/badge%}}. Specific attributes such as {{%badge%}}properties{{%/badge%}} and {{%badge%}}taste{{%/badge%}} are filtered to be fetched using {{%badge%}}required_attributes{{%/badge%}}. The code snippet also uses {{%badge%}}consistent_read{{%/badge%}} to indicate if the read operation must be done using the master or a slave cluster. When set to {{%badge%}}true{{%/badge%}}, it is queried from the master. If {{%badge%}}false{{%/badge%}}, it is queried from the slave. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} The {{%badge%}}no-sql{{%/badge%}} library from the {{%badge%}}zcatalyst-sdk-node{{%/badge%}} package is required to define the NoSQL item. {{%code class="language-javascript" scroll="set-scroll" %}}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']] });{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.742Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}NoSQL{{%/link%}} table and retrieve data by identifying the items using the {{%link href="/en/cloud-scale/help/nosql/components/#table-keys" %}}primary keys{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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 {{%badge%}}start_key{{%/badge%}} token received in the SDK response and construct the logic for pagination.{{%/note%}} 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>{{%badge%}}contains{{%/badge%}}</td> </tr> <tr> <td>NOT_CONTAINS</td> <td>{{%badge%}}not_contains{{%/badge%}}</td> </tr> <tr> <td>BEGINS_WITH</td> <td>{{%badge%}}begins_with{{%/badge%}}</td> </tr> <tr> <td>ENDS_WITH</td> <td>{{%badge%}}ends_with{{%/badge%}}</td> </tr> <tr> <td>IN</td> <td>{{%badge%}}in{{%/badge%}}</td> </tr> <tr> <td>NOT_IN</td> <td>{{%badge%}}not_in{{%/badge%}}</td> </tr> <tr> <td>BETWEEN</td> <td>{{%badge%}}between{{%/badge%}}</td> </tr> <tr> <td>NOT_BETWEEN</td> <td>{{%badge%}}not_between{{%/badge%}}</td> </tr> <tr> <td>EQUALS</td> <td>{{%badge%}}equals{{%/badge%}}</td> </tr> <tr> <td>NOT_EQUALS</td> <td>{{%badge%}}not_equals{{%/badge%}}</td> </tr> <tr> <td>GREATER_THAN</td> <td>{{%badge%}}greater_than{{%/badge%}}</td> </tr> <tr> <td>LESS_THAN</td> <td>{{%badge%}}less_than{{%/badge%}}</td> </tr> <tr> <td>GREATER_THAN_OR_EQUALS</td> <td>{{%badge%}}greater_equal{{%/badge%}}</td> </tr> <tr> <td>LESSER_THAN_OR_EQUALS</td> <td>{{%badge%}}less_equal{{%/badge%}}</td> </tr> <tr> <td>AND</td> <td>{{%badge%}}AND{{%/badge%}}</td> </tr> <tr> <td>OR</td> <td>{{%badge%}}OR{{%/badge%}}</td> </tr> </tbody> </table> <br> In the example below, the query is executed using the {{%badge%}}queryTable(){{%/badge%}} method by identifying the items using the partition key {{%badge%}}fruitType{{%/badge%}} and specifying the condition value as "Citrus". Catalyst NoSQL also lets you define other elements of the query, such as using {{%badge%}}consistent_read{{%/badge%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} The {{%badge%}}no-sql{{%/badge%}} library from the {{%badge%}}zcatalyst-sdk-node{{%/badge%}} package is required to define the NoSQL item. {{%code class="language-javascript" scroll="set-scroll" %}}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 });{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.742Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}NoSQL{{%/link%}} index and retrieve data by identifying the items using the {{%link href="/en/cloud-scale/help/nosql/components/#table-keys" %}}primary keys{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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 {{%badge%}}start_key{{%/badge%}} token received in the SDK response and construct the logic for pagination.{{%/note%}} 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>{{%badge%}}contains{{%/badge%}}</td> </tr> <tr> <td>NOT_CONTAINS</td> <td>{{%badge%}}not_contains{{%/badge%}}</td> </tr> <tr> <td>BEGINS_WITH</td> <td>{{%badge%}}begins_with{{%/badge%}}</td> </tr> <tr> <td>ENDS_WITH</td> <td>{{%badge%}}ends_with{{%/badge%}}</td> </tr> <tr> <td>IN</td> <td>{{%badge%}}in{{%/badge%}}</td> </tr> <tr> <td>NOT_IN</td> <td>{{%badge%}}not_in{{%/badge%}}</td> </tr> <tr> <td>BETWEEN</td> <td>{{%badge%}}between{{%/badge%}}</td> </tr> <tr> <td>NOT_BETWEEN</td> <td>{{%badge%}}not_between{{%/badge%}}</td> </tr> <tr> <td>EQUALS</td> <td>{{%badge%}}equals{{%/badge%}}</td> </tr> <tr> <td>NOT_EQUALS</td> <td>{{%badge%}}not_equals{{%/badge%}}</td> </tr> <tr> <td>GREATER_THAN</td> <td>{{%badge%}}greater_than{{%/badge%}}</td> </tr> <tr> <td>LESS_THAN</td> <td>{{%badge%}}less_than{{%/badge%}}</td> </tr> <tr> <td>GREATER_THAN_OR_EQUALS</td> <td>{{%badge%}}greater_equal{{%/badge%}}</td> </tr> <tr> <td>LESSER_THAN_OR_EQUALS</td> <td>{{%badge%}}less_equal{{%/badge%}}</td> </tr> <tr> <td>AND</td> <td>{{%badge%}}AND{{%/badge%}}</td> </tr> <tr> <td>OR</td> <td>{{%badge%}}OR{{%/badge%}}</td> </tr> </tbody> </table> <br> In the example below, the query is executed by identifying the items using the index {{%badge%}}FruitIdentifier{{%/badge%}} 's partition key {{%badge%}}fruitColor{{%/badge%}} and specifying the condition value as "yellow". The query is done using the {{%badge%}}queryIndex(){{%/badge%}} method. Catalyst NoSQL also lets you define other elements of the query, such as using {{%badge%}}consistent_read{{%/badge%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} The {{%badge%}}no-sql{{%/badge%}} library from the {{%badge%}}zcatalyst-sdk-node{{%/badge%}} package is required to define the NoSQL item. {{%code class="language-javascript" scroll="set-scroll" %}}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 });{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.742Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}NoSQL{{%/link%}} table in Catalyst by identifying them using the {{%link href="/en/cloud-scale/help/nosql/components/#table-keys" %}}primary keys{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst enables you to delete a maximum of 25 items in bulk from a NoSQL table with a single SDK operation.{{%/note%}} The delete operation is performed using the {{%badge%}}deleteItems(){{%/badge%}} method as shown in the example below. The item with the partition key {{%badge%}}fruit{{%/badge%}} matching "apple" is deleted. The {{%badge%}}no-sql library{{%/badge%}} from the {{%badge%}}zcatalyst-sdk-node package{{%/badge%}} is required to define NoSQL items. {{%code class="language-javascript" scroll="set-scroll" %}}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' }) });{{%/code%}} ##### 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-03-18T07:41:08.743Z" 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 {{%link href="/en/cloud-scale/help/push-notifications/introduction" %}}Catalyst Push notifications{{%/link%}} 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 {{%link href="/en/api/code-reference/cloud-scale/push-notifications/web/enable-web-push-notifications/#EnableWebNotifications" %}}this code snippet{{%/link%}} in your web client. You can also access this code from the {{%badge%}}Push Notifications{{%/badge%}} section in your Catalyst remote console. You must ensure that you include the {{%link href="/en/sdk/web/v4/overview" %}}web initialization script{{%/link%}}. ### Get Component Instance You can create a {{%badge%}}pushNotification{{%/badge%}} component reference as shown below. This will not fire a server-side call. We will refer to this component instance while sending push notifications. {{%code class="language-javascript" scroll="set-scroll" %}}//Get a pushNotification instance const pushNotification = app.pushNotification();{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.743Z" 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 {{%bold%}}50 users{{%/bold%}} in a single function call. You can add the {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/" %}}user IDs{{%/link%}} of all users to be notified in an array as shown below. You must then pass the array to the {{%badge%}}sendNotification(){{%/badge%}} 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 {{%badge%}}pushNotification{{%/badge%}} instance used here is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/push-notifications/get-component-instance/" %}}component instance{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}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{{% /code%}} 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 {{%badge%}}sendNotification(){{%/badge%}} along with the message string in the same way. {{%code class="language-javascript" scroll="set-scroll" %}}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{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.743Z" 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 {{%link href="/en/cloud-scale/help/push-notifications/introduction" %}}Catalyst Cloud Scale Push Notifications{{%/link%}} 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 ({{%badge%}}appId{{%/badge%}}) 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 {{%badge%}}appId{{%/badge%}} can be fetched by {{%link href="/en/cloud-scale/help/push-notifications/android/#configure-and-enroll-for-android-push-notifications" %}}configuring Android Push Notifications service{{%/link%}} directly in the Catalyst console. {{%link href="/en/sdk/android/v2/cloud-scale/push-notifications/register-device/" %}}Learn about registering your Android app using Android SDK.{{%/link%}} {{%link href="/en/sdk/ios/v2/cloud-scale/push-notifications/register-device/" %}}Learn about registering your iOS app using iOS SDK.{{%/link%}} {{%link href="/en/sdk/flutter/v2/cloud-scale/push-notifications/register-device/" %}}Learn about registering your mobile apps (Android or iOS) using Flutter SDK.{{%/link%}} 2. The mobile application must mandatorily use the {{%link href="/en/cloud-scale/help/authentication/introduction/" %}}Catalyst Serverless Authentication{{%/link%}} 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 {{%badge%}} pushNotification().mobile() {{%/badge%}} method, by passing the generated {{%badge%}}appID{{%/badge%}} 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. {{%code class="language-javascript"%}}const notification = app.pushNotification().mobile("1234567890");{{%/code%}} Here, {{%bold%}}1234567890{{%/bold%}} is the {{%badge%}}appID{{%/badge%}}. Alternatively, if your application involves Catalyst scope-based access, you can pass the {{%badge%}}ZCProject project{{%/badge%}} parameter along with the {{%badge%}}appID{{%/badge%}}. {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}Learn more about Catalyst SDK Scopes{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const notification = app.pushNotification().mobile("1234567890", ZCProject project);{{% /code%}} #### Send Android Push Notifications After you have {{%link href="/en/sdk/flutter/v2/cloud-scale/push-notifications/register-device/" %}}registered your Android application{{%/link%}} with Catalyst for sending push notifications, you can use the {{%badge%}}sendAndroidNotification(){{%/badge%}} method to send push notifications to your application. You will need to pass two parameters to the {{%badge%}}sendAndroidNotification(){{%/badge%}} method: {{%code class="language-javascript" scroll="set-scroll" %}}MobileNotification.sendAndroidNotification(notifyObj: ICatalystPushDetails, recipient: string): Promise<ICatalystMobileNotification>{{% /code%}} * {{%badge%}}notifyObj{{%/badge%}} - An object with the details of the push notification message. * {{%badge%}}recipient{{%/badge%}} - 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 {{%badge%}}sendAndroidNotification(){{%/badge%}} method in your application: {{%code class="language-javascript" scroll="set-scroll" %}}notification.sendAndroidNotification({ message: 'This message is to test if the functionality is working fine!', badge_count: 1 }, 'emma.b@zylker.com');{{% /code%}} {{%badge%}}badge_count{{%/badge%}} 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 {{%link href="/en/sdk/flutter/v2/cloud-scale/push-notifications/register-device/" %}}registered your iOS application{{%/link%}} with Catalyst for sending push notifications, you can use the {{%badge%}}sendIOSNotification(){{%/badge%}} method to send push notifications to your application. You will need to pass two parameters to the {{%badge%}}sendIOSNotification(){{%/badge%}} method: {{%code class="language-java"%}}MobileNotification.sendIOSNotification(notifyObj: ICatalystPushDetails, recipient: string): Promise<ICatalystMobileNotification>{{%/code%}} You can use the below code snippet to call the {{%badge%}}sendIOSNotification(){{%/badge%}} method in your application: {{%code class="language-java" scroll="set-scroll" %}}notification.sendIOSNotification({ message: 'This message is to test if the functionality is working fine!', badge_count: 1 }, 'emma@zylker.com');{{% /code%}} ##### 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-03-18T07:41:08.743Z" 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 {{%link href="/en/cloud-scale/help/search-integration/introduction" %}}here.{{%/link%}} ### Get Component Instance The {{%badge%}}search{{%/badge%}} reference can be created using the following method which does not fire a server-side call: {{%code class="language-javascript" scroll="set-scroll" %}}//Get an search instance let search = app.search();{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.743Z" 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 {{%link href="/en/cloud-scale/help/search-integration/introduction" %}}Catalyst Search{{%/link%}} enables you to search and retrieve data records from the Catalyst Data Store. You can execute a search query using the {{%badge%}}executeSearchQuery(){{%/badge%}} method for searching for a particular pattern of data. The search reference used in the code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/search/get-a-component-instance/" %}}component instance.{{%/link%}} #### 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. {{%code class="language-javascript" scroll="set-scroll" %}}//Create a config object with the search term, table and indexed columns let config = { search: 'santh\*',search_table_columns: { SampleTable: ['SearchIndexedColumn'], Users: ['SearchTest'] } };{{% /code%}} ### 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. {{%code class="language-javascript" scroll="set-scroll" %}}//Execute the search query by passing the configuration let search = app.search(); let searchPromise = search.executeSearchQuery(config); searchPromise.then(searchResult => { console.log(searchResult); });{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node.js {{%code class="language-javascript" scroll="set-scroll" %}}{ AlienCity: [ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-13 13:49:19:475", CityName: "Dallas", CREATEDTIME: "2021-08-13 13:49:19:475", ROWID: "2136000000008508" } ] }{{% /code%}} ##### Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page lists all the Node.js SDK methods required to carry out Stratus operations through code." last_updated: "2026-03-18T07:41:08.743Z" 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 {{%link href="/en/cloud-scale/help/stratus/introduction" %}}Stratus{{%/link%}} is Catalyst's robust and powerful storage solution. You can store data of any format in the form of {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}Objects{{%/link%}} in containers called {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}}. Each Bucket and every individual object in the bucket has a secure {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} and {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/#bucket-url" %}}Bucket URL{{%/link%}}. You can perform upload and download operations on objects and even provide {{%link href="/en/cloud-scale/help/stratus/stratus-permissions/#custom-permissions" %}}custom permissions{{%/link%}} 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>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-stratus-instance/" %}}Create Stratus Instance{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/check-bucket/" %}}Check Bucket Availability{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/list-buckets/" %}}List Buckets{{%/link%}}</li> </ul> </td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}Create Bucket Instance{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/get-bucket-details/" %}}Get Bucket Details{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/get-bucket-cors/" %}}Get Bucket CORS{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/list-objects/" %}}List Objects in a Bucket{{%/link%}} <ul> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/list-objects/#list-all-objects-by-pagination" %}}List all Objects by Pagination{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/list-objects/#list-objects-through-iteration" %}}List Objects Through Iteration{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/check-object-availability/" %}}Check Object Availability{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/" %}}Download Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/#download-an-object" %}}Download an Object{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/#download-a-portion-of-the-object" %}}Download a Portion of the Object{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/#download-an-object-using-transfer-manager" %}}Download an Object Using Transfer Manager{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/#generate-presigned-url-to-download-an-object" %}}Generate Presigned URL to Download an Object{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/" %}}Upload Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/#upload-object-as-a-stream" %}}Upload Object as a Stream{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/#upload-object-as-a-string" %}}Upload Object as a String{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/#upload-object-with-options" %}}Upload Object with Options{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/#upload-object-using-multipart" %}}Upload Object Using Multipart{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/#upload-an-object-using-transfer-manager" %}}Upload an Object Using Transfer Manager{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/#generate-presigned-url-to-upload-an-object" %}} Generate Presigned URL to Upload an Object{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/extract-zipped-object/" %}}Extract a Zipped Object In Stratus{{%/link%}} <ul> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/extract-zipped-object/#get-zip-extraction-status" %}}Get Zip Extraction Status{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/copy-objects/" %}}Copy Object{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/rename-move-object/" %}}Rename and Move Operations on an Object{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/" %}}Delete Objects{{%/link%}} <ul> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/#delete-a-single-object" %}}Delete a Single Object{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/#delete-a-specific-version-of-an-object-after-a-specific-time" %}}Delete a Specific Version of an Object after a Specific Time{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/#delete-multiple-objects" %}}Delete Multiple Objects{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/#truncate-bucket" %}}Truncate Bucket{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/#delete-a-path-in-the-bucket" %}}Delete a Path in the Bucket{{%/link%}}</li> </ul> </li> </ul> </td> </tr> <tr> <td>Object Operations</td> <td> <ul> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-object-instance/" %}}Create Object Instance{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/list-object-versions/" %}}List Object Versions{{%/link%}} <ul> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/list-object-versions/#list-all-versions-of-an-object-through-pagination" %}}List All Versions of an Object Through Pagination{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/list-object-versions/#list-all-versions-of-the-object-through-iteration" %}}List All Versions of the Object Through Iteration{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/object-details/" %}}Get Object Details{{%/link%}} <ul> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/object-details/#get-details-of-all-objects" %}}Get Details of All Objects{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/object-details/#get-details-of-a-particular-version-of-the-object" %}}Get Details of a Particular Version of the Object{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/put-object-meta/" %}}Put Object Meta Data{{%/link%}}</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-03-18T07:41:08.743Z" 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 {{%badge%}}stratus{{%/badge%}} 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. {{%code class="language-javascript" scroll="set-scroll" %}}// Get a stratus instance const stratus = app.stratus();{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.743Z" 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 {{%badge%}}headBucket(){{%/badge%}} 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 {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-stratus-instance/" %}}component instance{{%/link%}}. 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>{{%badge%}}bucketName{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique name of the bucket{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}throwErr{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If you set this parameter as "{{%bold%}}true{{%/bold%}}", then it will throw an error when the bucket is not found in the project. The default value is "{{%bold%}}false{{%/bold%}}"</td> </tr> </tbody> </table> {{%code class="language-javascript" scroll="set-scroll" %}}const headBucketResponse = await stratus.headBucket('bucketName'); // check the bucket is available in stratus console.log(headBucketResponse);{{%/code%}} **Possible Errors** {{%note%}}{{%bold%}}Note:{{%/bold%}} If you use the SDK with the {{%badge%}}throw_err{{%/badge%}} 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.{{%/note%}} <table class="content-table"> <thead> <tr> <th class="w30p">Error Code</th> <th class="w70p">Meaning</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}{{%bold%}}404{{%/bold%}}{{%/badge%}}</td> <td>Not Found. Bucket Not found in Stratus.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}401{{%/bold%}}{{%/badge%}}</td> <td>Unauthorized/Access Denied - User doesn't have permission to perform the particular operation.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}403{{%/bold%}}{{%/badge%}}</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-03-18T07:41:08.744Z" 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 {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-stratus-instance/" %}}component instance{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const responses= await stratus.listBuckets(); // return all the buckets console.log(responses);{{%/code%}} {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}[ { "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" } ]{{%/code%}} -------------------------------------------------------------------------------- title: "Create Bucket Instance" description: "This page lists the Node.js SDK method to create a bucket instance." last_updated: "2026-03-18T07:41:08.744Z" 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 {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}} in Stratus. {{%code class="language-javascript" scroll="set-scroll" %}}const bucket = stratus.bucket("bucketName");{{%/code%}} -------------------------------------------------------------------------------- title: "Get Bucket Details" description: "This page lists the Node.js SDK method to get all possible details of a bucket." last_updated: "2026-03-18T07:41:08.744Z" 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 {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const buckets = await bucket.getDetails(); // get details of a given bucket console.log(buckets);{{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "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" }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.744Z" 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 {{%badge%}}getCors(){{%/badge%}} 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 {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} CORS of a bucket can be edited by any user that has or has been granted {{%badge%}}Write{{%/badge%}} permission for Stratus component in the project, using the {{%link href="/en/getting-started/set-up-a-catalyst-project/profiles-and-permissions/" %}}Profiles & Permissions{{%/link%}} section. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can find out more about Bucket CORS from this {{%link href="/en/cloud-scale/help/stratus/stratus-config/bucket-cors/" %}}help section{{%/link%}}.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}const cors = await bucket.getCors(); console.log(cors);{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.744Z" 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 {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} 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>{{%badge%}}maxKey{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will contain the maximum limit of objects that can be listed by pagination.</td> </tr> <tr> <td>{{%badge%}}nextToken{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Mandatory{{%/bold%}} parameter. Will contain the token to get the next set of objects.</td> </tr> <tr> <td>{{%badge%}}prefix{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. To list objects that match the prefix value.</td> </tr> <tr> <td>{{%badge%}}orderBy{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. To list objects either in ascending or descending order. {{%bold%}}Default Value{{%/bold%}}: {{%badge%}}asc{{%/badge%}}</td> </tr> <tr> <td>{{%badge%}}folderListing{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} 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. {{%bold%}}Default Value{{%/bold%}}: {{%badge%}}false{{%/badge%}}<br />For instance, if you set value as {{%badge%}}true{{%/badge%}}; the root-level objects alone will be listed. If you set the value as {{%badge%}}false{{%/badge%}}; 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 {{%badge%}}maxKey{{%/badge%}}. Using prefix, you can list objects that only match the {{%badge%}}prefix{{%/badge%}}. The response we get will contain the following properties of the bucket, which will be stored in {{%badge%}}moreOptions{{%/badge%}}: * {{%badge%}}key count{{%/badge%}}: Will contain the value of the number of objects that are being returned * {{%badge%}}max keys{{%/badge%}}: The maximum limit of objects that can be returned * {{%badge%}}Truncated{{%/badge%}}: Will contain the status to notify if a bucket is truncated or not. * {{%badge%}}contents{{%/badge%}}: List of object details * {{%badge%}}continuation_token{{%/badge%}}: If you a sent a {{%badge%}}continuation_token{{%/badge%}} in the request, it will be shown in the response. * {{%badge%}}next_continuation_token{{%/badge%}}: If the response was truncated, the value of this key must be passed as {{%badge%}}continuation_token{{%/badge%}} to the same method for retrieving the next set of objects. With each iteration, we will list the {{%badge%}}maxKey{{%/badge%}} number of objects and check if {{%badge%}}nextToken{{%/badge%}} has been created. Using {{%badge%}}nextToken{{%/badge%}} we will continue the iteration till all the objects have been listed. {{%code class="language-javascript" scroll="set-scroll" %}}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");{{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "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" } ] } {{%/code%}} <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 {{%badge%}}maxKey{{%/badge%}} variable, you can access the required number of objects. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-javascript" scroll="set-scroll" %}}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); }{{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "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" } {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.744Z" 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 {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. If you have enabled {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} for your bucket, then you need to pass the {{%badge%}}versionID{{%/badge%}} as the param, to check if a particular version of the object is available. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} When you use this SDK method, you will get either of the following responses: - {{%badge%}}**true**{{%/badge%}}: If the object is available, the specified version is available, and if the user has the relevant permissions to access the objects. - {{%badge%}}**false**{{%/badge%}}: - 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>{{%badge%}}objectName{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object.</td> </tr> <tr> <td>{{%badge%}}versionId{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. Will hold the unique version ID of the object, if {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled.</td> </tr> <tr> <td>{{%badge%}}throwErr{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If you set this parameter as "{{%bold%}}true{{%/bold%}}", then it will throw an error when the bucket is not found in the project. The default value is "{{%bold%}}false{{%/bold%}}"</td> </tr> </tbody> </table> {{%code class="language-javascript" scroll="set-scroll" %}}const options = { versionId: 'djkfhdiufy762', throwErr: false }; const headObjectRes = await bucket.headObject("sam/out/sample.txt", options); console.log(headObjectRes);{{%/code%}} **Possible Errors** {{%note%}}{{%bold%}}Note:{{%/bold%}} If you use the SDK with the {{%badge%}}throwErr{{%/badge%}} 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.{{%/note%}} <table class="content-table"> <thead> <tr> <th class="w30p">Error Code</th> <th class="w70p">Meaning</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}{{%bold%}}404{{%/bold%}}{{%/badge%}}</td> <td>Not Found. Object Not found.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}401{{%/bold%}}{{%/badge%}}</td> <td>Unauthorized/Access Denied - User doesn't have permission to perform the particular operation.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}403{{%/bold%}}{{%/badge%}}</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-03-18T07:41:08.744Z" 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 {{%link href="/en/cloud-scale/help/stratus/objects/manage-object/download-object/" %}}download a particular object{{%/link%}}, multiple objects, or version of the object. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. The first step of the download operation is a {{%badge%}}GET{{%/badge%}} operation that retrieves the required object from the bucket. To be able to download an object, the requester must have {{%badge%}}READ{{%/badge%}} access permissions. However, owners of the bucket do have the option to grant {{%badge%}}READ{{%/badge%}} access permissions to users, allowing them to download the object without using the required response headers. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for your bucket, you need to pass the {{%badge%}}versionId{{%/badge%}} to download the particular version of the object. If no {{%badge%}}versionId{{%/badge%}} 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 {{%badge%}}versionId{{%/badge%}} param with the value "{{%badge%}}topVersion{{%/badge%}}". {{%code class="language-javascript" scroll="set-scroll" %}}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) });{{%/code%}} ### Download a Portion of the Object The following SDK method is used with the {{%badge%}}range{{%/badge%}} parameter. The range parameter allows you to download a specific {{%badge%}}range{{%/badge%}} of bytes of an object. {{%code class="language-javascript" scroll="set-scroll" %}}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) });{{%/code%}} ### 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** {{%code class="language-javascript" scroll="set-scroll" %}}const { TransferManager } = require('zcatalyst-sdk-node/lib/stratus');{{%/code%}} #### Create Transfer Manager Instance {{%code class="language-javascript" scroll="set-scroll" %}} const transferManager = new TransferManager(bucket); // create transfer manager instance{{%/code%}} #### Download Object as Iterable Part Streams {{%code class="language-javascript" scroll="set-scroll" %}}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); }{{%/code%}} #### 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. {{%code class="language-javascript" scroll="set-scroll" %}}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 }{{%/code%}} ### 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 {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}urlAction{{%/badge%}}</td> <td>{{%bold%}}Request Method{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. This is the parameter that will allow you to generate a presigned URL for either a download(GET) action. <ul> <li>{{%badge%}}**GET**{{%/badge%}}: To download an object</li> </ul> </td> </tr> <tr> <td>{{%badge%}}expiry{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. The URL validity time in seconds. <ul> <li>Default value: {{%bold%}}3600 seconds{{%/bold%}}</li> <li>Minimum value: {{%bold%}}30 seconds{{%/bold%}}</li> <li>Maximum value: {{%bold%}}7 days{{%/bold%}}</li> </ul> </td> </tr> <tr> <td>{{%badge%}}activeFrom{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. This param will contain the time after which the URL is valid. Maximum value is {{%bold%}}7 days{{%/bold%}}. URLs are made active as soon as they are generated by default.</td> </tr> </tbody> </table> {{%code class="language-javascript" scroll="set-scroll" %}}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);{{%/code%}} **Example Response for Generating a Presigned URL for Download** {{%code class="language-json" scroll="set-scroll" %}}{ "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" }{{%/code%}} **Example Snippet Illustrating Usage of Presigned URL to Download an Object** {{%info%}}{{%bold%}}Info:{{%/bold%}} This example is shown using {{%bold%}}Axios{{%/bold%}} request handler package.{{%/info%}} {{%code class="language-javascript" scroll="set-scroll" %}}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); } })();{{%/code%}} -------------------------------------------------------------------------------- title: "Upload Object" description: "This page lists the Node.js SDK method to upload objects to a bucket." last_updated: "2026-03-18T07:41:08.744Z" 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 {{%link href="/en/cloud-scale/help/stratus/objects/upload-object/" %}}upload objects{{%/link%}} to the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}bucket{{%/link%}} 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 {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. If you do not have {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} 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 {{%badge%}}versionId{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ### 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; {{%badge%}}putObject(){{%/badge%}} {{%code class="language-javascript" scroll="set-scroll" %}}// 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);{{%/code%}} ### 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; {{%badge%}}putObject(){{%/badge%}} {{%code class="language-javascript" scroll="set-scroll" %}}//Upload object as a string const res = await bucket.putObject("sam/out/sample.txt", "Content of the file"); console.log(res);{{%/code%}} ### Upload Object with Options Using this SDK method, you can use the following options while you upload an object. * {{%badge%}}**overwrite**{{%/badge%}}: 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**'. * {{%badge%}}**ttl**{{%/badge%}}: 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**. * {{%badge%}}**metaData**{{%/badge%}}: This is an option you can use to upload {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#metadata" %}}meta details{{%/link%}} of the object that is being uploaded. * {{%badge%}}**contentType**{{%/badge%}}: This is an option you can provide, if you need to set the MIME type of the object. {{%code class="language-javascript" scroll="set-scroll" %}}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);{{%/code%}} ### 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. {{%code class="language-java"%}}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);{{%/code%}} This SDK method will return the value of a {{%badge%}}taskId{{%/badge%}}. You can use this value to find out the status of the extraction using this {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/extract-zipped-object/#get-zip-extraction-status" %}}SDK method{{%/link%}}. **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ 'task_id': '1234263749' }{{%/code%}} ### 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%}}{{%bold%}}Note:{{%/bold%}} It is recommended that you consider {{%bold%}}Multipart Upload{{%/bold%}} as the preferred method to upload objects that are {{%bold%}}100 MB or larger{{%/bold%}}.{{%/note%}} #### 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** {{%badge%}}bucket{{%/badge%}}: This is the bucket instance you need to have initialized earlier using this {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}SDK method{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const initRes = await bucket.initiateMultipartUpload("sam/out/sample.txt"); console.log(initRes);{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "bucket": "zcstratus123-development", "key": "sam/out/sample.txt", "upload_id": "01j7xbm4vm5750zbedxqgc4q6m", "status": "PENDING" }{{%/code%}} #### 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. {{%code class="language-javascript" scroll="set-scroll" %}}let partNumber = 1; const file = fs.createReadStream("filePath"); const uploadPartRes = await bucket.uploadPart("sam/out/sample.txt", "uploadId", file, partNumber); console.log(uploadPartRes);{{%/code%}} #### 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 {{%badge%}}getMultipartUploadSummary(){{%/badge%}} method. {{%code class="language-javascript" scroll="set-scroll" %}}const uploadSummaryRes = await bucket.getMultipartUploadSummary("sam/out/sample.txt", "upload_id"); console.log(uploadSummaryRes);{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "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 } ] }{{%/code%}} #### 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 {{%badge%}}completeMultipartUpload(){{%/badge%}} method. {{%code class="language-javascript" scroll="set-scroll" %}}const completeUploadRes = await bucket.completeMultipartUpload("sam/out/sample.txt", "uploadId"); console.log(completeUploadRes);{{%/code%}} **Example SDK Implementation** {{%code class="language-javascript" scroll="set-scroll" %}}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; } }{{%/code%}} ### Upload an Object Using Transfer Manager **Ensure the following packages are imported** {{%code class="language-javascript" scroll="set-scroll" %}}const { TransferManager } = require('zcatalyst-sdk-node/lib/stratus');{{%/code%}} #### Create Transfer Manager Instance {{%code class="language-javascript" scroll="set-scroll" %}} const transferManager = new TransferManager(bucket); // create transfer manager instance{{%/code%}} #### Multipart Upload **Create Multipart Upload Instance** The following SDK method will create a multipart instance by initiating multipart upload. {{%code class="language-javascript" scroll="set-scroll" %}}const multipart = await transferManager.createMultipartInstance("sam/out/sample.txt"); // create multipart instance{{%/code%}} If you are required to create an instance for an already initialized multipart upload operation, then copy and use the code snippet given below {{%code class="language-javascript" scroll="set-scroll" %}}const multipart = await transferManager.createMultipartInstance("sam/out/sample.txt", "uploadId");{{%/code%}} #### Upload Part In the following SDK method we are going to be using the {{%badge%}}multipart{{%/badge%}} instance we initialized in the *Create Multipart Upload Instance* section. {{%code class="language-javascript" scroll="set-scroll" %}}const uploadRes = await multipart.uploadPart(fs.createReadStream("filePath"), partNumber); console.log(uploadRes);{{%/code%}} #### Upload Summary {{%code class="language-javascript" scroll="set-scroll" %}}const summaryRes = await multipart.getUploadSummary(); console.log(summaryRes);{{%/code%}} #### Complete Upload {{%code class="language-javascript" scroll="set-scroll" %}}const completeRes = await multipart.completeUpload(); console.log(completeRes);{{%/code%}} #### 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. {{%code class="language-javascript" scroll="set-scroll" %}}const file = fs.createReadStream("filePath"); const partSize = 50 // in MB const objectPartUploadRes = await transferManager.putObjectAsParts("sam/out/sample.txt",file, partSize); console.log(objectPartUploadRes);{{%/code%}} ### 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 {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}urlAction{{%/badge%}}</td> <td>{{%bold%}}Request Method{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. This is the parameter that will allow you to generate a presigned URL for an upload(PUT) action. <ul> <li>{{%badge%}}**PUT**{{%/badge%}}: To upload an object</li> </ul> </td> </tr> <tr> <td>{{%badge%}}expiry{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. The URL validity time in seconds. <ul> <li>Default value: {{%bold%}}3600 seconds{{%/bold%}}</li> <li>Minimum value: {{%bold%}}30 seconds{{%/bold%}}</li> <li>Maximum value: {{%bold%}}7 days{{%/bold%}}</li> </ul> </td> </tr> <tr> <td>{{%badge%}}activeFrom{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. This param will contain the time after which the URL is valid. Maximum value is {{%bold%}}7 days{{%/bold%}}. URLs are made active as soon as they are generated by default.</td> </tr> </tbody> </table> {{%code class="language-javascript" scroll="set-scroll" %}}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);{{%/code%}} **Example Response for Generating a Presigned URL for Upload** {{%code class="language-json" scroll="set-scroll" %}}{ signature: "https://sadi-development.zohostratus.com/_signed/text.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747896279887&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=3YBUX1HFSxNQzQJjFrln82AyJsEEuC5T9dsZwWxGyEE" }{{%/code%}} **Example Snippet Illustrating Usage of Presigned URL to Upload an Object** {{%info%}}{{%bold%}}Info:{{%/bold%}} This example is shown using {{%bold%}}Axios{{%/bold%}} request handler package.{{%/info%}} {{%code class="language-javascript" scroll="set-scroll" %}}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); } })();{{%/code%}} -------------------------------------------------------------------------------- title: "Extract a Zipped Object" description: "This page lists the Node.js SDK method to extract a zipped object." last_updated: "2026-03-18T07:41:08.745Z" 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 {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} **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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will be the name of the zip file, you need to extract</td> </tr> <tr> <td>{{%badge%}}destPath{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will contain the complete {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path information{{%/link%}} of the destination, where the extracted objects will be stored in the bucket.</td> </tr> </tbody> </table> {{%code class="language-javascript" scroll="set-scroll" %}}const res = await bucket.unzipObject("sample.zip","output/"); console.log(res);{{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "key": "sample.zip", "destination": "output/", "task_id": "6963000000272049", "message": "Zip extract scheduled" }{{%/code%}} ### 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%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} Using the {{%badge%}}taskId{{%/badge%}} parameter, in the following SDK method, we can determine the status of the extraction. The {{%badge%}}taskId{{%/badge%}} is returned in the response of {{%badge%}}unzipObject(){{%/badge%}} method. {{%code class="language-javascript" scroll="set-scroll" %}}const statusRes = await bucket.getUnzipStatus("sample.zip", 'taskId'); console.log(statusRes);{{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "task_id": "6963000000272049", "status": "SUCCESS" }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.745Z" 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 {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} The {{%badge%}}key{{%/badge%}} will be the object you are going to copy, and the {{%badge%}}destination{{%/badge%}}, 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 {{%badge%}}destination{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} * You need to provide the complete object name, along with the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}{{%bold%}}path{{%/bold%}}{{%/link%}} for both {{%badge%}}key{{%/badge%}} and {{%badge%}}destination{{%/badge%}} values. * For example, if you have file named "{{%badge%}}kitten.png{{%/badge%}}" in the path {{%badge%}}pictures/puppy{{%/badge%}}, and you need to copy the file to {{%badge%}}pictures/kitten{{%/badge%}} path, then: <br /> {{%badge%}}source_object{{%/badge%}} value will be '{{%badge%}}pictures/puppy/kitten.png{{%/badge%}}'<br /> {{%badge%}}dest_object{{%/badge%}} value will be '{{%badge%}}pictures/kitten/kitten.png{{%/badge%}}'{{%/note%}}<br /> {{%code class="language-javascript" scroll="set-scroll" %}}const res = await bucket.copyObject('sam/out/sample.txt', "out/sam/sample.txt"); console.log(res);{{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "copy_to": "sam/out/sample.txt", "key": "out/sam/sample.txt", "message": "Object copied successfully." }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.745Z" 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 {{%badge%}}renameObject(){{%/badge%}} SDK method. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>The original name of the object that you need to rename</td> </tr> <tr> <td>{{%badge%}}destination{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>The new name that you rename the object with</td> </tr> </tbody> </table> {{%note%}}{{%bold%}}Note:{{%/bold%}} * You need to provide the complete object name, along with the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}{{%bold%}}path{{%/bold%}}{{%/link%}} for both {{%badge%}}key{{%/badge%}} and {{%badge%}}destination{{%/badge%}} values. * For example, if you have file named "{{%badge%}}kitten.png{{%/badge%}}" in the path {{%badge%}}pictures/puppy{{%/badge%}}, and you need to rename or move the file to {{%badge%}}pictures/kitten{{%/badge%}} path, then: <br /> {{%badge%}}key{{%/badge%}} value will be '{{%badge%}}pictures/puppy/kitten.png{{%/badge%}}'<br /> {{%badge%}}destination{{%/badge%}} value will be '{{%badge%}}pictures/kitten/kitten.png{{%/badge%}}'{{%/note%}}<br /> ### Rename an Object Using the {{%badge%}}renameObject(){{%/badge%}} SDK method you can rename objects present in a bucket. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} * You cannot rename objects in a bucket that has {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} 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. {{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}const res = await bucket.renameObject("sam/out/sample.txt", "sam/out/update_sample.txt"); console.log(res);{{%/code%}} ### Move an Object Using the {{%badge%}}renameObject(){{%/badge%}} SDK method, we can move the object from one path to another within a bucket. {{%code class="language-javascript" scroll="set-scroll" %}}const moveRes = await bucket.renameObject("sam/out/sample.txt", "out/sample.txt"); console.log(moveRes);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} You cannot perform move operations in a bucket that has {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} enabled.{{%/note%}} #### Example Response for Rename and Move Operations {{%code class="language-json" scroll="set-scroll" %}}{ "current_key": "sam/out/sample.txt", "message": "Rename successful", "rename_to": "sam/out/update_sample.txt" }{{%/code%}} -------------------------------------------------------------------------------- title: "Delete Objects" description: "This page lists the Node.js SDK method to delete objects stores in a bucket." last_updated: "2026-03-18T07:41:08.745Z" 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 {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}versionId{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} 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>{{%badge%}}ttl{{%/badge%}}</td> <td>{{%bold%}}int{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. It allows you to schedule your delete operations. For example, if you provide the value of {{%badge%}}ttl{{%/badge%}} as {{%bold%}}60{{%/bold%}}, the delete operation will only occur after 60 seconds. The value of {{%badge%}}ttl{{%/badge%}} 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 {{%badge%}}deleteObject(){{%/badge%}} method. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-javascript" scroll="set-scroll" %}}const res = await bucket.deleteObject( "sam/out/sample.txt"); console.log(res);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled on the bucket and no specific {{%badge%}}versionId{{%/badge%}} is provided, deleting an object will {{%bold%}}remove all versions{{%/bold%}} of that object by default.{{%/note%}} ### Delete a Specific Version of an Object after a Specific Time Ensure you provide the {{%badge%}}versionId{{%/badge%}} of the object if you enabled {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} for your bucket. You can also schedule your delete operation using the {{%badge%}}ttl{{%/badge%}} variable. For example, if you provide the value of {{%badge%}}ttl{{%/badge%}} as **100**, the delete operation will only occur after **100 seconds**. Always ensure that the value of {{%badge%}}ttl{{%/badge%}} is greater than equal to **60 seconds**. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-javascript" scroll="set-scroll" %}}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);{{%/code%}} ### 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%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} Ensure you provide the {{%badge%}}versionId{{%/badge%}} of the object if you enabled {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} for your bucket. You can also schedule your delete operation using the {{%badge%}}ttl{{%/badge%}} variable. For example, if you provide the value of {{%badge%}}ttl{{%/badge%}} as **100**, the delete operation will only occur after **100 seconds**. Always ensure that the value of {{%badge%}}ttl{{%/badge%}} is greater than equal to **60 seconds**. {{%code class="language-javascript" scroll="set-scroll" %}}const objectDel = await bucket.deleteObjects( [ { key: "sam/out/sample.txt", versionId: "01hhch20nfkx9hw9ebqy2jnz9d" } ], 100); console.log(objectDel);{{%/code%}} #### Example Response for Delete Operation {{%code class="language-json" scroll="set-scroll" %}}{"message": "Object Deletion successful."}{{%/code%}} ### Truncate Bucket Using this SDK method you will be able to essentially every single object present in the bucket. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-javascript" scroll="set-scroll" %}}const truncateRes = await bucket.truncate(); console.log(truncateRes);{{%/code%}} ### Delete a Path in the Bucket Using this SDK, you will be able to delete all the objects present in a {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}. You need to pass the complete path to the {{%badge%}}deletePath(){{%/badge%}} method. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-javascript" scroll="set-scroll" %}}// To delete an entire path const res = await bucket.deletePath("sam/out/"); console.log(res);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "path": "sam/", "message": "Path deletion scheduled" }{{%/code%}} -------------------------------------------------------------------------------- title: "Create Object Instance" description: "This page lists the Node.js SDK method to create an object instance." last_updated: "2026-03-18T07:41:08.746Z" 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 {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const objectIns = bucket.object("sam/out/sample.txt");{{%/code%}} -------------------------------------------------------------------------------- title: "List Object Versions" description: "This page lists the Node.js SDK method to get versions of an object." last_updated: "2026-03-18T07:41:08.746Z" 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 {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} 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 {{%badge%}}versionId{{%/badge%}}. 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 {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-object-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **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>{{%badge%}}nextToken{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>Will hold the value to determine the next set of versions.</td> </tr> <tr> <td>{{%badge%}}maxVersions{{%/badge%}}</td> <td>{{%bold%}}int{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. Will hold the value of the maximum number of versions of the object that can be listed per iteration.</td> </tr> </tbody> </table> {{%code class="language-javascript" scroll="set-scroll" %}}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);{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "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" } ] }{{%/code%}} ### 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%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-javascript" scroll="set-scroll" %}}const versions = objectIns.listIterableVersions(); for await( const version of versions) { console.log(version); }{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "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" }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.746Z" 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 {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-object-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-javascript" scroll="set-scroll" %}}const objectRes = await objectIns.getDetails(); console.log(objectRes);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled, then using this SDK method will only return the latest version's object details.{{%/note%}} ### 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 {{%badge%}}getDetails(){{%/badge%}} SDK method. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **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>{{%badge%}}versionId{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} 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%}}{{%bold%}}Note{{%/bold%}}: * You need to have enabled {{%bold%}}Versioning{{%/bold%}} for your objects at least once to use this method. * You can find out more about Versioning from this {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}help documentation{{%/link%}}.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}const objectRes = await objectIns.getDetails("versionId"); console.log(objectRes);{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "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" }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.746Z" 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 {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#metadata" %}}meta details{{%/link%}} for a particular object stored in a bucket in Stratus. The Object reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-object-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} The meta details will be passed as JSON key value pairs. For example, {"meta_key" : "meta_value"} {{%note%}}{{%bold%}}Note:{{%/bold%}} * 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 {{%badge%}}**HEAD**{{%/badge%}} request method. In the response, the metadata will be listed in the key '{{%badge%}}x-user-meta{{%/badge%}}'. * 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.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}const objectMeta = { "key1": "value1" , "key2": "value2" }; const objMeta = await objectIns.putMeta(objectMeta); console.log(objMeta);{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "message": "Metadata added successfully" }{{%/code%}} ##### 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-03-18T07:41:08.746Z" 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 {{%link href="/en/cloud-scale/help/zcql/introduction" %}}ZCQL{{%/link%}} is Catalyst's own query language that enables you to perform data retrieval, insertion, updating, and deletion operations on the tables in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}}. 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 {{%link href="/en/cloud-scale/help/data-store/olap-database/introduction/" %}}**OLAP database**{{%/link%}}, 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 {{%link href="/en/cloud-scale/help/zcql/zcql-functions/" %}}ZCQL functions{{%/link%}} on the OLAP database. ### Get Component Instance You must first create a component instance for ZCQL. The {{%badge%}}zcql{{%/badge%}} instance can be created as shown below. {{%code class="language-javascript" scroll="set-scroll" %}}//Get a ZCQL instance let zcql = app.zcql();{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.746Z" 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 {{%badge%}}zcql{{%/badge%}} refers to the component instance defined {{%link href="/en/sdk/nodejs/v2/cloud-scale/zcql/get-component-instance" %}}here{{%/link%}}. This will return a promise which will be resolved to an object. The {{%badge%}}content{{%/badge%}} key will contain the array of row objects. ### Construct and Execute the Query on the Primary Data Store For the {{%link href="/en/cloud-scale/help/zcql/introduction" %}}ZCQL queries{{%/link%}} to be executed on the primary Data Store, you can construct the query and pass it to the {{%badge%}}executeZCQLQuery(){{%/badge%}} method as shown below. These queries can include SELECT, INSERT, UPDATE, or DELETE statements. A sample INSERT query is shown below: {{%code class="language-javascript" scroll="set-scroll" %}}//Construct the query to execute let query = 'INSERT into ShipmentData (productID, productName, region) VALUES (3782, A4 Reams, India)'; let result = await zcql.executeZCQLQuery(query);{{% /code%}} <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 {{%badge%}}executeOLAPQuery(){{%/badge%}} method. A sample analytical SELECT query is shown below. {{%code class="language-javascript" scroll="set-scroll" %}}//Construct the query to execute let query = 'SELECT SUM(price) FROM ShipmentData'; let result = await zcql.executeOLAPQuery(query);{{% /code%}} #### 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-03-18T07:41:08.746Z" 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 **{{%link href="https://www.zoho.com/accounts/protocol/oauth.html"%}}Zoho OAuth authentication{{%/link%}}**. 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 {{%link href="https://api-console.zoho.com/"%}}Zoho API console{{%/link%}} for a specific application in {{%link href="/en/cloud-scale/help/cache/introduction/"%}}Catalyst Cache{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} Before you configure the connector in your Node.js business logic as shown below, you will need to register a new client in the {{%link href="https://api-console.zoho.com/"%}}Zoho API console{{%/link%}}, 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%}}{{%bold%}}Note:{{%/bold%}} * 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.{{%/note%}} The code below illustrates a Node.js connector. The promise returned here will be resolved to an access token string. {{%code class="language-javascript line-numbers" scroll="set-scroll" %}} 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 });{{% /code%}} #### 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-03-18T07:41:08.747Z" 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. {{%code class="language-javascript" scroll="set-scroll" %}}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.{{%/code%}} #### Job Scheduling -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the methods to perform Job Scheduling operations" last_updated: "2026-03-18T07:41:08.747Z" 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 {{%link href="/en/serverless/help/circuits/introduction/" %}}Circuits{{%/link%}}, Webhooks(any third-party URL), {{%link href="/en/serverless/help/functions/job-functions/" %}}Job Functions{{%/link%}}, and {{%link href="/en/serverless/help/appsail/introduction/" %}}App Sail{{%/link%}} 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>{{%link href="/en/sdk/nodejs/v2/job-scheduling/jobpool/get-all-jobpool/" %}}Get All Job Pool{{%/link%}}<br />{{%link href="/en/sdk/nodejs/v2/job-scheduling/jobpool/get-job-pool/" %}}Get a Specific Job Pool{{%/link%}}</td> </tr> <tr> <td>Job</td> <td>{{%link href="/en/sdk/nodejs/v2/job-scheduling/jobs/create-job/" %}}Create Job{{%/link%}}<br />{{%link href="/en/sdk/nodejs/v2/job-scheduling/jobs/get-job/" %}}Get Job Details{{%/link%}}<br />{{%link href="/en/sdk/nodejs/v2/job-scheduling/jobs/delete-job/" %}}Delete a Job{{%/link%}}</td> </tr> <tr> <td>Cron</td> <td>{{%link href="/en/sdk/nodejs/v2/job-scheduling/cron/create-one-time-cron/" %}}Create a One-Time Cron{{%/link%}}<br />{{%link href="/en/sdk/nodejs/v2/job-scheduling/cron/create-recurring-cron/" %}}Create a Recurring Cron{{%/link%}}<br />{{%link href="/en/sdk/nodejs/v2/job-scheduling/cron/create-cron-cron-expressions/" %}}Create Cron Using Cron Expressions{{%/link%}}<br />{{%link href="/en/sdk/nodejs/v2/job-scheduling/cron/get-cron-details/" %}}Get Details of a Particular Cron{{%/link%}}<br />{{%link href="/en/sdk/nodejs/v2/job-scheduling/cron/get-all-cron-details/" %}}Get Details of All Crons{{%/link%}}<br />{{%link href="/en/sdk/nodejs/v2/job-scheduling/cron/update-cron/" %}}Update Cron{{%/link%}}<br />{{%link href="/en/sdk/nodejs/v2/job-scheduling/cron/pause-cron/" %}}Pause Cron{{%/link%}}<br />{{%link href="/en/sdk/nodejs/v2/job-scheduling/cron/resume-cron/" %}}Resume Cron{{%/link%}}<br />{{%link href="/en/sdk/nodejs/v2/job-scheduling/cron/run-cron/" %}}Run Cron{{%/link%}}<br />{{%link href="/en/sdk/nodejs/v2/job-scheduling/cron/delete-cron/" %}}Delete Cron{{%/link%}}</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-03-18T07:41:08.747Z" 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 {{%link href="/en/job-scheduling/" %}}Job Scheduling{{%/link%}} 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. {{%code class="language-javascript" scroll="set-scroll" %}}const jobScheduling = app.jobScheduling(); // get job scheduling instance{{%/code%}} ##### 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-03-18T07:41:08.747Z" 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 {{%link href="/en/job-scheduling/help/cron/introduction/" %}}Cron{{%/link%}} component is used to schedule the submission of a {{%link href="/en/job-scheduling/help/job/introduction/" %}}job{{%/link%}} to the {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job Pool{{%/link%}}. Using the following SDK, you will be able to create a cron that will schedule a job submission only once. {{%note%}}{{%bold%}}Note:{{%/bold%}} The following SDK is written for a job that will trigger a {{%link href="/en/serverless/help/functions/job-functions/" %}}Job Function{{%/link%}}. To make the SDK compatible for the other types, you need to replace the value with proper {{%link href="/en/job-scheduling/help/jobpool/key-concepts/#job-pool-id" %}}{{%bold%}}Job Pool ID{{%/bold%}}{{%/link%}}, or {{%bold%}}Job Pool Name{{%/bold%}}, and provide the appropriate {{%bold%}}Target Name{{%/bold%}}, or {{%bold%}}Target ID{{%/bold%}}.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}// 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);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} We urge you to use this SDK to configure only {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}. Use the {{%italics%}}UI Builder{{%/italics%}} to configure {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-defined Crons{{%/link%}}.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.747Z" 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. {{%tabs%}} {{%tab "Every Cron" %}} ### 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%}}{{%bold%}}Note:{{%/bold%}} The following SDK is configured to {{%link href="/en/api/code-reference/job-scheduling/job/submit-job/submit-function-job/#SubmitaFunctionJobByID" %}}submit a job{{%/link%}} every {{%bold%}}2Hrs 1Mins and 3secs{{%/bold%}}. You can change this value as per your requirement by passing the relevant value to the {{%badge%}}cron_detail{{%/badge%}} JSON key-value pair.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}// 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); {{%/code%}} {{%/tab%}} {{%tab "Daily Cron" %}} <br> ### Create a Daily Cron The following SDK can be used to schedule a cron to {{%link href="/en/job-scheduling/help/implementation/submit-jobs-using-jobs/" %}}submit a job{{%/link%}} to the {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job pool{{%/link%}} at a fixed time at a **daily interval**. {{%note%}}{{%bold%}}Note:{{%/bold%}} The following SDK is configured to execute the cron on {{%bold%}}0Hr 0Min 0Sec{{%/bold%}} every single day. You can change this value as per your requirement by passing the relevant value to the {{%badge%}}cron_detail{{%/badge%}} JSON key-value pair.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}// 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); {{%/code%}} {{%/tab%}} {{%tab "Monthly Cron" %}} <br> ### Create a Monthly Cron The following SDK can be used to schedule a cron to {{%link href="/en/job-scheduling/help/implementation/submit-jobs-using-jobs/" %}}submit a job{{%/link%}} to the {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job pool{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} The following SDK is configured to execute the cron that will submit a job to the job pool {{%bold%}}every month{{%/bold%}} on the {{%bold%}}1st{{%/bold%}}, {{%bold%}}3rd{{%/bold%}}, and {{%bold%}}5th{{%/bold%}} at {{%bold%}}0Hrs,0Mins, 0Secs{{%/bold%}}. You can change this value as per your requirement by passing the relevant value to the {{%badge%}}cron_detail{{%/badge%}} JSON key-value pair.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}// 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); {{%/code%}} {{%/tab%}} {{%tab "Yearly Cron" %}} <br> ### Create a Yearly Cron The following SDK can be used to schedule a cron to{{%link href="/en/job-scheduling/help/implementation/submit-jobs-using-jobs/" %}}submit a job{{%/link%}} to the {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job pool{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} The following SDK is configured to execute the cron that will submit a job to the job pool on the {{%bold%}}1st{{%/bold%}}, {{%bold%}}2nd{{%/bold%}}, and {{%bold%}}3rd{{%/bold%}} on the {{%bold%}}8th month{{%/bold%}} of {{%bold%}}every year{{%/bold%}}. You can change this value as per your requirement by passing the relevant value to the {{%badge%}}cron_detail{{%/badge%}} JSON key-value pair.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}// 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); {{%/code%}} {{%/tab%}} {{%/tabs%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} We urge you to use this SDK to configure only {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}. Use the {{%italics%}}UI Builder{{%/italics%}} to configure {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-defined Crons{{%/link%}}.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.747Z" 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 {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-expressions" %}}Cron Expressions{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} In the following SDK, the cron has been configured using Cron Expressions, to submit a job to the job pool on {{%bold%}}0Hrs 0Mins 0Secs{{%/bold%}} on {{%bold%}}every 1st day of the week{{%/bold%}} on the {{%bold%}}1st month of every year{{%/bold%}}. You can change this value as per your requirement by passing the relevant value to the {{%badge%}}cron_expression{{%/badge%}} JSON key-value pair.{{%/link%}} {{%code class="language-javascript" scroll="set-scroll" %}}// 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);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} We urge you to use this SDK to configure only {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}. Use the {{%italics%}}UI Builder{{%/italics%}} to configure {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-defined Crons{{%/link%}}.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.747Z" 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 {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}**Pre-Defined Cron**{{%/link%}} or {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}**Dynamic Cron**{{%/link%}}. You need to pass the {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-id" %}}{{%badge%}}cron id{{%/badge%}}{{%/link%}} or the name of the cron to {{%badge%}}getCron(){{%/badge%}} SDK method. {{%code class="language-javascript" scroll="set-scroll" %}}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{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.747Z" 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 {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-Defined Crons{{%/link%}} using the {{%badge%}}getCron(){{%/badge%}} SDK method. {{%note%}}{{%bold%}}Note:{{%/bold%}} This method will only fetch you details of Pre-Defined Crons. This method will not work for {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}const allCrons = await jobScheduling.CRON.getAllCron(); // get all cron{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.747Z" 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 {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-id" %}}{{%badge%}}cron id{{%/badge%}}{{%/link%}} to the {{%badge%}}getCron(){{%/badge%}} method, and update the details using the {{%badge%}}updateCron(){{%/badge%}} method. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can use this method to update details of both {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-Defined Crons{{%/link%}} and {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}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{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.748Z" 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 {{%link href="/en/job-scheduling/help/job/introduction/" %}}job{{%/link%}} to the {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job Pool{{%/link%}}. You need to pass the {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-id" %}}{{%badge%}}cron id{{%/badge%}}{{%/link%}} or name of the cron you wish to pause to the {{%badge%}}pauseCron(){{%/badge%}} SDK method. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can use this method to update details of both {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-Defined Crons{{%/link%}} and {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}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{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.748Z" 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 {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-id" %}}{{%badge%}}cron id{{%/badge%}}{{%/link%}} or name to the {{%badge%}}resumeCron(){{%/badge%}} SDK method. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can use this method to update details of both {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-Defined Crons{{%/link%}} and {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}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{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.748Z" 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 {{%link href="/en/job-scheduling/help/cron/introduction/" %}}execute a cron{{%/link%}}. The cron once executed will immediately submit the associated {{%link href="/en/job-scheduling/help/job/introduction/" %}}job{{%/link%}} to the {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job Pool{{%/link%}}. This can be done by passing the {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-id" %}}{{%badge%}}cron id{{%/badge%}}{{%/link%}} or name to the {{%badge%}}runCron(){{%/badge%}} SDK method. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can use this method to update details of both {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-Defined Crons{{%/link%}} and {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}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{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.748Z" 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 {{%link href="/en/job-scheduling/help/cron/introduction/" %}}cron{{%/link%}}. This can be done by passing the {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-id" %}}{{%badge%}}cron id{{%/badge%}}{{%/link%}} or name to the {{%badge%}}deleteCron(){{%/badge%}} SDK method. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can use this method to update details of both {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-Defined Crons{{%/link%}} and {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}const deletedCronWithName = await jobScheduling.CRON.deleteCron('test_cron'); // delete cron with name const deletedCronWithId = await jobScheduling.CRON.deleteCron('1234567890'); // delete cron with Id{{%/code%}} ##### 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-03-18T07:41:08.748Z" 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 {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}Job Pools{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const allJobpools = await jobScheduling.getAllJobpool(); // get all jobpool's details{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.748Z" 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 {{%badge%}}getJobpool(){{%/badge%}} SDK method. {{%code class="language-javascript" scroll="set-scroll" %}}const jobpoolWithName = await jobScheduling.getJobpool('test'); // get jobpool with jobpool name const jobpoolWithId = await jobScheduling.getJobpool('123456789'); // get jobpool with jobpool Id{{%/code%}} ##### 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-03-18T07:41:08.748Z" 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 {{%link href="/en/serverless/help/functions/job-functions/" %}}Job Functions{{%/link%}}, Webhooks, {{%link href="/en/serverless/help/circuits/introduction/" %}}Circuits{{%/link%}}, and {{%link href="/en/serverless/help/appsail/introduction/" %}}App Sail{{%/link%}} services. You can also pass optional arguments in the form of JSON key value pairs. SDK snippet to create and submit Job to trigger: {{%tabs%}} {{%tab "Job Function" %}} {{%code class="language-javascript" scroll="set-scroll" %}}// 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) }); {{%/code%}} {{%/tab%}} {{%tab "Circuit" %}} {{%code class="language-javascript" scroll="set-scroll" %}}// 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) }); {{%/code%}} {{%/tab%}} {{%tab "Webhook" %}} {{%code class="language-javascript" scroll="set-scroll" %}}// 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) }); {{%/code%}} {{%/tab%}} {{%tab "AppSail" %}} {{%code class="language-javascript" scroll="set-scroll" %}}// 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) });{{%/code%}} {{%/tab%}} {{%/tabs%}} -------------------------------------------------------------------------------- title: "Get Job Details" description: "This page describes the Node.js method to get job details with sample code snippets." last_updated: "2026-03-18T07:41:08.748Z" 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 {{%link href="/en/job-scheduling/help/job/introduction/" %}}job{{%/link%}} that has been submitted to a {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job Pool{{%/link%}}. You need to pass the {{%link href="/en/job-scheduling/help/job/key-concepts/#job-id" %}}{{%badge%}}Job Id{{%/badge%}}{{%/link%}} to the {{%badge%}}getJob(){{%/badge%}} SDK method. {{%code class="language-python" scroll="set-scroll" %}}const job = await jobScheduling.JOB.getJob('1234567890'); // get job details with job Id{{%/code%}} -------------------------------------------------------------------------------- title: "Delete Job" description: "This page describes the Node.js method to delete a job with sample code snippets." last_updated: "2026-03-18T07:41:08.748Z" 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 {{%link href="/en/job-scheduling/help/job/introduction/" %}}job{{%/link%}} that is in the process of being executed in a {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job Pool{{%/link%}}. You need to pass the Job Id to the {{%badge%}}deleteJob(){{%/badge%}} SDK method. {{%code class="language-javascript" scroll="set-scroll" %}}const deletedJob = await jobScheduling.JOB.deleteJob('1234567890'); // delete job with job Id{{%/code%}} #### 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-03-18T07:41:08.748Z" 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 {{%link href="/en/pipelines/help/pipelines/introduction" %}}Catalyst Pipelines{{%/link%}} implements a CI/CD approach to enable automation of building, testing, and deployment of web or mobile applications to preferred environments. You can {{%link href="/en/pipelines/help/pipelines/create-a-pipeline" %}}create a pipeline{{%/link%}} 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 {{%badge%}}app{{%/badge%}} reference used in the code below is the {{%link href="/en/sdk/nodejs/v2/overview/#initialize-the-sdk" %}}Node object{{%/link%}} returned as a response during SDK initialization. You can create a new {{%badge%}}pipelines_service{{%/badge%}} instance as shown below. {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}const pipelines_service = app.pipeline(){{%/code%}} 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-03-18T07:41:08.748Z" 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 {{%badge%}}getPipelineDetails(){{%/badge%}} 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 {{%badge%}}pipelines_service{{%/badge%}} reference used below is already defined in {{%link href="/en/sdk/nodejs/v2/pipelines/get-pipeline-instance" %}}this component instance page{{%/link%}}. {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}let pipline_details = pipelines_service.getPipelineDetails("16965000000019146"){{%/code%}} A sample response is shown below: {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}{ "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 } } {{%/code%}} -------------------------------------------------------------------------------- title: "Execute Pipeline" description: "This page describes the method to run the Catalyst Pipeline manually." last_updated: "2026-03-18T07:41:08.749Z" 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 {{%badge%}}runPipeline(){{%/badge%}} 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 {{%badge%}}pipelines_service{{%/badge%}} reference used below is already defined in {{%link href="/en/sdk/nodejs/v2/pipelines/get-pipeline-instance" %}}this component instance page{{%/link%}}. {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}let execution_details = pipelines_service.runPipeline("8431000000162051", main,{"EVENT": "push", "URL":"https://www.google.com"}){{%/code%}} A sample response is shown below: {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}{ "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" } } {{%/code%}} #### 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-03-18T07:41:08.749Z" 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 {{%link href="/en/quickml/" %}}Catalyst QuickML{{%/link%}} 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 {{%link href="/en/quickml/help/pipeline-endpoints/" %}}QuickML endpoint{{%/link%}}, 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%}}{{%bold class="bold-primary" %}}Note:{{%/bold%}} 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. {{%/note%}} The {{%badge%}}quickml{{%/badge%}} 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 {{%badge%}}endpoint_key{{%/badge%}} 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 {{%badge%}}predict(){{%/badge%}} method for execution. {{%code class="language-javascript" scroll="set-scroll" %}}// 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);{{%/code%}} The syntax of the output received is shown below: {{%code class="language-javascript" scroll="set-scroll" %}}{ 'status': 'success', 'result': ["results....."] }{{%/code%}} #### 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-03-18T07:41:08.749Z" 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 {{%link href="/en/serverless/help/appsail/introduction/" %}}Catalyst AppSail{{%/link%}} 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 {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/" %}}Catalyst-managed runtimes{{%/link%}}. AppSail supports frameworks of Node.js such as React, Fastify, Express, etc. You can {{%link href="/en/serverless/help/appsail/help-guides/introduction/" %}}access help guides{{%/link%}} 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: {{%code class="language-json"%}}npm install zcatalyst-sdk-node --save{{%/code%}} This will install the latest supported version of the Node.js SDK. You can also install a specific supported version in this way: {{%code class="language-json"%}}npm install zcatalyst-sdk-node@2.1.1 --save{{%/code%}} 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 {{%badge%}}initialize(){{%/badge%}} method. {{%code class="language-javascript"%}}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){{%/code%}} Refer {{%link href="/en/sdk/nodejs/v2/overview/"%}}Catalyst Node.js SDK help{{%/link%}} for details. The SDK documentation also provides sample code snippets for all supported functionalities. <br> ##### 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-03-18T07:41:08.749Z" 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 {{%link href="/en/serverless/help/circuits/introduction/" %}}Catalyst Circuits{{%/link%}} 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%}}{{%bold class="bold-primary" %}}Note:{{%/bold%}} Circuits is currently not available to Catalyst users accessing from the EU, AU, IN, JP, SA or CA data centers.{{%/note%}} 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 {{%badge%}}Execution ID{{%/badge%}} saved in the execution history of the circuit. The {{%badge%}}circuit{{%/badge%}} reference used below is defined in the {{%link href="/en/sdk/nodejs/v2/serverless/circuits/get-a-component-instance/" %}}component instance page{{%/link%}}. {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}//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 {{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node.js {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}{ 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" } }{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.749Z" 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 {{%badge%}}circuit{{%/badge%}} reference can be created in the following way. This does not fire a server-side call. {{%note%}}{{%bold class="bold-primary" %}}{{%/bold%}} Circuits is currently not available to Catalyst users accessing from the EU, AU, IN, JP, SA or CA data centers.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}//Get a circuit instance let circuit = app.circuit();{{%/code%}} ##### 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-03-18T07:41:08.749Z" 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. {{%code class="language-javascript"%}}//Get a function instance let functions = app.functions();{{%/code%}} -------------------------------------------------------------------------------- title: "Execute Function" description: "This page describes the method to execute functions in your NodeJS application with sample code snippets." last_updated: "2026-03-18T07:41:08.749Z" 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 {{%link href="/en/sdk/nodejs/v2/serverless/functions/get-component-instance" %}}component instance.{{%/link%}} #### 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. {{%bold%}}(function parameters){{%/bold%}} The configuration can be set using the following code snippet: {{%code class="language-javascript" scroll="set-scroll" %}}//Create Configuration for function Execution let conf = { args: { Name: 'Amelia' } }{{% /code%}} ### Execute function The unique function ID is passed as a parameter to the {{%badge%}}execute(){{%/badge%}} 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. {{%code class="language-javascript" scroll="set-scroll" %}}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); }); {{% /code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} You can also pass the function name as a string to the {{%badge%}}execute(){{%/badge%}} method instead of using the function ID.{{%/note%}} #### SmartBrowz -------------------------------------------------------------------------------- title: "Create SmartBrowz Instance" description: "This page describes the method to create a SmartBrowz instance" last_updated: "2026-03-18T07:41:08.749Z" 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 {{%link href="/en/smartbrowz/getting-started/introduction/" %}}Catalyst SmartBrowz{{%/link%}} components allows you to control, manage a {{%link href="/en/smartbrowz/help/headless/introduction/" %}}headless browser{{%/link%}} and perform a variety of operations such as {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}generating PDFs and screenshots{{%/link%}} of webpages, {{%link href="/en/smartbrowz/help/templates/create-templates/" %}}creating templates{{%/link%}} to generate PDFs with dynamic content, {{%link href="/en/smartbrowz/help/dataverse/introduction/" %}}extracting data{{%/link%}} 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: {{%code class="language-javascript" scroll="set-scroll" %}}const smartbrowz = app.smartbrowz();{{%/code%}} 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-03-18T07:41:08.749Z" 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 {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}PDF & Screenshot{{%/link%}} 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 {{%link href="/en/smartbrowz/help/templates/create-templates/" %}}Templates{{%/link%}} as your input. ### Generate Visual Documents Using Template {{%code class="language-javascript" scroll="set-scroll" %}}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);{{%/code%}} ### Generate PDF From HTML {{%code class="language-javascript" scroll="set-scroll" %}}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);{{%/code%}} ### Generate Screenshot from URL {{%code class="language-javascript" scroll="set-scroll" %}}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);{{%/code%}} In the PDF & Screenshot section of the console, you can directly test this component using the {{%link href="/en/smartbrowz/help/pdfnscreenshot/implementation/#generating-pdf--screenshots-through-playground" %}}Playground feature{{%/link%}}, and you can also {{%link href="/en/smartbrowz/help/pdfnscreenshot/implementation/#generating-pdf--screenshots-through-code" %}}copy the SDK{{%/link%}} directly from the console. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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 {{%bold%}}Catalyst SmartBrowz{{%/bold%}} 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.{{%/note%}} -------------------------------------------------------------------------------- title: "Dataverse" description: "This page describes the SDK methods for Catalyst Dataverse modules." last_updated: "2026-03-18T07:41:08.749Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/smartbrowz/dataverse/" service: "SmartBrowz" related: - Dataverse (/en/smartbrowz/help/dataverse/introduction/) -------------------------------------------------------------------------------- # Dataverse {{%link href="/en/smartbrowz/help/dataverse/introduction/" %}}Dataverse{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} We can only assure to provide you with publicly available information available over the web.{{%/note%}} ### 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 {{%badge%}}getEnrichedLead(){{%/badge%}} method, in order to retrieve the information. {{%note%}}{{%bold%}}Note:{{%/bold%}} You must provide the value for at least one key in the {{%badge%}}getEnrichedLead(){{%/badge%}} method.{{%/note%}} The {{%badge%}}smartbrowz{{%/badge%}} reference used here is the component instance that we created {{%link href="/en/sdk/nodejs/v2/smartbrowz/create-smartbrowz-instance" %}}earlier{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const response = await smartbrowz.getEnrichedLead({ 'leadName':'zoho', 'websiteUrl':'https://www.zoho.com', 'email':'sales@zohocorp.com' }); console.log(response);{{%/code%}} The response is shown below: {{%code class="language-javascript" scroll="set-scroll" %}}[{ "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" } ]{{%/code%}} ### 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 {{%badge%}}findTechStack(){{%/badge%}} method, in order to retrieve the information. The {{%badge%}}smartbrowz{{%/badge%}} reference used here is the component instance that we created {{%link href="/en/sdk/nodejs/v2/smartbrowz/create-smartbrowz-instance" %}}earlier{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const response = await smartbrowz.findTechStack('https://www.zoho.com'); console.log(response);{{%/code%}} The response is shown below: {{%code class="language-javascript" scroll="set-scroll" %}}[ { "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" } ]{{%/code%}} ### 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 {{%badge%}}getSimilarCompanies(){{%/badge%}} method. The {{%badge%}}smartbrowz{{%/badge%}} reference used here is the component instance that we created {{%link href="/en/sdk/nodejs/v2/smartbrowz/create-smartbrowz-instance" %}}earlier{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const response = await smartbrowz.getSimilarCompanies({ 'leadName':'zoho', 'websiteUrl':'https://www.zoho.com' }); console.log(response);{{%/code%}} {{%code class="language-javascript" scroll="set-scroll" %}}[ "Cybage Software Pvt. Ltd.", "Google LLC", "Chargebee, Inc.", "Infosys Ltd.", 'GlobalLogic Inc.', 'Persistent Systems Ltd.', 'DELTA ELECTRONICS Inc.', 'Salesforce, Inc.' ]{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} 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 {{%bold%}}Catalyst SmartBrowz{{%/bold%}} 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.{{%/note%}} ##### 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-03-18T07:41:08.750Z" 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 {{%link href="/en/smartbrowz/help/browser-grid/introduction/" %}}Browser Grid{{%/link%}} 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>{{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/" %}}Get Browser Grid Instance{{%/link%}}</td> <td>{{%bold%}}Admin{{%/bold%}}</td> </tr> <tr> <td>Browser Grid Operations</td> <td> <ul> <li>{{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-all-grids/" %}}Get all browser grids{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-specific-grid/" %}}Get specific browser grid{{%/link%}}</li> <ul> <li>{{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-specific-grid/#using-the-grid-id" %}}Get specific browser grid with ID{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-grid/#using-the-grids-name" %}}Get specific browser grid with name{{%/link%}}</li> </ul> <li>{{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-specific-node/" %}}Get nodes of a grid{{%/link%}}</li> <ul> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-node/#using-the-grid-id" %}}Using Grid ID{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-specific-node/#using-the-grids-name" %}}Using Grid Name{{%/link%}}</li> </ul> <li>{{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/stop-grid/" %}}Stop browser grid{{%/link%}}</li> <ul> <li>{{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/stop-grid/#using-the-grid-id" %}}Using Grid ID{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/stop-grid/#using-the-grids-name" %}}Using Grid Name{{%/link%}}</li> </ul> </ul> </td> <td>{{%bold%}}Admin{{%/bold%}}</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-03-18T07:41:08.750Z" 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. {{%code class="language-js" scroll="set-scroll"%}}const grid = app.SmartBrowz().browserGrid(); // Get Browser Grid instance{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.750Z" 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 {{%badge%}}getGrid(){{%/badge%}} SDK method to get the grid details of all the browser grids that are present in your project. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-js" scroll="set-scroll"%}}const gridList = await grid.getGrid(); // return details of all grids console.log(gridList); {{%/code%}} ### Example of Expected Response {{%code class="language-json" scroll="set-scroll"%}}{ "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 } ] }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.750Z" 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 {{%badge%}}getGrid(){{%/badge%}} SDK method. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the {{%badge%}}getGrid(){{%/badge%}} SDK method. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-js" scroll="set-scroll"%}}const gridDetails = await grid.getGrid("3970000000005013"); // get grid details using the Grid ID console.log(gridDetails); {{%/code%}} ### Using the Grid's Name You can pass the name of the required browser grid to the {{%badge%}}getGrid(){{%/badge%}} SDK method. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-js" scroll="set-scroll"%}}const gridDetails = await grid.getGrid("Selenium_Grid"); // get grid details using the name of the grid console.log(gridDetails); {{%/code%}} ### Example of Expected Response {{%code class="language-json" scroll="set-scroll"%}}{ "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 } }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.750Z" 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 {{%badge%}}getGridNodes(){{%/badge%}} SDK method, you can get the details of a node in that grid. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the {{%badge%}}getGridNodes(){{%/badge%}} SDK method, to get its node details. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-js" scroll="set-scroll"%}}const nodeDetails = await grid.getGridNodes("3970000000005013"); // get details of the node using its Grid ID{{%/code%}} ### Using the Grid's Name You can pass the name of the required browser grid to the {{%badge%}}getGridNodes(){{%/badge%}} SDK method, to get its node details. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-js" scroll="set-scroll"%}}const nodeDetails = await grid.getGridNodes("Selenium_Grid"); // get details of the node using the grid's name{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.750Z" 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 {{%badge%}}stopGrid(){{%/badge%}} SDK method, you can terminate all executions and stop the browser grid. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the {{%badge%}}stopGrid(){{%/badge%}} SDK method, to stop the grid, and terminate all its executions. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-js" scroll="set-scroll"%}}const gridTerminate = await grid.stopGrid("3970000000005013"); // stop the grid using the Grid ID{{%/code%}} ### Using the Grid's Name You can pass the name of the required browser grid to the {{%badge%}}stopGrid(){{%/badge%}} SDK method, to stop the grid, and terminate all its executions. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-js" scroll="set-scroll"%}}const gridTerminate = await grid.stopGrid("Selenium_Grid"); // stop the grid using the name of the grid{{%/code%}} ### Example of Expected Response {{%code class="language-json" scroll="set-scroll"%}}{ "status": "success", "data": true }{{%/code%}} #### 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-03-18T07:41:08.750Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/zia-services/get-component-instance/" service: "Zia Services" -------------------------------------------------------------------------------- ### Get component instance The {{%badge%}}zia{{%/badge%}} reference can be created in the following way. This does not fire a server-side call. {{%code class="language-javascript" scroll="set-scroll" %}}//Get a zia instance let zia = app.zia();{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.750Z" 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 {{%link href="/en/zia-services/help/optical-character-recognition/introduction" %}}Zia Optical Character Recognition{{%/link%}} 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 {{%link href="/en/api/code-reference/zia-services/ocr/#OCR" %}}check the list of languages and language codes from the API documentation{{%/link%}} {{%note%}}{{%bold class="bold-primary" %}}Note:{{%/bold%}}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.{{%/note%}} 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. {{%bold%}}Allowed file formats:{{%/bold%}} ._jpg_, ._jpeg_, ._png_, ._tiff_, ._bmp_, ._pdf_ {{%bold%}}File size limit:{{%/bold%}} 20 MB You must pass the file path, model type, and languages as arguments to the {{%badge%}}extractOpticalCharacters(){{%/badge%}} method. However, the model type and language values are optional. By default, it is passed as the {{%badge%}}OCR{{%/badge%}} model type, and the languages are automatically detected if they are not specified. The {{%badge%}}zia{{%/badge%}} reference used below is defined in the {{%link href="/en/sdk/nodejs/v2/zia-services/get-component-instance" %}}component instance page{{%/link%}}. The promise returned here is resolved to a JSON object. {{%code class="language-javascript" scroll="set-scroll" %}}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);{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node js {{%code class="language-json" scroll="set-scroll" %}}{ "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" }{{% /code%}} -------------------------------------------------------------------------------- title: "AutoML" description: "This page describes the method to use the AutoML feature to train data models and predict their outcomes in your NodeJS application with sample code snippets" last_updated: "2026-03-18T07:41:08.750Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/zia-services/automl/" service: "Zia Services" related: - AutoML - API (/en/api/code-reference/zia-services/automl/#AutoML) -------------------------------------------------------------------------------- # AutoML {{%link href="/en/zia-services/help/automl/introduction/" %}}Zia AutoML{{%/link%}} 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. Refer to the {{%link href="/en/api/code-reference/zia-services/automl/#AutoML" %}}API documentation{{%/link%}} for the request and response formats. You can 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. {{%note%}}{{%bold%}}Note:{{%/bold%}} AutoML is currently not available to Catalyst users accessing from the EU, AU, IN, JP, SA or CA data centers. {{%/note%}} The {{%badge%}}zia{{%/badge%}} reference used below is defined in the {{%link href="/en/sdk/nodejs/v2/zia-services/get-component-instance" %}}component instance page{{%/link%}}. The promise returned here is resolved to a JSON object. {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}var zia = app.zia(); //Provide the model ID of the model zia.automl(modelId, { //Provide inputs for the columns and its values of the model "column_1" : "column1_value", "column_2" : "column2_value", "column_3" : "column3_value", "column_4" : "column4_value", "column_5" : "column5_value", }).then((result) => { console.log(result); }) .catch((err) => console.log(err.toString())); //Push errors to Catalyst Logs{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node js {{%code class="language-javascript" scroll="set-scroll" %}}{ classification_result: { Dollars: 0, Percentage: 80, "Dollars (millions)": 20 } }{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.750Z" 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 {{%link href="/en/zia-services/help/face-analytics/introduction/" %}}Zia Face Analytics{{%/link%}} 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 {{%link href="/en/api/code-reference/zia-services/face-analytics/#FaceAnalytics" %}}API documentation{{%/link%}} for the request and response formats. The {{%badge%}}analyseFace(){{%/badge%}} method accepts the input image as its argument. You can also specify the analysis mode as {{%badge%}}basic{{%/badge%}}, {{%badge%}}moderate{{%/badge%}}, or {{%badge%}}advanced{{%/badge%}}. You can also specify the attributes {{%badge%}}age{{%/badge%}}, {{%badge%}}smile{{%/badge%}}, or {{%badge%}}gender{{%/badge%}} as {{%badge%}}true{{%/badge%}} to detect or {{%badge%}}false{{%/badge%}} to not detect. These values are optional. All attributes are detected and the {{%badge%}}advanced{{%/badge%}} 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 {{%badge%}}zia{{%/badge%}} reference used below is defined in the {{%link href="/en/sdk/nodejs/v2/zia-services/get-component-instance" %}}component instance page.{{%/link%}} The promise returned here is resolved to a JSON object. {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}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{{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-json line-numbers"%}} { "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" } } ] } {{% /divtag %}} {{% divtag id="V1" class="language-json line-numbers"%}} { "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" } } ] } {{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.751Z" 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 {{%link href="/en/zia-services/help/image-moderation/introduction" %}}Image Moderation{{%/link%}} 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 {{%link href="/en/api/code-reference/zia-services/image-moderation/#ImageModeration" %}}API documentation{{%/link%}} for the request and response formats. You can set the moderation mode as {{%badge%}}BASIC{{%/badge%}}, {{%badge%}}MODERATE{{%/badge%}}, or {{%badge%}}ADVANCED{{%/badge%}} optionally. The image is processed in the {{%badge%}}ADVANCED{{%/badge%}} mode by default. The response returns the probability of each criteria with their confidence scores, and the prediction of the image being {{%badge%}}safe_to_use{{%/badge%}} or {{%badge%}}unsafe_to_use{{%/badge%}}. The {{%badge%}}zia{{%/badge%}} reference used below is defined in the {{%link href="/en/sdk/nodejs/v2/zia-services/get-component-instance" %}}component instance page.{{%/link%}}The promise returned here is resolved to a JSON object. {{%code class="language-javascript" scroll="set-scroll" %}}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{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node js {{%code class="language-json" scroll="set-scroll" %}}{"probability":{"racy":"0.09","nudity":"0.06"},"confidence":"0.85","prediction":"safe_to#_use"}{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.751Z" 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 {{%link href="/en/zia-services/help/object-recognition/introduction" %}}Object Recognition{{%/link%}} 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 {{%link href="/en/api/code-reference/zia-services/object-recognition/#ObjectRecognition" %}}API documentation{{%/link%}} for the request and response formats. The {{%badge%}}detectObject(){{%/badge%}} 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 {{%badge%}}zia{{%/badge%}} reference used below is defined in the {{%link href="/en/sdk/nodejs/v2/zia-services/get-component-instance" %}}component instance page.{{%/link%}} The promise returned here is resolved to a JSON object. {{%code class="language-javascript" scroll="set-scroll" %}}let fs = require('fs'); let result = await zia.detectObject(fs.createReadStream('./sampimage.webp')) ; console.log(result);{{%/code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-json line-numbers"%}} { "objects":[ { "co_ordinates":[ "322", "125", "708", "1201" ], "object_type":"person", "confidence":"99.82" } ] } {{% /divtag %}} {{% divtag id="V1" class="language-json line-numbers"%}} { "objects":[ { "co_ordinates":[ 322, 125, 708, 1201 ], "object_type":"person", "confidence":"99.82" } ] } {{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.751Z" 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 {{%link href="/en/zia-services/help/barcode-scanner/introduction" %}}Zia Barcode Scanner{{%/link%}} 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 {{%link href="/en/api/code-reference/zia-services/barcode-scanner/#BarcodeScanner" %}}API documentation{{%/link%}} for the request and response formats. You can specify the barcode format using {{%badge%}}setFormat{{%/badge%}}. If you enter the format as {{%badge%}}ALL{{%/badge%}}, Barcode Scanner automatically detects the format. It provides the decoded information as the response. The {{%badge%}}zia{{%/badge%}} reference used below is defined in the {{%link href="/en/sdk/nodejs/v2/zia-services/get-component-instance" %}}component instance page.{{%/link%}}The promise returned here is resolved to a JSON object. {{%code class="language-javascript" scroll="set-scroll" %}}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{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node js {{%code class="language-json" scroll="set-scroll" %}} { "content": "https://demo.dynamsoft.com/dbr_wasm/barcode_reader_javascript.html" }{{% /code%}} ##### 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-03-18T07:41:08.751Z" 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 {{%link href="/en/zia-services/help/identity-scanner/introduction" %}}Identity Scanner{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ### 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} 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 {{%badge%}}compareFace(){{%/badge%}} method processes both these images. The {{%badge%}}zia{{%/badge%}} reference used here is defined in the {{%link href="/en/sdk/nodejs/v2/zia-services/get-component-instance" %}}component instance page{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} {{%bold%}}Allowed file formats:{{%/bold%}} _.webp_, _.jpeg_, _.png_ {{%bold%}}File size limit:{{%/bold%}} 10 MB The result of the comparison is set to {{%bold%}}{{%badge%}}true{{%/badge%}}{{%/bold%}} if the faces match, or {{%bold%}}{{%badge%}}false{{%/badge%}}{{%/bold%}} 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 {{%badge%}}true{{%/badge%}}. {{%code class="language-javascript" scroll="set-scroll" %}}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{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node js {{%code class="language-javascript" scroll="set-scroll" %}}{ confidence: 0.9464, matched: "true" } {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.751Z" 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 {{%link href="/en/zia-services/help/identity-scanner/introduction" %}}Identity Scanner{{%/link%}} 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. {{%bold%}}Note:{{%/bold%}} 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 {{%badge%}}AADHAAR{{%/badge%}} 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%}}{{%bold class="bold-primary" %}}Note:{{%/bold%}}Document Processing is only relevant to Indian users and is {{%bold%}}only available in the IN DC{{%/bold%}}. 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 {{%link href="/en/sdk/nodejs/v2/zia-services/ocr" %}}general OCR component{{%/link%}} to read and process textual content.{{%/note%}} You must provide the path to the image files of the front and back of the Aadhaar card through {{%badge%}}createReadStream{{%/badge%}}, as shown in the code below.The {{%badge%}}zia{{%/badge%}} reference used below is defined in the {{%link href="/en/sdk/nodejs/v2/zia-services/get-component-instance" %}}component instance page{{%/link%}}. The promise returned here is resolved to a JSON object. {{%note%}}{{%bold class="bold-primary" %}}Note:{{%/bold%}} 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.{{%/note%}} 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 {{%badge%}}tam{{%/badge%}} and {{%badge%}}eng{{%/badge%}} as the languages. You can check the list of languages and language codes from the {{%link href="/en/api/code-reference/zia-services/identity-scanner/aadhaar/#Aadhaar" %}}API documentation{{%/link%}}. {{%bold%}}Allowed file formats:{{%/bold%}} _.webp_, _.jpeg_, _.png_, _.bmp_, _.tiff_, _.pdf_<br /> {{%bold%}}File size limit:{{%/bold%}} 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. {{%code class="language-javascript" scroll="set-scroll" %}}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{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Nodejs {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}{ 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" } }" } {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.751Z" 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 {{%link href="/en/zia-services/help/identity-scanner/introduction" %}}Identity Scanner{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}}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.{{%/note%}} ### PAN The {{%badge%}}PAN{{%/badge%}} 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%}}{{%bold%}}Note:{{%/bold%}}Document Processing is only relevant to Indian users and is {{%bold%}}only available in the IN DC{{%/bold%}}. 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 {{%link href="/en/sdk/nodejs/v2/zia-services/ocr" %}}general OCR component{{%/link%}} to read and process textual content.{{%/note%}} You must provide the path to the image file of the front side of the PAN card, as shown in the code below. The {{%badge%}}zia{{%/badge%}} reference used below is defined in the {{%link href="/en/sdk/nodejs/v2/zia-services/get-component-instance" %}}component instance page{{%/link%}}. {{%bold%}}Allowed file formats:{{%/bold%}} _.webp_, _.jpeg_, _.png_<br /> {{%bold%}}File size limit:{{%/bold%}} 15 MB You must specify the model type as {{%badge%}}PAN{{%/badge%}} using {{%badge%}}modelType{{%/badge%}}. The {{%badge%}}PAN{{%/badge%}} 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. {{%code class="language-javascript" scroll="set-scroll" %}}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 });{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Nodejs {{%code class="language-javascript" scroll="set-scroll" %}}{ date_of_birth: "03/04/1982", last_name: "VASUDEV MAHTO", pan: "ANRPM2537J", first_name: "PRAMOD KUMAR MAHTO" }{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.751Z" 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 {{%link href="/en/zia-services/help/identity-scanner/introduction" %}}Identity Scanner{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ### Passbook The {{%badge%}}PASSBOOK{{%/badge%}} 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%}}{{%bold%}}Note:{{%/bold%}} Document Processing is only relevant to Indian users and is {{%bold%}}only available in the IN DC{{%/bold%}}. 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 {{%link href="/en/sdk/nodejs/v2/zia-services/ocr" %}}general OCR component{{%/link%}} to read and process textual content.{{%/note%}} 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 {{%link href="/en/api/code-reference/zia-services/ocr/#OCR" %}}API documentation{{%/link%}}. You must provide the path to the image of the front page of the passbook, as shown in the code below. {{%bold%}}Allowed file formats:{{%/bold%}} _.webp_, _.jpeg_, _.png_, _.bmp_, _.tiff_, _.pdf_<br /> {{%bold%}}File size limit:{{%/bold%}} 15 MB You must specify the model type as {{%badge%}}PASSBOOK{{%/badge%}} using the key {{%badge%}}modelType{{%/badge%}}. 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%}}{{%bold%}}Note:{{%/bold%}} Identity Scanner will return the response only in English, irrespective of the languages present in the passbook.{{%/note%}} The {{%badge%}}zia{{%/badge%}} reference used below is defined in the {{%link href="/en/sdk/nodejs/v2/zia-services/get-component-instance" %}}component instance page{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}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 });{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node js {{%code class="language-javascript" scroll="set-scroll" %}}{ 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" }" }{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.751Z" 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 {{%link href="/en/zia-services/help/identity-scanner/introduction" %}}Identity Scanner{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ### Cheque The {{%badge%}}CHEQUE{{%/badge%}} 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%}}{{%bold%}}Note:{{%/bold%}} Document Processing is only relevant to Indian users and is {{%bold%}}only available in the IN DC{{%/bold%}}. 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 {{%link href="/en/sdk/nodejs/v2/zia-services/ocr/" %}}general OCR component{{%/link%}} to read and process textual content.{{%/note%}} You must provide the path to the image file of the front page of the chequebook, as shown in the code below. The {{%badge%}}CHEQUE{{%/badge%}} model can only process text in English by default. No other languages are supported. {{%bold%}}Allowed file formats:{{%/bold%}} _.webp_, _.jpeg_, _.png_<br /> {{%bold%}}File size limit:{{%/bold%}} 15 MB You must specify the model type as {{%badge%}}CHEQUE{{%/badge%}} using {{%badge%}}modelType(){{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}}Zia only processes cheques of the CTS-2010 format.{{%/note%}} The {{%badge%}}zia{{%/badge%}} reference used below is defined in the {{%link href="/en/sdk/nodejs/v2/zia-services/get-component-instance" %}}component instance page{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}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 });{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Nodejs {{%code class="language-javascript" scroll="set-scroll" %}} { date: "15/11/2014", account_number: "89323223232222", amount: "10615", branch_name: "ANNA NAGAR", bank_name: "ABX BANK", ifsc: "BB9033232" } {{% /code%}} ##### 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-03-18T07:41:08.751Z" 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 {{%link href="/en/zia-services/help/text-analytics/introduction" %}}Zia Sentiment Analysis{{%/link%}} 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 {{%bold%}}positive{{%/bold%}}, {{%bold%}}negative{{%/bold%}}, or {{%bold%}}neutral{{%/bold%}}. 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 {{%bold%}}1500 characters{{%/bold%}} in a single request. The input text is passed to {{%badge%}}getSentimentAnalysis(){{%/badge%}}. 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 {{%badge%}}zia{{%/badge%}} reference used below is defined in the {{%link href="/en/sdk/nodejs/v2/zia-services/get-component-instance" %}}component instance page{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}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()));{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node js {{%code class="language-json line-numbers" scroll="set-scroll" %}}"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 } ]{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.752Z" 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 {{%link href="/en/zia-services/help/text-analytics/introduction" %}}Zia Named Entity Recognition{{%/link%}} 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 {{%link href="/en/zia-services/help/text-analytics/introduction" %}}here{{%/link%}} 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 {{%bold%}}1500 characters{{%/bold%}} in a single request, as shown below. The text is passed to {{%badge%}}getNERPrediction(){{%/badge%}}. The {{%badge%}}zia{{%/badge%}} reference used below is defined in the {{%link href="/en/sdk/nodejs/v2/zia-services/get-component-instance" %}}component instance page{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}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()));{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node js {{%code class="language-json line-numbers" scroll="set-scroll" %}}"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" } ] }{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.752Z" 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 {{%link href="/en/zia-services/help/text-analytics/introduction" %}}Zia Keyword Extraction{{%/link%}} 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: {{%bold%}}{{%badge%}}Keywords{{%/badge%}}{{%/bold%}} and {{%bold%}}{{%badge%}} Keyphrases{{%/badge%}}{{%/bold%}}. 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 {{%bold%}}1500 characters{{%/bold%}} in a single request, as shown below. The text is passed to {{%badge%}}getKeywordExtraction(){{%/badge%}}. The keywords and keyphrases are then fetched as individual lists. The {{%badge%}}zia{{%/badge%}} reference used below is defined in the {{%link href="/en/sdk/nodejs/v2/zia-services/get-component-instance" %}}component instance page{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}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()));{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node js {{%code class="language-json line-numbers" scroll="set-scroll" %}}"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" ] }{{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.752Z" 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 {{%link href="/en/zia-services/help/text-analytics/introduction" %}}Text Analytics{{%/link%}} as a whole includes a combination of all three features specified in the previous sections: {{%bold%}}Sentiment Analysis{{%/bold%}}, {{%bold%}}Named Entity Recognition{{%/bold%}}, and {{%bold%}}Keyword Extraction{{%/bold%}}. 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 {{%bold%}}1500 characters{{%/bold%}} in a single request, as shown below. The text is passed to {{%badge%}}getTextAnalytics(){{%/badge%}}. 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 {{%badge%}}zia{{%/badge%}} reference used below is defined in the {{%link href="/en/sdk/nodejs/v2/zia-services/get-component-instance" %}}component instance page{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}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));{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. {{%code class="language-json line-numbers" scroll="set-scroll" %}}[ { "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" } ] } }{{% /code%}} ## 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-03-18T07:41:08.752Z" 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 {{%link href="/en/serverless/help/functions/introduction"%}}Catalyst Serverless functions{{%/link%}} and build your application logic upon them easily. You can create {{%link href="/en/serverless/help/functions/basic-io"%}}Basic I/O{{%/link%}}, {{%link href="/en/serverless/help/functions/advanced-io"%}}Advanced I/O{{%/link%}}, {{%link href="/en/serverless/help/functions/cron-functions"%}}Cron{{%/link%}}, {{%link href="/en/serverless/help/functions/event-functions"%}}Event{{%/link%}} or {{%link href="/en/serverless/help/functions/integration-functions"%}}Integration{{%/link%}} 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 {{%link href="/en/sdk/python/v1/components"%}}components{{%/link%}}, {{%link href="/en/sdk/python/v1/setup"%}}configurations{{%/link%}} of the SDK package, the {{%link href="/en/sdk/python/v1/sdk-scopes"%}}scopes{{%/link%}} 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-03-18T07:41:08.753Z" 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 **{{%badge%}}zcatalyst-sdk{{%/badge%}}** 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 {{%badge%}}zcatalyst-sdk{{%/badge%}} package allows you to implement the components of the following Catalyst services: ### Cloud Scale * {{%link href="/en/cloud-scale/help/authentication/introduction"%}}Authentication{{%/link%}} * {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} * {{%link href="/en/cloud-scale/help/file-store/introduction"%}}File Store{{%/link%}} * {{%link href="/en/cloud-scale/help/stratus/introduction"%}}Stratus{{%/link%}} * {{%link href="/en/cloud-scale/help/nosql/introduction"%}}No SQL{{%/link%}} * {{%link href="/en/cloud-scale/help/search-integration/introduction/"%}}Search{{%/link%}} * {{%link href="/en/cloud-scale/help/cache/introduction"%}}Cache{{%/link%}} * {{%link href="/en/cloud-scale/help/mail/introduction"%}}Mail{{%/link%}} * {{%link href="/en/cloud-scale/help/push-notifications/introduction"%}}Push Notifications{{%/link%}} ### Serverless * {{%link href="/en/serverless/help/functions/introduction"%}}Functions{{%/link%}} * {{%link href="/en/serverless/help/appsail/introduction"%}}AppSail{{%/link%}} * {{%link href="/en/serverless/help/circuits/introduction"%}}Circuits{{%/link%}} ### Zia Services * {{%link href="/en/zia-services/help/optical-character-recognition/introduction"%}}OCR{{%/link%}} * {{%link href="/en/zia-services/help/automl/introduction"%}}AutoML{{%/link%}} * {{%link href="/en/zia-services/help/face-analytics/introduction"%}}Face Analytics{{%/link%}} * {{%link href="/en/zia-services/help/identity-scanner/introduction"%}}Identity Scanner{{%/link%}} * {{%link href="/en/zia-services/help/image-moderation/introduction"%}}Image Moderation{{%/link%}} * {{%link href="/en/zia-services/help/object-recognition/introduction"%}}Object Recognition{{%/link%}} * {{%link href="/en/zia-services/help/barcode-scanner/introduction"%}}Barcode Scanner{{%/link%}} * {{%link href="/en/zia-services/help/text-analytics/introduction"%}}Text Analytics{{%/link%}} ### Other Services * {{%link href="/en/job-scheduling/getting-started/introduction"%}}Job Scheduling{{%/link%}} * {{%link href="/en/pipelines/getting-started/introduction"%}}Pipelines{{%/link%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} You can explore the scopes of the range of operations available for the mentioned components in the {{%link href="/en/sdk/python/v1/sdk-scopes"%}}Scopes Table{{%/link%}}.{{%/note%}} The hierarchy of the entities present with the {{%badge%}}zcatalyst-sdk{{%/badge%}} 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 {{%badge%}}zcatalyst-sdk{{%/badge%}} 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 {{%link href="/en/sdk/python/v1/setup"%}}setup help page{{%/link%}}. 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-03-18T07:41:08.753Z" 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 {{%link href="/en/sdk/python/v1/setup/#initializing-with-scopes" %}}this section{{%/link%}}. <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>{{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-meta/#get-metadata-of-all-tables" %}}Get Meta Data of All Tables{{%/link%}}, {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-column-meta/#get-metadata-of-all-columns" %}}Get All Columns{{%/link%}}, {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-column-meta/#get-a-columns-metadata-by-id" %}}Get Column Details{{%/link%}}, {{%link href="/en/sdk/python/v1/cloud-scale/data-store/delete-row/" %}}Delete Single Row{{%/link%}}, {{%link href="/en/sdk/python/v1/cloud-scale/data-store/bulk-delete-rows/" %}}Delete All Rows{{%/link%}}, {{%link href="/en/sdk/python/v1/cloud-scale/data-store/update-rows/" %}}Update Single Row{{%/link%}}, {{%link href="/en/sdk/python/v1/cloud-scale/data-store/update-rows/#update-multiple-rows" %}}Update All Rows{{%/link%}}, {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-rows/#get-a-single-row" %}}Get Row{{%/link%}}, {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-rows/#get-all-rows-through-pagination" %}}Get All Rows{{%/link%}} </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>{{%link href="/en/sdk/python/v1/cloud-scale/file-store/retrieve-folder-details/#get-details-of-all-folders" %}}Get Details of All Folders{{%/link%}}, {{%link href="/en/sdk/python/v1/cloud-scale/file-store/retrieve-folder-details/#get-details-of-a-single-folder" %}}Get Details of a Single Folder{{%/link%}}, {{%link href="/en/sdk/python/v1/cloud-scale/file-store/upload-file/" %}}Upload a File{{%/link%}}, {{%link href="/en/sdk/python/v1/cloud-scale/file-store/download-a-file-from-the-folder/" %}} Download a File{{%/link%}}, {{%link href="/en/sdk/python/v1/cloud-scale/file-store/delete-a-file/" %}}Delete a File{{%/link%}}</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>{{%link href="/en/sdk/python/v1/cloud-scale/authentication/get-user-details/" %}}Get Details of Current User{{%/link%}}, {{%link href="/en/sdk/python/v1/cloud-scale/authentication/reset-password/" %}}Reset Password{{%/link%}} </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-03-18T07:41:08.753Z" 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: * **{{%link href="https://pip.pypa.io/en/stable/installation/#"%}}Pip{{%/link%}} - Python Package Manager** * **{{%link href="https://www.python.org/"%}}Python version 3.9{{%/link%}}** You can install Python from their {{%link href="https://www.python.org/"%}}official website{{%/link%}} 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 {{%link href="https://pip.pypa.io/en/stable/installation/#"%}}pip installation documentation{{%/link%}} for installing pip. {{%note%}} {{%bold class="bold-primary"%}}Note:{{%/bold%}} If you have other versions of Python installed in your local machine (any version other than Python 3.9), then the execution of the Python functions in your directory will be skipped when the application is being {{%link href="/en/cli/v1/serve-resources/introduction"%}}served{{%/link%}} or {{%link href="/en/cli/v1/deploy-resources/introduction"%}}deployed{{%/link%}}. These Python functions are also excluded when you {{%link href="/en/cli/v1/pull-resources/introduction"%}}pull{{%/link%}} the functions from the console to the {{%link href="/en/getting-started/installing-catalyst-cli/"%}}CLI{{%/link%}}.{{%/note%}} 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 {{%link href="/en/cli/v1/project-directory-structure/introduction"%}}project directory{{%/link%}} are given in {{%link href="/en/cli/v1/working-with-functions/introduction"%}}this help page{{%/link%}}. To learn about initalizing a Python function during Catalyst project initialization, refer {{%link href="/en/cli/v1/initialize-resources/introduction"%}}this help page{{%/link%}}. <br> ### Installing the SDK When you initialize a Catalyst project in the CLI and {{%link href="/en/cli/v1/initialize-resources/initialize-functions/#initialize-a-python-function-of-any-type"%}}create{{%/link%}} or {{%link href="/en/cli/v1/working-with-functions/set-up-functions/#set-up-a-python-function-of-any-type"%}}set up{{%/link%}} a Python function in an existing project directory in your local environment, the Python SDK package ({{%badge%}}zcatalyst-sdk{{%/badge%}}) will automatically be installed inside the {{%link href="/en/cli/v1/project-directory-structure/introduction"%}}functions directory{{%/link%}} 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 {{%link href="/en/serverless/help/functions/introduction"%}}Catalyst Serverless function{{%/link%}} of any programming stack. For Python functions, an additional file named {{%link href="/en/cli/v1/project-directory-structure/functions-directory/#python-modules-and-function-dependencies"%}}{{%badge%}}requirements.txt{{%/badge%}}{{%/link%}} 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 ({{%badge%}}zcatalyst-sdk{{%/badge%}}), 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 {{%badge%}}requirements.txt{{%/badge%}} file. {{%note%}} {{%bold%}}Note:{{%/bold%}} 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 {{%badge%}}config:set &lt;key=value&gt;{{%/badge%}} CLI command. You can find out more about this command from {{%link href="/en/cli/v1/cli-config/" %}} this help page{{%/link%}}.{{%/note%}} You can use the following command to install the Catalyst Python SDK globally in your system: {{%code class="language-json"%}}pip install zcatalyst-sdk {{%/code%}} <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 {{%badge%}}initialize(){{%/badge%}} 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** {{%code class="language-python"%}}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 {{%/code%}} **Advanced I/O Functions** {{%code class="language-python"%}}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 {{%/code%}} **Event Functions** {{%code class="language-python"%}}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 {{%/code%}} **Cron Functions** {{%code class="language-python"%}}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 {{%/code%}} 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%}}{{%bold class="bold-primary"%}}Note :{{%/bold%}} 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.{{%/note%}} <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 {{%link href="/en/cloud-scale/help/data-store/introduction/" %}}Data Store{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}}<br /> * It is not mandatory for you to initialize the projects with scopes. By default, a project that is initialized will have {{%italics%}}Admin{{%/italics%}} 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 {{%link href="/en/sdk/python/v1/sdk-scopes" %}}Scopes Table{{%/link%}} * Depending on how you engineer your business logic, you can decide if your end-users can perform {{%italics%}}Admin{{%/italics%}} or {{%italics%}}User{{%/italics%}} actions. This is decided based on the {{%link href="/en/cloud-scale/help/authentication/user-management/roles/introduction/" %}}role{{%/link%}} 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 {{%italics%}}Scopes & Permissions{{%/italics%}} or the {{%italics%}}Bucket Permissions{{%/italics%}} section of the {{%link href="/en/cloud-scale/help/data-store/scopes-and-permissions/" %}}Data Store{{%/link%}} and {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}Stratus{{%/link%}} respectively. * Catalyst Stratus is a brand new object storage component in the {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} The SDK snippets below will allow you to initialize the SDK using either *Admin* or *User* scope : **Admin Scope** {{%code class="language-python"%}}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 {{%/code%}} **User Scope** {{%code class="language-python"%}}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 {{%/code%}} 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-03-18T07:41:08.753Z" 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 {{%link href="/en/release-notes/sdk/" %}}Release Notes{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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 {{%badge%}}requirements.txt{{%/badge%}} file of each function.{{%/note%}} <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. {{%code class="language-json"%}}pip install zcatalyst-sdk==0.0.2{{%/code%}} <br/> {{%note%}}{{%bold%}}Note:{{%/bold%}} 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 {{%badge%}}requirements.txt{{%/badge%}} file. If want to use the SDK that is installed globally, please remove the SDK package from {{%badge%}}requirements.txt{{%/badge%}} file.{{%/note%}} <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: {{%code class="language-json"%}}pip install zcatalyst-sdk{{%/code%}} <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 {{%badge%}}requirements.txt{{%/badge%}} file in this function's directory, and update the version of the Python SDK and save the file. For example : {{%badge%}}zcatalyst-sdk==1.0.0rc1{{%/badge%}} 3. Execute the below command to make sure the updated SDK version is reflected in your CLI instance. {{%code class="language-json"%}}pip install -r requirements.txt{{%/code%}} 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-03-18T07:41:08.753Z" 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 {{%badge%}}Exceptions{{%/badge%}} module and the classes within it. When an error or exception occurs in your application, the following properties of the exception are returned: * {{%bold%}}{{%badge%}}code{{%/badge%}}:{{%/bold%}} Unique identifier of the error. * {{%bold%}}{{%badge%}}errorMsg{{%/badge%}}:{{%/bold%}} General description about the error. * {{%bold%}}{{%badge%}}errorDetails{{%/badge%}}:{{%/bold%}} Additional information about the error. * {{%bold%}}{{%badge%}}originalException{{%/badge%}}:{{%/bold%}} In case of HTTP requests, returns HTTP status codes. Or else returns "None". The base class {{%badge%}}CatalystError{{%/badge%}} is pre-defined in the {{%badge%}}Exceptions{{%/badge%}} 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 {{%link href="/en/serverless/help/functions/introduction"%}}Catalyst Serverless function{{%/link%}} 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 {{%badge%}}(CatalystFunctionError){{%/badge%}} 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 {{%badge%}}CatalystDataStoreError{{%/badge%}} 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 {{%badge%}}CatalystAuthenticationError{{%/badge%}}, {{%badge%}}Catalyst FileStore Error{{%/badge%}}, {{%badge%}}Catalyst CacheError{{%/badge%}},{{%badge%}}Catalyst CronError{{%/badge%}},{{%badge%}}CatalystZiaError{{%/badge%}} 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-03-18T07:41:08.753Z" 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 {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}Catalyst Cloud Scale Stratus{{%/link%}} or a data pipeline running on Amazon Web Services EC2 can push customer data into {{%link href="/en/cloud-scale/help/data-store/introduction/" %}}Catalyst Cloud Scale Data Store{{%/link%}} using {{%link href="/en/cloud-scale/help/zcql/introduction/" %}}Catalyst Cloud Scale ZCQL{{%/link%}} 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 {{%link href="/en/getting-started/catalyst-projects/" %}}Catalyst project{{%/link%}}. * **ZAID (Zoho Account ID):** A unique portal identifier assigned by Catalyst to link your project with the {{%link href="/en/deployment-and-billing/environments/introduction/" %}}Catalyst environment{{%/link%}} ({{%link href="/en/deployment-and-billing/environments/development-environment/" %}}development{{%/link%}} or {{%link href="/en/deployment-and-billing/environments/production-environment/" %}}production{{%/link%}}). * **Environment:** The {{%link href="/en/deployment-and-billing/environments/introduction/" %}}target environment{{%/link%}} ({{%link href="/en/deployment-and-billing/environments/development-environment/" %}}development{{%/link%}} or {{%link href="/en/deployment-and-billing/environments/production-environment/" %}}production{{%/link%}}) 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 {{%link href="/en/getting-started/catalyst-projects/#introduction-to-catalyst-projects" %}}Catalyst project{{%/link%}} in the {{%link href="https://console.catalyst.zoho.com/" %}}console{{%/link%}} by using the steps mentioned in {{%link href="/en/getting-started/catalyst-projects/#create-a-catalyst-project" %}}this help page{{%/link%}}. 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 ({{%link href="/en/deployment-and-billing/environments/development-environment/" %}}development{{%/link%}} or {{%link href="/en/deployment-and-billing/environments/production-environment/" %}}production{{%/link%}}). {{%link href="/en/deployment-and-billing/environments/introduction/" %}}Learn more about Catalyst environments{{%/link%}}. To retrieve the ZAID, setting up the {{%link href="/en/cloud-scale/help/authentication/introduction/" %}}Catalyst CloudScale Authentication{{%/link%}} component is mandatory. However, using it for your application's authentication flow is optional. To fetch the ZAID: i. Navigate to the {{%link href="https://docs.catalyst.zoho.com/en/cloud-scale/" %}}Catalyst CloudScale{{%/link%}} service in the console and under **Security & Identity**, select **Authentication**. <br> ii. You will need to set up {{%link href="/en/cloud-scale/help/authentication/native-catalyst-authentication/introduction/" %}}Native Catalyst Authentication{{%/link%}}, 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 {{%link href="/en/cloud-scale/help/authentication/public-signup/" %}}Public Signup{{%/link%}} option to display the signup feature in your login component, allowing new users to register and access your application. You can refer to the {{%link href="/en/cloud-scale/help/authentication/native-catalyst-authentication/hosted-authentication-type/introduction/" %}}hosted authentication help page{{%/link%}} 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. {{%link href="/en/cloud-scale/help/authentication/social-logins/configuring-social-logins/" %}}Learn how to obtain the ZAID for a specific social login{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} <br> {{%link href="/en/cloud-scale/help/authentication/native-catalyst-authentication/hosted-authentication-type/introduction/" %}}Learn more about this hosted authentication type{{%/link%}}. <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 {{%link href="https://api-console.zoho.com" %}}API console{{%/link%}}. 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. {{%link href="/en/api/oauth2/scopes/#Scopes" %}}Learn more about available scopes{{%/link%}}. 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. {{%link href="/en/api/oauth2/generate-grant-token/#GenerateGrantToken" %}}Learn more about generating a grant token{{%/link%}}. <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 {{%link href="/en/api/oauth2/generate-access-and-refresh-token/#GenerateAccessandRefreshToken" %}}this help page{{%/link%}}. You can also refresh the access token by using the steps listed in {{%link href="/en/api/oauth2/refresh-access-token/#RefreshAccessToken" %}}this page{{%/link%}}. 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 {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}Catalyst CloudScale Stratus{{%/link%}}. <br> ### Code Snippet {{%code class="language-python" scroll="set-scroll" %}}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) {{%/code%}} #### 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-03-18T07:41:08.754Z" 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 {{%link href="/en/cloud-scale/help/authentication/introduction" %}}Catalyst Cloud Scale Authentication{{%/link%}} 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 {{%badge%}}app{{%/badge%}} reference used in the code below is the {{%link href="/en/sdk/python/v1/setup/#initializing-the-sdk" %}}Python object{{%/link%}} returned as a response during SDK initialization. You can create a new {{%badge%}}authentication_service{{%/badge%}}instance as shown below : {{%code class="language-python"%}}#Get Authentication component instance authentication_service = app.authentication() {{%/code%}} 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-03-18T07:41:08.754Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/#authentication-and-user-basics" %}}user_ID{{%/link%}} and {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/#authentication-and-user-basics" %}}ZUID{{%/link%}} 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 {{%badge%}}register_user(){{%/badge%}} method. {{%note%}}{{%bold class="bold-primary" %}}Note :{{%/bold%}} * You must provide the values for {{%badge%}}email_id{{%/badge%}} and {{%badge%}}first_name{{%/badge%}} to register a user mandatorily. * You can obtain the {{%badge%}}role_id{{%/badge%}} from the _Roles_ section in _Authentication_ in the Catalyst console. * You can obtain the ZAID from the {{%link href="/en/deployment-and-billing/environments/introduction" %}}Environment settings{{%/link%}} 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 {{%link href="/en/cloud-scale/help/mail/email-configuration/" %}}Catalyst Mail Component{{%/link%}} and get it verified before using it in the SDK code. {{%/note%}} {{%code class="language-python" scroll="set-scroll" %}}#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", } {{% /code%}} ### 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 {{%badge%}}register_user(){{%/badge%}} method handles the user creation process and returns a response. To know more about the component instance {{%badge%}}authentication_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/authentication/get-component-instance/" %}}this section{{%/link%}}. {{%note%}}{{%bold class="bold-primary" %}}Note :{{%/bold%}} You will only be able to add 25 users in your application in the {{%link href="/en/deployment-and-billing/environments/development-environment" %}}development environment{{%/link%}}. After you deploy your application to production, you can include any number of end-users in it.{{%/note%}} **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>{{%badge%}}signup_config{{%/badge%}}</td> <td>{{%badge%}}Object{{%/badge%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} 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>{{%badge%}}user_details{{%/badge%}}</td> <td>{{%badge%}}Object{{%/badge%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} 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> {{%code class="language-python" scroll="set-scroll" %}}#Add a new user authentication_service = app.authentication() response_data = authentication_service.register_user(signup_config, user_details) {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ "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" } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.754Z" 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 {{%link href="/en/getting-started/catalyst-organizations/" %}}**OrgID**{{%/link%}} of the organization that the user must be added to. When the user has signed up, unique identification values such as {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/#authentication-and-user-basics" %}}ZUID and User ID{{%/link%}} are created for them by Catalyst. {{%note%}}{{%bold class="bold-primary" %}}Note :{{%/bold%}} * You must provide the values for {{%badge%}}org_id{{%/badge%}}, {{%badge%}}email_id{{%/badge%}}, {{%badge%}}last_name{{%/badge%}} mandatorily to add a user to an existing organization. * You can obtain the ZAID from the {{%link href="/en/deployment-and-billing/environments/introduction" %}}Environment settings{{%/link%}} in your Catalyst console. * You can also add them to a role by providing the {{%badge%}}role_id{{%/badge%}}, 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 {{%link href="/en/cloud-scale/help/mail/email-configuration/" %}}Catalyst Mail Component{{%/link%}} and get it verified before using it in the SDK code. {{%/note%}} ## 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. {{%code class="language-python" scroll="set-scroll" %}}#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", } {{%/code%}} ### 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 {{%badge%}}add_user_to_org(){{%/badge%}} method. This method handles the user sign-up process and returns a response. {{%note%}}{{%bold class="bold-primary" %}}Note :{{%/bold%}} You will only be able to add 25 users in your application in the {{%link href="/en/deployment-and-billing/environments/development-environment" %}}development environment{{%/link%}}. After you deploy your application to production, you can include any number of end-users in it.{{%/note%}} To know more about the component instance {{%badge%}}authentication_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/authentication/get-component-instance/" %}}this section{{%/link%}}. **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>{{%badge%}}signup_config{{%/badge%}}</td> <td>Object</td> <td>A {{%bold%}}Mandatory{{%/bold%}} 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>{{%badge%}}user_details{{%/badge%}}</td> <td>Object</td> <td>A {{%bold%}}Mandatory{{%/bold%}} 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> {{%code class="language-python" scroll="set-scroll" %}}#Add new user to an existing organization authentication_service = app.authentication() response_data = authentication_service.add_user_to_org(signup_config, user_details) {{%/code%}} A sample response is shown below : {{%code class="language-json line-numbers"%}}{ "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" } {{%/code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.754Z" 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 {{%badge%}}reset_password(){{%/badge%}} method, a reset password link will be generated and sent to the user's email address. {{%note%}}{{%bold class="bold-primary" %}}Note: {{%/bold%}} * The {{%badge%}}email_id{{%/badge%}}, {{%badge%}}platform_type{{%/badge%}}, and {{%badge%}}zaid{{%/badge%}} are mandatory attributes. * You can configure the sender's email address, subject and the email message. You must add the email address in the {{%link href="/en/cloud-scale/help/mail/email-configuration/" %}}Catalyst Mail Component{{%/link%}} and get it verified before using it in the SDK code. {{%/note%}} #### 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. {{%code class="language-python" scroll="set-scroll" %}}#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>", }, } {{% /code%}} ### Reset the Password The objects that contains the user information and user signup configuration are passed as arguments to the {{%badge%}}reset_password(){{%/badge%}} method which returns a response. To know more about the component instance {{%badge%}}authentication_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/authentication/get-component-instance/" %}}this section{{%/link%}}. **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>{{%badge%}}email_id{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the value of the the user's email address.</td> </tr> <tr> <td>{{%badge%}}reset_config{{%/badge%}}</td> <td>Object</td> <td>A {{%bold%}}Mandatory{{%/bold%}} 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> {{%code class="language-python" scroll="set-scroll" %}}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) {{%/code%}} A sample response is shown below : {{%code class="language-json"%}}"Reset link sent to amelia.burrows@zylker.com. Please check your email". {{%/code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.754Z" 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 {{%link href="/en/serverless/help/functions/basic-io/" %}}Basic I/O function{{%/link%}} 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 {{%badge%}}authentication_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/authentication/get-component-instance/" %}}this section{{%/link%}}. A sample code for a {{%link href="/en/cloud-scale/help/authentication/whitelisting/custom-user-validation/introduction/" %}}Custom User Validation{{%/link%}} 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>{{%badge%}}basicio{{%/badge%}}</td> <td>Function</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. The Basic IO Catalyst function that allows to authorize and validate your end-users.</td> </tr> </tbody> </table> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import json import zcatalyst_sdk{{% /panel_without_adjustment %}} {{%code class="language-python line-numbers"%}}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(){{%/code%}} To test this function, you can pass the details of the user in the following {{%badge%}}.JSON{{%/badge%}} format: {{%code class="language-json line-numbers"%}}{ "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" } }{{%/code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.754Z" 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 {{%link href="/en/cloud-scale/help/authentication/third-party-authentication/introduction/" %}}third-party authentication service{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} * 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 {{%link href="/en/cloud-scale/help/authentication/public-signup/" %}}Public Signup{{%/link%}} in the console.{{%/note%}} 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. {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the below operation.{{%/note%}} **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>{{%badge%}}type{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the value of the application type.</td> </tr> <tr> <td>{{%badge%}}user_details{{%/badge%}}</td> <td>Object</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold values of first_name and email_id of the end user.</td> </tr> </tbody> </table> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import zcatalyst_sdk{{% /panel_without_adjustment %}} {{%code class="language-python line-numbers"%}}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(){{%/code%}} You can now pass this token to the client logic as explained in this {{%link href="/en/sdk/web/v4/cloud-scale/authentication/third-party-custom-token/" %}}Web SDK help page{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.754Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/" %}}application users{{%/link%}}. You can obtain the user information of the current user, any user, or all users of the application. ### Get Details of Current User The {{%badge%}}get_current_user(){{%/badge%}} 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 {{%badge%}}authentication_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/authentication/get-component-instance/" %}}this section{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}#Get details of user authentication_service = app.authentication() current_user = authentication_service.get_current_user() {{%/code%}} A sample response is shown below : {{%code class="language-json line-numbers"%}}{ "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":[ ] } {{% /code%}} ### Get User Details by User ID You can retrieve the details of a particular user by passing the userID of the user to the {{%badge%}}get_user_details(){{%/badge%}} 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 {{%badge%}}authentication_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/authentication/get-component-instance/" %}}this section{{%/link%}}. **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>{{%badge%}}user_id{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the unique ID of the user whose details need to be retrieved.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Get details by userid authentication_service = app.authentication() user_details=authentication_service.get_user_details('12345') {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers"%}}{ "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":[ ] } {{%/code%}} ### Get Details of All Users The {{%badge%}}get_all_users(){{%/badge%}} 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 {{%badge%}}authentication_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/authentication/get-component-instance/" %}}this section{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}#Get details of all users authentication_service = app.authentication() user_details = authentication_service.get_all_users() {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers"%}}[ { "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":[ ] } ] {{% /code%}} ### Get Details of All Users in an org The {{%badge%}}org_id{{%/badge%}} is passed as a parameter to the {{%badge%}}get_all_users(){{%/badge%}} method in order to fetch the users belonging to a particular organization. To know more about the component instance {{%badge%}}authentication_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/authentication/get-component-instance/" %}}this section{{%/link%}}. **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>{{%badge%}}org_id{{%/badge%}}</td> <td>String</td> <td>An {{%bold%}}Optional{{%/bold%}} 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> {{%code class="language-python" scroll="set-scroll" %}}#Get details of all users authentication_service = app.authentication() user_details = authentication_service.get_all_users(1293028) {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers"%}}[ { "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":[ ] } ] {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.754Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/implementation/#modify-a-users-details" %}}modify and update{{%/link%}} the following details of an end-user: * First Name * Last Name * {{%link href="/en/getting-started/catalyst-organizations/" %}}OrgID{{%/link%}} : OrgID is a unique value that is generated by Catalyst to associate with an organization. * {{%link href="/en/cloud-scale/help/authentication/user-management/roles/implementation/" %}}RoleID{{%/link%}} : Role ID is the value generated by Catalyst that is assigned to a particular {{%link href="/en/cloud-scale/help/authentication/user-management/roles/introduction/" %}}user role{{%/link%}}. ### Create a dictionary {{%code class="language-python line-numbers"%}}update_config = { "email_id": "amelia.burrows@zylker.com", "last_name": "Burrows", "first_name": "Amelia", "org_id": "1012585680", "role_id": "6759000000054065", } {{%/code%}} The SDK snippet below demonstrates updating an end-user’s details using the {{%badge%}}update_user_details(userID, userDetails){{%/badge%}} method. The first name of the user is updated in the example below. To know more about the component instance {{%badge%}}authentication_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/authentication/get-component-instance/" %}}this section{{%/link%}}. **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>{{%badge%}}UserID{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the UserID of the user whose details are to be updated.</td> </tr> <tr> <td>{{%badge%}}update_config{{%/badge%}} </td> <td>Object</td> <td>A {{%bold%}}Mandatory{{%/bold%}} 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> {{%code class="language-python line-numbers"%}}authentication_service = app.authentication() user_details=authentication_service.update_user_details('6759000000124659', update_config) {{%/code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- title: "Delete User" description: "This page describes the method to delete users from your Python application with sample code snippets." last_updated: "2026-03-18T07:41:08.754Z" 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 {{%link href="/en/cloud-scale/help/authentication/introduction" %}}end-user of a Catalyst application{{%/link%}} can be deleted from a Catalyst application to discontinue their access to it. This can be done by calling the {{%badge%}}delete_user(){{%/badge%}} method and by passing the {{%badge%}}UserID{{%/badge%}} 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 {{%badge%}}authentication_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/authentication/get-component-instance/" %}}this section{{%/link%}}. **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>{{%badge%}}UserID{{%/badge%}}</td> <td>{{%badge%}}String{{%/badge%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the ID of the user to be deleted.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Delete an existing user authentication_service = app.authentication() delete_response = authentication_service.delete_user(2305000000007745) {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.755Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/implementation/#enable-or-disable-a-user" %}}disable or enable a user{{%/link%}} 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 {{%badge%}}update_user_status(userId, user_status){{%/badge%}} method. The user is referred by their unique {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/" %}}User ID{{%/link%}}. You can find the User IDs of all users by navigating to the *Users* > {{%link href="/en/cloud-scale/help/authentication/user-management/introduction/" %}}*User Management*{{%/link%}} section of the Authentication component. To know more about the component instance {{%badge%}}authentication_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/authentication/get-component-instance/" %}}this section{{%/link%}}. ### 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>{{%badge%}}userId{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the UserID of the user to be enabled for the application.</td> </tr> <tr> <td>{{%badge%}}user_status{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the default value "enable".</td> </tr> </tbody> </table> {{%code class="language-python line-numbers"%}}authentication_service = app.authentication() user_details = authentication_service.update_user_status('6759000000124659', 'enable') # Replace the user id {{%/code%}} ### 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>{{%badge%}}userId{{%/badge%}}</td> <td>{{%badge%}}String{{%/badge%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the UserID of the user to be disabled for the application.</td> </tr> <tr> <td>{{%badge%}}user_status{{%/badge%}}</td> <td>{{%badge%}}String{{%/badge%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the default value "disable"</td> </tr> </tbody> </table> {{%code class="language-python line-numbers"%}}authentication_service = app.authentication() user_details = authentication_service.update_user_status('6759000000124659', 'disable') # Replace the user id {{%/code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} ##### 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-03-18T07:41:08.755Z" 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 {{%link href="/en/cloud-scale/help/cache/introduction" %}}Catalyst Cloud Scale Cache{{%/link%}} 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 {{%badge%}}app{{%/badge%}} reference used in the code below is the {{%link href="/en/sdk/python/v1/setup/#initializing-the-sdk" %}}Python object{{%/link%}} returned as a response during SDK initialization. You can create a new {{%badge%}}cache_service{{%/badge%}}instance as shown below. This instance will be used in multiple scenarios while performing cache component related operations. {{%code class="language-python" scroll="set-scroll" %}}#Get cache component instance cache_service = app.cache() {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.755Z" 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 {{%badge%}}cache_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/cache/get-component-instance/" %}}this section{{%/link%}}. 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. {{%code class="language-python" scroll="set-scroll" %}}#Get segment instance cache_service = app.cache() segment_service = cache_service.segment() {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.755Z" 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 {{%link href="/en/cloud-scale/help/cache/introduction" %}}Catalyst Cloud Scale Cache{{%/link%}} 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 {{%badge%}}get_value(){{%/badge%}} 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 {{%link href="/en/sdk/python/v1/cloud-scale/cache/get-component-instance/" %}}component instance{{%/link%}} {{%badge%}}cache_service{{%/badge%}} and the {{%link href="en/sdk/python/v1/cloud-scale/cache/get-segment-instance/" %}}segment_service{{%/link%}} {{%badge%}}segment_service{{%/badge%}} 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>{{%badge%}}Key{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the key for retrieving the cache value.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Get cache value cache_service = app.cache() segment_service = cache_service.segment() data = segment_service.get_value('key') {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ "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", } {{% /code%}} ### 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 {{%badge%}}get(){{%/badge%}} method, where the key name is passed as an argument. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/cache/get-component-instance/" %}}component instance{{%/link%}} {{%badge%}}cache_service{{%/badge%}} and the {{%link href="en/sdk/python/v1/cloud-scale/cache/get-segment-instance/" %}}segment instance{{%/link%}} {{%badge%}}segment_service{{%/badge%}} 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>{{%badge%}}cache_name{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the key for retrieving the cache object.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}} cache_service = app.cache() segment_service = cache_service.segment() data = segment_service.get('key') {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ 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" } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.755Z" 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 {{%link href="/en/cloud-scale/help/cache/introduction" %}}cache element{{%/link%}} 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 {{%link href="/en/sdk/python/v1/cloud-scale/cache/get-component-instance/" %}}component instance{{%/link%}} {{%badge%}}cache_service{{%/badge%}} and the {{%link href="en/sdk/python/v1/cloud-scale/cache/get-segment-instance/" %}}segment instance{{%/link%}} {{%badge%}}segment_service{{%/badge%}} 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>{{%badge%}}cache_name{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the key to be inserted in the cache.</td> </tr> <tr> <td>{{%badge%}}cache_value{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the value to be inserted in the cache.</td> </tr> <tr> <td>{{%badge%}}expiry_in_hours{{%/badge%}}</td> <td>Numeric</td> <td>A {{%bold%}}Optional{{%/bold%}} parameter. Will hold the value of the expiry time of the data.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}# Insert Data to Cache cache_service = app.cache() segment_service = cache_service.segment() segment_service.put('Name', 'Smith',2) {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers" scroll="set-scroll" %}} { 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" } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.755Z" 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 {{%badge%}}update(){{%/badge%}} 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 {{%link href="/en/sdk/python/v1/cloud-scale/cache/get-component-instance/" %}}component instance{{%/link%}} {{%badge%}}cache_service{{%/badge%}} and the {{%link href="en/sdk/python/v1/cloud-scale/cache/get-segment-instance/" %}}segment instance{{%/link%}}{{%badge%}}segment_service{{%/badge%}} 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>{{%badge%}}cache_name{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the key to be updated in the cache.</td> </tr> <tr> <td>{{%badge%}}cache_value{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the value of the key that has to be updated in the cache.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Update data in cache cache_service = app.cache() segment_service = cache_service.segment() segment_service.update('Name', 'Michael Scott') {{% /code%}} A sample response is shown below : {{%code class="language-json" scroll="set-scroll" %}}{ 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" } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.755Z" 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 {{%link href="/en/sdk/python/v1/cloud-scale/cache/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}component_service{{%/badge%}} and the {{%link href="en/sdk/python/v1/cloud-scale/cache/get-segment-instance/" %}}segment instance{{%/link%}} {{%badge%}}segment_service{{%/badge%}} 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 {{%badge%}}delete(){{%/badge%}} 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 {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the key name of the cache segment.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Delete a key-value pair cache_service = app.cache() segment_service = cache_service.segment() segment_service.delete('Name') {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} ##### 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-03-18T07:41:08.755Z" 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%}}{{%bold%}}Note:{{%/bold%}} This SDK can only be accessed within Catalyst services like {{%link href="/en/serverless/help/functions/introduction/" %}}Functions{{%/link%}} and {{%link href="/en/serverless/help/appsail/introduction/" %}}AppSail{{%/link%}}. It cannot be used to integrate with third-party services.{{%/note%}} You can get the {{%badge%}}connections{{%/badge%}} 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. {{%code class="language-python line-numbers"%}}# create connection instance connections = app.connections(){{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.755Z" 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%}}{{%bold%}}Note:{{%/bold%}} This SDK can only be accessed within Catalyst services like {{%link href="/en/serverless/help/functions/introduction/" %}}Functions{{%/link%}} and {{%link href="/en/serverless/help/appsail/introduction/" %}}AppSail{{%/link%}}. It cannot be used to integrate with third-party services.{{%/note%}} This SDK method can be used obtain the authentication credentials for various Zoho services, listed as {{%link href="/en/cloud-scale/help/connections/establish-default-connection/" %}}Default Services{{%/link%}}. The {{%badge%}}connections{{%/badge%}} reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/connections/get-connections-instance/" %}}component instance{{%/link%}}. {{%code class="language-python line-numbers"%}}# 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){{%/code%}} ##### 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-03-18T07:41:08.755Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Cloud Scale Data Store{{%/link%}} 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 {{%badge%}}app{{%/badge%}} reference used in the code below is the {{%link href="/en/sdk/python/v1/setup/#initializing-the-sdk" %}}Python object{{%/link%}} returned as a response during SDK initialization. You can create a new {{%badge%}}datastore_service{{%/badge%}}instance as shown below. Also note that this instance will be used in multiple scenarios while performing database specific operations. {{%code class="language-python" scroll="set-scroll" %}}#Get Data Store component instance datastore_service = app.datastore() {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.755Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}} 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 {{%badge%}}get_table_details(){{%/badge%}} 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 {{%badge%}}datastore_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}tableID{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the ID of the table whose meta data has to be retrieved.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Get table metadata using TableID datastore_service = app.datastore() table_data = datastore_service.get_table_details(5249000000011745) {{%/code%}} A sample response is shown below : {{%code class="language-json line-numbers"%}}{ "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" } {{%/code%}} ### 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 {{%badge%}}table_name{{%/badge%}}. {{%note%}}{{%bold class="bold-primary" %}}Note :{{%/bold%}} If you rename the table, you must update the changes in the code in all applicable sections.{{%/note%}} To know more about the component instance {{%badge%}}datastore_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}table_name{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the name of the table whose meta data has to be retrieved.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}datastore_service = app.datastore() table_data = datastore_service.get_table_details("Aliens") {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers"%}}{ "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" } {{%/code%}} ### 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 {{%badge%}}getAllTables(){{%/badge%}} method. To know more about the component instance {{%badge%}}datastore_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}this help section{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}datastore_service = app.datastore() tables = datastore_service.get_all_tables() {{%/code%}} A sample response is shown below: {{%code class="language-json line-numbers"%}}[ { "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" } ] {{%/code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.756Z" 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 {{%badge%}}datastore_service{{%/badge%}} reference used in the below code snippet is the component instance created earlier. ### Get the Table Instance using TableID The {{%badge%}}table_service{{%/badge%}} reference can be created by passing the tableID as a parameter to the {{%badge%}}table(){{%/badge%}} method. To know more about the component instance {{%badge%}}datastore_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}tableID{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the ID of the table.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Get table instance using table ID datastore_service = app.datastore() table_service = datastore_service.table(5249000000011745) {{% /code%}} ### Get the Table Instance using Table Name Alternatively, a table reference can be created by referring the tablename in the {{%badge%}}table(){{%/badge%}} 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 {{%badge%}}datastore_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}table_name{{%/badge%}}</td> <td>{{%badge%}}String{{%/badge%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the name of the table.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Get table instance using table name datastore_service = app.datastore() table_service = datastore_service.table("CITY") {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.756Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}} 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 {{%badge%}}get_column_details(){{%/badge%}} method. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}datastore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" %}}table instance{{%/link%}}{{%badge%}}table_service{{%/badge%}} 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>{{%badge%}}columnID{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the ID of the column for which metadata has to be retrieved.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Get column's metadata using columnID datastore_service = app.datastore() table_service = datastore_service.table("CITY") column_data = table_service.get_column_details(5249000000032372) {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers"%}}{ 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" } {{% /code%}} ### Get a Column's Metadata by Name An alternative way to get the meta data of a column is, referring to the {{%badge%}}column_name{{%/badge%}}. 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 {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}datastore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" %}}table instance{{%/link%}}{{%badge%}}table_service{{%/badge%}} 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>{{%badge%}}column_name{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the name of the column for which metadata has to be retrieved.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#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") {{% /code%}} A sample response is shown below : {{%code class="language-javascript line-numbers"%}}{ 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" }{{% /code%}} ### 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 {{%badge%}}get_all_columns(){{%/badge%}} method. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}datastore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" %}}table instance{{%/link%}}{{%badge%}}table_service{{%/badge%}} used below, please refer to their respective help sections. {{%code class="language-python" scroll="set-scroll" %}}#Get metadata of all columns datastore_service = app.datastore() table_service = datastore_service.table("CITY") columns = table_service.get_all_columns() {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers"%}}[ { 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" } ] {{%/code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.756Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}}. The {{%badge%}}table_service{{%/badge%}} 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 {{%badge%}}get_row(){{%/badge%}} 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 {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}datastore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" %}}table instance{{%/link%}}{{%badge%}}table_service{{%/badge%}} 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>{{%badge%}}rowID{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the ID of the row whose details has to be retrieved.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}} # Get A Single Row datastore_service = app.datastore() table_service = datastore_service.table("CITY") row_data = table_service.get_row(5249000000032385) {{% /code%}} A sample response is shown below : {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}{ CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-17 13:02:11:184", CREATEDTIME: "2021-08-16 16:29:10:499", CITYNAME: "Pune", ROWID: "5249000000032385" } {{% /code%}} ### 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 {{%badge%}}get_paged_rows(){{%/badge%}} 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 {{%badge%}}max_rows{{%/badge%}} as 100. {{%note%}}{{%bold%}}Note:{{%/bold%}} The {{%badge%}}maxRows{{%/badge%}} parameter is optional. The SDK call will return 200 rows in a single page by default if this value is not specified.{{%/note%}} Additionally, you will receive a token string in the response data that authorizes the subsequent fetching of data. You can fetch this token through {{%badge%}}next_token{{%/badge%}}, and pass it as the value for {{%badge%}}next_token{{%/badge%}} during the subsequent iteration, as shown in the code below. During the first execution of the loop, the value for the {{%badge%}}next_token{{%/badge%}} string is assigned as None. The next set of records are fetched through {{%badge%}}more_records{{%/badge%}} in the response data. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} **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>{{%badge%}}next_token{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the token from the response data, authorizing subsequent data retrieval.</td> </tr> <tr> <td>{{%badge%}}max_rows{{%/badge%}}</td> <td>Numeric</td> <td>A {{%bold%}}Optional{{%/bold%}} parameter. Will hold the the number of batches in which the rows has to be fetched.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}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(){{% /code%}} When the {{%badge%}}more_records{{%/badge%}} parameter is set to true, the sample response is shown below: {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ "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}}" } {{%/code%}} When the {{%badge%}}more_records parameter{{%/badge%}} is set to false, the sample response is shown below: {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ "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 } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.756Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}} 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 {{%badge%}}table_service{{%/badge%}} reference used in the code below can either be a table instance or table meta created earlier. {{%note%}}{{%bold%}}Note:{{%/bold%}} * The table and the columns in it must already be created. You can {{%link href="/en/cloud-scale/help/data-store/tables/#create-a-new-table" %}}create a table{{%/link%}} and {{%link href="/en/cloud-scale/help/data-store/columns/#create-a-new-column" %}}the columns for it{{%/link%}} from the console. * You will be able to insert upto 5000 records in each table per project in the {{%link href="/en/deployment-and-billing/environments/development-environment" %}}development environment{{%/link%}}. 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.{{%/note%}} ### 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 {{%badge%}}insert_row(){{%/badge%}} method, as shown below. This inserts the rows in the table that you refer by its unique tablename or tableID. A unique {{%badge%}}ID{{%/badge%}} value for the row is automatically generated once the row is inserted. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}datastore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" %}}table instance{{%/link%}}{{%badge%}}table_service{{%/badge%}} 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>{{%badge%}}row_data{{%/badge%}}</td> <td>Array</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the details of the row to be inserted in key-value pairs.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#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) {{% /code%}} A sample response is shown below : {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}{ 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" } {{% /code%}} ### 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 {{%badge%}}insert_rows(){{%/badge%}} method as shown below. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}datastore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" %}}table instance{{%/link%}}{{%badge%}}table_service{{%/badge%}} 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>{{%badge%}}row_data{{%/badge%}}</td> <td>Array</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the details of the rows to be inserted in key-value pairs.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}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) {{% /code%}} A sample response is shown below : {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}[ { 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 } ] {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.756Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}}. The {{%badge%}}table_service{{%/badge%}} 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 {{%badge%}}update_row(){{%/badge%}} method. Please note that it is mandatory to specify the ROWID value here. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}datastore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" %}}table instance{{%/link%}}{{%badge%}}table_service{{%/badge%}} 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>{{%badge%}}row_data{{%/badge%}}</td> <td>Array</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the details of the row to be updated in key-value pairs.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#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) {{% /code%}} A sample response is shown below : {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}{ 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" } {{% /code%}} ### 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 {{%badge%}}update_rows() {{%/badge%}} method. The ROWIDs are used in corresponding array objects to refer the specific rows which requires modification. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}datastore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" %}}table instance{{%/link%}}{{%badge%}}table_service{{%/badge%}} 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>{{%badge%}}row_data{{%/badge%}}</td> <td>Array</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the details of the rows to be updated in key-value pairs.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#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) {{%/code%}} A sample response is shown below : {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}[ { 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" } ] {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.756Z" 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 {{%badge%}}delete_row(){{%/badge%}} method. This method will return true as response on deletion of the row. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}datastore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" %}}table instance{{%/link%}}{{%badge%}}table_service{{%/badge%}} 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>{{%badge%}}ROWID{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the ID of the row to be deleted.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Delete a row datastore_service = app.datastore() table_service = datastore_service.table("CITY") row_response = table_service.delete_row(5249000000032461) {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.756Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}}. 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 {{%link href="/en/cloud-scale/help/data-store/tables/" %}}{{%badge%}}Table ID{{%/badge%}}{{%/link%}}. To know more about the component instance {{%badge%}}datastore_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}this help section{{%/link%}}. <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>{{%badge%}}criteria{{%/badge%}}</td> <td>Array</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the conditions based on which the rows has to be read.</td> </tr> <tr> <td>{{%badge%}}page{{%/badge%}}</td> <td>Numeric</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the number of page rows that has to be read.</td> </tr> <tr> <td>{{%badge%}}select_columns{{%/badge%}}</td> <td>Array</td> <td>A {{%bold%}}Mandatory{{%/bold%}} 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. {{%code class="language-python" scroll="set-scroll" %}}#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']) {{%/code%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} A maximum of {{%bold%}}200,000 rows{{%/bold%}} can be read simultaneously.{{%/note%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.756Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}}. The bulk write operation can fetch thousands of records from a CSV file uploaded in {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}Stratus{{%/link%}} and insert them in a specific table. The table is referred to by its unique {{%link href="/en/cloud-scale/help/data-store/tables/" %}}{{%badge%}}table ID{{%/badge%}}{{%/link%}} that is generated by Catalyst during creation. The column in which the write operation must be performed is referred to by its unique {{%link href="/en/cloud-scale/help/data-store/columns/#column-characteristics" %}}column ID{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} To perform a bulk write operation, you must {{%link href="/en/cloud-scale/help/stratus/objects/upload-object/" %}}first upload{{%/link%}} the required data as a CSV file in Stratus.{{%/note%}} <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>{{%badge%}}tableID{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the ID of the table to which data has to be written.</td> </tr> <tr> <td>{{%badge%}}find_by{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the name of the column to which data has to be written.</td> </tr> <tr> <td>{{%badge%}}fk_mapping{{%/badge%}}</td> <td>Array</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the local_column and reference_column details.</td> </tr> <tr> <td>{{%badge%}}operation{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. The value of this parameter should be insert.</td> </tr> <tr> <td>o{{%badge%}}bject_details{{%/badge%}}</td> <td>JSON Object</td> <td> <ul> <li>{{%badge%}}bucket_name{{%/badge%}}: The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}name of the bucket{{%/link%}}, where the object is stored.</li> <li>{{%badge%}}object_key{{%/badge%}}: Can contain the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}} or the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} of the required object.</li> <li>{{%badge%}}version_id{{%/badge%}}: If the bucket has {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}versioning{{%/link%}} 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 {{%badge%}}datastore_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}this help section{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}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') {{%/code%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} A maximum of {{%bold%}}100,000 rows{{%/bold%}} can be written at one time.{{%/note%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.756Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}}. 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 {{%badge%}}delete_rows(){{%/badge%}} function through datastore_service instance in the sample code. The tablename or tableID must be passed as a parameter to the {{%badge%}}table(){{%/badge%}} method. The response returns a boolean value ( true or false ) based on the status of deletion. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}datastore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" %}}table instance{{%/link%}}{{%badge%}}table_service{{%/badge%}} 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>{{%badge%}}ROWID{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the rowIDs to be deleted.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Bulk delete rows datastore_service = app.datastore() table_service = datastore_service.table("sampleTable") row_response = table_service.delete_rows([6759000000159113, 6759000000159115, 5249000000032411]) {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} ##### 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-03-18T07:41:08.757Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} {{%link href="/en/cloud-scale/help/file-store/introduction"%}}Catalyst File Store{{%/link%}} 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 {{%badge%}}app{{%/badge%}} reference used in the code below is the {{%link href="/en/sdk/python/v1/setup/#initializing-the-sdk" %}}Python object{{%/link%}} returned as a response during SDK initialization. You can create a new {{%badge%}}filestore_service{{%/badge%}}instance as shown below : {{%code class="language-python" scroll="set-scroll" %}}#Get filestore component instance filestore_service = app.filestore() {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.757Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} To know more about the component instance {{%badge%}}filestore_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/file-store/get-component-instance/" %}}this help section{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}#Get folder instance filestore_service = app.filestore() folder_service = filestore_service.folder(5249000000016011) {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.757Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} You can retrieve the details of the folders created in the {{%link href="/en/cloud-scale/help/file-store/introduction/" %}}Catalyst File Store{{%/link%}}. It can be a single folder or all the folders located in the File store. To know more about the component instance {{%badge%}}filestore_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/file-store/get-component-instance/" %}}this help section{{%/link%}}. ### 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 {{%badge%}}get_folder_details(){{%/badge%}} 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>{{%badge%}}file_ID{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the ID of the folder for which details has to be fetched.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Get details of a single folder filestore_service = app.filestore() data = filestore_service.get_folder_details(5249000000016011) {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers"%}}{ "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" } {{% /code%}} ### Get Details of All Folders You can fetch the details of all folders in your Catalyst application using the {{%badge%}}get_all_folders(){{%/badge%}} method. An array of folder meta details is returned as response to this method. {{%code class="language-python" scroll="set-scroll" %}}#Get details of all folders filestore_service = app.filestore() data = filestore_service.get_all_folders() {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers"%}}[ { "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" } ] {{%/code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.757Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} You can upload a file from your local system to an existing folder in the {{%link href="/en/cloud-scale/help/file-store/introduction/" %}}Catalyst File Store{{%/link%}}, 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%}}{{%bold class="bold-primary" %}}Note :{{%/bold%}} Catalyst provides 1 GB of File Store space for each project in the {{%link href="/en/deployment-and-billing/environments/development-environment" %}}development environment{{%/link%}}. There are no upper limits for storage in the production environment.{{%/note%}} 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 {{%badge%}}filestore_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/file-store/get-component-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}file_name{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the name of the file to be uploaded in FileStore.</td> </tr> <tr> <td>{{%badge%}}content_type{{%/badge%}}</td> <td>File</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the the default value as "file".</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Upload a file file = open('file.txt', "rb") filestore_service = app.filestore() folder = filestore_service.folder(6759000000166049) folder.upload_file('testFile.txt',file) {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers"%}}{ 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" } {{%/code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.757Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} A file can be downloaded from the folder by referring to its unique file ID. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/file-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}filestore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/file-store/get-folder-instance/" %}}folder instance{{%/link%}}{{%badge%}}folder_service{{%/badge%}} used below, please refer to their respective help sections. The file ID is passed as an argument to the {{%badge%}}download_file(){{%/badge%}} 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>{{%badge%}}file_ID{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the ID of the file to be downloaded.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Download a File filestore_service = app.filestore() folder_service = filestore_service.folder(5249000000016011) data = folder_service.download_file(5249000000032063) {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.757Z" 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst now offers you a brand new object storage component called {{%bold%}}Stratus{{%/bold%}} in {{%bold%}}Early Access{{%/bold%}} mode. This component is a significant upgrade to the current {{%italics%}}Cloud Scale File Store{{%/italics%}} component. You can find out more about the Stratus component {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}here{{%/link%}}.<br /><br />To use the Stratus component in the Early Access mode, email us at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} 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 {{%badge%}}delete_file(){{%/badge%}} method. The response returns a boolean value ( true or false) based on the status of deletion. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/file-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}filestore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/file-store/get-folder-instance/" %}}folder instance{{%/link%}}{{%badge%}}folder_service{{%/badge%}} 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>{{%badge%}}file_ID{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the ID of the file to be deleted.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Delete a file filestore_service = app.filestore() folder_service = filestore_service.folder(5249000000016011) folder_service.delete_file(5249000000032063) {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} ##### 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-03-18T07:41:08.757Z" 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 {{%link href="/en/cloud-scale/help/mail/introduction" %}}Catalyst Mail{{%/link%}} 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 {{%badge%}}app{{%/badge%}} reference used in the code below is the {{%link href="/en/sdk/python/v1/setup/#initializing-the-sdk" %}}Python object{{%/link%}} returned as a response during SDK initialization. You can create a new {{%badge%}}mail_service{{%/badge%}}instance as shown below. Also note that this component instance will be used in multiple scenarios while implementing the Catalyst Mail service in your application. {{%code class="language-python" scroll="set-scroll" %}}#Get a mail component instance mail_service = app.email() {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.757Z" 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 {{%bold%}}maximum supported limits{{%/bold%}} for email recipients and file attachments in a single send mail operation are specified below: * {{%bold%}}To address:{{%/bold%}} 10 * {{%bold%}}CC:{{%/bold%}} 10 * {{%bold%}}BCC:{{%/bold%}} 5 * {{%bold%}}Reply to:{{%/bold%}} 5 * {{%bold%}}Number of file attachments:{{%/bold%}} 5 * {{%bold%}}Size of file attachments:{{%/bold%}} 15 MB (through a single file or multiple files upto 5 files) {{%note%}}{{%bold%}}Note:{{%/bold%}} The subject, sender, and atleast one recipient email addresses are mandatory. Other attributes of the email are optional.{{%/note%}} #### 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 {{%link href="/en/cloud-scale/help/mail/email-configuration/" %}}configure{{%/link%}} 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. {{%code class="language-python line-numbers" scroll="set-scroll" %}}#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>" } {{% /code%}} ### Send Email You must now pass the configured dictionary to the {{%badge%}}send_mail(){{%/badge%}} method as an argument as shown in the code below. This will initiate the email sending process. To know more about the component instance {{%badge%}}mail_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/mail/get-component-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}mail_obj{{%/badge%}}</td> <td>Object</td> <td>A {{%bold%}}Mandatory{{%/bold%}} 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> {{%code class="language-python" scroll="set-scroll" %}}#Send Email mail_service = app.email() response = mail_service.send_mail(mail_obj) {{% /code%}} A sample response is given below : {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ 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>" } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} ##### 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-03-18T07:41:08.757Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}Catalyst NoSQL{{%/link%}} 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 {{%badge%}}app{{%/badge%}} reference used to create the NoSQL instance is the Python object returned as the response during the {{%link href="/en/sdk/python/v1/setup/#initializing-the-sdk" %}}SDK initialization{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}} #Create a NoSQL instance nosql = app.nosql(){{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.757Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}Catalyst NoSQL{{%/link%}} 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 {{%badge%}}getTable(){{%/badge%}} 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 {{%badge%}}nosql{{%/badge%}} reference used in the code snippets below is the component instance created to perform these operations. {{%code class="language-python" scroll="set-scroll" %}}# Create a NoSQL instance nosql = app.nosql() #Get table metadata using the table name table_details = nosql.get_table_resources("EmpTable") print(table_details){{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If you rename the table, you will need to update the changes in your code.{{%/note%}} <br> ### Get Metadata of All Tables Catalyst enables you to fetch the metadata of all the tables in your project using the {{%badge%}}get_all_tables(){{%/badge%}} method as shown below. {{%code class="language-python" scroll="set-scroll" %}}table_res = nosql.get_all_tables() print(table_res){{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.757Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}Catalyst NoSQL{{%/link%}} 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 {{%badge%}}nosql{{%/badge%}} reference used in the code snippets below is the {{%link href="/en/sdk/python/v1/cloud-scale/nosql/get-component-instance/" %}}component instance{{%/link%}} created earlier. {{%code class="language-python" scroll="set-scroll" %}}table = nosql.get_table('employees') # Create a table instance with the table name{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.758Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}Catalyst NoSQL{{%/link%}} 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 {{%link href="/en/cloud-scale/help/nosql/working-with-data/introduction/#the-catalyst-custom-json-format" %}}Custom JSON format{{%/link%}}. 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 {{%link href="/en/cloud-scale/help/nosql/working-with-data/introduction/#supported-data-types" %}}supported data types{{%/link%}} 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 {{%link href="/en/cloud-scale/help/nosql/components/#table-keys" %}}Table Keys help section{{%/link%}} 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: {{%code class="language-python" scroll="set-scroll" %}}# 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" } } } }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.758Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}NoSQL{{%/link%}} 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 {{%link href="/en/cloud-scale/help/nosql/working-with-data/introduction/#the-catalyst-custom-json-format" %}}Catalyst custom JSON format{{%/link%}}, and the {{%link href="/en/cloud-scale/help/nosql/working-with-data/introduction/#supported-data-types" %}}supported data types{{%/link%}} to learn these topics in detail. {{%note%}}{{%bold%}}Note:{{%/bold%}} Catalyst enables you to insert a maximum of 25 items in bulk in a NoSQL table with a single SDK operation.{{%/note%}} <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 {{%link href="/en/cloud-scale/help/nosql/components/#table-keys" %}}partition key and sort key{{%/link%}} 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 {{%badge%}}fruitType{{%/badge%}} and {{%badge%}}availability{{%/badge%}} are provided as a list {{%badge%}}fruitProperties{{%/badge%}}. The item is then inserted using the {{%badge%}}insert_items(){{%/badge%}} method. {{%code class="language-python" scroll="set-scroll" %}}# 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' }){{%/code%}} <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>{{%badge%}}contains{{%/badge%}}</td> </tr> <tr> <td>NOT_CONTAINS</td> <td>{{%badge%}}not_contains{{%/badge%}}</td> </tr> <tr> <td>BEGINS_WITH</td> <td>{{%badge%}}begins_with{{%/badge%}}</td> </tr> <tr> <td>ENDS_WITH</td> <td>{{%badge%}}ends_with{{%/badge%}}</td> </tr> <tr> <td>IN</td> <td>{{%badge%}}in{{%/badge%}}</td> </tr> <tr> <td>NOT_IN</td> <td>{{%badge%}}not_in{{%/badge%}}</td> </tr> <tr> <td>BETWEEN</td> <td>{{%badge%}}between{{%/badge%}}</td> </tr> <tr> <td>NOT_BETWEEN</td> <td>{{%badge%}}not_between{{%/badge%}}</td> </tr> <tr> <td>EQUALS</td> <td>{{%badge%}}equals{{%/badge%}}</td> </tr> <tr> <td>NOT_EQUALS</td> <td>{{%badge%}}not_equals{{%/badge%}}</td> </tr> <tr> <td>GREATER_THAN</td> <td>{{%badge%}}greater_than{{%/badge%}}</td> </tr> <tr> <td>LESS_THAN</td> <td>{{%badge%}}less_than{{%/badge%}}</td> </tr> <tr> <td>GREATER_THAN_OR_EQUALS</td> <td>{{%badge%}}greater_equal{{%/badge%}}</td> </tr> <tr> <td>LESSER_THAN_OR_EQUALS</td> <td>{{%badge%}}less_equal{{%/badge%}}</td> </tr> <tr> <td>AND</td> <td>{{%badge%}}AND{{%/badge%}}</td> </tr> <tr> <td>OR</td> <td>{{%badge%}}OR{{%/badge%}}</td> </tr> </tbody> </table> <br> The example below illustrates this by defining a condition for the nested attribute {{%badge%}}fruitColour{{%/badge%}} in the existing data to contain the value "Yellow". This attribute is part of the attribute {{%badge%}}fruitProperties{{%/badge%}}. If the condition is satisfied, the attributes {{%badge%}}fruitType{{%/badge%}} and {{%badge%}}availability{{%/badge%}} are added to the items. The item is then inserted using the {{%badge%}}insert_items(){{%/badge%}} method. {{%code class="language-python" scroll="set-scroll" %}}# 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' }){{%/code%}} <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 {{%badge%}}between{{%/badge%}} operator. The condition states that only when the attribute {{%badge%}}count{{%/badge%}} has values between 0 and 10 in the existing data, the attributes {{%badge%}}backupID{{%/badge%}} and {{%badge%}}count{{%/badge%}} are to be inserted in those items. The item is inserted with the {{%badge%}}insert_items(){{%/badge%}} method. {{%code class="language-python" scroll="set-scroll" %}}# 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' }){{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.758Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}NoSQL{{%/link%}} table after you construct them. An item can be updated by identifying it using its {{%link href="/en/cloud-scale/help/nosql/components/#table-keys" %}}primary keys{{%/link%}}. 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst enables you to update a maximum of 25 items in bulk in a NoSQL table with a single SDK operation.{{%/note%}} The example below illustrates this by retrieving an item with the partition key {{%badge%}}fruitName{{%/badge%}} and the sort key {{%badge%}}location{{%/badge%}}. The attributes of this item to be updated are {{%badge%}}color{{%/badge%}} and {{%badge%}}taste{{%/badge%}}. 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. {{%code class="language-python" scroll="set-scroll" %}}# 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){{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.758Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}NoSQL{{%/link%}} table by identifying them with their {{%link href="/en/cloud-scale/help/nosql/components/#table-keys" %}}primary keys{{%/link%}}. 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst enables you to fetch a maximum of 100 items from a NoSQL table in a single SDK read operation. {{%/note%}} The example below illustrates fetching an item identified by its partition key {{%badge%}}fruit{{%/badge%}} and the sort key {{%badge%}}location{{%/badge%}} using {{%badge%}}fetch_item(){{%/badge%}}. Specific attributes such as {{%badge%}}properties{{%/badge%}} and {{%badge%}}taste{{%/badge%}} are filtered to be fetched using {{%badge%}}required_objects{{%/badge%}}. {{%code class="language-python" scroll="set-scroll" %}}# 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){{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.758Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}NoSQL{{%/link%}} table and retrieve data by identifying the items using the {{%link href="/en/cloud-scale/help/nosql/components/#table-keys" %}}primary keys{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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 {{%badge%}}start_key{{%/badge%}} token received in the SDK response and construct the logic for pagination.{{%/note%}} 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>{{%badge%}}contains{{%/badge%}}</td> </tr> <tr> <td>NOT_CONTAINS</td> <td>{{%badge%}}not_contains{{%/badge%}}</td> </tr> <tr> <td>BEGINS_WITH</td> <td>{{%badge%}}begins_with{{%/badge%}}</td> </tr> <tr> <td>ENDS_WITH</td> <td>{{%badge%}}ends_with{{%/badge%}}</td> </tr> <tr> <td>IN</td> <td>{{%badge%}}in{{%/badge%}}</td> </tr> <tr> <td>NOT_IN</td> <td>{{%badge%}}not_in{{%/badge%}}</td> </tr> <tr> <td>BETWEEN</td> <td>{{%badge%}}between{{%/badge%}}</td> </tr> <tr> <td>NOT_BETWEEN</td> <td>{{%badge%}}not_between{{%/badge%}}</td> </tr> <tr> <td>EQUALS</td> <td>{{%badge%}}equals{{%/badge%}}</td> </tr> <tr> <td>NOT_EQUALS</td> <td>{{%badge%}}not_equals{{%/badge%}}</td> </tr> <tr> <td>GREATER_THAN</td> <td>{{%badge%}}greater_than{{%/badge%}}</td> </tr> <tr> <td>LESS_THAN</td> <td>{{%badge%}}less_than{{%/badge%}}</td> </tr> <tr> <td>GREATER_THAN_OR_EQUALS</td> <td>{{%badge%}}greater_equal{{%/badge%}}</td> </tr> <tr> <td>LESSER_THAN_OR_EQUALS</td> <td>{{%badge%}}less_equal{{%/badge%}}</td> </tr> <tr> <td>AND</td> <td>{{%badge%}}AND{{%/badge%}}</td> </tr> <tr> <td>OR</td> <td>{{%badge%}}OR{{%/badge%}}</td> </tr> </tbody> </table> <br> In the example below, the query is executed using the {{%badge%}}queryTable(){{%/badge%}} method by identifying the items using the partition key {{%badge%}}fruitType{{%/badge%}} 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 {{%badge%}}consistent_read{{%/badge%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} {{%code class="language-python" scroll="set-scroll" %}}# 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){{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.758Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}NoSQL{{%/link%}} index and retrieve data by identifying the items using the {{%link href="/en/cloud-scale/help/nosql/components/#table-keys" %}}primary keys{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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 {{%badge%}}start_key{{%/badge%}} token received in the SDK response and construct the logic for pagination.{{%/note%}} 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>{{%badge%}}contains{{%/badge%}}</td> </tr> <tr> <td>NOT_CONTAINS</td> <td>{{%badge%}}not_contains{{%/badge%}}</td> </tr> <tr> <td>BEGINS_WITH</td> <td>{{%badge%}}begins_with{{%/badge%}}</td> </tr> <tr> <td>ENDS_WITH</td> <td>{{%badge%}}ends_with{{%/badge%}}</td> </tr> <tr> <td>IN</td> <td>{{%badge%}}in{{%/badge%}}</td> </tr> <tr> <td>NOT_IN</td> <td>{{%badge%}}not_in{{%/badge%}}</td> </tr> <tr> <td>BETWEEN</td> <td>{{%badge%}}between{{%/badge%}}</td> </tr> <tr> <td>NOT_BETWEEN</td> <td>{{%badge%}}not_between{{%/badge%}}</td> </tr> <tr> <td>EQUALS</td> <td>{{%badge%}}equals{{%/badge%}}</td> </tr> <tr> <td>NOT_EQUALS</td> <td>{{%badge%}}not_equals{{%/badge%}}</td> </tr> <tr> <td>GREATER_THAN</td> <td>{{%badge%}}greater_than{{%/badge%}}</td> </tr> <tr> <td>LESS_THAN</td> <td>{{%badge%}}less_than{{%/badge%}}</td> </tr> <tr> <td>GREATER_THAN_OR_EQUALS</td> <td>{{%badge%}}greater_equal{{%/badge%}}</td> </tr> <tr> <td>LESSER_THAN_OR_EQUALS</td> <td>{{%badge%}}less_equal{{%/badge%}}</td> </tr> <tr> <td>AND</td> <td>{{%badge%}}AND{{%/badge%}}</td> </tr> <tr> <td>OR</td> <td>{{%badge%}}OR{{%/badge%}}</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 {{%badge%}}fruitColor{{%/badge%}} and specifying the condition value as "yellow". We also specify an additional condition with the attribute {{%badge%}}fruitType{{%/badge%}} matching "citrus". The query is done using the {{%badge%}}query_index(){{%/badge%}} method. Catalyst NoSQL also lets you define other elements of the query, such using {{%badge%}}consistent_read{{%/badge%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} {{%code class="language-python" scroll="set-scroll" %}} # 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){{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.758Z" 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 {{%link href="/en/cloud-scale/help/nosql/introduction/" %}}NoSQL{{%/link%}} table in Catalyst by identifying them using the {{%link href="/en/cloud-scale/help/nosql/components/#table-keys" %}}primary keys{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst enables you to delete a maximum of 25 items in bulk from a NoSQL table with a single SDK operation.{{%/note%}} The delete operation is performed using the{{%badge%}}delete_items(){{%/badge%}} method as shown in the example below. The item with the partition key {{%badge%}}fruit{{%/badge%}} matching "apple" and the sort key {{%badge%}}location{{%/badge%}} matching "USA" is deleted. You can also specify additional conditions for delete. Only if the item matches the condition, it will be deleted. {{%code class="language-python" scroll="set-scroll" %}} # 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){{%/code%}} ##### 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-03-18T07:41:08.758Z" 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 {{%link href="/en/cloud-scale/help/push-notifications/introduction" %}}Catalyst Cloud Scale Push notifications{{%/link%}} 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 {{%link href="/en/api/code-reference/cloud-scale/push-notifications/web/enable-web-push-notifications/#EnableWebNotifications" %}}this code snippet{{%/link%}} in your web client. You can also access this code from the {{%badge%}}Push Notifications{{%/badge%}} section in your Catalyst remote console. You must ensure that you include the {{%link href="/en/sdk/web/v4/overview" %}}web initialization script{{%/link%}}. #### 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 {{%badge%}}app{{%/badge%}} reference used in the code below is the {{%link href="/en/sdk/python/v1/setup/#initializing-the-sdk" %}}Python object{{%/link%}} returned as a response during SDK initialization. You can create a new {{%badge%}}push_notification_service{{%/badge%}}instance as shown below. We will refer to this component instance while sending push notifications from your Catalyst application. {{%code class="language-python" scroll="set-scroll" %}}#Get push notification instance push_notification_service = app.push_notification() {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.758Z" 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 {{%bold%}}50 users{{%/bold%}} in a single function call. You can add the {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/#authentication-and-user-basics" %}}user IDs{{%/link%}} of all users to be notified in an array as shown below. You must then pass the array to the {{%badge%}}send_notification(){{%/badge%}} 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 {{%badge%}}push_notification_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/push-notifications/get-component-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}notification_message{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the notification message.</td> </tr> <tr> <td>{{%badge%}}user_list{{%/badge%}}</td> <td>Array</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the IDs or email addresses of the users to whom notification has to be sent.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#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)) {{% /code%}} 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 {{%badge%}}send_notification(){{%/badge%}} along with the message string in the same way. {{%code class="language-python" scroll="set-scroll" %}}#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)) {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.758Z" 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 {{%link href="/en/cloud-scale/help/push-notifications/introduction" %}}Catalyst Cloud Scale Push Notifications{{%/link%}} 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 ({{%badge%}}appId{{%/badge%}}) 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 {{%badge%}}appId{{%/badge%}} can be fetched by {{%link href="/en/cloud-scale/help/push-notifications/android/#configure-and-enroll-for-android-push-notifications" %}}configuring Android Push Notifications service{{%/link%}} directly in the Catalyst console. {{%link href="/en/sdk/android/v2/cloud-scale/push-notifications/register-device/" %}}Learn about registering your Android app using Android SDK.{{%/link%}} {{%link href="/en/sdk/ios/v2/cloud-scale/push-notifications/register-device/" %}}Learn about registering your iOS app using iOS SDK.{{%/link%}} {{%link href="/en/sdk/flutter/v2/cloud-scale/push-notifications/register-device/" %}}Learn about registering your mobile apps (Android or iOS) using Flutter SDK.{{%/link%}} 2. The mobile application must mandatorily use the {{%link href="/en/cloud-scale/help/authentication/introduction/" %}}Catalyst Serverless Authentication{{%/link%}} 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 {{%badge%}}push_notification().mobile(){{%/badge%}} method, by passing the generated {{%badge%}}appID{{%/badge%}} 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. {{%code class="language-javascript"%}}mobile_notification = app.push_notification().mobile("1234567890"){{%/code%}} Here, {{%bold%}}1234567890{{%/bold%}} is the {{%badge%}}appID{{%/badge%}}. Alternatively, if your application involves Catalyst scope-based access, you can pass the {{%badge%}}ZCProject project{{%/badge%}} parameter along with the {{%badge%}}appID{{%/badge%}}. {{%link href="/en/sdk/python/v1/sdk-scopes/" %}}Learn more about Catalyst SDK Scopes{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}mobile_notification = app.push_notification().mobile("1234567890", ZCProject project){{% /code%}} #### Send Android Push Notifications After you have {{%link href="/en/sdk/flutter/v2/cloud-scale/push-notifications/register-device/" %}}registered your Android application{{%/link%}} with Catalyst for sending push notifications, you can use the {{%badge%}}send_android_notification(){{%/badge%}} method to send push notifications to your application. You will need to pass two parameters to the {{%badge%}}send_android_notification(){{%/badge%}} method: * {{%badge%}}notify_obj{{%/badge%}} - An object with the details of the push notification message. * {{%badge%}}recipient{{%/badge%}} - 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 {{%badge%}}send_android_notification(){{%/badge%}} method in your application: {{%code class="language-javascript" scroll="set-scroll" %}}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" ){{%/code%}} {{%badge%}}badge_count{{%/badge%}} 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 {{%badge%}}send_ios_notification(){{%/badge%}} method to send push notifications to your application. {{%code class="language-python"%}}mobile_notification.send_ios_notification( notify_obj={"message": "test_notification", "badge_count": 1}, recipient="testuser@zylker.com" ){{%/code%}} ##### 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-03-18T07:41:08.759Z" 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 {{%link href="/en/cloud-scale/help/search-integration/introduction" %}}Catalyst CloudScale Search{{%/link%}} 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 {{%badge%}}app{{%/badge%}} reference used in the code below is the {{%link href="/en/sdk/python/v1/setup/#initializing-the-sdk" %}}Python object{{%/link%}} returned as a response during SDK initialization. You can create a new {{%badge%}}search_service{{%/badge%}}instance as shown below. Also note that this component instance will be used in multiple scenarios while implementing the search component in your application. {{%code class="language-python" scroll="set-scroll" %}}#Get a search component instance search_service = app.search() {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.759Z" 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 {{%badge%}}execute_search_query(){{%/badge%}} 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. {{%code class="language-python line-numbers" scroll="set-scroll" %}}#Create a dictionary config = { 'search': 'burrows*', 'search_table_columns': { 'Employee': ['EmployeeID'], 'Users': ['Name'] } } {{% /code%}} ### Execute Search Query The dictionary object created in the previous section is passed as a parameter to the {{%badge%}}execute_search_query(){{%/badge%}} method, which returns the response. To know more about the component instance {{%badge%}}search_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/search/get-component-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}config{{%/badge%}}</td> <td>Object</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the details of the search patterns.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Execute Search query search_service = app.search() response_data = search_service.execute_search_query(config) {{% /code%}} A sample response will be shown below : {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ AlienCity: [ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-13 13:49:19:475", CITYNAME: "Dallas", CREATEDTIME: "2021-08-13 13:49:19:475", ROWID: "2136000000008508" } ] } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} ##### Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page lists all the Python SDK methods required to carry out Stratus operations through code." last_updated: "2026-03-18T07:41:08.759Z" 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 {{%link href="/en/cloud-scale/help/stratus/introduction" %}}Stratus{{%/link%}} is Catalyst's robust and powerful storage solution. You can store data of any format in the form of {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}Objects{{%/link%}} in containers called {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}}. Each Bucket and every individual object in the bucket has a secure {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} and {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/#bucket-url" %}}Bucket URL{{%/link%}}. You can perform upload and download operations on objects and even provide {{%link href="/en/cloud-scale/help/stratus/stratus-permissions/#custom-permissions" %}}custom permissions{{%/link%}} 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>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-stratus-instance/" %}}Create Stratus Instance{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/check-bucket/" %}}Check Bucket Availability{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/list-buckets/" %}}List All Buckets{{%/link%}}</li> </ul> </td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}Create Bucket Instance{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/get-bucket-details/" %}}Get Bucket Details{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/get-bucket-cors/" %}}Get Bucket CORS{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/list-objects/" %}}List Objects in a Bucket{{%/link%}} <ul> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/list-objects/#list-all-objects-by-pagination" %}}List all Objects by Pagination{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/list-objects/#list-objects-through-iteration" %}}List Objects Through Iteration{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/check-object-availability/" %}}Check Object Availability{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/download-object/" %}}Download Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/download-object/#download-an-object" %}}Download an Object{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/download-object/#download-a-portion-of-the-object" %}}Download a Portion of the Object{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/download-object/#download-an-object-using-transfer-manager" %}}Download an Object Using Transfer Manager{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/download-object/#generate-presigned-url-to-download-an-object" %}}Generate Presigned URL to Download an Object{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/upload-object/" %}}Upload Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/upload-object/#upload-object-as-a-stream" %}}Upload Object as a Stream{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/upload-object/#upload-object-as-a-string" %}}Upload Object as a String{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/upload-object/#upload-object-with-options" %}}Upload Object with Options{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/upload-object/#upload-object-using-multipart" %}}Upload Object Using Multipart{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/upload-object/#upload-an-object-using-transfer-manager" %}}Upload an Object Using Transfer Manager{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/upload-object/#generate-presigned-url-to-upload-an-object" %}}Generate Presigned URL to Upload an Object{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/extract-zipped-object/" %}}Extract a Zipped Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/extract-zipped-object/#get-zip-extraction-status" %}}Get Zip Extraction Status{{%/link%}} </ul> </li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/copy-objects/" %}}Copy Object{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/rename-move-object/" %}}Rename and Move Operations on an Object{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/delete-objects/" %}}Delete Objects{{%/link%}} <ul> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/delete-objects/#delete-a-single-object" %}}Delete a Single Object{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/delete-objects/#delete-a-specific-version-of-an-object-after-a-specific-time"%}}Delete a Specific Version of an Object after a Specific Time{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/delete-objects/#delete-multiple-objects" %}}Delete Multiple Objects{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/delete-objects/#truncate-bucket" %}}Truncate Bucket{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/delete-objects/#delete-a-path-in-the-bucket" %}}Delete a Path in the Bucket{{%/link%}}</li> </ul> </li> </td> </tr> <tr> <td>Object Operations</td> <td> <ul> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-object-instance/" %}}Create Object Instance{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/list-object-versions/" %}}List Object Versions{{%/link%}} <ul> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/list-object-versions/#list-all-versions-of-an-object-through-pagination" %}}List All Versions of an Object Through Pagination{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/list-object-versions/#list-all-versions-of-the-object-through-iteration" %}}List All Versions of the Object Through Iteration{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/object-details/" %}}Get Object Details{{%/link%}} <ul> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/object-details/#get-details-of-all-objects" %}}Get Details of All Objects{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/object-details/#get-details-of-a-particular-version-of-the-object" %}}Get Details of a Particular Version of the Object{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/put-object-meta/" %}}Put Object Meta Data{{%/link%}}</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-03-18T07:41:08.759Z" 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 {{%badge%}}stratus{{%/badge%}} 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 {{%badge%}}app{{%/badge%}} reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/setup/#initializing-the-sdk" %}}catalyst instance{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}stratus = app.stratus(){{%/code%}} -------------------------------------------------------------------------------- title: "Check Bucket Availability" description: "This page lists the Python SDK method to check if the bucket exists in your project." last_updated: "2026-03-18T07:41:08.759Z" 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 {{%badge%}}head_bucket(){{%/badge%}} 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 {{%badge%}}stratus{{%/badge%}} reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-stratus-instance/" %}}component instance{{%/link%}}. 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>{{%badge%}}bucket_name{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique name of the bucket{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}throw_err{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If you set this parameter as "{{%bold%}}true{{%/bold%}}", then it will throw an error when the bucket is not found in the project. The default value is "{{%bold%}}false{{%/bold%}}"</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}bucket_res = stratus.head_bucket('bucket_name', throw_err=False) print(bucket_res) {{%/code%}} #### Possible Errors {{%note%}}{{%bold%}}Note:{{%/bold%}} If you use the SDK with the {{%badge%}}throw_err{{%/badge%}} 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.{{%/note%}} <table class="content-table"> <thead> <tr> <th class="w30p">Error Code</th> <th class="w70p">Meaning</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}{{%bold%}}404{{%/bold%}}{{%/badge%}}</td> <td>Not Found. Bucket Not found in Stratus.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}401{{%/bold%}}{{%/badge%}}</td> <td>Unauthorized/Access Denied - User doesn't have permission to perform the particular operation.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}403{{%/bold%}}{{%/badge%}}</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-03-18T07:41:08.759Z" 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%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} The {{%badge%}}stratus{{%/badge%}} reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-stratus-instance/" %}}component instance{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}buckets = stratus.list_buckets() # return all the buckets and it's details print(buckets){{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}[ { "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" } ] {{%/code%}} -------------------------------------------------------------------------------- title: "Create Bucket Instance" description: "This page lists the Python SDK method to create a bucket instance." last_updated: "2026-03-18T07:41:08.759Z" 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 {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}} in Stratus. The {{%badge%}}stratus{{%/badge%}} reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-stratus-instance/" %}}component instance{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}bucket = stratus.bucket('bucket_name'){{%/code%}} -------------------------------------------------------------------------------- title: "Get Bucket Details" description: "This page lists the Python SDK method to get the details of a bucket." last_updated: "2026-03-18T07:41:08.759Z" 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 {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}bucket_details = bucket.get_details() print(bucket_details) {{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "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" } {{%/code%}} -------------------------------------------------------------------------------- title: "Get Bucket CORS" description: "This page lists the Python SDK method to get the current CORS configuration of the bucket." last_updated: "2026-03-18T07:41:08.759Z" 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 {{%badge%}}get_cors(){{%/badge%}} 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 {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} CORS of a bucket can be edited by any user that has or has been granted {{%badge%}}Write{{%/badge%}} permission for Stratus component in the project, using the {{%link href="/en/getting-started/set-up-a-catalyst-project/profiles-and-permissions/" %}}Profiles & Permissions{{%/link%}} section. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can find out more about Bucket CORS from this {{%link href="/en/cloud-scale/help/stratus/stratus-config/bucket-cors/" %}}help section{{%/link%}}.{{%/note%}} {{%code class="language-python" scroll="set-scroll" %}}res = bucket.get_cors() print(res){{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.759Z" 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 {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} 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>{{%badge%}}max_keys{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will contain the maximum limit of objects that can be listed by pagination.</td> </tr> <tr> <td>{{%badge%}}continuation_token{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Mandatory{{%/bold%}} parameter. Will contain the token to get the next set of objects.</td> </tr> <tr> <td>{{%badge%}}prefix{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. To list objects that match the prefix value.</td> </tr> <tr> <td>{{%badge%}}order_by{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. To list objects either in ascending or descending order. {{%bold%}}Default Value{{%/bold%}}: {{%badge%}}asc{{%/badge%}}</td> </tr> <tr> <td>{{%badge%}}folder_listing{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} 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. {{%bold%}}Default Value{{%/bold%}}: {{%badge%}}false{{%/badge%}}<br />For instance, if you set value as {{%badge%}}true{{%/badge%}}; the root-level objects alone will be listed. If you set the value as {{%badge%}}false{{%/badge%}}; 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 {{%badge%}}max_keys{{%/badge%}}. Using prefix, you can list objects that only match the {{%badge%}}prefix:{{%/badge%}}. The response we get will contain the following properties of the bucket, which will be stored in {{%badge%}}moreOptions{{%/badge%}}: * {{%badge%}}key count{{%/badge%}}: Will contain the value of the number of objects that are being returned * {{%badge%}}max_key{{%/badge%}}: The maximum limit of objects that can be returned * {{%badge%}}Truncated{{%/badge%}}: Will contain the status to notify if a bucket is truncated or not. * {{%badge%}}contents{{%/badge%}}: List of object details * {{%badge%}}next_token{{%/badge%}}: If the response was truncated, the value of this key must be passed as {{%badge%}}next_token{{%/badge%}} to the same method for retrieving the next set of objects. With each iteration, we will list the {{%badge%}}max_keys{{%/badge%}} number of objects and check if {{%badge%}}next_token{{%/badge%}} has been created. Using {{%badge%}}next_token{{%/badge%}} we will continue the iteration till all the objects have been listed. {{%code class="language-python" scroll="set-scroll" %}}# 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') {{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "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" } ] } {{%/code%}} ### 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 {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-python" scroll="set-scroll" %}}# 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){{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "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" } {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.760Z" 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 {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. If you have enabled {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} for your bucket, then you need to pass the {{%badge%}}version_id {{%/badge%}} 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: - {{%badge%}}**true**{{%/badge%}}: If the object is available, the specified version is available, and if the user has the relevant permissions to access the objects. - {{%badge%}}**false**{{%/badge%}}: - 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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object.</td> </tr> <tr> <td>{{%badge%}}version_id{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. Will hold the unique version ID of the object, if {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled.</td> </tr> <tr> <td>{{%badge%}}throw_err{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If you set this parameter as "{{%bold%}}true{{%/bold%}}", then it will throw an error when the bucket is not found in the project. The default value is "{{%bold%}}false{{%/bold%}}"</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}head_object_res = bucket.head_object( "sam/out/sample.txt", 'version_id', throw_err=False) print(head_object_res){{%/code%}} #### Possible Errors {{%note%}}{{%bold%}}Note:{{%/bold%}} If you use the SDK with the {{%badge%}}throw_err{{%/badge%}} 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.{{%/note%}} <table class="content-table"> <thead> <tr> <th class="w30p">Error Code</th> <th class="w70p">Meaning</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}{{%bold%}}404{{%/bold%}}{{%/badge%}}</td> <td>Not Found. Object Not found in Stratus.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}401{{%/bold%}}{{%/badge%}}</td> <td>Unauthorized/Access Denied - User doesn't have permission to perform the particular operation.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}403{{%/bold%}}{{%/badge%}}</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-03-18T07:41:08.760Z" 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 {{%link href="/en/cloud-scale/help/stratus/objects/manage-object/download-object/" %}}download a particular object{{%/link%}}, multiple objects, or version of the object. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. The first step of the download operation is a {{%badge%}}GET{{%/badge%}} operation that retrieves the required object from the bucket. To be able to download an object, the requester must have {{%badge%}}READ{{%/badge%}} access permissions. However, owners of the bucket do have the option to grant {{%badge%}}READ{{%/badge%}} access permissions to users, allowing them to download the object without using the required response headers. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for your bucket, you need to pass the {{%badge%}}versionId{{%/badge%}} to download the particular version of the object. If no {{%badge%}}versionId{{%/badge%}} 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 {{%badge%}}versionId{{%/badge%}} param with the value "{{%badge%}}topVersion{{%/badge%}}". {{%code class="language-python" scroll="set-scroll" %}}res = bucket.get_object("sam/out/sample.txt") # download the object to local machine file = open('file_path','wb') file.write(res){{%/code%}} ### Download a Portion of the Object The following SDK method is used with the {{%badge%}}range{{%/badge%}} parameter. The range parameter allows you to download a specific {{%badge%}}range{{%/badge%}} of bytes of an object. {{%code class="language-python" scroll="set-scroll" %}}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){{%/code%}} ### 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** {{%badge%}}bucket{{%/badge%}}: This is the bucket instance you need to have initialized earlier using this {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}SDK method{{%/link%}}. **Ensure the following packages are imported** {{%code class="language-python" scroll="set-scroll" %}}from zcatalyst_sdk.stratus.transfer_manager import TransferManager {{%/code%}} {{%code class="language-python" scroll="set-scroll" %}}transfer_manager = TranferManager(bucket){{%/code%}} #### Get Iterable Object It return the iterable object parts. User can write these parts to our local machine using iterator. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} {{%info%}}{{%bold%}}Info:{{%/bold%}} Ensure you provide {{%badge%}}part_size{{%/badge%}} in {{%bold%}}Mb{{%/bold%}}.{{%/info%}} {{%code class="language-python" scroll="set-scroll" %}}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) {{%/code%}} #### Generate Object Part Downloaders When a user needs to download a large file (example: 10 GB file), using the {{%badge%}}get_object(){{%/badge%}} method is not practical. Instead, the user can opt for this SDK method. By calling the {{%badge%}}generate_part_downloaders(){{%/badge%}} method with the parameters {{%badge%}}key(str){{%/badge%}} and {{%badge%}}part_size(Long){{%/badge%}}, 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. {{%code class="language-python" scroll="set-scroll" %}}res = transfer_manager.generate_part_downloaders("sam/out/sample.txt",20) file = open('file_path','wb') for part in res: file.write(part()){{%/code%}} {{%info%}}{{%bold%}}Info:{{%/bold%}} 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.{{%/info%}} ### 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 {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}url_action{{%/badge%}}</td> <td>{{%bold%}}Request Method{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. This is the parameter that will allow you to generate a presigned URL for a download(GET) action. <ul> <li>{{%badge%}}**GET**{{%/badge%}}: To download an object</li> </ul> </td> </tr> <tr> <td>{{%badge%}}expiry{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. The URL validity time in seconds. <ul> <li>Default value: {{%bold%}}3600 seconds{{%/bold%}}</li> <li>Minimum value: {{%bold%}}30 seconds{{%/bold%}}</li> <li>Maximum value: {{%bold%}}7 days{{%/bold%}}</li> </ul> </td> </tr> <tr> <td>{{%badge%}}active_from{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. This param will contain the time after which the URL is valid. Maximum value is {{%bold%}}7 days{{%/bold%}}. URLs are made active as soon as they are generated by default.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}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){{%/code%}} **Example Response for Generating a Presigned URL for Download** {{%code class="language-json" scroll="set-scroll" %}}{ "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" }{{%/code%}} **Example Snippet Illustrating Usage of Presigned URL to Download an Object** {{%code class="language-python" scroll="set-scroll" %}}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) {{%/code%}} -------------------------------------------------------------------------------- title: "Upload Object" description: "This page lists the Python SDK method to upload objects to a bucket." last_updated: "2026-03-18T07:41:08.760Z" 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 {{%link href="/en/cloud-scale/help/stratus/objects/upload-object/" %}}upload objects{{%/link%}} to the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}bucket{{%/link%}} 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 {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. If you do not have {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} 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 {{%badge%}}version_id{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ### 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. {{%code class="language-python" scroll="set-scroll" %}}file = open('file_path','rb') res = bucket.put_object("sam/out/sample.txt",file) print(res){{%/code%}} ### 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; {{%badge%}}put_object(){{%/badge%}} {{%code class="language-python" scroll="set-scroll" %}}res = bucket.put_object("sam/out/sample.txt",'content of the file') print(res){{%/code%}} ### Upload Object with Options Using this SDK method, you can use the following options while you upload an object. * {{%badge%}}**overwrite**{{%/badge%}}: 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**'. * {{%badge%}}**ttl**{{%/badge%}}: 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**. * {{%badge%}}**meta_data**{{%/badge%}}: This is an option you can use to upload {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#metadata" %}}meta details{{%/link%}} of the object that is being uploaded. * {{%badge%}}**content_type**{{%/badge%}}: This is an option you can provide, if you need to set the MIME type of the object. {{%code class="language-python" scroll="set-scroll" %}}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){{%/code%}} ### 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. {{%code class="language-python" scroll="set-scroll" %}}# 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){{%/code%}} This SDK method will return a {{%badge%}}task_id{{%/badge%}}. You can use this {{%badge%}}task_id{{%/badge%}} in this {{%link href="/en/sdk/python/v1/cloud-scale/stratus/extract-zipped-object/#get-zip-extraction-status" %}}SDK method{{%/link%}} to find out the status of the extraction. **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ 'task_id': '1234263749' }{{%/code%}} ### 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%}}{{%bold%}}Note:{{%/bold%}} It is recommended that you consider {{%bold%}}Multipart Upload{{%/bold%}} as the preferred method to upload objects that are {{%bold%}}100 MB or larger{{%/bold%}}.{{%/note%}} #### 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** {{%badge%}}bucket{{%/badge%}}: This is the bucket instance you need to have initialized earlier using this {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}SDK method{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}init_res = bucket.initiate_multipart_upload(key="") print(init_res){{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ bucket: 'zcstratus123-development', key: 'objectName.txt', upload_id: '01j7xbm4vm5750zbedxqgc4q6m', status: 'PENDING' }{{%/code%}} #### 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. {{%code class="language-python" scroll="set-scroll" %}}upload_res = bucket.upload_part(key="",upload_id="", part_number=3, body=open('file_path','rb')) print(upload_res){{%/code%}} #### 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 {{%badge%}}get_multipart_upload_summary(){{%/badge%}} method. {{%code class="language-python" scroll="set-scroll" %}}summary_res = bucket.get_multipart_upload_summary(key="", upload_id="") print(summary_res){{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "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 } ] }{{%/code%}} #### 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 {{%badge%}}complete_multipart_upload(){{%/badge%}} method. {{%code class="language-python" scroll="set-scroll" %}}complete_res = bucket.complete_multipart_upload(key="", upload_id="") print(complete_res){{%/code%}} **Example SDK Implementation** {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}from concurrent.futures import ThreadPoolExecutor import zcatalyst_sdk{{% /panel_without_adjustment %}} {{%code class="language-python" scroll="set-scroll" %}}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{{%/code%}} ### 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** {{%badge%}}bucket{{%/badge%}}: This is the bucket instance you need to have initialized earlier using this {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}SDK method{{%/link%}}. **Ensure the following packages are imported** {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}from zcatalyst_sdk.stratus.transfer_manager import TransferManager{{% /panel_without_adjustment %}} {{%code class="language-python" scroll="set-scroll" %}}transfer_manager = TranferManager(bucket){{%/code%}} #### 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%}}{{%bold%}}Note:{{%/bold%}} It is recommended that you consider {{%bold%}}Multipart Upload{{%/bold%}} as the preferred method to upload objects that are {{%bold%}}100 MB or larger{{%/bold%}}.{{%/note%}} #### Create Multipart Instance Using the following SDK method, we are going to generate a {{%badge%}}upload_id{{%/badge%}}. Using this ID we are going to create and return an instance that allows you to perform multipart operations on the object. {{%code class="language-python" scroll="set-scroll" %}}init_ins = transfer_manager.create_multipart_instance(key=""){{%/code%}} If you are required to create an instance for an already initialized multipart upload operation, then copy and use the code snippet given below. {{%code class="language-python" scroll="set-scroll" %}}init_ins = transfer_manager.create_multipart_instance(key="", upload_id=""){{%/code%}} #### 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 {{%badge%}}part_number{{%/badge%}} 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** * {{%badge%}}part_number{{%/badge%}}: Will have the ordering of the parts that are being uploaded. * {{%badge%}}body{{%/badge%}}: Will contain the data/content of the object. {{%code class="language-python" scroll="set-scroll" %}}upload_res = init_ins.upload_part(body=open('file_path','rb'), part_number=3) print(upload_res){{%/code%}} #### 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 {{%badge%}}get_upload_summary(){{%/badge%}} method. {{%code class="language-python" scroll="set-scroll" %}}summary_res = init_ins.get_upload_summary() print(summary_res){{%/code%}} #### 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 {{%badge%}}upload_id{{%/badge%}} to the {{%badge%}}complete_upload(){{%/badge%}} method. {{%code class="language-python" scroll="set-scroll" %}}complete_res = init_ins.complete_upload() print(complete_res){{%/code%}} #### 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%}}{{%bold%}}Note:{{%/bold%}} For object's that are {{%bold%}}larger than 2GB{{%/bold%}}, we would recommend that you use the {{%bold%}}individual SDK methods{{%/bold%}} to carry out the multipart upload operation successfully.{{%/note%}}<br /> {{%code class="language-python" scroll="set-scroll" %}}upload_res = transfer_res.put_object_as_parts(key='', body=open('file_path', 'rb'), part_size=50) print(upload_res) {{%/code%}} ### 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 {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}url_action{{%/badge%}}</td> <td>{{%bold%}}Request Method{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. This is the parameter that will allow you to generate a presigned URL for an upload(PUT) action. <ul> <li>{{%badge%}}**PUT**{{%/badge%}}: To upload an object</li> </ul> </td> </tr> <tr> <td>{{%badge%}}expiry{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. The URL validity time in seconds. <ul> <li>Default value: {{%bold%}}3600 seconds{{%/bold%}}</li> <li>Minimum value: {{%bold%}}30 seconds{{%/bold%}}</li> <li>Maximum value: {{%bold%}}7 days{{%/bold%}}</li> </ul> </td> </tr> <tr> <td>{{%badge%}}active_from{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. This param will contain the time after which the URL is valid. Maximum value is {{%bold%}}7 days{{%/bold%}}. URLs are made active as soon as they are generated by default.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}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){{%/code%}} **Example Response for Generating a Presigned URL for Upload** {{%code class="language-json" scroll="set-scroll" %}}{ "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" }{{%/code%}} **Example Snippet Illustrating Usage of Presigned URL to Upload an Object** {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import requests{{% /panel_without_adjustment %}} {{%code class="language-python" scroll="set-scroll" %}}#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') {{%/code%}} -------------------------------------------------------------------------------- title: "Extract a Zipped Object" description: "This page lists the Python SDK method to extract a zipped object." last_updated: "2026-03-18T07:41:08.760Z" 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 {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} **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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will be the name of the zip file, you need to extract</td> </tr> <tr> <td>{{%badge%}}destination{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will contain the complete {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path information{{%/link%}} of the destination, where the extracted objects will be stored in the bucket.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}unzip_res = bucket.unzip_object("sam/out/sample.zip","output/") print(unzip_res){{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "key": "sam/out/sample.zip", "destination": "output/", "task_id": "6963000000272049", "message": "Zip extract scheduled" }{{%/code%}} ### 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%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} Using the {{%badge%}}task_id{{%/badge%}} parameter, in the following SDK method, we can determine the status of the extraction. The {{%badge%}}task_id{{%/badge%}} is returned in the response of {{%badge%}}unzip_object(){{%/badge%}} method. {{%code class="language-python" scroll="set-scroll" %}}res = bucket.get_unzip_status("sam/out/sample.zip", 'task_id') print(res){{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "task_id": "6963000000272049", "status": "SUCCESS" }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.760Z" 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 {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} The {{%badge%}}key{{%/badge%}} will be the object you are going to copy, and the {{%badge%}}destination{{%/badge%}}, 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 {{%badge%}}dest_object{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} * You need to provide the complete object name, along with the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}{{%bold%}}path{{%/bold%}}{{%/link%}} for both {{%badge%}}key{{%/badge%}} and {{%badge%}}destination{{%/badge%}} values. * For example, if you have file named "{{%badge%}}kitten.png{{%/badge%}}" in the path {{%badge%}}pictures/puppy{{%/badge%}}, and you need to copy the file to {{%badge%}}pictures/kitten{{%/badge%}} path, then: <br /> {{%badge%}}key{{%/badge%}} value will be '{{%badge%}}pictures/puppy/kitten.png{{%/badge%}}'<br /> {{%badge%}}destination{{%/badge%}} value will be '{{%badge%}}pictures/kitten/kitten.png{{%/badge%}}'{{%/note%}}<br /> {{%code class="language-python" scroll="set-scroll" %}}res = bucket.copy_object("sam/out/sample.txt","output/sample.txt") print(res){{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "copy_to": "output/sample.txt", "object_key": "sam/out/sample.txt", "message": "Object copied successfully." }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.761Z" 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 {{%badge%}}rename_object(){{%/badge%}} SDK method. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. **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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>The original name of the object that you need to rename</td> </tr> <tr> <td>{{%badge%}}destination{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>The new name that you rename the object with</td> </tr> </tbody> </table> {{%note%}}{{%bold%}}Note:{{%/bold%}} * You need to provide the complete object name, along with the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}{{%bold%}}path{{%/bold%}}{{%/link%}} for both {{%badge%}}sourceObject{{%/badge%}} and {{%badge%}}destObject{{%/badge%}} values. * For example, if you have file named "{{%badge%}}kitten.png{{%/badge%}}" in the path {{%badge%}}pictures/puppy{{%/badge%}}, and you need to move or rename the file to {{%badge%}}pictures/kitten{{%/badge%}} path, then: <br /> {{%badge%}}key{{%/badge%}} value will be '{{%badge%}}pictures/puppy/kitten.png{{%/badge%}}'<br /> {{%badge%}}destination{{%/badge%}} value will be '{{%badge%}}pictures/kitten/kitten.png{{%/badge%}}'{{%/note%}}<br /> ### Rename an Object Using the {{%badge%}}rename_object(){{%/badge%}} SDK method you can rename objects present in a bucket. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} * You cannot rename objects in a bucket that has {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} 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.{{%/note%}} {{%code class="language-python" scroll="set-scroll" %}}rename_res = bucket.rename_object("sam/out/sample.txt","sam/out/update_sample.txt") print(rename_res){{%/code%}}<br /> #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "current_key": "sam/out/sample.txt", "message": "Rename successful", "rename_to": "sam/out/update_sample.txt" }{{%/code%}} ### Move an Object Using the {{%badge%}}rename_object(){{%/badge%}} 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 {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-python" scroll="set-scroll" %}}rename_res = bucket.rename_object("sam/out/sample.txt","output/sample.txt") print(rename_res){{%/code%}}<br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} You cannot perform move operations in a bucket that has {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} enabled.{{%/note%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "current_key": "sam/out/sample.txt", "message": "Rename successful", "rename_to": "sutput/sample.txt" }{{%/code%}} -------------------------------------------------------------------------------- title: "Delete Objects" description: "This page lists the Python SDK method to delete objects stores in a bucket." last_updated: "2026-03-18T07:41:08.761Z" 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 {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. **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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}version_id{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} 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>{{%badge%}}ttl{{%/badge%}}</td> <td>{{%bold%}}int{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. It allows you to schedule your delete operations. For example, if you provide the value of {{%badge%}}ttl{{%/badge%}} as {{%bold%}}60{{%/bold%}}, the delete operation will only occur after 60 seconds. The value of {{%badge%}}ttl{{%/badge%}} 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 {{%badge%}}delete_object(){{%/badge%}} method. {{%code class="language-python" scroll="set-scroll" %}}delete_res = bucket.delete_object("sam/out/sample.txt") print(delete_res){{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled on the bucket and no specific {{%badge%}}version_id{{%/badge%}} is provided, deleting an object will {{%bold%}}remove all versions{{%/bold%}} of that object by default.{{%/note%}} ### Delete a Specific Version of an Object after a Specific Time Ensure you provide the {{%badge%}}versionId{{%/badge%}} of the object if you enabled {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} for your bucket. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} You can also schedule your delete operation using the {{%badge%}}ttl{{%/badge%}} variable. For example, if you provide the value of {{%badge%}}ttl{{%/badge%}} as **100**, the delete operation will only occur after **100 seconds**. Always ensure that the value of {{%badge%}}ttl{{%/badge%}} is greater than equal to **60 seconds**. {{%code class="language-python" scroll="set-scroll" %}}delete_res = bucket.delete_object("sam/out/sample.txt", 'version_id', ttl=300) print(delete_res){{%/code%}} ### 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%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} Ensure you provide the {{%badge%}}versionId{{%/badge%}} of the object if you enabled {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} for your bucket. You can also schedule your delete operation using the {{%badge%}}ttl{{%/badge%}} variable. For example, if you provide the value of {{%badge%}}ttl{{%/badge%}} as **100**, the delete operation will only occur after **100 seconds**. Always ensure that the value of {{%badge%}}ttl{{%/badge%}} is greater than equal to **60 seconds**. {{%code class="language-python" scroll="set-scroll" %}} 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) {{%/code%}} #### Example Response for Delete Operation {{%code class="language-json" scroll="set-scroll" %}}{'message': 'Object Deletion successful.'}{{%/code%}} ### Truncate Bucket Using this SDK method you will be able to essentially every single object present in the bucket. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-python" scroll="set-scroll" %}}# delete all the objects in the bucket truncate_res = bucket.truncate() print(truncate_res) {{%/code%}} ### Delete a Path in the Bucket Using this SDK, you will be able to delete all the objects present in a {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} You need to pass the complete path to the {{%badge%}}delete_path(){{%/badge%}} method. {{%code class="language-python" scroll="set-scroll" %}}path_res = bucket.delete_path("sam/") print(path_res){{%/code%}}<br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "path": "sam/", "message": "Path deletion scheduled" }{{%/code%}} -------------------------------------------------------------------------------- title: "Create Object Instance" description: "This page lists the Python SDK method to create an object instance." last_updated: "2026-03-18T07:41:08.761Z" 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 {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}object_ins = bucket.object("sam/out/sample.txt"){{%/code%}} -------------------------------------------------------------------------------- title: "List Object Versions" description: "This page lists the Python SDK method to get versions of an object." last_updated: "2026-03-18T07:41:08.761Z" 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 {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} 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 {{%badge%}}versionId{{%/badge%}}. This SDK method allows you to get all the existing versions of an object present in a bucket by pagination. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **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>{{%badge%}}next_token{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>Will hold the value to determine the next set of versions.</td> </tr> <tr> <td>{{%badge%}}max_versions{{%/badge%}}</td> <td>{{%bold%}}int{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. Will hold the value of the maximum number of versions of the object that can be listed per iteration.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}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){{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "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" } ] }{{%/code%}} ### 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%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-python" scroll="set-scroll" %}}versions = object_ins.list_iterable_versions(2) for key in versions: print(key){{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}} { "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" }{{%/code%}} -------------------------------------------------------------------------------- title: "Get Object Details" description: "This page lists the Python SDK method to get details of objects stored in a bucket." last_updated: "2026-03-18T07:41:08.761Z" 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 {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-object-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-python" scroll="set-scroll" %}}res = object_ins.get_details() print(res){{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled, then using this SDK method will only return the latest version's object details.{{%/note%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "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" }{{%/code%}} ### 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%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **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>{{%badge%}}version_id{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} 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%}}{{%bold%}}Note{{%/bold%}}: * You need to have enabled {{%bold%}}Versioning{{%/bold%}} for your objects at least once to use this method. * You can find out more about Versioning from this {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}help documentation{{%/link%}}.{{%/note%}} {{%code class="language-python" scroll="set-scroll" %}}res = object_ins.get_details('version_id') print(res){{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "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", }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.761Z" 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 {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#metadata" %}}meta details{{%/link%}} for a particular object stored in a bucket in Stratus. The Object reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-object-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} The meta details will be passed as JSON key value pairs. For example, {"meta_key" : "meta_value"} {{%code class="language-python" scroll="set-scroll" %}}res = object_ins.put_meta({'author': 'Amelia Burrows'}) print(res){{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} * 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 {{%badge%}}**HEAD**{{%/badge%}} request method. In the response, the metadata will be listed in the key '{{%badge%}}x-user-meta{{%/badge%}}'. * 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.{{%/note%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}} { "message": "Metadata added successfully" }{{%/code%}} ##### 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-03-18T07:41:08.761Z" 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 {{%link href="/en/cloud-scale/help/zcql/introduction" %}}Catalyst Cloud Scale ZCQL{{%/link%}} 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 {{%link href="/en/cloud-scale/help/data-store/olap-database/introduction/" %}}**OLAP database**{{%/link%}}, 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 {{%link href="/en/cloud-scale/help/zcql/zcql-functions/" %}}ZCQL functions{{%/link%}} 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 {{%badge%}}app{{%/badge%}} 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. {{%code class="language-python" scroll="set-scroll" %}}#Get a ZCQL component instance zcql_service = app.zcql() {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.761Z" 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 {{%badge%}}zcql_service{{%/badge%}} reference used in the code snippet below is the component instance created {{%link href="/en/sdk/python/v1/cloud-scale/zcql/get-component-instance/" %}}earlier{{%/link%}}. 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 {{%badge%}}execute_query(){{%/badge%}} method as shown below. These queries can include SELECT, INSERT, UPDATE, or DELETE statements. A sample INSERT query is shown below: {{%code class="language-javascript" scroll="set-scroll" %}}#Construct the ZCQL query query = 'INSERT into ShipmentData (productID, productName, region) VALUES (3782, A4 Reams, India)' result = zcql_service.execute_query(query){{% /code%}} ### 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 {{%badge%}}execute_olap_query(){{%/badge%}} method. A sample analytical SELECT query is shown below. {{%code class="language-javascript" scroll="set-scroll" %}}//Construct the query to execute query = 'SELECT SUM(price) FROM ShipmentData'; result = zcql_service.execute_olap_query(query);{{% /code%}} **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>{{%badge%}}query{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the query to be executed.</td> </tr> </tbody> </table> {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} #### 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-03-18T07:41:08.762Z" 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 **{{%link href="https://www.zoho.com/accounts/protocol/oauth.html"%}}Zoho OAuth authentication{{%/link%}}**. 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 {{%link href="https://api-console.zoho.com/"%}}Zoho API console{{%/link%}} for a specific application in {{%link href="/en/cloud-scale/help/cache/introduction/"%}}Catalyst Cache{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} Before you configure the connector in your Python business logic as shown below, you will need to register a new client in the {{%link href="https://api-console.zoho.com/"%}}Zoho API console{{%/link%}}, 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%}}{{%bold%}}Note:{{%/bold%}} * 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.{{%/note%}} The code below illustrates a Python connector. The {{%badge%}}app{{%/badge%}} reference used below is the {{%link href="/en/sdk/python/v1/setup/#initializing-the-sdk" %}}Python object{{%/link%}} 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>{{%badge%}}ConnectorName{{%/badge%}}</td> <td>Array</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the connector details like client_id, client_secret, auth_url, refresh_url and refresh_token.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}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() {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} #### Job Scheduling -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the methods to perform Job Scheduling operations" last_updated: "2026-03-18T07:41:08.762Z" 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 {{%link href="/en/job-scheduling/help/cron/introduction/" %}}schedule job submissions{{%/link%}} and execute them in a {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}Job Pool{{%/link%}} to trigger {{%link href="/en/serverless/help/circuits/introduction/" %}}Circuits{{%/link%}}, Webhooks (any third-party URL), {{%link href="/en/serverless/help/functions/job-functions/" %}}Job Functions{{%/link%}}, and {{%link href="/en/serverless/help/appsail/introduction/" %}}AppSail{{%/link%}} 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>{{%link href="/en/sdk/python/v1/job-scheduling/jobpool/get-all-jobpool/" %}}Get All Job Pool{{%/link%}}<br />{{%link href="/en/sdk/python/v1/job-scheduling/jobpool/get-job-pool/" %}}Get a Specific Job Pool{{%/link%}}</td> </tr> <tr> <td>Job</td> <td>{{%link href="/en/sdk/python/v1/job-scheduling/jobs/create-job/" %}}Create Job{{%/link%}}<br />{{%link href="/en/sdk/python/v1/job-scheduling/jobs/get-job/" %}}Get Job Details{{%/link%}}<br />{{%link href="/en/sdk/python/v1/job-scheduling/jobs/delete-job/" %}}Delete a Job{{%/link%}}</td> </tr> <tr> <td>Cron</td> <td>{{%link href="/en/sdk/python/v1/job-scheduling/cron/create-one-time-cron/" %}}Create a One-Time Cron{{%/link%}}<br />{{%link href="/en/sdk/python/v1/job-scheduling/cron/create-recurring-cron/" %}}Create a Recurring Cron{{%/link%}}<br />{{%link href="/en/sdk/python/v1/job-scheduling/cron/create-cron-cron-expressions/" %}}Create Cron Using Cron Expressions{{%/link%}}<br />{{%link href="/en/sdk/python/v1/job-scheduling/cron/get-cron-details/" %}}Get Details of a Particular Cron{{%/link%}}<br />{{%link href="/en/sdk/python/v1/job-scheduling/cron/get-all-cron-details/" %}}Get Details of All Crons{{%/link%}}<br />{{%link href="/en/sdk/python/v1/job-scheduling/cron/update-cron/" %}}Update Cron{{%/link%}}<br />{{%link href="/en/sdk/python/v1/job-scheduling/cron/pause-cron/" %}}Pause Cron{{%/link%}}<br />{{%link href="/en/sdk/python/v1/job-scheduling/cron/resume-cron/" %}}Resume Cron{{%/link%}}<br />{{%link href="/en/sdk/python/v1/job-scheduling/cron/run-cron/" %}}Run Cron{{%/link%}}<br />{{%link href="/en/sdk/python/v1/job-scheduling/cron/delete-cron/" %}}Delete Cron{{%/link%}}</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-03-18T07:41:08.762Z" 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 {{%link href="/en/job-scheduling/" %}}Job Scheduling{{%/link%}} 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. {{%code class="language-python" scroll="set-scroll" %}}job_scheduling = app.job_scheduling() # get job scheduling instance{{% /code%}} ##### 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-03-18T07:41:08.762Z" 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 {{%link href="/en/job-scheduling/help/cron/introduction/" %}}Cron{{%/link%}} component is used to schedule the submission of a {{%link href="/en/job-scheduling/help/job/introduction/" %}}job{{%/link%}} to the {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job Pool{{%/link%}}. Using the following SDK, you will be able to create a cron that will schedule a job submission only once. {{%note%}}{{%bold%}}Note:{{%/bold%}} The following SDK is written for a job that will trigger a {{%link href="/en/serverless/help/functions/job-functions/" %}}Job Function{{%/link%}}. To make the SDK compatible for the other types, you need to replace the value with proper {{%link href="/en/job-scheduling/help/jobpool/key-concepts/#job-pool-id" %}}{{%bold%}}Job Pool ID{{%/bold%}}{{%/link%}}, or {{%bold%}}Job Pool Name{{%/bold%}}, and provide the appropriate {{%bold%}}Target Name{{%/bold%}}, or {{%bold%}}Target ID{{%/bold%}}.{{%/note%}} {{%code class="language-python" scroll="set-scroll" %}}# 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 } ){{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} We urge you to use this SDK to configure only {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}. Use the {{%italics%}}UI Builder{{%/italics%}} to configure {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-defined Crons{{%/link%}}.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.762Z" 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. {{%tabs%}} {{%tab "Every Cron" %}} ### 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%}}{{%bold%}}Note:{{%/bold%}} The following SDK is configured to {{%link href="/en/api/code-reference/job-scheduling/job/submit-job/submit-function-job/#SubmitaFunctionJobByID" %}}submit a job{{%/link%}} every {{%bold%}}2Hrs 1Mins and 3secs{{%/bold%}}. You can change this value as per your requirement by passing the relevant value to the {{%badge%}}cron_detail{{%/badge%}} JSON key-value pair.{{%/note%}} {{%code class="language-python" scroll="set-scroll" %}} # 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 }) {{%/code%}} {{%/tab%}} {{%tab "Daily Cron" %}} <br> ### Create a Daily Cron The following SDK can be used to schedule a cron to {{%link href="/en/job-scheduling/help/implementation/submit-jobs-using-jobs/" %}}submit a job{{%/link%}} to the {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job pool{{%/link%}} at a fixed time at a **daily interval**. {{%note%}}{{%bold%}}Note:{{%/bold%}} The following SDK is configured to execute the cron on {{%bold%}}0Hr 0Min 0Sec{{%/bold%}} every single day. You can change this value as per your requirement by passing the relevant value to the {{%badge%}}cron_detail{{%/badge%}} JSON key-value pair.{{%/note%}} {{%code class="language-python" scroll="set-scroll" %}}# 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 }) {{%/code%}} {{%/tab%}} {{%tab "Monthly Cron" %}} <br> ### Create a Monthly Cron The following SDK can be used to schedule a cron to {{%link href="/en/job-scheduling/help/implementation/submit-jobs-using-jobs/" %}}submit a job{{%/link%}} to the {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job pool{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} The following SDK is configured to execute the cron that will submit a job to the job pool {{%bold%}}every month{{%/bold%}} on the {{%bold%}}1st{{%/bold%}}, {{%bold%}}3rd{{%/bold%}}, and {{%bold%}}5th{{%/bold%}} at {{%bold%}}0Hrs,0Mins, 0Secs{{%/bold%}}. You can change this value as per your requirement by passing the relevant value to the {{%badge%}}cron_detail{{%/badge%}} JSON key-value pair.{{%/note%}} {{%code class="language-python" scroll="set-scroll" %}} # 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 }) {{%/code%}} {{%/tab%}} {{%tab "Yearly Cron" %}} <br> ### Create a Yearly Cron The following SDK can be used to schedule a cron to{{%link href="/en/job-scheduling/help/implementation/submit-jobs-using-jobs/" %}}submit a job{{%/link%}} to the {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job pool{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} The following SDK is configured to execute the cron that will submit a job to the job pool on the {{%bold%}}1st{{%/bold%}}, {{%bold%}}2nd{{%/bold%}}, and {{%bold%}}3rd{{%/bold%}} on the {{%bold%}}8th month{{%/bold%}} of {{%bold%}}every year{{%/bold%}}. You can change this value as per your requirement by passing the relevant value to the {{%badge%}}cron_detail{{%/badge%}} JSON key-value pair.{{%/note%}} {{%code class="language-python" scroll="set-scroll" %}} # 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 } ){{%/code%}} {{%/tab%}} {{%/tabs%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} We urge you to use this SDK to configure only {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}. Use the {{%italics%}}UI Builder{{%/italics%}} to configure {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-defined Crons{{%/link%}}.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.762Z" 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 {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-expressions" %}}Cron Expressions{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} In the following SDK, the cron has been configured using Cron Expressions, to submit a job to the job pool on {{%bold%}}0Hrs 0Mins 0Secs{{%/bold%}} on {{%bold%}}every 1st day of the week{{%/bold%}} on the {{%bold%}}1st month of every year{{%/bold%}}. You can change this value as per your requirement by passing the relevant value to the {{%badge%}}cron_expression{{%/badge%}} JSON key-value pair.{{%/link%}} {{%code class="language-python" scroll="set-scroll" %}} # 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 }) {{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} We urge you to use this SDK to configure only {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}. Use the {{%italics%}}UI Builder{{%/italics%}} to configure {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-defined Crons{{%/link%}}.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.762Z" 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 {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}**Pre-Defined Cron**{{%/link%}} or {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}**Dynamic Cron**{{%/link%}}. You need to pass the {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-id" %}}{{%badge%}}cron id{{%/badge%}}{{%/link%}} or the name of the cron to the {{%badge%}}get(){{%/badge%}} SDK method. {{%tabs%}} {{%tab "Using Cron ID" %}} {{%code class="language-python" scroll="set-scroll" %}}cron = job_scheduling.CRON.get('1234567890') # get cron with cron Id {{%/code%}} {{%/tab%}} {{%tab "Using Cron Name" %}} {{%code class="language-python" scroll="set-scroll" %}}cron = job_scheduling.CRON.get('test') # get cron with cron name {{%/code%}} {{%/tab%}} {{%/tabs%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.762Z" 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 {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-Defined Crons{{%/link%}} using the {{%badge%}}get_all(){{%/badge%}} SDK method. {{%note%}}{{%bold%}}Note:{{%/bold%}} This method will only fetch you details of Pre-Defined Crons. This method will not work for {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}.{{%/note%}} {{%code class="language-python" scroll="set-scroll" %}}all_cron = job_scheduling.CRON.get_all() # get all static cron {{%/code%}} -------------------------------------------------------------------------------- title: "Update Cron" description: "This page describes the Python method to update a cron in your project with sample code snippets." last_updated: "2026-03-18T07:41:08.762Z" 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 {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-id" %}}{{%badge%}}cron id{{%/badge%}}{{%/link%}} to the {{%badge%}}get(){{%/badge%}} method, and update the details using the {{%badge%}}update(){{%/badge%}} method. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can use this method to update details of both {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-Defined Crons{{%/link%}} and {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}.{{%/note%}} {{%tabs%}} {{%tab "Using Cron ID" %}} {{%code class="language-python" scroll="set-scroll" %}}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 {{%/code%}} {{%/tab%}} {{%tab "Using Cron Name" %}} {{%code class="language-python" scroll="set-scroll" %}}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 {{%/code%}} {{%/tab%}} {{%/tabs%}} -------------------------------------------------------------------------------- title: "Pause Cron" description: "This page describes the Python method to pause a cron in your project with sample code snippets." last_updated: "2026-03-18T07:41:08.763Z" 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 {{%link href="/en/job-scheduling/help/job/introduction/" %}}job{{%/link%}} to the {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job Pool{{%/link%}}. You need to pass the {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-id" %}}{{%badge%}}cron id{{%/badge%}}{{%/link%}} or name of the cron you wish to pause to the {{%badge%}}pause(){{%/badge%}} SDK method. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can use this method to update details of both {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-Defined Crons{{%/link%}} and {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}.{{%/note%}} {{%tabs%}} {{%tab "Using Cron ID" %}} {{%code class="language-python" scroll="set-scroll" %}}paused_cron = job_scheduling.CRON.pause('1234567890') # disable a cron with the cron Id {{%/code%}} {{%/tab%}} {{%tab "Using Cron Name" %}} {{%code class="language-python" scroll="set-scroll" %}}paused_cron = job_scheduling.CRON.pause('test_cron') # disable a cron with the cron name {{%/code%}} {{%/tab%}} {{%/tabs%}} -------------------------------------------------------------------------------- title: "Resume Cron" description: "This page describes the Python method to resume a cron in your project with sample code snippets." last_updated: "2026-03-18T07:41:08.763Z" 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 {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}paused{{%/link%}}. This can be done by passing the paused {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-id" %}}{{%badge%}}cron id{{%/badge%}}{{%/link%}} or name to the {{%badge%}}resume(){{%/badge%}} SDK method. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can use this method to update details of both {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-Defined Crons{{%/link%}} and {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}.{{%/note%}} {{%tabs%}} {{%tab "Using Cron ID" %}} {{%code class="language-python" scroll="set-scroll" %}}resumed_cron = job_scheduling.CRON.resume('1234567890') # enable a cron with the cron Id {{%/code%}} {{%/tab%}} {{%tab "Using Cron Name" %}} {{%code class="language-python" scroll="set-scroll" %}}resumed_cron = job_scheduling.CRON.resume('test_cron') # enable a cron with the cron name {{%/code%}} {{%/tab%}} {{%/tabs%}} -------------------------------------------------------------------------------- title: "Run Cron" description: "This page describes the Python method to execute a cron in your project with sample code snippets." last_updated: "2026-03-18T07:41:08.763Z" 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 {{%link href="/en/job-scheduling/help/cron/introduction/" %}}execute a cron{{%/link%}}. The cron once executed will immediately submit the associated {{%link href="/en/job-scheduling/help/job/introduction/" %}}job{{%/link%}} to the {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job Pool{{%/link%}}. This can be done by passing the {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-id" %}}{{%badge%}}cron id{{%/badge%}}{{%/link%}} or name to the {{%badge%}}run(){{%/badge%}} SDK method. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can use this method to update details of both {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-Defined Crons{{%/link%}} and {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}.{{%/note%}} {{%tabs%}} {{%tab "Using Cron ID" %}} {{%code class="language-python" scroll="set-scroll" %}}job = job_scheduling.CRON.run('1234567890') # run cron with cron Id {{%/code%}} {{%/tab%}} {{%tab "Using Cron Name" %}} {{%code class="language-python" scroll="set-scroll" %}}job = job_scheduling.CRON.run('test_cron') # run cron with cron name {{%/code%}} {{%/tab%}} {{%/tabs%}} -------------------------------------------------------------------------------- title: "Delete Cron" description: "This page describes the Python method to delete a cron in your project with sample code snippets." last_updated: "2026-03-18T07:41:08.763Z" 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 {{%link href="/en/job-scheduling/help/cron/introduction/" %}}cron{{%/link%}}. This can be done by passing the {{%link href="/en/job-scheduling/help/cron/key-concepts/#cron-id" %}}{{%badge%}}cron id{{%/badge%}}{{%/link%}} or name to the {{%badge%}}delete(){{%/badge%}} SDK method. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can use this method to update details of both {{%link href="/en/job-scheduling/help/implementation/submit-job-predefined-cron/" %}}Pre-Defined Crons{{%/link%}} and {{%link href="/en/job-scheduling/help/implementation/submit-job-dynamic-cron/" %}}Dynamic Crons{{%/link%}}.{{%/note%}} {{%tabs%}} {{%tab "Using Cron ID" %}} {{%code class="language-python" scroll="set-scroll" %}}deleted_cron = job_scheduling.CRON.delete('1234567890') # delete cron with cron Id {{%/code%}} {{%/tab%}} {{%tab "Using Cron Name" %}} {{%code class="language-python" scroll="set-scroll" %}}deleted_cron = job_scheduling.CRON.delete('test_cron') # delete a cron with cron name {{%/code%}} {{%/tab%}} {{%/tabs%}} ##### 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-03-18T07:41:08.763Z" 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 {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}Job Pools{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}all_jobpools = job_scheduling.get_all_jobpool() # get all jobpools{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.763Z" 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 {{%badge%}}get_jobpool(){{%/badge%}} SDK method. {{%tabs%}} {{%tab "Get Job Pool Details Using Job Pool ID" %}} ### Get Job Pool Details Using Job Pool ID {{%code class="language-python" scroll="set-scroll" %}}jobpool = job_scheduling.get_jobpool('1234567890') # get jobpool with the jobpool id "1234567890"{{%/code%}} {{%/tab%}} {{%tab "Get Job Pool Details Using Job Pool Name" %}} ### Get Job Pool Details Using Job Pool Name {{%code class="language-python" scroll="set-scroll" %}}jobpool = job_scheduling.get_jobpool('test') # get jobpool with the jobpool name "test"{{%/code%}} {{%/tab%}} {{%/tabs%}} ##### 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-03-18T07:41:08.763Z" 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 {{%link href="/en/serverless/help/functions/job-functions/" %}}Job Functions{{%/link%}}, Webhooks, {{%link href="/en/serverless/help/circuits/introduction/" %}}Circuits{{%/link%}}, and {{%link href="/en/serverless/help/appsail/introduction/" %}}App Sail{{%/link%}} services. You can also pass optional arguments in the form of JSON key value pairs. SDK snippet to create and submit Job to trigger: {{%tabs%}} {{%tab "Job Function" %}} {{%code class="language-python" scroll="set-scroll" %}} # 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) } ) {{%/code%}} {{%/tab%}} {{%tab "Circuit" %}} {{%code class="language-python" scroll="set-scroll" %}} # 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) } ) {{%/code%}} {{%/tab%}} {{%tab "Webhook" %}} {{%code class="language-python" scroll="set-scroll" %}} # 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) } ) {{%/code%}} {{%/tab%}} {{%tab "AppSail" %}} {{%code class="language-python" scroll="set-scroll" %}} # 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) } ) {{%/code%}} {{%/tab%}} {{%/tabs%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.763Z" 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 {{%link href="/en/job-scheduling/help/job/introduction/" %}}job{{%/link%}} that has been submitted to a {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job Pool{{%/link%}}. You need to pass the {{%link href="/en/job-scheduling/help/job/key-concepts/#job-id" %}}{{%badge%}}Job Id{{%/badge%}}{{%/link%}} to the {{%badge%}}get_job(){{%/badge%}} SDK method. {{%code class="language-python" scroll="set-scroll" %}}job = job_scheduling.JOB.get_job('1234567890') # get job with job Id {{%/code%}} -------------------------------------------------------------------------------- title: "Delete Job" description: "This page describes the Python method to delete a job in your project with sample code snippets." last_updated: "2026-03-18T07:41:08.763Z" 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 {{%link href="/en/job-scheduling/help/job/introduction/" %}}job{{%/link%}} that is in the process of being executed in a {{%link href="/en/job-scheduling/help/jobpool/introduction/" %}}job Pool{{%/link%}}. You need to pass the {{%link href="/en/job-scheduling/help/job/key-concepts/#job-id" %}}{{%badge%}}Job Id{{%/badge%}}{{%/link%}} to the {{%badge%}}delete_job(){{%/badge%}} SDK method. {{%code class="language-python" scroll="set-scroll" %}}job = job_scheduling.JOB.delete_job('1234567890') # delete job with Id {{%/code%}} #### 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-03-18T07:41:08.763Z" 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 {{%link href="/en/pipelines/help/pipelines/introduction" %}}Catalyst Pipelines{{%/link%}} implements a CI/CD approach to enable automation of building, testing, and deployment of web or mobile applications to preferred environments. You can {{%link href="/en/pipelines/help/pipelines/create-a-pipeline" %}}create a pipeline{{%/link%}} 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 {{%badge%}}app{{%/badge%}} reference used in the code below is the {{%link href="/en/sdk/python/v1/overview/#initialize-the-sdk" %}}Python object{{%/link%}} returned as a response during SDK initialization. You can create a new {{%badge%}}pipelines_service{{%/badge%}} instance as shown below. {{%code class="language-python" scroll="set-scroll" %}}pipelines_service = app.pipeline() {{%/code%}} 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-03-18T07:41:08.763Z" 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 {{%badge%}}get_pipeline_details(){{%/badge%}} 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 {{%badge%}}pipelines_service{{%/badge%}} reference used below is already defined in {{%link href="/en/sdk/nodejs/v2/pipelines/get-pipeline-instance" %}}this component instance page{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}pipeline_details = pipelines_service.get_pipeline_details("16965000000027475") {{%/code%}} A sample response is shown below: {{%code class="language-python" scroll="set-scroll" %}}{ "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 } } {{%/code%}} -------------------------------------------------------------------------------- title: "Execute Pipeline" description: "This page describes the method to run the Catalyst Pipeline manually." last_updated: "2026-03-18T07:41:08.764Z" 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 {{%badge%}}run_pipeline(){{%/badge%}} 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 {{%badge%}}pipelines_service{{%/badge%}} reference used below is already defined in {{%link href="/en/sdk/nodejs/v2/pipelines/get-pipeline-instance" %}}this component instance page{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}execution_details = pipelines_service.run_pipeline("18014000000023048", "main", {"EVENT": "push","URL":"https://www.google.com"}) {{%/code%}} A sample response is shown below: {{%code class="language-python" scroll="set-scroll" %}}{ "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" } } {{%/code%}} #### 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-03-18T07:41:08.764Z" 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 {{%link href="/en/quickml/" %}}Catalyst QuickML{{%/link%}} 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 {{%link href="/en/quickml/help/pipeline-endpoints/" %}}QuickML endpoint{{%/link%}}, 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%}}{{%bold class="bold-primary" %}}Note:{{%/bold%}} 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. {{%/note%}} The {{%badge%}}quickml{{%/badge%}} 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 {{%badge%}}endpoint_key{{%/badge%}} 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 {{%badge%}}predict(){{%/badge%}} method for execution. The {{%badge%}}app{{%/badge%}} reference used in the code below is the {{%link href="/en/sdk/python/v1/setup/#initializing-the-sdk" %}}Python object{{%/link%}} 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>{{%badge%}}endpoint_key{{%/badge%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the unique ID of the endpoint published for the ML model.</td> </tr> <tr> <td>{{%badge%}}input_data{{%/badge%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the the data to be published to the QuickML endpoint.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}# 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) {{%/code%}} The syntax of the output received is shown below: {{%code class="language-json" scroll="set-scroll" %}}{ "status":"success", "result":[ "results....." ] }{{%/code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} #### 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-03-18T07:41:08.764Z" 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 {{%link href="/en/serverless/help/appsail/introduction/" %}}Catalyst AppSail{{%/link%}} 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 {{%link href="/en/serverless/help/appsail/catalyst-managed-runtimes/key-concepts/" %}}Catalyst-managed runtimes{{%/link%}}. AppSail supports frameworks of Python such as Flask, Django, Bottle, CherryPy, etc. You can {{%link href="/en/serverless/help/appsail/help-guides/introduction/" %}}access help guides{{%/link%}} 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. {{%code class="language-python" scroll="set-scroll" %}}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) {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} ##### 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-03-18T07:41:08.764Z" 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 {{%link href="/en/serverless/help/circuits/introduction" %}}Catalyst Serverless Circuits{{%/link%}} 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%}}{{%bold class="bold-primary" %}}Note:{{%/bold%}} Circuits is currently not available to Catalyst users accessing from the EU, AU, IN, JP, SA or CA data centers.{{%/note%}} #### 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 {{%badge%}}app{{%/badge%}} reference used in the code below is the {{%link href="/en/sdk/python/v1/setup/#initializing-the-sdk" %}}Python object{{%/link%}} returned as a response during SDK initialization. You can create a new {{%badge%}}circuit{{%/badge%}}instance as shown below. Also note that this component instance will be used in multiple scenarios while implementing the circuit component in your application. {{%code class="language-python" scroll="set-scroll" %}}#Get a circuit component instance circuit = app.circuit() {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.764Z" 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 {{%badge%}}circuit_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/serverless/circuits/get-component-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}circuit ID{{%/badge%}}</td> <td>Numeric</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the unique ID the circuit to be executed.</td> </tr> <tr> <td>{{%badge%}}circuit input{{%/badge%}}</td> <td>Object</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the dictionary that contains the input to the cricut.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Execute a circuit circuit = app.circuit() result = circuit.execute(5249000000108030, name="Test_Circuit") {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ "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" } } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} ##### 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-03-18T07:41:08.764Z" 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 {{%link href="/en/serverless/help/functions/introduction" %}}Catalyst Serverless Functions{{%/link%}} are custom-built coding structures that contain the business logic of your Catalyst application. They can be created either using the {{%link href="https://console.catalyst.zoho.com/baas/index" %}}Catalyst console{{%/link%}} or the {{%link href="/en/cli/v1/working-with-functions/introduction" %}}CLI{{%/link%}}. 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 {{%badge%}}app{{%/badge%}} reference used in the code below is the {{%link href="/en/sdk/python/v1/setup/#initializing-the-sdk" %}}Python object{{%/link%}} returned as a response during SDK initialization. You can create a new {{%badge%}}function_service{{%/badge%}}instance as shown below. This component instance will be used in the next section while executing the function. {{%code class="language-python"%}}#Get function component instance function_service = app.functions() {{%/code%}} -------------------------------------------------------------------------------- title: "Execute Function" description: "This page describes the method to execute functions in your Python application with sample code snippets." last_updated: "2026-03-18T07:41:08.764Z" 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 {{%badge%}}execute(){{%/badge%}} method in which the function ID and the configuration (of type dictionary) are passed as parameters. To know more about the component instance {{%badge%}}function_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/serverless/functions/get-component-instance/" %}}this help section{{%/link%}}. 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 {{%badge%}}execute(){{%/badge%}} 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>{{%badge%}}function_ID{{%/badge%}}</td> <td>Numeric</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the unique ID the function to be executed.</td> </tr> <tr> <td>{{%badge%}}function_config{{%/badge%}}</td> <td>Object</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the configuration of the function to be executed.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}function_service = app.functions() args = {"Name": "Amelia"} return_value = function_service.execute(5249000000015567, args) {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} 1. Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation. 2. You can also pass the function name as a string to the {{%badge%}}execute(){{%/badge%}} method instead of using the function ID. {{%/note%}} #### SmartBrowz -------------------------------------------------------------------------------- title: "Create SmartBrowz Instance" description: "This page describes the method to create a SmartBrowz instance" last_updated: "2026-03-18T07:41:08.764Z" 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 {{%link href="/en/smartbrowz/getting-started/introduction/" %}}Catalyst SmartBrowz{{%/link%}} components allows you to control, manage a {{%link href="/en/smartbrowz/help/headless/introduction/" %}}headless browser{{%/link%}} and perform a variety of operations such as {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}generating PDFs and screenshots{{%/link%}} of webpages, {{%link href="/en/smartbrowz/help/templates/create-templates/" %}}creating templates{{%/link%}} to generate PDFs with dynamic content, {{%link href="/en/smartbrowz/help/dataverse/introduction/" %}}extracting data{{%/link%}} 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 {{%badge%}}app{{%/badge%}} reference used in the code below is the {{%link href="/en/sdk/python/v1/setup/#initializing-the-sdk" %}}Python object{{%/link%}} returned as a response during SDK initialization. You can create a new {{%badge%}}smart_browz{{%/badge%}}instance as shown below. {{%code class="language-python" %}}smart_browz = app.smart_browz(){{%/code%}} This component instance will be used for all SmartBrowz operations in Python SDK. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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 {{%bold%}}Catalyst SmartBrowz{{%/bold%}} 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.{{%/note%}} -------------------------------------------------------------------------------- title: "PDF & Screenshot" description: "This page describes the method to generate PDF and Screenshot" last_updated: "2026-03-18T07:41:08.764Z" 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 {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}PDF & Screenshot{{%/link%}} 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 {{%link href="/en/smartbrowz/help/templates/create-templates/" %}}Templates{{%/link%}} as your input. To know more about the component instance {{%badge%}}smart_browz{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/smartbrowz/create-smartbrowz-instance/" %}}this help section{{%/link%}}. # Generate PDF or Screenshot from template {{%code class="language-python" scroll="set-scroll" %}}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"}, ) {{%/code%}} # Convert to PDF from HTML {{%code class="language-python" scroll="set-scroll" %}}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"}, ) {{%/code%}} # Generate PDF from URL {{%code class="language-python" scroll="set-scroll" %}}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"}, ) {{%/code%}} # Take a screenshot from HTML {{%code class="language-python" scroll="set-scroll" %}}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" } } }) {{%/code%}} # Take a screenshot from URL {{%code class="language-python" scroll="set-scroll" %}}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" } } }) {{%/code%}} In the PDF & Screenshot section of the console, you can directly test this component using the {{%link href="/en/smartbrowz/help/pdfnscreenshot/implementation/#generating-pdf--screenshots-through-playground" %}}Playground feature{{%/link%}}, and you can also {{%link href="/en/smartbrowz/help/pdfnscreenshot/implementation/#generating-pdf--screenshots-through-code" %}}copy the SDK{{%/link%}} directly from the console. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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 {{%bold%}}Catalyst SmartBrowz{{%/bold%}} 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.{{%/note%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- title: "Dataverse" description: "This page describes the SDK methods for Catalyst Dataverse modules." last_updated: "2026-03-18T07:41:08.764Z" 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 {{%link href="/en/smartbrowz/help/dataverse/introduction/" %}}Dataverse{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} We can only assure to provide you with publicly available information available over the web.{{%/note%}} 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 {{%badge%}}get_enriched_lead(){{%/badge%}} method, in order to retrieve the information. {{%note%}}{{%bold%}}Note:{{%/bold%}} You must provide the value for at least one key in the {{%badge%}}get_enriched_lead(){{%/badge%}} method.{{%/note%}} The {{%badge%}}smart_browz{{%/badge%}} reference used here is the component instance that we created {{%link href="/en/sdk/python/v1/smartbrowz/create-smartbrowz-instance" %}}earlier{{%/link%}}. **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>{{%badge%}}lead_details{{%/badge%}}</td> <td>Array</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the details of the lead to be collected from the web.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}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) {{%/code%}} The response is shown below: {{%code class="language-json" scroll="set-scroll" %}}[ { "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" } ] {{%/code%}} 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 {{%badge%}}find_tech_stack(){{%/badge%}} method, in order to retrieve the information. The {{%badge%}}smart_browz{{%/badge%}} reference used here is the component instance that we created {{%link href="/en/sdk/python/v1/smartbrowz/create-smartbrowz-instance" %}}earlier{{%/link%}}. **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>{{%badge%}}org_url{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the URL of the organization for which tech stack details are needed.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}smart_browz = app.smart_browz() response = smart_browz.find_tech_stack('https://www.zoho.com') print(response) {{%/code%}} The response is shown below: {{%code class="language-json" scroll="set-scroll" %}}[ { "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" } ] {{%/code%}} 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 {{%badge%}}get_similar_companies(){{%/badge%}} method. To know more about the component instance {{%badge%}}smart_browz{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/smartbrowz/create-smartbrowz-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}company_url{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the URL of the organization for which similar organizations need to be retrieved.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}smart_browz = app.smart_browz() response = smart_browz.get_similar_companies( {"lead_name": "zoho", "website_url": "https://www.zoho.com"} ) print(response) {{%/code%}} {{%code class="language-json" scroll="set-scroll" %}}[ "Cybage Software Pvt. Ltd.", "Google LLC", "Chargebee, Inc.", "Infosys Ltd.", "GlobalLogic Inc.", "Persistent Systems Ltd.", "DELTA ELECTRONICS Inc.", "Salesforce, Inc." ] {{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} 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 {{%bold%}}Catalyst SmartBrowz{{%/bold%}} 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.{{%/note%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} ##### 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-03-18T07:41:08.765Z" 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 {{%link href="/en/smartbrowz/help/browser-grid/introduction/" %}}Browser Grid{{%/link%}} 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>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/" %}}Get Browser Grid Instance{{%/link%}}</td> <td>{{%bold%}}Admin{{%/bold%}}</td> </tr> <tr> <td>Browser Grid Operations</td> <td> <ul> <li>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-all-grids/" %}}Get all browser grids{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-grid/" %}}Get specific browser grid{{%/link%}}</li> <ul> <li>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-grid/#using-the-grid-id" %}}Get specific browser grid with ID{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-grid/#using-the-grids-name" %}}Get specific browser grid with name{{%/link%}}</li> </ul> <li>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-node/" %}}Get nodes of a grid{{%/link%}}</li> <ul> <li>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-node/#using-the-grid-id" %}}Using Grid ID{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-node/#using-the-grids-name" %}}Using Grid Name{{%/link%}}</li> </ul> <li>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/stop-grid/" %}}Stop browser grid{{%/link%}}</li> <ul> <li>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/stop-grid/#using-the-grid-id" %}}Using Grid ID{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/stop-grid/#using-the-grids-name" %}}Using Grid Name{{%/link%}}</li> </ul> </ul> </td> <td>{{%bold%}}Admin{{%/bold%}}</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-03-18T07:41:08.765Z" 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. {{%code class="language-python" scroll="set-scroll"%}}grid = app.smart_browz().browser_grid() # get Browser Grid instance{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.765Z" 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 {{%badge%}}get_all_grid(){{%/badge%}} SDK method to get the grid details of all the browser grids that are present in your project. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/python/v1/sdk-scopes/" %}}section{{%/link%}}{{%/info%}} {{%code class="language-python" scroll="set-scroll"%}}grid_list = grid.get_all_grid() # return details of all grids print(grid_list) {{%/code%}} ### Example of Expected Response {{%code class="language-json" scroll="set-scroll"%}}{ "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 } ] }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.765Z" 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 {{%badge%}}getGrid(){{%/badge%}} SDK method. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/python/v1/sdk-scopes/" %}}section{{%/link%}}{{%/info%}} ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the {{%badge%}}get_grid(){{%/badge%}} SDK method. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-py" scroll="set-scroll"%}}grid_details = grid.get_grid(3970000000005013) # get grid details using the Grid ID print(grid_details) {{%/code%}} ### Using the Grid's Name You can pass the name of the required browser grid to the {{%badge%}}get_grid(){{%/badge%}} SDK method. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-python" scroll="set-scroll"%}}grid_details = grid.get_grid("Selenium_Grid") # get grid details using the name of the grid print(grid_details) {{%/code%}} ### Example of Expected Response {{%code class="language-json" scroll="set-scroll"%}}{ "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 } }{{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.765Z" 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 {{%badge%}}get_grid_nodes(){{%/badge%}} SDK method, you can get the details of a node in that grid. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/python/v1/sdk-scopes/" %}}section{{%/link%}}{{%/info%}} ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the {{%badge%}}get_grid_nodes(){{%/badge%}} SDK method, to get its node details. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-py" scroll="set-scroll"%}}node_details = grid.get_grid_nodes(3970000000005013) # get details of the node using its Grid ID print(node_details) {{%/code%}} ### Using the Grid's Name You can pass the name of the required browser grid to the {{%badge%}}get_grid_nodes(){{%/badge%}} SDK method, to get its node details. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-py" scroll="set-scroll"%}}node_details = grid.get_grid_nodes("Selenium_Grid") # get details of the node using the grid's name print(node_details) {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.765Z" 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 {{%badge%}}stop_grid(){{%/badge%}} SDK method, you can terminate all executions and stop the browser grid. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/python/v1/sdk-scopes/" %}}section{{%/link%}}{{%/info%}} ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the {{%badge%}}stop_grid(){{%/badge%}} SDK method, to stop the grid, and terminate all its executions. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-py" scroll="set-scroll"%}}grid_terminate = grid.stop_grid(3970000000005013) # stop the grid using the Grid ID {{%/code%}} ### Using the Grid's Name You can pass the name of the required browser grid to the {{%badge%}}stop_grid(){{%/badge%}} SDK method, to stop the grid, and terminate all its executions. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-py" scroll="set-scroll"%}}grid_terminate = grid.stop_grid("Selenium_Grid") # stop the grid using the name of the grid {{%/code%}} ### Example of Expected Response {{%code class="language-json" scroll="set-scroll"%}}{ "status": "success", "data": true }{{%/code%}} #### 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-03-18T07:41:08.765Z" 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 {{%link href="/en/zia-services/getting-started/introduction" %}}Catalyst Zia{{%/link%}} 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 {{%badge%}}app{{%/badge%}} reference used in the code below is the {{%link href="/en/sdk/python/v1/setup/#initializing-the-sdk" %}}Python object{{%/link%}} returned as a response during SDK initialization. You can create a new {{%badge%}}zia{{%/badge%}}instance as shown below : {{%code class="language-python" scroll="set-scroll" %}}#Get Zia component instance zia = app.zia() {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.765Z" 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 {{%link href="/en/zia-services/help/optical-character-recognition/introduction" %}}Zia Optical Character Recognition{{%/link%}} 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 {{%link href="/en/api/code-reference/zia-services/ocr/#OCR" %}} API documentation{{%/link%}}. {{%note%}}{{%bold class="bold-primary" %}}Note:{{%/bold%}}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.{{%/note%}} You must specify the path to the image or document file that needs to be processed for OCR as a parameter to the {{%badge%}}open(){{%/badge%}} method. This opens the file and returns a file object as a response. {{%bold%}}Allowed file formats:{{%/bold%}} ._jpg_, ._jpeg_, ._png_, ._tiff_, ._bmp_, ._pdf_ {{%bold%}}File size limit:{{%/bold%}} 20 MB You must pass the file path, model type, and languages as arguments to the {{%badge%}}extract_optical_characters(){{%/badge%}} method. However, the model type and language values are optional. By default, it is passed as the {{%badge%}}OCR{{%/badge%}} model type, and the languages are automatically detected if they are not specified. To know more about the component instance {{%badge%}}zia{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/zia-services/get-component-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}img{{%/badge%}}</td> <td>Image</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the image that has to be analyzed.</td> </tr> <tr> <td>{{%badge%}}language{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the language to be identified.</td> </tr> <tr> <td>{{%badge%}}modelType{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the default value as "OCR".</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}# OCR Implementation zia = app.zia() img = open("sample.webp", "rb") result = zia.extract_optical_characters(img, {"language": "eng", "modelType": "OCR"}) {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ "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" } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- title: "AutoML" description: "This page describes the method to use the AutoML feature to train data models and predict their outcomes in your Python application with sample code snippets" last_updated: "2026-03-18T07:41:08.765Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/automl/" service: "Zia Services" related: - AutoML - API (/en/api/code-reference/zia-services/automl/#AutoML) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # AutoML {{%link href="/en/zia-services/help/automl/introduction" %}}Zia AutoML{{%/link%}} 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. Refer to the {{%link href="/en/api/code-reference/zia-services/automl/#AutoML" %}}API documentation{{%/link%}} for the request and response formats. {{%note%}}{{%bold%}}Note:{{%/bold%}} AutoML is currently not available to Catalyst users accessing from the EU, AU, IN, JP, SA or CA data centers. {{%/note%}} You can 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. To know more about the component instance {{%badge%}}zia{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/zia-services/get-component-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}modelId{{%/badge%}}</td> <td>Numeric</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the ID of the model to be trained.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}# Auto ML Implementation zia = app.zia() result = zia.auto_ml( modelId, { # Provide inputs for the column key and value based on your model "column_1": "column1_value", "column_2": "column2_value", "column_3": "column3_value", "column_4": "column4_value", "column_5": "column5_value", }, ) {{% /code%}} A sample response is shown below : {{%code class="language-json" scroll="set-scroll" %}}{ "classification_result":{ "Dollars":0, "Percentage":80, "Dollars (millions)":20 } } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.765Z" 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 {{%link href="/en/zia-services/help/face-analytics/introduction" %}}Zia Face Analytics{{%/link%}} 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 {{%badge%}}open(){{%/badge%}} method to perform Face Analytics on that image. This opens the provided file and returns a file object as a response. The {{%badge%}}analyse_face(){{%/badge%}} method accepts the input image as its argument. You can also specify the analysis mode as {{%badge%}}basic{{%/badge%}}, {{%badge%}}moderate{{%/badge%}}, or {{%badge%}}advanced{{%/badge%}}. You can also specify the attributes {{%badge%}}age{{%/badge%}}, {{%badge%}}smile{{%/badge%}}, or {{%badge%}}gender{{%/badge%}} as {{%badge%}}true{{%/badge%}} to detect or {{%badge%}}false{{%/badge%}} to not detect. These values are optional. All attributes are detected and the {{%badge%}}advanced{{%/badge%}} mode is processed by default. Refer to the {{%link href="/en/api/code-reference/zia-services/face-analytics/#FaceAnalytics" %}}API documentation{{%/link%}} for the request and response formats. To know more about the component instance {{%badge%}}zia{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/zia-services/get-component-instance/" %}}this help section{{%/link%}}. 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>{{%badge%}}img{{%/badge%}}</td> <td>Image</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the image of the face to be analyzed.</td> </tr> <tr> <td>{{%badge%}}mode{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Optional{{%/bold%}} parameter. Will store the analysis mode values - "basic", "moderate" or "advanced".</td> </tr> <tr> <td>{{%badge%}}age{{%/badge%}}</td> <td>Boolean</td> <td>A {{%bold%}}Optional{{%/bold%}} parameter. Will decide whether to determine age or not. Values accepted are "Yes" or "No"</td> </tr> <tr> <td>{{%badge%}}emotion{{%/badge%}}</td> <td>Boolean</td> <td>A {{%bold%}}Optional{{%/bold%}} parameter. Will decide whether to determine emotion or not. Values accepted are "Yes" or "No"</td> </tr> <tr> <td>{{%badge%}}gender{{%/badge%}}</td> <td>Boolean</td> <td>A {{%bold%}}Optional{{%/bold%}} parameter. Will decide whether to determine gender or not. Values accepted are "True" or "False"</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}# Face Analytics implementation zia = app.zia() img = open("sample.webp", "rb") result = zia.analyse_face( img, {"mode": "moderate", "age": True, "emotion": True, "gender": False} ) {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ "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" } } ] } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.766Z" 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 {{%link href="/en/zia-services/help/image-moderation/introduction/" %}}Image Moderation{{%/link%}} 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 {{%badge%}}open(){{%/badge%}} method. This method returns the image file object as a response. You can set the moderation mode as {{%badge%}}BASIC{{%/badge%}}, {{%badge%}}MODERATE{{%/badge%}}, or {{%badge%}}ADVANCED{{%/badge%}} optionally. The image is processed in the {{%badge%}}ADVANCED{{%/badge%}} mode by default. The response returns the probability of each criteria with their confidence scores, and the prediction of the image being {{%badge%}}safe_to_use{{%/badge%}} or {{%badge%}}unsafe_to_use{{%/badge%}}. To know more about the component instance {{%badge%}}zia{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/zia-services/get-component-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}img{{%/badge%}}</td> <td>Image</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the image to be analyzed.</td> </tr> <tr> <td>{{%badge%}}options{{%/badge%}}</td> <td>Array</td> <td>A {{%bold%}}Optional{{%/bold%}} parameter. Will store the analysis mode values - "basic", "moderate" or "advanced"</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}zia = app.zia() img = open("sample.webp", "rb") result = zia.moderate_image(img, options={"mode": "moderate"}) {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ "probability":{ "racy":"0.09", "nudity":"0.06" }, "confidence":"0.85", "prediction":"safe_to_use" } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.766Z" 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 {{%link href="/en/zia-services/help/object-recognition/introduction/" %}}Object Recognition{{%/link%}} 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 {{%badge%}}open(){{%/badge%}} method. This method returns the image file object as a response. Refer to the {{%link href="/en/api/code-reference/zia-services/object-recognition/#ObjectRecognition" %}}API documentation{{%/link%}} for the request and response formats. The {{%badge%}}detect_object(){{%/badge%}} 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 {{%badge%}}zia{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/zia-services/get-component-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}img{{%/badge%}}</td> <td>Image</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the image that has to be analyzed for objects.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}zia = app.zia() img = open("sample.webp", "rb") result = zia.detect_object(img) {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ "objects":[ { "co_ordinates":[ "322", "125", "708", "1201" ], "object_type":"person", "confidence":"99.82" } ] } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.766Z" 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 {{%link href="/en/api/code-reference/zia-services/barcode-scanner/#BarcodeScanner" %}}Zia Barcode Scanner{{%/link%}} 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 {{%badge%}}open(){{%/badge%}} method. This method returns the image file object as a response. Refer to the {{%link href="/en/api/code-reference/zia-services/barcode-scanner/#BarcodeScanner" %}}API documentation{{%/link%}} for the request and response formats. You can specify the barcode format using {{%badge%}}setFormat{{%/badge%}}. If you enter the format as {{%badge%}}ALL{{%/badge%}}, Barcode Scanner automatically detects the format. It provides the decoded information as the response. To know more about the component instance {{%badge%}}zia{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/zia-services/get-component-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}img{{%/badge%}}</td> <td>Image</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the ID of the model to be trained.</td> </tr> <tr> <td>{{%badge%}}options{{%/badge%}}</td> <td>Array</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the format of the barcode.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}zia = app.zia() img = open("sample.webp", "rb") result = zia.scan_barcode(img, options={"format": "code39"}) {{% /code%}} A sample response is shown below : {{%code class="language-json" scroll="set-scroll" %}} { "content":"https://demo.dynamsoft.com/dbr_wasm/barcode_reader_javascript.html" } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} ##### 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-03-18T07:41:08.766Z" 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 {{%link href="/en/zia-services/help/identity-scanner/introduction" %}}Identity Scanner{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ### 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} 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 {{%badge%}}compare_face(){{%/badge%}} method processes both these images. To know more about the component instance {{%badge%}}zia{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/zia-services/get-component-instance/" %}}this help section{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} {{%bold%}}Allowed file formats:{{%/bold%}} _.webp_, _.jpeg_, _.png_ {{%bold%}}File size limit:{{%/bold%}} 10 MB The result of the comparison is set to {{%bold%}}{{%badge%}}true{{%/badge%}}{{%/bold%}} if the faces match, or {{%bold%}}{{%badge%}}false{{%/badge%}}{{%/bold%}} 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 {{%badge%}}true{{%/badge%}}. **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>{{%badge%}}img{{%/badge%}}</td> <td>Image</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the first image file of the face.</td> </tr> <tr> <td>{{%badge%}}img2{{%/badge%}}</td> <td>Image</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the second image file of the face.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}# Facial Comparison feature implementation zia = app.zia() img = open("sample1.webp", "rb") img2 = open("sample2.webp", "rb") result = zia.compare_face(img, img2) {{% /code%}} The sample response is shown below : {{%code class="language-json" scroll="set-scroll" %}}{ "confidence":0.9464, "matched":"true" } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.766Z" 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 {{%link href="/en/zia-services/help/identity-scanner/introduction" %}}Identity Scanner{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ## Aadhaar The {{%badge%}}AADHAAR{{%/badge%}} 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%}}{{%bold class="bold-primary" %}}Note:{{%/bold%}}Document Processing is only relevant to Indian users and is {{%bold%}}only available in the IN DC{{%/bold%}}. 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 {{%link href="/en/zia-services/help/optical-character-recognition/introduction" %}}general OCR component{{%/link%}} to read and process textual content.{{%/note%}} You must provide the path to the image files of the front and back of the Aadhaar card to the {{%badge%}}open(){{%/badge%}} 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 {{%badge%}}zia{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/zia-services/get-component-instance/" %}}this help section{{%/link%}}. 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 {{%badge%}}tam{{%/badge%}} and {{%badge%}}eng{{%/badge%}} as the languages. You can check the list of languages and language codes from the {{%link href="/en/api/code-reference/zia-services/identity-scanner/aadhaar/#Aadhaar" %}}API documentation{{%/link%}}. {{%bold%}}Allowed file formats:{{%/bold%}} _.webp_, _.jpeg_, _.png_, _.bmp_, _.tiff_, _.pdf_<br /> {{%bold%}}File size limit:{{%/bold%}} 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>{{%badge%}}aadhar_front{{%/badge%}}</td> <td>Image</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the front side Aadhaar image in less than 15 MB.</td> </tr> <tr> <td>{{%badge%}}aadhar_back{{%/badge%}}</td> <td>Image</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the back side Aadhaar image in less than 15 MB.</td> </tr> <tr> <td>{{%badge%}}language{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the language to be identified.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}zia = app.zia() img = open("sample.webp", "rb") img2 = open("sample2.webp", "rb") result = zia.extract_aadhaar_characters(img, img2, language="eng,tam") {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ "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" } } } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.766Z" 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 {{%link href="/en/zia-services/help/identity-scanner/introduction" %}}Identity Scanner{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} #### PAN The {{%badge%}}PAN{{%/badge%}} 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%}}{{%bold%}}Note:{{%/bold%}}Document Processing is only relevant to Indian users and is {{%bold%}}only available in the IN DC{{%/bold%}}. 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 {{%link href="/en/zia-services/help/optical-character-recognition/introduction" %}}general OCR component{{%/link%}} to read and process textual content.{{%/note%}} You must provide the path to the image file of the front side of the PAN card to the {{%badge%}}open(){{%/badge%}} 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 {{%badge%}}zia{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/zia-services/get-component-instance/" %}}this help section{{%/link%}}. {{%bold%}}Allowed file formats:{{%/bold%}} _.webp_, _.jpeg_, _.png_<br /> {{%bold%}}File size limit:{{%/bold%}} 15 MB You must specify the model type as {{%badge%}}PAN{{%/badge%}} using {{%badge%}}modelType{{%/badge%}}. The {{%badge%}}PAN{{%/badge%}} 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>{{%badge%}}img{{%/badge%}}</td> <td>Image</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the image file of the front side of the PAN card.</td> </tr> <tr> <td>{{%badge%}}modelType{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the default value as "PAN".</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}zia = app.zia() img = open("sample.webp", "rb") result = zia.extract_optical_characters(img, {"modelType": "PAN"}) {{% /code%}} The response is shown below : {{%code class="language-json" scroll="set-scroll" %}}{ "date_of_birth":"03/04/1982", "last_name":"VASUDEV MAHTO", "pan":"ANRPM2537J", "first_name":"PRAMOD KUMAR MAHTO" } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.766Z" 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 {{%link href="/en/zia-services/help/identity-scanner/introduction" %}}Identity Scanner{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} #### Passbook The {{%badge%}}PASSBOOK{{%/badge%}} 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%}}{{%bold%}}Note:{{%/bold%}} Document Processing is only relevant to Indian users and is {{%bold%}}only available in the IN DC{{%/bold%}}. 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 {{%link href="/en/zia-services/help/optical-character-recognition/introduction" %}}general OCR component{{%/link%}} to read and process textual content.{{%/note%}} 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 {{%link href="/en/api/code-reference/zia-services/identity-scanner/passbook/#Passbook" %}}API documentation{{%/link%}}. You must provide the path to the image of the front page of the passbook, as shown in the code below. {{%bold%}}Allowed file formats:{{%/bold%}} _.webp_, _.jpeg_, _.png_, _.bmp_, _.tiff_, _.pdf_<br /> {{%bold%}}File size limit:{{%/bold%}} 15 MB You must specify the model type as {{%badge%}}PASSBOOK{{%/badge%}} using the key {{%badge%}}modelType{{%/badge%}}. 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%}}{{%bold%}}Note:{{%/bold%}} Identity Scanner will return the response only in English, irrespective of the languages present in the passbook.{{%/note%}} To know more about the component instance {{%badge%}}zia{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/zia-services/get-component-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}img{{%/badge%}}</td> <td>Image</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the language to be detected.</td> </tr> <tr> <td>{{%badge%}}modelType{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the default value as "PASSBOOK".</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}zia = app.zia() img = open("sample.webp", "rb") result = zia.extract_optical_characters( img, {"language": "tam", "modelType": "PASSBOOK"} ) {{% /code%}} A sample reference is shown below : {{%code class="language-json" scroll="set-scroll" %}}{ "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" } } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.766Z" 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 {{%link href="/en/zia-services/help/identity-scanner/introduction" %}}Identity Scanner{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} #### Cheque The {{%badge%}}CHEQUE{{%/badge%}} 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%}}{{%bold%}}Note:{{%/bold%}} Document Processing is only relevant to Indian users and is {{%bold%}}only available in the IN DC{{%/bold%}}. 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 {{%link href="/en/zia-services/help/optical-character-recognition/introduction" %}}general OCR component{{%/link%}} to read and process textual content.{{%/note%}} You must provide the path to the image file of the front page of the chequebook to the {{%badge%}}open(){{%/badge%}} method, as shown in the code below. This method returns the file object as a response. The {{%badge%}}CHEQUE{{%/badge%}} model can only process text in English by default. No other languages are supported. {{%bold%}}Allowed file formats:{{%/bold%}} _.webp_, _.jpeg_, _.png_<br /> {{%bold%}}File size limit:{{%/bold%}} 15 MB You must specify the model type as {{%badge%}}CHEQUE{{%/badge%}} using {{%badge%}}modelType(){{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}}Zia only processes cheques of the CTS-2010 format.{{%/note%}} To know more about the component instance {{%badge%}}zia{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/zia-services/get-component-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}img{{%/badge%}}</td> <td>Image</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the image file of the front page of the chequebook.</td> </tr> <tr> <td>{{%badge%}}modelType{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the default value as "CHEQUE".</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}zia = app.zia() img = open('sample.webp', 'rb') result = zia.extract_optical_characters(img, {'modelType': 'CHEQUE'}) {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ "date":"15/11/2014", "account_number":"89323223232222", "amount":"10615", "branch_name":"ANNA NAGAR", "bank_name":"ABX BANK", "ifsc":"BB9033232" } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} ##### 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-03-18T07:41:08.766Z" 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 {{%link href="/en/zia-services/help/text-analytics/key-concepts/#sentiment-analysis" %}}Zia Sentiment Analysis{{%/link%}} 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 {{%bold%}}positive{{%/bold%}}, {{%bold%}}negative{{%/bold%}}, or {{%bold%}}neutral{{%/bold%}}. 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 {{%bold%}}1500 characters{{%/bold%}} in a single request. The input text is passed to {{%badge%}}get_sentiment_analysis(){{%/badge%}}. 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 {{%badge%}}zia{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/zia-services/get-component-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}text{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the text to be analyzed.</td> </tr> <tr> <td>{{%badge%}}keyword{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Optional{{%/bold%}} parameter. Will store the keywords to filter sentences containing them and analyze their sentiments.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}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"], [], ) {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers" scroll="set-scroll" %}} { "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 } ] } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.767Z" 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 {{%link href="/en/zia-services/help/text-analytics/key-concepts/#named-entity-recognition" %}}Zia Named Entity Recognition{{%/link%}} 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 {{%link href="/en/zia-services/help/text-analytics/key-concepts/#named-entity-recognition" %}}here{{%/link%}} 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 {{%bold%}}1500 characters{{%/bold%}} in a single request, as shown below. The text is passed to {{%badge%}}get_NER_prediction(){{%/badge%}}. To know more about the component instance {{%badge%}}zia{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/zia-services/get-component-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}text{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the text in which entities has to be recognized.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}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." ] ) {{% /code%}} The sample response is shown below : {{%code class="language-json line-numbers" scroll="set-scroll" %}} { "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" } ] } } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.767Z" 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 {{%link href="/en/zia-services/help/text-analytics/key-concepts/#keyword-extraction" %}}Zia Keyword Extraction{{%/link%}} 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: {{%bold%}}{{%badge%}}Keywords{{%/badge%}}{{%/bold%}} and {{%bold%}}{{%badge%}} Keyphrases{{%/badge%}}{{%/bold%}}. 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 {{%bold%}}1500 characters{{%/bold%}} in a single request, as shown below. The text is passed to {{%badge%}}get_keyword_extraction(){{%/badge%}}. The keywords and keyphrases are then fetched as individual lists. To know more about the component instance {{%badge%}}zia{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/zia-services/get-component-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}text{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the text from which keywords has to be extracted.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}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." ] ) {{% /code%}} The sample response is shown below : {{%code class="language-json line-numbers" scroll="set-scroll" %}} { "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" ] } } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.767Z" 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 {{%link href="/en/zia-services/help/text-analytics/introduction" %}}Text Analytics{{%/link%}} as a whole includes a combination of all three features specified in the previous sections: {{%bold%}}Sentiment Analysis{{%/bold%}}, {{%bold%}}Named Entity Recognition{{%/bold%}}, and {{%bold%}}Keyword Extraction{{%/bold%}}. 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 {{%bold%}}1500 characters{{%/bold%}} in a single request, as shown below. The text is passed to {{%badge%}}get_text_analytics(){{%/badge%}}. 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 {{%badge%}}zia{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/zia-services/get-component-instance/" %}}this help section{{%/link%}}. **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>{{%badge%}}text{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the text to be analyzed.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}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"], [] ) {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers" scroll="set-scroll" %}} [ { "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" } ] } } ] {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} ## 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-03-18T07:41:08.771Z" 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 {{%link href="/en/getting-started/installing-catalyst-cli" %}}CLI Installation{{%/link%}}) * Catalyst project (Refer {{%link href="/en/getting-started/catalyst-projects" %}}Catalyst Projects{{%/link%}}) * 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 {{%badge%}}init.js{{%/badge%}} file which will automatically populate the essential details of your project, such as the {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings" %}}Project ID{{%/link%}} which is your project's unique ID and {{%link href="/en/getting-started/set-up-a-catalyst-project/environment-settings" %}}ZAID{{%/link%}} which is the project's key. {{%note%}}{{%bold%}}Note:{{%/bold%}} The request pattern {{%badge%}}/\_\_catalyst/ \*{{%/badge%}} is reserved. You will not be able to include your own files in that location.{{%/note%}} These values are automatically populated based on the {{%link href="/en/deployment-and-billing/environments/introduction"%}}environment{{%/link%}} 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. {{%code class="language-xml" scroll="set-scroll" %}}&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; {{% /code%}} 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 {{%bold%}}{{%badge%}}catalyst{{%/badge%}}{{%/bold%}} object is limited to a single page. The code contains the line: {{%badge%}}catalyst.auth.signIn("Your elementID here");{{%/badge%}} . The {{%badge%}}{{%bold%}}elementID{{%/bold%}}{{%/badge%}} can be the ID of any HTML element or {{%badge%}}div{{%/badge%}} element in your application's login page. You should replace this with the {{%badge%}}elementID{{%/badge%}} 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%}}{{%bold%}}Note:{{%/bold%}} You can also access an older version (v 1.0.0) of the web initialization script from the Embedded Authentication section in {{%link href="/en/cloud-scale/help/authentication/introduction/" %}}Authentication{{%/link%}}. Refer to the {{%link href="/en/cloud-scale/help/authentication/native-catalyst-authentication/embedded-authentication/scripts-for-embedded/" %}}Embedded Authentication help page{{%/link%}} for details.{{%/note%}} <br> ### Manage Environment Variables You can manage the environment variables through code using the following Catalyst methods: * {{%bold%}}To {{%badge%}}set{{%/badge%}} the environment variable{{%/bold%}}: {{%code class="language-json" %}}catalyst.setCatalystEnv(keyName,value){{%/code%}} * {{%bold%}}To {{%badge%}}get{{%/badge%}} the environment variable{{%/bold%}}: {{%code class="language-json" %}}catalyst.getCatalystEnv(key){{%/code%}} * {{%bold%}}To {{%badge%}}delete{{%/badge%}} the environment variable{{%/bold%}}: {{%code class="language-json" %}}catalyst.deleteCatalystEnv(key){{%/code%}} <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. {{%code class="language-javascript" scroll="set-scroll" %}}catalyst.file.folderId(folder_id).fileId(file_id); {{% /code%}} However, the following code will actually fire an API call to delete a file from a selected folder, {{%code class="language-javascript" scroll="set-scroll" %}}catalyst.file.folderId(folder_id).fileId(file_id).delete(); {{% /code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Promises are returned with a specified object after firing the actual API call. Therefore, {{%bold%}}.then(){{%/bold%}} is handled only after the actual API calls. The API calls cannot be used with dummy objects that don't fire an API.{{%/note%}} <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 {{%bold%}}Catalyst Web SDK {{%/bold%}} throws 3 types of errors called {{%bold%}}{{%badge%}}appET, ServerET,{{%/badge%}}{{%/bold%}} and {{%bold%}}{{%badge%}} DeveloperET.{{%/badge%}}{{%/bold%}} 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. {{%link href="/en/cli/v1/initialize-resources/initialize-client/" %}}Initialize catalyst{{%/link%}} and select the {{%bold%}}client {{%/bold%}} 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%}}{{%bold%}}Note:{{%/bold%}} The location where the boiler plate code ({{%bold%}}client{{%/bold%}} folder and {{%bold%}}catalyst.json{{%/bold%}}) is generated, is the {{%bold%}}project's home location{{%/bold%}}.{{%/note%}} 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 {{%code class="language-json" scroll="set-scroll" %}}{ "name": "SampleApp", "version": "1.0.0", "description": "This is my sample app", "homepage": "index.html", "login_redirect":"home.html" } {{% /code%}} Here are the attributes of {{%bold%}} client-package.json{{%/bold%}}: <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 {{%bold%}} Client {{%/bold%}} folder. <br> ### Deploy the Client Application You can deploy the client application using Catalyst CLI. Refer to the {{%link href="/en/cli/v1/deploy-resources/introduction" %}}Deploy Resources help page{{%/link%}} for detailed help. 1. Open your system's terminal. 2. From the {{%bold%}}Project's home location{{%/bold%}}, deploy your client app using the command: {{%cli%}}catalyst deploy --only client{{%/cli%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} You can also {{%link href="/en/cloud-scale/help/web-client-hosting/introduction" %}}deploy the client using the catalyst web console{{%/link%}}.{{%/note%}} 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-03-18T07:41:08.771Z" 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 {{%badge%}}auth{{%/badge%}} 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: {{%code class="language-javascript" scroll="set-scroll" %}}//Get an Auth instance var auth = catalyst.auth; {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.771Z" 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 {{%badge%}}userManagement{{%/badge%}} reference can be created using the following method which does not fire a server side call. {{%code class="language-javascript" scroll="set-scroll" %}}//Get an UserManagement Instance var userManagement = catalyst.userManagement; {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.771Z" 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 {{%badge%}}ZUID{{%/badge%}} and {{%badge%}}userID{{%/badge%}} are created for them. The user is also assigned to an organization by Catalyst. You can learn more about this from the {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/" %}}Users help page{{%/link%}}. You can use the following code snippet to register a new user to access your Catalyst application. This registration process is handled using the {{%badge%}}signUp(){{%/badge%}} method. The {{%badge%}}auth{{%/badge%}} reference used in the code snippet below is defined in the {{%link href="/en/sdk/web/v4/cloud-scale/authentication/get-auth-instance" %}}auth instance page{{%/link%}}. You must provide the email address and last name to register of the user mandatorily while adding the user. {{%note%}}{{%bold%}}Note:{{%/bold%}} You will be able to add only 25 users in your application in the {{%link href="/en/deployment-and-billing/environments/development-environment" %}}development environment{{%/link%}}. After you deploy your application to production, you can include any number of end-users in it.{{%/note%}} The JSON objects containing the registration details of a particular user are created as shown below. {{%code class="language-javascript" scroll="set-scroll" %}}//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/" }; {{% /code%}} This object is passed as an argument to the {{%badge%}}signUp(){{%/badge%}} method. The promise returned here will be resolved to an object whose content key contains details of the registered user. {{%code class="language-javascript" scroll="set-scroll" %}}//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); }); {{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Web SDK" %}} {{% divtag id="V3" class="language-json line-numbers"%}} { 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" } {{% /divtag %}} {{% divtag id="V2" class="language-json line-numbers"%}} { 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 } {{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.771Z" 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 {{%badge%}}forgotPassword(){{%/badge%}} 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 {{%badge%}}userManagement{{%/badge%}} reference used in the code snippet below is the {{%link href="/en/sdk/web/v4/cloud-scale/authentication/get-comp-instance" %}} component instance.{{%/link%}} JSON objects containing the registration details of a particular user are created as follows: {{%code class="language-javascript" scroll="set-scroll" %}}//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" }; {{% /code%}} This object is passed as an argument to the {{%badge%}}forgotPassword(){{%/badge%}} method. {{%note%}}{{%bold%}}Note : {{%/bold%}} The promise returned will be resolved to an object in which the content key contains a confirmation message.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}//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); }); {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.771Z" 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 {{%badge%}}oldPassword{{%/badge%}} to change it. The {{%badge%}}auth{{%/badge%}} reference used in the code snippet below is defined in the {{%link href="/en/sdk/web/v4/cloud-scale/authentication/get-auth-instance" %}}auth instance page{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}catalyst.auth.changePassword(oldPassword,newPassword) {{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} This SDK snippet is only available if you install Web SDK 4.3.0{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.772Z" 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 {{%badge%}}user{{%/badge%}} object can be created using the following method which does not fire a server side call. The {{%badge%}} userManagement{{%/badge%}}reference used in the code snippet below is the {{%link href="/en/sdk/web/v4/cloud-scale/authentication/get-comp-instance" %}} component instance.{{%/link%}} {{%code class="language-javascript" scroll="set-scroll" %}}//Get the user object passing the user id. var userManagement = catalyst.userManagement; var user = userManagement.userId(USER_ID); {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.772Z" 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 {{%link href="/en/cloud-scale/help/authentication/user-management/users/introduction/" %}}application users{{%/link%}}. You can obtain the user information of the current user, any user, or all users of the application. ### Get Current User Details The method {{%badge%}}getCurrentProjectUser(){{%/badge%}} fetches the details of a user on whose scope the function is getting executed. The {{%badge%}}userManagement{{%/badge%}} reference used in the code snippets is the {{%link href="/en/sdk/web/v4/cloud-scale/authentication/get-comp-instance/" %}}component instance{{%/link%}} 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. {{%code class="language-javascript" scroll="set-scroll" %}}//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); }); {{% /code%}} Additionally, you can also use the {{%badge%}}isUserAuthenticated(){{%/badge%}} method which is an alternative to the {{%badge%}}getCurrentProjectUser(){{%/badge%}} method. {{%code class="language-javascript" scroll="set-scroll" %}}//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); }); {{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Web SDK" %}} {{% divtag id="V3" class="language-json line-numbers"%}} { 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" } {{% /divtag %}} {{% divtag id="V2" class="language-json line-numbers"%}} { 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: [] } {{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- title: "Third-party Authentication" description: "This page describes the methods required to enable third-party authentication in your Catalyst application" last_updated: "2026-03-18T07:41:08.772Z" 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 {{%link href= "/en/cloud-scale/help/authentication/third-party-authentication/introduction/" %}}third-party authentication service{{%/link%}} 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%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} 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 {{%link href="/en/cloud-scale/help/authentication/third-party-authentication/implementation/" %}}Set Up Third-party Authentication in Catalyst help page{{%/link%}}. 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 {{%link href="/en/sdk/java/v1/cloud-scale/authentication/third-party-server-token/" %}}Java{{%/link%}}, {{%link href="/en/sdk/nodejs/v2/cloud-scale/authentication/third-party-server-token/" %}}Node.js{{%/link%}}, or {{%link href="/en/sdk/python/v1/cloud-scale/authentication/third-party-server-token/" %}}Python{{%/link%}}. This function will generate a Catalyst server-side token **JSON Web Token** token (JWT) which will then be passed to the client. {{%note%}}{{%bold%}}Note:{{%/bold%}} To enable a third-party authentication in your Catalyst application, you must ensure that you have enabled {{%link href="/en/cloud-scale/help/authentication/public-signup/" %}}Public Signup{{%/link%}} in the console.{{%/note%}} ### 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. {{%code class="language-xml line-numbers"%}}&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; {{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} ### Configure Addional Settings Finally, you can onfigure {{%link href="/en/cloud-scale/help/authentication/whitelisting/custom-user-validation/introduction/" %}}Customer User Validation{{%/link%}} or {{%link href="/en/cloud-scale/help/authentication/whitelisting/authorized-domains/introduction/" %}}Authorized Domains{{%/link%}} 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-03-18T07:41:08.772Z" 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 {{%badge%}}signOut(){{%/badge%}} method where the redirect URL is passed as an argument.The {{%badge%}}auth{{%/badge%}} reference used in the code snippet below is the {{%link href="/en/sdk/web/v4/cloud-scale/authentication/get-auth-instance" %}}auth instance.{{%/link%}} {{%note%}}{{%bold%}}Note :{{%/bold%}} This does not return a promise.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}//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); {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.772Z" 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 {{%badge%}}generateAuthToken(){{%/badge%}} 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. {{%note%}}{{%bold%}}Notes:{{%/bold%}}<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 {{%bold%}}CORS{{%/bold%}} feature present in Catalyst Authentication. You can find out more about the CORS feature from this {{%link href="/en/cloud-scale/help/authentication/whitelisting/authorized-domains/introduction/#cors" %}}help documentation{{%/link%}}. * The {{%badge%}}generateAuthToken(){{%/badge%}} SDK method is available from Web SDK version v4.6.1.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}} 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 }); {{%/code%}} ##### 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-03-18T07:41:08.772Z" 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 {{%badge%}}datastore{{%/badge%}} reference can be created by the following method which would not fire a server side call. {{%code class="language-javascript" scroll="set-scroll" %}}//Get a datastore instance var datastore = catalyst.table; {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.772Z" 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 {{%badge%}}table{{%/badge%}} object can be created by the following methods which would not fire a server-side call. The {{%badge%}}datastore{{%/badge%}} reference used in the below code snippets is the {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-component-instance" %}}component instance.{{%/link%}} ### Get a Table Instance Using TableID A {{%badge%}}table{{%/badge%}}object can be created by referring to the {{%bold%}}table ID{{%/bold%}}. {{%code class="language-javascript" scroll="set-scroll" %}}//Get a table object using table ID var table = datastore.tableId('1510000000110121'); {{% /code%}} ### Get a Table Instance Using TableName Alternatively, a {{%badge%}}table{{%/badge%}} object can be created by referring to the {{%bold%}}table name.{{%/bold%}} {{%note%}}{{%bold%}}Note : {{%/bold%}} There is no promise involved in the above methods and the table object contains the methods accessible by the table.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}//Get a table object using the table name var table = datastore.tableId('SampleTable'); {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.772Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}}. ### Get Metadata of All Tables You can fetch the details of all the tables in a Catalyst project using {{%badge%}}getAll(){{%/badge%}} method. The {{%badge%}}datastore{{%/badge%}} and {{%badge%}}table{{%/badge%}} instances used in the code snippet below are the {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-component-instance" %}}component instance{{%/link%}} and the {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-table-instance" %}}table object{{%/link%}} respectively. This returns a promise which will be resolved to an object in which the {{%badge%}}content{{%/badge%}} key contains the array of the meta details of all the tables. {{%code class="language-javascript" scroll="set-scroll" %}}//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); }); {{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="WebSDK" %}} {{% divtag id="V3" class="language-json line-numbers"%}} [ { "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" } ] {{% /divtag %}} {{% divtag id="V2" class="language-json line-numbers"%}} [ { "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 } ] {{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.772Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}} can be retrieved through the following methods. The table reference used in the below code snippets can either be a {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-table-instance" %}}table instance{{%/link%}} or a {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-table-meta" %}}table meta.{{%/link%}} ### Get a Column's Metadata by ID You can fetch a column's meta data of a particular table using {{%badge%}}getColumnDetails(){{%/badge%}} method. {{%code class="language-javascript" %}}//Get The Column Object using Columnid var datastore = catalyst.table; var table = datastore.tableId("SampleTable"); var column = table.columnId(COLUMN_ID); {{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Web SDK" %}} {{% divtag id="V3" class="language-json line-numbers"%}} { 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" } {{% /divtag %}} {{% divtag id="V2" class="language-json line-numbers"%}} { 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 } {{% /divtag %}} {{% /panel_with_select %}} <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. {{%code class="language-javascript" scroll="set-scroll" %}}//Get The Column Object using Columnname var datastore = catalyst.table; var table = datastore.tableId('SampleTable'); var column = table.columnId(COLUMN_NAME); {{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Web SDK" %}} {{% divtag id="V3" class="language-json line-numbers"%}} { 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" } {{% /divtag %}} {{% divtag id="V2" class="language-json line-numbers"%}} { 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 } {{% /divtag %}} {{% /panel_with_select %}} <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 {{%bold%}}content{{%/bold%}} key contains the column metadata details. {{%code class="language-javascript" scroll="set-scroll" %}}//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); }); {{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Web SDK" %}} {{% divtag id="V3" class="language-json line-numbers"%}} { 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" } {{% /divtag %}} {{% divtag id="V2" class="language-json line-numbers"%}} { 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 } {{% /divtag %}} {{% /panel_with_select %}} <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 {{%badge%}}getAllColumns(){{%/badge%}}method. {{%note%}}{{%bold%}}Note : {{%/bold%}} The promise returned here is resolved into an array of column meta details.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}//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); }); {{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Web SDK" %}} {{% divtag id="V3" class="language-json line-numbers"%}} [ { 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" } ] {{% /divtag %}} {{% divtag id="V2" class="language-json line-numbers"%}} [ { 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 } ] {{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.772Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}} by referring to the table's unique ID or name. You can also insert multiple rows in a table in the same operation. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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 {{%link href="/en/deployment-and-billing/environments/development-environment" %}}development environment{{%/link%}}. 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.{{%/note%}} You must construct an array containing the rows to be inserted in the table, and pass the array as an argument to the {{%badge%}}addRow(){{%/badge%}} 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 {{%badge%}}content{{%/badge%}} key contains the array of the rows. The {{%badge%}}table{{%/badge%}} reference used in the code below is the {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-table-instance/" %}}table object{{%/link%}} created earlier. {{%code class="language-javascript" scroll="set-scroll" %}}//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); }); {{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions. #### Web SDK {{%code class="language-json" scroll="set-scroll" %}}[ { 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 } ] {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.772Z" 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 {{%badge%}}table{{%/badge%}} used in the below code snippet is the {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-table-instance" %}}table object.{{%/link%}} {{%note%}}{{%bold%}}Note : {{%/bold%}}The promise returned here will be resolved to an object in which the {{%bold%}}content{{%/bold%}} key contains an array of updated row details.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}//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); }); {{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions. #### Web SDK {{%code class="language-json" scroll="set-scroll" %}}[ { 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" } ] {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.773Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}}. The {{%badge%}}table{{%/badge%}} object used in these code snippets is defined in the {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-table-instance" %}}component instance page{{%/link%}}. ### 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. {{%code class="language-javascript" scroll="set-scroll" %}}//Create a row object using the Rowid var datastore = catalyst.table; var table = datastore.tableId("ShipmentTracking"); var row = table.rowId("12781121212121"); {{% /code%}} ### Get a Single Row You can now fetch a single row from a table using the {{%badge%}}get(){{%/badge%}} 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 {{%badge%}}content{{%/badge%}} key contains a row object. {{%code class="language-javascript" scroll="set-scroll" %}}//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); }); {{% /code%}} A sample response that you will receive is shown below. The response is the same for all versions of Web SDK. {{%code class="language-json" scroll="set-scroll" %}}{ CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-17 13:02:11:184", CREATEDTIME: "2021-08-16 16:29:10:499", CityName: "Pune", ROWID: "2136000000011011" } {{% /code%}} ### 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 {{%badge%}}getPagedRows(){{%/badge%}} 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 {{%badge%}}hasNext{{%/badge%}}, 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 {{%badge%}}max_rows{{%/badge%}} parameter as 100, as shown below. {{%note%}}{{%bold class="bold-primary" %}}Note:{{%/bold%}} The {{%badge%}}max_rows{{%/badge%}} parameter is optional. The SDK call will return 200 rows in a single page by default if this value is not specified.{{%/note%}} 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 {{%badge%}}next_token{{%/badge%}} parameter during the subsequent iteration, as shown below. During the first execution of the loop, the value for the {{%badge%}}next_token{{%/badge%}} string is assigned as {{%badge%}}undefined{{%/badge%}}. The next set of records are fetched through {{%badge%}}more_records{{%/badge%}} in the response data. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}{ 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()); }); } {{% /code%}} A sample response that you will receive if there are more records available is shown below. The {{%badge%}}more_records{{%/badge%}} parameter will be set to {{%badge%}}true{{%/badge%}} in this case. #### Web SDK v3.1.0 {{% panel_with_adjustment header="Web SDK v3.1.0" class="language-json line-numbers"%}}{ "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}}" }{{% /panel_with_adjustment %}} A sample response that you will receive if there are no more records available is shown below. The {{%badge%}}more_records{{%/badge%}} parameter will be set to {{%badge%}}false{{%/badge%}} in this case. {{% panel_with_adjustment header="Web SDK v3.1.0" class="language-json line-numbers" %}}{ "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 } {{% /panel_with_adjustment %}} {{%note%}}{{%bold class="bold-primary" %}}Note:{{%/bold%}} We have deprecated support for the {{%badge%}}getAllRows(){{%/badge%}} 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 {{%badge%}}getAllRows(){{%/badge%}} method will be removed from all future SDK versions. Please ensure that you upgrade your code accordingly.{{%/note%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.773Z" 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 {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-table-instance" %}}row object.{{%/link%}} A row can be deleted from a table simply by passing the {{%bold%}}{{%badge%}}ROWID{{%/badge%}}{{%/bold%}} as a parameter to the {{%badge%}}delete(){{%/badge%}} method. {{%note%}}{{%bold%}}Note : {{%/bold%}} The promise returned here will be resolved to an object in which the {{%bold%}}{{%badge%}}content{{%/badge%}}{{%/bold%}} key contains a deleted row object.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}//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); }); {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.773Z" 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 {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}}. 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 {{%badge%}}deleteRows(){{%/badge%}} function through {{%badge%}}deletePromise{{%/badge%}} in the sample code. The table name or table ID must be passed to {{%badge%}}datastore.tableId(){{%/badge%}}. The {{%badge%}}datastore{{%/badge%}} reference used below is defined in the {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-component-instance" %}}component instance page{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}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); }); {{% /code%}} ##### 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-03-18T07:41:08.773Z" 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 {{%link href="/en/cloud-scale/help/file-store/introduction"%}}Catalyst File Store{{%/link%}} 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 {{%badge%}}file store{{%/badge%}} component instance can be created as shown below. This does not fire a server-side call. {{%code class="language-javascript" scroll="set-scroll" %}}//Get a file store instance var filestore = catalyst.file; {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.773Z" 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 {{%badge%}}folder{{%/badge%}} object can be created using the following code snippet, which does not fire a server-side call. The {{%badge%}}filestore{{%/badge%}} used in the code snippet below is the {{%link href="/en/sdk/web/v4/cloud-scale/file-store/get-component-instance" %}}component instance.{{%/link%}} {{%note%}}{{%bold%}}Note : {{%/bold%}}There is no promise involved in the method above and the folder object is returned.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}// Get a folder instance var filestore = catalyst.file; var folder = filestore.folderId(FOLDER_ID); {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.773Z" 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 {{%bold%}}folder ID{{%/bold%}} is the {{%badge%}}get(){{%/badge%}} method. The {{%badge%}}folder{{%/badge%}} used in the code snippet below is the {{%link href="/en/sdk/web/v4/cloud-scale/file-store/get-folder-instance/" %}}folder object.{{%/link%}} {{%note%}}{{%bold%}}Note : {{%/bold%}} The promise returned here will be resolved to an object in which the {{%bold%}}content{{%/bold%}} key contains details of a single folder.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}//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); }); {{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Web SDK" %}} {{% divtag id="V3" class="language-json line-numbers"%}} { "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" } {{% /divtag %}} {{% divtag id="V2" class="language-json line-numbers"%}} { "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 } {{% /divtag %}} {{% /panel_with_select %}} 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 {{%link href="/en/sdk/web/v4/cloud-scale/file-store/get-component-instance" %}}component instance.{{%/link%}} ### Get all the Folder Details If you want to fetch the details of all the folders in your Catalyst project, the {{%badge%}}getAllFolder(){{%/badge%}} method is used. {{%note%}}{{%bold%}}Note : {{%/bold%}} The promise returned here will be resolved to an object in which the {{%bold%}}content{{%/bold%}} key contains an array of all the folder details.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}//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); }); {{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Web SDK" %}} {{% divtag id="V3" class="language-json line-numbers"%}} [ { 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 } ] {{% /divtag %}} {{% divtag id="V2" class="language-json line-numbers"%}} [ { "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 } ] {{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.773Z" 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 {{%link href="/en/cloud-scale/help/file-store/introduction" %}}File Store{{%/link%}}, 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%}}{{%bold%}}Note:{{%/bold%}} Catalyst provides 1 GB of File Store space for each project in the {{%link href="/en/deployment-and-billing/environments/development-environment" %}}development environment{{%/link%}}. There are no upper limits for storage in the production environment.{{%/note%}} You must create a file object for the file to be uploaded, as shown below. The {{%badge%}}fileobject{{%/badge%}} is passed as an argument to the {{%badge%}}uploadFile(){{%/badge%}} method. The upload starts only when the {{%badge%}}start(){{%/badge%}} method is called. You must specify Folder ID of the folder while referring to it. The {{%badge%}}folder{{%/badge%}} reference used in the code below is the {{%link href="/en/sdk/web/v4/cloud-scale/file-store/get-folder-instance/" %}}folder object{{%/link%}} created earlier. The promise returned here will be resolved to an object in which the {{%badge%}}content{{%/badge%}} key contains the details of the uploaded file. A unique File ID is created for the file after it is uploaded. {{%code class="language-javascript" scroll="set-scroll" %}}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); }); {{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Web SDK" %}} {{% divtag id="V3" class="language-json line-numbers"%}} { 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 } {{% /divtag %}} {{% divtag id="V2" class="language-json line-numbers"%}} { 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 } {{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.773Z" 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 {{%badge%}}file{{%/badge%}} object can be created using the following code snippet, which does not fire a server-side call. The unique {{%bold%}}File ID{{%/bold%}} is passed as an argument here.The {{%badge%}}folder{{%/badge%}} used in the code snippet below is the {{%link href="/en/sdk/web/v4/cloud-scale/file-store/get-folder-instance" %}}folder object.{{%/link%}} {{%code class="language-javascript" scroll="set-scroll" %}}//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); {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.773Z" 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 {{%bold%}}{{%badge%}}folder ID{{%/badge%}}{{%/bold%}} and {{%bold%}}{{%badge%}} file ID{{%/badge%}}{{%/bold%}} to identify which file is to be downloaded from the URL. The {{%badge%}}file{{%/badge%}} used in the code snippet below is the {{%link href="/en/sdk/web/v4/cloud-scale/file-store/get-file-object/" %}}file object.{{%/link%}} The {{%badge%}}getDownloadLink(){{%/badge%}} method is used to return the promise. {{%note%}}{{%bold%}}Note : {{%/bold%}} The promise returned here will be resolved to an object in which the content key contains a {{%bold%}}{{%badge%}}download_url{{%/badge%}}{{%/bold%}} key where the download URL will be available.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}//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); }); {{% /code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.773Z" 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 {{%badge%}}delete(){{%/badge%}} method is used to delete a file from the folder. The {{%badge%}}file{{%/badge%}} used in the code snippet below is the {{%link href="/en/sdk/web/v4/cloud-scale/file-store/get-file-object" %}}file object.{{%/link%}} {{%note%}}{{%bold%}}Note : {{%/bold%}} The promise returned here will be resolved to an object in which the {{%bold%}}{{%badge%}}content{{%/badge%}}{{%/bold%}} key contains the deleted file details.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}//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); }); {{% /code%}} ##### Push Notifications -------------------------------------------------------------------------------- title: "Push Notifications" description: "Push notifications can be created using Catalyst Web SDK" last_updated: "2026-03-18T07:41:08.773Z" 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 {{%link href="/en/cloud-scale/help/push-notifications/introduction/"%}}Push notifications{{%/link%}} 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 {{%badge%}}notification{{%/badge%}} instance can be created as shown below. {{%note%}}{{%bold%}}Note{{%/bold%}}: The promise returned here will be resolved to an object in which the {{%bold%}}content{{%/bold%}} key contains the output of the executed function.{{%/note%}} {{%code class="language-javascript"%}}// Get a notification instance var notification = catalyst.notification; {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.773Z" 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 {{%badge%}}enableNotification(){{%/badge%}} method registers a client for receiving {{%link href="/en/cloud-scale/help/push-notifications/introduction/"%}}push notifications{{%/link%}} from your web application. The {{%badge%}}notification{{%/badge%}} reference used in the code snippet below is the {{%link href="/en/sdk/web/v4/cloud-scale/push-notifications/get-component-instance"%}}component instance{{%/link%}} created earlier. The {{%badge%}}enableNotification(){{%/badge%}} method returns a promise which is resolved to an object. After resolving the promise, you can handle the notification message through the {{%badge%}}messagehandler{{%/badge%}}. {{%code class="language-javascript"%}}//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 } }); {{%/code%}} You can then send push notifications to the registered client either from the {{%link href="/en/cloud-scale/help/push-notifications/web"%}}Catalyst console{{%/link%}}, or through {{%link href="/en/api/code-reference/cloud-scale/push-notifications/web/send-web-push-notifications/#SendWebPushNotifications"%}}this API{{%/link%}}. ##### Search -------------------------------------------------------------------------------- title: "Get a Component Instance" description: "Using Catalyst Web SDK you can create a search object." last_updated: "2026-03-18T07:41:08.774Z" 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 {{%link href="/en/cloud-scale/help/search-integration/introduction"%}}here{{%/link%}}. ### Get a Component Instance The search object can be created using the following method which does not fire a server side call. {{%code class="language-javascript"%}}//Get a search object var search = catalyst.search; {{%/code%}} -------------------------------------------------------------------------------- title: "Search Data" description: "Using Catalyst Web SDK you can execute a method for searching for a particular pattern of data." last_updated: "2026-03-18T07:41:08.774Z" 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 {{%badge%}}searchQuery(){{%/badge%}} method for searching for a particular pattern of data. The search used in the code snippet is the {{%link href="/en/sdk/web/v4/cloud-scale/search/get-component-instance"%}}component instance{{%/link%}}. ### 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. {{%code class="language-javascript"%}}//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"] } }; {{%/code%}} ### Execute Search The JSON object created in the previous section is passed as a parameter to the {{%italics%}}searchQuery(){{%/italics%}} method which returns a promise. {{%note%}}{{%bold%}}Note : {{%/bold%}} 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.{{%/note%}} {{%code class="language-javascript"%}}//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); }); {{%/code%}} A sample response that you will receive is shown below. The response is the same for both versions of Web SDK. {{%code class="language-json"%}}{ AlienCity: [ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-13 13:49:19:475", CityName: "Dallas", CREATEDTIME: "2021-08-13 13:49:19:475", ROWID: "2136000000008508" } ] } {{%/code%}} ##### Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the web SDK method to perform operations in Stratus." last_updated: "2026-03-18T07:41:08.774Z" 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 {{%link href="/en/cloud-scale/help/stratus/introduction" %}}Stratus{{%/link%}} is Catalyst's robust and powerful storage solution. You can store data of any format in the form of {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}Objects{{%/link%}} in containers called {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}}. Each Bucket and every individual object in the bucket has a secure {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} and {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/#bucket-url" %}}Bucket URL{{%/link%}}. You can perform upload and download operations on objects and even provide {{%link href="/en/cloud-scale/help/stratus/stratus-permissions/#custom-permissions" %}}custom permissions{{%/link%}} for each object. {{%note%}}{{%bold%}}Note:{{%/bold%}} * It is advised you {{%link href="/en/cloud-scale/help/stratus/stratus-config/bucket-cors/" %}}enable CORS{{%/link%}} 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 {{%bold%}}Web SDK{{%/bold%}} to {{%link href="https://static.zohocdn.com/catalyst/sdk/js/4.5.0-beta/catalystWebSDK.js" %}}{{%badge%}}v4.5.0-beta{{%/badge%}}{{%/link%}}. * You also need to upgrade the {{%link href="/en/cli/v1/cli-command-reference/" %}}Catalyst CLI{{%/link%}} to {{%badge%}}v1.18.0-beta.5{{%/badge%}}{{%/note%}} 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>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/" %}}Create Stratus Instance{{%/link%}} <ul> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/#initialize-bucket-instance" %}}Initialize Bucket Instance{{%/link%}}</li> </ul> </li> </ul> </td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/check-object/" %}}Check Object Availability{{%/link%}} <ul> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/check-object/#check-object-availability-without-versionid" %}}Check Object Availability Without VersionID{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/check-object/#check-object-availability-with-versionid" %}}Check Object Availability With VersionID{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/" %}}Download Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/#download-object-using-object-name" %}}Download Object Using Object Name{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/#download-a-particular-version-of-the-object" %}}Download a Particular Version of the Object{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/#download-object-with-process-callback" %}}Download Object With Process Callback{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/#download-a-particular-part-of-the-object" %}}Download a Particular Part of the Object{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/#download-object-using-a-signed-url" %}}Download Object Using a Signed URL{{%/link%}} <ul> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/#using-asynchronous-functions" %}}Using Asynchronous Functions{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/#using-promises" %}}Using Promises{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/#using-signedurl-with-options" %}}Using SignedURL with Options{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/#download-a-cached-object-using-cached-url" %}}Download a Cached Object Using Cached URL{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/upload-object/" %}}Upload Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/upload-object/#upload-object-as-file" %}}Upload Object as File{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/upload-object/#upload-object-as-string" %}}Upload Object as String{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/upload-object/#upload-object-with-options" %}}Upload Object With Options{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/upload-object/#upload-object-with-process-callback" %}}Upload Object With Process Callback{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/upload-object/#upload-object-with-its-meta-details" %}}Upload Object With Its Meta Details{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/upload-object/#mutlipart-upload" %}}Mutlipart Upload{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/upload-object/#upload-an-object-wrapping-all-the-multipart-functionality" %}}Upload an Object Wrapping all the Multipart Functionality{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/delete-object/" %}}Delete Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/delete-object/#delete-object-with-object-name" %}}Delete Object With Object Name{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/delete-object/#delete-object-with-object-name-and-versionid" %}}Delete Object With Object Name and VersionID{{%/link%}}</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-03-18T07:41:08.774Z" 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 {{%badge%}}stratus{{%/badge%}} 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. {{%code class="language-javascript" scroll="set-scroll" %}}const stratus = catalyst.stratus{{%/code%}} ### 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 {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}} in Stratus. {{%code class="language-javascript" scroll="set-scroll" %}}const bucket = stratus.bucket("bucketName"){{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.774Z" 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 {{%badge%}}headObject(){{%/badge%}} 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 {{%link href="/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/#initialize-bucket-instance" %}}component instance{{%/link%}}. 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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}options{{%/badge%}}</td> <td>{{%bold%}}JSON Object{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter to hold the following parameters: <ul> <li>{{%badge%}}{{%bold%}}versionId{{%/bold%}}{{%/badge%}}: <ul> <li>An optional {{%bold%}}String{{%/bold%}} parameter.</li> <li>If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} 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>{{%badge%}}{{%bold%}}throwErr{{%/bold%}}{{%/badge%}}: <ul> <li>An optional {{%bold%}}Boolean{{%/bold%}} parameter.</li> <li>If you set this parameter as "{{%bold%}}true{{%/bold%}}", then it will throw an error when the bucket is not found in the project.</li> <li>The default value is "{{%bold%}}false{{%/bold%}}"</li> </ul> </li> </ul> </td> </tr> </tbody> </table> ### Check Object Availability Without VersionID The following SDK method will provide you with the {{%badge%}}topVersion{{%/badge%}} (latest version) of the object in the bucket. {{%code class="language-javascript" scroll="set-scroll" %}}// Check if an object is available const checkObjectAvailability = await bucket.headObject("key"){{%/code%}} ### 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 {{%badge%}}versionId{{%/badge%}}. {{%code class="language-javascript" scroll="set-scroll" %}}// Check if certain version of an object is Available const options = { versionId: 'djkfhdiufy762', throwErr: false }; const checkObjectAvailability = await bucket.headObject("key", options){{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "status": 200, "content": true | false, "message": "OK" }{{%/code%}} -------------------------------------------------------------------------------- title: "Download Object" description: "This page describes the web SDK method to retreive an object from Stratus." last_updated: "2026-03-18T07:41:08.774Z" 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 {{%link href="/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/" %}}component instance{{%/link%}}. Expected responses with respect to {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} status of the bucket: * If you do not pass the {{%badge%}}versionId{{%/badge%}}, 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 {{%badge%}}versionId{{%/badge%}} param with the value "{{%badge%}}topVersion{{%/badge%}}". * To retrieve a specific version, use the {{%badge%}}versionId{{%/badge%}} 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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>Will hold the name of the object</td> </tr> <tr> <td>{{%badge%}}options{{%/badge%}}</td> <td>{{%bold%}}JSON Object{{%/bold%}}</td> <td> <ul> <li>{{%badge%}}{{%bold%}}versionId{{%/bold%}}{{%/badge%}}: This is an optional {{%bold%}}String{{%/bold%}} parameter. Will hold the unique {{%badge%}}version ID{{%/badge%}} of the required object's version. </li> <li>{{%badge%}}{{%bold%}}range{{%/bold%}}{{%/badge%}}: This is an optional {{%bold%}}String{{%/bold%}} parameter. The byte range of the required object. Will be used to get a specific part of the object.</li> <li>{{%badge%}}{{%bold%}}cached{{%/bold%}}{{%/badge%}}: This is an optional {{%bold%}}Boolean{{%/bold%}} parameter. <ul> <li>Will be used to get cached version of the object</li> <li>Will only accept two values: "{{%badge%}}true{{%/badge%}}" or "{{%badge%}}false{{%/badge%}}"</li> <li>{{%badge%}}false{{%/badge%}} will be the value, if this param is not used</li> <li>{{%badge%}}true{{%/badge%}} will be the value, if {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#caching" %}}Caching{{%/link%}} 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>{{%badge%}}{{%bold%}}signed{{%/bold%}}{{%/badge%}}: This is an optional {{%bold%}}Boolean{{%/bold%}} parameter. The default value is "{{%badge%}}false{{%/badge%}}". Will make an api call to get a signed url. </li> <li>{{%badge%}}{{%bold%}}signedUrlFn{{%/bold%}}{{%/badge%}}: <ul> <li>This is an optional {{%bold%}}Function{{%/bold%}} parameter.</li> <li>This is a Callback function that will return a {{%bold%}}signedurl api respone{{%/bold%}} given in server SDK ({{%link href="/en/sdk/java/v1/cloud-scale/stratus/pre-signed-urls/" %}}Java{{%/link%}}, {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/pre-signed-urls/" %}}Node.js{{%/link%}}, and {{%link href="/en/sdk/python/v1/cloud-scale/stratus/pre-signed-urls/" %}}Python{{%/link%}}) 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>{{%badge%}}processCallback{{%/badge%}}</td> <td>{{%bold%}}Function{{%/bold%}}</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 {{%badge%}}key{{%/badge%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const getObject = await bucket.getObject("key"); const getObjectStart = getObject.start(); // to start the request const getObjectAbort = getObject.abort(); // to abort the request{{%/code%}} ### 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 {{%badge%}}key{{%/badge%}}, and {{%badge%}}versionId{{%/badge%}}. {{%code class="language-javascript" scroll="set-scroll" %}}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{{%/code%}} ### 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. {{%code class="language-javascript" scroll="set-scroll" %}}// 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{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "status": 200, "content": {Blob Data}, "message": "OK" }{{%/code%}} **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 {{%link href="/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/" %}}component instance{{%/link%}}. 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. {{%code class="language-javascript" scroll="set-scroll" %}}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{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "status": 206, "content": {Blob Data}, "message": "PARTIAL_CONTENT" }{{%/code%}} ### Download Object Using a Signed URL #### Using Asynchronous Functions {{%code class="language-javascript" scroll="set-scroll" %}}// 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{{%/code%}} #### Using Promises {{%code class="language-javascript" scroll="set-scroll" %}}// 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{{%/code%}} #### 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. {{%code class="language-javascript" scroll="set-scroll" %}}// 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{{%/code%}} ### Download a Cached Object Using Cached URL The following SDK method will allow you to download a cached object using the {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#caching" %}}Cached URL{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}// 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{{%/code%}} -------------------------------------------------------------------------------- title: "Upload Object" description: "This page describes the web SDK method to upload an object to a bucket." last_updated: "2026-03-18T07:41:08.774Z" 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 {{%link href="/en/cloud-scale/help/stratus/objects/upload-object/" %}}upload objects{{%/link%}} to the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}bucket{{%/link%}}. The Stratus reference used in the below code snippet is the {{%link href="/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/" %}}component instance{{%/link%}}. If you do not have {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} 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 {{%badge%}}versionId{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} 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.{{%/note%}} **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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}File{{%/badge%}}</td> <td>{{%bold%}}File | String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. The object that needs to be uploaded.</td> </tr> <tr> <td>{{%badge%}}options{{%/badge%}} <td>{{%bold%}}JSON Object{{%/bold%}}</td> <td> <ul> <li>{{%badge%}}{{%bold%}}overwrite{{%/bold%}}{{%/badge%}}: This is an optional {{%bold%}}String{{%/bold%}} parameter. <ul> <li>If {{%italics%}}Versioning{{%/italics%}} for your bucket is not enabled, then you need to use this option if you wish to overwrite a resource.</li> <li>Default value: {{%badge%}}false{{%/badge%}}</li> </ul> </li> <li>{{%badge%}}{{%bold%}}ttl{{%/bold%}}{{%/badge%}}: This is an optional {{%bold%}}String | Number{{%/bold%}} parameter. <ul> <li>You can set {{%bold%}}Time-to-Live{{%/bold%}} (ttl) in seconds for an object.</li> <li>The value should be greater than or equal to {{%bold%}}60 seconds{{%/bold%}}.</li> </ul> </li> <li>{{%badge%}}{{%bold%}}type{{%/bold%}}{{%/badge%}}: This is an optional {{%bold%}}String{{%/bold%}} parameter. <ul> <li>This paramater can be used to overwrite the {{%badge%}}content-type{{%/badge%}} of the object.</li> <li>If you do not pass this parameter, then by default the value of {{%badge%}}type{{%/badge%}} will be {{%badge%}}{{%bold%}}application/octet-stream{{%/bold%}}{{%/badge%}}</li> </ul> </li> <li>{{%badge%}}{{%bold%}}meta{{%/bold%}}{{%/badge%}}: This is an optional {{%bold%}}JSON Object{{%/bold%}} 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>{{%badge%}}processCallback{{%/badge%}}</td> <td>{{%bold%}}Function{{%/bold%}}</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. {{%code class="language-javascript" scroll="set-scroll" %}}// 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 {{%/code%}} ### Upload Object as String The following SDk method will allow you to upload a string object to a bucket in Stratus. {{%code class="language-javascript" scroll="set-scroll" %}}// 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{{%/code%}} ### 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 {{%badge%}}options{{%/badge%}} parameter to provide {{%badge%}}type{{%/badge%}}, {{%badge%}}overwrite{{%/badge%}}, and {{%badge%}}ttl{{%/badge%}} instructions. {{%code class="language-javascript" scroll="set-scroll" %}}// 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{{%/code%}} ### 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. {{%code class="language-javascript" scroll="set-scroll" %}}// 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{{%/code%}} ### Upload Object With Its Meta Details The following SDK snippet will allow you to upload a particular object along with its {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#metadata" %}}metadata{{%/link%}} to a bucket in Stratus. {{%code class="language-javascript" scroll="set-scroll" %}}// 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{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "status": 200, "content": true | false, //true: successfully uploaded and false: upload failure "message": "OK" }{{%/code%}} ### 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 {{%link href="/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/#initialize-bucket-instance" %}}component instance{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const multipart = bucket.getMultipartInstance("key");{{%/code%}} #### Initiate Multipart Upload **Initiate Multipart Upload Without Options** Using the following SDK method, Stratus will return an {{%badge%}}uploadId{{%/badge%}}. This ID will allow us to upload multiple pats of the object. {{%code class="language-javascript" scroll="set-scroll" %}}// initiate upload const initiateUpload = await multipart.initiateUpload();{{%/code%}} **Initiate Multipart Upload With Options** Using the following SDK method, Stratus will return an {{%badge%}}uploadId{{%/badge%}}. This ID will allow us to upload multiple pats of the object. Additionally, using this SDK method you can implement the {{%badge%}}options{{%/badge%}} parameter to provide {{%badge%}}type{{%/badge%}} 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>{{%badge%}}type{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td> <ul> <li>This parameter is a key in the {{%badge%}}options{{%/badge%}} {{%bold%}}JSON Object{{%/bold%}} parameter. <li>This paramater can be used to overwrite the {{%badge%}}content-type{{%/badge%}} of the object.</li> <li>If you do not pass this parameter, then by default the value of {{%badge%}}type{{%/badge%}} will be {{%badge%}}{{%bold%}}application/octet-stream{{%/bold%}}{{%/badge%}}</li> </ul> </td> </tr> </tbody> </table> {{%code class="language-javascript" scroll="set-scroll" %}}// initiate upload with options const options = { type: "application/json" } const initiateUpload = await multipart.initiateUpload(options);{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "status": 200, "content": { "bucket": "llm-development", "key": "a/cv", "upload_id": "01hyj639a9zfbg8j7q86nsrj6r" }, "message": "OK" }{{%/code%}} #### 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 {{%badge%}}part{{%/badge%}} 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>{{%badge%}}file{{%/badge%}}</td> <td>{{%bold%}}File{{%/bold%}}</td> <td>The object that needs to be uploaded.</td> </tr> <tr> <td>{{%badge%}}part{{%/badge%}}</td> <td>{{%bold%}}Number{{%/bold%}}</td> <td>Will contain the ordering of the parts that are being uploaded.</td> </tr> </tbody> </table> {{%code class="language-javascript" scroll="set-scroll" %}}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{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "status": 200, "content": true | false, //true: successfully uploaded and false: upload failure "message": "OK" }{{%/code%}} #### Complete Multipart Upload The following method allows us to terminate the multipart process once all the parts have been successfully uploaded. {{%code class="language-javascript" scroll="set-scroll" %}}const completeUpload = await multipart.completeUpload(){{%/code%}} **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>{{%badge%}}options{{%/badge%}}</td> <td>{{%bold%}}JSON Object{{%/bold%}}</td> <td>{{%badge%}}{{%bold%}}meta{{%/bold%}}{{%/badge%}}: This is an optional {{%bold%}}JSON Object{{%/bold%}} 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** {{%code class="language-json" scroll="set-scroll" %}}{ "status": 200, "content": true | false, //true: successfully uploaded and false: upload failure "message": "OK" }{{%/code%}} #### 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 {{%badge%}}getUploadSummary(){{%/badge%}} method. {{%code class="language-javascript" scroll="set-scroll" %}}const getUploadSummary = await multipart.getUploadSummary();{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "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 } ] }{{%/code%}} ### 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 {{%badge%}}max_part_size{{%/badge%}} of the object can be the entire file size. However, to ensure a quicker upload, we urge you to keep the {{%badge%}}max_part_size{{%/badge%}} **100MB** or less. * The {{%badge%}}min_part_size{{%/badge%}} of the object should be **5MB** or more. * The entire object's size should be **10GB** or less. {{%note%}}{{%bold%}}Note:{{%/bold%}} For object's that are {{%bold%}}larger than 10GB{{%/bold%}}, we would recommend that you use the {{%bold%}}individual SDK methods{{%/bold%}} to carry out the multipart upload operation successfully.{{%/note%}}<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>{{%badge%}}file{{%/badge%}}</td> <td>{{%bold%}}File{{%/bold%}}</td> <td>The object that needs to be uploaded.</td> </tr> <tr> <td>{{%badge%}}partSize{{%/badge%}}</td> <td>{{%bold%}}Number{{%/bold%}}</td> <td>Will contain the size of each part of the object that is being uploaded.</td> </tr> <tr> <td>{{%badge%}}options{{%/badge%}}</td> <td>{{%bold%}}JSON Object{{%/bold%}}</td> <td> {{%badge%}}{{%bold%}}type{{%/bold%}}{{%/badge%}}: This parameter is a key in this JSON object. <ul> <li>It is a {{%bold%}}String{{%/bold%}} parameter.</li> This paramater can be used to overwrite the {{%badge%}}content-type{{%/badge%}} 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 {{%badge%}}type{{%/badge%}} will be {{%badge%}}{{%bold%}}application/octet-stream{{%/bold%}}{{%/badge%}}</li> <li>{{%badge%}}{{%bold%}}meta{{%/bold%}}{{%/badge%}}: This is an optional {{%bold%}}JSON Object{{%/bold%}} 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** {{%code class="language-javascript" scroll="set-scroll" %}}// upload object const partSize = 10; // in MB const file = document.getElementById("uploadedFiles").files[0] const uploadObject = await multipart.uploadObject(file, partSize);{{%/code%}} **Upload an Object Wrapping all the Multipart Functionality With Options** {{%code class="language-javascript" scroll="set-scroll" %}}// 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);{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "status": 200, "content": true | false, //true: successfully uploaded and false: upload failure "message": "OK" }{{%/code%}} -------------------------------------------------------------------------------- title: "Delete Object" description: "This page describes the web SDK method to delete an object." last_updated: "2026-03-18T07:41:08.775Z" 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 {{%badge%}}deleteObject(){{%/badge%}} method. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/#initialize-bucket-instance" %}}component instance{{%/link%}}. **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>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}options{{%/badge%}}</td> <td>{{%bold%}}JSON Object{{%/bold%}}</td> <td> <ul> <li>{{%badge%}}{{%bold%}}versionId{{%/bold%}}{{%/badge%}}: An optional {{%bold%}}String{{%/bold%}} parameter. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for your bucket then, this param will help you refer to a particular version using its unique Version ID. </li> <li>{{%badge%}}{{%bold%}}ttl{{%/bold%}}{{%/badge%}}: An optional {{%bold%}}String | Number{{%/bold%}} parameter. You can set {{%bold%}}Time-to-Live{{%/bold%}} (TTL) in seconds for an object. The value should be greater than or equal to {{%bold%}}60 seconds{{%/bold%}}. </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. {{%code class="language-javascript" scroll="set-scroll" %}}// Delete an object const deleteObject = await bucket.deleteObject("key");{{%/code%}} ### Delete Object With Object Name and VersionID Using the following SDK method will delete a specific version of the object. {{%code class="language-javascript" scroll="set-scroll" %}}// 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);{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "status": 200, "content": {}, "message": "Object deleted successfully." }{{%/code%}} **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-03-18T07:41:08.775Z" 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 {{%link href="/en/cloud-scale/help/zcql/introduction/"%}}ZCQL{{%/link%}} is Catalyst's own query language that enables you to perform data retrieval, insertion, updating, and deletion operations on the tables in the {{%link href="/en/cloud-scale/help/data-store/introduction"%}} Catalyst Data Store{{%/link%}}. 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 {{%badge%}}zcql{{%/badge%}} reference can be created as shown below. This does not a fire server-side call. {{%code class="language-javascript"%}}//Get a ZCQL instance var zcql = catalyst.ZCatalystQL; {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.775Z" 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 {{%link href="/en/cloud-scale/help/zcql/introduction/"%}}ZCQL query{{%/link%}} on the required data set before you execute it. A sample SELECT query is shown below: {{%code class="language-javascript"%}}//Create a query to execute var query = 'SELECT * FROM ShipmentData'; {{%/code%}} ### Execute the Query The query object created in the step above is passed to the executeZCQLQuery() method. The zcql reference used here is the {{%link href="/en/sdk/web/v4/cloud-scale/zcql/get-component-instance"%}}component instance{{%/link%}} defined earlier. This will return a promise which will be resolved to an object. The content key will contain the array of row objects. {{%code class="language-javascript"%}}//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); }); {{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} To use {{%link href="/en/cloud-scale/help/zcql/syntax-exceptions/" %}}ZCQL V2{{%/link%}} commands in your code, use the Catalyst methods listed {{%link href="/en/sdk/web/v4/overview/#manage-environment-variables" %}}here{{%/link%}} with the values listed below to set the appropriate environment variable:<br /> * {{%bold%}}Key{{%/bold%}}: {{%badge%}}ZOHO_CATALYST_ZCQL_PARSER{{%/badge%}} * {{%bold%}}Value{{%/bold%}}: {{%badge%}}V2{{%/badge%}}{{%/note%}} A sample response that you will receive is shown below. The response is the same for both versions of Web SDK. {{% panel_with_adjustment class="language-json line-numbers" header="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" } } ] {{% /panel_with_adjustment %}} #### 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-03-18T07:41:08.775Z" 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. {{%code class="language-javascript"%}}//Get a function instance var functions = catalyst.function; {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.775Z" 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 {{%link href="/en/sdk/web/v4/serverless/functions/get-component-instance"%}}component instance{{%/link%}}. {{%code class="language-javascript"%}}//Get the function object by passsing the function ID var functions = catalyst.function; var functionObject = functions.functionId(FUNCTION_ID); {{%/code%}} -------------------------------------------------------------------------------- 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-03-18T07:41:08.775Z" 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 {{%link href="/en/sdk/web/v4/serverless/functions/get-function-object"%}}function object{{%/link%}}. ### 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. {{%code class="language-javascript"%}}//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" }; {{%/code%}} 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 {{%italics%}}execute(){{%/italics%}} method. {{%note%}}The promise returned here will be resolved to an object in which the {{%bold%}}content{{%/bold%}} key contains the output of the executed function.{{%/note%}} {{%code class="language-javascript"%}}//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); }); {{%/code%}} --- ## FAQ — Catalyst SDK # Catalyst SDK {{%expand-container%}} {{%expand header="How do I access Catalyst SDKs?" id="faq_access_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 {{%italics%}}Developer Tools{{%/italics%}} in {{%italics%}}Settings{{%/italics%}} also contains the links to access and download the SDKs that are available for your project. You can refer to the {{%link href="/en/getting-started/navigating-in-the-console/"%}}**Catalyst console help page**{{%/link%}} for detailed help with accessing the SDKs and using the console. {{% /expand%}} {{%expand header="How do I fix it if the 'getCurrentUser()' method in the User Management SDK returns null?" id="faq_getcurrentuser_return_null" %}} If the client portal wasn't authenticated before triggering the Basic I/O or Advanced I/O function that contains the {{%link href="/en/api/code-reference/cloud-scale/authentication/get-current-user/#GetCurrentUser"%}}{{%badge%}}getCurrentUser(){{%/badge%}}{{%/link%}} 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 {{%badge%}}getCurrentUser(){{%/badge%}} method. {{% /expand%}} {{%expand header="Why do I get an 'Invalid Client' error when I try to generate a refresh token and provide it as an input to the connectors?" id="faq_access_catalyst_sdk" %}} 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. {{% /expand%}} {{%expand header="Why am I getting an 'OAUTH_SCOPE_MISMATCH' error for the POST or for method calls other than GET for my third party application while generating a token through the Connectors?" id="faq_access_catalyst_sdk" %}} 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. {{% /expand%}} {{%expand header="How do I store and manage multiple access tokens in Catalyst connectors?" id="faq_access_catalyst_sdk" %}} 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 {{%link href="/en/tutorials/leadmanager/java/introduction/"%}}this tutorial{{%/link%}} where we have implemented the logic of handling the access tokens of multiple users via Catalyst Connectors. {{% /expand%}} {{%/expand-container%}}