# 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-09-29T06:07:16.260Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/overview/" service: "All Services" related: - Java SDK (/en/sdk/java/v1/overview/) - JavaScript SDK (/en/sdk/javascript/v1/auth-config/node-consideration/) - Serverless Functions (/en/serverless/help/functions/introduction/) -------------------------------------------------------------------------------- # Python SDK ## Overview Catalyst Python SDK is a library that helps you build robust Catalyst applications and microservices with powerful Python programming elements. The SDK package contains pre-defined modules, classes, and functions that can be used to access the various Catalyst services and their respective components. The prime purpose of Python SDK is to provide a readily available Python environment upon which you could build your Catalyst applications. Since the core attributes and behaviours of all the Catalyst components are pre-configured as a part of the SDK, you can quickly access them and implement the required component functionalities inside the Catalyst Serverless functions and build your application logic upon them easily. You can create Basic I/O, Advanced I/O, Cron, Event or Integration functions using the Python programming environment. The SDK packages help to minimize the time and effort spent on building certain application features from scratch as the required component specific functionalities can be accessed instantly by calling the pre-defined Python methods in the SDK, using an object. The Catalyst Python SDK package allows you to perform multiple backend jobs such as user Authentication, Data Store, caching, querying, search, document processing, workflow management, Catalyst function executions, and more. The Python SDK documentation explains the process of building Catalyst applications in the Python environment. You can learn about the components, configurations of the SDK package, the scopes of the SDK methods and also access the sample code snippets for various operations in this documentation. -------------------------------------------------------------------------------- title: "Components" description: "This page contains information regarding the Catalyst services and components that Catalyst Python SDK includes." last_updated: "2026-09-29T06:07:16.260Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/components/" service: "All Services" related: - CloudScale Help (/en/cloud-scale/getting-started/introduction) - Serverless Help (/en/serverless/getting-started/introduction) - Zia Services Help (/en/zia-services/getting-started/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Components of the Python SDK Catalyst Python SDK comprises of pre-defined packages and modules to work with all the Catalyst components. The classes present within each module include methods that help perform various operations using the Catalyst components in your application. The **zcatalyst-sdk** is the base package of the Catalyst Python SDK. It enables you to initialize the SDK package and implement the various Catalyst components in your application. The zcatalyst-sdk package allows you to implement the components of the following Catalyst services: ### Cloud Scale * Authentication * Data Store * Stratus * No SQL * Search * Cache * Mail * Push Notifications ### Serverless * Functions * AppSail * Circuits ### Zia Services * OCR * Face Analytics * Identity Scanner * Image Moderation * Object Recognition * Barcode Scanner * Text Analytics ### Other Services * Job Scheduling * Pipelines Note: You can explore the scopes of the range of operations available for the mentioned components in the Scopes Table. The hierarchy of the entities present with the zcatalyst-sdk package is depicted in the diagram below. The core functionalities of the components such as the Data Store, Cache, Push Notifications, and the ones that are a part of the Zia services are configured in individual sub-packages within the base package. The features of other components such as Authentication, Circuits, Functions, Search, Cron and ZCQL are configured as individual modules within the base package and they include the corresponding Python classes and methods. ### Instance Objects The zcatalyst-sdk base package contains the pre-defined Python modules and packages for each Catalyst component. The classes present within the modules contains corresponding methods for each operation to be performed using the Catalyst components. You can access the methods by creating an instance of the Python object, that can be fetched during initialization of the SDK. For detailed steps on initialization of the Python SDK, please refer to the setup help page. An **instance object** or **component instance** is a dummy object that can be used to retrieve the properties of a Catalyst component by accessing the methods present in the Python classes specific to that particular component. Therefore, to retrieve the properties of a particular Catalyst component you must call the component's object instance with the pre-defined method. -------------------------------------------------------------------------------- title: "SDK Scopes" description: "This page describes the SDK scopes of the Python SDK." last_updated: "2026-09-29T06:07:16.260Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/sdk-scopes/" service: "All Services" related: - Catalyst Java SDK (/en/sdk/java/v1/overview/) - Catalyst Node.js SDK (/en/sdk/node/v2/overview/) -------------------------------------------------------------------------------- # Python SDK Scopes This section outlines the various SDK operations supported and their corresponding scopes. To perform these operations, you must initialize the SDK with either the **Admin** or **User** scope, as specified in the table. For more details on initializing the SDK with the required scopes, refer to this section. <table class="content-table"> <thead> <tr> <th class="w30p">Service Name</th> <th class="w70p">Component Name</th> <th class="w70p">SDK Operations</th> <th class="w70p">Scope</th> </tr> </thead> <tbody> <tr> <td>Catalyst CloudScale</td> <td>DataStore</td> <td>Get Meta Data of All Tables, Get All Columns, Get Column Details, Delete Single Row, Delete All Rows, Update Single Row, Update All Rows, Get Row, Get All Rows </td> <td>User, Admin</td> </tr> <tr> <td>Catalyst CloudScale</td> <td>DataStore</td> <td>Bulk Operations</td> <td>Admin</td> </tr> <tr> <td>Catalyst CloudScale</td> <td>User Management</td> <td>Get Details of Current User, Reset Password </td> <td>User, Admin</td> </tr> <tr> <td>Catalyst CloudScale</td> <td>Cache</td> <td>All Operations</td> <td>Admin</td> </tr> <tr> <td>Catalyst CloudScale</td> <td>Search</td> <td>Execute Search Query</td> <td>User, Admin</td> </tr> <tr> <td>Catalyst CloudScale</td> <td>ZCQL</td> <td>Execute Query</td> <td>User, Admin</td> </tr> <tr> <td>Catalyst CloudScale</td> <td>Email</td> <td>Send Mail</td> <td>User, Admin</td> </tr> <tr> <td>Catalyst CloudScale</td> <td>Push Notifications</td> <td>All Operations</td> <td>Admin</td> </tr> <tr> <td>Catalyst Serverless</td> <td>Circuits</td> <td>All Operations</td> <td>Admin</td> </tr> <tr> <td>Catalyst Zia Services</td> <td>All Components</td> <td>All Operations</td> <td>Admin</td> </tr> <tr> <td>Catalyst Quick ML</td> <td>All Components</td> <td>All Operations</td> <td>Admin</td> </tr> <tr> <td>Catalyst SmartBrowz</td> <td>All Components</td> <td>All Operations</td> <td>Admin</td> </tr> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Setup" description: "This page describes the steps to follow to setup and initialize the Python SDK." last_updated: "2026-09-29T06:07:16.261Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/setup/" service: "All Services" related: - Install Python (https://www.python.org/) - Install Pip (https://pip.pypa.io/en/stable/installation/#) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Python SDK Setup ### Prerequisites Before you begin developing your application logic with Catalyst Python SDK in your local environment, please ensure you have the following package manager and programming environment installed on your local machine: * **Pip - Python Package Manager** * **Python version 3.10 to 3.13** You can install Python from their official website and the pip package manager will be auto-installed in your local system. Please make sure you install the pip package manually if you install Python from other sources. You can refer to the pip installation documentation for installing pip. Note: If you have other versions of Python installed in your local machine (any version outside the supported range of Python 3.10 to 3.13), then the execution of the Python functions in your directory will be skipped when the application is being served or deployed. These Python functions are also excluded when you pull the functions from the console to the CLI. If you are creating Python functions in an existing Catalyst project in your local directory, you can install the prerequisites mentioned above, and proceed to set up the function. The steps to set up a Python function in an existing project directory are given in this help page. To learn about initalizing a Python function during Catalyst project initialization, refer this help page. <br> ### Installing the SDK When you initialize a Catalyst project in the CLI and create or set up a Python function in an existing project directory in your local environment, the Python SDK package (zcatalyst-sdk) will automatically be installed inside the functions directory of your current project. A main function file and a configuration file will be auto-generated with the boilerplate code in your function's directory by default when you create a Catalyst Serverless function of any programming stack. For Python functions, an additional file named requirements.txt will also be created. This file contains the list of installed dependencies that are needed to implement the Python function. By default, it contains the entry for Catalyst's Python SDK package (zcatalyst-sdk), when you create the Python function from the CLI. When you need to install external dependencies, you will need to add the name of the dependency manually in the requirements.txt file. Note: If it is your first time initializing a Python function, you will need to additionally set the path information of Python installed in your system. You can set this information in a specific configuration file that is present in your local system as a hidden file. The path will need to be set using the config:set &lt;key=value&gt; CLI command. You can find out more about this command from this help page. You can use the following command to install the Catalyst Python SDK globally in your system: pip install zcatalyst-sdk <br> ### Initializing the SDK After Python SDK is installed in your function's directory, you can begin coding the Python function. You must first initialize the SDK within the function's code, using the initialize() method to access the Catalyst components of the current project. The initialization methods for the Catalyst function types are given below: **Basic I/O Functions** import zcatalyst_sdk def handler(context, basicio): app = zcatalyst_sdk.initialize() #This app variable is used to access the Catalyst components. #Your business logic comes here **Advanced I/O Functions** import zcatalyst_sdk def handler(request: Request): app = zcatalyst_sdk.initialize() #This app variable is used to access the Catalyst components. #Your business logic comes her **Event Functions** import zcatalyst_sdk def handler(event, context): app = zcatalyst_sdk.initialize() #This app variable is used to access the Catalyst components. #Your business logic comes here **Cron Functions** import zcatalyst_sdk def handler(cron_details, context): app = zcatalyst_sdk.initialize() #This app variable is used to access the Catalyst components. #Your business logic comes here When you initialize the SDK package inside the function, it returns a Python object as the response. This object can be used to call the component-specific methods defined in the Python classes and access the required Catalyst components. Note : You can create Python functions both from the web console or the CLI, based on your preference. However, you can only upload the function bundle from the local and can't code it in the console directly for now. We will be providing support for online editors in the future. <br> ### Initializing with Scopes Catalyst allows you to initialize the SDK in a project using the following scopes: * **Admin**: You have unrestricted access to all the components and their respective functionalities. For example, you have complete access to the Data Store to perform all operations like Read, Write, Delete, etc. * **User**: You can restrict access to components, and specific functionalities. For example, you can provide Read access alone to Data Store. Note:<br /> * It is not mandatory for you to initialize the projects with scopes. By default, a project that is initialized will have Admin privileges. * Ensure you have initialized the Catalyst SDK with the appropriate scope while you engineer your business logic. The permissions you define for your scope control your end-user's actions. * To learn more about the scopes of the SDK operations that can be performed in various components, refer to the Scopes Table * Depending on how you engineer your business logic, you can decide if your end-users can perform Admin or User actions. This is decided based on the role assigned to your end-user when they sign up to your application in Catalyst Authentication. The permissions for the roles can be configured in the Scopes & Permissions or the Bucket Permissions section of the Data Store and Stratus respectively. The SDK snippets below will allow you to initialize the SDK using either *Admin* or *User* scope : **Admin Scope** import zcatalyst_sdk def handler(request: Request): app = zcatalyst_sdk.initialize(scope='admin') #This app variable is used to access the catalyst components. #You can refer the SDK docs for code samples. #Your business logic comes her **User Scope** import zcatalyst_sdk def handler(request: Request): app = zcatalyst_sdk.initialize(scope='user') #This app variable is used to access the catalyst components. #You can refer the SDK docs for code samples. #Your business logic comes here We will be discussing about upgrading the Python SDK in the next section. -------------------------------------------------------------------------------- title: "Upgrade SDK" description: "This page describes the steps to upgrade the Python SDK to the latest supported version in your code" last_updated: "2026-09-29T06:07:16.262Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/upgrade-sdk/" service: "All Services" related: - Catalyst Java SDK (/en/sdk/java/v1/overview/) - Catalyst Node.js SDK (/en/sdk/node/v2/overview/) -------------------------------------------------------------------------------- # Upgrade Your Python SDK Catalyst constantly strives to provide you with the latest, most secure, and efficient SDK packages to streamline your development process. We also upgrade our SDK support based on the upgrades in the technology. That is, when a new version of Python is released, Catalyst ensures we implement it in our SDK toolkit. This means that from time to time, Catalyst will upgrade its SDK version to provide you with the best coding support. We recommend keeping up with the latest Catalyst SDK updates and bug fixes through our Release Notes and upgrading to the latest versions as they become available. Our SDK updates align with official Python releases, incorporating their latest enhancements while phasing out deprecated versions. Additionally, we continuously introduce new components and features to enhance the SDK experience. Note: If an immediate upgrade of your SDK is required due to deprecating an old SDK version, we will ensure you are notified on time via email to perform the necessary upgrades. Generally, it's highly recommended that you always upgrade your SDK to the latest version. You can upgrade your SDK globally and within Python functions. We will be discussing about steps to upgrade the SDK in both the places in this help doc. Note: When you upgrade the SDK globally, the existing functions won't automatically reflect the updated version. To apply the global version, you need to remove the specified version from the requirements.txt file of each function. <br> ### Upgrade SDK Globally To upgrade the Catalyst Python SDK globally, you can use the commands below from any directory in your terminal : Install a Specific Package To install a specific Python SDK version's package, execute the following command. Please ensure to replace the version number of the SDK package with the one you require. pip install zcatalyst-sdk==0.0.2 <br/> Note: 1. It is always recommended that you install the latest version of the SDK rather than a specific version. 2. By default, while executing Python functions, the function considers the SDK package listed in the requirements.txt file. If want to use the SDK that is installed globally, please remove the SDK package from requirements.txt file. <br> ### Install Latest Version Installing the latest version of the SDK gives you access to the newest features and includes all recent bug fixes. To install the latest available version of the SDK at any time, execute the following command: pip install zcatalyst-sdk <br> ### Upgrade SDK in a Function To upgrade the Catalyst Python SDK for a specific function, please follow the below steps: 1. Launch your terminal and navigate to the Python function's source directory. For example, consider you have a Catalyst project named "Pets Conglomerate" installed through the CLI in your system: **/Users/user/apps/petsConglomerate**. In this project, you have a function named "dogs_spotted". You need to navigate to the function's source directory, which would appear like this: **/Users/user/apps/petsConglomerate/functions/dogs_spotted** 2. Open the requirements.txt file in this function's directory, and update the version of the Python SDK and save the file. For example : zcatalyst-sdk==1.0.0rc1 3. Execute the below command to make sure the updated SDK version is reflected in your CLI instance. pip install -r requirements.txt This command ensures the updates in the latest version are reflected in the CLI right away. -------------------------------------------------------------------------------- title: "Exceptions" description: "This help page lists the common exceptions that can occur in your Catalyst Python app executions" last_updated: "2026-09-29T06:07:16.262Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/exceptions/" service: "All Services" -------------------------------------------------------------------------------- # Exceptions Exceptions are unexpected faulty behaviours that occur during execution of the application. All errors and exceptions thrown by the Catalyst applications built upon Python environment are handled by the Exceptions module and the classes within it. When an error or exception occurs in your application, the following properties of the exception are returned: * code: Unique identifier of the error. * errorMsg: General description about the error. * errorDetails: Additional information about the error. * originalException: In case of HTTP requests, returns HTTP status codes. Or else returns "None". The base class CatalystError is pre-defined in the Exceptions module of the Catalyst Python SDK package. It is inherited by multiple sub-classes which handles the exception and error scenarios that might occur during execution of the Catalyst components in your application. An individual error class is configured for each Catalyst component as a part of the Python SDK and any unexpected events in the defined flow of the component executions, the respective errors will be thrown. #### Example : Consider you are executing a Catalyst Serverless function in your Catalyst application and the function returns an error code as the response. In this case, the respective error class pre-defined for the Functions component (CatalystFunctionError) will handle the scenario. Likewise, if you are performing an incorrect database specific operation in the Catalyst DataStore, the exception will be caught and handled within the CatalystDataStoreError class. Therefore, a unique error class is pre-defined for each Catalyst component as a part of the Exceptions module. The other common classes included in the module are CatalystAuthenticationError, Catalyst CacheError,Catalyst CronError,CatalystZiaError and more. Additionally, the exceptions that are not caught by any component specific Python classes are handled in the CatalystAPIError class. This class handles the exceptions caught at the API level and defines the error codes for the failed API requests. Listed below are some of the typical API error codes applicable to all Catalyst components: <table class="content-table"> <thead> <tr> <th class="w30p">Error Codes</th> <th class="w70p">Descriptions</th> </tr> </thead> <tbody> <tr> <td><strong>INVALID ARGUEMENT ERROR</strong></td> <td>The arguments passed is not of a valid type for the specific format.</td> </tr> <tr> <td><strong>INVALID CREDENTIAL ERROR</strong></td> <td>The credentials entered is not valid.</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Integrate SDK in Third-Party Apps" last_updated: "2026-09-29T06:07:16.262Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/integrate-sdk-in-third-party-apps/" service: "All Services" related: - Catalyst Environments (/en/deployment-and-billing/environments/introduction/) - Catalyst Cloud Scale Authentication (/en/cloud-scale/help/authentication/introduction/) - Catalyst Cloud Scale Stratus (/en/cloud-scale/help/stratus/introduction/) -------------------------------------------------------------------------------- # Catalyst Python SDK Integration in Third-Party Applications You can integrate and use the Catalyst Python SDK methods in applications deployed outside the Catalyst environment. Say, a React app hosted on Vercel using a Flask backend (running outside Catalyst) can upload documents to Catalyst Cloud Scale Stratus or a data pipeline running on Amazon Web Services EC2 can push customer data into Catalyst Cloud Scale Data Store using Catalyst Cloud Scale ZCQL queries using the respective Python SDK operations. These are just a few common use cases where external applications can securely interact with Catalyst components without being deployed within the Catalyst platform. We have provided the code snippet to help you integrate the Catalyst Python SDK with external applications. However, before implementing the code in your application, please review the following prerequisites. ### Prerequisites for the SDK Integration To integrate the Catalyst Python SDK with your external application, ensure you have the following information: * **Project ID:** The unique identifier of your Catalyst project. * **ZAID (Zoho Account ID):** A unique portal identifier assigned by Catalyst to link your project with the Catalyst environment (development or production). * **Environment:** The target environment (development or production) of your Catalyst project. * **OAuth Credentials:** This is required to authenticate and authorize your external application via Catalyst’s self-client portal to access Catalyst components. You will need the following: 1. Client ID 2. Client Secret 3. Refresh Token After you fetch these values , you can proceed with integrating the Python SDK into your application. <br> ### Steps to Integrate Now, let's look at how to fetch each of these values and configure them in the code snippet. Please ensure you follow the steps outlined below: 1. **Create a project in the Catalyst Console:** You can create a new Catalyst project in the console by using the steps mentioned in this help page. 2. **Retrieve the Project ID:** Once you have created your project, you will need to make a note of the **Project ID**. The Project ID is the unique ID of your project that will be created automatically during the project’s creation. You can find it by clicking the **Settings** icon located in the top-right corner of the Catalyst console. In the **Settings** screen, navigate to **Project Settings** and select **General**. You can view and make a note of the Project ID from this section, as shown in the screenshot below. <br> 3. **Retrieve the ZAID:** You will need to include your project’s **ZAID** in the code snippet provided in this section. The **ZAID** is a unique portal identifier assigned by Catalyst to link your project with the required Catalyst environment (development or production). Learn more about Catalyst environments. To retrieve the ZAID, setting up the Catalyst CloudScale Authentication component is mandatory. However, using it for your application's authentication flow is optional. To fetch the ZAID: i. Navigate to the Catalyst CloudScale service in the console and under **Security & Identity**, select **Authentication**. <br> ii. You will need to set up Native Catalyst Authentication, where Catalyst manages the entire authentication process for you, eliminating the need for any additional coding or infrastructure management on your part. iii. Click **Set Up**. <br> iv. Select the **Hosted authentication** type, which enables you to host your login element on dedicated pages of your application. You can configure and design the authentication from the console, and Catalyst will render it for your application and handle all the backend requirements. <br> v. You must enable the Public Signup option to display the signup feature in your login component, allowing new users to register and access your application. You can refer to the hosted authentication help page for a detailed step-by-step setup guide. <br> vi. In the confirmation screen, click **Yes, proceed**. <br> vii. You can enable any of the supported social login options listed below and retrieve the corresponding **ZAID** value from the selected provider. Learn how to obtain the ZAID for a specific social login. Note: Social login providers, such as Google, Microsoft, LinkedIn, and Facebook, are supported for retrieving the ZAID; however, Zoho login is not supported for this purpose. <br> Learn more about this hosted authentication type. <br> 4. **Register a Self Client Application:** You will need to obtain the **Refresh Token**, **Client ID**, and **Client Secret** to authenticate and authorize your application to access Catalyst resources on behalf of your application's user. For fetching the above required items, you must first register your application as a self-client in API console. i. Log in to the API console and click on **Self-client**. <br> ii. Configure the scope of the self-client application based on the operations your application needs to perform in Catalyst. Learn more about available scopes. iii. Provide the required scope, add an appropriate description, and click **Create**. <br> iv. The grant token will be generated. Make sure to copy and store it securely, as this is a one-time process, and the token cannot be retrieved from the console again. Learn more about generating a grant token. <br> v. Switch to the **Client Secret** tab and note down the client ID and the client secret details. <br> vi. You can generate the access and refresh token by using the request in this help page. You can also refresh the access token by using the steps listed in this page. After you have noted all the values mentioned above, you can configure them in the code snippet as shown below and integrate Python SDK into your application. The code below demonstrates this with the example of fetching buckets from Catalyst CloudScale Stratus. <br> ### Code Snippet import zcatalyst_sdk from zcatalyst_sdk import credentials from zcatalyst_sdk import types from zcatalyst_sdk.types import ICatalystOptions from flask import Flask, Request, make_response, jsonify from typing import Dict, Literal app = Flask(__name__) def list_all_buckets(): Cred = { "refresh_token": "YOUR_REFRESH_TOKEN", //Provide refresh token value here "client_id": "CLIENT_ID", //Provide client ID value here "client_secret": "CLIENT_SECRET", //Provide client secret value here } project_id = PROJECT_ID //Provide Project ID value here project_key = ZAID //Provide ZAID value here environment = "Development" //Provide value as either "Development" or "Production" catalyst_credential = credentials.RefreshTokenCredential(Cred) catalyst_options = ICatalystOptions( project_id=project_id, project_key=project_key, project_domain="https://api.catalyst.zoho.com", environment=environment, ) catalystApp = zcatalyst_sdk.initialize_app( credential=catalyst_credential, options=catalyst_options, name="TaskSDKPython" ) stratus = catalystApp.stratus() buckets = stratus.list_buckets() print(buckets) return jsonify({"message": "Success", "bucket_data": buckets}) @app.route("/listbuckets", methods=["GET"]) def handle_list_all_buckets(): return list_all_buckets() if __name__ == "__main__": with app.app_context(): response = handle_list_all_buckets() port = 3006 printf("Server running on http://localhost:{port}") app.run(port=port) ## Cloud Scale ### Authentication -------------------------------------------------------------------------------- title: "Get Authentication Instance" description: "This page describes the method to create a component instance in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.263Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/authentication/get-component-instance/" service: "Cloud Scale" related: - Authentication Help (/en/cloud-scale/help/authentication/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Authentication Catalyst Cloud Scale Authentication features in Python SDK help you perform user authentication-specific operations, such as adding a new user, fetching details of the current user or all users, resetting the password of an existing user account, and deleting a user. ### Get a Component Instance A component instance is an object that can be used to access the predefined configurations specific to a particular component. You can create a component instance for Authentication to execute various user management actions, which will not fire a server-side call. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new authentication_serviceinstance as shown below : #Get Authentication component instance authentication_service = app.authentication() This component instance will be used as shown in the various Authentication sections of the Python SDK documentation. -------------------------------------------------------------------------------- title: "Add New User" description: "This page describes the method to add new end-users to your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.264Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/authentication/add-new-user/" service: "Cloud Scale" related: - Add New User - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) - Authentication Help (/en/cloud-scale/help/authentication/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Add New User You can add end-users to your Catalyst application and they will be assigned to a default organization automatically, if the organization is not specified explicitly. When the user is added, a unique user_ID and ZUID are generated for them by Catalyst. #### Create a Dictionary Before you add a new user to the Catalyst application, you must create a dictionary that contains the user details such as the last name of the user, the role they have to be assigned to, their email address, the application platform and the ZAID data based on the current working environment. The dictionary that contains these details will be passed as a parameter to the register_user() method. Note : * You must provide the values for email_id and first_name to register a user mandatorily. * You can obtain the role_id from the _Roles_ section in _Authentication_ in the Catalyst console. * You can obtain the ZAID from the Environment settings in your Catalyst console. * When inviting a new user, you can configure the sender's email address, subject and the email message. You must add the email address in the Catalyst Mail Component and get it verified before using it in the SDK code. #Create a dictionary signup_config = { "platform_type": "web", "zaid": "81008807534807534", "template_details": { "senders_mail": "dogogetu@tutuapp.bid", "subject": "Welcome to %APP_NAME%", "message": "&lt;p&gt;Hello ,&lt;/p&gt; &lt;p&gt;Follow this link to join in %APP_NAME% .&lt;/p&gt; &lt;p&gt;&lt;a href='%LINK%'&gt;%LINK%&lt;/a&gt;&lt;/p&gt; &lt;p&gt;If you didn’t ask to join the application, you can ignore this email.&lt;/p&gt; &lt;p&gt;Thanks,&lt;/p&gt; &lt;p&gt;Your %APP_NAME% team&lt;/p&gt;", }, } user_details = { "first_name": "Amelia", "last_name": "Burrows", "role_id": "1008807534", "email_id": "amelia.burrows@zylker.com", } ### Add New User After you have configured the necessary user information in the dictionary, you can proceed to add a new user to an organization. In this case, an organization will automatically be assigned to the user. The register_user() method handles the user creation process and returns a response. To know more about the component instance authentication_service used below, please refer to this section. Note : You will only be able to add 25 users in your application in the development environment. After you deploy your application to production, you can include any number of end-users in it. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>signup_config</td> <td>Object</td> <td>A Mandatory parameter. Will store the user registration details, including the application platform, ZAID, and the email information to be sent after registration.</td> </tr> <tr> <td>user_details</td> <td>Object</td> <td>A Mandatory parameter. Will hold the user registration details such as first name, last name, email ID and the ID of the organization to which the user has to be added.</td> </tr> </tbody> </table> #Add a new user authentication_service = app.authentication() response_data = authentication_service.register_user(signup_config, user_details) A sample response is shown below : { "zaid":"81008807534807534", "user_details":{ "zuid":"1005641290", "org_id":"1005641456", "status":"ACTIVE", "is_confirmed":false, "email_id":"amelia.burrows@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "created_time":"Aug 12, 2021 12:33 PM", "modified_time":"Aug 12, 2021 12:33 PM", "invited_time":"Aug 12, 2021 12:33 PM", "role_details":{ "role_name":"App User", "role_id":"2305000000006024" }, "user_type":"App User", "user_id":"2305000000007752", "project_profiles":[ ] }, "redirect_url":"https://aliencity-66446133.development.catalystserverless.com/app/", "platform_type":"web", "org_id":"1005641456" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Add New User to Existing Org" description: "This page describes the method to add a new user to the existing organisation in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.264Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/authentication/add-new-user-to-existing-org/" service: "Cloud Scale" related: - Add New User to Existing Org - API (/en/api/code-reference/cloud-scale/authentication/add-user-to-existing-org/#AddaNewUsertoanExistingOrganization) - Authentication Help (/en/cloud-scale/help/authentication/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Add a New User to an Existing Organization You can add an end-user to an existing organization without creating a new organization for them. This can be done by providing the **OrgID** of the organization that the user must be added to. When the user has signed up, unique identification values such as ZUID and User ID are created for them by Catalyst. Note : * You must provide the values for org_id, email_id, last_name mandatorily to add a user to an existing organization. * You can obtain the ZAID from the Environment settings in your Catalyst console. * You can also add them to a role by providing the role_id, which you can obtain from the Roles section in Authentication in the Catalyst console. * When inviting a new user, you can configure the sender's email address, subject and the email message. You must add the email address in the Catalyst Mail Component and get it verified before using it in the SDK code. ## Create a Dictionary Before you add a new end-user to your Catalyst application, you must create a dictionary that contains the registration details of the particular user, as shown below. You can then pass the configured dictionary to the method that handles the user signup process. #Create a dictionary signup_config = { "platform_type": "web", "zaid": "1008807534", "template_details": { "senders_mail": "dogogetu@tutuapp.bid", "subject": "Welcome to %APP_NAME%", "message": "&lt;p&gt;Hello ,&lt;/p&gt; &lt;p&gt;Follow this link to join in %APP_NAME% .&lt;/p&gt; &lt;p&gt;&lt;a href='%LINK%'&gt;%LINK%&lt;/a&gt;&lt;/p&gt; &lt;p&gt;If you didn’t ask to join the application, you can ignore this email.&lt;/p&gt; &lt;p&gt;Thanks,&lt;/p&gt; &lt;p&gt;Your %APP_NAME% team&lt;/p&gt;", }, } user_details = { "first_name": "Amelia", "last_name": "Burrows", "email_id": "amelia.burrows@gmail.com", "org_id": "1005641456", } ### Add a New User to Existing Org You can add a new end-user to an existing organization using the code below. You must pass the dictionary you created in the previous section as an argument to the add_user_to_org() method. This method handles the user sign-up process and returns a response. Note : You will only be able to add 25 users in your application in the development environment. After you deploy your application to production, you can include any number of end-users in it. To know more about the component instance authentication_service used below, please refer to this section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>signup_config</td> <td>Object</td> <td>A Mandatory parameter. Will store the user registration details, including the application platform, ZAID, and the email information to be sent after registration.</td> </tr> <tr> <td>user_details</td> <td>Object</td> <td>A Mandatory parameter. Will hold the user registration details such as first name, last name, email ID and ID of the organization to which the user has to be registered.</td> </tr> </tbody> </table> #Add new user to an existing organization authentication_service = app.authentication() response_data = authentication_service.add_user_to_org(signup_config, user_details) A sample response is shown below : { "zaid":"1008807534", "user_details":{ "zuid":"1005643749", "org_id":"1005641456", "status":"ACTIVE", "is_confirmed":false, "email_id":"amelia.burrows@gmail.com", "first_name":"Amelia", "last_name":"Burrows", "created_time":"Aug 12, 2021 03:56 PM", "modified_time":"Aug 12, 2021 03:56 PM", "invited_time":"Aug 12, 2021 03:56 PM", "role_details":{ "role_name":"App User", "role_id":"2305000000006024" }, "user_type":"App User", "user_id":"2305000000009002", "project_profiles":[ ] }, "redirect_url":"https://aliencity-66446133.development.catalystserverless.com/app/", "platform_type":"web", "org_id":"1005641456" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Reset Password" description: "This page describes the method to reset the password of a user account in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.264Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/authentication/reset-password/" service: "Cloud Scale" related: - Reset Password - API (/en/api/code-reference/cloud-scale/authentication/reset-user-password/#ResetUserPassword) - Authentication Help (/en/cloud-scale/help/authentication/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Reset Password You can reset the password of a registered user's account using the following code snippet. While calling the reset_password() method, a reset password link will be generated and sent to the user's email address. Note: * The email_id, platform_type, and zaid are mandatory attributes. * You can configure the sender's email address, subject and the email message. You must add the email address in the Catalyst Mail Component and get it verified before using it in the SDK code. #### Create a Dictionary You will need to create a dictionary that contains the registration details of a particular user as given below. You can then pass the configured dictionary to the method that handles the password reset process. #Create a dictionary reset_config = { "platform_type": "web", "zaid": "1008807534", "template_details": { "senders_mail": "dogogetu@tutuapp.bid", "subject": "Welcome to %APP_NAME%", "message": "<p>Hello ,</p> <p>Follow this link to join in %APP_NAME% .</p> <p><a href='%LINK%'>%LINK%</a></p><p>If you didnt ask to join the application, you can ignore this email.</p><p>Thanks,</p> <p>Your %APP_NAME% team</p>", }, } ### Reset the Password The objects that contains the user information and user signup configuration are passed as arguments to the reset_password() method which returns a response. To know more about the component instance authentication_service used below, please refer to this section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>email_id</td> <td>String</td> <td>A Mandatory parameter. Will hold the value of the the user's email address.</td> </tr> <tr> <td>reset_config</td> <td>Object</td> <td>A Mandatory parameter. Will store the details of the user account for which the password needs to be reset. These details include the application platform type, the ZAID, and the email information to be sent after the password reset.</td> </tr> </tbody> </table> user = app.user_management() users = user.reset_password('amelia.b@zylker.com', { 'platform_type': 'web', 'redirect_url': 'https://www.google.com', 'template_details': { 'subject': 'Reset Password', 'message': 'Click on the link to reset your password: <a href="{{reset_password_url}}">Reset Password</a>', 'senders_mail': 'support@zylker.com' } }) print(users) A sample response is shown below : "Reset link sent to amelia.burrows@zylker.com. Please check your email". Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Custom User Validation" description: "This page describes the method to reset the password of a user account in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.265Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/authentication/custom-user-validation/" service: "Cloud Scale" related: - Authentication Help (/en/cloud-scale/help/authentication/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Custom User Validation Catalyst Authentication allows you to authorize and validate your end-users using a custom Basic I/O function on the event of a sign-up to your Catalyst application. You can write your own logic and process the credentials that the user provides through this function, and grant access to your application. To know more about the component instance authentication_service used below, please refer to this section. A sample code for a Custom User Validation function is given below. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>basicio</td> <td>Function</td> <td>A Mandatory parameter. The Basic IO Catalyst function that allows to authorize and validate your end-users.</td> </tr> </tbody> </table> import json import zcatalyst_sdk def handler(context, basicio): app = zcatalyst_sdk.initialize() authentication_service = app.authentication() request_details = authentication_service.get_signup_validation_request(basicio) if request_details: print("response :", request_details) if "spam.com" in request_details["user_details"]["email_id"]: basicio.write(json.dumps({"status": "failure"})) else: basicio.write( json.dumps( { "status": "success", "user_details": { "first_name": "Amelia", "last_name": "Jack", "role_identifier": "cx_role", "org_id": 1012535411 # If you are providing the Org ID, it must be copied from the console. }, } ) ) context.close() To test this function, you can pass the details of the user in the following .JSON format: { "request_type":"add_user", "request_details":{ "user_details":{ "email_id":"emmy@zylker.com", "first_name":"Emma", "last_name":"Thompson", "org_id":"432567817", "role_details":{ "role_name":"Moderator", "role_id":"879" } }, "auth_type":"web" } } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Generate a Custom Server Token" description: "This page describes the method to reset the password of a user account in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.265Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/authentication/third-party-server-token/" service: "Cloud Scale" related: - Authentication Help (/en/cloud-scale/help/authentication/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Generate a Custom Server Token Cloud Scale's Authentication component allows you to implement a third-party authentication service of your preference for your Catalyst application. The authorization and validation of the end-user is handled by the third-party service, and the data is passed on to Catalyst. Note: * Since you are implementing a third-party authentication service, it is understood that the security infrastructure of your application is contingent on the efficiency of the third-party service that you have chosen. * To enable a third-party authentication in your Catalyst application, you must ensure that you have enabled Public Signup in the console. When a user is re-directed from a third-party service after being authenticated, their credentials must be passed to an authentication function that you code. This function must include the Catalyst server-side script to generate a custom server token, which will then be passed to the Web SDK incorporated in the client code. Info : Refer to the SDK Scopes table to determine the required permission level for performing the below operation. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">String</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>type</td> <td>String</td> <td>A Mandatory parameter. Will hold the value of the application type.</td> </tr> <tr> <td>user_details</td> <td>Object</td> <td>A Mandatory parameter. Will hold values of first_name and email_id of the end user.</td> </tr> </tbody> </table> import zcatalyst_sdk def handler(context, basicio): app = zcatalyst_sdk.initialize() auth = app.authentication() resp = auth.generate_custom_token( { "type": "web", "user_details": { "first_name": "Amelia", "email_id": "amelia.burrows@zylker.com", }, } ) basicio.write(str(resp)) context.close() You can now pass this token to the client logic as explained in this Web SDK help page. Note: The custom server token will have to be generated every single time the user logs in to your application using a third-party authentication service. -------------------------------------------------------------------------------- title: "Get User Details" description: "This page describes the method to fetch user details from the Data Store in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.265Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/authentication/get-user-details/" service: "Cloud Scale" related: - Get User Details - API (/en/api/code-reference/cloud-scale/authentication/get-current-user/#GetCurrentUser) - Authentication Help (/en/cloud-scale/help/authentication/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Get user details Catalyst Authentication provides some methods to retrieve the details of the application users. You can obtain the user information of the current user, any user, or all users of the application. ### Get Details of Current User The get_current_user() method fetches the details of the current user accessing the application and on whose scope the function is being executed. To know more about the component instance authentication_service used below, please refer to this section. #Get details of user authentication_service = app.authentication() current_user = authentication_service.get_current_user() A sample response is shown below : { "zuid":"1005641433", "org_id":"1005641434", "status":"ACTIVE", "is_confirmed":false, "email_id":"amelia.burrows@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "created_time":"Aug 12, 2021 12:27 PM", "role_details":{ "role_name":"App User", "role_id":"2305000000006024" }, "user_type":"App User", "user_id":"2305000000007745", "locale":"us|en|Asia/Kolkata", "time_zone":"Asia/Kolkata", "project_profiles":[ ] } ### Get User Details by User ID You can retrieve the details of a particular user by passing the userID of the user to the get_user_details() method. The response returns the details of the particular user, such as their lastname, the list of the roles the user holds, the type of the user, the orgID of the organization the user belongs to, their email address, and more. To know more about the component instance authentication_service used below, please refer to this section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>user_id</td> <td>String</td> <td>A Mandatory parameter. Will store the unique ID of the user whose details need to be retrieved.</td> </tr> </tbody> </table> #Get details by userid authentication_service = app.authentication() user_details=authentication_service.get_user_details('12345') A sample response is shown below : { "zuid":"1005665160", "org_id":"1005665245", "status":"ACTIVE", "is_confirmed":false, "email_id":"mikerogers@zylker.com ", "first_name":"Michael", "last_name":"Rogers", "created_time":"Aug 17, 2021 04:55 PM", "role_details":{ "role_name":"App User", "role_id":"2136000000007748" }, "user_type":"App User", "user_id":"2136000000020040", "locale":"us|en|Asia/Kolkata", "time_zone":"Asia/Kolkata", "project_profiles":[ ] } ### Get Details of All Users The get_all_users() method can fetch the details of all the users of all organizations. The response returns the following details of all the users : lastname, the list of the roles, the type of the user, email address, userID, zuid, time zone, and more. To know more about the component instance authentication_service used below, please refer to this section. #Get details of all users authentication_service = app.authentication() user_details = authentication_service.get_all_users() A sample response is shown below : [ { "zuid":"1005648252", "org_id":"1005648253", "status":"ACTIVE", "is_confirmed":false, "email_id":"p.boyle@zylker.com", "first_name":"Parker", "last_name":"Boyle", "created_time":"Aug 13, 2021 01:36 PM", "modified_time":"Aug 13, 2021 01:36 PM", "invited_time":"Aug 13, 2021 01:36 PM", "role_details":{ "role_name":"App User", "role_id":"2136000000007748" }, "user_type":"App User", "user_id":"2136000000007774", "locale":"us|en|Asia/Kolkata", "time_zone":"Asia/Kolkata", "project_profiles":[ ] }, { "zuid":"1005665160", "org_id":"1005665245", "status":"ACTIVE", "is_confirmed":false, "email_id":"rsmith@zylker.com ", "first_name":"Robert", "last_name":"Smith", "created_time":"Aug 17, 2021 04:55 PM", "modified_time":"Aug 17, 2021 04:55 PM", "invited_time":"Aug 17, 2021 04:55 PM", "role_details":{ "role_name":"App User", "role_id":"2136000000007748" }, "user_type":"App User", "user_id":"2136000000020040", "locale":"us|en|Asia/Kolkata", "time_zone":"Asia/Kolkata", "project_profiles":[ ] } ] ### Get Details of All Users in an org The org_id is passed as a parameter to the get_all_users() method in order to fetch the users belonging to a particular organization. To know more about the component instance authentication_service used below, please refer to this section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>org_id</td> <td>String</td> <td>An Optional parameter. Will store the ID of the organization whose user details need to be retrieved. If `org_id` is not specified, details of all users across all organizations will be retrieved.</td> </tr> </tbody> </table> #Get details of all users authentication_service = app.authentication() user_details = authentication_service.get_all_users(1293028) A sample response is shown below : [ { "zuid":"1005648252", "org_id":"1005648253", "status":"ACTIVE", "is_confirmed":false, "email_id":"roger.p@zylker.com", "first_name":"Roger", "last_name":"Parkinson", "created_time":"Aug 13, 2021 01:36 PM", "modified_time":"Aug 13, 2021 01:36 PM", "invited_time":"Aug 13, 2021 01:36 PM", "role_details":{ "role_name":"App User", "role_id":"2136000000007748" }, "user_type":"App User", "user_id":"2136000000007774", "locale":"us|en|Asia/Kolkata", "time_zone":"Asia/Kolkata", "project_profiles":[ ] } ] Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Update User Details" description: "This page describes the method to reset the password of a user account in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.266Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/authentication/update-user-details/" service: "Cloud Scale" related: - Authentication Help (/en/cloud-scale/help/authentication/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Update User Details Catalyst allows you to modify and update the following details of an end-user: * First Name * Last Name * OrgID : OrgID is a unique value that is generated by Catalyst to associate with an organization. * RoleID : Role ID is the value generated by Catalyst that is assigned to a particular user role. ### Create a dictionary update_config = { "email_id": "amelia.burrows@zylker.com", "last_name": "Burrows", "first_name": "Amelia", "org_id": "1012585680", "role_id": "6759000000054065", } The SDK snippet below demonstrates updating an end-user’s details using the update_user_details(userID, userDetails) method. The first name of the user is updated in the example below. To know more about the component instance authentication_service used below, please refer to this section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>UserID</td> <td>String</td> <td>A Mandatory parameter. Will hold the UserID of the user whose details are to be updated.</td> </tr> <tr> <td>update_config </td> <td>Object</td> <td>A Mandatory parameter. Will hold the values of email_id, last_name, first_name, org_id and role_id. You can update the first_name or last_name parameter here.</td> </tr> </tbody> </table> authentication_service = app.authentication() user_details=authentication_service.update_user_details('6759000000124659', update_config) Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Delete User" description: "This page describes the method to delete users from your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.266Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/authentication/delete-user/" service: "Cloud Scale" related: - Authentication Help (/en/cloud-scale/help/authentication/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Delete a User The end-user of a Catalyst application can be deleted from a Catalyst application to discontinue their access to it. This can be done by calling the delete_user() method and by passing the UserID of the user to be deleted as a parameter to it. This method returns a response as true when the user is deleted. To know more about the component instance authentication_service used below, please refer to this section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>UserID</td> <td>String</td> <td>A Mandatory parameter. Will store the ID of the user to be deleted.</td> </tr> </tbody> </table> #Delete an existing user authentication_service = app.authentication() delete_response = authentication_service.delete_user(2305000000007745) Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Enable or Disable a User" description: "This page describes the method to enable or disable a user in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.266Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/authentication/enable-disable-user/" service: "Cloud Scale" related: - Authentication Help (/en/cloud-scale/help/authentication/introduction) - Enable or Disable a User in the Console (/en/cloud-scale/help/authentication/user-management/users/implementation/#enable-or-disable-a-user) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Enable or Disable a User Catalyst allows you to disable or enable a user at any time. A disabled user will be signed up to your application but will not be able to access your application. The SDK snippet below demonstrates enabling and disabling an end-user using the update_user_status(userId, user_status) method. The user is referred by their unique User ID. You can find the User IDs of all users by navigating to the *Users* > *User Management* section of the Authentication component. To know more about the component instance authentication_service used below, please refer to this section. ### To Enable a User **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>userId</td> <td>String</td> <td>A Mandatory parameter. Will hold the UserID of the user to be enabled for the application.</td> </tr> <tr> <td>user_status</td> <td>String</td> <td>A Mandatory parameter. Will hold the default value "enable".</td> </tr> </tbody> </table> authentication_service = app.authentication() user_details = authentication_service.update_user_status('6759000000124659', 'enable') # Replace the user id ### To Disable a User **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>userId</td> <td>String</td> <td>A Mandatory parameter. Will hold the UserID of the user to be disabled for the application.</td> </tr> <tr> <td>user_status</td> <td>String</td> <td>A Mandatory parameter. Will hold the default value "disable"</td> </tr> </tbody> </table> authentication_service = app.authentication() user_details = authentication_service.update_user_status('6759000000124659', 'disable') # Replace the user id Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ### Cache -------------------------------------------------------------------------------- title: "Get Cache Instance" description: "This page describes the method to delete a key-value pair using a key or cache object in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.267Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/cache/get-component-instance/" service: "Cloud Scale" related: - Cache Help (/en/cloud-scale/help/cache/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Cache Catalyst Cloud Scale Cache is provided as an ephemeral storage component that can be used independently of your main data storage unit. It is highly useful when implemented in dynamic, memory-intensive applications. Catalyst cache can be implemented in your application using the SDK methods listed below. # Get component instance A component instance is an object that can be used to access the pre-defined configurations specific to a particular component. This process will not fire a server-side call. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new cache_serviceinstance as shown below. This instance will be used in multiple scenarios while performing cache component related operations. #Get cache component instance cache_service = app.cache() -------------------------------------------------------------------------------- title: "Get Segment Instance" description: "This page describes the method to get a cache segment instance in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.267Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/cache/get-segment-instance/" service: "Cloud Scale" related: - Cache Help (/en/cloud-scale/help/cache/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Get a segment instance To know more about the component instance cache_service used below, please refer to this section. When the segment ID is passed as a parameter, the cache implementation will refer to that particular segment. When the segment ID is not specified explicitly, then it will refer to the default segment. #Get segment instance cache_service = app.cache() segment_service = cache_service.segment() -------------------------------------------------------------------------------- title: "Retrieve Data from the Cache" description: "This page describes the method to retrieve data from the cache in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.267Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/cache/retrieve-data-from-cache/" service: "Cloud Scale" related: - Retrieve Data from the Cache - API (/en/api/code-reference/cloud-scale/cache/get-cache-value/#GetCacheValue) - Cache Help (/en/cloud-scale/help/cache/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Retrieve data from the cache ### Get Cache Value Catalyst Cloud Scale Cache is divided into partitions or cache units called segments. Each segment stores cache items in the form of key-value pairs. Both keys and values are of type String. You can retrieve the value of a cache item from a segment in the cache using the get_value() method. You must pass the key name as the argument and the value corresponding to that key will be returned as a response. To know more about the component instance cache_service and the segment_service segment_service used below, please refer to their respective help sections. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>Key</td> <td>String</td> <td>A Mandatory parameter. Will hold the key for retrieving the cache value.</td> </tr> </tbody> </table> #Get cache value cache_service = app.cache() segment_service = cache_service.segment() data = segment_service.get_value('key') A sample response is shown below : { "cache_name": "Name", "cache_value": "Amelia Burrows", "expires_in": "Mar 09, 2023 06:20 PM", "expiry_in_hours": "48", "project_details": { "id": "2648000001343001", "project_name": "appEngine", "project_type": "Live", }, "segment_details": {"id": "2648000001343037", "segment_name": "Default"}, "ttl_in_milliseconds": "172800000", } ### Get Cache Object You can retrieve the details of the cache where the key-value pair is of type dictionary. The key object is retrieved using the get() method, where the key name is passed as an argument. To know more about the component instance cache_service and the segment instance segment_service used below, please refer to their respective help sections. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>cache_name</td> <td>String</td> <td>A Mandatory parameter. Will hold the key for retrieving the cache object.</td> </tr> </tbody> </table> cache_service = app.cache() segment_service = cache_service.segment() data = segment_service.get('key') A sample response is shown below : { cache_name: "Name", cache_value: "Amelia Burrows", project_details: { project_name: "AlienCity", id: "2136000000007733" }, segment_details: { segment_name: "Location", id: "2136000000008572" }, expires_in: "Aug 18, 2021 06:39 PM", expiry_in_hours: "47", ttl_in_milliseconds: "172727000" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Insert Data to Cache" description: "This page describes the method to insert data into the cache in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.267Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/cache/insert-data-into-cache/" service: "Cloud Scale" related: - Insert Data to Cache - API (/en/api/code-reference/cloud-scale/cache/insert-key-value-in-segment/#InsertKey-ValueinCacheSegment) - Cache Help (/en/cloud-scale/help/cache/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Insert Data in Cache You can insert a cache element using the put() method. This enables you to insert a key-value pair in an existing cache segment in your Catalyst project. The key name and key value are of type String and are passed as arguments to the method. You can also optionally pass the expiry time parameter. The expiration time will be set to 48 hours by default if the value is not specified explicitly. To know more about the component instance cache_service and the segment instance segment_service used below, please refer to their respective help sections. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>cache_name</td> <td>String</td> <td>A Mandatory parameter. Will hold the key to be inserted in the cache.</td> </tr> <tr> <td>cache_value</td> <td>String</td> <td>A Mandatory parameter. Will hold the value to be inserted in the cache.</td> </tr> <tr> <td>expiry_in_hours</td> <td>Numeric</td> <td>A Optional parameter. Will hold the value of the expiry time of the data.</td> </tr> </tbody> </table> # Insert Data to Cache cache_service = app.cache() segment_service = cache_service.segment() segment_service.put('Name', 'Smith',2) A sample response is shown below : { cache_name: "Name", cache_value: "Smith", project_details: { project_name: "AlienCity", id: "2136000000007733" }, segment_details: { segment_name: "Location", id: "1234324234" }, expires_in: "Aug 18, 2021 06:46 PM", expiry_in_hours: "2", ttl_in_milliseconds: "172800000" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Update Data in Cache" description: "This page describes the method to update data in the cache in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.268Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/cache/update-data-in-cache/" service: "Cloud Scale" related: - Update Data in Cache - API (/en/api/code-reference/cloud-scale/cache/update-key-value/#UpdateKey-ValuePair) - Cache Help (/en/cloud-scale/help/cache/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Update Data in Cache You can update the key-value pair in a cache segment using the update() method. You must pass the key name and key-value which are of the String type as arguments. If the values aren't present, they will be inserted into the cache segment. You can also optionally pass the expiry time parameter. The expiration time will be set to 48 hours by default if the value is not specified explicitly. To know more about the component instance cache_service and the segment instancesegment_service used below, please refer to their respective help sections. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>cache_name</td> <td>String</td> <td>A Mandatory parameter. Will hold the key to be updated in the cache.</td> </tr> <tr> <td>cache_value</td> <td>String</td> <td>A Mandatory parameter. Will hold the value of the key that has to be updated in the cache.</td> </tr> </tbody> </table> #Update data in cache cache_service = app.cache() segment_service = cache_service.segment() segment_service.update('Name', 'Michael Scott') A sample response is shown below : { cache_name: "Name", cache_value: "Michael Scott", project_details: { project_name: "AlienCity", id: "2136000000007733" }, segment_details: { segment_name: "Data Store", id: "2136000000008572" }, expires_in: "Aug 18, 2021 06:46 PM", expiry_in_hours: "47", ttl_in_milliseconds: "172596000" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Delete Key Value Pair" description: "This page describes the method to delete a key-value pair using a key or cache object in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.268Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/cache/delete-key-value-pair/" service: "Cloud Scale" related: - Cache Help (/en/cloud-scale/help/cache/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Delete a Key-Value Pair If a key-value pair is no longer needed, it can be permanently deleted from the cache segment. The key-value pair cannot be restored once it is deleted. To know more about the component instancecomponent_service and the segment instance segment_service used below, please refer to their respective help sections. ### Delete using a Key You can delete a key-value pair by passing the key name directly as a parameter to the delete() method. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>A Mandatory parameter. Will hold the key name of the cache segment.</td> </tr> </tbody> </table> #Delete a key-value pair cache_service = app.cache() segment_service = cache_service.segment() segment_service.delete('Name') Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ### Connections -------------------------------------------------------------------------------- title: "Get Connections Instance" description: "This page describes the method to get an instance for the Connections component to allow you to use the Connections SDK methods." last_updated: "2026-09-29T06:07:16.268Z" 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/) - JavaScript SDK (/en/sdk/javascript/v1/overview/) -------------------------------------------------------------------------------- # Connections Connections allows you to integrate with Zoho and other third-party services while managing all the authentication token requirement. ### Get Connections Instance Note: This SDK can only be accessed within Catalyst services like Functions and AppSail. It cannot be used to integrate with third-party services. You can get the connections component reference as shown below. This will not fire a server-side call. We will refer to this component instance in various code snippets of working with Connections. # create connection instance connections = app.connections() -------------------------------------------------------------------------------- title: "Get Authentication Credentials" description: "This page describes the method to get an instance for the Connections component to allow you to use the Connections SDK methods." last_updated: "2026-09-29T06:07:16.268Z" 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/) - JavaScript SDK (/en/sdk/javascript/v1/overview/) -------------------------------------------------------------------------------- # Get Authentication Credentials Note: This SDK can only be accessed within Catalyst services like Functions and AppSail. It cannot be used to integrate with third-party services. This SDK method can be used obtain the authentication credentials for various Zoho services, listed as Default Services. The connections reference used in the below code snippet is the component instance. # create connection instance connections = app.connections() #retrieve the authentication credentials for the specified connection connection_response = connections.get_connection_credentials('payrollcon') #connection response print('connection response:', connection_response) ### Data Store -------------------------------------------------------------------------------- title: "Get Data Store Instance" description: "This page describes the method to delete rows in bulk from a table in the Data Store in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.269Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" service: "Cloud Scale" related: - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Data Store Catalyst Cloud Scale Data Store is a cloud-based relational database management system that stores the persistent data of your application. This section covers the various methods that you can use to perform data-intensive operations in the Data Store such as fetching the metadata of the tables and columns, fetching row details, inserting new rows, updating rows, or deleting them. ### Get a component instance A component instance is an object that can be used to access the pre-defined configurations specific to a particular component. This process will not fire a server-side call. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new datastore_serviceinstance as shown below. Also note that this instance will be used in multiple scenarios while performing database specific operations. #Get Data Store component instance datastore_service = app.datastore() -------------------------------------------------------------------------------- title: "Get Table Meta" description: "This page describes the method to fetch the meta data of a single table or multiple tables in your Python application with sample code snippets" last_updated: "2026-09-29T06:07:16.269Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/get-table-meta/" service: "Cloud Scale" related: - Get Table Meta - API (/en/api/code-reference/cloud-scale/data-store/get-table-metadata/#GetTableMetadata) - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Get Table Metadata The metadata of a single table in the Catalyst Data Store can be obtained in two ways. The data store reference used in the code snippets below is the component instance created earlier. ### Get a Table's Metadata by Table ID A table's meta data is fetched by referring the respective tableID in the method get_table_details() as given below. You can obtain the table ID from the Data Store or from the URL when the table is opened in the console. To know more about the component instance datastore_service used below, please refer to this help section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>tableID</td> <td>String</td> <td>A Mandatory parameter. Will hold the ID of the table whose meta data has to be retrieved.</td> </tr> </tbody> </table> #Get table metadata using TableID datastore_service = app.datastore() table_data = datastore_service.get_table_details(5249000000011745) A sample response is shown below : { "project_id":{ "project_name":"AlienCity", "id":"2136000000007733" }, "table_name":"COUNTRY", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"amelia@burrows.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "modified_time":"Aug 13, 2021 01:47 PM", "column_details":[ { "table_id":"5249000000011745", "column_sequence":"1", "column_name":"ROWID", "category":1, "data_type":"bigint", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":false, "column_id":"2136000000007784" }, { "table_id":"5249000000011745", "column_sequence":"2", "column_name":"CREATORID", "category":1, "data_type":"bigint", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007785" }, { "table_id":"5249000000011745", "column_sequence":"3", "column_name":"CREATEDTIME", "category":1, "data_type":"datetime", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007786" }, { "table_id":"5249000000011745", "column_sequence":"4", "column_name":"MODIFIEDTIME", "category":1, "data_type":"datetime", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007787" }, { "table_id":"5249000000011745", "column_sequence":"5", "column_name":"CITYNAME", "category":2, "data_type":"varchar", "max_length":"100", "is_mandatory":false, "decimal_digits":"2", "is_unique":true, "search_index_enabled":true, "column_id":"2136000000008588" } ], "table_id":"5249000000011745" } ### Get a Table's Metadata by Table Name You can use the below-mentioned code snippet to fetch a table's metadata by referring the table_name. Note : If you rename the table, you must update the changes in the code in all applicable sections. To know more about the component instance datastore_service used below, please refer to this help section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>table_name</td> <td>String</td> <td>A Mandatory parameter. Will hold the name of the table whose meta data has to be retrieved.</td> </tr> </tbody> </table> datastore_service = app.datastore() table_data = datastore_service.get_table_details("Aliens") A sample response is shown below : { "project_id":{ "project_name":"AlienCity", "id":"2136000000007733" }, "table_name":"Aliens", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"amelia.burrows@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "modified_time":"Aug 13, 2021 01:47 PM", "column_details":[ { "table_id":"5249000000011745", "column_sequence":"1", "column_name":"ROWID", "category":1, "data_type":"bigint", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":false, "column_id":"2136000000007784" }, { "table_id":"5249000000011745", "column_sequence":"2", "column_name":"CREATORID", "category":1, "data_type":"bigint", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007785" }, { "table_id":"5249000000011745", "column_sequence":"3", "column_name":"CREATEDTIME", "category":1, "data_type":"datetime", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007786" }, { "table_id":"5249000000011745", "column_sequence":"4", "column_name":"MODIFIEDTIME", "category":1, "data_type":"datetime", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007787" }, { "table_id":"5249000000011745", "column_sequence":"5", "column_name":"AlienType", "category":2, "data_type":"varchar", "max_length":"100", "is_mandatory":false, "decimal_digits":"2", "is_unique":true, "search_index_enabled":true, "column_id":"2136000000008588" } ], "table_id":"5249000000011745" } ### Get Metadata of All Tables In addition to getting the meta data of a single table, you can fetch the details of all the tables in a Catalyst project using getAllTables() method. To know more about the component instance datastore_service used below, please refer to this help section. datastore_service = app.datastore() tables = datastore_service.get_all_tables() A sample response is shown below: [ { "project_id":{ "project_name":"AlienCity", "id":"2136000000007733" }, "table_name":"Attackers", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"amelia.burrows@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "modified_time":"Aug 13, 2021 01:47 PM", "table_id":"2136000000007781" }, "table_name":"Aliens", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "modified_time":"Aug 13, 2021 01:47 PM", "table_id":"5249000000011745" } ] Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Get Table Instance" description: "This page describes the method to fetch the table instance using tableID and name from a table in the Data Store in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.269Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" service: "Cloud Scale" related: - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Get a Table Instance A table reference can be created by referring to the predefined data store reference by passing either the tableID or table name as the parameter. The datastore_service reference used in the below code snippet is the component instance created earlier. ### Get the Table Instance using TableID The table_service reference can be created by passing the tableID as a parameter to the table() method. To know more about the component instance datastore_service used below, please refer to this help section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>tableID</td> <td>String</td> <td>A Mandatory parameter. Will hold the ID of the table.</td> </tr> </tbody> </table> #Get table instance using table ID datastore_service = app.datastore() table_service = datastore_service.table(5249000000011745) ### Get the Table Instance using Table Name Alternatively, a table reference can be created by referring the tablename in the table() method. There is no explicit response involved in these methods and only the instance of the table is returned. To know more about the component instance datastore_service used below, please refer to this help section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>table_name</td> <td>String</td> <td>A Mandatory parameter. Will hold the name of the table.</td> </tr> </tbody> </table> #Get table instance using table name datastore_service = app.datastore() table_service = datastore_service.table("CITY") -------------------------------------------------------------------------------- title: "Get Column Meta" description: "This page describes the method to retrieve metadata of a single column or multiple columns from a table in the Data Store in your Python application with sample code snippets" last_updated: "2026-09-29T06:07:16.270Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/get-column-meta/" service: "Cloud Scale" related: - Get Column Meta - API (/en/api/code-reference/cloud-scale/data-store/get-column-metadata/#GetColumnMetadata) - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Get Column Metadata Column metadata details of a single column of a table in the Catalyst Data Store can be retrieved either by using the columnID or the column name. ### Get a Column's Metadata by ID You can fetch a column's meta data of a particular table using get_column_details() method. To know more about the component instancedatastore_service and the table instancetable_service used below, please refer to their respective help sections. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>columnID</td> <td>String</td> <td>A Mandatory parameter. Will hold the ID of the column for which metadata has to be retrieved.</td> </tr> </tbody> </table> #Get column's metadata using columnID datastore_service = app.datastore() table_service = datastore_service.table("CITY") column_data = table_service.get_column_details(5249000000032372) A sample response is shown below : { table_id: "5249000000011745", column_sequence: "5", column_name: "CITYNAME", category: 2, data_type: "varchar", max_length: "100", is_mandatory: false, decimal_digits: "2", is_unique: true, search_index_enabled: false, column_id: "5249000000032372" } ### Get a Column's Metadata by Name An alternative way to get the meta data of a column is, referring to the column_name. This returns the same response as that of the previous one. The column meta will not involve any further operations. Therefore, the response is returned here directly. To know more about the component instancedatastore_service and the table instancetable_service used below, please refer to their respective help sections. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>column_name</td> <td>String</td> <td>A Mandatory parameter. Will hold the name of the column for which metadata has to be retrieved.</td> </tr> </tbody> </table> #Get column's metadata using column name datastore_service = app.datastore() table_service = datastore_service.table("CITY") column_data = table_service.get_column_details("CITYNAME") A sample response is shown below : { table_id: "5249000000011745", column_sequence: "5", column_name: "CITYNAME", category: 2, data_type: "varchar", max_length: "100", is_mandatory: false, decimal_digits: "2", is_unique: true, search_index_enabled: false, column_id: "2305000000007725" } ### Get Metadata of All Columns In addition to getting the meta data of a single column, you can retrieve the meta data of all the columns in a particular table using get_all_columns() method. To know more about the component instancedatastore_service and the table instancetable_service used below, please refer to their respective help sections. #Get metadata of all columns datastore_service = app.datastore() table_service = datastore_service.table("CITY") columns = table_service.get_all_columns() A sample response is shown below : [ { table_id: "5249000000011745", column_sequence: "1", column_name: "ROWID", category: 1, data_type: "bigint", max_length: "50", is_mandatory: false, decimal_digits: "2", is_unique: false, search_index_enabled: false, column_id: "2136000000007784" }, { table_id: "5249000000011745", column_sequence: "2", column_name: "CREATORID", category: 1, data_type: "bigint", max_length: "50", is_mandatory: false, decimal_digits: "2", is_unique: false, search_index_enabled: true, column_id: "2136000000007785" }, { table_id: "5249000000011745", column_sequence: "3", column_name: "CREATEDTIME", category: 1, data_type: "datetime", max_length: "50", is_mandatory: false, decimal_digits: "2", is_unique: false, search_index_enabled: true, column_id: "2136000000007786" }, { table_id: "5249000000011745", column_sequence: "4", column_name: "MODIFIEDTIME", category: 1, data_type: "datetime", max_length: "50", is_mandatory: false, decimal_digits: "2", is_unique: false, search_index_enabled: true, column_id: "2136000000007787" }, { table_id: "5249000000011745", column_sequence: "5", column_name: "CITYNAME", category: 2, data_type: "varchar", max_length: "100", is_mandatory: false, decimal_digits: "2", is_unique: true, search_index_enabled: true, column_id: "2136000000008588" } ] Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Get Rows" description: "This page describes the method to fetch a single row or all the rows from a table in the Data Store in your Python application with sample code snippets" last_updated: "2026-09-29T06:07:16.270Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/get-rows/" service: "Cloud Scale" related: - Get Rows - API (/en/api/code-reference/cloud-scale/data-store/get-all-rows/#GetAllRows) - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Get Rows You can retrieve a single row or multiple rows of data from a table in the Catalyst Data Store. The table_service reference used in these code snippets can either be a table instance or table meta. ### Get A Single Row You can fetch a single row from the table using the get_row() method. You must pass the unique RowID of the row to this method as shown in the code snippet below. To know more about the component instancedatastore_service and the table instancetable_service used below, please refer to their respective help sections. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>rowID</td> <td>String</td> <td>A Mandatory parameter. Will store the ID of the row whose details has to be retrieved.</td> </tr> </tbody> </table> # Get A Single Row datastore_service = app.datastore() table_service = datastore_service.table("CITY") row_data = table_service.get_row(5249000000032385) A sample response is shown below : { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-17 13:02:11:184", CREATEDTIME: "2021-08-16 16:29:10:499", CITYNAME: "Pune", ROWID: "5249000000032385" } ### Get All Rows Through Pagination You can retrieve all the rows of data from a table in the Data Store by incorporating pagination in your code using the get_paged_rows() function. Pagination allows you to fetch the rows of a table in batches or pages through iterations. This iteration is executed until all the rows are fetched, which is validated by a simple if condition, as shown in the code below. You can refer to the table by its unique tablename. For example, if you require the rows to be fetched in batches of 100 as individual pages, you can define a variable for the maximum rows to be fetched in each page and specify the count. The sample code below assigns max_rows as 100. Note: The maxRows parameter is optional. The SDK call will return 200 rows in a single page by default if this value is not specified. Additionally, you will receive a token string in the response data that authorizes the subsequent fetching of data. You can fetch this token through next_token, and pass it as the value for next_token during the subsequent iteration, as shown in the code below. During the first execution of the loop, the value for the next_token string is assigned as None. The next set of records are fetched through more_records in the response data. Note: Pagination has been made available from the Node.js SDK v2.1.0 update. This will not be available in the older versions of the Node.js SDK. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>next_token</td> <td>String</td> <td>A Mandatory parameter. Will store the token from the response data, authorizing subsequent data retrieval.</td> </tr> <tr> <td>max_rows</td> <td>Numeric</td> <td>A Optional parameter. Will hold the the number of batches in which the rows has to be fetched.</td> </tr> </tbody> </table> datastore_service = app.datastore() table_service = datastore_service.table("Aliens") def getMyPagedRows(next_token=None, more_records=True): rows = table_service.get_paged_rows(next_token, max_rows=100) more_records = rows['more_records'] if not more_records: return None next_token = rows['next_token'] return getMyPagedRows(next_token, more_records) getMyPagedRows() When the more_records parameter is set to true, the sample response is shown below: { "status": 200, "content": [ { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:24:855", "CITYNAME": "New York", "CREATEDTIME": "2022-01-11 18:18:24:855", "ROWID": "5249000000032385" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:25:117", "CITYNAME": "Houston", "CREATEDTIME": "2022-01-11 18:18:25:117", "ROWID": "5249000000032386" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:25:120", "CITYNAME": "Chicago", "CREATEDTIME": "2022-01-11 18:18:25:120", "ROWID": "5249000000032387" } ], "message": "OK", "more_records": true, "next_token": "{{token}}" } When the more_records parameter is set to false, the sample response is shown below: { "status": 200, "content": [ { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:556", "name": "San Diego", "CREATEDTIME": "2022-01-11 18:18:43:556", "ROWID": "5249000000032385" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:557", "name": "Phoenix", "CREATEDTIME": "2022-01-11 18:18:43:557", "ROWID": "5249000000032386" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:568", "name": "Seattle", "CREATEDTIME": "2022-01-11 18:18:43:568", "ROWID": "5249000000032387" } ], "message": "OK", "more_records": false } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Insert Rows" description: "This page describes the method to insert a single row or rows in bulk from a table in the Data Store in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.271Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/insert-rows/" service: "Cloud Scale" related: - Insert Rows - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Insert Rows You can insert a new row in a table in the Catalyst Data Store by referring to the table's unique ID or name. You can also insert multiple rows in a table as explained in the next section. The table_service reference used in the code below can either be a table instance or table meta created earlier. Note: * The table and the columns in it must already be created. You can create a table and the columns for it from the console. * You will be able to insert upto 5000 records in each table per project in the development environment. You can create upto 25,000 records overall in each project in the development environment. There are no upper limits for record creation in the production environment. ### Insert a Single Row You must create a dictionary containing the row details in a {column name : column value} format, and pass it as an argument to the insert_row() method, as shown below. This inserts the rows in the table that you refer by its unique tablename or tableID. A unique ID value for the row is automatically generated once the row is inserted. To know more about the component instancedatastore_service and the table instancetable_service used below, please refer to their respective help sections. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>row_data</td> <td>Array</td> <td>A Mandatory parameter. Will hold the details of the row to be inserted in key-value pairs.</td> </tr> </tbody> </table> #Insert a single row in the table datastore_service = app.datastore() table_service = datastore_service.table("Employee") row_data = {'name': 'George Hamilton', 'id': '6868', 'age': '22'} row_response = table_service.insert_row(row_data) A sample response is shown below : { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-16 16:30:12:799", Name: "George Hamilton", Age: 22, ID: 6868, CREATEDTIME: "2021-08-16 16:30:12:799", ROWID: "2136000000011015" } ### Insert Multiple Rows You can insert multiple rows in a table by constructing an array that contains the rows, and passing it as an argument to the insert_rows() method as shown below. To know more about the component instancedatastore_service and the table instancetable_service used below, please refer to their respective help sections. This returns a response containing an array of row objects. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w60p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>row_data</td> <td>Array</td> <td>A Mandatory parameter. Will hold the details of the rows to be inserted in key-value pairs.</td> </tr> </tbody> </table> datastore_service = app.datastore() table_service = datastore_service.table("Employee") row_data = [{'name': 'Mark Wellington', 'id': '7218', 'age': '29'}, {'name': 'Zendaya Jones', 'id': '3211', 'age': '32'}] row_response = table_service.insert_rows(row_data) A sample response is shown below : [ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-25 13:55:04:904", Name: "Mark Wellington", Age: 29, ID: 7218, CREATEDTIME: "2021-08-25 13:55:04:904", ROWID: 2136000000011015 }, { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-25 13:55:04:906", Name: "Zendaya Jones", Age: 32, ID: 3211, CREATEDTIME: "2021-08-25 13:55:04:906", ROWID: 2136000000011016 } ] Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Update Rows" description: "This page describes the method to update a single row or rows in bulk in a table in the Data Store in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.272Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/update-rows/" service: "Cloud Scale" related: - Update Rows - API (/en/api/code-reference/cloud-scale/data-store/update-row/#UpdateRow) - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Update Rows You can update a single row or multiple rows in a table in the Catalyst Data Store. The table_service reference used in the below code snippets can either be a table instance or table meta created earlier. ### Update a Single Row This particular method allows you to update a single row by constructing an object with modified values in the required columns. Refer the unique ROWID and pass the newly constructed object that contains the updated row details to the update_row() method. Please note that it is mandatory to specify the ROWID value here. To know more about the component instancedatastore_service and the table instancetable_service used below, please refer to their respective help sections. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>row_data</td> <td>Array</td> <td>A Mandatory parameter. Will hold the details of the row to be updated in key-value pairs.</td> </tr> </tbody> </table> #Update a single row datastore_service = app.datastore() table_service = datastore_service.table("table_name") row_data = {'name': 'Mathew Jones', 'id': '7211', 'age': '31', 'ROWID': 2136000000011011} row_response = table_service.update_row(row_data) logging.info(row_response) A sample response is shown below : { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-17 13:02:11:184", CREATEDTIME: "2021-08-16 16:29:10:499", Name: "Mathew Jones", ID : "7211", Age: 31, ROWID: "2136000000011011" } ### Update Multiple Rows To update multiple rows, an array of objects is constructed containing the modified row values, which is passed as an argument to the update_rows() method. The ROWIDs are used in corresponding array objects to refer the specific rows which requires modification. To know more about the component instancedatastore_service and the table instancetable_service used below, please refer to their respective help sections. The response returned here will be resolved to an array of row objects. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>row_data</td> <td>Array</td> <td>A Mandatory parameter. Will hold the details of the rows to be updated in key-value pairs.</td> </tr> </tbody> </table> #Update multiple rows datastore_service = app.datastore() table_service = datastore_service.table("Employee") row_data = [{'name': 'Mathew Jones', 'id': '7211', 'age': '31', 'ROWID': 2136000000034043}, {'name': 'Rhonda Watson', 'id': '7212', 'age': '28', 'ROWID': 2136000000034045}] row_response = table_service.update_rows(row_data) A sample response is shown below : [ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-24 13:22:14:718", CREATEDTIME: "2021-08-24 13:12:55:999", Name: "Mathew Jones", ID : "7211", Age: 31, ROWID: "2136000000034043" }, { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-24 13:22:14:728", CREATEDTIME: "2021-08-24 13:12:56:001", Name: "Rhonda Watson", ID : "7212", Age: 28, ROWID: "2136000000034045" } ] Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Delete Row" description: "This page describes the method to delete a single row from a table in the Data Store in your Python application with sample code snippets" last_updated: "2026-09-29T06:07:16.272Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/delete-row/" service: "Cloud Scale" related: - Delete Row - API (/en/api/code-reference/cloud-scale/data-store/delete-row/#DeleteRow) - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Delete a row A row can be deleted from a table simply by passing the ROWID as a parameter to the delete_row() method. This method will return true as response on deletion of the row. To know more about the component instancedatastore_service and the table instancetable_service used below, please refer to their respective help sections. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>ROWID</td> <td>String</td> <td>A Mandatory parameter. Will hold the ID of the row to be deleted.</td> </tr> </tbody> </table> #Delete a row datastore_service = app.datastore() table_service = datastore_service.table("CITY") row_response = table_service.delete_row(5249000000032461) Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Bulk Read Rows" description: "This page describes the method to read rows in bulk from a table in the Data Store in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.272Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/bulk-read-rows/" service: "Cloud Scale" related: - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Bulk Read Rows Catalyst allows you to perform bulk read jobs on a specific table present in the Data Store. In the SDK snippet below, the Bulk Read job can read thousands of records from a specific table and generate a CSV file containing the results of the read operation, if the job is successful.The table is referred to by its unique Table ID. To know more about the component instance datastore_service used below, please refer to this help section. <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>criteria</td> <td>Array</td> <td>A Mandatory parameter. Will hold the conditions based on which the rows has to be read.</td> </tr> <tr> <td>page</td> <td>Numeric</td> <td>A Mandatory parameter. Will hold the number of page rows that has to be read.</td> </tr> <tr> <td>select_columns</td> <td>Array</td> <td>A Mandatory parameter. Will hold specific columns that has to be read.</td> </tr> </tbody> </table> Copy the SDK snippet below to perform a bulk read job on a particular table. #Bulk read datastore_service = app.datastore() bulk_read = datastore_service.table("sampleTable").bulk_read() #Create bulk read job bulk_read_Job = bulk_read.create_job({ "criteria": { "group_operator": 'or', "group": [ { "column_name": 'Department', "comparator": 'equal', "value": 'Marketing' }, { "column_name": 'EmpId', "comparator": 'greater_than', "value": '1000' }, { "column_name": 'EmpName', "comparator": 'starts_with', "value": 'S' } ] }, "page": 1, "select_columns": ['EmpId', 'EmpName', 'Department'] }) #Get bulk read status status = bulk_read.get_status(bulk_read_Job['job_id']) #Get bulk read result result = bulk_read.get_result(bulk_read_Job['job_id']) <br /> Note: A maximum of 200,000 rows can be read simultaneously. Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Bulk Write Rows" description: "This page describes the method to write rows in bulk from a table in the Data Store in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.273Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/bulk-write-rows/" service: "Cloud Scale" related: - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Bulk Write Rows Catalyst enables you to perform bulk write jobs on a specific table present in the Data Store. The bulk write operation can fetch thousands of records from a CSV file uploaded in Stratus and insert them in a specific table. The table is referred to by its unique table ID that is generated by Catalyst during creation. The column in which the write operation must be performed is referred to by its unique column ID. Note: To perform a bulk write operation, you must first upload the required data as a CSV file in Stratus. <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>tableID</td> <td>String</td> <td>A Mandatory parameter. Will hold the ID of the table to which data has to be written.</td> </tr> <tr> <td>find_by</td> <td>String</td> <td>A Mandatory parameter. Will hold the name of the column to which data has to be written.</td> </tr> <tr> <td>fk_mapping</td> <td>Array</td> <td>A Mandatory parameter. Will hold the local_column and reference_column details.</td> </tr> <tr> <td>operation</td> <td>String</td> <td>A Mandatory parameter. The value of this parameter should be insert.</td> </tr> <tr> <td>object_details</td> <td>JSON Object</td> <td> <ul> <li>bucket_name: The name of the bucket, where the object is stored.</li> <li>object_key: Can contain the path or the Object URL of the required object.</li> <li>version_id: If the bucket has versioning enabled, then the specific versionID of the file will be stored in this attribute.</li> </ul> </td> </tr> </tbody> </table> Copy the SDK snippet below to perform a bulk write job on a particular table. To know more about the component instance datastore_service used below, please refer to this help section. datastore_service = app.datastore() bulk_write = datastore_service.table("Sample").bulk_write() object_details = { "bucket_name": "zcstratus12345", "object_key": "sample.csv", "version_id": "64832huidksnd83" } #create bulk write job bulk_write_job = bulk_write.create_job(object_details, { "find_by": "S1", "fk_mapping": [ {"local_column": "EmployeeID", "reference_column": "EmpId"}, {"local_column": "DepartmentID", "reference_column": "DepId"} ], "operation": "insert" }) #get bulk write status status = bulk_write.get_status('6759000000167103') #get bulk write result result = bulk_write.get_result('6759000000167103') <br /> Note: A maximum of 100,000 rows can be written at one time. Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Bulk Delete Rows" description: "This page describes the method to delete rows in bulk from a table in the Data Store in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.273Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/bulk-delete-rows/" service: "Cloud Scale" related: - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Bulk Delete Rows Catalyst enables you to delete rows in bulk from a specific table in the Catalyst Data Store. The table is referred by its unique tableID or tablename. You can obtain the table ID from the Data Store or from the URL when the table is opened in the console. The bulk delete operation can delete a maximum of 200 rows in a single operation. You can pass the unique ROWIDs of the rows to be deleted in an array as shown in the sample code below. You must include at least one ROWID, and can include up to a maximum of 200 ROWIDs in the code snippet given below. The rows are passed to the delete_rows() function through datastore_service instance in the sample code. The tablename or tableID must be passed as a parameter to the table() method. The response returns a boolean value ( true or false ) based on the status of deletion. To know more about the component instancedatastore_service and the table instancetable_service used below, please refer to their respective help sections. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>ROWID</td> <td>String</td> <td>A Mandatory parameter. Will hold the rowIDs to be deleted.</td> </tr> </tbody> </table> #Bulk delete rows datastore_service = app.datastore() table_service = datastore_service.table("sampleTable") row_response = table_service.delete_rows([6759000000159113, 6759000000159115, 5249000000032411]) Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ### 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-09-29T06:07:16.274Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/mail/get-component-instance/" service: "Cloud Scale" related: - Mail Help (/en/cloud-scale/help/mail/introduction) -------------------------------------------------------------------------------- # Catalyst Mail Catalyst Mail enables you to add the email addresses of your business that will be used to send emails to the end-users from your Catalyst application. You can configure email addresses of public domains or of your organization's own domains. You can also use an external email client of your choice and configure its SMTP settings with Catalyst, instead of using the built-in Catalyst email client. This section covers the various SDK methods that can be used to implement the Catalyst Mail functionality in your application. ### Get a Component Instance A component instance is an object that can be used to access the pre-defined configurations specific to a particular component. This process will not fire a server-side call. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new mail_serviceinstance as shown below. Also note that this component instance will be used in multiple scenarios while implementing the Catalyst Mail service in your application. #Get a mail component instance mail_service = app.email() -------------------------------------------------------------------------------- title: "Send Email" description: "This page describes the method to send out emails to end-users from your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.274Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/mail/send-email/" service: "Cloud Scale" related: - Send Email - API (/en/api/code-reference/cloud-scale/mail/send-email/#SendEmail) - Mail Help (/en/cloud-scale/help/mail/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Send Mail You must configure the domains, email addresses, and the SMTP settings for an email client of your choice from the console. The code shown here enables you to send emails to the email addresses you specify from your Catalyst application. Catalyst enables you to set multiple email addresses as the receivers, and to CC, BCC, and reply to through a single send mail operation. You can also attach files in your email. The maximum supported limits for email recipients and file attachments in a single send mail operation are specified below: * To address: 10 * CC: 10 * BCC: 5 * Reply to: 5 * Number of file attachments: 5 * Size of file attachments: 15 MB (through a single file or multiple files upto 5 files) Note: The subject, sender, and atleast one recipient email addresses are mandatory. Other attributes of the email are optional. #### Create a Dictionary You must initially create a dictionary containing the required attributes of the email. This includes the sender's email address and all the recipients of the email. You should first configure and verify the sender's email address in the Catalyst console. If the sender's email is hosted on a private domain or if you choose to use a third-party email client, you must configure them before sending emails as well. #Create a dictionary mail_obj = { 'from_email': 'emma@zylker.com', 'to_email': ["vanessa.hyde@zoho.com"], 'cc': ["robert.plant@zylker.com"], 'bcc': ["ham.gunn@zylker.com", "rover.jenkins@zylker.com"], 'reply_to': ["peter.d@zoho.com", "arnold.h@zoho.com"], 'subject': 'Greetings from Zylker Corp!', 'attachments': [file1], 'content': "<p>Hello,</p> We're glad to welcome you at Zylker Corp. To begin your journey with us, please download the attached KYC form and fill in your details. You can send us the completed form to this same email address.</p>We cannot wait to get started!<p><p>Cheers!</p><p>Team Zylker</p>" } ### Send Email You must now pass the configured dictionary to the send_mail() method as an argument as shown in the code below. This will initiate the email sending process. To know more about the component instance mail_service used below, please refer to this help section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>mail_obj</td> <td>Object</td> <td>A Mandatory parameter. Will store details of the sender's email address, recipient's email address, CC, BCC, reply-to address, subject, attachments, and email content.</td> </tr> </tbody> </table> #Send Email mail_service = app.email() response = mail_service.send_mail(mail_obj) A sample response is given below : { isAsync: false, project_details: { project_name: "Onboarding", id: "2136000000007733" }, from_email: ["emma@zylker.com"], to_email: ["vanessa.hyde@zoho.com"], cc:["robert.plant@zylker.com"], bcc:["ham.gunn@zylker.com","rover.jenkins@zylker.com"], reply_to:["peter.d@zoho.com","arnold.h@zoho.com"], html_mode: true, subject: "Greetings from Zylker Corp!", content: "<p>Hello,</p> We're glad to welcome you at Zylker Corp. To begin your journey with us, please download the attached KYC form and fill in your details. You can send us the completed form to this same email address.</p>We cannot wait to get started!<p><p>Cheers!</p><p>Team Zylker</p>" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ### NoSQL -------------------------------------------------------------------------------- title: "Get Component Instance" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to create a new NoSQL component instance." last_updated: "2026-09-29T06:07:16.275Z" 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/) - JavaScript SDK (/en/sdk/javascript/v1/zia-services/overview/) -------------------------------------------------------------------------------- # Get Component Instance Catalyst NoSQL is a fully managed non-relational, NoSQL data storage feature that enables you to store the semi-structured, unstructured, and disparate data of your applications. Catalyst supports document-type data storage in the key-value pair based JSON format. The Catalyst NoSQL Python SDK package enables you to perform CRUD data operations on your NoSQL tables in your project. You can fetch the metadata of your NoSQL tables, create NoSQL items of various supported data types, and insert, update, fetch, or delete items in a specific table. You can also query tables or indexes of tables by specifying query conditions. ### Create a NoSQL Instance A component instance is an object that can be used to access the pre-defined configurations specific to a particular component. You can create a NoSQL object to perform SDK operations in Python as shown below. This will not fire a server-side call. We will refer to this nosql instance in various code snippets of working with NoSQL. The app reference used to create the NoSQL instance is the Python object returned as the response during the SDK initialization. #Create a NoSQL instance nosql = app.nosql() -------------------------------------------------------------------------------- title: "Get Table Metadata" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to fetch NoSQL table metadata. " last_updated: "2026-09-29T06:07:16.275Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/nosql/get-table-metadata/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - Create and Manage Tables (/en/cloud-scale/help/nosql/create-manage-tables/) -------------------------------------------------------------------------------- # Get NoSQL Table Metadata You can get the metadata of a single Catalyst NoSQL table or of all tables in your project as described below. ### Get Metadata of Single Table The metadata of a single table in Catalyst NoSQL can be obtained by referring the table name using the method getTable() as given below. The response will contain details of the table configuration, such as the partition key and sort key, TTL attribute, and more. The nosql reference used in the code snippets below is the component instance created to perform these operations. # Create a NoSQL instance nosql = app.nosql() #Get table metadata using the table name table_details = nosql.get_table_resources("EmpTable") print(table_details) Note: If you rename the table, you will need to update the changes in your code. <br> ### Get Metadata of All Tables Catalyst enables you to fetch the metadata of all the tables in your project using the get_all_tables() method as shown below. table_res = nosql.get_all_tables() print(table_res) -------------------------------------------------------------------------------- title: "Get Table Instance" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to create a NoSQL table instance." last_updated: "2026-09-29T06:07:16.275Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/nosql/get-table-instance/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - Create and Manage Tables (/en/cloud-scale/help/nosql/create-manage-tables/) -------------------------------------------------------------------------------- # Get NoSQL Table Instance Catalyst NoSQL enables you to fetch an empty table instance of a NoSQL table. You can then use this instance to refer to that table and perform all supported table operations. This process will not fire a server-side call. You can get an instance of your NoSQL table by referring to the table's name as shown in this section. The nosql reference used in the code snippets below is the component instance created earlier. table = nosql.get_table('employees') # Create a table instance with the table name -------------------------------------------------------------------------------- title: "Construct Item" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the methods to construct a NoSQL items of various data types."" last_updated: "2026-09-29T06:07:16.276Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/nosql/construct-item/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - Basic Components (/en/cloud-scale/help/nosql/components/#basic-components) - Supported Data Types in NoSQL (/en/cloud-scale/help/nosql/working-with-data/introduction/) -------------------------------------------------------------------------------- # Construct NoSQL Item Catalyst NoSQL items represent a collection of attributes that hold the data of a single data point, like records. You can insert or update items into an existing NoSQL table in your project in a Custom JSON format. However, before you insert or update an item in Catalyst, you will need to construct the item. You can construct a NoSQL item of attributes containing different data types supported by Catalyst as described in the section below. Catalyst supports several data types such as String, Number, Set of Strings, Set of Numbers, List, and Map. Refer to the full list of supported data types to learn more. You must mandatorily provide the values for the partition key attribute that you configured for a table in every data item. Refer to the Table Keys help section to learn about the table keys, TTL attribute, and other details. The code snippet below shows the formats for constructing an item with attributes of different data types: # Construct a NoSQL item of different data types attributes = { # string "custom_attrib_string": { "S": "John Doe" }, # Number "custom_attrib_num": { "N": "234521" }, # Binary encoded value "custom_attrib_bin": { "B": "SGVsbG9Xb3JsZA==" }, # Set of string "custom_attrib_set_string": { "SS": ["John Doe", "New York", "USA"] }, # set of numbers "custom_attrib_set_num": { "SN": ["23423", "821n", "11"] }, # set of binary values "custom_attrib_set_bin": { "SB": ["SGVsbG8=", "V29ybGQ="] }, # boolean attribute "custom_attrib_bool": { "BOOL": True }, # list attribute "custom_attrib_list": { "L": [{"name": "banana"}, {"quantity": 4}] }, # map attribute "custom_attrib_map": { "M": { "name": { "S": "John Doe" }, "age": { "N": "23" } } } } -------------------------------------------------------------------------------- title: "Insert Items" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK methods to insert items in a NoSQL table in various ways." last_updated: "2026-09-29T06:07:16.276Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/nosql/insert-items/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - Working with Data (/en/cloud-scale/help/nosql/working-with-data/introduction/) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # Insert Items in NoSQL Tables Catalyst enables you to insert items in a specific NoSQL table after you construct them. The items can be inserted in different ways as described in this section. You can refer to the help sections on adding and working with data, the Catalyst custom JSON format, and the supported data types to learn these topics in detail. Note: Catalyst enables you to insert a maximum of 25 items in bulk in a NoSQL table with a single SDK operation. <br> ### Insert Items without Conditions You can insert new items into a NoSQL table without any conditions by constructing the items in the Catalyst custom JSON format. This will require you to mandatorily pass the values for the partition key and sort key attributes configured for the table. For example, in the code snippet below, the values for the partition key and sort key attributes of the item, fruitName and Location respectively, are provided. Other attributes of the string data type such as fruitType and availability are provided as a list fruitProperties. The item is then inserted using the insert_items() method. # Insert a NoSQL item without conditions item = { "fruitName": { "S": "Banana" }, "Location": { "S": "Indonesia" }, "fruitProperties": { "L": [ { "fruitType": "Berries" }, { "availability": "abundant" } } ] } } # Insert the item based on the defined condition and set the item to be returned in the response. Other supported values are "OLD" and "NULL" res = table.insert_items({ 'item': item, 'return': 'NEW' }) <br> ### Insert Items with Conditional Functions You can insert attributes in existing items in a NoSQL table using specific conditions that you define in the Catalyst custom JSON format. In this type, the existing data of the table is retrieved and evaluated against the specified condition. The items are inserted only if the evaluation is true. If there is no existing data, the conditions are ignored and the items are inserted. Catalyst supports multiple operators to evaluate conditions. The supported operators are represented as shown below. <table class="content-table nosql-components-table"> <thead> <tr> <th class="w10p">Operators</th> <th class="w10p">Notation</th> </tr> </thead> <tbody> <tr> <td>CONTAINS</td> <td>contains</td> </tr> <tr> <td>NOT_CONTAINS</td> <td>not_contains</td> </tr> <tr> <td>BEGINS_WITH</td> <td>begins_with</td> </tr> <tr> <td>ENDS_WITH</td> <td>ends_with</td> </tr> <tr> <td>IN</td> <td>in</td> </tr> <tr> <td>NOT_IN</td> <td>not_in</td> </tr> <tr> <td>BETWEEN</td> <td>between</td> </tr> <tr> <td>NOT_BETWEEN</td> <td>not_between</td> </tr> <tr> <td>EQUALS</td> <td>equals</td> </tr> <tr> <td>NOT_EQUALS</td> <td>not_equals</td> </tr> <tr> <td>GREATER_THAN</td> <td>greater_than</td> </tr> <tr> <td>LESS_THAN</td> <td>less_than</td> </tr> <tr> <td>GREATER_THAN_OR_EQUALS</td> <td>greater_equal</td> </tr> <tr> <td>LESSER_THAN_OR_EQUALS</td> <td>less_equal</td> </tr> <tr> <td>AND</td> <td>AND</td> </tr> <tr> <td>OR</td> <td>OR</td> </tr> </tbody> </table> <br> The example below illustrates this by defining a condition for the nested attribute fruitColour in the existing data to contain the value "Yellow". This attribute is part of the attribute fruitProperties. If the condition is satisfied, the attributes fruitType and availability are added to the items. The item is then inserted using the insert_items() method. # Insert a NoSQL item with a conditional function condition_function = { "function": { "function_name": "attribute_type", "args": [ { "attribute_path": ["fruitProperties", "[0]"] }, { "fruitColour": "Yellow" } ] } } item = { "Location": { "S": "Indonesia" }, "fruitName": { "S": "Banana" }, "fruitProperties": { "L": [ { "fruitType": "Berries" }, { "availability": "abundant" } } ] } } # Insert the item based on the defined condition and set the return value in the response. Other supported values are "OLD" and "NULL" res = table.insert_items({ 'item': item, 'condition': condition_function, 'return': 'NEW' }) <br> ### Insert Items with Conditional Operators Catalyst also enables you to insert items based on conditions defined with operators in the Catalyst custom JSON format. The existing data of the table is retrieved and evaluated against the specified condition. The items are inserted only if the evaluation is true. If there is no existing data, the conditions are ignored and the items are inserted. Catalyst supports multiple operators to evaluate conditions, as listed in the [previous section](#insert-items-with-conditional-functions). The example below illustrates inserting an item based on conditions defined with the between operator. The condition states that only when the attribute count has values between 0 and 10 in the existing data, the attributes backupID and count are to be inserted in those items. The item is inserted with the insert_items() method. # Insert a NoSQL item with a conditional operator condition_function = { "attribute": ["count"], "operator": "between", "value": { "L": [ { "N": "0" }, { "N": "10" } ] } } item = { "countryCode": { "N": 054 }, "backupID": { "N": 2379992 }, "count": { "N": "3" } } # Insert the item based on the defined condition and set the return value in the response. Other supported values are "OLD" and "NULL" res = table.insert_items({ 'item': item, 'condition': condition_function, 'return': 'NEW' }) -------------------------------------------------------------------------------- title: "Update Items" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to update items in a NoSQL table." last_updated: "2026-09-29T06:07:16.277Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/nosql/update-items/" service: "Cloud Scale" -------------------------------------------------------------------------------- # Update NoSQL Items in Table Catalyst enables you to update items in a specific NoSQL table after you construct them. An item can be updated by identifying it using its primary keys. For instance, you can use just the partition key or a combination of the partition key and sort key to identify the item. You can then define the update operation type with the appropriate HTTP request method and provide the attributes and values to be updated in the item. Note: Catalyst enables you to update a maximum of 25 items in bulk in a NoSQL table with a single SDK operation. The example below illustrates this by retrieving an item with the partition key fruitName and the sort key location. The attributes of this item to be updated are color and taste. The values for all these attributes are provided. You can also optionally define a condition for update. The update will occur only if the condition is met. # Update a NoSQL item by identifying it with its primary keys res = table.update_items({ "keys": { "fruitName": { "S": "Banana" }, "location": { "S": "Indonesia" } },# Define the attributes to be updated in the item "update_attributes": [ { "operation_type": "PUT", "color": { "S": "Yellow" }, "taste": { "S": "Sweet" }, "attribute_path": "fruitProperties" } ],# Define a condition. The item will be updated only if this is satisfied. (optional) "condition" : { "function": { "function_name": "attribute_exists", "args": [ { "attribute_path": "fruitProperties" } ] } } }) print(res) -------------------------------------------------------------------------------- title: "Fetch Items" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to fetch items from a NoSQL table." last_updated: "2026-09-29T06:07:16.278Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/nosql/fetch-items/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - Basic Components (/en/cloud-scale/help/nosql/components/#basic-components) - Working with Data (/en/cloud-scale/help/nosql/working-with-data/introduction/) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/fetch-item/#FetchItem) -------------------------------------------------------------------------------- # Fetch Items from NoSQL Table Catalyst enables you to fetch items from a NoSQL table by identifying them with their primary keys. For instance, you can use just the partition key or a combination of the partition key and sort key to fetch the item. You can also optionally filter the attributes to be fetched by specifying the required attributes. Note: Catalyst enables you to fetch a maximum of 100 items from a NoSQL table in a single SDK read operation. The example below illustrates fetching an item identified by its partition key fruit and the sort key location using fetch_item(). Specific attributes such as properties and taste are filtered to be fetched using required_objects. # Fetch properties of a NoSQLItem identified with the partition key and sort key res = table.fetch_item({ "keys": [ { "fruit": { "S": "apple" }, "location: { "S": "USA" } } ], # Specify the attributes to be fetched 'required_objects': ["properties", "taste"] }) print(res) -------------------------------------------------------------------------------- title: "Query Table" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to query a NoSQL table." last_updated: "2026-09-29T06:07:16.278Z" 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) - JavaScript SDK (/en/sdk/javascript/v1/cloudscale/nosql/query-table/) -------------------------------------------------------------------------------- # Query NoSQL Table Catalyst enables you to query a NoSQL table and retrieve data by identifying the items using the primary keys of the table. For instance, you can use just the partition key or a combination of the partition key and sort key to retrieve the item. Note: Catalyst enables you to retrieve a maximum of 100 items in bulk from a NoSQL table with pagination from a single SDK operation. You must use the start_key token received in the SDK response and construct the logic for pagination. You can define the key condition that identifies the item by specifying the attributes, their required values, and the supported operator to be used. You can also specify additional conditions with the group operators. The supported operators are represented as shown below. <table class="content-table nosql-components-table"> <thead> <tr> <th class="w10p">Operators</th> <th class="w10p">Notation</th> </tr> </thead> <tbody> <tr> <td>CONTAINS</td> <td>contains</td> </tr> <tr> <td>NOT_CONTAINS</td> <td>not_contains</td> </tr> <tr> <td>BEGINS_WITH</td> <td>begins_with</td> </tr> <tr> <td>ENDS_WITH</td> <td>ends_with</td> </tr> <tr> <td>IN</td> <td>in</td> </tr> <tr> <td>NOT_IN</td> <td>not_in</td> </tr> <tr> <td>BETWEEN</td> <td>between</td> </tr> <tr> <td>NOT_BETWEEN</td> <td>not_between</td> </tr> <tr> <td>EQUALS</td> <td>equals</td> </tr> <tr> <td>NOT_EQUALS</td> <td>not_equals</td> </tr> <tr> <td>GREATER_THAN</td> <td>greater_than</td> </tr> <tr> <td>LESS_THAN</td> <td>less_than</td> </tr> <tr> <td>GREATER_THAN_OR_EQUALS</td> <td>greater_equal</td> </tr> <tr> <td>LESSER_THAN_OR_EQUALS</td> <td>less_equal</td> </tr> <tr> <td>AND</td> <td>AND</td> </tr> <tr> <td>OR</td> <td>OR</td> </tr> </tbody> </table> <br> In the example below, the query is executed using the queryTable() method by identifying the items using the partition key fruitType and specifying the condition value as "citrus". We also specify an additional condition with the attribute location matching "USA". Catalyst NoSQL also lets you define other elements of the query, such using consistent_read to indicate if the read operation must be done using the master or a slave cluster, limiting the number of rows to be returned, and specifying the sorting order as ascending. Note: In the master-slave replication, the master contains all the data of the database, and the slave contains copies from the master. Performing a read operation from the slave can reduce the overall cost with the trade-off being a minor delay in the updated data being reflected. # Query a NoSQL table to fetch the items identified by the partition key fruitType with the value "citrus" res = table.query_table( { # Set consistent_read to true to query from master. If set to false, it is queried from slave. 'consistent_read': 'true',# Set forwardScan to true to sort the results in ascending order. Otherwise, it is sorted in the descending order. 'forwardScan': 'true',# Limit the number of rows to be returned by specifying a value 'limit': 10,# Define the key condition to identify items 'key_condition': { 'attribute': 'fruitType', 'operator': 'equals', 'value': { 'S': 'citrus' } }, # Specify additional conditions to query the table items using group operators 'other_condition': { 'group_operator': 'and', 'group': [ { 'attribute': 'location', 'operator': 'equals', 'value': { 'S': 'USA' } } ] } }) print(res) -------------------------------------------------------------------------------- title: "Query Index" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to query a NoSQL index." last_updated: "2026-09-29T06:07:16.279Z" 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) - JavaScript SDK (/en/sdk/javascript/v1/cloudscale/nosql/query-index/) -------------------------------------------------------------------------------- # Query Index Catalyst enables you to query a NoSQL index and retrieve data by identifying the items using the primary keys of the index. Indexing allows you to execute alternate queries on the table data without making use of the primary keys of the main table. You can configure indexes from the Catalyst console. You can use just the partition key or a combination of the partition key and sort key of the index to retrieve an item. Note: Catalyst enables you to retrieve a maximum of 100 items in bulk from a NoSQL table with pagination from a single SDK operation. You must use the start_key token received in the SDK response and construct the logic for pagination. You can define the key condition that identifies the item by specifying the attributes, their required values, and the supported operator to be used. You can also specify additional conditions with the group operators. The supported operators are represented as shown below. <table class="content-table nosql-components-table"> <thead> <tr> <th class="w10p">Operators</th> <th class="w10p">Notation</th> </tr> </thead> <tbody> <tr> <td>CONTAINS</td> <td>contains</td> </tr> <tr> <td>NOT_CONTAINS</td> <td>not_contains</td> </tr> <tr> <td>BEGINS_WITH</td> <td>begins_with</td> </tr> <tr> <td>ENDS_WITH</td> <td>ends_with</td> </tr> <tr> <td>IN</td> <td>in</td> </tr> <tr> <td>NOT_IN</td> <td>not_in</td> </tr> <tr> <td>BETWEEN</td> <td>between</td> </tr> <tr> <td>NOT_BETWEEN</td> <td>not_between</td> </tr> <tr> <td>EQUALS</td> <td>equals</td> </tr> <tr> <td>NOT_EQUALS</td> <td>not_equals</td> </tr> <tr> <td>GREATER_THAN</td> <td>greater_than</td> </tr> <tr> <td>LESS_THAN</td> <td>less_than</td> </tr> <tr> <td>GREATER_THAN_OR_EQUALS</td> <td>greater_equal</td> </tr> <tr> <td>LESSER_THAN_OR_EQUALS</td> <td>less_equal</td> </tr> <tr> <td>AND</td> <td>AND</td> </tr> <tr> <td>OR</td> <td>OR</td> </tr> </tbody> </table> <br> In the example below, the query is performed with an index referenced by its unique Index ID. The query identifies the items using the index's partition key fruitColor and specifying the condition value as "yellow". We also specify an additional condition with the attribute fruitType matching "citrus". The query is done using the query_index() method. Catalyst NoSQL also lets you define other elements of the query, such using consistent_read to indicate if the read operation must be done using the master or a slave cluster, limiting the number of rows to be returned, and specifying the sorting order as ascending. Note: In the master-slave replication, the master contains all the data of the database, and the slave contains copies from the master. Performing a read operation from the slave can reduce the overall cost with the trade-off being a minor delay in the updated data being reflected. # Query a NoSQL table index to fetch the items identified by the partition key fruitColour with the value "yellow"# Pass the index's unique ID cres = table.query_index('6759000000740017', { # Set consistent_read to true to query from master. If set to false, it is queried from slave. 'consistent_read': 'true',# Set forward_scan to true to sort the results in ascending order. Otherwise, it is sorted in the descending order. 'forwardScan': 'true',# Limit the number of rows to be returned by specifying a value 'limit': 10,# Define the key condition to query the items with 'key_condition': { 'attribute': 'fruitColor', 'operator': 'equals', 'value': { 'S': 'yellow' } }, # Define additional conditions to query the data with, using group operators 'other_condition': { 'group_operator': 'AND', 'group': [ { 'attribute': 'fruitType', 'operator': 'equals', 'value': { 'S': 'citrus' } } ] } }) print(res) -------------------------------------------------------------------------------- title: "Delete Items" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to delete items from a NoSQL table." last_updated: "2026-09-29T06:07:16.280Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/nosql/delete-items/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - Working with Data (/en/cloud-scale/help/nosql/working-with-data/introduction/) - Basic Components (/en/cloud-scale/help/nosql/components/#basic-components) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/delete-item/#DeleteItem) -------------------------------------------------------------------------------- # Delete Items from NoSQL Table You can delete items from a NoSQL table in Catalyst by identifying them using the primary keys of the table. For instance, you use just the partition key, or a combination of the partition key and sort key of the table, to identify an item. Note: Catalyst enables you to delete a maximum of 25 items in bulk from a NoSQL table with a single SDK operation. The delete operation is performed using thedelete_items() method as shown in the example below. The item with the partition key fruit matching "apple" and the sort key location matching "USA" is deleted. You can also specify additional conditions for delete. Only if the item matches the condition, it will be deleted. # Delete a NoSQL item from the table by identifying it with the partition key and sort key res = table.delete_items( { "keys": { "fruit": { "S": "apple" }, "location": { "S": "USA" } } }), # Specify a condition for delete (optional) "condition": { "function": { "function_name": "attribute_exists", "args": [ { "attribute_path": ["properties"] } ] } } }) print(res) ### Push-Notifications -------------------------------------------------------------------------------- title: "Get Push Notifications Instance" description: "This page describes the method to send out remote notifications to end-users from your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.283Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/push-notifications/get-component-instance/" service: "Cloud Scale" related: - Push Notifications Help (/en/cloud-scale/help/push-notifications/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Push Notifications Catalyst Cloud Scale Push notifications enables you to send remote notifications to the users of your application, even when the app is not actively running on the user device. You can send push notifications to a specific list of target users. You can include alerts, updates, or promotional content for the user to engage with your application. Before you send push notifications, you must enable it for your web app when the user allows it. You can do this by implementing this code snippet in your web client. You can also access this code from the Push Notifications section in your Catalyst remote console. You must ensure that you include the web initialization script. #### Get a Component Instance A component instance is an object that can be used to access the pre-defined configurations specific to a particular component. This process will not fire a server-side call. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new push_notification_serviceinstance as shown below. We will refer to this component instance while sending push notifications from your Catalyst application. #Get push notification instance push_notification_service = app.push_notification() -------------------------------------------------------------------------------- title: "Send Notifications to Web Apps" description: "This page describes the method to send out remote notifications to end-users from your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.283Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/push-notifications/send-notifications/" service: "Cloud Scale" related: - Send Notifications - API (/en/api/code-reference/cloud-scale/push-notifications/web/send-web-push-notifications/#SendWebNotifications) - Push Notifications Help (/en/cloud-scale/help/push-notifications/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Send Push Notifications to Web Apps Catalyst enables you to send push notifications to 50 users in a single function call. You can add the user IDs of all users to be notified in an array as shown below. You must then pass the array to the send_notification() method, along with the message string to include in the notification. This string can be plain text, HTML, or a JSON object to be parsed. To know more about the component instance push_notification_service used below, please refer to this help section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>notification_message</td> <td>String</td> <td>A Mandatory parameter. Will store the notification message.</td> </tr> <tr> <td>user_list</td> <td>Array</td> <td>A Mandatory parameter. Will store the IDs or email addresses of the users to whom notification has to be sent.</td> </tr> </tbody> </table> #Send push notifications using userID's push_notification_service = app.push_notification() user_list = [1234556789098, 6756467677890] logging.info(push_notification_service.web().send_notification("Hi there! The task you scheduled has been completed.", user_list)) You can also send the notifications to users by including their email addresses instead of their User IDs. You must add the email addresses in an array, and pass it to send_notification() along with the message string in the same way. #Send push notifications using user email addresses's push_notification_service = app.push_notification() user_list = ["amelia.burrows@gmail.com", "emma.hillary@gmail.com"] logging.info(push_notification_service.web().send_notification("Hi there! The task you scheduled has been completed.", user_list)) Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Send Notifications to Mobile Apps" description: "This page describes the method to send out remote notifications to end-users from your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.283Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/push-notifications/send-notifications-mobile/" service: "Cloud Scale" related: - Push Notifications Help (/en/cloud-scale/help/push-notifications/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Push Notifications to Mobile Apps The Catalyst Cloud Scale Push Notifications component enables you to send notifications to mobile applications built on the Android or iOS platforms. You can send push notifications to a specific target user by using their Catalyst User ID or email address. You can include alerts, updates, or promotional content for the user to engage with your application. To set up push notifications, you must meet the following prerequisites: 1. You must register your mobile application with Catalyst and note down the Application ID (appId) from the console after configuring. You can opt to register your application installed in the target device either using individual platform-specific Catalyst mobile SDK methods (available in Android and iOS) or using the Flutter SDK. The appId can be fetched by configuring Android Push Notifications service directly in the Catalyst console. Learn about registering your Android app using Android SDK. Learn about registering your iOS app using iOS SDK. Learn about registering your mobile apps (Android or iOS) using Flutter SDK. 2. The mobile application must mandatorily use the Catalyst Serverless Authentication component. After all the setup is done, the Catalyst user must be logged in on their device to receive the notification promptly. Once the setup is complete, you can send notifications by calling the Python SDK method below, using your generated Application ID to target the specific app. ### Get Mobile Notification Instance You can create a mobile notification instance and use it to refer to a specific mobile app registered in the Catalyst console. This is done by fetching the mobile notification instance with the push_notification().mobile() method, by passing the generated appID as a parameter. We will use this mobile notification instance to perform additional operations with the Python SDK methods, such as sending push notifications, which will be covered in the next section. mobile_notification = app.push_notification().mobile("1234567890") Here, 1234567890 is the appID. Alternatively, if your application involves Catalyst scope-based access, you can pass the ZCProject project parameter along with the appID. Learn more about Catalyst SDK Scopes. mobile_notification = app.push_notification().mobile("1234567890", ZCProject project) #### Send Android Push Notifications After you have registered your Android application with Catalyst for sending push notifications, you can use the send_android_notification() method to send push notifications to your application. You will need to pass two parameters to the send_android_notification() method: * notify_obj - An object with the details of the push notification message. * recipient - The Catalyst User ID of the recipient or the email address of the recipient to whom the message has to be delivered. You can use the below code snippet to call the send_android_notification() method in your application: mobile_notification.send_android_notification( notify_obj={"message": "This message is to test if the functionality is working fine!", "badge_count": 1}, recipient="emma.b@zylker.com" ) badge_count sets the app icon's notification badge count to 1. You can change this value to any number you require. #### Send iOS push notifications Similar to Android, after you have registered your iOS application with Catalyst for sending push notifications, you can use the send_ios_notification() method to send push notifications to your application. mobile_notification.send_ios_notification( notify_obj={"message": "test_notification", "badge_count": 1}, recipient="testuser@zylker.com" ) ### Search -------------------------------------------------------------------------------- title: "Get Search Instance" description: "This page describes the method to search data in multiple tables in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.284Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/search/get-component-instance/" service: "Cloud Scale" related: - Search Integration Help (/en/cloud-scale/help/search-integration/introduction) -------------------------------------------------------------------------------- # Search Catalyst CloudScale Search allows the process of specifying a particular pattern to search for in the search-indexed columns of a particular table. You can also search in the indexed columns of multiple tables. This section covers the various SDK methods that can be used to implement the Catalyst search functionality in your application. ### Get a Component Instance A component instance is an object that can be used to access the pre-defined configurations specific to a particular component. This process will not fire a server-side call. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new search_serviceinstance as shown below. Also note that this component instance will be used in multiple scenarios while implementing the search component in your application. #Get a search component instance search_service = app.search() -------------------------------------------------------------------------------- title: "Search Data" description: "This page describes the method to search data in multiple tables in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.284Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/search/search-data/" service: "Cloud Scale" related: - Search data - API (/en/api/code-reference/cloud-scale/search/execute-search-query/#ExecuteSearchQuery) - Search Integration Help (/en/cloud-scale/help/search-integration/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Search Data Catalyst Search enables you to search and retrieve data records from the Catalyst Data Store. You can execute a search query using the execute_search_query() method to search for a particular pattern of data. ### Create a Dictionary The following code snippet creates a dictionary that contains the attributes of the pattern to be searched for, in the indexed columns of the individual Data Store tables. #Create a dictionary config = { 'search': 'burrows*', 'search_table_columns': { 'Employee': ['EmployeeID'], 'Users': ['Name'] } } ### Execute Search Query The dictionary object created in the previous section is passed as a parameter to the execute_search_query() method, which returns the response. To know more about the component instance search_service used below, please refer to this help section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>config</td> <td>Object</td> <td>A Mandatory parameter. Will hold the details of the search patterns.</td> </tr> </tbody> </table> #Execute Search query search_service = app.search() response_data = search_service.execute_search_query(config) A sample response will be shown below : { AlienCity: [ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-13 13:49:19:475", CITYNAME: "Dallas", CREATEDTIME: "2021-08-13 13:49:19:475", ROWID: "2136000000008508" } ] } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ### Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page lists all the Python SDK methods required to carry out Stratus operations through code." last_updated: "2026-09-29T06:07:16.287Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Stratus ## Overview Cloud Scale Stratus is Catalyst's robust and powerful storage solution. You can store data of any format in the form of Objects in containers called Buckets. Each Bucket and every individual object in the bucket has a secure Object URL and Bucket URL. You can perform upload and download operations on objects and even provide custom permissions for each object. The following table contains the list of all the Catalyst SDKs that can be used to perform Stratus operations through code. <table class="content-table"> <thead> <tr> <th class="w30p">Category</th> <th class="w70p">SDK Method</th> </tr> </thead> <tbody> <tr> <td>General Stratus Operations</td> <td> <ul> <li>Create Stratus Instance</li> <li>Check Bucket Availability</li> <li>List All Buckets</li> </ul> </td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>Create Bucket Instance</li> <li>Get Bucket Details</li> <li>Get Bucket CORS</li> <li>List Objects in a Bucket <ul> <li>List all Objects by Pagination</li> <li>List Objects Through Iteration</li> </ul> </li> <li>Check Object Availability</li> <li>Download Object <ul> <li>Download an Object</li> <li>Download a Portion of the Object</li> <li>Download an Object Using Transfer Manager</li> <li>Generate Presigned URL to Download an Object</li> </ul> </li> <li>Upload Object <ul> <li>Upload Object as a Stream</li> <li>Upload Object as a String</li> <li>Upload Object with Options</li> <li>Upload Object Using Multipart</li> <li>Upload an Object Using Transfer Manager</li> <li>Generate Presigned URL to Upload an Object</li> </ul> </li> <li>Extract a Zipped Object <ul> <li>Get Zip Extraction Status </ul> </li> <li>Copy Object</li> <li>Rename and Move Operations on an Object</li> <li>Delete Objects <ul> <li>Delete a Single Object</li> <li>Delete a Specific Version of an Object after a Specific Time</li> <li>Delete Multiple Objects</li> <li>Truncate Bucket</li> <li>Delete a Path in the Bucket</li> </ul> </li> </td> </tr> <tr> <td>Object Operations</td> <td> <ul> <li>Create Object Instance</li> <li>List Object Versions <ul> <li>List All Versions of an Object Through Pagination</li> <li>List All Versions of the Object Through Iteration</li> </ul> </li> <li>Get Object Details <ul> <li>Get Details of All Objects</li> <li>Get Details of a Particular Version of the Object</li> </ul> </li> <li>Put Object Meta Data</li> </ul> </td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Create Stratus Instance" description: "This page lists the Python SDK method to create a Stratus instance." last_updated: "2026-09-29T06:07:16.288Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/create-instance/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/initialize-stratus/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Stratus Instance You can get the stratus component reference as shown below. This will not fire a server-side call. We will refer to this component instance in various code snippets of working with Stratus. The app reference used in the below code snippet is the catalyst instance. stratus = app.stratus() -------------------------------------------------------------------------------- title: "Check Bucket Availability" description: "This page lists the Python SDK method to check if the bucket exists in your project." last_updated: "2026-09-29T06:07:16.290Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/check-bucket-availability/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Check Bucket Availability Using the head_bucket() SDK method, you can check the existence of a bucket in Stratus, and further check if the user has the relevant permissions to access the objects present in the bucket. The stratus reference used in the below code snippet is the component instance. Possible responses when using this SDK: * If the bucket exists and if the user has the relevant permissions to access the bucket, the response '**true**' will be returned. * If the bucket does not exist, or if the user does not have permission to access the bucket, the response '**false**' will be returned. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>bucket_name</td> <td>String</td> <td>A Mandatory parameter. Will hold the unique name of the bucket.</td> </tr> <tr> <td>throw_err</td> <td>Boolean</td> <td>An Optional parameter. If you set this parameter as "true", then it will throw an error when the bucket is not found in the project. The default value is "false"</td> </tr> </tbody> </table> bucket_res = stratus.head_bucket('bucket_name', throw_err=False) print(bucket_res) #### Possible Errors Note: If you use the SDK with the throw_err parameter, and the bucket does not exist, or if you do not have sufficient permissions then you may encounter any of the errors listed below. <table class="content-table"> <thead> <tr> <th class="w30p">Error Code</th> <th class="w70p">Meaning</th> </tr> </thead> <tbody> <tr> <td>404</td> <td>Not Found. Bucket Not found in Stratus.</td> </tr> <tr> <td>401</td> <td>Unauthorized/Access Denied - User doesn't have permission to perform the particular operation.</td> </tr> <tr> <td>403</td> <td>Permission Denied - User does not have permission to access the particular bucket.</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "List All Buckets" description: "This page lists the Python SDK method to list buckets created in your project." last_updated: "2026-09-29T06:07:16.290Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/list-buckets/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # List All Buckets The following SDK method will return all the buckets present in the project. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section The stratus reference used in the below code snippet is the component instance. buckets = stratus.list_buckets() # return all the buckets and it's details print(buckets) #### Example Response [ { "bucket_name": "zcstratus122", "project_details": { "project_name": "Learn", "id": "6759000000014001", "project_type": "Live" }, "created_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "created_time": "Mar 26, 2024 12:44 PM", "modified_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "modified_time": "Mar 30, 2024 11:38 AM", "bucket_meta": { "versioning": "False", "caching": { "status": "Enabled", "delivery_point_id": "01ht6zj7k536c29ymsgfeky1mg" }, "encryption": "False", "audit_consent": "False" }, "bucket_url": "https://zcstratus122-development.zohostratus.com" }, { "bucket_name": "zcstratus12345", "project_details": { "project_name": "Learn", "id": "6759000000014001", "project_type": "Live" }, "created_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "created_time": "Mar 13, 2024 05:51 PM", "modified_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "modified_time": "Apr 18, 2024 12:44 PM", "bucket_meta": { "versioning": "True", "caching": { "status": "Enabled", "delivery_point_id": "01hrxy25tv1vex73qhm85g88bf" }, "encryption": "False", "audit_consent": "False" }, "bucket_url": "https://zcstratus12345-development.zohostratus.com" } ] -------------------------------------------------------------------------------- title: "Create Bucket Instance" description: "This page lists the Python SDK method to create a bucket instance." last_updated: "2026-09-29T06:07:16.291Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/create-bucket-instance/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Bucket Instance To perform bucket level operations, you need to create a bucket instance. We will refer to this component instance in various code snippets of working with Buckets in Stratus. The stratus reference used in the below code snippet is the component instance. bucket = stratus.bucket('bucket_name') -------------------------------------------------------------------------------- title: "Get Bucket Details" description: "This page lists the Python SDK method to get the details of a bucket." last_updated: "2026-09-29T06:07:16.291Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/create-bucket-instance/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Get Bucket Details The following SDK method will allow you to get all available details of a particular bucket. The Bucket reference used in the below code snippet is the component instance. bucket_details = bucket.get_details() print(bucket_details) #### Example Response { "bucket_name": "zcstratus122", "project_details": { "project_name": "Learn", "id": "6759000000014001", "project_type": "Live" }, "created_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "created_time": "Mar 26, 2024 12:44 PM", "modified_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "modified_time": "Mar 30, 2024 11:38 AM", "bucket_meta": { "versioning": "False", "caching": { "status": "Enabled", "delivery_point_id": "01ht6zj7k536c29ymsgfeky1mg" }, "encryption": "False", "audit_consent": "False" }, "bucket_url": "https://zcstratus122-development.lzstratus.com", "caching_url": "https://zcstratus122-development.nimbuslocaledge.com", "objects_count": "74", "size_in_bytes": "925906411" } -------------------------------------------------------------------------------- title: "Get Bucket CORS" description: "This page lists the Python SDK method to get the current CORS configuration of the bucket." last_updated: "2026-09-29T06:07:16.291Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/get-bucket-cors/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Get Bucket CORS The get_cors() SDK method, will return the current CORS configuration of a specific bucket in Stratus. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section CORS of a bucket can be edited by any user that has or has been granted Write permission for Stratus component in the project, using the Profiles & Permissions section. Note: You can find out more about Bucket CORS from this help section. res = bucket.get_cors() print(res) -------------------------------------------------------------------------------- title: "List Objects in a Bucket" description: "This page lists the Python SDK method to list all the objects stroed in a bucket." last_updated: "2026-09-29T06:07:16.291Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/check-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # List Objects in a Bucket ### List all Objects by Pagination This SDK method will allow you to get all the objects present in a particular bucket by pagination. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section For each call, a limited number of objects will be returned, and the next call will be initiated only if a continuation token is returned. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>max_keys</td> <td>String</td> <td>A Mandatory parameter. Will contain the maximum limit of objects that can be listed by pagination.</td> </tr> <tr> <td>continuation_token</td> <td>String</td> <td>An Mandatory parameter. Will contain the token to get the next set of objects.</td> </tr> <tr> <td>prefix</td> <td>String</td> <td>An Optional parameter. To list objects that match the prefix value.</td> </tr> <tr> <td>order_by</td> <td>String</td> <td>An Optional parameter. To list objects either in ascending or descending order. Default Value: asc</td> </tr> <tr> <td>folder_listing</td> <td>String</td> <td>An Optional parameter. To choose to list either just the root-level objects in the bucket or list all the objects present in all the paths of the bucket. Default Value: false<br />For instance, if you set value as true; the root-level objects alone will be listed. If you set the value as false; all the objects present in all the paths of the bucket will be listed </td> </tr> </tbody> </table> In the following SDK method, a maximum value of pagination is set using max_keys. Using prefix, you can list objects that only match the prefix:. The response we get will contain the following properties of the bucket, which will be stored in moreOptions: * key count: Will contain the value of the number of objects that are being returned * max_key: The maximum limit of objects that can be returned * Truncated: Will contain the status to notify if a bucket is truncated or not. * contents: List of object details * next_token: If the response was truncated, the value of this key must be passed as next_token to the same method for retrieving the next set of objects. With each iteration, we will list the max_keys number of objects and check if next_token has been created. Using next_token we will continue the iteration till all the objects have been listed. # Define a recursive function to list objects from the bucket using pagination def list_my_paged_objects(max_keys=None, prefix=None, next_token=None): # Fetch a paged list of objects from the bucket with specified options data = bucket.list_paged_objects( max_keys, # Maximum number of objects to retrieve in this call prefix, # Filter objects that start with this prefix next_token, # Continuation token to fetch the next page of results folder_listing=True, # List objects in a folder-like structure order_by='desc' # Sort objects in descending order (most recent first) ) # Print the list of retrieved objects print(data['contents']) # Check if more objects are available (pagination is not yet complete) if data['truncated']: # Recursively call the function to fetch the next page of objects list_my_paged_objects(max_keys, prefix, data['next_continuation_token']) #Start listing objects with a page size of 2 list_my_paged_objects(2, 'sam') #### Example Response { "prefix": "sam", "key_count": "5", "max_keys": "5", "truncated": "True", "next_continuation_token": "47VrqTzR9ukMF9gr8YcziVVzdRP5GCjq1NfM5fMBpMfvw5qcXFRSueuqCTRUCzNd9dHfquXHi2afDanLH6MbyJo6", "contents": [ { "key_type": "file", "key": "sam1s2ww.mp4", "size": "427160684", "content_type": "video/mp4", "etag": "78c2b173b56cd944e9c79abd601f6073", "last_modified": "May 21, 2024 01:00 PM" }, { "key_type": "file", "key": "samdm.txt", "size": "23", "content_type": "text/plain; charset=utf-8", "etag": "c0122754f465e42eb97b5af174663c29", "last_modified": "May 14, 2024 01:30 PM" }, { "key_type": "file", "key": "samplvbse1.json", "size": "8", "content_type": "application/json", "etag": "499e7dbaee453352a9c17407a676dbda", "last_modified": "May 13, 2024 10:05 AM" }, { "key_type": "file", "key": "samplse1.json", "size": "8", "content_type": "application/json", "etag": "499e7dbaee453352a9c17407a676dbda", "last_modified": "May 13, 2024 09:20 AM" }, { "key_type": "file", "key": "sampjkhdldbed.mp4", "size": "0", "content_type": "video/mp4", "etag": "d41d8cd98f00b204e9800998ecf8427e", "last_modified": "May 12, 2024 10:54 PM" } ] } ### List Objects Through Iteration Using this SDK method, you can get all the objects present in a bucket in a single API call, using iteration technique. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section # List objects from the bucket using iterable pagination with specified options objects = bucket.list_iterable_objects( max_keys=5, # Maximum number of objects to retrieve per batch (default is 1000) prefix='sam', # Filter objects that start with this prefix folder_listing=True, # List objects in a folder-like structure (default is False) order_by='desc' # Sort objects in descending order (default is 'asc') ) #Iterate over and print each object key for key in objects: print(key) #### Example Response { "key_type": "file", "key": "ssdgs.mp4", "size": "3145728", "content_type": "video/mp4", "etag": "9685b8d5b8b719274bac854b897d95ec", "last_modified": "May 21, 2024 03:49 PM" } { "key_type": "file", "key": "Sasss.mp4", "size": "2674", "content_type": "video/mp4", "etag": "24c1122087e9be930ff1e957e83f5224", "last_modified": "May 21, 2024 02:55 PM" } { "key_type": "file", "key": "Samfplessss.mp4", "size": "2674", "content_type": "video/mp4", "etag": "24c1122087e9be930ff1e957e83f5224", "last_modified": "May 21, 2024 02:52 PM" } { "key_type": "file", "key": "demo.mp4", "size": "3400", "content_type": "video/mp4", "etag": "24e957e83f5224c1122087e9be930ff1", "last_modified": "May 21, 2024 02:52 PM" } { "key_type": "file", "key": "performance.mp4", "size": "1454", "content_type": "video/mp4", "etag": "087e9be930ff124c1122e957e83f5224", "last_modified": "May 21, 2024 02:52 PM" } -------------------------------------------------------------------------------- title: "Check Object Availability" description: "This page lists the Python SDK method to check if an object is present in a bucket." last_updated: "2026-09-29T06:07:16.297Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Check Object Availability Using this SDK method, you can check if a particular object is present in the bucket, if the user has the required permissions to access the object. The Bucket reference used in the below code snippet is the component instance. If you have enabled Versioning for your bucket, then you need to pass the version_id as the param, to check if a particular version of the object is available. When you use this SDK method, you will get either of the following responses: - **true**: If the object is available, the specified version is available, and if the user has the relevant permissions to access the objects. - **false**: - If the object or the particular version of the object is not available in the bucket. - If the user does not have the required permissions to access the object. - If the bucket does not exist. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>A Mandatory parameter. Will hold the complete name of the object.</td> </tr> <tr> <td>version_id</td> <td>String</td> <td>An Optional parameter. Will hold the unique version ID of the object, if Versioning is enabled.</td> </tr> <tr> <td>throw_err</td> <td>Boolean</td> <td>An Optional parameter. If you set this parameter as "true", then it will throw an error when the bucket is not found in the project. The default value is "false"</td> </tr> </tbody> </table> head_object_res = bucket.head_object( "sam/out/sample.txt", 'version_id', throw_err=False) print(head_object_res) #### Possible Errors Note: If you use the SDK with the throw_err parameter, and the object does not exist, or if you do not have sufficient permissions then you may encounter any of the errors listed below. <table class="content-table"> <thead> <tr> <th class="w30p">Error Code</th> <th class="w70p">Meaning</th> </tr> </thead> <tbody> <tr> <td>404</td> <td>Not Found. Object Not found in Stratus.</td> </tr> <tr> <td>401</td> <td>Unauthorized/Access Denied - User doesn't have permission to perform the particular operation.</td> </tr> <tr> <td>403</td> <td>Permission Denied - User does not have permission to access the particular object.</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Download Object" description: "This page lists the Python SDK method to download objects from a bucket." last_updated: "2026-09-29T06:07:16.298Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/download-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/download-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/download-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/download-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Download Object ### Download an Object The SDKs present in the section will allow you to download a particular object, multiple objects, or version of the object. The Bucket reference used in the below code snippet is the component instance. The first step of the download operation is a GET operation that retrieves the required object from the bucket. To be able to download an object, the requester must have READ access permissions. However, owners of the bucket do have the option to grant READ access permissions to users, allowing them to download the object without using the required response headers. If Versioning is enabled for your bucket, you need to pass the versionId to download the particular version of the object. If no versionId is passed, then by default, the latest version of the object will be downloaded. If *Versioning* was enabled for a bucket, then disabled. By default, the principal first object will be downloaded. To ensure you download the latest version of this object, you need to pass the versionId param with the value "topVersion". res = bucket.get_object("sam/out/sample.txt") # download the object to local machine file = open('file_path','wb') file.write(res) ### Download a Portion of the Object The following SDK method is used with the range parameter. The range parameter allows you to download a specific range of bytes of an object. options = { 'version_id': '01hx66f1383jm48w9sa4z20kve', # download the object with given version Id 'range': '0-200' # start and end range of an object } res = bucket.get_object('"sam/out/sample.txt", options) # download the object to local machine file = open('file_path','wb') file.write(res) ### Download an Object Using Transfer Manager In this section, we are going to go over SDK methods that will allow you to successfully download large objects from Stratus to your local system using **Transfer Manager** technique. Transfer Manager is an operation where the large object is split into multiple byte ranges using the start and end bytes range of the object. Each of the object's parts is then returned as a stream, and they are downloaded to your local system. #### Get Transfer Manager Instance To perform transfer manager operations, you need to get a transfer manager object instance. We will refer to this component instance in various code snippets where we work with transfer manager operations being performed on objects stored in a bucket in Stratus. **Parameter Used** bucket: This is the bucket instance you need to have initialized earlier using this SDK method. **Ensure the following packages are imported** from zcatalyst_sdk.stratus.transfer_manager import TransferManager transfer_manager = TranferManager(bucket) #### Get Iterable Object It return the iterable object parts. User can write these parts to our local machine using iterator. Note: Use single file to write because it return iterable parts not whole object. If you write in individual files, you need to combine them in to one. Info: Ensure you provide part_size in Mb. res = transfer_manager.get_iterable_object("sam/out/sample.txt", 20) file = open('file_path','wb') # store the object to local machine for chunk in res: file.write(chunk) #### Generate Object Part Downloaders When a user needs to download a large file (example: 10 GB file), using the get_object() method is not practical. Instead, the user can opt for this SDK method. By calling the generate_part_downloaders() method with the parameters key(str) and part_size(Long), the user can obtain transfer manager functions. These functions, returned in ascending order, each download a specific part of the object. The parts are determined based on the specified part size. res = transfer_manager.generate_part_downloaders("sam/out/sample.txt",20) file = open('file_path','wb') for part in res: file.write(part()) Info: The file must be uploaded via the API or SDK to enable partial downloads. The part_size should be greater than 5 MB and less than 100 MB. ### Generate Presigned URL to Download an Object Presigned URLs are secure URLs that authenticated users can share to their non-authenticated users. This URL will provide non-authenticated users with temporary authorization to access objects. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>A Mandatory parameter. Will hold the complete name of the object along with it's path.</td> </tr> <tr> <td>url_action</td> <td>Request Method</td> <td>A Mandatory parameter. This is the parameter that will allow you to generate a presigned URL for a download(GET) action. <ul> <li>**GET**: To download an object</li> </ul> </td> </tr> <tr> <td>expiry</td> <td>String</td> <td>This is an Optional parameter. The URL validity time in seconds. <ul> <li>Default value: 3600 seconds</li> <li>Minimum value: 30 seconds</li> <li>Maximum value: 7 days</li> </ul> </td> </tr> <tr> <td>active_from</td> <td>String</td> <td>This is an Optional parameter. This param will contain the time after which the URL is valid. Maximum value is 7 days. URLs are made active as soon as they are generated by default.</td> </tr> </tbody> </table> pre_signed_url_res = bucket.generate_presigned_url("sam/out/sample.txt",url_action='GET',expiry_in_sec='300', active_from='1023453725828', version_id='jdery748tfge78') print(pre_signed_url_res) **Example Response for Generating a Presigned URL for Download** { "signature": "https://zcstratus123-development.zohostratus.com/_signed/sam/out/sample.txt?organizationId=83963316&stsCredential=74660608-83963316&stsDate=1726492859577&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=_G8mnq-03vKgPlnJPmqBvzEnT3Hk-SnECuG-cgURyDs", "expiry_in_seconds": "300", "active_from": "1726492859577" } **Example Snippet Illustrating Usage of Presigned URL to Download an Object** import requests #Pre-signed URL to download the file url = "https://sadi-development.zohostratus.com/_signed/code.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747899927592&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=-l10AlSsbZzkq6t8HHgDfNkEiiDWFaaU9M3-hPBz0M8" #Path where the downloaded file will be saved locally file_path = "file_path" # Replace with actual file path #Send a GET request to download the file response = requests.get(url, stream=True) #Check if the request was successful if response.status_code == 200: #Open the destination file in binary write mode with open(file_path, "wb") as f: #Write data in chunks to handle large files for chunk in response.iter_content(chunk_size=8192): if chunk: f.write(chunk) print("Download completed successfully.") else: print("Object download failed. Status code:", response.status_code) -------------------------------------------------------------------------------- title: "Upload Object" description: "This page lists the Python SDK method to upload objects to a bucket." last_updated: "2026-09-29T06:07:16.301Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/upload-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/upload-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/upload-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/upload-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Upload Object The SDK methods listed in this section will allow you to upload objects to the bucket in various manners. You can upload objects as a **string** or as a **stream**. The Bucket reference used in the below code snippet is the component instance. If you do not have Versioning enabled for your object, and if Stratus gets multiple write requests for the same object, the object will be continuously overwritten. The latest upload of the object will be the only object that is stored. However, with Versioning enabled, each upload will be considered a version of the object, and all of them will be stored in the bucket, each with a unique version_id. Note: The following characters including space are not supported when you create a path or an object: double quote, both angular brackets, hashtag, backward slash and pipe symbol. ### Upload Object as a Stream Using this SDK method, you can upload objects to a bucket as a stream. Store the stream in a variable and then pass that variable in the upload method. file = open('file_path','rb') res = bucket.put_object("sam/out/sample.txt",file) print(res) ### Upload Object as a String Using this SDK method, you can upload the object as a string. You will pass the object name, and the data to be stored in the object in string format in the upload method; put_object() res = bucket.put_object("sam/out/sample.txt",'content of the file') print(res) ### Upload Object with Options Using this SDK method, you can use the following options while you upload an object. * **overwrite**: This is an option you can use, if *Versioning* for your bucket is not enabled for your bucket. Without versioning, you need to use this option if you wish to overwrite a resource. The default value is '**false**'. * **ttl**: This is an option you can use to set **Time-to-Live** (TTL) in seconds for an object. Value should be greater than or equal to **60 seconds**. * **meta_data**: This is an option you can use to upload meta details of the object that is being uploaded. * **content_type**: This is an option you can provide, if you need to set the MIME type of the object. options = { 'overwrite': 'true', 'ttl': '300', #provide time to live in seconds 'meta_data': { 'author': 'John' } } file = open('file_path','rb') res = bucket.put_object("sam/out/sample.txt",file, options) print(res) ### Upload Object With Extract Option When you upload a zip file using the following method, the zip file will be extracted, and the objects will be uploaded to the bucket. # Define upload options including extract_upload options = { # Overwrite the object if it already exists 'overwrite': 'true', # Time-to-live in seconds after which the object will expire 'ttl': '300', # Automatically extract contents of ZIP file 'extract_upload': 'true', # MIME type of the object 'content-type': 'application/zip', # Custom metadata associated with the object 'meta_data': { 'author': 'Sam' } } #Open the file in binary mode file = open('sam.zip', 'rb') #Upload and extract ZIP contents res = bucket.put_object('sam/sample.zip', file, options) This SDK method will return a task_id. You can use this task_id in this SDK method to find out the status of the extraction. **Example Response** { 'task_id': '1234263749' } ### Upload Object Using Multipart In this section we are going to go over the SDK methods that will allow you to successfully upload a large object to a bucket in Stratus. The multipart upload feature will upload a large file to the bucket in multiple HTTPS requests. All of these requests will be combined into a single object once all the individual parts have been uploaded. Note: It is recommended that you consider Multipart Upload as the preferred method to upload objects that are 100 MB or larger. #### Initiate Multipart Upload To perform multipart operations, you need to get a multipart object instance. We will refer to this component instance in various code snippets where we work with multipart operations being performed on objects stored in a bucket in Stratus. **Parameter Used** bucket: This is the bucket instance you need to have initialized earlier using this SDK method. init_res = bucket.initiate_multipart_upload(key="") print(init_res) **Example Response** { bucket: 'zcstratus123-development', key: 'objectName.txt', upload_id: '01j7xbm4vm5750zbedxqgc4q6m', status: 'PENDING' } #### Upload Parts of the Object In the following SDK method, we are going to perform uploads of the individual parts of the object. Each part will have a distinct partNumber ranging anywhere between 1 and 1000. While this represents the ordering of the parts, these parts will not necessarily be uploaded in sequence. These parts will be combined in sequence once the upload of all the parts of the objects is complete. upload_res = bucket.upload_part(key="",upload_id="", part_number=3, body=open('file_path','rb')) print(upload_res) #### Get Multipart Upload Summary The following SDK method can be used to obtain an operational summary of all the uploaded parts. To view the summary, we will use the get_multipart_upload_summary() method. summary_res = bucket.get_multipart_upload_summary(key="", upload_id="") print(summary_res) **Example Response** { "bucket": "zcstratus12345-development", "key": "sasm.txt", "upload_id": "01hyfyeazrrstmt7k5fa7ej726", "status": "PENDING", "parts": [ { "part_number": 1, "size": 0, "uploaded_at": 1716374678999 }, { "part_number": 2, "size": 2797094, "uploaded_at": 1716374678576 }, { "part_number": 4, "size": 0, "uploaded_at": 1716374679136 } ] } #### Complete Multipart Upload of the Object The following method allows us to terminate the multipart process once all the parts have been successfully uploaded. To complete the process we will pass the uploadId to the complete_multipart_upload() method. complete_res = bucket.complete_multipart_upload(key="", upload_id="") print(complete_res) **Example SDK Implementation** from concurrent.futures import ThreadPoolExecutor import zcatalyst_sdk def handler(request: Request): app = zcatalyst_sdk.initialize() if request.path == "/": # stratus instance stratus = app.stratus() # bucket instance bucket = stratus.bucket('bucket_name') # multipart upload key = "sam/out/sample.txt" file_path = '/sam/smple.mp4' initiate_res = bucket.initiate_multipart_upload(key) part_number = 1 part_size = 50 * 1024 * 1024 futures = [] try: with open(file_path, 'rb') as file: with ThreadPoolExecutor(max_workers=3) as executor: while True: chunk = file.read(part_size) if not chunk: break futures.append(executor.submit( bucket.upload_part, key, initiate_res['upload_id'], chunk, part_number ) ) part_number += 1 for future in futures: future.result() except Exception as err: raise err multipart_upload_res = bucket.complete_multipart_upload(key, initiate_res['upload_id']) return multipart_upload_res else: response = make_response('Unknown path') response.status_code = 400 return response ### Upload an Object Using Transfer Manager When the Object that you need to upload is too large to upload, you can perform a transfer manager operation. The transfer manager operation will split the object into multiple parts and perform a quicker upload. In this SDK section, we are going to go over all the SDK methods that are available to perform upload objects in Stratus using Transfer Manager. #### Get Transfer Manager Instance To perform transfer manager operations, you need to get a transfer manager object instance. We will refer to this component instance in various code snippets where we work with transfer manager operations being performed on objects stored in a bucket in Stratus. **Parameter Used** bucket: This is the bucket instance you need to have initialized earlier using this SDK method. **Ensure the following packages are imported** from zcatalyst_sdk.stratus.transfer_manager import TransferManager transfer_manager = TranferManager(bucket) #### Upload an Object Using Transfer Manager In this section we are going to go over the SDK methods that will allow you to successfully upload a large object to a bucket in Stratus. The multipart upload feature will upload a large file to the bucket in multiple HTTPS requests. All of these requests will be combined into a single object once all the individual parts have been uploaded. Note: It is recommended that you consider Multipart Upload as the preferred method to upload objects that are 100 MB or larger. #### Create Multipart Instance Using the following SDK method, we are going to generate a upload_id. Using this ID we are going to create and return an instance that allows you to perform multipart operations on the object. init_ins = transfer_manager.create_multipart_instance(key="") If you are required to create an instance for an already initialized multipart upload operation, then copy and use the code snippet given below. init_ins = transfer_manager.create_multipart_instance(key="", upload_id="") #### Perform Multipart Upload for Parts of the Object In the following SDK method, we are going to perform uploads of the individual parts of the object. Each part will have a distinct part_number ranging anywhere between **1 and 1000**. While this represents the ordering of the parts, these parts will not necessarily be uploaded in sequence. These parts will be combined in sequence once the upload of all the parts of the objects is complete. **Parameters Used** * part_number: Will have the ordering of the parts that are being uploaded. * body: Will contain the data/content of the object. upload_res = init_ins.upload_part(body=open('file_path','rb'), part_number=3) print(upload_res) #### Get Multipart Upload Summary The following SDK method can be used to obtain an operational summary of all the uploaded parts. To view the summary, we will use the get_upload_summary() method. summary_res = init_ins.get_upload_summary() print(summary_res) #### Complete Multipart Upload of the Object The following method allows us to terminate the multipart process once all the parts have been successfully uploaded. To complete the process we will pass the upload_id to the complete_upload() method. complete_res = init_ins.complete_upload() print(complete_res) #### Upload an Object Wrapping all the Transfer Manager Functionality The following SDK method acts as a wrapper, where the entire transfer manager upload operation is carried out without employing multiple steps. Using this method, the object is split into multiple parts, uploaded to the bucket in multiple parts, and then combined once all the parts are uploaded. Note: For object's that are larger than 2GB, we would recommend that you use the individual SDK methods to carry out the multipart upload operation successfully.<br /> upload_res = transfer_res.put_object_as_parts(key='', body=open('file_path', 'rb'), part_size=50) print(upload_res) ### Generate Presigned URL to Upload an Object Presigned URLs are secure URLs that authenticated users can share to their non-authenticated users. This URL will provide non-authenticated users with temporary authorization to access objects. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>A Mandatory parameter. Will hold the complete name of the object along with it's path.</td> </tr> <tr> <td>url_action</td> <td>Request Method</td> <td>A Mandatory parameter. This is the parameter that will allow you to generate a presigned URL for an upload(PUT) action. <ul> <li>**PUT**: To upload an object</li> </ul> </td> </tr> <tr> <td>expiry</td> <td>String</td> <td>This is an Optional parameter. The URL validity time in seconds. <ul> <li>Default value: 3600 seconds</li> <li>Minimum value: 30 seconds</li> <li>Maximum value: 7 days</li> </ul> </td> </tr> <tr> <td>active_from</td> <td>String</td> <td>This is an Optional parameter. This param will contain the time after which the URL is valid. Maximum value is 7 days. URLs are made active as soon as they are generated by default.</td> </tr> </tbody> </table> pre_signed_url_res = bucket.generate_presigned_url("sam/out/sample.txt",url_action='PUT',expiry_in_sec='300', active_from='1023453725828') print(pre_signed_url_res) **Example Response for Generating a Presigned URL for Upload** { "signature": "https://sadi-development.zohostratus.com/_signed/code.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747899245773&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=YBPoNE9txCIUWWX3ntdgVd95VTt1jGFlSuvnTRFbCMQ" file_path = "/Users/ranjitha-18338/Documents/Pyhton-SDK/stratus/output.txt", "expiry_in_seconds": "300", "active_from": "1726492859577" } **Example Snippet Illustrating Usage of Presigned URL to Upload an Object** import requests #Replace this with your actual pre-signed URL url = "https://sadi-development.zohostratus.com/_signed/code.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747899245773&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=YBPoNE9txCIUWWX3ntdgVd95VTt1jGFlSuvnTRFbCMQ" #Path to the local file that you want to upload file_path = "file_path" #Set required headers headers = { # 'Content-Type': 'text/plain', # Specify content type of the file # 'overwrite': 'true', # Optional custom header to indicate overwrite (if required by server) } #Open the file in binary read mode and send a PUT request to upload it with open(file_path, 'rb') as f: files = {'file': f} #Create a file payload response = requests.put(url, headers=headers, files=files) #Check the response status if response.status == 200: print('Object uploaded successfully') else: print('Object upload failed') -------------------------------------------------------------------------------- title: "Extract a Zipped Object" description: "This page lists the Python SDK method to extract a zipped object." last_updated: "2026-09-29T06:07:16.305Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/extract-zipped-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Extract a Zipped Object The following SDK method will allow you to extract a zip file inside Stratus, and every individual content present in the zip file will be considered as individual object and uploaded to Stratus in the same bucket. This entire process will happen *asynchronously*. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section Note: Since the extraction process occurs asynchronously, the time in which the entire process is completed is dependent on the size of the zip file that is being extracted. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>A Mandatory parameter. Will be the name of the zip file, you need to extract</td> </tr> <tr> <td>destination</td> <td>String</td> <td>A Mandatory parameter. Will contain the complete path information of the destination, where the extracted objects will be stored in the bucket.</td> </tr> </tbody> </table> unzip_res = bucket.unzip_object("sam/out/sample.zip","output/") print(unzip_res) #### Example Response { "key": "sam/out/sample.zip", "destination": "output/", "task_id": "6963000000272049", "message": "Zip extract scheduled" } ### Get Zip Extraction Status The zip extraction process occurs asynchronously, and the time it takes to complete the extraction process is highly contingent on the size of the zip file. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section Using the task_id parameter, in the following SDK method, we can determine the status of the extraction. The task_id is returned in the response of unzip_object() method. res = bucket.get_unzip_status("sam/out/sample.zip", 'task_id') print(res) #### Example Response { "task_id": "6963000000272049", "status": "SUCCESS" } -------------------------------------------------------------------------------- title: "Copy Object" description: "This page lists the Python SDK method to make a copy of an object within its own bucket." last_updated: "2026-09-29T06:07:16.305Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/copy-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Copy Object Using this SDK method, you can copy an object and paste it within a bucket. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section The key will be the object you are going to copy, and the destination, will contain the new name of the copied object. To paste the copied object in a different path, you need to provide the complete path name as dest_object. Note: * You need to provide the complete object name, along with the path for both key and destination values. * For example, if you have file named "kitten.png" in the path pictures/puppy, and you need to copy the file to pictures/kitten path, then: <br /> key value will be 'pictures/puppy/kitten.png'<br /> destination value will be 'pictures/kitten/kitten.png'<br /> res = bucket.copy_object("sam/out/sample.txt","output/sample.txt") print(res) #### Example Response { "copy_to": "output/sample.txt", "object_key": "sam/out/sample.txt", "message": "Object copied successfully." } -------------------------------------------------------------------------------- title: "Rename and Move Operations on an Object" description: "This page lists the Python SDK method to perform rename and move operations on an object." last_updated: "2026-09-29T06:07:16.306Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Rename and Move Operations on an Object To rename and to move an object, we will be using the same rename_object() SDK method. The Bucket reference used in the below code snippet is the component instance. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>The original name of the object that you need to rename</td> </tr> <tr> <td>destination</td> <td>String</td> <td>The new name that you rename the object with</td> </tr> </tbody> </table> Note: * You need to provide the complete object name, along with the path for both sourceObject and destObject values. * For example, if you have file named "kitten.png" in the path pictures/puppy, and you need to move or rename the file to pictures/kitten path, then: <br /> key value will be 'pictures/puppy/kitten.png'<br /> destination value will be 'pictures/kitten/kitten.png'<br /> ### Rename an Object Using the rename_object() SDK method you can rename objects present in a bucket. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section Note: * You cannot rename objects in a bucket that has Versioning enabled. * The following characters including space are not supported when you create a path or an object: double quote, both angular brackets, hashtag, backward slash and pipe symbol. rename_res = bucket.rename_object("sam/out/sample.txt","sam/out/update_sample.txt") print(rename_res)<br /> #### Example Response { "current_key": "sam/out/sample.txt", "message": "Rename successful", "rename_to": "sam/out/update_sample.txt" } ### Move an Object Using the rename_object() SDK method, we can move the object from one path to another within a bucket. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section rename_res = bucket.rename_object("sam/out/sample.txt","output/sample.txt") print(rename_res)<br /> Note: You cannot perform move operations in a bucket that has Versioning enabled. #### Example Response { "current_key": "sam/out/sample.txt", "message": "Rename successful", "rename_to": "sutput/sample.txt" } -------------------------------------------------------------------------------- title: "Delete Objects" description: "This page lists the Python SDK method to delete objects stores in a bucket." last_updated: "2026-09-29T06:07:16.306Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/delete-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/delete-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/delete-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/delete-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Delete Objects The following SDK methods will allow you to perform delete operations in Stratus. The Bucket reference used in the below code snippet is the component instance. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>A Mandatory parameter. Will hold the complete name of the object along with it's path.</td> </tr> <tr> <td>version_id</td> <td>String</td> <td>An Optional parameter. If Versioning is enabled for your bucket then, this param will help you refer to a particular version using its unique Version ID.</td> </tr> <tr> <td>ttl</td> <td>int</td> <td>An Optional parameter. It allows you to schedule your delete operations. For example, if you provide the value of ttl as 60, the delete operation will only occur after 60 seconds. The value of ttl has to be >= 60 seconds.</td> </tr> </tbody> </table> ### Delete a Single Object Using this SDK method, you can delete a particular object by passing the object name to the delete_object() method. delete_res = bucket.delete_object("sam/out/sample.txt") print(delete_res) Note: If Versioning is enabled on the bucket and no specific version_id is provided, deleting an object will remove all versions of that object by default. ### Delete a Specific Version of an Object after a Specific Time Ensure you provide the versionId of the object if you enabled Versioning for your bucket. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section You can also schedule your delete operation using the ttl variable. For example, if you provide the value of ttl as **100**, the delete operation will only occur after **100 seconds**. Always ensure that the value of ttl is greater than equal to **60 seconds**. delete_res = bucket.delete_object("sam/out/sample.txt", 'version_id', ttl=300) print(delete_res) ### Delete Multiple Objects Using this SDK method, you can delete multiple objects by passing the names of the objects that need to be deleted as an array. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section Ensure you provide the versionId of the object if you enabled Versioning for your bucket. You can also schedule your delete operation using the ttl variable. For example, if you provide the value of ttl as **100**, the delete operation will only occur after **100 seconds**. Always ensure that the value of ttl is greater than equal to **60 seconds**. delete_objects_res = bucket.delete_objects([ { 'key' : "sam/out/sample.txt", 'version_id':'01hj6ackcxpha9151n7mj0cq6g' }, { 'key' :"sam/out/sample1.txt", 'version_id':'01hj68v1tmb33wa7zchb1vtbjn' }],ttl=300) print(delete_objects_res) #### Example Response for Delete Operation {'message': 'Object Deletion successful.'} ### Truncate Bucket Using this SDK method you will be able to essentially every single object present in the bucket. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section # delete all the objects in the bucket truncate_res = bucket.truncate() print(truncate_res) ### Delete a Path in the Bucket Using this SDK, you will be able to delete all the objects present in a path. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section You need to pass the complete path to the delete_path() method. path_res = bucket.delete_path("sam/") print(path_res)<br /> Note: Ensure that you provide the exact path. If an incorrect path is provided, the delete action will get scheduled, but it will result in an error. #### Example Response { "path": "sam/", "message": "Path deletion scheduled" } -------------------------------------------------------------------------------- title: "Create Object Instance" description: "This page lists the Python SDK method to create an object instance." last_updated: "2026-09-29T06:07:16.307Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/create-object-instance/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Object Instance Use the following method to get an object instance to perform object-related operations. The Bucket reference used in the below code snippet is the component instance. object_ins = bucket.object("sam/out/sample.txt") -------------------------------------------------------------------------------- title: "List Object Versions" description: "This page lists the Python SDK method to get versions of an object." last_updated: "2026-09-29T06:07:16.307Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # List Object Versions ### List All Versions of an Object Through Pagination Enabling Versioning in a bucket allows you to store multiple versions of the same object in the bucket. Each version of the object will have its own versionId. This SDK method allows you to get all the existing versions of an object present in a bucket by pagination. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>next_token</td> <td>String</td> <td>Will hold the value to determine the next set of versions.</td> </tr> <tr> <td>max_versions</td> <td>int</td> <td>An Optional parameter. Will hold the value of the maximum number of versions of the object that can be listed per iteration.</td> </tr> </tbody> </table> def list_my_paged_versions(max_versions = None, next_token= None): res = object_ins.list_paged_versions(max_versions, next_token) print(res) if not res['is_truncated']: # return 'true' if more versions are available for the object. Return 'false' no more versions available for the object return list_my_paged_versions(max_versions, next_token) list_my_paged_versions(2) #### Example Response { "key": "downloaded_file.json", "versions_count": 2, "max_versions": "2", "is_truncated": "False", "next_continuation_token": "4YpUdkktt2UeWp6MwEK1LZXELnuVhunHLnGgX29uvszwtJEQE2gVDJYyRiLdUmhNst", "version": [ { "version_id": "01hyfh12njtpyvzwq6p1fd2d8s", "is_latest": "True", "last_modified": "May 22, 2024 12:20 PM", "size": 1, "etag": "9af7c117d9de9a06fba7a5f1ea5fcc2d" }, { "version_id": "01hyfh0xkvwkxxsjfceef201xa", "is_latest": "False", "last_modified": "May 22, 2024 12:20 PM", "size": "1", "etag": "9af7c117d9de9a06fba7a5f1ea5fcc2d" } ] } ### List All Versions of the Object Through Iteration You can use the following SDK method to get all available versions of the object in a single call. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section versions = object_ins.list_iterable_versions(2) for key in versions: print(key) #### Example Response { "version_id": "01hyfh12njtpyvzwq6p1fd2d8s", "is_latest": "True", "last_modified": "May 22,2024 12:20 PM", "size": "1", "etag": "9af7c117d9de9a06fba7a5f1ea5fcc2d" } { "version_id": "01hyfh0xkvwkxxsjfceef201xa", "is_latest": "False", "last_modified": "May 22, 2024 12:20 PM", "size": "1", "etag": "9af7c117d9de9a06fba7a5f1ea5fcc2d" } -------------------------------------------------------------------------------- title: "Get Object Details" description: "This page lists the Python SDK method to get details of objects stored in a bucket." last_updated: "2026-09-29T06:07:16.308Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/get-object-details/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Get Object Details ### Get Details of an Object Use the following SDK method to get details of an object stored in the bucket. The Object reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section res = object_ins.get_details() print(res) Note: If Versioning is enabled, then using this SDK method will only return the latest version's object details. #### Example Response { "key": "sam/out/sample.txt", "size": 1, "content_type": "text/plain", "last_modified": "May 22, 2024 12:25 PM", "meta_data": { "author": "John" }, "object_url": "https://zcstratus12345-development.zohostratus.com/sam/out/sample.txt", "cached_object_url": "https://zcstratus12345-development.nimbuslocaledge.com/sam/out/sample.txt" } ### Get Details of a Particular Version of the Object Using this SDK method, you will be able to get all details of a particular object's version. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>version_id</td> <td>String</td> <td>An Optional parameter. If Versioning is enabled for your bucket then, this param will help you refer to a particular version using its unique Version ID.</td> </tr> </tbody> </table> Note: * You need to have enabled Versioning for your objects at least once to use this method. * You can find out more about Versioning from this help documentation. res = object_ins.get_details('version_id') print(res) #### Example Response { "key": "sample.txt", "version_id": "01j7xgnmv5dhpk45kn3pctkasp", "size": 16, "content_type": "text/plain", "etag": "ad6affccd08876ad9ae5f60b7848b2c7", "last_modified": "Sep 16, 2024 07:04 PM", "object_url": "https://zcstratus123-development.zohostratus.com/sample.txt", "cached_object_url": "https://zcstratus123-development.nimbuslocaledge.com/sample.txt", } -------------------------------------------------------------------------------- title: "Put Object Meta Data" description: "This page lists the Python SDK method to add meta data for an object stored in the object." last_updated: "2026-09-29T06:07:16.309Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/put-object-metadata/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Put Object Meta Data Using the following SDK method, you can add meta details for a particular object stored in a bucket in Stratus. The Object reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section The meta details will be passed as JSON key value pairs. For example, {"meta_key" : "meta_value"} res = object_ins.put_meta({'author': 'Amelia Burrows'}) print(res) Note: * Using this method to pass new meta details without adding the existent details will delete the existing details and only put the new details. To avoid this, pass the new meta details along with the existing meta details. * You can use alphanumeric, underscores, or whitespace characters, as well as hyphens, to write your metadata. No other special character is allowed other than the once mentioned. * You can fetch the metadata of an object using the **HEAD** request method. In the response, the metadata will be listed in the key 'x-user-meta'. * The maximum size limit of characters allowed for the overall metadata is **2047** characters. The character count used to determine the size limit also includes the colon ":" special character used to define the key value pair. #### Example Response { "message": "Metadata added successfully" } ### ZCQL -------------------------------------------------------------------------------- title: "Get ZCQL Instance" description: "This page describes the method to execute ZCQL queries on a table in the Data Store in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.313Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/zcql/get-component-instance/" service: "Cloud Scale" related: - ZCQL Help (/en/cloud-scale/help/zcql/introduction) - Data Store Help (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # ZCQL Catalyst Cloud Scale ZCQL is Catalyst's own query language that enables you to perform data retrieval, insertion, updation, and deletion operations on the tables in the Catalyst Cloud Scale Data Store. You can execute a variety of DML queries using ZCQL to obtain or manipulate data, and use various clauses and statements such as the SQL Join clauses, Groupby and OrderBy statements, and built-in SQL functions. Catalyst also provides an **OLAP database**, in addition to the primary Data Store that is suited for analytical data retrieval queries. You can choose to execute simple transactional queries on the primary Data Store, and complex analytical queries that involve ZCQL functions on the OLAP database. ### Get a Component Instance A component instance is an object that can be used to access the predefined configurations specific to a particular component. This process will not fire a server-side call. The app reference used in the code below is the Python object returned as a response during SDK initialization. Also note that this instance will be used in multiple scenarios while performing retrieval, insertion, updating, or deleting operations in the Catalyst Data Store. #Get a ZCQL component instance zcql_service = app.zcql() -------------------------------------------------------------------------------- title: "Execute Query" description: "This page describes the method to execute ZCQL queries on a table in the Data Store in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.313Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/zcql/execute-zcql-query/" service: "Cloud Scale" related: - Execute query - API (/en/api/code-reference/cloud-scale/zcql/execute-zcql-query/#ExecuteZCQLQuery) - ZCQL Help (/en/cloud-scale/help/zcql/introduction) - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Execute Query The zcql_service reference used in the code snippet below is the component instance created earlier. Based on the query object being passed, the response returns a row object or an array of row objects. ### Construct and Execute the Query on the Primary Data Store For the ZCQL queries to be executed on the primary Data Store, you can construct the query object and pass it to the execute_query() method as shown below. These queries can include SELECT, INSERT, UPDATE, or DELETE statements. A sample INSERT query is shown below: #Construct the ZCQL query query = 'INSERT into ShipmentData (productID, productName, region) VALUES (3782, A4 Reams, India)' result = zcql_service.execute_query(query) ### Construct and Execute the Query on the OLAP Database The queries that you execute on the OLAP database must only include the SELECT statement, as direct write operations on it are not allowed. You can construct the query object and pass it to the execute_olap_query() method. A sample analytical SELECT query is shown below. //Construct the query to execute query = 'SELECT SUM(price) FROM ShipmentData'; result = zcql_service.execute_olap_query(query); **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>query</td> <td>String</td> <td>A Mandatory parameter. Will store the query to be executed.</td> </tr> </tbody> </table> Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ## Connectors -------------------------------------------------------------------------------- title: "Connectors" description: "This page describes the method to use connectors to manage access token in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.314Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/connectors/connectors/" service: "All Services" related: - Cache Help (/en/cloud-scale/help/cache/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Connectors A Catalyst Connector provides a seamless connection between Catalyst and an external Zoho service established through **Zoho OAuth authentication**. You can avail the use of a connector in your Catalyst application if your business logic includes the use of an external Zoho service's API, such as a Zoho CRM or a Zoho WorkDrive API. Catalyst handles the connection by storing the Access Token you generate in Zoho API console for a specific application in Catalyst Cache until its expiry. After it expires, the connector will automatically fetch a new Access Token using the Refresh Token and store it in the cache. Each time the Access Token expires, the connector automatically fetches and caches a new token in the background, relieving you from the efforts of constructing the logic to maintain an uninterrupted connection with the external Zoho service in your application's business logic. Note: Catalyst Connectors can only be used to maintain connections with an external Zoho service, and not any third-party services. This is because, the OAuth standards maintained across all Zoho services are uniform and compatible for Catalyst to implement the Connectors feature. Before you configure the connector in your Python business logic as shown below, you will need to register a new client in the Zoho API console, and follow the steps to generate an Authorization Code and an Access Token for the first time. You can then configure the connector with the Refresh Token received, as well as other standard OAuth parameters such as the Client ID, Client Secret, Authentication URL, and Refresh URL that are required to refresh the Access Token automatically in a periodical manner. Note: * The name you provide for each connector in your logic must be unique. * If you create a server-based application in the Zoho API console and you allow the access token to be created for different users within the same application, then you will need to provide a different and unique connector name for each user. This is because, when the same connector is used for different users in an application, the token will be overwritten on the same cache segment resulting in fetching the wrong user's data from the external Zoho service. The code below illustrates a Python connector. The app reference used below is the Python object returned as a response during SDK initialization. The response returns the access token: **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>ConnectorName</td> <td>Array</td> <td>A Mandatory parameter. Will store the connector details like client_id, client_secret, auth_url, refresh_url and refresh_token.</td> </tr> </tbody> </table> connector = app.connection( { "ConnectorName": { "client_id": {add_client_id}, "client_secret": {add_client_secret}, "auth_url": {add_auth_url}, "refresh_url": {add_refresh_url}, "refresh_token": {add_refresh_token}, "refresh_in": {add_refresh_in} # Configure the OAuth params from the values returned after registering your app and generating authorization code in Zoho API console } } ).get_connector("{ConnectorName}") #Provide a unique connector name for each connector you create access_token = connector.get_access_token() Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ## Job Scheduling -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the methods to perform Job Scheduling operations" last_updated: "2026-09-29T06:07:16.315Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/overview/) - REST API Collection (/en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Job Scheduling SDK Job Scheduling is a Catalyst service that allows you to schedule job submissions and execute them in a Job Pool to trigger Circuits, Webhooks (any third-party URL), Job Functions, and AppSail service's endpoints. Using the Catalyst SDK, you can perform the following operations through code: <table class="content-table"> <thead> <tr> <th class="w25p">Job Scheduling Component</th> <th class="w75p">Operations Possible Using SDK</th> </tr> </thead> <tbody> <tr> <td>Job Pool</td> <td>Get All Job Pool<br />Get a Specific Job Pool</td> </tr> <tr> <td>Job</td> <td>Create Job<br />Get Job Details<br />Delete a Job</td> </tr> <tr> <td>Cron</td> <td>Create a One-Time Cron<br />Create a Recurring Cron<br />Create Cron Using Cron Expressions<br />Get Details of a Particular Cron<br />Get Details of All Crons<br />Update Cron<br />Pause Cron<br />Resume Cron<br />Run Cron<br />Delete Cron</td> </tr> </tbody> </table> <br /> -------------------------------------------------------------------------------- title: "Initialize Job Scheduling Instance" description: "This page describes the method to create a component reference for the Job Scheduling service." last_updated: "2026-09-29T06:07:16.316Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/jobpool/get-all-jobpool/) - REST API Collection (/en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Initialize Job Scheduling Instance You can create a Job Scheduling component reference as shown below. This will not fire a server-side call. We will refer to this component instance in various code snippets of working with Job Scheduling's components. job_scheduling = app.job_scheduling() # get job scheduling instance ### Cron -------------------------------------------------------------------------------- title: "Create a One-Time Cron" description: "This page describes the Python method to create a one-time cron in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.316Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/cron/create-one-time-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/create-cron/create-one-time-cron/#CreateaOne-TimeCron) -------------------------------------------------------------------------------- # Create a One-Time Cron The Cron component is used to schedule the submission of a job to the job Pool. Using the following SDK, you will be able to create a cron that will schedule a job submission only once. Note: The following SDK is written for a job that will trigger a Job Function. To make the SDK compatible for the other types, you need to replace the value with proper Job Pool ID, or Job Pool Name, and provide the appropriate Target Name, or Target ID. # create function job meta job_meta = { "job_name": "test_job", # set a name for the job "target_type": "Function", # set the target type as Function for function jobs "target_name": "target_function", # set the target function's name (optional) (either target_id or target_name is mandatory) # 'target_id': '123467890', # set the target functions's Id (optional) (either target_id or target_name is mandatory) "jobpool_name": "test", # set the name of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) # 'jobpool_id': '1234567890' # set the Id of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) "job_config": { "number_of_retries": 2, # set the number of retries "retry_interval": 15 * 60, # set the retry interval }, # set job config - job retries => 2 retries in 15 mins (optional) "params": { "arg1": "test", "arg2": "job", }, # set params to be passed to target function (optional) } # create one time cron one_time_cron = job_scheduling.CRON.create( { "cron_name": "one_time", # set a name for the cron (unique) "description": "one_time_cron", # set the cron description (optional) "cron_status": True, # set the cron status as enabled "cron_type": "OneTime", # set the cron type as OneTime "cron_detail": { "time_of_execution": int(time.time()) + (60 * 10 * 1000), # set the execution time as UNIX timestamp # 'timezone': 'America/Los_Angeles' # set the timezone (optional) }, "job_meta": job_meta, # set the function job meta } ) Note: We urge you to use this SDK to configure only Dynamic Crons. Use the UI Builder to configure Pre-defined Crons. -------------------------------------------------------------------------------- title: "Create a Recurring Cron" description: "This page describes the Python method to create a recurring cron in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.316Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/cron/create-recurring-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/create-cron/create-every-cron/#CreateanEveryCron) -------------------------------------------------------------------------------- # Create a Recurring Cron Using the following SDK, you will be able to create a recurring cron that can be executed at various time-period intervals. The intervals can range from a minute to entire calendar years. ### Create an Every Cron The following SDK can be used to create a recurring cron that will submit a job to the job pool at a scheduled interval that is less than **24Hrs**. Note: The following SDK is configured to submit a job every 2Hrs 1Mins and 3secs. You can change this value as per your requirement by passing the relevant value to the cron_detail JSON key-value pair. # create function job meta job_meta = { 'job_name': 'test_job', # set a name for the job 'target_type': 'Function', # set the target type as Function for function jobs 'target_name': 'target_function', # set the target function's name (optional) (either target_id or target_name is mandatory) # 'target_id': '123467890', # set the target functions's Id (optional) (either target_id or target_name is mandatory) 'jobpool_name': 'test', # set the name of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) # 'jobpool_id': '1234567890' # set the Id of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) 'job_config': { 'number_of_retries': 2, # set the number of retries 'retry_interval': 15 * 60 # set the retry interval }, # set job config - job retries => 2 retries in 15 mins (optional) 'params': { 'arg1': 'test', 'arg2': 'job' } # set params to be passed to target function (optional) } # create every cron every_cron = job_scheduling.CRON.create({ 'cron_name': 'every_cron', # set a name for the cron (unique) 'description': 'every_cron', # set the cron description (optional) 'cron_status': True, # set the cron status as enabled 'cron_type': 'Periodic', # set the cron type as Periodic for every cron 'cron_detail': { 'hour': 2, # set the hour interval of the repetition 'minute': 1, # set the minute interval of the repetition 'second': 3, # set the second interval of the repetition 'repetition_type': 'every' # set the repetition type as every for every cron }, 'job_meta': job_meta # set the function job meta }) <br> ### Create a Daily Cron The following SDK can be used to schedule a cron to submit a job to the job pool at a fixed time at a **daily interval**. Note: The following SDK is configured to execute the cron on 0Hr 0Min 0Sec every single day. You can change this value as per your requirement by passing the relevant value to the cron_detail JSON key-value pair. # create function job meta job_meta = { 'job_name': 'test_job', # set a name for the job 'target_type': 'Function', # set the target type as Function for function jobs 'target_name': 'target_function', # set the target function's name (optional) (either target_id or target_name is mandatory) # 'target_id': '123467890', # set the target functions's Id (optional) (either target_id or target_name is mandatory) 'jobpool_name': 'test', # set the name of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) # 'jobpool_id': '1234567890' # set the Id of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) 'job_config': { 'number_of_retries': 2, # set the number of retries 'retry_interval': 15 * 60 # set the retry interval }, # set job config - job retries => 2 retries in 15 mins (optional) 'params': { 'arg1': 'test', 'arg2': 'job' } # set params to be passed to target function (optional) } daily_cron = job_scheduling.CRON.create({ 'cron_name': 'daily_cron', # set a name for the cron (unique) 'description': 'daily_cron', # set the cron description (optional) 'cron_status': True, # set the cron status as enabled 'cron_type': 'Calendar', # set the cron type as Calendar for daily, monthly and yearly 'cron_detail': { 'hour': 0, # set the hour of the day in which the cron should be executed 'minute': 0, # set the minute of the day in which the cron should be executed 'second': 0, # set the second of the day in which the cron should be executed 'repetition_type': 'daily', # set the repetition type as daily for daily cron # 'timezone': 'America/Los_Angeles' # set the timezone (optional) }, 'job_meta': job_meta # set the function job meta }) <br> ### Create a Monthly Cron The following SDK can be used to schedule a cron to submit a job to the job pool at a fixed date, and time at a **monthly interval**. Additionally, you also have the option to submit a job at a monthly interval but on a particular week. If you choose to schedule the cron to execute at a monthly interval on a date-based schedule, then the range of possible dates, based on the **month**, will be **1-31**. Similarly, if you choose a **week-based** interval, then the range can either be from **1-4**, and the particular **days of the week** will be in the range of **1-7**. Note: The following SDK is configured to execute the cron that will submit a job to the job pool every month on the 1st, 3rd, and 5th at 0Hrs,0Mins, 0Secs. You can change this value as per your requirement by passing the relevant value to the cron_detail JSON key-value pair. # create function job meta job_meta = { 'job_name': 'test_job', # set a name for the job 'target_type': 'Function', # set the target type as Function for function jobs 'target_name': 'target_function', # set the target function's name (optional) (either target_id or target_name is mandatory) # 'target_id': '123467890', # set the target functions's Id (optional) (either target_id or target_name is mandatory) 'jobpool_name': 'test', # set the name of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) # 'jobpool_id': '1234567890' # set the Id of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) 'job_config': { 'number_of_retries': 2, # set the number of retries 'retry_interval': 15 * 60 # set the retry interval }, # set job config - job retries => 2 retries in 15 mins (optional) 'params': { 'arg1': 'test', 'arg2': 'job' } # set params to be passed to target function (optional) } # create monthly cron monthly_cron = job_scheduling.CRON.create({ 'cron_name': 'monthly_cron', # set a name for the cron (unique) 'description': 'monthly_cron', # set the cron description (optional) 'cron_status': True, # set the cron status as enabled 'cron_type': 'Calendar', # set the cron type as Calendar for daily, monthly and yearly 'cron_detail': { 'hour': 0, # set the hour of the day in which the cron should be executed 'minute': 0, # set the minute of the day in which the cron should be executed 'second': 0, # set the second of the day in which the cron should be executed 'days': [1, 3, 5], # set the days of the month in which the cron should be executed # 'week_day': [1, 3], # set the days of the week in a month during which the cron should be executed # 'weeks_of_month': [2], # set the weeks of the month during which the cron should be executed 'repetition_type': 'monthly', # set the repetition type as monthly for monthly cron # 'timezone': 'America/Los_Angeles' # set the timezone (optional) }, 'job_meta': job_meta # set function job meta }) <br> ### Create a Yearly Cron The following SDK can be used to schedule a cron tosubmit a job to the job pool at a fixed date, and time at a fixed month on a **yearly** interval. Additionally, you also have the option to submit a job at a yearly interval but on a particular week. If you choose to schedule the cron to execute at a **yearly** interval on a **date-based** schedule, then the range of possible dates, based on the **month**, will be **1-31**, and the **month** will be determined based on the range of values **1-12**. Similarly, if you choose a **week-based** interval, then the range can either be from **1-4**, and the particular **days of the week** will be in the range of **1-7**. Note: The following SDK is configured to execute the cron that will submit a job to the job pool on the 1st, 2nd, and 3rd on the 8th month of every year. You can change this value as per your requirement by passing the relevant value to the cron_detail JSON key-value pair. # create function job meta job_meta = { "job_name": "test_job", # set a name for the job "target_type": "Function", # set the target type as Function for function jobs "target_name": "target_function", # set the target function's name (optional) (either target_id or target_name is mandatory) # 'target_id': '123467890', # set the target functions's Id (optional) (either target_id or target_name is mandatory) "jobpool_name": "test", # set the name of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) # 'jobpool_id': '1234567890' # set the Id of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) "job_config": { "number_of_retries": 2, # set the number of retries "retry_interval": 15 * 60, # set the retry interval }, # set job config - job retries => 2 retries in 15 mins (optional) "params": { "arg1": "test", "arg2": "job", }, # set params to be passed to target function (optional) } # create yearly cron yearly_cron = job_scheduling.CRON.create( { "cron_name": "yearly_cron", # set a name for the cron (unique) "description": "yearly_cron", # set the cron description (optional) "cron_status": True, # set the cron status as enabled "cron_type": "Calendar", # set the cron type as Calendar for daily, monthly and yearly "cron_detail": { "hour": 0, # set the hour of the day in which the cron should be executed "minute": 0, # set the minute of the day in which the cron should be executed "second": 0, # set the second of the day in which the cron should be executed "days": [ 1, 2, 3, ], # set the days of the month in which the cron should be executed # 'week_day': [1, 3], # set the days of the week in a month during which the cron should be executed # 'weeks_of_month': [2], # set the weeks of the month during which the cron should be executed "months": [ 8 ], # set the months of the year in which the cron should be executed "repetition_type": "yearly", # set the repetition type as yearly for yearly cron # 'timezone': 'America/Los_Angeles' # set the timezone (optional) }, "job_meta": job_meta, # set function job meta } ) Note: We urge you to use this SDK to configure only Dynamic Crons. Use the UI Builder to configure Pre-defined Crons. -------------------------------------------------------------------------------- title: "Create a Cron Using Cron Expressions" description: "This page describes the Python method to create a cron using Cron Expressions in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.317Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/cron/create-cron-expressions/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/create-cron/create-cron-cron-exp/#CreateaCronUsingCronExpressions) -------------------------------------------------------------------------------- # Create a Cron Using Cron Expressions Use this SDK to implement crons to schedule the submission of jobs to job pools. However, the configuration of the cron will be defined using regex-like expressions called Cron Expressions. Note: In the following SDK, the cron has been configured using Cron Expressions, to submit a job to the job pool on 0Hrs 0Mins 0Secs on every 1st day of the week on the 1st month of every year. You can change this value as per your requirement by passing the relevant value to the cron_expression JSON key-value pair. # create function job meta job_meta = { 'job_name': 'test_job', # set a name for the job 'target_type': 'Function', # set the target type as Function for function jobs 'target_name': 'target_function', # set the target function's name (optional) (either target_id or target_name is mandatory) # 'target_id': '123467890', # set the target functions's Id (optional) (either target_id or target_name is mandatory) 'jobpool_name': 'test', # set the name of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) # 'jobpool_id': '1234567890' # set the Id of the function jobpool (optional) (either jobpool_name or jobpool_id is mandatory) 'job_config': { 'number_of_retries': 2, # set the number of retries 'retry_interval': 15 * 60 # set the retry interval }, # set job config - job retries => 2 retries in 15 mins (optional) 'params': { 'arg1': 'test', 'arg2': 'job' } # set params to be passed to target function (optional) } # create expression cron expression_cron = job_scheduling.CRON.create({ 'cron_name': 'expression_cron', # set a name for the cron (unique) 'description': 'expression_cron', # set the cron description (optional) 'cron_status': True, # set the cron status as enabled 'cron_type': 'CronExpression', # set the cron type as Calendar for daily, monthly and yearly 'cron_expression': '0 0 * 1 1', # set the cron expression # 'timezone': 'America/Los_Angeles', # set the timezone (optional) 'cron_detail': {}, # set the cron details 'job_meta': job_meta # set function job meta }) Note: We urge you to use this SDK to configure only Dynamic Crons. Use the UI Builder to configure Pre-defined Crons. -------------------------------------------------------------------------------- title: "Get Details of a Particular Cron" description: "This page describes the Python method to get details of a cron in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.317Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/cron/get-cron-details/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/get-cron/#GetCronByIdentifier) -------------------------------------------------------------------------------- # Get Details of a Particular Cron Use the following SDK to get all available details of a particular **Pre-Defined Cron** or **Dynamic Cron**. You need to pass the cron id or the name of the cron to the get() SDK method. cron = job_scheduling.CRON.get('1234567890') # get cron with cron Id cron = job_scheduling.CRON.get('test') # get cron with cron name -------------------------------------------------------------------------------- title: "Get Details of All Crons" description: "This page describes the Python method to get details of all the crons in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.318Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/cron/get-all-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/get-all-cron/#GetAllCrons) -------------------------------------------------------------------------------- # Get Details of All Crons The following SDK will allow you to get all available information on all Pre-Defined Crons using the get_all() SDK method. Note: This method will only fetch you details of Pre-Defined Crons. This method will not work for Dynamic Crons. all_cron = job_scheduling.CRON.get_all() # get all static cron -------------------------------------------------------------------------------- title: "Update Cron" description: "This page describes the Python method to update a cron in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.318Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/cron/update-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/update-cron/update-one-time-cron/#UpdateaOne-TimeCron) -------------------------------------------------------------------------------- # Update Cron The following SDK can be used to update a particular cron's details. You can use this SDK to update the name, description and target. You can select your required cron by passing the cron id to the get() method, and update the details using the update() method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. cron = job_scheduling.CRON.get('test') # get cron with cron name cron.&#95;&#95;setitem&#95;&#95;('cron_name', 'test_new_name') # set cron name updated_cron = job_scheduling.CRON.update('1234567890', cron) # updating cron name with cron Id cron = job_scheduling.CRON.get('test') # get cron with cron name cron.&#95;&#95;setitem&#95;&#95;('cron_name', 'test_name') # set cron name updated_cron = job_scheduling.CRON.update('test', cron) # updating cron name with the existing cron name -------------------------------------------------------------------------------- title: "Pause Cron" description: "This page describes the Python method to pause a cron in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.318Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/cron/pause-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/create-cron/create-one-time-cron/#CreateaOne-TimeCron) -------------------------------------------------------------------------------- # Pause Cron This SDK method can be used to temporarily halt a cron from submitting a job to the job Pool. You need to pass the cron id or name of the cron you wish to pause to the pause() SDK method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. paused_cron = job_scheduling.CRON.pause('1234567890') # disable a cron with the cron Id paused_cron = job_scheduling.CRON.pause('test_cron') # disable a cron with the cron name -------------------------------------------------------------------------------- title: "Resume Cron" description: "This page describes the Python method to resume a cron in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.318Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/cron/resume-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/create-cron/create-one-time-cron/#CreateaOne-TimeCron) -------------------------------------------------------------------------------- # Resume Cron This SDK method can be used to resume the operations of a cron that had been previously paused. This can be done by passing the paused cron id or name to the resume() SDK method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. resumed_cron = job_scheduling.CRON.resume('1234567890') # enable a cron with the cron Id resumed_cron = job_scheduling.CRON.resume('test_cron') # enable a cron with the cron name -------------------------------------------------------------------------------- title: "Run Cron" description: "This page describes the Python method to execute a cron in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.318Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/cron/run-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/create-cron/create-one-time-cron/#CreateaOne-TimeCron) -------------------------------------------------------------------------------- # Run Cron This SDK can be used to execute a cron. The cron once executed will immediately submit the associated job to the job Pool. This can be done by passing the cron id or name to the run() SDK method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. job = job_scheduling.CRON.run('1234567890') # run cron with cron Id job = job_scheduling.CRON.run('test_cron') # run cron with cron name -------------------------------------------------------------------------------- title: "Delete Cron" description: "This page describes the Python method to delete a cron in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.318Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/cron/delete-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/delete-cron/#DeleteCron) -------------------------------------------------------------------------------- # Delete Cron This SDK method can be used to delete a particular cron. This can be done by passing the cron id or name to the delete() SDK method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. deleted_cron = job_scheduling.CRON.delete('1234567890') # delete cron with cron Id deleted_cron = job_scheduling.CRON.delete('test_cron') # delete a cron with cron name ### Job Pool -------------------------------------------------------------------------------- title: "Get All Job Pools’ Details" description: "This page describes the Python method to get all the job pools present in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.327Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/overview/) - REST API Collection (/en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Get All Job Pools’ Details Using the following SDK, you will be able to get all the available details on all of the available Job Pools. all_jobpools = job_scheduling.get_all_jobpool() # get all jobpools -------------------------------------------------------------------------------- title: "Get Specific Job Pool’s Details" description: "This page describes the Python method to get details of a specific job pool present in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.409Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/jobpool/get-jobpool/) - REST API Collection (/en/api/code-reference/job-scheduling/jobpool/get-jobpool/#GetJobPoolbyIdentifier) -------------------------------------------------------------------------------- # Get Specific Job Pool’s Details Using the following SDK, you will be able to get the details of a particular Job Pool by either passing the name or the ID of the Job Pool to the get_jobpool() SDK method. ### Get Job Pool Details Using Job Pool ID jobpool = job_scheduling.get_jobpool('1234567890') # get jobpool with the jobpool id "1234567890" ### Get Job Pool Details Using Job Pool Name jobpool = job_scheduling.get_jobpool('test') # get jobpool with the jobpool name "test" ### Jobs -------------------------------------------------------------------------------- title: "Create Job" description: "This page describes the Python method to create a job in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.415Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/job/create-job/) - REST API Collection (/en/api/code-reference/job-scheduling/job/submit-job/submit-webhook-job/#SubmitWebhookJobByID) -------------------------------------------------------------------------------- # Create Job Using the following SDK method, you can create and submit Jobs to trigger Job Functions, Webhooks, Circuits, and App Sail services. You can also pass optional arguments in the form of JSON key value pairs. SDK snippet to create and submit Job to trigger: # create function job function_job = job_scheduling.JOB.submit_job( { "job_name": "test_job", # set a name for the job "jobpool_name": "test", # set the name of the function jobpool where the job should be submitted "target_type": "Function", # set the target type as Function for function jobs "target_name": "target_function", # set the target function's name (optional) (either target_id or target_name is mandatory) # 'target_id': '123467890', # set the target functions's Id (optional) (either target_id or target_name is mandatory) "params": { "arg1": "test", "arg2": "job", }, # set params to be passed to target function (optional) "job_config": { "number_of_retries": 2, # set the number of retries "retry_interval": 15 * 60, # set the retry interval }, # set job config - job retries => 2 retries in 15 mins (optional) } ) # create circuit job circuit_job = job_scheduling.JOB.submit_job( { "job_name": "test_job", # set a name for the job "jobpool_name": "test", # set the name of the circuit jobpool where the job should be submitted "target_type": "Circuit", # set the target type as Circuit for circuit jobs "target_name": "target_circuit", # set the target circuit's name (optional) (either target_id or target_name is mandatory) # 'target_id': '123467890', # set the target circuit's Id (optional) (either target_id or target_name is mandatory) "test_cases": {"arg1": "job", "arg2": "test"}, # set the circuit test cases "job_config": { "number_of_retries": 2, # set the number of retries "retry_interval": 15 * 60, # set the retry interval }, # set job config - job retries => 2 retries in 15 mins (optional) } ) # create webhook job webhook_job = job_scheduling.JOB.submit_job( { "job_name": "test_job", # set a name for the job "jobpool_name": "test", # set the name of the webhook jobpool where the job should be submitted "target_type": "Webhook", # set the target type as Webhook for webhook jobs "request_method": "POST", # set the webhook request's method "url": "https://catalyst.zoho.com", # set the webhook request's url "params": { "arg1": "test", "arg2": "job", }, # set the webhook request's query params (optional) "headers": { "IS_TEST_REQUEST": "true" }, # set the webhook request's headers (optional) "request_body": "test_request", # set the webhook request's body (optional) "job_config": { "number_of_retries": 2, # set the number of retries "retry_interval": 15 * 60, # set the retry interval }, # set job config - job retries => 2 retries in 15 mins (optional) } ) # create appsail job appsail_job = job_scheduling.JOB.submit_job( { "job_name": "test_job", # set a name for the job "jobpool_name": "test", # set the name of the AppSail jobpool where the job should be submitted "target_type": "AppSail", # set the target type as AppSail for appsail jobs "target_name": "target_appsail", # set the target appsail's name (optional) (either target_id or target_name is mandatory) # 'target_id': '123467890', # set the target appsail's Id (optional) (either target_id or target_name is mandatory) "request_method": "POST", # set the appsail request's method "url": "/test", # set the appsail's url path (optional) "params": { "arg1": "test", "arg2": "job", }, # set the appsail request's query params (optional) "headers": { "IS_TEST_REQUEST": "true" }, # set the appsail request's headers (optional) "request_body": "test_request", # set the appsail request's body (optional) "job_config": { "number_of_retries": 2, # set the number of retries "retry_interval": 15 * 60, # set the retry interval }, # set job config - job retries => 2 retries in 15 mins (optional) } ) -------------------------------------------------------------------------------- title: "Get Job Details" description: "This page describes the Python method to get details of a job in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.416Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/job/get-job-details/) - REST API Collection (/en/api/code-reference/job-scheduling/job/get-job/#GetJobByID) -------------------------------------------------------------------------------- # Get Job Details Using the following SDK method, you will be able to get all available details about a job that has been submitted to a job Pool. You need to pass the Job Id to the get_job() SDK method. job = job_scheduling.JOB.get_job('1234567890') # get job with job Id -------------------------------------------------------------------------------- title: "Delete Job" description: "This page describes the Python method to delete a job in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.417Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/job/delete-job/) - REST API Collection (/en/api/code-reference/job-scheduling/job/delete-job/#DeleteJobbyID) -------------------------------------------------------------------------------- # Delete Job Using the following SDK method, you will be able to delete a job that is in the process of being executed in a job Pool. You need to pass the Job Id to the delete_job() SDK method. job = job_scheduling.JOB.delete_job('1234567890') # delete job with Id ## Pipelines -------------------------------------------------------------------------------- title: "Get Pipeline Instance" description: "This page describes the method to fetch pipeline instance and use it for other pipeline operations." last_updated: "2026-09-29T06:07:16.417Z" 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) - JavaScript SDK (/en/sdk/javascript/v1/pipelines/create-instance/) - REST API (/en/api/code-reference/pipelines/get-pipeline-details) -------------------------------------------------------------------------------- # Catalyst Pipelines Catalyst Pipelines implements a CI/CD approach to enable automation of building, testing, and deployment of web or mobile applications to preferred environments. You can create a pipeline from the Catalyst console.Using the SDKs below, you can retrieve the details of a Catalyst Pipeline and also execute a pipeline by incorporating the code snippets in your application. # Get Pipeline Instance A component instance is an object that can be used to access the properties specific to a particular component. You can create a component instance to perform the below listed actions in Catalyst Pipelines. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new pipelines_service instance as shown below. pipelines_service = app.pipeline() This component instance will be used for all Pipeline operations in the Node.js SDK. -------------------------------------------------------------------------------- title: "Get Pipeline Details" description: "This page describes the method to fetch all the details of an existing Catalyst Pipeline." last_updated: "2026-09-29T06:07:16.417Z" 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) - JavaScript SDK (/en/sdk/javascript/v1/pipelines/create-instance/) - REST API (/en/api/code-reference/pipelines/get-pipeline-details) -------------------------------------------------------------------------------- # Get Pipeline Details You can fetch the details of the Catalyst Pipeline by passing the pipeline ID as a parameter to the get_pipeline_details() method. The name of the pipeline, details of the Catalyst project in which the pipeline has been created, the details of the user who created the pipeline, the time of creation, and if modifications have been done, the details of the user who modified the pipeline, the modified time, the status of the pipeline and other details like runner specifications are returned as response to this method. The pipelines_service reference used below is already defined in this component instance page. pipeline_details = pipelines_service.get_pipeline_details("16965000000027475") A sample response is shown below: { "status": "success", "data": { "pipeline_id": "16965000000027475", "name": "test1", "project_details": { "project_name": "Project-Rainfall", "id": "5000000000072", "project_type": "Live" }, "created_by": { "zuid": "20257791", "is_confirmed": false, "email_id": "amelia.burrows@zylker.com", "first_name": "Amelia", "last_name": "Burrows", "user_type": "Admin", "user_id": "5000000000056" }, "created_time": "Mar 19, 2024 11:28 AM", "modified_by": { "zuid": "20257791", "is_confirmed": false, "email_id": "amelia.burrows@zylker.com", "first_name": "Amelia", "last_name": "Burrows", "user_type": "Admin", "user_id": "5000000000056" }, "modified_time": "Mar 19, 2024 11:28 AM", "git_account_id": "", "mask_regex": [ null ], "pipeline_status": "Active", "config_id": 2, "integ_id": 1 } } -------------------------------------------------------------------------------- title: "Execute Pipeline" description: "This page describes the method to run the Catalyst Pipeline manually." last_updated: "2026-09-29T06:07:16.417Z" 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) - JavaScript SDK (/en/sdk/javascript/v1/pipelines/create-instance/) - REST API (/en/api/code-reference/pipelines/get-pipeline-details) -------------------------------------------------------------------------------- # Execute Pipeline You can initiate a Catalyst pipeline run by passing the pipeline ID and the branch name as parameters to the run_pipeline() method. You can also pass environment variables required for the pipeline execution in a JSON object to this method, and it is completely optional. This method returns the execution history details of the pipeline as the response. The pipelines_service reference used below is already defined in this component instance page. execution_details = pipelines_service.run_pipeline("18014000000023048", "main", {"EVENT": "push","URL":"https://www.google.com"}) A sample response is shown below: { "status": "success", "data": { "history_id": "5000000021007", "pipeline_id": "18014000000023048", "event_time": "Mar 20, 2024 02:02 PM", "event_details": { "BRANCH_NAME": "main", "EVENT": "push", "URL": "https://www.google.com" }, "history_status": "Queued" } } ## QuickML -------------------------------------------------------------------------------- title: "Create QuickML Instance" description: "This page describes the method to execute QuickML endpoints in your Python application with a sample code snippet." last_updated: "2026-09-29T06:07:16.418Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/quickml/execute-quickml-endpoints/" service: "QuickML" related: - QuickML Help (/en/quickml/) - QuickML Pipeline Endpoints (/en/quickml/help/pipeline-endpoints/) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Catalyst QuickML Catalyst QuickML is the no-code machine learning platform designed to build pipelines and train machine learning models with your own data fetched from the various data connectors. Access and integrate these trained models by creating endpoints with necessary authentications and publish them to serve live predictions in production environments. QuickML also provides access to Large Language Models, Vision Language Models, and Retrieval Augmented Generation (RAG) features under Generative AI offerings. You can create endpoints and access each of them through their isolated APIs and effortlessly integrate them with your applications. #### Create QuickML Instance The app reference used in the code below is the [Python object](https://docs.catalyst.zoho.com/en/sdk/python/v1/setup/#initializing-the-sdk) returned as a response during SDK initialization. You will refer to this component instance in various code snippets of working with QuickML. You can create a new instance as shown below: # Create a QuickML instance. quickml = app.quick_ml() -------------------------------------------------------------------------------- title: "Execute Custom ML Endpoint" description: "This page describes the method to execute QuickML endpoints in your Python application with a sample code snippet." last_updated: "2026-09-29T06:07:16.418Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/quickml/execute-custom-ml-endpoint/" service: "QuickML" related: - QuickML Help (/en/quickml/) - QuickML Pipeline Endpoints (/en/quickml/help/pipeline-endpoints/) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- The code snippet given below allows you to pass input data to a published [QuickML endpoint](https://docs.catalyst.zoho.com/en/quickml/help/pipeline-endpoints/) , and get the inferences from the ML model . The output returns the prediction of the values of the target column that is defined while creating the ML pipeline. Note: 1. You will need to have the ML pipeline and the model's endpoint configured and published in your project using the Catalyst console, before you execute this code to predict the outcome with the code snippet below. 2. QuickML is currently available to Catalyst users accessing from the US, IN, EU, JP, SA, or CA data centers. The _quickml component instance_ is created as shown, 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 dictionary keys must match the features from your trained dataset that is expected by the model. The endpoint_key mentioned 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 `run_inference` ( endpoint_key, input_data) method for execution. The app reference used in the code below is the python object returned as a response during SDK initialization. **Sample Code Snippet** # Create a QuickML instance. quickml = app.quick_ml() # Run Inference # Replace with your endpoint key copied from the Catalyst console. endpoint_key = "<ENDPOINT_KEY>" # Replace the sample feature names and values with the input expected by your model. input_data = { "<FEATURE_1>": "<VALUE_1>", "<FEATURE_2>": "<VALUE_2>" } response = quickml.run_inference (endpoint_key, input_data) print(response) **The syntax of the model response received is shown below:** { "status": "success", "result": [ { "prediction": "1", "confidence": 0.87 } ] } **Parameters Used** <table style="width:100%; border: 1px solid #ccc; border-collapse: collapse; font: 15px/24px zoho-puvi-regular;"> <thead> <tr style="background-color: #f2f2f2;"> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Parameter Name</th> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Definition</th> </tr> </thead> <tbody> <tr> <td style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">endpoint_key</td> <td style="border: 1px solid #ccc; padding: 10px;">A mandatory parameter. Will store the unique ID of the endpoint published for the ML model.</td> </tr> <tr> <td style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">input_data</td> <td style="border: 1px solid #ccc; padding: 10px;">A mandatory parameter. Will pass the required data input to the endpoint.</td> </tr> </tbody> </table> <br/> Note: The predict(endpoint_key, input_data) method continues to be supported for existing implementations and performs the same operation as run_inference(endpoint_key, input_data_) . We recommend using run_inference() in new implementations for consistency with the other QuickML SDK methods. **Where to find the endpoint information?** Create an endpoint for your trained ML model and access the endpoint details page to view the Endpoint URL, required headers and a sample request response. Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. --- -------------------------------------------------------------------------------- title: "Execute LLM Endpoint" description: "This page describes the method to execute QuickML endpoints in your Python application with a sample code snippet." last_updated: "2026-09-29T06:07:16.418Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/quickml/execute-llm-endpoint/" service: "QuickML" related: - QuickML Help (/en/quickml/) - QuickML Pipeline Endpoints (/en/quickml/help/pipeline-endpoints/) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- **LLM Serving** QuickML now provides Generative AI services by hosting Large Language Models and Vision Language Models (VLM) under Generative AI section in the console. LLM Serving is equipped with Chat instance with a set of parameters for each model to provide additional control over its responses. LLM serving is equipped with two interaction modes with language models. The only difference between these two is keeping the context of prior messages while responding to the query. Let's take a quick look at the explanation. * **Single-shot mode** : Each prompt request to the model is treated independently while generating the response, with no memory of previous turns. * **Conversation mode** : Maintains context throughout the session. Prior turns are passed as context, allowing multi-turn conversations. **Execute LLM Endpoint** With Catalyst QuickML, you can tune the responses of available large language models according to your needs and access them from your application using authenticated endpoints. An LLM Endpoint is created from a saved parameter configuration, so the model used, tools, Instructions, system prompt, and generation parameters you tested in the console are exactly what your application calls. Note: 1. You will need to have the LLM endpoint created and published in your project using the Catalyst console, before you execute the code snippets below. 2. The model and its parameters are fixed at the time of endpoint creation and cannot be overridden through the SDK. 3. QuickML is currently available to Catalyst users accessing from the US, IN, & EU data centers. The SDK method you call depends on the interaction mode the endpoint was configured with: <table style="width:100%; border: 1px solid #ccc; border-collapse: collapse; font: 15px/24px zoho-puvi-regular;"> <thead> <tr style="background-color: #f2f2f2;"> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Interaction mode</th> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">SDK method</th> </tr> </thead> <tbody> <tr> <td style="border: 1px solid #ccc; padding: 10px;">Conversation mode OFF ( Single shot mode)</td> <td style="border: 1px solid #ccc; padding: 10px;">ask_llm( endpoint_key, prompt )</td> </tr> <tr> <td style="border: 1px solid #ccc; padding: 10px;">Conversation mode ON</td> <td style="border: 1px solid #ccc; padding: 10px;">converse_with_llm( endpoint_key, prompt, conversation_id )</td> </tr> </tbody> </table> ### a. Generatean LLM response Single-shot mode of interaction with language model requires the input prompt along with the valid endpoint key. The endpoint key will be generated at the time of endpoint creation. The `ask_llm(endpoint_key, prompt)` method sends a single prompt to the published LLM serving endpoint and returns the generated response. Each call is processed independently; no conversation context is retained between requests. **Parameters Used** <table style="width:100%; border: 1px solid #ccc; border-collapse: collapse; font: 15px/24px zoho-puvi-regular;"> <thead> <tr style="background-color: #f2f2f2;"> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Parameter</th> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Description</th> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Values</th> </tr> </thead> <tbody> <tr> <td style="border: 1px solid #ccc; padding: 10px;">endpoint_key</td> <td style="border: 1px solid #ccc; padding: 10px;">The unique ID of the LLM endpoint published in your project</td> <td style="border: 1px solid #ccc; padding: 10px;">String</td> </tr> <tr> <td style="border: 1px solid #ccc; padding: 10px;">prompt</td> <td style="border: 1px solid #ccc; padding: 10px;">The message sent to the model</td> <td style="border: 1px solid #ccc; padding: 10px;">String</td> </tr> </tbody> </table> **Sample Code Snippet** # Create a QuickML instance. quickml = app.quick_ml() # Ask LLM # Replace with your endpoint key copied from the Catalyst console. endpoint_key = "<ENDPOINT_KEY>" # Enter the prompt you want to send to the LLM. prompt = "<YOUR_PROMPT>" response = quickml.ask_llm (endpoint_key, prompt) print(response) The syntax of the model response received is shown below: { "status": "success", "result": [ { "content": "The generated response text from the model.", "finish_reason": "stop", "usage": { "input_tokens": 42, "output_tokens": 128, "total_tokens": 170 } } ] } Use this method for single-shot interaction tasks such as summarization, classification, content generation, or extraction. Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ### b. Converse with an LLM The conversation mode of interaction with language model required the input prompt with the valid endpoint_key and a conversation_id. The endpoint key will be generated at the time of endpoint creation. The `converse_with_llm(endpoint_key, prompt, conversation_id)` method sends a prompt to a published LLM endpoint while retaining the context of the previous interactions in the same conversation. **Parameters used** <table style="width:100%; border: 1px solid #ccc; border-collapse: collapse; font: 15px/24px zoho-puvi-regular;"> <thead> <tr style="background-color: #f2f2f2;"> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Parameter</th> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Description</th> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Values</th> </tr> </thead> <tbody> <tr> <td style="border: 1px solid #ccc; padding: 10px;">endpoint_key</td> <td style="border: 1px solid #ccc; padding: 10px;"><b>Mandatory</b> parameter. The unique ID of the LLM endpoint published in your project</td> <td style="border: 1px solid #ccc; padding: 10px;">String</td> </tr> <tr> <td style="border: 1px solid #ccc; padding: 10px;">prompt</td> <td style="border: 1px solid #ccc; padding: 10px;"><b>Mandatory</b> parameter. The message sent to the model</td> <td style="border: 1px solid #ccc; padding: 10px;">String</td> </tr> <tr> <td style="border: 1px solid #ccc; padding: 10px;">conversation_id</td> <td style="border: 1px solid #ccc; padding: 10px;"><b>Optional</b> parameter. Identifies the conversation thread the message belongs to.</td> <td style="border: 1px solid #ccc; padding: 10px;">String</td> </tr> </tbody> </table> <br> Note: In the first request, you can either ignore or pass "-1" as the value of conversation_id. The response automatically generates and returns a unique conversation ID along with the response, which you must pass in each subsequent requests to continue the same thread. **Sample Code Snippet** # Create a QuickML instance. quickml = app.quick_ml() # Converse with LLM # Replace with your endpoint key copied from the Catalyst console. endpoint_key = "<ENDPOINT_KEY>" # Enter your prompt. prompt = "<YOUR_PROMPT>" # For the first request, use "-1". # For subsequent requests, use the conversation ID returned in the previous response. conversation_id = "<CONVERSATION_ID>" response = quickml.converse_with_llm ( endpoint_key, prompt, conversation_id ) print(response) The syntax of the model response received is shown below: { "status": "success", "result": [ { "conversation_id": "55663000000288001 ", "content": "The generated response text from the model.", "finish_reason": "stop", "usage": { "input_tokens": 310, "output_tokens": 96, "total_tokens": 406 } } ] } Use this method to build chat experiences where the model must remember what was discussed earlier. **Where to find the endpoint information** Create an endpoint for your Saved LLM configuration and access the endpoint details page to view the Endpoint URL, required headers and a sample request response. Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Execute Vision Model Endpoint" description: "This page describes the method to execute QuickML endpoints in your Python application with a sample code snippet." last_updated: "2026-09-29T06:07:16.418Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/quickml/execute-vision-model-endpoint/" service: "QuickML" related: - QuickML Help (/en/quickml/) - QuickML Pipeline Endpoints (/en/quickml/help/pipeline-endpoints/) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- **Vision Language Model** QuickML hosts Vision Language Models in the LLM Serving module under the Generative AI section in the console. VLMs are multimodal models that accept a file object along with a text prompt and return a natural language response. The model interprets the image according to the text prompt instruction and generates an appropriate response. Interaction with Vision Language Model works similar to single shot interaction mode with LLM. Each request must carry its own file and prompt and is processed independently, with no memory of previous requests. To analyze the same image again with a different instruction, send a new request. **Execute Vision Model Endpoint** VLM is served with its own set of parameters, giving you control over the response before publishing it. You can test a model with sample images and prompts in the test interface, save the configuration, and create an endpoint from it to integrate with your application. A Vision Model endpoint is created from a saved parameter configuration, so the model, system prompt, instructions, and generation parameters you tested in the console are exactly what your application calls. The endpoint must be created from a configuration that uses a Vision Language Model, text-only LLM endpoints do not accept image input. Open the image in binary read mode and pass the file object to the method Note: 1. You will need to have the Vision Language Model endpoint created and published in your project using the Catalyst console, before you execute the code snippet below. 2. QuickML is currently available to Catalyst users accessing from the US, IN, and EU data centers. ### a. Analyze an Image The `analyze_image(endpoint_key, image, prompt)` method requires the input prompt along with a file object and the endpoint_key. The endpoint key will be generated at the time of endpoint creation. It sends an image and an accompanying prompt to a published Vision Language Model endpoint and returns the model's response. The model executes the prompt as described in the file attached. **Parameters used** <table style="width:100%; border: 1px solid #ccc; border-collapse: collapse; font: 15px/24px zoho-puvi-regular;"> <thead> <tr style="background-color: #f2f2f2;"> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Parameter</th> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Description</th> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Values</th> </tr> </thead> <tbody> <tr> <td style="border: 1px solid #ccc; padding: 10px;">endpoint_key</td> <td style="border: 1px solid #ccc; padding: 10px;">The unique ID of the VLM endpoint published in your project</td> <td style="border: 1px solid #ccc; padding: 10px;">String</td> </tr> <tr> <td style="border: 1px solid #ccc; padding: 10px;">image</td> <td style="border: 1px solid #ccc; padding: 10px;">The image file object to be analy z ed</td> <td style="border: 1px solid #ccc; padding: 10px;">File object</td> </tr> <tr> <td style="border: 1px solid #ccc; padding: 10px;">prompt</td> <td style="border: 1px solid #ccc; padding: 10px;">The task the model must perform on the image</td> <td style="border: 1px solid #ccc; padding: 10px;">String</td> </tr> </tbody> </table> **Allowed file formats:** jpg, .jpeg, .png, **File Size Limit:** 500KB **Sample Code Snippet** # Create a QuickML instance. quickml = app.quick_ml() # Analyze Image # Replace with your endpoint key copied from the Catalyst console. endpoint_key = "<ENDPOINT_KEY>" # Replace with the path to your image. image_path = "<IMAGE_PATH>" with open(image_path, "rb") as image: # Enter the prompt describing the task to perform on the image. prompt = "<YOUR_PROMPT>" response = quickml.analyze_image ( endpoint_key, image, prompt ) print(response) The syntax of the response received is shown below: { "status": "success", "result": [ { "content": "A description of the image, as instructed by the prompt.", "finish_reason": "stop", "usage": { "input_tokens": 1064, "output_tokens": 74, "total_tokens": 1138 } } ] } Use Vision Language Model for tasks such as image description, document and receipt understanding, chart interpretation, and visual question answering, etc. **Where to find the endpoint information** Create an endpoint for your Saved VLM configuration and access the endpoint details page to view the Endpoint URL, required headers and a sample request response. Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Execute RAG Endpoint" description: "This page describes the method to execute QuickML endpoints in your Python application with a sample code snippet." last_updated: "2026-09-29T06:07:16.418Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/quickml/execute-rag-endpoint/" service: "QuickML" related: - QuickML Help (/en/quickml/) - QuickML Pipeline Endpoints (/en/quickml/help/pipeline-endpoints/) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- **RAG** Retrieval-Augmented Generation (RAG) combines a large language model with your organization's own knowledge base to deliver accurate, context-aware responses grounded in the organization specific documents. Catalyst QuickML is equipped with RAG system under Generative AI services, to deliver responses grounded in the organization's own documents with ground truth citations of the documents for traceability. Multiple RAG modes have been introduced each designed for a different use case. Every mode exposes its own dedicated parameters, giving you absolute control over how the RAG system generates responses. Let's take a quick look at the RAG modes: * Response Generation : Response Generation is the standard RAG mode where model generates response grounded with relevant chunks of information from the documents * Agentic RAG : An agent layer on top of RAG that can reason over complex queries, decompose them into sub-queries, and handle conversational interactions * Document Search : It is retrieval-only task, doesn't generate a response but returns the most relevant chunks of content from the documents. **Execute RAG Endpoint** Create a RAG endpoint from a saved RAG configuration. The RAG mode, selected large language model, respective parameters, and document store are captured from the saved configuration at the time of endpoint creation. It cannot be overridden through the SDK. The SDK method you call depends on the RAG mode the endpoint was configured with: <table style="width:100%; border: 1px solid #ccc; border-collapse: collapse; font: 15px/24px zoho-puvi-regular;"> <thead> <tr style="background-color: #f2f2f2;"> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">RAG mode</th> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">SDK method</th> </tr> </thead> <tbody> <tr><td style="border: 1px solid #ccc; padding: 10px;">Response Generation</td><td style="border: 1px solid #ccc; padding: 10px;">generate_rag_response(endpoint_key, prompt)</td></tr> <tr><td style="border: 1px solid #ccc; padding: 10px;">Document Search</td><td style="border: 1px solid #ccc; padding: 10px;">search_documents(endpoint_key, query)</td></tr> <tr><td style="border: 1px solid #ccc; padding: 10px;">Agentic RAG (without history)</td><td style="border: 1px solid #ccc; padding: 10px;">ask_rag_agent(endpoint_key, prompt)</td></tr> <tr><td style="border: 1px solid #ccc; padding: 10px;">Agentic RAG (with history)</td><td style="border: 1px solid #ccc; padding: 10px;">converse_with_rag_agent(endpoint_key, prompt, conversation_id)</td></tr> </tbody> </table> <br> Note: 1. You will need to have the RAG endpoint created and published in your project using the Catalyst console, before you execute the code snippets below. 2. QuickML is currently available to Catalyst users accessing from the US, IN, and EU data centers ### a. Generate a RAG Response The `generate_rag_response(endpoint_key, prompt)` method sends a question to a published RAG endpoint. The service retrieves the most relevant content from the endpoint's document store and returns a summarised response grounded in that content. **Parameters used** <table style="width:100%; border: 1px solid #ccc; border-collapse: collapse; font: 15px/24px zoho-puvi-regular;"> <thead> <tr style="background-color: #f2f2f2;"> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Parameter</th> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Description</th> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Values</th> </tr> </thead> <tbody> <tr><td style="border: 1px solid #ccc; padding: 10px;">endpoint_key</td><td style="border: 1px solid #ccc; padding: 10px;">The unique ID of the RAG endpoint published in your project</td><td style="border: 1px solid #ccc; padding: 10px;">String</td></tr> <tr><td style="border: 1px solid #ccc; padding: 10px;">prompt</td><td style="border: 1px solid #ccc; padding: 10px;">The query which is sent to the model.</td><td style="border: 1px solid #ccc; padding: 10px;">String</td></tr> </tbody> </table> **Sample Code Snippet** # Create a QuickML instance. quickml = app.quick_ml() # Generate RAG Response # Replace with your endpoint key copied from the Catalyst console. endpoint_key = "<ENDPOINT_KEY>" # Enter your question. prompt = "<YOUR_PROMPT>" response = quickml.generate_rag_response ( endpoint_key, prompt ) print(response) The syntax of the response received is shown below: { "status": "success", "result": [ { "content": "The answer, grounded in the retrieved documents.", "citations": [ { "document_name": "employee_handbook_2026.pdf", "document_id": "doc_10294", "chunk_id": "chunk_58", "page_number": 14, "text": "The excerpt of source text the answer was grounded in.", "score": 0.91 } ], "usage": { "input_tokens": 1420, "output_tokens": 112, "total_tokens": 1532 } } ] } Use this method for document-based question answering, summarization, and support assistants ### b. Search Documents The `search_documents(endpoint_key, query)` method performs retrieval only. It returns the chunks of content from the document store that most closely match the query, without generating a response. **Parameters used** <table style="width:100%; border: 1px solid #ccc; border-collapse: collapse; font: 15px/24px zoho-puvi-regular;"> <thead> <tr style="background-color: #f2f2f2;"> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Parameter</th> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Description</th> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Values</th> </tr> </thead> <tbody> <tr><td style="border: 1px solid #ccc; padding: 10px;">endpoint_key</td><td style="border: 1px solid #ccc; padding: 10px;">The unique ID of the RAG endpoint published in your project</td><td style="border: 1px solid #ccc; padding: 10px;">String</td></tr> <tr><td style="border: 1px solid #ccc; padding: 10px;">query</td><td style="border: 1px solid #ccc; padding: 10px;">The search query is sent to the document store.</td><td style="border: 1px solid #ccc; padding: 10px;">String</td></tr> </tbody> </table> **Sample Code Snippet** # Create a QuickML instance. quickml = app.quick_ml() # Search Documents # Replace with your endpoint key copied from the Catalyst console. endpoint_key = "<ENDPOINT_KEY>" # Enter your search query. query = "<SEARCH_QUERY>" response = quickml.search_documents ( endpoint_key, query ) print(response) The syntax of the response received is shown below: { "status": "success", "result": [ { "chunk_id": "chunk_58", "document_name": "employee_handbook_2026.pdf", "document_id": "doc_10294", "page_number": 14, "text": "The retrieved chunk of content that matched the query.", "score": 0.91 }, { "chunk_id": "chunk_59", "document_name": "employee_handbook_2026.pdf", "document_id": "doc_10294", "page_number": 15, "text": "The next most relevant chunk of content.", "score": 0.84 } ] } Use this method when your application needs the raw retrieved passages for downstream processing, ranking, or custom rendering ### c. Ask a RAG Agent The `ask_rag_agent(endpoint_key, prompt)` method sends a single message to an Agentic RAG endpoint. The agent can decompose complex queries into sub-queries, refine them, and perform multi-step reasoning over the document store before returning a response. Note : Each call is independent. No conversation context is retained. **Parameters used** <table style="width:100%; border: 1px solid #ccc; border-collapse: collapse; font: 15px/24px zoho-puvi-regular;"> <thead> <tr style="background-color: #f2f2f2;"> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Parameter</th> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Description</th> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Values</th> </tr> </thead> <tbody> <tr><td style="border: 1px solid #ccc; padding: 10px;">endpoint_key</td><td style="border: 1px solid #ccc; padding: 10px;">The unique ID of the RAG endpoint published in your project</td><td style="border: 1px solid #ccc; padding: 10px;">String</td></tr> <tr><td style="border: 1px solid #ccc; padding: 10px;">prompt</td><td style="border: 1px solid #ccc; padding: 10px;">The query which is sent to the model</td><td style="border: 1px solid #ccc; padding: 10px;">String</td></tr> </tbody> </table> **Sample Code Snippet** # Create a QuickML instance. quickml = app.quick_ml() # Ask RAG Agent # Replace with your endpoint key copied from the Catalyst console. endpoint_key = "<ENDPOINT_KEY>" # Enter your prompt. prompt = "<YOUR_PROMPT>" response = quickml.ask_rag_agent ( endpoint_key, prompt ) print(response) The syntax of the response received is shown below: { "status": "success", "result": [ { "content": "The agent's answer after reasoning over the document store.", "sub_queries": [ "First decomposed sub-query the agent generated.", "Second decomposed sub-query the agent generated." ], "citations": [ { "document_name": "policy_v3.pdf", "document_id": "doc_10877", "chunk_id": "chunk_12", "page_number": 3, "text": "The excerpt of source text the answer was grounded in.", "score": 0.88 } ], "usage": { "input_tokens": 3180, "output_tokens": 204, "total_tokens": 3384 } } ] } ### d. Converse with a RAG Agent The `converse_with_rag_agent(endpoint_key, prompt, conversation_id)` method sends a message to an Agentic RAG endpoint while retaining the context of previous turns. Use this method to build multi-turn assistants that answer follow-up questions from the same document store. **Parameters used** <table style="width:100%; border: 1px solid #ccc; border-collapse: collapse; font: 15px/24px zoho-puvi-regular;"> <thead> <tr style="background-color: #f2f2f2;"> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Parameter</th> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Description</th> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Values</th> </tr> </thead> <tbody> <tr><td style="border: 1px solid #ccc; padding: 10px;">endpoint_key</td><td style="border: 1px solid #ccc; padding: 10px;">The unique ID of the RAG endpoint published in your project</td><td style="border: 1px solid #ccc; padding: 10px;">String</td></tr> <tr><td style="border: 1px solid #ccc; padding: 10px;">prompt</td><td style="border: 1px solid #ccc; padding: 10px;">The query which is sent to the model</td><td style="border: 1px solid #ccc; padding: 10px;">String</td></tr> <tr><td style="border: 1px solid #ccc; padding: 10px;">conversation_id</td><td style="border: 1px solid #ccc; padding: 10px;">Identifies the conversation thread the message belongs to</td><td style="border: 1px solid #ccc; padding: 10px;">String</td></tr> </tbody> </table> <br> Note: In the first request, you can either ignore or pass "-1" as the value of conversation_id. The response automatically generates and returns a unique conversation ID along with the response, which you must pass in each subsequent requests to continue the same thread . **Sample Code Snippet** # Create a QuickML instance. quickml = app.quick_ml() # Converse with RAG Agent # Replace with your endpoint key copied from the Catalyst console. endpoint_key = "<ENDPOINT_KEY>" # Enter your prompt. prompt = "<YOUR_PROMPT>" # For the first request, use "-1". # For subsequent requests, use the conversation ID returned in the previous response. conversation_id = "<CONVERSATION_ID>" response = quickml.converse_with_rag_agent ( endpoint_key, prompt, conversation_id ) print(response) The syntax of the response received is shown below: { "status": "success", "result": [ { "conversation_id": "55663000000288001 ", "content": "The agent's answer, informed by earlier turns in this conversation.", "citations": [ { "document_name": "policy_v3.pdf", "document_id": "doc_10877", "chunk_id": "chunk_12", "page_number": 3, "text": "The excerpt of source text the answer was grounded in.", "score": 0.88 } ], "usage": { "input_tokens": 3612, "output_tokens": 188, "total_tokens": 3800 } } ] } **Where to find the endpoint information** Create an endpoint for your Saved RAG configuration and access the endpoint details page to view the Endpoint URL, required headers and a sample request response. Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ## Serverless ### AppSail -------------------------------------------------------------------------------- title: "Implement SDK in AppSail" description: "This page describes the method to implement Python SDK in an AppSail service for Catalyst-managed runtimes and avail Catalyst features within the application." last_updated: "2026-09-29T06:07:16.419Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/serverless/appsail/implement-sdk-in-appsail/" service: "Serverless" related: - AppSail Help (/en/serverless/help/appsail/introduction) -------------------------------------------------------------------------------- # Catalyst AppSail Catalyst AppSail is a fully-managed, independent platform for deploying web services to the cloud with ease. You can either deploy your application directly as a Catalyst-managed runtime that supports specific runtimes of Java, Node.js, and Python, or an OCI-compliant container image of your application as a custom-runtime. Catalyst enables you to implement Python SDK in your AppSail applications for Catalyst-managed runtimes. AppSail supports frameworks of Python such as Flask, Django, Bottle, CherryPy, etc. You can access help guides for building sample apps in Python. ## Implement Python SDK in AppSail You can implement the Catalyst Python SDK in the codebase of your AppSail service with ease. The SDK will need to be initialized with the request object before each request. Given below is an example of importing and initializing the Python SDK in a Flask web app. from flask import Flask, request, g import os import zcatalyst_sdk from zcatalyst_sdk.catalyst_app import CatalystApp app = Flask(__name__) @app.before_request def before_request(): if request.path.startswith('/admin'): return 'Unauthorized', 401 # if authorized user g.zc_app = zcatalyst_sdk.initialize(req=request) @app.route('/') def index(): return 'Web App with Python Flask!' @app.route('/cache') def cache(): app: CatalystApp = g.zc_app resp = app.cache().segment().put('key', 'value') return resp, 200 listen_port = os.getenv('X_ZOHO_CATALYST_LISTEN_PORT', 9000) app.run(host='0.0.0.0', port = listen_port) Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ### Circuits -------------------------------------------------------------------------------- title: "Get Component Instance" description: "This page describes the method to make use of circuits to organize and orchestrate tasks in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.419Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/serverless/circuits/get-a-component-instance/" service: "Serverless" related: - Circuits Help (/en/serverless/help/circuits/introduction) -------------------------------------------------------------------------------- # Circuits Catalyst Serverless Circuits is a component that is a part of the Catalyst development platform that helps to orchestrate tasks and automate workflows. You can enable concurrent or sequential executions of Catalyst functions in a circuit, and additionally include conditions, data, and paths in the workflow, to define a repeatable pattern of activities that achieves a business outcome. This section covers the various SDK methods that can be used to implement the circuits component in your Catalyst application. Note: Circuits is currently not available to Catalyst users accessing from the EU, AU, IN, JP, SA or CA data centers. #### Get a component instance A component instance is an object that can be used to access the pre-defined configurations specific to a particular component. This process will not fire a server-side call. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new circuitinstance as shown below. Also note that this component instance will be used in multiple scenarios while implementing the circuit component in your application. #Get a circuit component instance circuit = app.circuit() -------------------------------------------------------------------------------- title: "Execute Circuit" description: "This page describes the method to make use of circuits to organize and orchestrate tasks in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.419Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/serverless/circuits/execute-circuit/" service: "Serverless" related: - Execute Circuit - API (/en/api/code-reference/serverless/circuits/execute-circuit/#ExecuteCircuit) - Circuits Help (/en/serverless/help/circuits/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- ### Execute a Circuit The sample code below illustrates executing a circuit by referring to its unique circuit ID and passing key-value pairs as the input to the circuit in the form of a dictionary. To know more about the component instance circuit_service used below, please refer to this help section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>circuit ID</td> <td>Numeric</td> <td>A Mandatory parameter. Will store the unique ID the circuit to be executed.</td> </tr> <tr> <td>circuit input</td> <td>Object</td> <td>A Mandatory parameter. Will store the dictionary that contains the input to the cricut.</td> </tr> </tbody> </table> #Execute a circuit circuit = app.circuit() result = circuit.execute(5249000000108030, name="Test_Circuit") A sample response is shown below : { "id":"5249000000108030", "name":"Test_Circuit", "start_time":"Aug 18, 2021 07:35 PM", "status":"running", "status_code":1, "execution_meta":{ }, "circuit_details":{ "name":"Test_Circuit", "ref_name":"testcircuit", "description":"", "instance_id":"70454fc5-3bf6-45af-81ca-2742cc049698" }, "input":{ "name":"Aaron Jones" } } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ### Functions -------------------------------------------------------------------------------- title: "Get Component Instance" description: "This page describes the method to execute functions in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.420Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/serverless/functions/get-component-instance/" service: "Serverless" related: - Functions Help (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Functions Catalyst Serverless Functions are custom-built coding structures that contain the business logic of your Catalyst application. They can be created either using the Catalyst console or the CLI. This section covers the various SDK methods that can be used to implement functions in your Catalyst application. #### Get a Component Instance A component instance is an object that can be used to access the pre-defined configurations specific to a particular component. This process will not fire a server-side call. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new function_serviceinstance as shown below. This component instance will be used in the next section while executing the function. #Get function component instance function_service = app.functions() -------------------------------------------------------------------------------- title: "Execute Function" description: "This page describes the method to execute functions in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.420Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/serverless/functions/execute-function/" service: "Serverless" related: - Execute Function - API (/en/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) - Functions Help (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Execute the function A function can be executed by calling the execute() method in which the function ID and the configuration (of type dictionary) are passed as parameters. To know more about the component instance function_service used below, please refer to this help section. Before executing a function, you must set the configuration required for it. Here, the configuration specifies the function arguments and their values. The unique functionID is passed as a parameter to the execute() method to call the function to be executed with the necessary configuration. The configuration can be set using the following code snippet : **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>function_ID</td> <td>Numeric</td> <td>A Mandatory parameter. Will store the unique ID the function to be executed.</td> </tr> <tr> <td>function_config</td> <td>Object</td> <td>A Mandatory parameter. Will store the configuration of the function to be executed.</td> </tr> </tbody> </table> function_service = app.functions() args = {"Name": "Amelia"} return_value = function_service.execute(5249000000015567, args) Info : 1. Refer to the SDK Scopes table to determine the required permission level for performing the above operation. 2. You can also pass the function name as a string to the execute() method instead of using the function ID. ## SmartBrowz -------------------------------------------------------------------------------- title: "Create SmartBrowz Instance" description: "This page describes the method to create a SmartBrowz instance" last_updated: "2026-09-29T06:07:16.420Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/smartbrowz/create-smartbrowz-instance/" service: "SmartBrowz" related: - SmartBrowz Help (/en/smartbrowz/getting-started/introduction/) -------------------------------------------------------------------------------- # Catalyst SmartBrowz Catalyst SmartBrowz components allows you to control, manage a headless browser and perform a variety of operations such as generating PDFs and screenshots of webpages, creating templates to generate PDFs with dynamic content, extracting data from the web using powerful Catalyst APIs and more. ### Create SmartBrowz Instance A component instance is an object that can be used to access the properties specific to a particular component. You can create a component instance to execute any headless actions in SmartBrowz. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new smart_browzinstance as shown below. smart_browz = app.smart_browz() This component instance will be used for all SmartBrowz operations in Python SDK. Note: Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of Catalyst SmartBrowz is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone. -------------------------------------------------------------------------------- title: "PDF & Screenshot" description: "This page describes the method to generate PDF and Screenshot" last_updated: "2026-09-29T06:07:16.420Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/smartbrowz/generate-pdfnscreenshot/" service: "SmartBrowz" related: - PDF & Screenshot - API (/en/api/code-reference/smartbrowz/generate-pdfnscreenshoturl/#PDF%26ScreenshotwithHTML%2fURLasInput) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # PDF & Screenshot Catalyst SmartBrowz offers you the PDF & Screenshot component to generate your prefered visual docuemnts through code. You can incorporate this functionality in your application by copying the code below and pasting it in your application logic. Using the SDK below, you can generate visual documents by using HTML, URL or Templates as your input. To know more about the component instance smart_browz used below, please refer to this help section. # Generate PDF or Screenshot from template smart_browz = app.smart_browz() result = smart_browz.generate_from_template( "153000000009001", # Replace template id template_data={}, output_options={"output_type": "pdf"}, pdf_options={ "scale": 1, "display_header_footer": true, "print_background": false, "landscape": false, "page_ranges": "1", "format": "A4", "width": "100", "height": "100", "omit_background": false, "password": "Demo$", }, page_options={ "css": {"content": "body{background: lightgrey}"}, "viewport": {"width": 1440, "height": 900}, "javascript_enabled": true, }, navigation_options={"timeout": 5000, "wait_until": "networkidle0"}, ) # Convert to PDF from HTML smart_browz = app.smart_browz() result = smart_browz.convert_to_pdf( "<h1>Welcome</h1>", pdf_options={ "scale": 1, "display_header_footer": true, "print_background": false, "landscape": false, "page_ranges": "1", "format": "A4", "width": "100", "height": "100", "omit_background": false, "password": "Demo$", }, page_options={ "css": {"content": "body{background: lightgrey}"}, "viewport": {"width": 1440, "height": 900}, "javascript_enabled": true, }, navigation_options={"timeout": 5000, "wait_until": "networkidle0"}, ) # Generate PDF from URL smart_browz = app.smart_browz() result = smart_browz.convert_to_pdf( "https://catalyst.zoho.com/", pdf_options={ "scale": 1, "display_header_footer": true, "print_background": false, "landscape": false, "page_ranges": "1", "format": "A4", "width": "100", "height": "100", "omit_background": false, "password": "Demo$", }, page_options={ "css": {"content": "body{background: lightgrey}"}, "viewport": {"width": 1440, "height": 900}, "javascript_enabled": true, }, navigation_options={"timeout": 5000, "wait_until": "networkidle0"}, ) # Take a screenshot from HTML smart_browz = app.smart_browz() output_screenshot = smart_browz.take_screenshot( source='<h1>Welcome</h1>', "output_options": { "output_type": "screenshot" }, screenshot_options= { "type": "jpeg", "quality": 100, "full_page": false, "omit_background": false, "capture_beyond_viewport": true, "clip": { "x": 50, "y": 100, "width": 1000, "height": 100 } }, page_options= { "css": { "content": "body{background: lightgrey}" }, "viewport": { "width": 1440, "height": 900 "viewport": { "width": 1440, "height": 900 }, "javascript_enabled": true "javascript_enabled": true }, navigation_options= { "timeout": 5000, "wait_until": "networkidle0" "navigation_options": { "timeout": 5000, "wait_until": "networkidle0" } } }) # Take a screenshot from URL smart_browz = app.smart_browz() output_screenshot = smart_browz.take_screenshot( source='YOUR_URL', "output_options": { "output_type": "screenshot" }, screenshot_options= { "type": "jpeg", "quality": 100, "full_page": false, "omit_background": false, "capture_beyond_viewport": true, "clip": { "x": 50, "y": 100, "width": 1000, "height": 100 } }, page_options= { "css": { "content": "body{background: lightgrey}" }, "viewport": { "width": 1440, "height": 900 "viewport": { "width": 1440, "height": 900 }, "javascript_enabled": true "javascript_enabled": true }, navigation_options= { "timeout": 5000, "wait_until": "networkidle0" "navigation_options": { "timeout": 5000, "wait_until": "networkidle0" } } }) In the PDF & Screenshot section of the console, you can directly test this component using the Playground feature, and you can also copy the SDK directly from the console. Note: Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of Catalyst SmartBrowz is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone. Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Dataverse" description: "This page describes the SDK methods for Catalyst Dataverse modules." last_updated: "2026-09-29T06:07:16.421Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/smartbrowz/dataverse/" service: "SmartBrowz" related: - Dataverse Help (/en/smartbrowz/help/dataverse/introduction/) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Dataverse Dataverse is a Catalyst SmartBrowz component that performs data extraction from the web through scraping. The three categories of data extraction functionalities offered by Dataverse are explained below. Note: We can only assure to provide you with publicly available information available over the web. 1. **Lead Enrichment** The Lead Enrichment module allows you to fetch details of a specific organization from the web. You will need to provide the organization's name, its email address, or its website URL as the parameters to the get_enriched_lead() method, in order to retrieve the information. Note: You must provide the value for at least one key in the get_enriched_lead() method. The smart_browz reference used here is the component instance that we created earlier. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>lead_details</td> <td>Array</td> <td>A Mandatory parameter. Will store the details of the lead to be collected from the web.</td> </tr> </tbody> </table> smart_browz = app.smart_browz() response = smart_browz.get_enriched_lead( { "email": "sales@zohocorp.com", "lead_name": "zoho", "website_url": "https://www.zoho.com", } ) print(response) The response is shown below: [ { "employee_count":"12000", "website":"https://www.zoho.com", "address":[ { "country":"India", "pincode":"603202", "city":"Chengalpattu District", "street":"Estancia It Park, Plot No. 140 151, Gst Road Vallancheri", "state":"Tamil Nadu", "id":"Estancia IT Park, Plot no. 140, 151, GST Road, Vallancheri, Chennai." } ], "social":{ "twitter":[ "twitter.com/zoho" ] }, "source_language":"en", "description":"Zoho Corporation offers web-based business applications.", "organization_name":"ZOHO", "ceo":"Sridhar Vembu", "headquarters":[ { "country":"India" } ], "revenue":"$1B", "years_in_industry":"27", "about_us":"https://www.zoho.com/aboutus.html?ireft=nhome&src=home1", "founding_year":"1996", "contact":[ "844-316-5544", "0800-085-6099" ], "industries":{ "computer programming services":"Includes data processing services and other computer related services." }, "logo":"https://www.zohowebstatic.com/sites/zweb/images/ogimage/zoho-logo.png", "organization_type":[ "Private Limited Company" ], "business_model":[ "B2B" ], "email":[ "sales@zohocorp.com", "press@zohocorp.com" ], "organization_status":"LARGE_ENTERPRISE", "territory":[ "India", "United States of America" ], "sign_up_link":"https://www.zoho.com/signup.html?all_prod_page=true" } ] 2. **Tech Stack Finder:** The TechStack Finder module allows you to fetch details of the technologies implemented and the frameworks used by an organization. You will need to provide the organization's website URL as a parameter to the find_tech_stack() method, in order to retrieve the information. The smart_browz reference used here is the component instance that we created earlier. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>org_url</td> <td>String</td> <td>A Mandatory parameter. Will store the URL of the organization for which tech stack details are needed.</td> </tr> </tbody> </table> smart_browz = app.smart_browz() response = smart_browz.find_tech_stack('https://www.zoho.com') print(response) The response is shown below: [ { "website":"https://www.zoho.com", "technographic_data":{ "audio-video media":"Vimeo,YouTube", "ssl_certificate":"Sectigo Limited", "email hosting providers":"Zoho Mail,SPF" }, "organization_name":"ZOHO" } ] 3. **Similar Companies:** The Similar Companies module allows you to get the list of potential organizations that provide the same or similar services as an organization you specify as the input. You can either provide the name of the input organization or its website URL as a parameter to the get_similar_companies() method. To know more about the component instance smart_browz used below, please refer to this help section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>company_url</td> <td>String</td> <td>A Mandatory parameter. Will store the URL of the organization for which similar organizations need to be retrieved.</td> </tr> </tbody> </table> smart_browz = app.smart_browz() response = smart_browz.get_similar_companies( {"lead_name": "zoho", "website_url": "https://www.zoho.com"} ) print(response) [ "Cybage Software Pvt. Ltd.", "Google LLC", "Chargebee, Inc.", "Infosys Ltd.", "GlobalLogic Inc.", "Persistent Systems Ltd.", "DELTA ELECTRONICS Inc.", "Salesforce, Inc." ] Note: Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of Catalyst SmartBrowz is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone. Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ### Browser Grid -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the Python method to get all the job pools present in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.421Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/overview/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Overview Browser Grid a *Catalyst SmartBrowz* service's auto scaling component that allows you to configure and manage multiple headless browsers. You are provided with options to configure your required grid by configuring the number of nodes and browsers that your process would require. Using the Browser Grid Python SDK, you will be able to get details about your browser grid, get node details about your browser grid and terminate browser grid executions. ### List of SDK Methods <table class="content-table"> <thead> <tr> <th class="w25p">Category</th> <th class="w50p">SDK Methods</th> <th class="w25p">Scope Requirements</th> </tr> </thead> <tbody> <tr> <td>General Operations</td> <td>Get Browser Grid Instance</td> <td>Admin</td> </tr> <tr> <td>Browser Grid Operations</td> <td> <ul> <li>Get all browser grids</li> <li>Get specific browser grid</li> <ul> <li>Get specific browser grid with ID</li> <li>Get specific browser grid with name</li> </ul> <li>Get nodes of a grid</li> <ul> <li>Using Grid ID</li> <li>Using Grid Name</li> </ul> <li>Stop browser grid</li> <ul> <li>Using Grid ID</li> <li>Using Grid Name</li> </ul> </ul> </td> <td>Admin</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Get Browser Grid Instance" description: "This page describes the Python method to get all the job pools present in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.422Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/overview/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get Browser Grid Instance You can get the browser grid instance as shown below. This will not fire a server-side call. You will refer to this component instance in various code snippets when working with the Browser Grid component. grid = app.smart_browz().browser_grid() # get Browser Grid instance -------------------------------------------------------------------------------- title: "Get All Browser Grid Details" description: "This page describes the Python method to get all the job pools present in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.422Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/overview/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get All Browser Grid Details You can use the get_all_grid() SDK method to get the grid details of all the browser grids that are present in your project. The grid instance used in the following snippet is the component reference. Info: To use this SDK method, you need to initialize it with Admin scope. You can learn more about this requirement from this section grid_list = grid.get_all_grid() # return details of all grids print(grid_list) ### Example of Expected Response { "status": "success", "data": [ { "id": "3970000000006058", "name": "play", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 07:04 PM", "modified_time": "Sep 10, 2025 07:04 PM", "api_key_modified_time": "1757511270919", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 10, "max_concurrent_count": 10, "config_type": 1 }, { "id": "3970000000005426", "name": "Automation", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 12:47 PM", "modified_time": "Sep 23, 2025 03:12 PM", "api_key_modified_time": "1757488669690", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 5, "max_concurrent_count": 5, "config_type": 2 }, { "id": "3970000000005027", "name": "SDK", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 11:33 AM", "modified_time": "Sep 10, 2025 04:27 PM", "api_key_modified_time": "1757484201284", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 5, "max_concurrent_count": 5, "config_type": 1 }, { "id": "3970000000005015", "name": "Puppeteer_Grid", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 10:21 AM", "modified_time": "Sep 10, 2025 10:21 AM", "api_key_modified_time": "1757479864798", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 1, "max_concurrent_count": 1, "config_type": 1 }, { "id": "3970000000005013", "name": "Selenium_Gridt", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 10:21 AM", "modified_time": "Sep 23, 2025 05:50 PM", "api_key_modified_time": "1757479864794", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 1, "max_concurrent_count": 1, "config_type": 2 } ] } -------------------------------------------------------------------------------- title: "Get a Specific Browser Grid" description: "This page describes the Python method to get all the job pools present in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.422Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/overview/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get a Specific Browser Grid You can get the details of a specific browser grid in your project by passing the Grid ID or grid name to the getGrid() SDK method. Info: To use this SDK method, you need to initialize it with Admin scope. You can learn more about this requirement from this section ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the get_grid() SDK method. The grid instance used in the following snippet is the component reference. grid_details = grid.get_grid(3970000000005013) # get grid details using the Grid ID print(grid_details) ### Using the Grid's Name You can pass the name of the required browser grid to the get_grid() SDK method. The grid instance used in the following snippet is the component reference. grid_details = grid.get_grid("Selenium_Grid") # get grid details using the name of the grid print(grid_details) ### Example of Expected Response { "status": "success", "data": { "id": "3970000000006058", "name": "Selenium_Grid", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 07:04 PM", "modified_time": "Sep 24, 2025 11:55 AM", "api_key_modified_time": "1757511270919", "created_by": { "zuid": "111734674", "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 10, "max_concurrent_count": 10, "config_type": 1 } } -------------------------------------------------------------------------------- title: "Get Details of a Node" description: "This page describes the Python method to get all the job pools present in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.422Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/overview/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get Details of a Node By passing the **Grid ID** or name of the required browser grid to the get_grid_nodes() SDK method, you can get the details of a node in that grid. Info: To use this SDK method, you need to initialize it with Admin scope. You can learn more about this requirement from this section ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the get_grid_nodes() SDK method, to get its node details. The grid instance used in the following snippet is the component reference. node_details = grid.get_grid_nodes(3970000000005013) # get details of the node using its Grid ID print(node_details) ### Using the Grid's Name You can pass the name of the required browser grid to the get_grid_nodes() SDK method, to get its node details. The grid instance used in the following snippet is the component reference. node_details = grid.get_grid_nodes("Selenium_Grid") # get details of the node using the grid's name print(node_details) -------------------------------------------------------------------------------- title: "Stop the Browser Grid" description: "This page describes the Python method to get all the job pools present in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.422Z" 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/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/overview/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Stop the Browser Grid By passing the **Grid ID** or name of the required browser grid to the stop_grid() SDK method, you can terminate all executions and stop the browser grid. Info: To use this SDK method, you need to initialize it with Admin scope. You can learn more about this requirement from this section ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the stop_grid() SDK method, to stop the grid, and terminate all its executions. The grid instance used in the following snippet is the component reference. grid_terminate = grid.stop_grid(3970000000005013) # stop the grid using the Grid ID ### Using the Grid's Name You can pass the name of the required browser grid to the stop_grid() SDK method, to stop the grid, and terminate all its executions. The grid instance used in the following snippet is the component reference. grid_terminate = grid.stop_grid("Selenium_Grid") # stop the grid using the name of the grid ### Example of Expected Response { "status": "success", "data": true } ## Zia Services -------------------------------------------------------------------------------- title: "Get Zia Instance" description: "This page describes the method to use the Barcode Scanner feature to scan certain data formats in your Python application with sample code snippets" last_updated: "2026-09-29T06:07:16.423Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/get-component-instance/" service: "Zia Services" related: - Catalyst Zia (/en/zia-services/getting-started/introduction) -------------------------------------------------------------------------------- # Catalyst Zia Catalyst Zia is a suite of fully managed AI/ML powered components that can be readily incorporated to build smart and reliable applications. These components help you detect, process, or predict data that can be highly beneficial in various aspects of your business. You can use a Catalyst Zia service in your application by implementing its component specific SDK snippet in your source code. # Get component instance A component instance is an object that can be used to access the predefined configurations specific to a particular component. This process will not fire a server-side call. Also note that this component instance will be used in multiple scenarios while implementing Zia services in your application. The app reference used in the code below is the Python object returned as a response during SDK initialization. You can create a new ziainstance as shown below : #Get Zia component instance zia = app.zia() -------------------------------------------------------------------------------- title: "OCR" description: "This page describes the method to use the Optical Character Recognition feature to detect textual characters in your Python application with sample code snippets" last_updated: "2026-09-29T06:07:16.423Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/ocr/" service: "Zia Services" related: - OCR - API (/en/api/code-reference/zia-services/ocr/#OCR) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Optical Character Recognition Zia Optical Character Recognition electronically detects textual characters in images or digital documents, and converts them into machine-encoded text. Zia OCR can recognize text in nine international languages and 10 Indian languages. You can check the list of languages and language codes from the API documentation. Note:Catalyst does not store any of the files you upload in its systems. The files you upload are used for one-time processing only. They are not used for ML model training purposes either. Catalyst components are fully compliant with all applicable data protection and privacy laws. You must specify the path to the image or document file that needs to be processed for OCR as a parameter to the open() method. This opens the file and returns a file object as a response. Allowed file formats: ._jpg_, ._jpeg_, ._png_, ._tiff_, ._bmp_, ._pdf_ File size limit: 20 MB You must pass the file path, model type, and languages as arguments to the extract_optical_characters() method. However, the model type and language values are optional. By default, it is passed as the OCR model type, and the languages are automatically detected if they are not specified. To know more about the component instance zia used below, please refer to this help section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>img</td> <td>Image</td> <td>A Mandatory parameter. Will store the image that has to be analyzed.</td> </tr> <tr> <td>language</td> <td>String</td> <td>A Mandatory parameter. Will store the language to be identified.</td> </tr> <tr> <td>modelType</td> <td>String</td> <td>A Mandatory parameter. Will store the default value as "OCR".</td> </tr> </tbody> </table> # OCR Implementation zia = app.zia() img = open("sample.webp", "rb") result = zia.extract_optical_characters(img, {"language": "eng", "modelType": "OCR"}) A sample response is shown below : { "confidence":95, "text":"This is a lot of 12 point text to test the\nocr code and see if it works on all types\nof file format\n\nThe quick brown dog jumped over the\nlazy fox. The quick brown dog jumped\nover the lazy fox. The quick brown dog\njumped over the lazy fox. The quick\nbrown dog jumped over the lazy fox" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Face Analytics" description: "This page describes the method to use the Face Analytics feature to detect faces with specified criteria in your Python application with sample code snippets" last_updated: "2026-09-29T06:07:16.423Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/face-analytics/" service: "Zia Services" related: - Face Analytics - API (/en/api/code-reference/zia-services/face-analytics/#FaceAnalytics) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Face Analytics Zia Face Analytics performs facial detection in images, and analyzes the facial features to provide information such as the gender, age, and emotion of the detected faces. You must provide a .webp/.jpeg or .png file as the input to the open() method to perform Face Analytics on that image. This opens the provided file and returns a file object as a response. The analyse_face() method accepts the input image as its argument. You can also specify the analysis mode as basic, moderate, or advanced. You can also specify the attributes age, smile, or gender as true to detect or false to not detect. These values are optional. All attributes are detected and the advanced mode is processed by default. Refer to the API documentation for the request and response formats. To know more about the component instance zia used below, please refer to this help section. The response returns the prediction of the enabled attributes, the coordinates and landmarks of facial features of each face, and the confidence score of each analysis. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>img</td> <td>Image</td> <td>A Mandatory parameter. Will store the image of the face to be analyzed.</td> </tr> <tr> <td>mode</td> <td>String</td> <td>A Optional parameter. Will store the analysis mode values - "basic", "moderate" or "advanced".</td> </tr> <tr> <td>age</td> <td>Boolean</td> <td>A Optional parameter. Will decide whether to determine age or not. Values accepted are "Yes" or "No"</td> </tr> <tr> <td>emotion</td> <td>Boolean</td> <td>A Optional parameter. Will decide whether to determine emotion or not. Values accepted are "Yes" or "No"</td> </tr> <tr> <td>gender</td> <td>Boolean</td> <td>A Optional parameter. Will decide whether to determine gender or not. Values accepted are "True" or "False"</td> </tr> </tbody> </table> # Face Analytics implementation zia = app.zia() img = open("sample.webp", "rb") result = zia.analyse_face( img, {"mode": "moderate", "age": True, "emotion": True, "gender": False} ) A sample response is shown below : { "faces_count":1, "faces":[ { "co_ordinates":[ "401", "193", "494", "313" ], "emotion":{ "confidence":{ "smiling":"0.75", "not_smiling":"0.25" }, "prediction":"smiling" }, "gender":{ }, "confidence":1, "id":"0", "landmarks":{ "right_eye":[ [ "467", "230" ] ], "nose":[ [ "451", "264" ] ], "mouth_right":[ [ "474", "278" ] ], "left_eye":[ [ "426", "239" ] ], "mouth_left":[ [ "434", "283" ] ] }, "age":{ "confidence":{ "20-29":"0.73", "30-39":"0.08", "0-2":"0.0", "40-49":"0.0", "50-59":"0.0", ">70":"0.0", "60-69":"0.0", "10-19":"0.17", "3-9":"0.0" }, "prediction":"20-29" } } ] } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Image Moderation" description: "This page describes the method to use the Image Moderation feature to detect vulnerability in images within your Python application with sample code snippets" last_updated: "2026-09-29T06:07:16.423Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/image-moderation/" service: "Zia Services" related: - Image Moderation - API (/en/api/code-reference/zia-services/image-moderation/#ImageModeration) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Image Moderation Image Moderation detects and recognizes inappropriate and unsafe content in images. The criteria include suggestive or explicit racy content, nudity, violence, gore, bloodshed, and the presence of weapons and drugs. You can provide a .webp/.jpeg or .png file as the input to the open() method. This method returns the image file object as a response. You can set the moderation mode as BASIC, MODERATE, or ADVANCED optionally. The image is processed in the ADVANCED mode by default. The response returns the probability of each criteria with their confidence scores, and the prediction of the image being safe_to_use or unsafe_to_use. To know more about the component instance zia used below, please refer to this help section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>img</td> <td>Image</td> <td>A Mandatory parameter. Will store the image to be analyzed.</td> </tr> <tr> <td>options</td> <td>Array</td> <td>A Optional parameter. Will store the analysis mode values - "basic", "moderate" or "advanced"</td> </tr> </tbody> </table> zia = app.zia() img = open("sample.webp", "rb") result = zia.moderate_image(img, options={"mode": "moderate"}) A sample response is shown below : { "probability":{ "racy":"0.09", "nudity":"0.06" }, "confidence":"0.85", "prediction":"safe_to_use" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Object Recognition" description: "This page describes the method to use the Object Recognition feature to locate objects in your Python application with sample code snippets" last_updated: "2026-09-29T06:07:16.424Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/object-recognition/" service: "Zia Services" related: - Object Recognition - API (/en/api/code-reference/zia-services/object-recognition/#ObjectRecognition) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Object Recognition Object Recognition detects,locates, and recognizes individual objects in an image file. Zia Object Recognition can identify 80 different kinds of objects from images. You can provide a .webp/.jpeg or .png file as the input to the open() method. This method returns the image file object as a response. Refer to the API documentation for the request and response formats. The detect_object() method is used detect and identify the objects in the image, and the input file is passed as an argument to this method. It returns the coordinates of each object, their type, and the confidence score of each recognition. To know more about the component instance zia used below, please refer to this help section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Tyoe</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>img</td> <td>Image</td> <td>A Mandatory parameter. Will store the image that has to be analyzed for objects.</td> </tr> </tbody> </table> zia = app.zia() img = open("sample.webp", "rb") result = zia.detect_object(img) A sample response is shown below : { "objects":[ { "co_ordinates":[ "322", "125", "708", "1201" ], "object_type":"person", "confidence":"99.82" } ] } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Barcode Scanner" description: "This page describes the method to use the Barcode Scanner feature to scan certain data formats in your Python application with sample code snippets" last_updated: "2026-09-29T06:07:16.424Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/barcode-scanner/" service: "Zia Services" related: - Barcode Scanner - API (/en/api/code-reference/zia-services/barcode-scanner/#BarcodeScanner) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Barcode Scanner Zia Barcode Scanner enables you to scan the most commonly used linear and 2D barcode formats and decode the encoded data. Barcode Scanner can detect formats like Codabar, EAN-13, ITF, UPC-A, QR Code, and more. You can provide an input file of the format .webp/.jpeg or .png to the open() method. This method returns the image file object as a response. Refer to the API documentation for the request and response formats. You can specify the barcode format using setFormat. If you enter the format as ALL, Barcode Scanner automatically detects the format. It provides the decoded information as the response. To know more about the component instance zia used below, please refer to this help section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>img</td> <td>Image</td> <td>A Mandatory parameter. Will store the ID of the model to be trained.</td> </tr> <tr> <td>options</td> <td>Array</td> <td>A Mandatory parameter. Will store the format of the barcode.</td> </tr> </tbody> </table> zia = app.zia() img = open("sample.webp", "rb") result = zia.scan_barcode(img, options={"format": "code39"}) A sample response is shown below : { "content":"https://demo.dynamsoft.com/dbr_wasm/barcode_reader_javascript.html" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ### Identity Scanner -------------------------------------------------------------------------------- title: "Facial Comparison" description: "This page describes the method to use facial comparison feature in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.424Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/identity-scanner/facial-comparison/" service: "Zia Services" related: - Facial Comparison - API (/en/api/code-reference/zia-services/identity-scanner/facial-comparison/#FacialComparison) - Facial Comparison Help (/en/zia-services/help/identity-scanner/key-concepts/#facial-comparison-process) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Identity Scanner Identity Scanner is a Zia AI-driven component that enables you to perform secure identity checks on individuals and documents by scanning and processing various ID proofs or official documents. It is a comprehensive suite that incorporates multiple functionalities divided into two major categories- E-KYC and Document Processing. Note: Catalyst does not store any of the files you upload in its systems. The documents you upload are only used for one-time processing. They are not used for ML model training purposes. Catalyst components are fully compliant with all applicable data protection and privacy laws. ### Facial Comparison Facial Comparison, also known as E-KYC, is a part of Identity Scanner that Compares two faces in two different images to determine if they are the same individual. This will enable you to verify an individual's identity from their ID proof by comparing it with an existing photo of theirs. For example, you can verify the authenticity of a photo ID, such as an individual's Aadhaar card, by comparing it with their current photograph. Note: While the Document Processing feature of Identity Scanner is only relevant to Indian users, the Facial Comparison API and SDK tools are available to a global audience. However, accessing and testing Facial Comparison or E-KYC from the Catalyst console is restricted to the users from IN DC alone. You can perform a face comparison between a source image and a query image, by specifying the path to both the image files, as shown in the sample code. The compare_face() method processes both these images. To know more about the component instance zia used below, please refer to this help section. Note: You can mark either the ID proof image or the individual's photograph as the source or the query image. This will not affect the results. Allowed file formats: _.webp_, _.jpeg_, _.png_ File size limit: 10 MB The result of the comparison is set to true if the faces match, or false if they don't match. The result also contains a confidence score between the range of 0 to 1, which determines the accuracy of the processing. Only if the comparison yields a confidence score of above 50% i.e., 0.5, the result will be set to true. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>img</td> <td>Image</td> <td>A Mandatory parameter. Will store the first image file of the face.</td> </tr> <tr> <td>img2</td> <td>Image</td> <td>A Mandatory parameter. Will store the second image file of the face.</td> </tr> </tbody> </table> # Facial Comparison feature implementation zia = app.zia() img = open("sample1.webp", "rb") img2 = open("sample2.webp", "rb") result = zia.compare_face(img, img2) The sample response is shown below : { "confidence":0.9464, "matched":"true" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Aadhaar" description: "This page describes the method to use the AADHAAR document processing feature in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.425Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/identity-scanner/aadhaar/" service: "Zia Services" related: - Aadhaar - API (/en/api/code-reference/zia-services/identity-scanner/aadhaar/#Aadhaar) - Aadhaar Help (/en/zia-services/help/identity-scanner/key-concepts/#model-types) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Identity Scanner Identity Scanner is a Zia AI-driven component that enables you to perform secure identity checks on individuals and documents by scanning and processing various ID proofs or official documents. It is a comprehensive suite that incorporates multiple functionalities divided into two major categories- E-KYC and Document Processing. Note: Catalyst does not store any of the files you upload in its systems. The documents you upload are used for one-time processing only. They are not used for ML model training purposes either. Catalyst components are fully compliant with all applicable data protection and privacy laws. ## Aadhaar The AADHAAR model is a part of the Document Processing feature that enables you to process Indian Aadhaar cards as identity proof documents. This enables you to extract fields of data from an Indian Aadhaar card using an advanced OCR technology. The response will return the parameters recognized from the Aadhaar card, along with confidence scores for each recognition that determine their accuracy. Note:Document Processing is only relevant to Indian users and is only available in the IN DC. This feature will not be available to users accessing from the EU, AU, US, JP, SA or CA data centers. Users outside of India from the other DCs can access the general OCR component to read and process textual content. You must provide the path to the image files of the front and back of the Aadhaar card to the open() method, as shown in the code below. This opens both the files and returns the respective file objects as a response. To know more about the component instance zia used below, please refer to this help section. Identity Scanner will now automatically identify the languages in an Aadhaar card and process it. You can temporarily pass the languages as shown in the code below. You must pass English and the relevant regional language. For example, if you are from Tamil Nadu, you must pass tam and eng as the languages. You can check the list of languages and language codes from the API documentation. Allowed file formats: _.webp_, _.jpeg_, _.png_, _.bmp_, _.tiff_, _.pdf_<br /> File size limit: 15 MB The response contains the parameters recognized in the Aadhaar card such as the card holder's name, address, gender, Aadhaar card number assigned to respective keys. The response also shows a confidence score in the range of 0 to 1 for each of the recognized values. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>aadhar_front</td> <td>Image</td> <td>A Mandatory parameter. Will store the front side Aadhaar image in less than 15 MB.</td> </tr> <tr> <td>aadhar_back</td> <td>Image</td> <td>A Mandatory parameter. Will store the back side Aadhaar image in less than 15 MB.</td> </tr> <tr> <td>language</td> <td>String</td> <td>A Mandatory parameter. Will store the language to be identified.</td> </tr> </tbody> </table> zia = app.zia() img = open("sample.webp", "rb") img2 = open("sample2.webp", "rb") result = zia.extract_aadhaar_characters(img, img2, language="eng,tam") A sample response is shown below : { "text":{ "address":{ "prob":0.5, "value":"C/O Rainbow, xxxx STREET, xxxx- 0000" }, "gender":{ "prob":0.8, "value":"MALE" }, "dob":{ "prob":0.8, "value":"08/09/2001" }, "name":{ "prob":0.6, "value":"Ram Singh" }, "aadhaar":{ "prob":0.8, "value":"4000 0000 0000" } } } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "PAN" description: "This page describes the method to use the PAN document processing feature in your Python application with sample code snippets" last_updated: "2026-09-29T06:07:16.425Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/identity-scanner/pan/" service: "Zia Services" related: - PAN - API (/en/api/code-reference/zia-services/identity-scanner/pan/#PAN) - PAN Help (/en/zia-services/help/identity-scanner/key-concepts/#model-types) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Identity Scanner Identity Scanner is a Zia AI-driven component that enables you to perform secure identity checks on individuals and documents by scanning and processing various ID proofs or official documents. It is a comprehensive suite that incorporates multiple functionalities divided into two major categories- E-KYC and Document Processing. Note: Catalyst does not store any of the files you upload in its systems. The documents you upload are used for one-time processing only. They are not used for ML model training purposes either. Catalyst components are fully compliant with all applicable data protection and privacy laws. #### PAN The PAN model is a part of the Document Processing feature that enables you to process Indian PAN cards as identity proof documents. This enables you to extract fields of data from a PAN card using an advanced OCR technology, and return the parameters recognized from the PAN card in the response. Note:Document Processing is only relevant to Indian users and is only available in the IN DC. This feature will not be available to users accessing from the EU, AU, US, JP, SA or CA DCs. Users outside of India from the other DCs can access the general OCR component to read and process textual content. You must provide the path to the image file of the front side of the PAN card to the open() method, as shown in the code below. This method opens the file and returns the file object as a response. To know more about the component instance zia used below, please refer to this help section. Allowed file formats: _.webp_, _.jpeg_, _.png_<br /> File size limit: 15 MB You must specify the model type as PAN using modelType. The PAN model can only process text in English by default. No other languages are supported. The response will contain the parameters extracted from the PAN card such as their first name, last name, date of birth, and their PAN card number assigned to the respective keys. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>img</td> <td>Image</td> <td>A Mandatory parameter. Will store the image file of the front side of the PAN card.</td> </tr> <tr> <td>modelType</td> <td>String</td> <td>A Mandatory parameter. Will store the default value as "PAN".</td> </tr> </tbody> </table> zia = app.zia() img = open("sample.webp", "rb") result = zia.extract_optical_characters(img, {"modelType": "PAN"}) The response is shown below : { "date_of_birth":"03/04/1982", "last_name":"VASUDEV MAHTO", "pan":"ANRPM2537J", "first_name":"PRAMOD KUMAR MAHTO" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Passbook" description: "This page describes the method to use the PASSBOOK document processing feature in your Python application with sample code snippets" last_updated: "2026-09-29T06:07:16.425Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/identity-scanner/passbook/" service: "Zia Services" related: - Passbook - API (/en/api/code-reference/zia-services/identity-scanner/passbook/#Passbook) - Passbook Help (/en/zia-services/help/identity-scanner/key-concepts/#model-types) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Identity Scanner Identity Scanner is a Zia AI-driven component that enables you to perform secure identity checks on individuals and documents by scanning and processing various ID proofs or official documents. It is a comprehensive suite that incorporates multiple functionalities divided into two major categories- E-KYC and Document Processing. Note: Catalyst does not store any of the files you upload in its systems. The documents you upload are used for one-time processing only. They are not used for ML model training purposes either. Catalyst components are fully compliant with all applicable data protection and privacy laws. #### Passbook The PASSBOOK model is a part of the Document Processing feature that enables you to process Indian bank passbooks as financial or identity proof documents. This enables you to extract fields of data from a passbook using the OCR technology, and fetch the parameters from it in the response. Note: Document Processing is only relevant to Indian users and is only available in the IN DC. This feature will not be available to users accessing from the EU, AU, US, JP, SA or CA data centers. Users outside of India from the other DCs can access the general OCR component to read and process textual content. The Passbook model supports 11 Indian languages and an additional 8 International languages. You can check the list of languages and language codes from the API documentation. You must provide the path to the image of the front page of the passbook, as shown in the code below. Allowed file formats: _.webp_, _.jpeg_, _.png_, _.bmp_, _.tiff_, _.pdf_<br /> File size limit: 15 MB You must specify the model type as PASSBOOK using the key modelType. You can also optionally specify the language as shown in the code below. English will be considered as the default language, if it isn't specified. The response contains the bank details and account details recognized from the passbook such as the bank name, branch, address, account number. The extracted fields of information are assigned to their respective keys. The response also shows if RTGS, NEFT, and IMPS have been enabled for that account. Note: Identity Scanner will return the response only in English, irrespective of the languages present in the passbook. To know more about the component instance zia used below, please refer to this help section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>img</td> <td>Image</td> <td>A Mandatory parameter. Will store the language to be detected.</td> </tr> <tr> <td>modelType</td> <td>String</td> <td>A Mandatory parameter. Will store the default value as "PASSBOOK".</td> </tr> </tbody> </table> zia = app.zia() img = open("sample.webp", "rb") result = zia.extract_optical_characters( img, {"language": "tam", "modelType": "PASSBOOK"} ) A sample reference is shown below : { "text":{ "address":"No.20,Gandhi Road,M.G Lane", "city":"Chennai", "centre":"Chennai", "bankName":"ABX BANK LIMITED", "accountNumber":"002001001625859", "branch":"Anna Nagar", "dateOfOpening":"30/08/2012", "imps":"true", "neft":"true", "district":"Chennai", "contact":"801234567", "micr":"641021121", "name":" 2312312", "state":"Tamil Nadu", "rtgs":"true", "ifsc":"ABX0000311" } } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Cheque" description: "This page describes the method to use the Cheque document processing feature in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.426Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/identity-scanner/cheque/" service: "Zia Services" related: - Cheque - API (/en/api/code-reference/zia-services/identity-scanner/cheque/#Cheque) - Cheque Help (/en/zia-services/help/identity-scanner/key-concepts/#model-types) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Identity Scanner Identity Scanner is a Zia AI-driven component that enables you to perform secure identity checks on individuals and documents by scanning and processing various ID proofs or official documents. It is a comprehensive suite that incorporates multiple functionalities divided into two major categories- E-KYC and Document Processing. Note: Catalyst does not store any of the files you upload in its systems. The documents you upload are used for one-time processing only. They are not used for ML model training purposes either. Catalyst components are fully compliant with all applicable data protection and privacy laws. #### Cheque The CHEQUE model is a part of the Document Processing feature that enables you to process Indian bank cheque leaves as identity proof documents. This enables you to extract fields of data from a cheque using an advanced OCR technology, and fetch the parameters recognized from the cheque through the response. Note: Document Processing is only relevant to Indian users and is only available in the IN DC. This feature will not be available to users accessing from the EU, AU, JP, SA, US, or CA DCs. Users outside of India from the other DCs can access the general OCR component to read and process textual content. You must provide the path to the image file of the front page of the chequebook to the open() method, as shown in the code below. This method returns the file object as a response. The CHEQUE model can only process text in English by default. No other languages are supported. Allowed file formats: _.webp_, _.jpeg_, _.png_<br /> File size limit: 15 MB You must specify the model type as CHEQUE using modelType(). Note:Zia only processes cheques of the CTS-2010 format. To know more about the component instance zia used below, please refer to this help section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>img</td> <td>Image</td> <td>A Mandatory parameter. Will store the image file of the front page of the chequebook.</td> </tr> <tr> <td>modelType</td> <td>String</td> <td>A Mandatory parameter. Will store the default value as "CHEQUE".</td> </tr> </tbody> </table> zia = app.zia() img = open('sample.webp', 'rb') result = zia.extract_optical_characters(img, {'modelType': 'CHEQUE'}) A sample response is shown below : { "date":"15/11/2014", "account_number":"89323223232222", "amount":"10615", "branch_name":"ANNA NAGAR", "bank_name":"ABX BANK", "ifsc":"BB9033232" } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. ### Text Analytics -------------------------------------------------------------------------------- title: "Sentiment Analysis" description: "This page describes the method to use the sentiment analysis feature in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.426Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/text-analytics/sentiment-analysis/" service: "Zia Services" related: - Sentiment Analysis - API (/en/api/code-reference/zia-services/text-analytics/sentiment-analysis/#SentimentAnalysis) - Sentiment Analysis Help (/en/zia-services/help/text-analytics/key-concepts/#sentiment-analysis) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Sentiment Analysis Zia Sentiment Analysis is a part of Text Analytics that processes textual content to recognize the tone of the message, and the sentiments conveyed through it. It analyzes each sentence in the text to determine if its tone is positive, negative, or neutral. It then determines the tone of the overall text as one of the these three sentiments, based on the sentiments recognized in each sentence. The response also returns the confidence scores for the sentiments detected in each sentence, to showcase the accuracy of the analysis. The confidence score lies in the range of 0 to 1\. A confidence score for the overall analysis is also returned. You can pass a block of text as the input of upto 1500 characters in a single request. The input text is passed to get_sentiment_analysis(). You can also pass optional keywords for the text. This will enable Sentiment Analysis to process only those sentences that contain these keywords, and determine their sentiments. Other sentences will be ignored. This method takes in a second parameter as an empty list. To know more about the component instance zia used below, please refer to this help section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>text</td> <td>String</td> <td>A Mandatory parameter. Will store the text to be analyzed.</td> </tr> <tr> <td>keyword</td> <td>String</td> <td>A Optional parameter. Will store the keywords to filter sentences containing them and analyze their sentiments.</td> </tr> </tbody> </table> zia = app.zia() result = zia.get_sentiment_analysis( [ "Zoho Corporation, is an Indian multinational technology company that makes web-based business tools. It is best known for Zoho Office Suite. The company was founded by Sridhar Vembu and Tony Thomas and has a presence in seven locations with its global headquarters in Chennai, India, and corporate headquarters in Pleasanton, California.","Zoho"], [], ) A sample response is shown below : { "sentiment_prediction":[ { "document_sentiment":"Neutral", "sentence_analytics":[ { "sentence":"Zoho Corporation, is an Indian multinational technology company that makes web-based business tools.", "sentiment":"Neutral", "confidence_scores":{ "negative":0, "neutral":1, "positive":0 } }, { "sentence":"It is best known for Zoho Office Suite.", "sentiment":"Neutral", "confidence_scores":{ "negative":0, "neutral":0.6, "positive":0.4 } } ], "overall_score":0.83 } ] } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Named Entity Recognition" description: "This page describes the method to use the named entity recognition feature in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.426Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/text-analytics/named-entity-recognition/" service: "Zia Services" related: - Named Entity Recognition Help (/en/zia-services/help/text-analytics/key-concepts/#named-entity-recognition) - Named Entity Recognition - API (/en/api/code-reference/zia-services/text-analytics/named-entity-recognition/#NamedEntityRecognition) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Named Entity Recognition Zia Named Entity Recognition is a part of Text Analytics that processes textual content to extract key words and group them into various categorizes. For example, it can determine a word in a text to be the name of an organization, the name of a person, or a date, and add it to the appropriate category accordingly. Refer here for a list of all categories recognized by NER. The response returns an array of all the entities recognized in the text, and a tag indicating the category they belong to. It will also contain the confidence score of each categorization in percentage values, to showcase its accuracy. The response also returns the location of the entity in the text through its start index and end index. You can pass a block of text as the input of upto 1500 characters in a single request, as shown below. The text is passed to get_NER_prediction(). To know more about the component instance zia used below, please refer to this help section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>text</td> <td>String</td> <td>A Mandatory parameter. Will store the text in which entities has to be recognized.</td> </tr> </tbody> </table> zia = app.zia() result = zia.get_NER_prediction( [ "Zoho Corporation, is an Indian multinational technology company that makes web-based business tools. It is best known for Zoho Office Suite. The company was founded by Sridhar Vembu and Tony Thomas and has a presence in seven locations with its global headquarters in Chennai, India, and corporate headquarters in Pleasanton, California." ] ) The sample response is shown below : { "ner":{ "general_entities":[ { "start_index":0, "confidence_score":98, "end_index":16, "ner_tag":"Organization", "token":"Zoho Corporation" }, { "start_index":24, "confidence_score":99, "end_index":30, "ner_tag":"Miscellaneous", "token":"Indian" }, { "start_index":122, "confidence_score":90, "end_index":139, "ner_tag":"Miscellaneous", "token":"Zoho Office Suite" }, { "start_index":168, "confidence_score":99, "end_index":181, "ner_tag":"Person", "token":"Sridhar Vembu" }, { "start_index":186, "confidence_score":96, "end_index":197, "ner_tag":"Person", "token":"Tony Thomas" }, { "start_index":220, "confidence_score":100, "end_index":225, "ner_tag":"Number", "token":"seven" }, { "start_index":268, "confidence_score":99, "end_index":275, "ner_tag":"City", "token":"Chennai" }, { "start_index":277, "confidence_score":98, "end_index":282, "ner_tag":"Country", "token":"India" }, { "start_index":314, "confidence_score":99, "end_index":324, "ner_tag":"City", "token":"Pleasanton" }, { "start_index":326, "confidence_score":91, "end_index":336, "ner_tag":"State", "token":"California" } ] } } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "Keyword Extraction" description: "This page describes the method to use the keyword extraction feature in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.426Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/text-analytics/keyword-extraction/" service: "Zia Services" related: - Keyword Extraction Help (/en/zia-services/help/text-analytics/key-concepts/#keyword-extraction) - Keyword Extraction - API (/en/api/code-reference/zia-services/text-analytics/keyword-extraction/#KeywordExtraction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Keyword Extraction Zia Keyword Extraction is a part of Text Analytics that processes textual content and extracts the highlights of the text. The extracted terms are grouped into two categories: Keywords and Keyphrases. These highlights deliver a concise summary of the text and provide an abstraction of the whole text. The response contains an array of the key words, and another array of the key phrases that are extracted from the text. You can pass a block of text as the input of upto 1500 characters in a single request, as shown below. The text is passed to get_keyword_extraction(). The keywords and keyphrases are then fetched as individual lists. To know more about the component instance zia used below, please refer to this help section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>text</td> <td>String</td> <td>A Mandatory parameter. Will store the text from which keywords has to be extracted.</td> </tr> </tbody> </table> zia = app.zia() result = zia.get_keyword_extraction( [ "Zoho Corporation, is an Indian multinational technology company that makes web-based business tools. It is best known for Zoho Office Suite. The company was founded by Sridhar Vembu and Tony Thomas and has a presence in seven locations with its global headquarters in Chennai, India, and corporate headquarters in Pleasanton, California." ] ) The sample response is shown below : { "keyword_extractor":{ "keywords":[ "Chennai", "company", "India", "Indian", "presence", "locations", "Pleasanton", "California" ], "keyphrases":[ "corporate headquarters", "multinational technology company", "Zoho Corporation", "Zoho Office Suite", "global headquarters", "Tony Thomas", "web-based business tools", "Sridhar Vembu" ] } } Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation. -------------------------------------------------------------------------------- title: "All Text Analytics" description: "This page describes the method to use the text analytics feature in your Python application with sample code snippets." last_updated: "2026-09-29T06:07:16.427Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/zia-services/text-analytics/all-text-analytics/" service: "Zia Services" related: - All Text Analytics - API (/en/api/code-reference/zia-services/text-analytics/all-text-analytics/#AllTextAnalytics) - All Text Analytics Help (/en/zia-services/help/text-analytics/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # All Text Analytics Text Analytics as a whole includes a combination of all three features specified in the previous sections: Sentiment Analysis, Named Entity Recognition, and Keyword Extraction. You can perform all three actions on a specific block of text, and obtain the tone of the text, the categorizations of the entities recognized from it, and key words and phrases that provide a gist of the text. You can pass a block of text as the input of upto 1500 characters in a single request, as shown below. The text is passed to get_text_analytics(). You can also pass optional keywords to perform Sentiment Analysis on the sentences containing only those keywords. This method takes in a second parameter as an empty list. The response contains the results of each of the text analytics feature. Refer to each feature page for detailed information on their respective functionalities and responses. To know more about the component instance zia used below, please refer to this help section. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>text</td> <td>String</td> <td>A Mandatory parameter. Will store the text to be analyzed.</td> </tr> </tbody> </table> zia = app.zia() result = zia.get_text_analytics( [ "Zoho Corporation, is an Indian multinational technology company that makes web-based business tools. It is best known for Zoho Office Suite. The company was founded by Sridhar Vembu and Tony Thomas and has a presence in seven locations with its global headquarters in Chennai, India, and corporate headquarters in Pleasanton, California.","Zoho"], [] ) A sample response is shown below : [ { "keyword_extractor":{ "keywords":[ "Chennai", "company", "India", "Indian", "presence", "locations", "Pleasanton", "California" ], "keyphrases":[ "corporate headquarters", "multinational technology company", "Zoho Corporation", "Zoho Office Suite", "global headquarters", "Tony Thomas", "web-based business tools", "Sridhar Vembu" ] }, "sentiment_prediction":[ { "document_sentiment":"Neutral", "sentence_analytics":[ { "sentence":"Zoho Corporation, is an Indian multinational technology company that makes web-based business tools.", "sentiment":"Neutral", "confidence_scores":{ "negative":0, "neutral":1, "positive":0 } }, { "sentence":"It is best known for Zoho Office Suite.", "sentiment":"Neutral", "confidence_scores":{ "negative":0, "neutral":0.6, "positive":0.4 } }, { "sentence":"The company was founded by Sridhar Vembu and Tony Thomas and has a presence in seven locations with its global headquarters in Chennai, India, and corporate headquarters in Pleasanton, California.", "sentiment":"Neutral", "confidence_scores":{ "negative":0, "neutral":0.88, "positive":0.12 } } ], "overall_score":0.83 } ], "ner":{ "general_entities":[ { "start_index":0, "confidence_score":98, "end_index":16, "ner_tag":"Organization", "token":"Zoho Corporation" }, { "start_index":24, "confidence_score":99, "end_index":30, "ner_tag":"Miscellaneous", "token":"Indian" }, { "start_index":122, "confidence_score":90, "end_index":139, "ner_tag":"Miscellaneous", "token":"Zoho Office Suite" }, { "start_index":168, "confidence_score":99, "end_index":181, "ner_tag":"Person", "token":"Sridhar Vembu" }, { "start_index":186, "confidence_score":96, "end_index":197, "ner_tag":"Person", "token":"Tony Thomas" }, { "start_index":220, "confidence_score":100, "end_index":225, "ner_tag":"Number", "token":"seven" }, { "start_index":268, "confidence_score":99, "end_index":275, "ner_tag":"City", "token":"Chennai" }, { "start_index":277, "confidence_score":98, "end_index":282, "ner_tag":"Country", "token":"India" }, { "start_index":314, "confidence_score":99, "end_index":324, "ner_tag":"City", "token":"Pleasanton" }, { "start_index":326, "confidence_score":91, "end_index":336, "ner_tag":"State", "token":"California" } ] } } ] Info : Refer to the SDK Scopes table to determine the required permission level for performing the above operation.