# v1 -------------------------------------------------------------------------------- title: "Overview" description: "This page provides an overview of the Catalyst Java SDK package that will enable you to create microservices, and interactive web and mobile applications with Java programming elements." last_updated: "2026-09-29T06:07:16.173Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/overview/" service: "All Services" related: - JavaScript SDK (/en/sdk/javascript/v1/auth-config/node-consideration/) - API Code Reference (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) - Catalyst Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Java SDK - Overview Java SDK for Catalyst paves the way for creating microservices, interactive web and mobile applications with Java programming elements and associating them with catalyst components. The SDK offers the necessary structures to access the Catalyst APIs comfortably. It acts as a wrapper for the REST APIs and helps you use Catalyst services effectively. Catalyst currently supports the following versions of Java: * **Java 25** * **Java 21** * **Java 17** * **Java 11** * **Java 8** ### Initialize Project To initialize Catalyst project, add the code snippet below to your Java source code as the very first statement, before you start writing your business logic. ZCProject.initProject(); Note: In Java SDK it is not mandatory to include this initialize command as it will be automatically initialized in functions. #### Initialize Catalyst Projects with Specific SDK Scopes Catalyst allows you to initialize a project using the following scopes: * **Admin**: You have unrestricted access to all the components and their respective functionalities. For example, you have complete access to the Data Store to perform all operations like Read, Write, Delete, etc. * **User**: You can restrict access to components, and specific functionalities. For example, you can provide *Read* access alone to Data Store. Note:<br /> * It is not mandatory for you to initialize the projects with scopes. By default, a project that is initialized will have Admin privileges. * Ensure you have initialized the Catalyst SDK with the appropriate scope while you engineer your business logic. The permissions you define for your scope control your end-user's actions. * Scopes only apply to operations related Data Store, and ZCQL. * Depending on how you engineer your business logic, you can decide if your end-users can perform Admin or User actions. This is decided based on the role assigned to your end-user when they sign up to your application in Catalyst Authentication. The permissions for the roles can be configured in the Scopes & Permissions section of the Data Store. The SDK snippets below will allow you to initialize the project using either *Admin* or *User* scope, and perform a **SELECT** query in the Data Store: * **Initialize the Catalyst project with Admin Scope** ZCProject adminProject = ZCProject.initProject("admin", ZCUserScope.ADMIN); ZCQL.getInstance(adminProject).executeQuery("select * from test"); * **Initialize the Catalyst project with User Scope** ZCProject userProject = ZCProject.initProject("user", ZCUserScope.USER); ZCQL.getInstance().executeQuery("select * from test"); ### Class Hierarchy All the Catalyst components are modelled as Java classes with their members and methods defining the behaviour of the component. * ZCProject is the fundamental base class of the SDK package. It has methods to initialize the catalyst project configurations and associate the components of the project. * The class relations and hierarchy of the SDK follow the project hierarchy in Catalyst. * Each class has functions to fetch its properties and to fetch the data of its immediate child entities through an API call. For example, a Catalyst Data Store class, ZCDataStore will have member functions to access tables that can use the functions of its immediate child class ZCTable to set the table name, ID, etc. The class hierarchy of various Catalyst components is depicted as: ### Instance Objects It is not always effective to follow the class hierarchy all the way from the top to fetch the data of a component at a lower level, since this would involve API calls at every level. In order to avoid this, every component class has a getInstance() method to get its dummy object and methods to get dummy objects of its child entities. Note: getInstance() methods will not have any of their properties filled in since no API call will be made. This will just return a dummy object that will be only used to access the non-static methods of the class. To retrieve the properties of a Catalyst component, call the component's object with its getInstance() method, then use the same object to call the other methods defined by the component. This avoids unnecessary API calls. ### Exceptions Unexpected faulty behaviours are called exceptions. All errors and exceptions are handled by a class called ZCException defined by our Java SDK. We have ZCServerException and ZCClientException classes to catch the specific exceptions thrown by the client and server codes. -------------------------------------------------------------------------------- title: "Upgrade Java SDK" description: "This page provides instructions on upgrading Java SDK" last_updated: "2026-09-29T06:07:16.173Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/upgrade-sdk/" service: "All Services" related: - JavaScript SDK (/en/sdk/javascript/v1/overview/) - Catalyst Python SDK (/en/sdk/python/v1/overview/) - API Code Reference (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) - Catalyst Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Upgrade Java SDK Catalyst constantly endeavours to provide you with the latest, most relevant, and secure SDK packages to ensure you code your applications with as much ease as possible. This means that from time to time, Catalyst will upgrade its SDK packages to provide you with the best coding support. We strongly urge you to keep track of the latest developments in Catalyst SDKs from our Release Notes section and upgrade your SDK packages to the latest versions. We will also be posting our *bug fixes*, should any arise, in our **Release Notes**. Note: If an immediate upgrade is required due to deprecation reasons, we will ensure you are notified on time via email to perform the necessary upgrades. Generally, it is highly recommended that you always upgrade your SDK to the latest version. ### Steps to Upgrade Your SDK There are two methods you can use to upgrade your Java SDK: * Installing the latest version from the *static download URL* available in the console. * Updating your **Maven configurations**, if you use Maven for Java development #### Install using the static download URL available in the console 1. Go to the Catalyst console and login to your account. 2. Open any of your Catalyst projects, and click on your **profile icon**. <br /> 3. Click on the **Java icon** under the *Download SDKs* list to download the latest version of the SDK. <br /> 4. Click **Save** in the local system prompt, and the latest version of the SDK will be stored in your local system as a ZIP file. <br /> Now, to use the latest SDK in a Java function, unzip the contents and paste them in the **lib** folder of your java function. The **lib** folder will be present in the source directory of your Java function. Note: * You need to paste the SDK content in the lib folder of every Java function you have created and initialized in your project. * You can find the latest version of the Java SDK from our release notes. #### Update SDK Through Maven To update Java SDK through Maven, you will be need to make the following changes to your pom.xml file present in your project directory. &lt;dependency&gt; &lt;groupId&gt;com.zoho.catalyst&lt;/groupId&gt; &lt;artifactId&gt;java-sdk&lt;/artifactId&gt; &lt;version&gt;1.15.0&lt;/version&gt; // replace with your required version here &lt;dependency&gt; The latest version of the Java SDK will be available to you and it will be incorporated in your Java functions in the project once you **save your edit**. Note: * You need to apply the same changes in every pom.xml file of every Java function present in your project, to ensure the SDK offerings are available throughout your project. * You can find the latest version of the Java SDK from our release notes. -------------------------------------------------------------------------------- title: "Integrate SDK in Third-Party Apps" last_updated: "2026-09-29T06:07:16.173Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/integrate-sdk-in-third-party-apps/" service: "All Services" related: - Catalyst Environments (/en/deployment-and-billing/environments/introduction/) - Catalyst Cloud Scale Authentication (/en/cloud-scale/help/authentication/introduction/) - Catalyst Cloud Scale Stratus (/en/cloud-scale/help/stratus/introduction/) -------------------------------------------------------------------------------- # Catalyst Java SDK Integration in Third-Party Applications You can integrate and use the Catalyst Java SDK methods in applications deployed outside the Catalyst environment. Say, a React app hosted on Vercel using a Flask backend (running outside Catalyst) can upload documents to Catalyst Cloud Scale Stratus or a data pipeline running on Amazon Web Services EC2 can push customer data into Catalyst Cloud Scale Data Store using Catalyst Cloud Scale ZCQL queries using the respective Java SDK operations. These are just a few common use cases where external applications can securely interact with Catalyst components without being deployed within the Catalyst platform. We have provided the code snippet to help you integrate the Catalyst Java SDK with external applications. However, before implementing the code in your application, please review the following prerequisites. ### Prerequisites for the SDK Integration To integrate the Catalyst Java SDK with your external application, ensure you have the following information: * **Project ID:** The unique identifier of your Catalyst project. * **ZAID (Zoho Account ID):** A unique portal identifier assigned by Catalyst to link your project with the Catalyst environment (development or production). * **Environment:** The target environment (development or production) of your Catalyst project. * **OAuth Credentials:** This is required to authenticate and authorize your external application via Catalyst’s self-client portal to access Catalyst components. You will need the following: 1. Client ID 2. Client Secret 3. Refresh Token After you fetch these values , you can proceed with integrating the Java SDK into your application. <br> ### Steps to Integrate Now, let's look at how to fetch each of these values and configure them in the code snippet. Please ensure you follow the steps outlined below: 1. **Create a project in the Catalyst Console:** You can create a new Catalyst project in the console by using the steps mentioned in this help page. 2. **Retrieve the Project ID:** Once you have created your project, you will need to make a note of the **Project ID**. The Project ID is the unique ID of your project that will be created automatically during the project’s creation. You can find it by clicking the **Settings** icon located in the top-right corner of the Catalyst console. In the **Settings** screen, navigate to **Project Settings** and select **General**. You can view and make a note of the Project ID from this section, as shown in the screenshot below. <br> 3. **Retrieve the ZAID:** You will need to include your project’s **ZAID** in the code snippet provided in this section. The **ZAID** is a unique portal identifier assigned by Catalyst to link your project with the required Catalyst environment (development or production). To retrieve the ZAID, setting up the Catalyst CloudScale Authentication component is mandatory. However, using it for your application's authentication flow is optional. To fetch the ZAID: i. Navigate to the Catalyst CloudScale service in the console and under **Security & Identity**, select **Authentication**. <br> ii. You will need to set up Native Catalyst Authentication, where Catalyst manages the entire authentication process for you, eliminating the need for any additional coding or infrastructure management on your part. iii. Click **Set Up**. <br> iv. Select the **Hosted authentication** type, which enables you to host your login element on dedicated pages of your application. You can configure and design the authentication from the console, and Catalyst will render it for your application and handle all the backend requirements. <br> v. You must enable the Public Signup option to display the signup feature in your login component, allowing new users to register and access your application. You can refer to the hosted authentication help page for a detailed step-by-step setup guide. <br> vi. In the confirmation screen, click **Yes, proceed**. <br> vii. You can enable any of the supported social login options listed below and retrieve the corresponding **ZAID** value from the selected provider. Note: Social login providers such as Google, Microsoft, LinkedIn, and Facebook are supported for retrieving the ZAID. However, Zoho login is not supported for this purpose. Learn how to obtain the ZAID for a specific social login. <br> 4. **Register a Self Client Application:** You will need to obtain the **Refresh Token**, **Client ID**, and **Client Secret** to authenticate and authorize your application to access Catalyst resources on behalf of your application's user. For fetching the above required items, you must first register your application as a self-client in API console. i. Log in to the API console and click on **Self-client**. <br> ii. Configure the scope of the self-client application based on the operations your application needs to perform in Catalyst. Learn more about available scopes. iii. Provide the required scope, add an appropriate description, and click **Create**. <br> iv. The grant token will be generated. Make sure to copy and store it securely, as this is a one-time process, and the token cannot be retrieved from the console again. Learn more about generating a grant token. <br> v. Switch to the **Client Secret** tab and note down the client ID and the client secret details. <br> vi. You can generate the access and refresh token by using the request in this help page. You can also refresh the access token by using the steps listed in this page. After you have noted all the values mentioned above, you can configure them in the code snippet as shown below and integrate Java SDK into your application. The SpringBoot code below demonstrates this with the example of fetching buckets from Catalyst CloudScale Stratus. <br> ### Code Snippet package com.example.demoapp; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.stereotype.Component; import java.util.List; import java.util.logging.Logger; import org.json.simple.JSONObject; import com.zc.common.ZCProject; import com.zc.common.ZCProjectConfig; import com.catalyst.config.ZCThreadLocal; import com.zc.api.APIConstants.ZCAuthType; import com.zc.api.APIConstants.ZCUserScope; import com.zc.auth.ZCAuth; import com.zc.component.USER_TYPE; import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCTable; @SpringBootApplication public class DemoappApplication { private static final Logger logger = Logger.getLogger(DemoappApplication.class.getName()); public static void main(String[] args) { SpringApplication.run(DemoappApplication.class, args); } @Component public static class DataProcessor implements CommandLineRunner { @Override public void run(String... args) { try { ZCThreadLocal.putValue("user_type", USER_TYPE.ADMIN); JSONObject oAuthParams = new JSONObject(); oAuthParams.put("client_id", CLIENT_ID); //Provide CLient ID value here oAuthParams.put("client_secret", CLIENT_SECRET); //Provide CLient secret value here oAuthParams.put("refresh_token", REFRESH_TOKEN); //Provide refresh token value here oAuthParams.put("grant_type", "refresh_token"); ZCAuth auth = ZCAuth.getInstance(oAuthParams); auth.setScope(ZCUserScope.ADMIN); System.out.println("Auth Object: " + auth); ZCProjectConfig config = ZCProjectConfig.newBuilder() .setProjectId(PROJECT_ID) //Provide Project ID value here .setProjectKey(ZAID) //Provide ZAID value here .setZcAuth(auth) .setProjectDomain("https://api.catalyst.zoho.com") .setEnvironment("Development") //set the value as either "Development" or "Production" .build(); ZCProject project = ZCProject.initProject(config, ""); ZCStratus stratus = ZCStratus.getInstance(project); List <ZCBucket> buckets = stratus.listBuckets(); } catch (Exception e) { logger.severe("Error during data processing: " + e.getMessage()); } } } } ## Cloud Scale ### Authentication -------------------------------------------------------------------------------- title: "Add New User" description: "This page describes the method to add new end-users to your Java application using Catalyst Authentication with sample code snippets." last_updated: "2026-09-29T06:07:16.174Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/authentication/add-new-user/" service: "Cloud Scale" related: - Add new user - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) - Catalyst Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Authentication Catalyst Authentication features enable you to add end-users to your Catalyst serverless applications, configure their user accounts and roles, and manage user sign-in and authentication of your application. You can learn about working with Catalyst Authentication from the remote console from the Authentication help document. ### Add New User When a user has signed up to a Catalyst application, unique identification values like ZUID and userID are created for them. The user is also assigned to an organization by Catalyst. You can learn more about this from the Users help page. You can add a new end-user to your Catalyst application using the code below. The user details such as their email address, last name, the application platform and the role they must be added to, are passed through an instance of the ZCSignUpData class. The user registration process is handled by the registerUser() method, after obtaining an instance of the ZCUser class. Note: * You will be able to add only 25 users in your application in the development environment. After you deploy your application to production, you can include any number of end-users in it. * You must provide the values for EmailId and FirstName to register a user mandatorily. * You can obtain the RoleId from the _Roles_ section in _Authentication_ in the Catalyst console. * When inviting a new user, you can configure the sender's email address, subject and the email message. You must add the email address in the Catalyst Mail Component and get it verified before using it in the SDK code. #### Sample Code Snippet <br> import com.zc.component.users.PlatformType; import com.zc.component.users.ZCSignUpData; import com.zc.component.users.ZCUser; import com.zc.component.ZCMailTemplateDetails; //Get an instance of ZCSignUpData ZCSignUpData signUpdetails = ZCSignUpData.getInstance(); //Pass the necessary data for the sign-up using the instance ZCMailTemplateDetails mailData= signUpdetails.mailTemplateInstance(); mailData.setSendersMail("docofoh552@lukaat.com"); mailData.setSubject("Welcome to %APP_NAME%"); mailData.setMessage("<p>Hello ,</p> <p>Follow this link to join in %APP_NAME% .</p> <p><a href='\%LINK%\'>%LINK%</a></p> <p>If you didn’t ask to join the application, you can ignore this email.</p> <p>Thanks,</p> <p>Your %APP_NAME% team</p>"); signUpdetails.setTemplateDetails(mailData); signUpdetails.setPlatformType(PlatformType.WEB); signUpdetails.userDetail.setEmailId("p.boyle@zylker.com"); signUpdetails.userDetail.setLastName("Boyle"); signUpdetails.userDetail.setRoleId(1256000000228024L); //Register the user using an instance of ZCUser class signUpdetails = ZCUser.getInstance().registerUser(signUpdetails); -------------------------------------------------------------------------------- title: "Get All Org IDs" description: "This page describes the method to collect all the Org IDs associated to your Java application using Catalyst Authentication with sample code snippets." last_updated: "2026-09-29T06:07:16.175Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/authentication/get-org-id/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - User Management (/en/cloud-scale/help/authentication/user-management/users/introduction/) -------------------------------------------------------------------------------- # Get All Org IDs Org ID or ZAAID is the unique identification of the organization that an end-user belongs to. This identification is generated when the end-user signs up to your application through any of the authentication types, gets added through the Add User API or through the Add User button in the console. The SDK snippet below demonstrates fetching all the Org IDs generated while adding new users to your application using the getAllOrgs() method. #### Sample Code Snippet <br> import com.zc.component.users.ZCUser; ZCUser user = ZCUser.getInstance(); user.getAllOrgs(); <br /> -------------------------------------------------------------------------------- title: "Add User to Existing Org" description: "This page describes the method to add new end-users to your Java application using Catalyst Authentication with sample code snippets." last_updated: "2026-09-29T06:07:16.175Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/authentication/add-new-user-to-existing-org/" service: "Cloud Scale" related: - Add New User to Existing Org - API (/en/api/code-reference/cloud-scale/authentication/add-user-to-existing-org/#AddaNewUsertoanExistingOrganization) - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Add a New User to an Existing Organization The code snippet given below allows registering a user to an existing orginization without creating a new organization. Note: * FirstName, EmailId and OrgIDare mandatory attributes. * When inviting a new user, you can configure the sender's email address, subject and the email message. You must add the email address in the Catalyst Mail Component and get it verified before using it in the SDK code. #### Sample Code Snippet <br> import com.zc.component.users.PlatformType; import com.zc.component.users.ZCSignUpData; import com.zc.component.users.ZCUser; import com.zc.component.ZCMailTemplateDetails; //Get an instance of ZCSignUpData ZCSignUpData signUpdetails = ZCSignUpData.getInstance(); //Pass the necessary data for the sign-up using the instance ZCMailTemplateDetails mailData= signUpdetails.mailTemplateInstance(); mailData.setSendersMail("docofoh552@lukaat.com"); mailData.setSubject("Welcome to %APP_NAME%"); mailData.setMessage("<p>Hello ,</p> <p>Follow this link to join in %APP_NAME% .</p> <p><a href='\%LINK%\'>%LINK%</a></p> <p>If you didn’t ask to join the application, you can ignore this email.</p> <p>Thanks,</p> <p>Your %APP_NAME% team</p>"); signUpdetails.setTemplateDetails(mailData); signUpdetails.setPlatformType(PlatformType.WEB); signUpdetails.userDetail.setEmailId("amelia.burrows@zylker.com"); signUpdetails.userDetail.setLastName("Amelia"); signUpdetails.userDetail.setOrgId("35712181"); //Pass user's OrgID here //Register the user using signUpdetails signUpdetails = ZCUser.getInstance().addUser(signUpdetails); -------------------------------------------------------------------------------- title: "Get All Users in an Organization" description: "This page describes the method to add get all the users associated to an organization in your Java application using Catalyst Authentication with sample code snippets." last_updated: "2026-09-29T06:07:16.175Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/authentication/get-users-in-org/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - User Management (/en/cloud-scale/help/authentication/user-management/users/introduction/) -------------------------------------------------------------------------------- # Get All Users in an Organization The SDK snippet below demonstrates fetching the list of all users of an organization using the getAllUsers() method. #### Sample Code Snippet <br> import com.zc.component.users.ZCUser; ZCUser user = ZCUser.getInstance(); user.getAllUser(10062701096); // Enter your Org ID here -------------------------------------------------------------------------------- title: "Reset Password" description: "This page describes the method to add new end-users to your Java application using Catalyst Authentication with sample code snippets." last_updated: "2026-09-29T06:07:16.175Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/authentication/reset-password/" service: "Cloud Scale" related: - Reset Password - API (/en/api/code-reference/cloud-scale/authentication/reset-user-password/#ResetUserPassword) - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Reset Password After the successful registration of a user, you can reset the password using the following code snippet. When called, the resetPassword() method generates a reset password link and sends it to the user's Email address. Note: You can configure the sender's email address, subject and the email message. You must add the email address in the Catalyst Mail Component and get it verified before using it in the SDK code. #### Sample Code Snippet <br> import com.zc.component.users.PlatformType; import com.zc.component.users.ZCSignUpData; import com.zc.component.users.ZCUser; import com.zc.component.ZCMailTemplateDetails; //Get an instance of ZCSignUpData ZCSignUpData signUpdetails = ZCSignUpData.getInstance(); //Pass the necessary data for the sign-up using the instance ZCMailTemplateDetails mailData= signUpdetails.mailTemplateInstance(); mailData.setSendersMail("docofoh552@lukaat.com"); mailData.setSubject("Welcome to %APP_NAME%"); mailData.setMessage("<p>Hello ,</p> <p>Follow this link to join in %APP_NAME% .</p> <p><a href='\%LINK%\'>%LINK%</a></p> <p>If you didn’t ask to join the application, you can ignore this email.</p> <p>Thanks,</p> <p>Your %APP_NAME% team</p>"); signUpdetails.setTemplateDetails(mailData); signUpdetails.setPlatformType(PlatformType.WEB); signUpdetails.userDetail.setEmailId("amelia.burrows@zylker.com"); signUpdetails.userDetail.setLastName("Burrows"); //Call reset password to send a mail to reset password ZCUser.getInstance().resetPassword(signUpdetails); -------------------------------------------------------------------------------- title: "Generate a Custom Server Token" description: "This page describes the method to add new end-users to your Java application using Catalyst Authentication with sample code snippets." last_updated: "2026-09-29T06:07:16.175Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/authentication/third-party-server-token/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Generate a Custom Server Token Cloud Scale's Authentication component allows you to implement a third-party authentication service of your preference for your Catalyst application. The authorization and validation of the end-user is handled by the third-party service, and the data is passed on to Catalyst. Note: * Since you are implementing a third-party authentication service, it is understood that the security infrastructure of your application is contingent on the efficiency of the third-party service that you have chosen. * To enable a third-party authentication in your Catalyst application, you must ensure that you have enabled Public Signup in the console. When a user is re-directed from a third-party service after being authenticated, their credentials must be passed to an authentication function that you code. This function must include the Catalyst server-side logic to generate a custom server token, which will then be passed to the Web SDK incorporated in the client code. A sample code to generate a custom server token is given below. #### Sample Code Snippet ZCCustomTokenDetails customTokenDetails = ZCCustomTokenDetails.getInstance(); ZCCustomTokenUserDetails tokenUserDetails = ZCCustomTokenUserDetails.getInstance(); //Set token user details tokenUserDetails.setEmailId("emma@zylker.com"); tokenUserDetails.setFirstName("Amelia"); tokenUserDetails.setLastName("Burrows"); tokenUserDetails.setRoleName("App Admin"); customTokenDetails.setUserDetails(tokenUserDetails); ZCCustomTokenResponse customTokenResp = ZCUser.getInstance().generateCustomToken(customTokenDetails); You can now pass this token to the client logic as explained in this Web SDK help page. Note: The custom server token will have to be generated every single time the user logs in to your application using a third-party authentication service. -------------------------------------------------------------------------------- title: "Custom User Validation" description: "This page describes the method to add new end-users to your Java application using Catalyst Authentication with sample code snippets." last_updated: "2026-09-29T06:07:16.176Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/authentication/custom-user-validation/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Custom User Validation Catalyst Authentication allows you to authorize and validate your end-users using a custom Basic I/O function on the event of a sign-up to your Catalyst application. You can write your own logic and process the credentials that the user provides through this function, and grant access to your application. A sample code for a Custom User Validation function is given below. #### Sample Code Snippet <br> import com.catalyst.Context; import com.catalyst.basic.BasicIO; import com.catalyst.basic.ZCFunction; import com.zc.api.APIConstants.ZCSignupValidationStatus; import com.zc.common.ZCProject; import com.zc.component.auth.ZCSignupResponseUserDetails; import com.zc.component.auth.ZCSignupUserValidationRequest; import com.zc.component.auth.ZCSignupUserValidationResponse; import com.zc.component.users.ZCSignupUserService; The validation logic can be set based on your preference. In this example, we have depicted the logic with @notallowedemail. If the user tries to sign up using a disallowed email addressed, the user will not be allowed to sign up. public class MainClass implements ZCFunction { private static final Logger LOGGER = Logger.getLogger(MainClass.class.getName()); @Override public void runner(Context context, BasicIO basicIO) throws Exception { try { ZCProject.initProject(); ZCSignupUserValidationRequest requestDetails = ZCSignupUserService.getSignupValidationRequest(basicIO); if(requestDetails != null) { /* Validation logic starts */ LOGGER.info("Inside null check"); ZCSignupUserValidationResponse validationResponse = ZCSignupUserValidationResponse.getInstance(); if(requestDetails.getUserDetails().getEmailId().contains("@notallowedmail")) { validationResponse.setStatus(ZCSignupValidationStatus.FAILURE); // The user has failed authentication } else { validationResponse.setStatus(ZCSignupValidationStatus.SUCCESS); // The actions that occur in the event of a successful authentication can be customized ZCSignupResponseUserDetails respUserDetails = ZCSignupResponseUserDetails.getInstance(); respUserDetails.setFirstName("Patricial"); respUserDetails.setLastName("Boyle"); respUserDetails.setRoleIdentifier("App User"); respUserDetails.setOrgId("1241113"); validationResponse.setUserDetails(respUserDetails); } basicIO.write(validationResponse); /* Validation logic ends */ } } catch(Exception e) { basicIO.write(e); LOGGER.log(Level.SEVERE,"Exception in MainClass",e); basicIO.setStatus(500); } } } <br> To test this function, you can pass the details of the user in the following .JSON format: { "request_type": "add_user", "request_details": { "user_details": { "email_id": "emmy@zylker.com", "first_name": "Emma", "last_name": "Thompson", "org_id": "65**************", "role_details": { "role_name": "Moderator", "role_id": "10*****" } }, "auth_type": "web" } } -------------------------------------------------------------------------------- title: "Get User Details" description: "This page describes the method to add new end-users to your Java application using Catalyst Authentication with sample code snippets." last_updated: "2026-09-29T06:07:16.176Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/authentication/get-user-details/" service: "Cloud Scale" related: - Get User Details - API (/en/api/code-reference/cloud-scale/authentication/get-current-user/#GetCurrentUser) - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Get User Details Catalyst Authentication provides some variants to retrieve the details of the app users. It is possible to obtain the user information of the current user, any, or all users of the application. ### Get Current User Details This code fetches the details of an user on whose scope the function is getting executed. #### Sample Code Snippet <br> import com.zc.component.ZCUserDetail; import com.zc.component.users.ZCUser; //Create an instance of the ZCUser object to get current user information ZCUserDetail details = ZCUser.getInstance().getCurrentUser(); ### Get All User Details This code can fetch the details of all the users who are registered with the application. #### Sample Code Snippet <br> import com.zc.component.ZCUserDetail; import com.zc.component.users.ZCUser; //Create an instance of ZCUser and call getAllUser to get all the users in the application List&lt;ZCUserDetail&gt; details = ZCUser.getInstance().getAllUser(); ### Get User Details by User ID Unlike the previous code, when you want to retrieve the information of a particular user, you can use this code where the User ID of the user is passed as a parameter to the getUser() method. #### Sample Code Snippet <br> import com.zc.component.ZCUserDetail; import com.zc.component.users.ZCUser; //Create an instance of the ZCUser object and use user id to get user information based on id ZCUserDetail details = ZCUser.getInstance().getUser(1510000000113214L); -------------------------------------------------------------------------------- title: "Update Details of a User" description: "This page describes the method to modify or update a user's details signed up to your Java application using Catalyst Authentication with sample code snippets." last_updated: "2026-09-29T06:07:16.176Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/authentication/update-user-details/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Modify a User's Details in the Console (/en/cloud-scale/help/authentication/user-management/users/implementation/#modify-a-users-details) -------------------------------------------------------------------------------- # Update Details of a User Catalyst allows you to modify and update the following details of an end-user: * First Name * Last name * **ZAAID**: **ZAAID** or Org ID, is a unique value that is generated by Catalyst to associate with an organization. * RoleID: Role ID is the value generated by Catalyst that is assigned to a particular user role. The SDK snippet below demonstrates updating an end-user's details using the updateUser() method. The first name of the user is updated in the example below. The getUserID() method will fetch the User ID of the user. The UserID will be present in the *Users* > *User Management* section of the Authentication component. #### Sample Code Snippet <br> import com.zc.component.ZCUserDetail; import com.zc.component.users.ZCUser; ZCUser user = ZCUser.getInstance(); ZCUserDetail userDetail = user.getCurrentUser(); userDetail.setFirstName("Josh"); user.updateUser(userDetail.getUserId(), userDetail); <br /> -------------------------------------------------------------------------------- title: "Enable or Disable a User" description: "This page describes the method to enable or disable a user in your Java application using Catalyst Authentication with sample code snippets." last_updated: "2026-09-29T06:07:16.176Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/authentication/enable-disable-user/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) - Enable or Disable a User in the Console (/en/cloud-scale/help/authentication/user-management/users/implementation/#enable-or-disable-a-user) -------------------------------------------------------------------------------- # Enable or Disable a User Catalyst allows you to disable or enable a user at any time. A disabled user will still be listed in the *Users* section in your project, but will not be able to access your application. The SDK snippet below demonstrates enabling and disabling an end-user using the updateUserStatus() method. The user is referred by their unique User ID. You can find the User IDs of all users by navigating to the *Users* > *User Management* section of the Authentication component. ### To Enable a User #### Sample Code Snippet <br> import com.zc.component.ZCUserDetail; import com.zc.component.users.ZCUser; ZCUser user = ZCUser.getInstance(); user.updateUserStatus(USER_ID, USER_STATUS.ENABLE); ### To Disable a User #### Sample Code Snippet <br> import com.zc.component.ZCUserDetail; import com.zc.component.users.ZCUser; ZCUser user = ZCUser.getInstance(); user.updateUserStatus(USER_ID, USER_STATUS.DISABLE); <br /> -------------------------------------------------------------------------------- title: "Delete User" description: "This page describes the method to delete users from your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.176Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/authentication/delete-user/" service: "Cloud Scale" related: - Authentication (/en/cloud-scale/help/authentication/introduction) -------------------------------------------------------------------------------- # Delete User You can delete the end users of a Catalyst application to remove their access to it permanently. This is done using the deleteUser() method. You must pass the UserID of the user as the parameter to this method as shown below. #### Sample Code Snippet <br> import com.zc.component.users.ZCUser; ZCUser.getInstance().deleteUser(1510000000109587l); //Pass the UserID of the user to be deleted ### Cache -------------------------------------------------------------------------------- title: "Get a Segment Instance" description: "This page describes the method to get a cache segment instance in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.177Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/cache/get-segment-instance/" service: "Cloud Scale" related: - Cache (/en/cloud-scale/help/cache/introduction) -------------------------------------------------------------------------------- # Cache ### Get a segment instance The first step in referring to a cache segment is to create an empty segment instance using the getSegmentInstance() method which doesn't actually fire a server side call. This empty segment instance does not hold any values. #### Sample Code Snippet import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCSegment; //Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with segment ID ZCSegment segment = cacheobj.getSegmentInstance(1510000000054091L); -------------------------------------------------------------------------------- title: "Retrieve Data from the Cache" description: "This page describes the method to retrieve data from the cache in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.177Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/cache/retrieve-data-from-cache/" service: "Cloud Scale" related: - Retrieve Data from the Cache - API (/en/api/code-reference/cloud-scale/cache/get-cache-value/#GetCacheValue) - Cache (/en/cloud-scale/help/cache/introduction) -------------------------------------------------------------------------------- # Retrieve Data from Cache ### Retrieve the value by key name Every cache segment contains key-value pairs. Both keys and values are _String_ type. The value of a key is retrieved through the getCacheValue() method. #### Sample Code Snippet import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCSegment; //Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with segment ID ZCSegment segment = cacheobj.getSegment(1510000000054091L); //Get The value of the cache object using key String cacheValue= segment.getCacheValue("Val"); ### Retrieve the cache object by key name Another variant for retrieving a cache object is to return the corresponding value of a key as a cache object. Note: The cache object contains all of its attributes such as key, value, and expiry time. #### Sample Code Snippet import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCCacheObject; import com.zc.component.cache.ZCSegment; //Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with segment ID ZCSegment segment = cacheobj.getSegment(1510000000054091L); //replace segment id //Get The Cache object using key ZCCacheObject cacheValue = segment.getCacheObject("Name"); // replace cache key -------------------------------------------------------------------------------- title: "Insert Data into Cache" description: "This page describes the method to insert data into the cache in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.177Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/cache/insert-data-into-cache/" service: "Cloud Scale" related: - Insert Data into the Cache - API (/en/api/code-reference/cloud-scale/cache/insert-key-value-in-segment/#InsertKey-ValueinCacheSegment) - Cache (/en/cloud-scale/help/cache/introduction) -------------------------------------------------------------------------------- # Insert data into the cache In addition to retrieving cache information, the following putCache() variants also support inserting cache object elements. ### Insert a key-value pair The following code inserts a key-value pair to a cache segment through putCacheValue() method. Note: The expiry time is set to 48 hours by default. #### Sample Code Snippet import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCCacheObject; import com.zc.component.cache.ZCSegment; //Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with segment ID ZCSegment segment = cacheobj.getSegment(1510000000054091L); //Put Value in Cache as key-value pair (with a default Expiry Time of 48 hours) ZCCacheObject cache = segment.putCacheValue("Name", "Amelia Burrows"); ### Insert a key-value pair with an expiry time Similar to the previous case, along with key and value parameters, the optional parameter expiry time is used in this variant. Note: The value of the expiry time must be passed as a long value in hours. #### Sample Code Snippet import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCCacheObject; import com.zc.component.cache.ZCSegment; //Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with segment ID ZCSegment segment = cacheobj.getSegment(1510000000054091L); //Put Value in Cache as key-value pair with specified expiry time. (Time in hours) ZCCacheObject cache = segment.putCacheValue("LastName", "S", 1L); ### Insert a key-value pair through a cache object The following code inserts a key-value pair to a cache segment through putCacheObject() method. Note: If the key name already exists in a cache segment, it will be replaced with the new value inserted. #### Sample Code Snippet import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCCacheObject; import com.zc.component.cache.ZCSegment; //Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with segment ID ZCSegment segment = cacheobj.getSegment(1510000000054091L); //Create a CacheObject and set cache segment attributes ZCCacheObject cacheDetails = ZCCacheObject.getInstance(); cacheDetails.setKeyName("ObjectKey"); cacheDetails.setValue("ObjectValue"); cacheDetails.setExpiryInHours(1L); //Create the cache using the CacheObject ZCCacheObject cache = segment.putCacheObject(cacheDetails); -------------------------------------------------------------------------------- title: "Update Data in Cache" description: "This page describes the method to update data in the cache in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.177Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/cache/update-data-in-cache/" service: "Cloud Scale" related: - Update Data in Cache - API (/en/api/code-reference/cloud-scale/cache/update-key-value/#UpdateKey-ValuePair) - Cache (/en/cloud-scale/help/cache/introduction) -------------------------------------------------------------------------------- # Update Data in Cache Existing data from the cache can be updated through updateCacheValue() method.It comes with the following two variants, ### Update cache value of a key This variant updates the value of the existing key, by passing the updated value as parameter to the updateCacheValue() method. The expiry time of the key is maintained as its previous value. #### Sample Code Snippet import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCSegment; //Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with a segment ID ZCSegment segment = cacheobj.getSegment(1510000000054091L); //replace segment id // Updates the value of the existing cache’s key ZCCache.getInstance().updateCacheValue("time_taken", "10"); ### Update cache value with expiry time Similar to the above one, this variant updates the value of the key, where the expiry time of the key is also passed as the parameter to the method. The value of the expiry time is updated with the new value passed as a long int value in hours. #### Sample Code Snippet import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCSegment; //Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with a segment ID ZCSegment segment = cacheobj.getSegment(151xxxxxxxxxL); //Update the value of the existing cache’s key with its expiry time ZCCache.getInstance().updateCacheValue("time_taken", "48", 2L); -------------------------------------------------------------------------------- title: "Delete a Key-Value Pair" description: "This page describes the method to delete a key-value pair using a key or cache object in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.177Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/cache/delete-key-value-pair/" service: "Cloud Scale" related: - Cache (/en/cloud-scale/help/cache/introduction) -------------------------------------------------------------------------------- # Delete a key-value pair When a key-value pair is no longer needed, it can be permanently deleted from the cache segment. The key-value pair cannot be restored once it is deleted,but it can be recreated. ### Delete using a key You can delete a key by passing it directly to the deleteCacheValue() method as a parameter. #### Sample Code Snippet import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCSegment; //Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with segment ID ZCSegment segment = cacheobj.getSegment(1510000000054091L); //Delete the Cache object using key segment.deleteCacheValue("Name"); ### Delete using a cache object In this delete variant, an empty cache instance is constructed and the key value is set to it. This instance is passed as an argument to the deleteCacheObject() method. #### Sample Code Snippet import com.zc.component.cache.ZCCache; import com.zc.component.cache.ZCCacheObject; import com.zc.component.cache.ZCSegment; //Get a Cache Instance ZCCache cacheobj=ZCCache.getInstance(); //Get an instance of a specific segment with segment ID ZCSegment segment = cacheobj.getSegment(1510000000054091L); //Create a CacheObject and set cache details ZCCacheObject cacheDetails = ZCCacheObject.getInstance(); cacheDetails.setKeyName("ObjectKey"); //Delete the cache using the CacheObject segment.deleteCacheObject(cacheDetails); ### Connections -------------------------------------------------------------------------------- title: "Get Connections Instance" description: "This page describes the method to get an instance for the Connections component to allow you to use the Connections SDK methods." last_updated: "2026-09-29T06:07:16.178Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/connections/get-connections-instance/" service: "Cloud Scale" related: - Connections Help (/en/cloud-scale/help/connections/introduction/) - JavaScript SDK (/en/sdk/javascript/v1/overview/) - Connections Python SDK (/en/sdk/python/v1/cloud-scale/connections/get-connections-instance/) -------------------------------------------------------------------------------- # Connections Connections allows you to integrate with Zoho and other third-party services while managing all the authentication token requirement. ### Get Connections Instance Note: This SDK can only be accessed within Catalyst services like Functions and AppSail. It cannot be used to integrate with third-party services. You can get the connections component reference as shown below. This will not fire a server-side call. We will refer to this component instance in various code snippets of working with Connections. **Package Import** import com.zc.component.connections.ZCConnections; import com.zc.component.connections.beans.ZCConnectionResponse; // create connection instance ZCConnections connections = ZCConnections.getInstance(); -------------------------------------------------------------------------------- title: "Get Authentication Credentials" description: "This page describes the method to acquire the required authentication credentials." last_updated: "2026-09-29T06:07:16.178Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/connections/get-credentials/" service: "Cloud Scale" related: - Connections Help (/en/cloud-scale/help/connections/introduction/) - JavaScript SDK (/en/sdk/javascript/v1/overview/) - Connections Python SDK (/en/sdk/python/v1/cloud-scale/connections/get-credentials/) -------------------------------------------------------------------------------- # Get Authentication Credentials Note: This SDK can only be accessed within Catalyst services like Functions and AppSail. It cannot be used to integrate with third-party services. This SDK method can be used obtain the authentication credentials for various Zoho services, listed as Default Services. The connections reference used in the below code snippet is the component instance. import com.zc.component.connections.ZCConnections; import com.zc.component.connections.beans.ZCConnectionResponse; // create connection instance ZCConnections connections = ZCConnections.getInstance(); // retrieve the authentication credentials for the specified connection ZCConnectionResponse connectionResponse = connections.getConnectionCredentials("payrollcon"); // connection response System.out.println("Connection Response Headers: " + connectionResponse.getHeaders()); System.out.println("Connection Response Parameters: " + connectionResponse.getParameters()); ### Data Store -------------------------------------------------------------------------------- title: "Get Table Meta" description: "This page describes the method to fetch the meta data of a single table or multiple tables in your Java application with sample code snippets" last_updated: "2026-09-29T06:07:16.178Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/get-table-meta/" service: "Cloud Scale" related: - Get Table Meta - API (/en/api/code-reference/cloud-scale/data-store/get-table-metadata/#GetTableMetadata) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get Table Meta The meta data of a single table or multiple tables can be obtained in several ways. ### Get a single table meta by tableID A table's meta data is fetched by referring the table Id, using the method getTable() as given below, #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; //Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable tableMeta = object.getTable(1510000000110121L); ### Get a single table meta by table name On the other hand, you can refer the table name also to fetch the meta data details of a table where table name is passed as an argument to the getTable() method. #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; //Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable tableMeta = object.getTable("SampleTable"); ### Get all the tables In addition to getting the meta data of a single table, you can fetch the details of all the tables in a catalyst project using getAllTables() method. #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; //Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get all the Tables in a given Project List<ZCTable> tableList =object.getAllTables(); -------------------------------------------------------------------------------- title: "Get Column Meta" description: "This page describes the method to retrieve metadata of a single column or multiple columns from a table in the Data Store in your Java application with sample code snippets" last_updated: "2026-09-29T06:07:16.178Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/get-column-meta/" service: "Cloud Scale" related: - Get Column Meta - API (/en/api/code-reference/cloud-scale/data-store/get-column-metadata/#GetColumnMetadata) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get Column Meta There are methods to retrieve the metadata of a single column or multiple columns of a particular table. ### Get a single column meta by columnID while a table's meta data was fetched previously, now it is to fetch a particular column's meta data of a table using getColumn() method. #### Sample Code Snippet <br> import com.zc.component.object.ZCColumn; import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; //Create Base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable table = object.getTable(1510000000110121L); //Get the Meta of a specific column of using columnID ZCColumn column = table.getColumn("1510000000110832"); <br> ### Get a single column meta by column name An alternative way to get the meta data of a column is referring to the table name instead of table Id. This also returns the same response as that of the previous one. #### Sample Code Snippet <br> import com.zc.component.object.ZCColumn; import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; //Create Base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable table = object.getTable(1510000000110121L); //Get the Meta of a specific column of using column name ZCColumn column = table.getColumn("Name"); <br> ### Get all the columns In addition to getting the meta data of a single column, you can retrieve the meta data of all the columns of a particular table using _getAllColumns()_ method. #### Sample Code Snippet <br> import com.zc.component.object.ZCColumn; import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; //Create Base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable table = object.getTable(1510000000110121L); //Get all the Columns in the Table List columns = table.getAllColumns(); -------------------------------------------------------------------------------- title: "Get a Table Instance" description: "This page describes the method to fetch the table instance using tableID and name from a table in the Data Store in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.198Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/get-table-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get Table Instance ### Get the table instance using tableID An empty _table instance_ is created as the first step to refer a table and perform its operations.This is done through the getTableInstance() method which actually doesn't fire a server side call. This does not hold any values. #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; //Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the tableID on base object ZCTable tableMeta =object.getTableInstance(1510000000110121L); <br> ### Get the table instance using table name Table name is passed as an argument here to refer the table, without firing the server side call which is equivalent to the previous case. #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; //Create Base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable tableMeta = object.getTableInstance("SampleTable"); -------------------------------------------------------------------------------- title: "Insert Rows" description: "This page describes the method to insert a single row or rows in bulk from a table in the Data Store in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.198Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/insert-rows/" service: "Cloud Scale" related: - Insert Rows - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Insert Rows You can insert a new row of data or a record in a table in the Data Store by referring to the table's unique ID or name. You can also insert multiple rows in a table as explained in the next section. Note: 1. The table and the columns in it must already be created. You can create a table and the columns for it from the console. 2. You will be able to insert upto 5000 records in each table per project in the development environment. You can create upto 25,000 records overall in each project in the development environment. There are no upper limits for record creation in the production environment. ### Insert a Single Row You must create a row instance and then pass the column names and their corresponding values as shown in the sample code below. The insertRow() method inserts a row to the table whose instance you create by referring to its unique name or ID. A unique RowID value for the row is automatically generated once a row is inserted. #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCTable; //Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the tableID on base object ZCTable tab = object.getTable("1510000000110121"); //Create a row instance ZCRowObject row = ZCRowObject.getInstance(); //Set the required column values using set() method on the row instance row.set("Name","George Smith"); row.set("Age", 25); //Add the single row to table by calling insertRow() method tab.insertRow(row); <br> ### Insert Multiple rows You can insert multiple rows in a table by constructing a list of row objects and passing it as an argument to the insertRows() method as shown below. #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCTable; //Create a List of RowObjects List rows = new ArrayList(); //Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the tableID on base object ZCTable tab = object.getTable(1510000000110121L); //Create required number of row instances ZCRowObject row1 = ZCRowObject.getInstance(); ZCRowObject row2 = ZCRowObject.getInstance(); //Set the column values on the respective rows using set() method row1.set("Name","George Smith"); row1.set("Age", 25); row2.set("Name","Moana Violet"); row2.set("Age", 22); //Add rows to List using add() method rows.add(row1); rows.add(row2); //Add the list to table using insertRows() method tab.insertRows(rows); -------------------------------------------------------------------------------- title: "Get Rows" description: "This page describes the method to fetch a single row or all the rows from a table in the Data Store in your Java application with sample code snippets" last_updated: "2026-09-29T06:07:16.199Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/get-rows/" service: "Cloud Scale" related: - Get Rows - API (/en/api/code-reference/cloud-scale/data-store/get-all-rows/#GetAllRows) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get Rows You can retrieve single row or multiple rows of data from a table in the Catalyst Data Store. You can fetch the rows by passing the unique Table ID of table to the getTable() method as shown in the sample code below. ### Get a Single Row You can fetch a single row of data from a table using the getRow() method. You must pass the unique Row ID of the row that you require to be fetched to this method as shown below. You must first fetch a base object instance using getInstance(). Using the base object instance, you must fetch a table instance that can be used to fetch the row. #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCTable; //Create a base object instance ZCObject ZCObject obj = ZCObject.getInstance(); //Get a table instance referring to the table ID using the base object ZCTable tab = obj.getTable(1510000000110121L); //Fetch a single row from the table by passing the Row ID ZCRowObject row = tab.getRow(1510000000108103L); <br> ### Get All Rows Through Pagination You can retrieve all the rows from a table in the Data Store by incorporating pagination in your code using the ZCRowPagedResponse class. Pagination allows you to fetch the rows of a table in batches or pages through iterations. For example, if you require the rows to be fetched in batches of 100 as individual pages, you can define a variable for the maximum rows to be fetched in each page and specify the count. The sample code below assigns maxRows as 100. Note: The maxRows parameter is optional. The SDK call will return 200 rows in a single page by default if this value is not specified. Additionally, after each execution of the loop, you will receive a token string in the response that authorizes the subsequent fetching of data. You can fetch this token through the getNextToken() method, and pass it as the value for nextToken during the subsequent iteration, as shown in the code below. During the first execution of the loop, the value for the nextToken string is assigned as null. This iteration is executed until all the rows fetched, which is validated by the moreRecordsAvailable() method. You can specify the table name and the names of the columns to be fetched as shown in the sample code. Note: Pagination has been made available from the Java SDK v1.7.0 update. This will not be available in the older versions of the Java SDK. #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCRowPagedResponse; String nextToken = null; //Declare the value for nextToken as null for the first iteration ZCRowPagedResponse pagedResp; //Define the paged response object Long maxRows = 100; //Define the maximum rows to be fetched in a single page do { pagedResp = ZCObject.getInstance().getTable(empDetails).getPagedRows(nextToken, maxRows); //Specify the table name and fetch the paged response by passing nextToken and maxRows //Fetch the columns from the table by passing the column names for(ZCRowObject row : pagedResp.getRows()) { basicIO.write("Employee ID: " +row.get("empID") + ","); basicIO.write("Name: " +row.get("empName") + ","); basicIO.write("Department: " +row.get("empDept") + ","); } //Validate the iteration and pass the token string obtained in the response for the next iteration if(pagedResp.moreRecordsAvailable()) { nextToken = pagedResp.getNextToken(); } } while(pagedResp.moreRecordsAvailable()); Note: We have deprecated support for the getAllRows() method that was available earlier to fetch multiple rows of data from a table. Pagination is now available as an enhancement that enables you to fetch all rows, without any limitations on the number of rows fetched. The getAllRows() method will be removed from all future SDK versions. Please ensure that you upgrade your code accordingly. -------------------------------------------------------------------------------- title: "Update Rows" description: "This page describes the method to update a single row or rows in bulk in a table in the Data Store in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.199Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/update-rows/" service: "Cloud Scale" related: - Update Rows - API (/en/api/code-reference/cloud-scale/data-store/update-row/#UpdateRow) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Update Rows If a single row or multiple rows are to be updated with one or more column values in a table, updateRows() method is used. Note: ROWDID should be set to update a row. #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCTable; //Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable table = object.getTable(1510000000110121L); // replace table ID //Create a List of RowObjects List<ZCRowObject> rows = new ArrayList(); //Create row instances ZCRowObject row1 = ZCRowObject.getInstance(); ZCRowObject row2 = ZCRowObject.getInstance(); //Set the updated value on the rows referring the ROWIDs row1.set("Name","Amelia S"); row1.set("Age", 19); row1.set("ROWID", 1510000000109113L); // replace row id row2.set("Name", "Walker Don"); row2.set("Age", 19); row2.set("ROWID", 1510000000109115L); // replace row id //Add Rows to the List rows.add(row1); rows.add(row2); //Update Multiple rows in table table.updateRows(rows); -------------------------------------------------------------------------------- title: "Delete Row" description: "This page describes the method to delete a single row from a table in the Data Store in your Java application with sample code snippets" last_updated: "2026-09-29T06:07:16.199Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/delete-row/" service: "Cloud Scale" related: - Delete Data - API (/en/api/code-reference/cloud-scale/data-store/delete-row/#DeleteRow) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Delete Row A row can be deleted from a table simply by passing the ROWID in the calling method deteleRow(). You will not be able to delete more than one row at a time. #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; //Create Base Object Instance ZCObject obj = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable tab = obj.getTable(1510000000110121L); //Delete a single row with its ROWID tab.deleteRow(1510000000109115L); -------------------------------------------------------------------------------- title: "Bulk Read Rows" description: "This page describes the method to read multiple rows from a table in the Data Store in your Java application with sample code snippets" last_updated: "2026-09-29T06:07:16.199Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/bulk-read/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Bulk Read Rows Catalyst allows you to perform bulk read jobs on a specific table present in the Data Store. In the SDK snippet below, the Bulk Read job can read thousands of records from a specific table and generate a CSV file containing the results of the read operation, if the job is successful. The table is referred to by its unique Table ID. Catalyst supports the following methods for bulk write in Java SDK: <table class="content-table"> <thead> <tr> <th>Method Used</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>createBulkReadJob()</td> <td>Create a new bulk read job.</td> </tr> <td>getBulkReadJobStatus()</td> <td>to find out the status and the result of the bulk read job.</td> </tr> </tbody> </table> Copy the SDK snippet below to perform a bulk read job on a particular table. #### Sample Code Snippet <br> import com.zc.component.object.bulk.ZCBulkReadServices; import com.zc.component.object.bulk.ZCBulkQueryDetails; import com.zc.component.object.bulk.ZCBulkCallbackDetails; import com.zc.component.object.bulk.ZCDataStoreBulk; import com.zc.component.object.bulk.result.ZCBulkResult; import com.zc.component.object.bulk.ZCBulkReadDetails; ZCBulkReadServices bulkRead = ZCDataStoreBulk.getInstance().getBulkReadInstance(); bulkRead.createBulkReadJob(12096000000642178L); //Provide your Table ID // create bulkread job with table ID ZCBulkQueryDetails bulkQueryDetails = ZCBulkQueryDetails.getInstance(); // get bulk query details instance ZCBulkCallbackDetails callbackDetails = ZCBulkCallbackDetails.getInstance(); // get bulk callback details instance bulkRead.createBulkReadJob(12096000000642178L, bulkQueryDetails); //Provide your Table ID // create bulkread job with table ID and query details bulkRead.createBulkReadJob(12096000000642178L, bulkQueryDetails, callbackDetails); //Provide your Table ID // create bulkread job with table ID, query details and callback details. ZCBulkReadDetails bulkReadDetails = ZCBulkReadDetails.getInstance(); // create bulk read details instance. bulkReadDetails.setTableIdentifier(12096000000642178L); //Provide your Table ID ZCBulkResult readJob = bulkRead.createBulkReadJob(bulkReadDetails); // create bulkread job with bulk read details. bulkRead.getBulkReadJobStatus(readJob.getJobId()); // get bulk read job status and result <br /> Note: A maximum of 200,000 rows can be read simultaneously using the createBulkReadJob() method. <br /> -------------------------------------------------------------------------------- title: "Bulk Write Rows" description: "This page describes the method to write multiple rows in a table in the Data Store in your Java application with sample code snippets" last_updated: "2026-09-29T06:07:16.199Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/bulk-write/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Bulk Write Rows Catalyst enables you to perform bulk write jobs on a specific table present in the Data Store. The bulk write operation can fetch thousands of records from a CSV file uploaded in Stratus and insert them in a specific table. The table is referred to by its unique Table ID. The column in which the write operation must be performed is referred to by its unique column ID. Note: To perform a bulk write operation, you must first upload the required data as a CSV file in Stratus. During the write job, the file will be referred to using the following attributes: * bucketName: The name of the bucket, where the object is stored. * objectKey: Can contain the path or the Object URL of the required object. * versionID: If the bucket has versioning enabled, then the specific versionID of the file will be stored in this attribute. These details will need to be resolved as a JSON object named objectDetails, and passed to the setObjectDetails() method. Catalyst supports the following methods for bulk write in Java SDK: <table class="content-table"> <thead> <tr> <th>Method Used</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>createBulkWriteJob(bulkWriteDetails)</td> <td>Create a new bulk write job on a specific table.</td> </tr> <td>createInsertBulkWriteJob(table ID, objectDetails)</td> <td>Create a new bulk write insert job.</td> <tr> <td>createUpsertBulkWriteJob(tableId, objectDetails, column ID)</td> <td>Create a new bulk write upsert job.</td> </tr> <tr> <td>getBulkWriteJobDetails(jobID)</td> <td>Get the status and results of a bulk write job.</td> </tr> </tbody> </table> Copy the SDK snippet below to perform a bulk write job on a particular table. #### Sample Code Snippet <br> import com.zc.component.object.bulk.ZCBulkWriteServices; import com.zc.component.object.bulk.ZCDataStoreBulk; import com.zc.component.object.bulk.result.ZCBulkResult; import com.zc.component.object.bulk.ZCBucketObjectDetails; import com.zc.component.object.bulk.ZCBulkWriteDetails ZCBulkWriteServices bulkWrite = ZCDataStoreBulk.getInstance().getBulkWriteInstance(); // create bulk write instance ZCBulkWriteDetails bulkWriteDetails = ZCBulkWriteDetails.getInstance(); // create and fill the bulk write details object bulkWriteDetails.setTableIdentifier(12096000000642178L); // Provide your Table ID bulkWriteDetails.setObjectDetails(objectDetails); ZCBulkResult bulkWriteResult = bulkWrite.createBulkWriteJob(bulkWriteDetails); // create bulk write job bulkWrite.createInsertBulkWriteJob(12096000000642178L, objectDetails); // Provide your Table ID // create bulk write insert job bulkWrite.createUpdateBulkWriteJob(12096000000642178L, objectDetails, 12096000000642900L); // Provide your Table ID and Column ID // create bulk write insert job bulkWrite.createUpsertBulkWriteJob(12096000000642178L, objectDetails, 12096000000642900L); // Provide your Table ID and Column ID // create bulk write upsert job bulkWrite.getBulkWriteJobStatus(bulkWriteResult.getJobId()); // get the bulk write job status and results <br /> Note: A maximum of 100,000 rows can be written simultaneously using the createBulkWriteJob() method. <br /> -------------------------------------------------------------------------------- title: "Bulk Delete Rows" description: "This page describes the method to delete rows in bulk from a table in the Data Store in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.200Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/bulk-delete-rows/" service: "Cloud Scale" related: - Bulk Delete Rows - API (/en/api/code-reference/cloud-scale/data-store/bulk-delete-rows/#BulkDeleteRows) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Bulk Delete Rows Catalyst enables you to delete records or rows of data in bulk from a specific table in the Data Store. The table is referred by its unique ID or name. You can obtain the table ID from Data Store or from the URL when the table is opened in the console. The bulk delete operation can delete a maximum of 200 rows in a single operation. You can add the unique ROWIDs of the rows to be deleted in an ArrayList as shown in the sample code below. You must include at least one ROWID, and can include upto 200 ROWIDs, in the code. The ArrayList is passed to the deleteRows() function through a ZCRowObject list. The table name or table ID must be passed to getTableInstance(). #### Sample Code Snippet <br> import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; //Define an ArrayList and add the ROWIDs of the records to be deleted in it ArrayList rowIdList = new ArrayList<>(); rowIdList.add(1028000000171815L); // replace row id rowIdList.add(1028000000171810L); rowIdList.add(1028000000171805L); rowIdList.add(1028000000171617L); rowIdList.add(1028000000171098L); //Pass the ArrayList to the deleteRows() function. //Pass the table ID or table name as a ZCObject. List &lt;ZCRowObject&gt; deletedRowList = ZCObject.getInstance().getTableInstance("EmpDetails").deleteRows(rowIdList); ### Mail -------------------------------------------------------------------------------- title: "Send email" description: "This page describes the method to send out emails to end-users from your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.202Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/mail/send-email/" service: "Cloud Scale" related: - Send email - API (/en/api/code-reference/cloud-scale/mail/send-email/#SendEmail) - Send email (/en/cloud-scale/help/mail/introduction) -------------------------------------------------------------------------------- # Mail Catalyst Mail enables you to add the email addresses of your business that will be used to send emails to the end-users from your Catalyst application. You can configure email addresses of public domains or of your organization's own domains. You can also use an external email client of your choice and configure its SMTP settings with Catalyst, instead of using the built-in Catalyst email client. ### Send Mail You must configure the domains, email addresses, and the SMTP settings for an email client of your choice from the console. The code snippet shown here enables you to send emails to the email addresses you specify from your Catalyst application. Catalyst enables you to set multiple email addresses as the receivers, and to CC, BCC, and reply to through a single send mail operation. You can also attach files in your email. The maximum supported limits for email recipients and file attachments in a single send mail operation are specified below: * To address: 10 * CC: 10 * BCC: 5 * Reply to: 5 * Number of file attachments: 5 * Size of file attachments: 15 MB (through a single file or multiple files upto 5 files) Note: The subject, sender, and atleast one recipient email addresses are mandatory. Other attributes of the email are optional. You must fetch an instance of ZCMailContent as shown in the code below. You can define the recipients and file attachments of an email as array lists. You must then set these lists, as well as the sender's email address, the subject and the content of the email in the ZCMailContent object, and pass it as an argument to the sendMail() method to send the email. Note: You must have configured and verified the sender's email address in the Catalyst console to be able to send emails. If the sender's email is hosted on a private domain or if you choose to use a third-party email client, you must configure them before sending emails as well. #### Sample Code Snippet import java.io.File; import com.zc.component.mail.ZCMail; import com.zc.component.mail.ZCMailContent; ZCMailContent mailContent = ZCMailContent.getInstance(); //Get a ZCMailContent instance ArrayList toMailList = new ArrayList(); //Add the recipient email addresses as an array list toMailList.add("vanessa.hyde@zoho.com"); toMailList.add("r.owens@zoho.com"); toMailList.add("chang.lee@zoho.com"); ArrayList ccMailList = new ArrayList<>(); //Add the email addresses to CC as an array list ccMailList.add("p.boyle@zylker.com"); ccMailList.add("robert.plant@zylker.com"); ArrayList bccMailList = new ArrayList<>(); //Add the email addresses to BCC as an array list bccMailList.add("ham.gunn@zylker.com"); bccMailList.add("rover.jenkins@zylker.com"); ArrayList replytoMailList = new ArrayList<>(); //Add the email addresses to reply to as an array list replytoMailList.add("peter.d@zoho.com"); replytoMailList.add("arnold.h@zoho.com"); ArrayList attachments = new ArrayList<>(); //Add the email attachments as an array list File file1 = new File("kycform.pdf"); File file2 = new File("info.png"); attachments.add(file1); attachments.add(file2); // Set the email properties in the ZCMailContent object mailContent.setFromEmail("p.boyle@zylker.com"); //Set the sender's email address mailContent.setToEmailList(toMailList); //Pass the recipient array list mailContent.setCcEmailList(ccMailList); //Pass the CC array list mailContent.setBccEmailList(bccMailList); //Pass the BCC array list mailContent.setReplyTo(replytoMailList); //Pass the reply to array list mailContent.setSubject("Greetings from Zylker Corp!"); //Set the email's subject mailContent.setContent("Hello,We're glad to welcome you at Zylker Corp. To begin your journey with us, please download the attached KYC form and fill in your details. You can send us the completed form to this same email address.We cannot wait to get started!Cheers!Team Zylker"); //Set the email's body as an HTML content mailContent.setAttachments(attachments); //Pass the email attachments array list ZCMail.getInstance().sendMail(mailContent); //Send emails using the mailContent object ### NoSQL -------------------------------------------------------------------------------- title: "Get Table Metadata" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to fetch the metadata of a NoSQL table." last_updated: "2026-09-29T06:07:16.203Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/nosql/get-table-metadata/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) - JavaScript SDK (/en/sdk/javascript/v1/zia-services/overview/) - NoSQL Python SDK (/en/sdk/python/v1/cloud-scale/nosql/get-component-instance/) -------------------------------------------------------------------------------- # NoSQL Catalyst NoSQL is a fully managed non-relational, NoSQL data storage feature that enables you to store the semi-structured, unstructured, and disparate data of your applications. Catalyst supports document-type data storage in the key-value pair based JSON format. The Catalyst NoSQL Java SDK package enables you to perform CRUD data operations on your NoSQL tables in your project. You can fetch the metadata of your NoSQL tables, create NoSQL items of various supported data types, and insert, update, fetch, or delete items in a specific table. You can also query tables or indexes of tables by specifying query conditions. ## Get Table Metadata Catalyst enables you to fetch the metadata of a NoSQL table by obtaining an instance of the Java SDK using the getInstance() method. You can get the metadata of a single table or of all tables in your project. ### Get Metadata of Single Table The metadata of a single table in Catalyst NoSQL can be obtained in two ways as mentioned in this page. The response will contain details of the table configuration, such as the partition key and sort key, TTL attribute, and more. #### Get Table Metadata with Table ID You can fetch the metadata of a NoSQL table in your project by referring to its unique Table ID using the method getTable() as given below. //public ZCNoSQLTable getTable(String tableName) throws Exception; //public ZCNoSQLTable getTable(Long tableId) throws Exception; // Get table metadata using the Table ID ZCNoSQL.getInstance().getTable(2144568989001); <br> #### Get Table Metadata with Table Name You can fetch the metadata of a NoSQL table in your project by referring the table name using the method getTable() as given below. //public ZCNoSQLTable getTable(String tableName) throws Exception; //public ZCNoSQLTable getTable(Long tableId) throws Exception; // Get table metadata using the Table name ZCNoSQL.getInstance().getTable('Employees'); Note: If you rename the table, you will need to update the changes in your code. <br> ### Get Metadata of All Tables Catalyst enables you to fetch the metadata of all the tables in your project using the getAllTables() method as shown below. //public List&lt;ZCNoSQLTable&gt; getAllTables() throws Exception; ZCNoSQL.getInstance().getAllTables(); -------------------------------------------------------------------------------- title: "Create Table Instance" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to create an instance for a NoSQL table." last_updated: "2026-09-29T06:07:16.203Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/nosql/create-table-instance/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - Create and Manage Tables (/en/cloud-scale/help/nosql/create-manage-tables/) -------------------------------------------------------------------------------- # Create Table Instance Catalyst NoSQL enables you to fetch an empty table instance of a NoSQL table. You can then use this instance to refer to that table and perform all supported table operations. This process will not fire a server-side call. You can get an instance of your NoSQL table in two ways as described in this section. ### Get Instance with Table ID Get a table instance by passing the unique ID of the table to getTableInstance() as shown below. //public ZCNoSQLTable getTableInstance(Long tableId); //public ZCNoSQLTable getTableInstance(String tableName); // Create a table instance with Table ID ZCNoSQL.getInstance().getTableInstance(37898901211); <br> ### Get Instance with Table Name Get a table instance by passing the table name to getTableInstance() as shown below. //public ZCNoSQLTable getTableInstance(Long tableId); //public ZCNoSQLTable getTableInstance(String tableName); // Create a table instance with Table ID ZCNoSQL.getInstance().getTableInstance('Employees'); -------------------------------------------------------------------------------- title: "Construct NoSQL Item" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to construct a NoSQL item." last_updated: "2026-09-29T06:07:16.203Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/nosql/construct-item/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - Working with Data (/en/cloud-scale/help/nosql/working-with-data/introduction/) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # Construct NoSQL Item Catalyst NoSQL items represent a collection of attributes that hold the data of a single data point, like records. You can insert or update items into an existing NoSQL table in your project in a Custom JSON format. However, before you insert or update an item in Catalyst, you will need to construct the item. You can construct a NoSQL item of attributes containing different data types supported by Catalyst as described in the section below. Catalyst supports several data types such as String, Number, Set of Strings, Set of Numbers, List, and Map. Refer to the full list of supported data types in the shared resource to learn more. You must mandatorily provide the values for the partition key attribute that you configured for a table in every data item. Refer to Table Keys help section to learn about the table keys, TTL attribute, and other details. <br> ### Create a New NoSQL Item You can create a new NoSQL item using the ZCNoSQLItem() method, as shown below. ZCNoSQLItem item = new ZCNoSQLItem(); #### Create a New NoSQL Item with JSON / Map You can create a new NoSQL item from a plain JSON data or from a Map after you define them as shown below. //public static ZCNoSQLItem fromJSON(String json) throws Exception; ZCNoSQLItem.fromJSON(&lt;json string&gt;); <br> ### Construct NoSQL Items of Different Data Types The code snippet below shows the formats for constructing an item with attributes of different data types: //public ZCNoSQLItem withString(String attrName, String val) throws Exception; item.withString("attribute name", "&lt;string value&gt;"); //public ZCNoSQLItem withNumber(String attrName, BigDecimal val) throws Exception; //public ZCNoSQLItem withNumber(String attrName, Number val) throws Exception; item.withNumber("attribute name", "&lt;numeric value&gt;"); //public ZCNoSQLItem withInt(String attrName, int val) throws Exception; item.withInt("attribute name", "&lt;integer value&gt;"); //public ZCNoSQLItem withBigInteger(String attrName, BigInteger val) throws Exception; item.withBigInteger("attribute name", "&lt;BigInt value&gt;"); //public ZCNoSQLItem withShort(String attrName, short val) throws Exception; item.withShort("attribute name", "&lt;Short value&gt;"); //public ZCNoSQLItem withFloat(String attrName, float val) throws Exception; item.withFloat("attribute name", "&lt;Float value&gt;"); //public ZCNoSQLItem withDouble(String attrName, double val) throws Exception; item.withDouble("attribute name", "&lt;Double value&gt;"); //public ZCNoSQLItem withLong(String attrName, long val) throws Exception; item.withLong("attribute name", "&lt;Long value&gt;"); //public ZCNoSQLItem withBinary(String attrName, byte[] val) throws Exception; //public ZCNoSQLItem withBinary(String attrName, ByteBuffer val) throws Exception; item.withBinary("attribute name", "&lt;Byte value&gt;"); //public ZCNoSQLItem withStringSet(String attrName, Set&lt;String&gt; val) throws Exception; //public ZCNoSQLItem withStringSet(String attrName, String... val) throws Exception; item.withStringSet("attribute name", "&lt;StringSet/String variadic param value&gt;"); //public ZCNoSQLItem withBigDecimalSet(String attrName, Set&lt;BigDecimal&gt; val) throws Exception; //public ZCNoSQLItem withBigDecimalSet(String attrName, BigDecimal... vals) throws Exception; item.withBigDecimalSet("attribute name", "&lt;DecimalSet/Decimal Variadic param value&gt;"); //public &lt;T extends Number&gt; ZCNoSQLItem withNumberSet(String attrName, T... vals) throws Exception; //public &lt;T extends Number&gt; ZCNoSQLItem withNumberSet(String attrName, Set&lt;T&gt; vals) throws Exception; item.withNumberSet("attribute name", "&lt;Numeric/Numeric Variadic param value&gt;"); //public ZCNoSQLItem withBinarySet(String attrName, Set&lt;byte[]&gt; val) throws Exception; //public ZCNoSQLItem withBinarySet(String attrName, byte[]... vals) throws Exception; //public ZCNoSQLItem withBinarySet(String attrName, ByteBuffer... vals) throws Exception; item.withBinarySet("attribute name", "&lt;Byte Set value&gt;"); //public ZCNoSQLItem withByteBufferSet(String attrName, Set&lt;ByteBuffer&gt; val) throws Exception; item.withByteBufferSet("attribute name", "&lt;Byte Set value&gt;"); //public ZCNoSQLItem withList(String attrName, List&lt;?&gt; val) throws Exception; //public ZCNoSQLItem withList(String attrName, Object... vals) throws Exception; item.withList("attribute name", "&lt;List/Variadic Param value&gt;"); //public ZCNoSQLItem withMap(String attrName, Map&lt;String, ?&gt; val) throws Exception; item.withMap("attribute name", "&lt;Map value&gt;"); //public ZCNoSQLItem withJSON(String attrName, String json) throws Exception; item.withJSON("attribute name", "&lt;JSON String value&gt;"); //public ZCNoSQLItem withBoolean(String attrName, boolean val) throws Exception; item.withBoolean("attribute name", "&lt;Boolean value&gt;"); //public ZCNoSQLItem withNull(String attrName) throws Exception; item.withNull("attribute name"); //public ZCNoSQLItem with(String attrName, Object val) throws Exception; item.with("attribute name", "&lt;Value&gt;"); -------------------------------------------------------------------------------- title: "NoSQL Item Operations" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK methods to perform various NoSQL item operations." last_updated: "2026-09-29T06:07:16.203Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/nosql/item-operations/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - Working with Data (/en/cloud-scale/help/nosql/working-with-data/introduction/) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # NoSQL Item Operations Catalyst NoSQL items represent a collection of attributes that hold the data of a single data point, like records. Given below are the methods that you can use with an item and perform various operations on it. #### Remove attributes from a constructed item //public ZCNoSQLItem removeAttribute(String attrName) throws Exception; item.removeAttribute("attribute name"); #### Get all the keys from the item being constructed //public Iterable&lt;Map.Entry&gt;String, Object&gt;&gt; attributes(); item.attributes(); #### Check if the constructed item contains a specific attribute //public boolean hasAttribute(String attrName); item.hasAttribute("attribute name"); #### Getting the item as a map //public Map<String, Object> asMap(); item.asMap(); //public Map&lt;String, Object&gt; getAllAttributesAsMap(); item.getAllAttributesAsMap(); #### Get the item as a JSON //public String toJSON() throws Exception; item.toJSON(); #### Get the count of the attributes in the constructed item //public int numberOfAttributes(); item.numberOfAttributes(); <br> ### ZCNoSQLAttribute You can use the ZCNoSQLAttribute class to indicate the attributes upon which you perform the operations. To access the nested elements of a Map, you can separate the attributes using ',' while using ZCNoSQLAttribute. To access a specific index of a list, you can denote it as "[&lt;index&gt;]". This is demonstrated in the example below. //public static ZCNoSQLAttribute getInstance(String ...pathElements) throws Exception; //public ZCNoSQLAttribute(List&lt;String&gt; pathElements) throws Exception; ZCNoSQLAttribute.getInstance("", ...); new ZCNoSQLAttribute("", ...) The datatypes supported by NoSQL can be denoted with the ZCNoSQLAttribute as follows: <table class="content-table nosql-components-table"> <thead> <tr> <th class="w10p">Supported Data Type</th> <th class="w10p">Notation with ZCNoSQLAttribute</th> </tr> </thead> <tbody> <tr> <td>String</td> <td>ZCNoSQLValue.DataType.S </td> </tr> <tr> <td>Numeric</td> <td>ZCNoSQLValue.DataType.N</td> </tr> <tr> <td>Binary</td> <td>ZCNoSQLValue.DataType.B </td> </tr> <tr> <td>Boolean</td> <td>ZCNoSQLValue.DataType.BOOL</td> </tr> <tr> <td>Set of String</td> <td>ZCNoSQLValue.DataType.SS</td> </tr> <tr> <td>Set of Numbers</td> <td>ZCNoSQLValue.DataType.SN</td> </tr> <tr> <td>Set of Binary</td> <td>ZCNoSQLValue.DataType.SB</td> </tr> <tr> <td>List</td> <td>ZCNoSQLValue.DataType.L</td> </tr> <tr> <td>Map</td> <td>ZCNoSQLValue.DataType.M</td> </tr> <tr> <td>Null</td> <td>ZCNoSQLValue.DataType.NuLL</td> </tr> </tbody> </table> <br> ### ZCNoSQLValue Objects of this class are used to indicate the value of attributes along with their data type, as shown below. // public ZCNoSQLValue(DataType dataType, Object value) throws Exception; //public static ZCNoSQLValue getInstance(DataType dataType, Object value) throws Exception; new ZCNoSQLValue(&lt;ZCNoSQLValue.DataType&gt;, &lt;Value&gt;) ZCNoSQLValue.getInstance(&lt;ZCNoSQLValue.DataType&gt;, &lt;Value&gt;) <br> ### ZCNoSQLResponseBean This class contains the response of the SDK calls made to the server. This includes the following methods. * getSize - Used to return the size of data read/write from or to the server. //public int getSize(); responseBean.getSize(); * getStartKey - Used to return the start key for next set of data for pagination, if more data exists. //public ZCNoSQLItem getStartKey(); responseBean.getStartKey(); * getResponseDataList - Returns the actual data. Based on the NOSQL_RETURN_VALUE, either the old or new data is returned in getNew_item() or getOld_Item() method. //public List&lt;Data&gt; getResponseDataList(); responseBean.getResponseDataList().get(&lt;index&gt;).getNew_item(); responseBean.getResponseDataList().get(&lt;index&gt;).getOld_item(); responseBean.getResponseDataList().get(&lt;index&gt;).setStatus(); -------------------------------------------------------------------------------- title: "Insert Items in Table" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to insert items in a NoSQL table." last_updated: "2026-09-29T06:07:16.204Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/nosql/insert-items/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction) - Working with Data (/en/cloud-scale/help/nosql/working-with-data/introduction/) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # Insert NoSQL Items in Table Catalyst enables you to insert items in a specific NoSQL table after you construct them. The items can be inserted in different ways as described in this section. You can refer to the help sections on adding and working with data, the Catalyst custom JSON format, and the supported data types to learn these topics in detail. Note: Catalyst enables you to insert a maximum of 25 items in bulk in a NoSQL table with a single SDK operation. ### Insert Items without Conditions You can insert new items into a NoSQL table without any conditions either by using the ZCNoSQLTable instance, or the ZCNoSQLInsertHelper instance which can be used to construct the various parts of the request. You can insert data with the ZCNoSQLTable instance as shown below. //public ZCNoSQLResponseBean insert(ZCNoSQLItem item) throws Exception; table.insert(&lt;ZCNoSQLItem&gt;); You can insert data with the ZCNoSQLInsertHelper instance as shown below. //public ZCNoSQLInsertHelper getInsertHelper(ZCNoSQLItem item) throws Exception; //public ZCNoSQLResponseBean insert() throws Exception; table.getInsertHelper(&lt;ZCNoSQLItem&gt;).insert(); This class can be used to insert data into a table with conditions. This can be obtained from ZCNoSQLTable instance. <br> ### Insert Items with Conditions You can insert attributes in existing items in a NoSQL table using specific conditions that you define. In this type, the existing data of the table is retrieved and evaluated against the specified condition. The items are inserted only if the evaluation is true. If there is no existing data, the conditions are ignored and the items are inserted. The snippet below shows inserting items with conditions using ZCNoSQLCondition. //public ZCNoSQLInsertHelper withCondition(ZCNoSQLCondition condition) throws Exception; table.getInsertHelper(&lt;ZCNoSQLItem&gt;).withCondition(&lt;ZCNoSQLCondition&gt;).insert(); Condition can be passed with the help of ZCNoSQLCondition instance which can be obtained by using a constructor or calling the getInstance() method. Conditions can be initialized in 3 methods #### 1. Using functions //public static ZCNoSQLCondition getInstance(NoSQLConditionFunction function) throws Exception; //public ZCNoSQLCondition(NoSQLConditionFunction function) throws Exception; ZCNoSQLCondition.getInstance(&lt;NoSQLCondtitionFunction&gt;); new ZCNoSQLCondition(&lt;NoSQLCondtitionFunction&gt;) There are two built in-functions available. i. ZCNoSQLAttributeTypeFunction Check if the data type of the given attribute matched the given datatype. //public ZCNoSQLAttributeTypeFunction(ZCNoSQLAttribute attribute, ZCNoSQLValue.DataType dataType) throws Exception; //public static ZCNoSQLAttributeTypeFunction getInstance(ZCNoSQLAttribute attribute, ZCNoSQLValue.DataType dataType) throws Exception; ZCNoSQLAttributeTypeFunction.getInstance(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue.DataType&gt;); new ZCNoSQLAttributeTypeFunction(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue.DataType&gt;); ii. ZCNoSQLAttributeExistFunction This is used to evaluate if an attribute already exists in the retrieved item. //public ZCNoSQLAttributeExistFunction(ZCNoSQLAttribute attribute); //public static ZCNoSQLAttributeExistFunction getInstance(ZCNoSQLAttribute attribute); ZCNoSQLAttributeExistFunction.getInstance(&lt;ZCNoSQLAttribute&gt;); new ZCNoSQLAttributeExistFunction(&lt;ZCNoSQLAttribute&gt;) <br> #### 2. Using operator, operand and value //public static ZCNoSQLCondition getInstance(ZCNoSQLAttribute attribute, NOSQL_OPERATOR operator, ZCNoSQLValue value) throws Exception; //public ZCNoSQLCondition(ZCNoSQLAttribute attribute, NOSQL_OPERATOR operator, ZCNoSQLValue value) throws Exception; ZCNoSQLCondition.getInstance(&lt;ZCNoSQLAttribute&gt;, &lt;NOSQL_OPERATOR&gt;, &lt;ZCNoSQLValue&gt;); new ZCNoSQLCondition(&lt;ZCNoSQLAttribute&gt;, &lt;NOSQL_OPERATOR&gt;, &lt;ZCNoSQLValue&gt;); #### NOSQL_OPERATOR The allowed NOSQL_OPERATOR values are contains, not_contains, begins_with, ends_with, in, not_in, between, not_between, equals, not_equals, greater_than, less_than, greater_equal, less_equal #### Using group of conditions //public static ZCNoSQLCondition getInstance(List&lt;ZCNoSQLCondition&gt; groups, NOSQL_CONDITION_GROUP_OPERATOR groupOperator) throws Exception; //public ZCNoSQLCondition(List&lt;ZCNoSQLCondition&gt; groups, NOSQL_CONDITION_GROUP_OPERATOR groupOperator) throws Exception; ZCNoSQLCondition.getInstance(List&lt;ZCNoSQLCondition&gt;,&lt;NOSQL_CONDITION_GROUP_OPERATOR&gt;) new ZCNoSQLCondition(List&lt;ZCNoSQLCondition&gt;,&lt;NOSQL_CONDITION_GROUP_OPERATOR&gt;) #### NOSQL_CONDITION_GROUP_OPERATOR The allowed NOSQL_CONDITION_GROUP_OPERATOR values are AND, OR #### NOSQL_RETURN_VALUE Indicates the return value after evaluating condition. //public ZCNoSQLInsertHelper withReturnValue(NOSQL_RETURN_VALUE returnValue) throws Exception table.getInsertHelper(&lt;ZCNoSQLItem&gt;).withReturnValue(&lt;NOSQL_RETURN_VALUE&gt;).insert(); The allowed NOSQL_RETURN_VALUE values are NEW, OLD, NULL #### Insert with Condition and Return Value table.getInsertHelper(&lt;ZCNoSQLItem&gt;).withCondition(&lt;ZCNoSQLCondition&gt;).withReturnValue(&lt;NOSQL_RETURN_VALUE&gt;).insert(); -------------------------------------------------------------------------------- title: "Update Items" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to update items in a NoSQL table." last_updated: "2026-09-29T06:07:16.204Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/nosql/update-items/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction/) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # Update Items in a NoSQL Table Catalyst enables you to update items in a specific NoSQL table after you construct them. An item can be updated by identifying it using its primary keys. For instance, you can use just the partition key or a combination of the partition key and sort key to identify the item. You can then define the update operation type with the appropriate HTTP request method and provide the attributes and values to be updated in the item. Note: Catalyst enables you to update a maximum of 25 items in bulk in a NoSQL table with a single SDK operation. There are two ways to update the data. Data can be updated without any conditions by using the ZCNoSQLTable instance or it can be updated with the help of ZCNoSQLUpdateHelper instance which can be used to construct the various parts of the request. You can update the data with the ZCNoSQLTable instance as shown below. //public ZCNoSQLResponseBean update(ZCNoSQLItem item, ZCNoSQLUpdateAttributeOperation updateAttributeOperation) throws Exception; table.update(&lt;ZCNoSQLItem&gt;, &lt;ZCNoSQLUpdateAttributeOperation&gt;); To update with ZCNoSQLUpdateHelper #### ZCNoSQLUpdateHelper //public ZCNoSQLInsertHelper getInsertHelper(ZCNoSQLItem item) throws Exception; //public ZCNoSQLResponseBean insert() throws Exception; table.getUpdateHelper(&lt;ZCNoSQLItem&gt;, &lt;ZCNoSQLUpdateAttributeOperation&gt;).update(); #### ZCNoSQLUpdateAttributeOperation This class is used update the item by either adding/updating existing attribute or deleting existing attribute. An instance of the above can be obtained using the below methods. For inserting or updating attributes //ZCNoSQLUpdateAttributeOperation(ZCNoSQLAttribute attribute, ZCNoSQLValue updateValue); //ZCNoSQLUpdateAttributeOperation(ZCNoSQLAttribute attribute, NoSQLUpdateAttributeFunction updateFunction); //public static ZCNoSQLUpdateAttributeOperation getPutAttributeInstance(ZCNoSQLAttribute attribute, ZCNoSQLValue updateValue); // public static ZCNoSQLUpdateAttributeOperation getPutAttributeInstance(ZCNoSQLAttribute attribute, NoSQLUpdateAttributeFunction updateFunction); new ZCNoSQLUpdateAttributeOperation(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue&gt;); new ZCNoSQLUpdateAttributeOperation(&lt;ZCNoSQLAttribute&gt;, &lt;NoSQLUpdateAttributeFunction&gt;); ZCNoSQLUpdateAttributeOperation.getPutAttributeInstance(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue&gt;); ZCNoSQLUpdateAttributeOperation.getPutAttributeInstance(&lt;ZCNoSQLAttribute&gt;, &lt;NoSQLUpdateAttributeFunction&gt;) For Deleting attributes //ZCNoSQLUpdateAttributeOperation(ZCNoSQLAttribute attribute); //public static ZCNoSQLUpdateAttributeOperation getDeleteAttributeInstance(ZCNoSQLAttribute attribute); new ZCNoSQLUpdateAttributeOperation(&lt;ZCNoSQLAttribute&gt;); ZCNoSQLUpdateAttributeOperation.getDeleteAttributeInstance(&lt;ZCNoSQLAttribute&gt;); Update also have certain prebuilt functions that can be used to update the values. These functions can be grouped under the type NoSQLUpdateAttributeFunction and can be used while obtaining the ZCNoSQLUpdateAttributeOperation instance. ### NoSQLUpdateAttributeFunction There are 4 prebuild functions. #### ZCNoSQLIfNotExistFunction This function is used update the attribute with the value of another existing attribute. If the attribute does not exist, then the given value is updated. //public ZCNoSQLIfNotExistFunction(ZCNoSQLAttribute attribute, ZCNoSQLValue value) //public static ZCNoSQLIfNotExistFunction getInstance(ZCNoSQLAttribute attribute, ZCNoSQLValue value); new ZCNoSQLIfNotExistFunction(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue&gt;) ZCNoSQLIfNotExistFunction.getInstance(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue&gt;) #### ZCNoSQLAppendListFunction This function is append elements to existing or new list attribute. //public ZCNoSQLAppendListFunction(ZCNoSQLValue...values); //public static ZCNoSQLAppendListFunction getInstance(ZCNoSQLValue...values); new ZCNoSQLAppendListFunction(&lt;List of ZCNoSQLValue&gt;) ZCNoSQLAppendListFunction.getInstance(&lt;List of ZCNoSQLValue&gt;) #### ZCNoSQLAdditionFunction This function is used to add elements to a set or add numeric value to existing attribute. The type of operation depends on the targetted attribute type. //public ZCNoSQLAdditionFunction(ZCNoSQLAttribute attribute, ZCNoSQLValue value); //public static ZCNoSQLAdditionFunction getInstance(ZCNoSQLAttribute attribute, ZCNoSQLValue value); new ZCNoSQLAdditionFunction(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue&gt;) ZCNoSQLAdditionFunction.getInstance(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue&gt;) #### ZCNoSQLReductionFunction This function is used to remove elements from a set or subtract numeric value to existing attribute. The type of operation depends on the targetted attribute type. //public ZCNoSQLReductionFunction(ZCNoSQLAttribute attribute, ZCNoSQLValue value) throws Exception; //public static ZCNoSQLReductionFunction getInstance(ZCNoSQLAttribute attribute, ZCNoSQLValue value) throws Exception; new ZCNoSQLReductionFunction(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue&gt;) ZCNoSQLReductionFunction.getInstance(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue&gt;) Other methods available in ZCNoSQLUpdateHelper #### ZCNoSQLCondition The Same conditions described above can be reused for update too. NOSQL_RETURN_VALUE The Same return value described above can be reused for update too. Update with Condition and Return Value table.getUpdateHelper(&lt;ZCNoSQLItem&gt;,&lt;ZCNoSQLUpdateAttributeOperation&gt;).withCondition(&lt;ZCNoSQLCondition&gt;).withReturnValue(&lt;NOSQL_RETURN_VALUE&gt;).update(); -------------------------------------------------------------------------------- title: "Fetch Items from NoSQL Table" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to fetch items from a NoSQL table." last_updated: "2026-09-29T06:07:16.204Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/nosql/fetch-items/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction/) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # Fetch Items from NoSQL Table Catalyst enables you to fetch items from a NoSQL table by identifying them with their primary keys. For instance, you can use just the partition key or a combination of the partition key and sort key to fetch the item. You can also optionally filter the attributes to be fetched by specifying the required attributes. Note: Catalyst enables you to fetch a maximum of 100 items from a NoSQL table in a single SDK read operation. Data can be fetched without filtering specific attributes by using the ZCNoSQLTable instance or it can be fetched with the help of ZCNoSQLFetchHelper instance which can be used to construct the various parts of the request. To fetch data with ZCNoSQLTable Instance, the below can be used. //public ZCNoSQLResponseBean fetch(ZCNoSQLItem key) throws Exception; table.fetch(&lt;ZCNoSQLItem&gt;); To fetch with ZCNoSQLFetchHelper #### ZCNoSQLFetchHelper This class can be used to fetch data from the table and filter our specific attributes. This can be obtained from ZCNoSQLTable instance. //public ZCNoSQLFetchHelper getFetchHelper(ZCNoSQLItem key) throws Exception; //public ZCNoSQLResponseBean fetch() throws Exception; table.getFetchHelper(&lt;ZCNoSQLItem&gt;).fetch(); Other methods available in ZCNoSQLFetchHelper #### Required Attributes This method can be used to filter and retrieve only the specific required attributes /public ZCNoSQLFetchHelper withRequiredAttributes(List&lt;ZCNoSQLAttribute&gt; requiredAttributesList) throws Exception; table.getFetchHelper(&lt;ZCNoSQLItem&gt;).withRequiredAttributes(&lt;List of ZCNoSQLAttributes&gt;).fetch(); You can also use consistency to indicate if the read operation must be done using the master or a slave cluster. When set to true, it is queried from the master. If false, it is queried from the slave. Note: In the master-slave replication, the master contains all the data of the database, and the slave contains copies from the master. Performing a read operation from the slave can reduce the overall cost with the trade-off being a minor delay in the updated data being reflected. //public ZCNoSQLFetchHelper withConsistency(boolean consistency) throws Exception; table.getFetchHelper(&lt;ZCNoSQLItem&gt;).withConsistency(true/false).fetch(); Fetch with Required Attributes and Consistency table.getFetchHelper(&lt;ZCNoSQLItem&gt;).withRequiredAttributes(&lt;List of ZCNoSQLAttributes&gt;).withConsistency(true/false).fetch(); -------------------------------------------------------------------------------- title: "Query NoSQL Table" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to fetch the metadata of a NoSQL table." last_updated: "2026-09-29T06:07:16.205Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/nosql/query-table/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction/) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # Query NoSQL Table Catalyst enables you to query a NoSQL table and retrieve data by identifying the items using the primary keys of the table. For instance, you can use just the partition key or a combination of the partition key and sort key to retrieve the item. Note: Catalyst enables you to retrieve a maximum of 100 items in bulk from a NoSQL table with pagination from a single SDK operation. You can define the key condition that identifies the item by specifying the attributes, their required values, and the supported operator to be used. Refer to the help section for a list of supported operators and help on querying from the Catalyst console. To query the data with ZCNoSQLTable Instance, the snippet below can be used. //public ZCNoSQLResponseBean queryTable(ZCNoSQLPartitionKeyCondition partitionKeyCondition, boolean forwardScan, int limit) throws Exception; table.query(&lt;ZCNoSQLPartitionKeyCondition&gt;, &lt;true/false&gt;, &lt;limit&gt;); To query with ZCNoSQLQueryHelper ZCNoSQLQueryHelper This class can be used to query data from the table and also specifiy other conditions, sorting order, limit etc. This can be obtained from ZCNoSQLTable instance. //public ZCNoSQLQueryHelper getQueryHelper(ZCNoSQLPartitionKeyCondition partitionKeyCondition, boolean forwardScan, int limit) throws Exception; //public ZCNoSQLResponseBean queryTable() throws Exception; table.getQueryHelper(&lt;ZCNoSQLPartitionKeyCondition&gt;, &lt;true/false&gt;, &lt;limit&gt;).queryTable(); ZCNoSQLPartitionKeyCondition This is used to construct partition key criteria. This is necessary to query data from the table or index. //public ZCNoSQLPartitionKeyCondition(ZCNoSQLAttribute attribute, ZCNoSQLValue value) throws Exception; //public static ZCNoSQLPartitionKeyCondition getInstance(ZCNoSQLAttribute attribute, ZCNoSQLValue value) throws Exception; new ZCNoSQLPartitionKeyCondition(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue&gt;) ZCNoSQLPartitionKeyCondition.getInstance(&lt;ZCNoSQLAttribute&gt;, &lt;ZCNoSQLValue&gt;) Secondary Key Condition This is used to construct sort key criteria. This will be used to indicate if sort key should be used or additional sort key should be used while querying the table. //public static ZCNoSQLSecondaryKeyCondition getInstance(ZCNoSQLAttribute attribute, SECONDARY_KEY_CONDITION_OPERATOR operator, ZCNoSQLValue value) throws Exception new ZCNoSQLSecondaryKeyCondition(&lt;ZCNoSQLAttribute&gt;, &lt;SECONDARY_KEY_CONDITION_OPERATOR&gt;, &lt;ZCNoSQLValue&gt;) ZCNoSQLSecondaryKeyCondition.getInstance(&lt;ZCNoSQLAttribute&gt;, &lt;SECONDARY_KEY_CONDITION_OPERATOR&gt;, &lt;ZCNoSQLValue&gt;) //public ZCNoSQLQueryHelper withSecondaryKeyCondition(ZCNoSQLSecondaryKeyCondition secondaryKeyCondition, Boolean isAdditionalSortKey) throws Exception; table.getQueryHelper(&lt;ZCNoSQLPartitionKeyCondition&gt;, &lt;true/false&gt;, &lt;limit&gt;).withSecondaryKeyCondition(&lt;ZCNoSQLSecondaryKeyCondition&gt;, &lt;true/false&gt;).queryTable(); Other methods available in ZCNoSQLQueryHelper SECONDARY_KEY_CONDITION_OPERATOR This can have the values begins_with, between, equals, greater_than, less_than, greater_equal, less_equal; Other Conditions This can be used to filter the data retrieved using partition key and sort key if specified. This will apply only on top on the data retrieved using the keys. So there can be scenarios where data maybe present for the given partition key, sort key and other conditions but to the maximum limit of 100 items, 0 items may be returned after applying the other condition along with the start key. //public ZCNoSQLQueryHelper withOtherCondition(ZCNoSQLCondition otherCondition) throws Exception; table.getQueryHelper(<ZCNoSQLPartitionKeyCondition>, <true/false>, <limit>).withOtherCondition(<ZCNoSQLCondition>).queryTable(); Start Key This is used for pagination. Upon querying data from the table/index, if more record exists, the start key will be returned. To fetch the next set of data, this value has to be set from the previous request's response. //public ZCNoSQLQueryHelper withStartKey(ZCNoSQLItem startKey); table.getQueryHelper(&lt;ZCNoSQLPartitionKeyCondition&gt;, &lt;true/false&gt;, &lt;limit&gt;).withStartKey(&lt;ZCNoSQLItem&gt;).queryTable(); -------------------------------------------------------------------------------- title: "Query NoSQL Index" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to fetch the metadata of a NoSQL table." last_updated: "2026-09-29T06:07:16.205Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/nosql/query-index/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction/) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # Query NoSQL Index Catalyst enables you to query a NoSQL index and retrieve data by identifying the items using the primary keys of the index. Indexing allows you to execute alternate queries on the table data without making use of the primary keys of the main table. You can configure indexes from the Catalyst console. You can therefore use just the partition key or a combination of the partition key and sort key of the index to retrieve an item. Note: Catalyst enables you to retrieve a maximum of 100 items in bulk from a NoSQL table with pagination from a single SDK operation. You can define the key condition that identifies the item by specifying the attributes, their required values, and the supported operator to be used. Refer to the help section on a list of supported operators and help on querying from the Catalyst console. To query the data with ZCNoSQLTable Instance, the below can be used. //public ZCNoSQLResponseBean queryIndex(Long indexID, ZCNoSQLPartitionKeyCondition partitionKeyCondition, boolean forwardScan, int limit) throws Exception; table.queryIndex(&lt;indexID&gt;, &lt;ZCNoSQLPartitionKeyCondition&gt;, &lt;true/false&gt;, &lt;limit&gt;); To query with ZCNoSQLQueryHelper ZCNoSQLQueryHelper This class can be used to query data from the index and also specifiy other conditions, sorting order, limit etc. This can be obtained from ZCNoSQLTable instance. //public ZCNoSQLQueryHelper getQueryHelper(ZCNoSQLPartitionKeyCondition partitionKeyCondition, boolean forwardScan, int limit) throws Exception; //public ZCNoSQLResponseBean queryTable() throws Exception; table.getQueryHelper(&lt;ZCNoSQLPartitionKeyCondition&gt;, &lt;true/false&gt;, &lt;limit&gt;).queryIndex(&lt;indexID&gt;); ZCNoSQLPartitionKeyCondition The same Partition Key Condition described above can be reused here too. Other methods available in ZCNoSQLQueryHelper Required Attributes The same Required Attributes described above can be reused here too. Consistence Catalyst NoSQL also lets you define other elements of the query, such as using consistent_read to indicate if the read operation must be done using the master or a slave cluster, limiting the number of rows to be returned, and specifying the sorting order as ascending. Note: In the master-slave replication, the master contains all the data of the database, and the slave contains copies from the master. Performing a read operation from the slave can reduce the overall cost with the trade-off being a minor delay in the updated data being reflected. Secondary Key Condition The same Secondary Key Condition described above can be reused here too with the exception that additionalSort key cannot be used for index Other Conditions The other conditions mentioned for querying tables can be reused here too. Start Key The same Start Key described above can be used here too. Index Query with all combinations table.getQueryHelper(ZCNoSQLPartitionKeyCondition&gt;, &lt;true/false&gt;, &lt;limit&gt;) .withSecondaryKSeyCondition(&lt;ZCNoSQLSecondaryKeyCondition&gt;, false) .withOtherCondition(&lt;ZCNoSQLCondition&gt;) .withRequiredAttributes(&lt;List of ZCNoSQLAttributes&gt;) .withConsistency(true/false) .withStartKey(&lt;ZCNoSQLItem&gt;) .queryIndex(&lt;indexID&gt;); -------------------------------------------------------------------------------- title: "Delete Items from Table" description: "Catalyst NoSQL is a fully-managed, powerful database that provides you with a non-relational, non-SQL means of data storage. This page describes the SDK method to fetch the metadata of a NoSQL table." last_updated: "2026-09-29T06:07:16.205Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/nosql/delete-items/" service: "Cloud Scale" related: - NoSQL (/en/cloud-scale/help/nosql/introduction/) - NoSQL API (/en/api/code-reference/cloud-scale/nosql/insert-item/#InsertNewItem) -------------------------------------------------------------------------------- # Delete Items from NoSQL Table You can delete items from a NoSQL table in Catalyst by identifying them using the primary keys of the table. For instance, you use just the partition key, or a combination of the partition key and sort key of the table, to identify an item. Note: Catalyst enables you to delete a maximum of 25 items in bulk from a NoSQL table with a single SDK operation. Data can be deleted without any conditions by using the ZCNoSQLTable instance or it can be deleted with the help of ZCNoSQLDeleteHelper instance which can be used to construct the various parts of the request. To delete data with ZCNoSQLTable Instance, the below can be used. //public ZCNoSQLResponseBean delete(ZCNoSQLItem key) throws Exception; table.delete(&lt;ZCNoSQLItem&gt;); To delete with ZCNoSQLDeleteHelper ZCNoSQLDeleteHelper This class can be used to delete data from the table with conditions. This can be obtained from ZCNoSQLTable instance. //public ZCNoSQLDeleteHelper getDeleteHelper(ZCNoSQLItem keys) throws Exception; //public ZCNoSQLResponseBean delete() throws Exception; table.getDeleteHelper(&lt;ZCNoSQLItem&gt;).delete(); Other methods available in ZCNoSQLDeleteHelper ZCNoSQLCondition The Same conditions described above can be reused for delete. NOSQL_RETURN_VALUE The same conditions described above can be reused for delete. Delete with Condition and Return Value table.getDeleteHelper(&lt;ZCNoSQLItem&gt;).withCondition(&lt;ZCNoSQLCondition&gt;).withReturnValue(&lt;NOSQL_RETURN_VALUE&gt;).delete(); ### Push Notifications -------------------------------------------------------------------------------- title: "Send Push Notifications to Web Apps" description: "This page describes the method to send out remote notifications to end-users from your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.205Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/push-notifications/send-notifications/" service: "Cloud Scale" related: - Send push notifications - API (/en/api/code-reference/cloud-scale/push-notifications/web/send-web-push-notifications/#SendWebNotifications) - Send push notifications (/en/cloud-scale/help/push-notifications/introduction) -------------------------------------------------------------------------------- # Push Notifications Catalyst Push notifications enables you to send remote notifications to the users of your application, even when the app is not actively running on the user device. You can send push notifications to a specific list of target users. You can include alerts, updates, or promotional content for the user to engage with your application. Before you send push notifications, you must enable it for your web app when the user allows it. You can do this by implementing this code snippet in your web client. You can also access this code from the _Push Notifications_ section in your Catalyst remote console. You must ensure that you include the web initialization script. ### Send Push Notifications to Web Apps Catalyst enables you to send push notifications to 50 users in a single function call. You can add the user IDs of all users to be notified in an array as shown below. You must then pass the array to the notifyUser() method, along with the message string to include in the notification. This string can be plain text, HTML, or a JSON object to be parsed. #### Sample Code Snippet import com.zc.component.notifications.ZCWebNotification; Long[] userList = new Long[5]; //Include the user IDs of all users userList[0] = 1234556789098L; userList[1] = 8704590865890L; userList[2] = 1452788189992L; userList[3] = 5344535567809L; userList[4] = 6568785589800L; ZCWebNotification.getInstance().notifyUser("Hi there! The task you scheduled has been completed.", userList); //Pass the array with the message string You can also send the notifications to users by including their email addresses instead of their User IDs. You must add the email addresses in a String array, and pass it to notifyUser() along with the message string in a similar way. #### Sample Code Snippet import com.zc.component.notifications.ZCWebNotification; String[] userEmailList = new String[3]; //Include the email addresses of the users userEmailList[0] = "emma@zylker.com"; userEmailList[1] = "p.boyle@zylker.com"; userEmailList[2] = "noel@zylker.com"; ZCWebNotification.getInstance().notifyUser("Hi there! The task you scheduled has been completed.", userEmailList); //Pass the array with the message string -------------------------------------------------------------------------------- title: "Send Push Notifications to Mobile Apps" description: "This page describes the method to send out remote notifications to end-users in your Android or iOS applications with sample code snippets." last_updated: "2026-09-29T06:07:16.206Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/push-notifications/send-notifications-mobile/" service: "Cloud Scale" related: - Push Notifications (/en/cloud-scale/help/push-notifications/introduction) -------------------------------------------------------------------------------- # Push Notifications to Mobile Apps The Catalyst Cloud Scale Push Notifications component enables you to send notifications to mobile applications built on the Android or iOS platforms. You can send push notifications to a specific target user by using their Catalyst User ID or email address. You can include alerts, updates, or promotional content for the user to engage with your application. To set up push notifications, you must meet the following prerequisites: 1. You must register your mobile application with Catalyst and note down the Application ID (appId) from the console after configuring. You can opt to register your application installed in the target device either using individual platform-specific Catalyst mobile SDK methods (available in Android and iOS) or using the Flutter SDK. The appId can be fetched by configuring Android Push Notifications service directly in the Catalyst console. Learn about registering your Android app using Android SDK. Learn about registering your iOS app using iOS SDK. Learn about registering your mobile apps (Android or iOS) using Flutter SDK. 2. The mobile application must mandatorily use the Catalyst Cloud Scale Authentication component. After all the setup is done, the Catalyst user must be logged in on their device to receive the notification promptly. Once the setup is complete, you can send notifications by calling the Java SDK method below, using your generated Application ID to target the specific app. <br> ### Get Mobile Notification Instance You can create a mobile notification instance and use it to refer to a specific mobile app registered in the Catalyst console. This is done by fetching the mobile notification instance with the getInstance() method, by passing the generated appID as a parameter. We will use this mobile notification instance to perform additional operations with the Java SDK methods, such as sending push notifications, which will be covered in the next section. #### Sample Code Snippet import com.zc.component.notifications.ZCMobileNotification; ZCMobileNotification mobile = ZCMobileNotification.getInstance(1234567890l); Here, 1234567890 is the appID. Alternatively, if your application involves Catalyst scope-based access, you can pass the ZCProject project parameter along with the appID. ZCMobileNotification mobile = ZCMobileNotification.getInstance(1234567890l, ZCProject project); <br> ### Send Android Push Notifications After you have registered your Android application with Catalyst for sending push notifications, you can use the sendAndroidPushNotification() method to send push notifications to your application. You will need to pass two parameters to the sendAndroidPushNotification() method : * pushMessage - A ZCPush type object with the details of the push notification message. * recipient - The Catalyst User ID of the recipient or the email address of the recipient to whom the message has to be delivered. #### Sample Code Snippet import com.zc.component.notifications.ZCMobileNotification; import com.zc.component.notifications.ZCPush; import com.zc.component.notifications.ZCPushMessage; ZCPushMessage notificationRes = mobile.sendAndroidPushNotification(new ZCPush() { { setMessage("This message is to test if the functionality is working fine!"); setBadgeCount(1); } }, "emma.b@zylker.com"); setBadgeCount() sets the app icon's notification badge count to 1. You can change this value to any number you require. <br> ### Send iOS push notifications Similar to Android, after you have registered your iOS application with Catalyst for sending push notifications, you can use the sendIOSPushNotification() method to send push notifications to your application. #### Sample Code Snippet import com.zc.component.notifications.ZCMobileNotification; import com.zc.component.notifications.ZCPush; import com.zc.component.notifications.ZCPushMessage; ZCPushMessage notificationRes = mobile.sendIOSPushNotification(new ZCPush() { { setMessage("This message is to test if the functionality is working fine!"); setBadgeCount(1); } }, "emma.b@zylker.com"); ### Search -------------------------------------------------------------------------------- title: "Search data in tables" description: "This page describes the method to search data in multiple tables in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.207Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/search/search-data/" service: "Cloud Scale" related: - Search data in tables - API (/en/api/code-reference/cloud-scale/search/execute-search-query/#ExecuteSearchQuery) -------------------------------------------------------------------------------- # Search Data in Indexed Columns Search executes a searchQuery() method to search for a particular pattern of data. You can search: * Data in multiple tables * Only data in search indexed columns To learn more about search please refer to the documentation here. The following code snippet contains the pattern to search for in specified columns of the tables: #### Sample Code Snippet import com.zc.component.object.ZCRowObject; import com.zc.component.search.ZCSearch; import com.zc.component.search.ZCSearchDetails; //Get an instance of SearchDetails ZCSearchDetails search = ZCSearchDetails.getInstance(); //Set the pattern to be searched search.setSearch("Sa*"); //Create a hashmap for the tables and corresponding column lists to search HashMap&lt;String,List\*&gt; map = new HashMap <String,List\>(); List searchList1 = new ArrayList(); List searchList2 = new ArrayList(); //Add indexed columns of same or different tables to the list searchList1.add("SearchIndexedColumn"); searchList2.add("SearchTest"); //Add the table with its name and the column lists map.put("SampleTable", searchList1); map.put("Users", searchList2); //Set the table-column mapping for searching search.setSearchTableColumns(map); //Execute Search by passing the search instance with the details ArrayList&lt;ZCRowObject&gt; rowList = ZCSearch.getInstance().executeSearchQuery(search); ### Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page lists all the Java SDK methods required to carry out Stratus operations through code." last_updated: "2026-09-29T06:07:16.207Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/overview/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Stratus ## Overview Cloud Scale Stratus is Catalyst's robust and powerful storage solution. You can store data of any format in the form of Objects in containers called Buckets. Each Bucket and every individual object in the bucket has a secure Object URL and Bucket URL. You can perform upload and download operations on objects and even provide custom permissions for each object. The following table contains the list of all the Catalyst SDKs that can be used to perform Stratus operations through code. <table class="content-table"> <thead> <tr> <th class="w30p">Category</th> <th class="w70p">SDK Method</th> </tr> </thead> <tbody> <tr> <td>General Stratus Operations</td> <td> <ul> <li>Create Stratus Instance</li> <li>Check Bucket Availability</li> <li>List Buckets</li> </ul> </td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>Create Bucket Instance</li> <li>Get a Bucket’s Details</li> <li>Get Bucket CORS</li> <li>List Objects in a Bucket <ul> <li>List All Objects by Pagination</li> <li>List Objects Through Iteration</li> </ul> </li> <li>Check Object Availability</li> <li>Download Object <ul> <li>Download a Portion of the Object</li> <li>Download an Object Using Transfer Manager</li> <li>Generate Presigned URL to Download an Object</li> <li>Generate Presigned URL With Expiry and Active Time</li> </ul> </li> <li>Upload Object <ul> <li>Upload Object as a Stream</li> <li>Upload Object as a String</li> <li>Upload Object with Options</li> <li>Upload an Object Using Multipart Operations</li> <li>Upload an Object Using Transfer Manager</li> <li>Generate Presigned URL to Upload an Object</li> <li>Generate Presigned URL With Expiry and Active Time</li> </ul> </li> <li>Extract a Zipped Object</li> <li>Copy Object</li> <li>Rename and Move Operations on an Object</li> <li>Delete Objects <ul> <li>Delete a Single Object</li> <li>Delete Multiple Objects</li> <li>Truncate Bucket</li> <li>Delete a Path in the Bucket</li> </ul> </li> </ul> </td> </tr> <tr> <td>Object Operations</td> <td> <ul> <li>Create Object Instance</li> <li>List Versions of an Object <ul> <li>List All Versions of an Object</li> <li>List All Versions of the Object in an Iterable Manner</li> </ul> </li> <li>Get Object Details <ul> <li>Get Details of an Object</li> <li>Get Details of a Particular Version of the Object</li> </ul> </li> <li>Put Object Meta Data</li> </ul> </td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Create Stratus Instance" description: "This page lists the Java SDK method to create a Stratus instance." last_updated: "2026-09-29T06:07:16.211Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/create-stratus-instance/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/create-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-stratus-instance/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/initialize-stratus/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Stratus Instance You can get the stratus component reference as shown below. This will not fire a server-side call. We will refer to this component instance in various code snippets of working with Stratus. #### Sample Code Snippet <br> import com.zc.component.stratus.ZCStratus; ZCStratus stratus = ZCStratus.getInstance(); -------------------------------------------------------------------------------- title: "Check Bucket Availability" description: "This page lists the Java SDK method to check if the bucket exists in your project." last_updated: "2026-09-29T06:07:16.212Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/check-bucket/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/check-bucket-availability/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/check-bucket/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Check Bucket Availability Using the headBucket() SDK method, you can check the existence of a bucket in Stratus, and further check if the user has the relevant permissions to access the objects present in the bucket. Possible responses when using this SDK: * If the bucket exists and if the user has the relevant permissions to access the bucket, the response '**true**' will be returned. * If the bucket does not exist, or if the user does not have permission to access the bucket, the response '**false**' will be returned. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>bucket_name</td> <td>String</td> <td>A Mandatory parameter. Will hold the unique name of the bucket.</td> </tr> <tr> <td>throwErr</td> <td>Boolean</td> <td>An Optional parameter. If you set this parameter as "true", then it will throw an error when the bucket is not found in the project. The default value is "false"</td> </tr> </tbody> </table> Boolean throwErr = false; Boolean res = stratus.headBucket("bucket_name", throwErr); System.out.println(res); #### Possible Errors Note: If you use the SDK with the throw_err parameter, and the object does not exist, or if you do not have sufficient permissions then you may encounter any of the errors listed below. <table class="content-table"> <thead> <tr> <th class="w30p">Error Code</th> <th class="w70p">Meaning</th> </tr> </thead> <tbody> <tr> <td>404</td> <td>Not Found. Bucket Not found in Stratus.</td> </tr> <tr> <td>401</td> <td>Unauthorized/Access Denied - User doesn't have permission to perform the particular operation.</td> </tr> <tr> <td>403</td> <td>Permission Denied - User does not have permission to access the particular bucket.</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "List Buckets" description: "This page lists the Java SDK method to list buckets created in your project." last_updated: "2026-09-29T06:07:16.223Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/list-buckets/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/list-buckets/) - Python SDK (/en/sdk/python/v1/cloud-scale/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 Buckets The following SDK method will return all the buckets present in the project. The Stratus reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section #### Sample Code Snippet <br> import java.util.List; import com.zc.component.stratus.ZCStratus; import com.zc.component.stratus.ZCBucket; ZCStratus stratus = ZCStratus.getInstance(); List&lt;ZCBucket&gt; buckets = stratus.listBuckets(); // will return all the buckets in the organization -------------------------------------------------------------------------------- title: "Create Bucket Instance" description: "This page lists the Java SDK method to create a bucket instance." last_updated: "2026-09-29T06:07:16.232Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Create a Bucket Help Documentation (/en/cloud-scale/help/stratus/buckets/create-bucket/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/create-bucket-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/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. #### Sample Code Snippet <br> import com.zc.component.stratus.ZCBucket; ZCBucket bucket = stratus.bucketInstance("bucketName"); -------------------------------------------------------------------------------- title: "Get a Bucket's Details" description: "This page lists the Java SDK method to get a bucket's details." last_updated: "2026-09-29T06:07:16.245Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/get-bucket-details/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Create a Bucket Help Documentation (/en/cloud-scale/help/stratus/buckets/create-bucket/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/create-bucket-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/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 a Bucket's Details We will use the getDetails() SDK method to get a single bucket's details from the project. The Bucket reference used in the below code snippet is the component instance. #### Sample Code Snippet <br> import com.zc.component.stratus.ZCBucket; ZCBucket bucketDetails = bucket.getDetails(); // return the bucket details -------------------------------------------------------------------------------- title: "Get Bucket CORS" description: "This page lists the Java SDK method to get the current CORS configuration of the bucket." last_updated: "2026-09-29T06:07:16.245Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/get-bucket-cors/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Stratus Bucket CORS Help Documentation (/en/cloud-scale/help/stratus/stratus-config/bucket-cors/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/get-bucket-cors/) - Python SDK (/en/sdk/python/v1/cloud-scale/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 getCors() SDK method, will return the current CORS configuration of a specific bucket in Stratus. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section CORS of a bucket can be edited by any user that has or has been granted Write permission for Stratus component in the project, using the Profiles & Permissions section. Note: You can find out more about Bucket CORS from this help section. #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCStratusCorsResponse; import java.util.List; List&lt;ZCStratusCorsResponse&gt; res = bucket.getCors(); for(ZCStratusCorsResponse cors: res){ System.out.println(cors.getDomain()); } -------------------------------------------------------------------------------- title: "List Objects in a Bucket" description: "This page lists the Java SDK method to get the objects stroed in a bucket." last_updated: "2026-09-29T06:07:16.245Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/list-objects/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/check-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/list-objects/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/get-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/get-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/get-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # List Objects in a Bucket ### List All Objects by Pagination This SDK method will allow you to get all the objects present in a particular bucket by pagination. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section For each call, a limited number of objects will be returned, and the next call will be initiated only if a continuation token is returned. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>maxKey</td> <td>String</td> <td>A Mandatory parameter. Will contain the maximum limit of objects that can be listed by pagination.</td> </tr> <tr> <td>nextToken</td> <td>String</td> <td>An Mandatory parameter. Will contain the token to get the next set of objects.</td> </tr> <tr> <td>prefix</td> <td>String</td> <td>An Optional parameter. To list objects that match the prefix value.</td> </tr> <tr> <td>orderBy</td> <td>String</td> <td>An Optional parameter. To list objects either in ascending or descending order. Default Value: asc</td> </tr> </tbody> </table> The response we get will contain the following properties of the bucket, which will be stored in moreOptions: * key count: Will contain the value of the number of objects that are being returned * max keys: The maximum limit of objects that can be returned * Truncated: Will contain the status to notify if a bucket is truncated or not. * contents: List of object details * continuation_token: If you a sent a continuation_token in the request, it will be shown in the response. * next_continuation_token: If the response was truncated, the value of this key must be passed as continuation_token to the same method for retrieving the next set of objects. With each iteration, we will list the maxKey number of objects and check if nextToken has been created. Using nextToken we will continue the iteration till all the objects have been listed. **Ensure the following packages are imported:** import com.zc.component.stratus.ZCBucket; import com.zc.component.stratus.ZCStratus; import com.zc.component.stratus.beans.ZCListObjectOptions; import com.zc.component.stratus.beans.ZCPagedObjectResponse; import com.zc.component.stratus.ZCObject; String nextToken = null; String maxKey = "10"; String prefix = "Sam"; do { ZCListObjectOptions options = new ZCListObjectOptions(); options.setMaxKey(maxKey); // Default: 1000 options.setContinuationToken(nextToken); // Fetch next page options.setFolderListing("true"); // Default: false options.setOrderBy("desc"); // Default: "asc" options.setPrefix(prefix); // Optional ZCPagedObjectResponse res = bucket.listPagedObjects(options); System.out.println("Object count: " + res.getKeyCount()); System.out.println("Max key: " + res.getMaxKey()); System.out.println("Is truncated: " + res.getTruncated()); for (ZCObject key : res.getContents()) { System.out.println("Object name: " + key.getKey()); System.out.println("Content type: " + key.getContentType()); System.out.println("Size: " + key.getSize()); System.out.println("Metadata: " + key.getMetaData()); System.out.println("Version ID: " + key.getVersionId()); System.out.println("ETag: " + key.getEtag()); System.out.println("Object type: " + key.getKeyType()); System.out.println("Cached URL: " + key.getCachedUrl()); } nextToken = res.getNextToken(); } while (nextToken != null); ### List Objects Through Iteration Using this SDK method, you can get all the objects present in a bucket in a single API call, using iteration technique. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section **Ensure the following packages are imported:** import java.util.Iterator; import com.zc.component.stratus.ZCObject; import com.zc.component.stratus.beans.ZCListObjectOptions; import java.util.List; ZCListObjectOptions options = new ZCListObjectOptions(); options.setFolderListing("true"); // Default: false options.setMaxKey("2"); // Default: 1000 options.setOrderBy("desc"); // Default: "asc" // Get iterable object list Iterable&lt;List&lt;ZCObject&gt;&gt; paginationIterable = bucket.listIterableObjects(options); Iterator&lt;List&lt;ZCObject&gt;&gt; iterator = paginationIterable.iterator(); while (iterator.hasNext()) { List&lt;lZCObject&gt; objectList = iterator.next(); for (ZCObject obj : objectList) { System.out.println(obj.getKey()); } } -------------------------------------------------------------------------------- title: "Check Object Availability" description: "This page lists the Java SDK method to check if an object is present in a bucket." last_updated: "2026-09-29T06:07:16.245Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/check-object-availability/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Objects Help Documentation (/en/cloud-scale/help/stratus/objects/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/check-object-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 Object Availability Using this SDK method, you can check if a particular object is present in the bucket, if the user has the required permissions to access the object. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section If you have enabled Versioning for your bucket, then you need to pass the versionID as the param, to check if a particular version of the object is available. When you use this SDK method, you will get either of the following responses: - **true**: If the object is available, the specified version is available, and if the user has the relevant permissions to access the objects. - **false**: - If the object or the particular version of the object is not available in the bucket. - If the user does not have the required permissions to access the object. - If the bucket does not exist. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>A Mandatory parameter. Will hold the complete name of the object.</td> </tr> <tr> <td>versionId</td> <td>String</td> <td>An Optional parameter. Will hold the unique version ID of the object, if Versioning is enabled.</td> </tr> <tr> <td>throwErr</td> <td>Boolean</td> <td>An Optional parameter. If you set this parameter as "true", then it will throw an error when the object is not found in the project. The default value is "false"</td> </tr> </tbody> </table> Boolean throwErr = true; Boolean headObjectRes = bucket.headObject("sam/out/sample.txt", "versionId", throwErr); System.out.println(headObjectRes); **Possible Errors** Note: If you use the SDK with the throw_err parameter, and the object does not exist, or if you do not have sufficient permissions then you may encounter any of the errors listed below. <table class="content-table"> <thead> <tr> <th class="w30p">Error Code</th> <th class="w70p">Meaning</th> </tr> </thead> <tbody> <tr> <td>404</td> <td>Not Found. Object Not found.</td> </tr> <tr> <td>401</td> <td>Unauthorized/Access Denied - User doesn't have permission to perform the particular operation.</td> </tr> <tr> <td>403</td> <td>Permission Denied - User does not have permission to access the particular object.</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Download Object" description: "This page lists the Java SDK method to download objects from a bucket." last_updated: "2026-09-29T06:07:16.246Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/download-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Download Object Help Documentation (/en/cloud-scale/help/stratus/objects/manage-object/download-object/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/download-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/download-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/download-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/download-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/download-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Download Object The SDKs present in the section will allow you to download a particular object, or version of the object. The Bucket reference used in the below code snippet is the component instance. The first step of the download operation is a GET operation that retrieves the required object from the bucket. To be able to download an object, the requester must have READ access permissions. However, owners of the bucket do have the option to grant READ access permissions to users, allowing them to download the object without using the required response headers. If Versioning is enabled for your bucket, you need to pass the versionId to download the particular version of the object. If no versionId is passed, then by default, the latest version of the object will be downloaded. If *Versioning* was enabled for a bucket, then disabled. By default, the principal first object will be downloaded. To ensure you download the latest version of this object, you need to pass the versionId param with the value "topVersion". #### Sample Code Snippet <br> import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.io.*; InputStream dataStream = bucket.getObject("sam/out/sample.txt"); // download the object to your local machine Path path = Path.of("file_path"); // specify a path to store the downloaded object Files.copy(dataStream, path, StandardCopyOption.REPLACE_EXISTING); ### Download a Portion of the Object The following SDK implements the setRange() method. This method allows you to download a specific range of bytes of an object. #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCGetObjectOptions; import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.io.*; // add download options ZCGetObjectOptions options = ZCGetObjectOptions.getInstance(); options.setVersionId("3yt5ehjbjghds3i28"); options.setRange("20-200"); // start and end range of the object in bytes InputStream dataStream = bucket.getObject("sam/out/sample.txt", options); // download the object to your local machine Path path = Path.of("file_path"); // specify a path to store the downloaded object Files.copy(dataStream, path, StandardCopyOption.REPLACE_EXISTING); ### Download an Object Using Transfer Manager In this section, we are going to go over SDK methods that will allow you to successfully download large objects from Stratus to your local system using **Transfer Manager** technique. Transfer Manager is an operation where the large object is split into multiple byte ranges using the start and end bytes range of the object. Each of the object's parts is then returned as a stream, and they are downloaded to your local system. #### Create Transfer Manager Instance #### Sample Code Snippet <br> import com.zc.component.stratus.transfer.ZCTransferManager; ZCTransferManager transferManager= ZCTransferManager.getInstance(bucket); #### Download Object as Iterable Part Streams #### Sample Code Snippet <br> import java.nio.file.StandardOpenOption; import java.nio.file.Files; import java.util.Iterator; import java.nio.file.Path; import java.io.*; Iterable &lt;InputStream&gt; Iterable = transferManager.getIterableObject("sam/out/sample.txt", 100 L); Path path = Path.of("file_path"); Iterator &lt;InputStream&gt; res = Iterable.iterator(); while (res.hasNext()) { InputStream data = res.next(); // get each part of the object as stream Files.copy(data, path, StandardCopyOption.REPLACE_EXISTING); // write the stream to local file path } #### Generate Object Parts for Download In this SDK method we will download a portion of the object that falls under the required start and end range of bytes. **Parameters Used** * PartSize: It is the size of each part in Mb * key: Will hold the name of the object #### Sample Code Snippet <br> import java.nio.file.StandardOpenOption; import java.nio.file.Files; import com.zc.component.stratus.beans.ZCStratusGetObject; import java.nio.file.Path; import java.io.*; Path path = Path.of("file_path"); // get the list of part functions List&lt;ZCStratusGetObject&gt; parts = transferManager.generatePartDownloaders("sam/out/sample.txt", 100L); // create a file to store the downloaded stream. Files.createFile(path); int partNumber = 1; // trigger the each function to download the object parts for (ZCStratusGetObject part : parts) { // get object part as stream InputStream inputStream = part.getPart(); System.out.println("Part "+ partNumber++ + " Downloaded"); // write the stream data to local machine Files.write(path, inputStream.readAllBytes(), StandardOpenOption.APPEND); } ### Generate Presigned URL to Download an Object Presigned URLs are secure URLs that authenticated users can share to their non-authenticated users. This URL will provide non-authenticated users with temporary authorization to access objects. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>A Mandatory parameter. Will hold the complete name of the object along with it's path.</td> </tr> <tr> <td>URL_ACTION</td> <td>Enum</td> <td>A Mandatory parameter. This is the parameter that will allow you to generate a presigned URL for download action. <ul> <li>**URL_ACTION.GET**: To download an object</li> </ul> </td> </tr> <tr> <td>expiry</td> <td>String</td> <td>This is an Optional parameter. The URL validity time in seconds. <ul> <li>Default value: 3600 seconds</li> <li>Minimum value: 30 seconds</li> <li>Maximum value: 7 days</li> </ul> </td> </tr> <tr> <td>activeFrom</td> <td>String</td> <td>This is an Optional parameter. This param will contain the time after which the URL is valid. Maximum value is 7 days. URLs are made active as soon as they are generated by default.</td> </tr> </tbody> </table> #### Sample Code Snippet <br> import com.zc.component.stratus.enums.URL_ACTION; import org.json.simple.JSONObject; JSONObject res = bucket.generatePreSignedUrl("sam/out/sample.txt",URL_ACTION.GET); System.out.println(res.get("signature")); ### Generate Presigned URL With Expiry and Active Time #### Sample Code Snippet <br> import com.zc.component.stratus.enums.URL_ACTION; import org.json.simple.JSONObject; JSONObject res = bucket.generatePreSignedUrl("object_name",URL_ACTION.GET, "expiry_in","active_from"); System.out.println(res.get("signature")); **Example Response for Generating a Presigned URL for Download** { signature: 'https://sadi-development.zoho stratus.com/_signed/text.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747896279887&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=3YBUX1HFSxNQzQJjFrln82AyJsEEuC5T9dsZwWxGyEE' } **Example Snippet Illustrating Usage of Presigned URL to Upload an Object** import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import okhttp3.ResponseBody; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class Download { public static void main(String[] args) throws IOException { // Create an OkHttpClient instance to handle the HTTP request OkHttpClient client = new OkHttpClient(); // Build the GET request with the pre-signed URL Request request1 = new Request.Builder() .url("https://sadi-development.zohostratus.com/_signed/sam.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747905744487&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=pCjV9xckDOqBCueE_gBeMbp12StddTghBK_8HUwU5k0") // Replace with your actual URL .build(); // Execute the request and handle the response try (Response response1 = client.newCall(request1).execute()) { // Check if the response was successful if (!response1.isSuccessful()) { throw new IOException("Unexpected code " + response1); } // Get the response body as an InputStream ResponseBody body = response1.body(); if (body != null) { // Create a stream to write the file to disk try (InputStream in = body.byteStream(); OutputStream out = new FileOutputStream("file_path")) { // Replace file_path with the actual path // Read the response data in chunks and write to the file byte[] buffer = new byte[8192]; int len; while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); } // Print confirmation after successful download System.out.println("Download complete."); } } } catch (IOException e) { // Print stack trace if an error occurs during the download e.printStackTrace(); } } } -------------------------------------------------------------------------------- title: "Upload Object" description: "This page lists the Java SDK method to upload objects to a bucket." last_updated: "2026-09-29T06:07:16.247Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/upload-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Upload Object Help Documentation (/en/cloud-scale/help/stratus/objects/upload-object/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/upload-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/upload-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/upload-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/upload-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/upload-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Upload Object The SDK methods listed in this section will allow you to upload objects to the bucket in various manners. You can upload objects as a **string** or as a **stream**. The Bucket reference used in the below code snippet is the component instance. If you do not have Versioning enabled for your object, and if Stratus gets multiple write requests for the same object, the object will be continuously overwritten. The latest upload of the object will be the only object that is stored. However, with Versioning enabled, each upload will be considered a version of the object, and all of them will be stored in the bucket, each with a unique versionId. Note: The following characters including space are not supported when you create a path or an object: double quote, both angular brackets, hashtag, backward slash and pipe symbol. ### Upload Object as a Stream Using this SDK method, you can upload objects to a bucket as a stream. Store the stream in a variable and then pass that variable in the upload method. #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCPutObjectOptions; import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.io.*; InputStream file =new FileInputStream("filePath"); Boolean res = bucket.putObject("sam/out/sample.txt", file); System.out.println(res); ### Upload Object as a String Using this SDK method, you can upload the object as a string. You will pass the object name, and the data to be stored in the object in string format in the upload method; putObject() #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCPutObjectOptions; import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.io.*; Boolean res = bucket.putObject("sam/out/sample.txt", "content of the file"); System.out.println(res); ### Upload Object with Options Using this SDK method, you can use the following options while you upload an object. * **setOverwrite()**: This is an option you can use, if *Versioning* for your bucket is not enabled for your bucket. Without versioning, you need to use this option if you wish to overwrite a resource. The default value is '**false**'. * **setTTL()**: This is an option you can use to set **Time-to-Live** (TTL) in seconds for an object. Value should be greater than or equal to **60 seconds**. * **setMetaData()**: This is an option you can use to upload meta details of the object that is being uploaded. * **contentType**: This is an option you can provide, if you need to set the MIME type of the object. #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCPutObjectOptions; import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.util.Map; import java.io.*; ZCPutObjectOptions options = ZCPutObjectOptions.getInstance(); options.setTTL("1000"); options.setOverwrite("true"); Map&lt;String, String&gt; metaData = new HashMap&lt;String, String&gt;(); metaData.put("author", "John"); options.setMetaData(metaData); InputStream file = new FileInputStream("filePath"); Boolean res = bucket.putObject("sam/out/sample.txt", file, options); System.out.println(res); ### Upload Object With Extract Option When you upload a zipped object using the putZipObject() SDK method, the objects present in the zip will be extracted, and uploaded. #### Sample Code Snippet <br> import com.zc.component.stratus.ZCBucket; import com.zc.component.stratus.ZCStratus; import com.zc.component.stratus.beans.ZCPutObjectOptions; ZCStratus stratus = ZCStratus.getInstance(); ZCBucket bucket = stratus.bucketInstance("sam1"); ZCPutObjectOptions options = ZCPutObjectOptions.getInstance(); options.setOverwrite("true"); InputStream stream = new FileInputStream("file_path"); JSONObject object = bucket.putZipObject("sam.zip", stream, options); This SDK method will return the value of a taskId. You can use this value to find out the status of the extraction using this SDK method. **Example Response** { 'task_id': '1234263749' } ### Upload an Object Using Multipart Operations When the Object that you need to upload is too large to upload, you can perform a multipart operation. The multipart operation will split the object into multiple parts and perform a quicker upload. In this SDK section, we are going to go over all the SDK methods that are available to perform multipart upload of objects in Stratus. #### Initiate Multipart Upload Using the following SDK method, we are going to return a uploadId. This ID will allow us to upload multiple pats of the object. #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCInitiateMultipartUpload; ZCInitiateMultipartUpload multipart = bucket.initiateMultipartUpload("sam/out/sample.txt"); #### Perform Multipart Upload for Parts of the Object In the following SDK method, we are going to perform uploads of the individual parts of the object. Each part will have a distinct part_number ranging anywhere between **1 and 1000**. While this represents the ordering of the parts, these parts will not necessarily be uploaded in sequence. These parts will be combined in sequence once the upload of all the parts of the objects is complete. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>A Mandatory parameter. Will hold the name of the object.</td> </tr> <tr> <td>uploadId</td> <td>String</td> <td>A Mandatory parameter. This value is returned in the Initiate Multipart Upload method.</td> </tr> <tr> <td>part</td> <td>InputStream</td> <td>A Mandatory parameter. Will hold the data of the object part.</td> </tr> <tr> <td>partNumber</td> <td>Int</td> <td>A Mandatory parameter. Will have the ordering of the parts that are being uploaded.</td> </tr> </tbody> </table> #### Sample Code Snippet <br> import java.io.*; int partNumber = 1; InputStream part = new FileInputStream("filePath"); Boolean res = bucket.uploadPart("sam/out/sample.txt", "uploadId", part, partNumber); System.out.println(res); #### Get Multipart Upload Summary The following SDK method can be used to obtain an operational summary of all the uploaded parts. To view the summary, we pass the uploadId to the getMultipartUploadSummary() method. #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCMultipartObjectSummary; ZCMultipartObjectSummary summaryRes = bucket.getMultipartUploadSummary("sam/out/sample.txt", "uploadId"); // accessing uploaded parts System.out.println("Object Name:" + summaryRes.getKey()); System.out.println("Upload Id:" + summaryRes.getUploadId()); System.out.println("Status:" + summaryRes.getStatus()); System.out.println(summaryRes.getParts().get(0).getUploadedAt()); System.out.println(summaryRes.getParts().get(0).getPartNumber()); #### Complete Multipart Upload Operation The following method allows us to terminate the multipart process once all the parts have been successfully uploaded. To complete the process we will pass the uploadId to the completeMultipartUpload() method. Boolean completeRes = bucket.completeMultipartUpload("sam/out/sample.txt", "uploadId"); System.out.println(completeRes); #### Example Snippet Illustring Implementation of Multipart Operations #### Sample Code Snippet <br> import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.logging.Logger; import java.util.logging.Level; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.catalyst.advanced.CatalystAdvancedIOHandler; import com.zc.component.stratus.ZCBucket; import com.zc.component.stratus.ZCStratus; import com.zc.component.stratus.beans.ZCInitiateMultipartUpload; import com.zc.exception.ZCServerException; import java.io.InputStream; import java.io.FileInputStream; import java.io.ByteArrayInputStream; public class MultipartUpload implements CatalystAdvancedIOHandler { private static final Logger LOGGER = Logger.getLogger(Sample.class.getName()); @Override public void runner(HttpServletRequest request, HttpServletResponse response) throws Exception { try { switch (request.getRequestURI()) { case "/": { ZCStratus stratus = ZCStratus.getInstance(); // get bucket instance ZCBucket bucket = stratus.bucketInstance("sample"); // multipart upload String key = "sample.mp4"; InputStream file = new FileInputStream( "/users/sam/sample.mp4"); ZCInitiateMultipartUpload initiateUploadResponse = bucket.initiateMultipartUpload(key); String uploadId = initiateUploadResponse.getUploadId(); System.out.println("Multipart upload initiated. Upload ID: " + uploadId); // File size and part size (50 MB minimum) int partSize = 50 * 1024 * 1024; // 50 MB long fileSize = file.available(); double result = (double) fileSize / partSize; int noOfParts = (int) Math.ceil(result); // Upload parts in parallel List&lt;CompletableFuture&lt;Void&gt;&gt; uploadedParts = new ArrayList&lt;&gt;(); ExecutorService executor = Executors.newFixedThreadPool(4); int partNumber = 1; while (noOfParts &gt;= partNumber) { int currentPartNumber = partNumber; byte[] buffer = new byte[partSize]; file.read(buffer); InputStream fileData = new ByteArrayInputStream(buffer); uploadedParts.add(CompletableFuture.runAsync(() -&gt; { try { bucket.uploadPart(key, uploadId, fileData, currentPartNumber); LOGGER.log(Level.INFO, "Part {0} Uploaded", currentPartNumber); } catch (Exception e) { throw new RuntimeException(e); } }, executor)); partNumber++; } CompletableFuture&lt;Void&gt; isUploaded = CompletableFuture .allOf(uploadedParts.toArray(new CompletableFuture[0])); try { isUploaded.get(); } catch (Exception e) { throw new ZCServerException("Error while uploading the object", e); } Boolean completeRes = bucket.completeMultipartUpload(key, uploadId); if (completeRes) { LOGGER.log(Level.INFO, "Upload Completed"); } } default: { response.setStatus(404); response.getWriter().write("You might find the page you are looking for at \"/\" path"); } } } catch (Exception e) { if (e instanceof ZCServerException) { int statusCode = ((ZCServerException) e).getStatus(); System.out.println("HTTP status code: " + statusCode); } LOGGER.log(Level.SEVERE, "Exception in Sample", e); } } } ### Upload an Object Using Transfer Manager #### Create Transfer Manager Instance #### Sample Code Snippet <br> import com.zc.component.stratus.transfer.ZCTransferManager; ZCTransferManager transferManager= ZCTransferManager.getInstance(bucket); #### Multipart Upload **Create Multipart Upload Instance** The following SDK method will create a multipart instance by initiating multipart upload. #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCMultipartUpload; ZCMultipartUpload multipart = transferManager.createMultipartInstance("sam/out/sample.txt"); If you are required to create an instance for an already initialized multipart upload operation, then copy and use the code snippet given below ZCMultipartUpload multipart = transferManager.createMultipartInstance("sam/out/sample.txt", "uploadId"); #### Upload Part In the following SDK method we are going to be using the multipart instance we initialized in the *Create Multipart Upload Instance* section. #### Sample Code Snippet <br> import java.io.InputStream; int partNumber = 1; InputStream part = new FileInputStream("filePath"); Boolean uploadRes = multipart.uploadPart(part, partNumber); System.out.println(uploadRes); #### Upload Summary #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCMultipartObjectSummary; ZCMultipartObjectSummary summaryRes = multipart.getUploadSummary(); // accessing uploaded parts System.out.println("Object Name:" + summaryRes.getKey()); System.out.println("Upload Id:" + summaryRes.getUploadId()); System.out.println("Status:" + summaryRes.getStatus()); System.out.println(summaryRes.getParts().get(0).getUploadedAt()); System.out.println(summaryRes.getParts().get(0).getPartNumber()); System.out.println(summaryRes.getParts().get(0).getSize()); #### Complete Upload Boolean completeRes = multipart.completeUpload(); System.out.println(completeRes); #### Upload Object Using Wrapper The following SDK method acts as a wrapper, where the entire multipart upload operation is carried out without employing multiple steps. Using this method, the object is split into multiple parts, uploaded to the bucket in multiple parts, and then combined once all the parts are uploaded. import java.io.InputStream; import com.zc.component.stratus.beans.ZCMultipartObjectSummary; InputStream file =new FileInputStream("filePath"); int partSize = 50; ZCMultipartObjectSummary res = transferManager.putObjectAsParts("objetName", file, partSize); Note: For object's that are larger than 2GB, we would recommend that you use the individual SDK methods to carry out the multipart upload operation successfully. ### Generate Presigned URL to Upload an Object Presigned URLs are secure URLs that authenticated users can share to their non-authenticated users. This URL will provide non-authenticated users with temporary authorization to access objects. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>A Mandatory parameter. Will hold the complete name of the object along with it's path.</td> </tr> <tr> <td>URL_ACTION</td> <td>Enum</td> <td>A Mandatory parameter. This is the parameter that will allow you to generate a presigned URL for an upload action. <ul> <li>**URL_ACTION.PUT**: To upload an object</li> </ul> </td> </tr> <tr> <td>expiry</td> <td>String</td> <td>This is an Optional parameter. The URL validity time in seconds. <ul> <li>Default value: 3600 seconds</li> <li>Minimum value: 30 seconds</li> <li>Maximum value: 7 days</li> </ul> </td> </tr> <tr> <td>activeFrom</td> <td>String</td> <td>This is an Optional parameter. This param will contain the time after which the URL is valid. Maximum value is 7 days. URLs are made active as soon as they are generated by default.</td> </tr> </tbody> </table> #### Sample Code Snippet <br> import com.zc.component.stratus.enums.URL_ACTION; import org.json.simple.JSONObject; JSONObject res = bucket.generatePreSignedUrl("sam/out/sample.txt", URL_ACTION.PUT); System.out.println(res.get("signature")); ### Generate Presigned URL With Expiry and Active Time #### Sample Code Snippet <br> import com.zc.component.stratus.enums.URL_ACTION; import org.json.simple.JSONObject; JSONObject res = bucket.generatePreSignedUrl("object_name",URL_ACTION.GET, "expiry_in","active_from"); System.out.println(res.get("signature")); **Example Response for Generating a Presigned URL for Upload** { "signature": "https://sadi-development.zohostratus.com/_signed/sam.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747904989454&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=UPyH5A4AdAaCpw6S6jVhKFSxg3B0B0p619YN0cAIn4c", "expiry_in_seconds": "100", "active_from": "1726492859577" } **Example Snippet Illustrating Usage of Presigned URL to Upload an Object** import okhttp3.*; import java.io.File; import java.io.IOException; public class BinaryFileUpload { public static void main(String[] args) throws IOException { // Create an OkHttpClient instance for making HTTP requests OkHttpClient client = new OkHttpClient(); // Specify the file to upload. Replace "file_path" with actual file location File file = new File("file_path"); // Create the request body with binary content (octet-stream) RequestBody requestBody = RequestBody.create( MediaType.parse("application/octet-stream"), // Use a specific MIME type if known file ); // ️ Build the PUT request with the pre-signed URL Request request = new Request.Builder() .url("https://sadi-development.zohostratus.com/_signed/sam.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747904989454&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=UPyH5A4AdAaCpw6S6jVhKFSxg3B0B0p619YN0cAIn4c") // Replace with a actual URL .put(requestBody) // PUT request to upload file .build(); // Execute the request and handle the response try (Response response = client.newCall(request).execute()) { if (response.isSuccessful()) { System.out.println("Object uploaded successfully"); } else { // Print error if upload fails System.err.println("Error: " + response.code() + " - " + response.body().string()); } } } } -------------------------------------------------------------------------------- title: "Extract a Zipped Object" description: "This page lists the Java SDK method to extract a zipped object." last_updated: "2026-09-29T06:07:16.249Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/extract-zipped-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/extract-zipped-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/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> #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCStratusZipExtractResponse; ZCStratusZipExtractResponse res = bucket.unzipObject("sam/out/sample.zip","output/"); System.out.println(res.getObjectName()); System.out.println(res.getTaskId()); ### Get Zip Extraction Status The zip extraction process occurs asynchronously, and the time it takes to complete the extraction process is highly contingent on the size of the zip file. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section Using the taskId parameter, in the following SDK method, we can determine the status of the extraction. The taskId is returned in the response of unzipObject() method. #### Sample Code Snippet <br> import org.json.simple.JSONObject; JSONObject res = object.getUnzipStatus("sam/out/sample.zip","taskId"); System.out.println(res); #### Example Response { "task_id": "6963000000272049", "status": "SUCCESS" } -------------------------------------------------------------------------------- title: "Copy Object" description: "This page lists the Java SDK method to make a copy of an object within its own bucket." last_updated: "2026-09-29T06:07:16.249Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/copy-objects/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/copy-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/copy-objects/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Copy Object Using this SDK method, you can copy an object and paste it within a bucket. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section The key will be the object you are going to copy, and the destination, will contain the new name of the copied object. To paste the copied object in a different path, you need to provide the complete path name as destination. Note: * You need to provide the complete object name, along with the path for both key and destination values. * For example, if you have file named "kitten.png" in the path pictures/puppy, and you need to copy the file to pictures/kitten path, then: <br /> key value will be 'pictures/puppy/kitten.png'<br /> destination value will be 'pictures/kitten/kitten.png'<br /> #### Sample Code Snippet <br> import org.json.simple.JSONObject; JSONObject copyRes = bucket.copyObject("sam/out/sample.txt", "output/sample.txt") System.out.println(copyRes); #### Example Response { "copy_to": "output/sample.txt", "object_key": "sam/out/sample.txt", "message": "Object copied successfully." } -------------------------------------------------------------------------------- title: "Rename and Move Operations on an Object" description: "This page lists the Java SDK method to perform rename and move operations on an object." last_updated: "2026-09-29T06:07:16.250Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/rename-move-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/rename-move-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) -------------------------------------------------------------------------------- # Rename and Move Operations on an Object To rename and to move an object, we will be using the same renameObject() SDK method. ### Rename an Object Using the renameObject() SDK method you can rename objects present in a bucket. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section Note: The following characters including space are not supported when you create a path or an object: double quote, both angular brackets, hashtag, backward slash and pipe symbol. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>The original name of the object that you need to rename</td> </tr> <tr> <td>destination</td> <td>String</td> <td>The new name that you rename the object with</td> </tr> </tbody> </table> #### Sample Code Snippet <br> import org.json.simple.JSONObject; JSONObject res = bucket.renameObject("sam/out/sample.txt", "sam/out/update_sample.txt"); System.out.println(res); Note: You cannot rename objects in a bucket that has Versioning enabled. ### Move an Object Using the renameObject() SDK method, we can move the object from one path to another within a bucket. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>The complete name and path of the object that you are required to move.</td> </tr> <tr> <td>destination</td> <td>String</td> <td>The complete name and new path of the object.</td> </tr> </tbody> </table> Note: * You need to provide the complete object name, along with the path for both key and destination values. * For example, if you have file named "kitten.png" in the path pictures/puppy, and you need to move the file to pictures/kitten path, then: <br /> key value will be 'pictures/puppy/kitten.png'<br /> destination value will be 'pictures/kitten/kitten.png'<br /> #### Sample Code Snippet <br> import org.json.simple.JSONObject; JSONObject res = bucket.renameObject("sam/out/sample.txt", "output/sample.txt"); System.out.println(res);<br /> Note: You cannot perform move operations in a bucket that has Versioning enabled. -------------------------------------------------------------------------------- title: "Delete Objects" description: "This page lists the Java SDK method to delete objects stores in a bucket." last_updated: "2026-09-29T06:07:16.250Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/delete-objects/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Delete an Object Help Documentation (/en/cloud-scale/help/stratus/objects/manage-object/delete-object/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/delete-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/delete-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/delete-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/delete-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Delete Objects The following SDK methods will allow you to perform delete operations in Stratus. The Bucket reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>key</td> <td>String</td> <td>A Mandatory parameter. Will hold the complete name of the object along with it's path.</td> </tr> <tr> <td>versionId</td> <td>String</td> <td>An Optional parameter. If Versioning is enabled for your bucket then, this param will help you refer to a particular version using its unique Version ID.</td> </tr> <tr> <td>ttl</td> <td>int</td> <td>An Optional parameter. It allows you to schedule your delete operations. For example, if you provide the value of ttl as 60, the delete operation will only occur after 60 seconds. The value of ttl has to be >= 60 seconds.</td> </tr> </tbody> </table> ### Delete a Single Object Using this SDK method, you can delete a particular object by passing the object name to the deleteObject() method. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section #### Sample Code Snippet <br> import org.json.simple.JSONObject; int ttl = 200; //time to live in seconds JSONObject deleteRes = bucket.deleteObject("sam/out/sample.txt", "versionId", ttl); System.out.println(deleteRes); Note: If Versioning is enabled on the bucket and no specific versionId is provided, deleting an object will remove all versions of that object by default. ### Delete Multiple Objects Using this SDK method, you can delete multiple objects by passing the names of the objects that need to be deleted as an array. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section Ensure you provide the versionId of the object if you enabled Versioning for your bucket. You can also schedule your delete operation using the ttl variable. For example, if you provide the value of ttl as **60**, the delete operation will only occur after **60 seconds**. #### Sample Code Snippet <br> import com.zc.component.stratus.beans.ZCDeleteObjectRequest; import org.json.simple.JSONObject; ZCDeleteObjectRequest deleteRequest = ZCDeleteObjectRequest.getInstance(); deleteRequest.setObject("sam/out/sample.txt", "76dhe7yr738rud"); deleteRequest.setObject("sam/out/add.txt", "cjdhf73673g7yt7d"); deleteRequest.setTTL(70); JSONObject res = bucket.deleteObjects(deleteRequest); System.out.println(res); ### Truncate Bucket Using this SDK method you will be able to essentially every single object present in the bucket. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section #### Sample Code Snippet <br> import org.json.simple.JSONObject; JSONObject truncateRes = bucket.truncate(); System.out.println(truncateRes); ### Delete a Path in the Bucket Using this SDK, you will be able to delete all the objects present in a path. You need to pass the complete path to the deletePath() method. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section #### Sample Code Snippet <br> import org.json.simple.JSONObject; JSONObject res = bucket.deletePath("sam/"); System.out.println(res); Note: Ensure that you provide the exact path. If an incorrect path is provided, the delete action will get scheduled, but it will result in an error. -------------------------------------------------------------------------------- title: "Create Object Instance" description: "This page lists the Java SDK method to create an object instance." last_updated: "2026-09-29T06:07:16.251Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/create-object-instance/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/create-object-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/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. #### Sample Code Snippet <br> import com.zc.component.stratus.ZCObject; ZCObject object = bucket.getObjectInstance("sam/out/sample.txt"); -------------------------------------------------------------------------------- title: "List Versions of an Object" description: "This page lists the Java SDK method to get versions of an object." last_updated: "2026-09-29T06:07:16.251Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/list-object-versions/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Object Versioning Help Documentation (/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/rename-move/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/get-object-versions/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # List Versions of an Object ### List All Versions of an Object Enabling Versioning in a bucket allows you to store multiple versions of the same object in the bucket. Each version of the object will have its own versionId. This SDK method allows you to get all the existing versions of an object present in a bucket by pagination. The Object reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>nextToken</td> <td>String</td> <td>Will hold the value to determine the next set of versions.</td> </tr> <tr> <td>maxVersion</td> <td>int</td> <td>An Optional parameter. Will hold the value of the maximum number of versions of the object that can be listed per iteration.</td> </tr> </tbody> </table> #### Sample Code Snippet <br> import com.zc.component.stratus.ZCBucket; import com.zc.component.stratus.ZCStratus; import com.zc.component.stratus.ZCPagedObjectResponse; import com.zc.component.stratus.ZCObject; import com.zc.component.stratus.beans.ZCObjectVersions; import com.zc.component.stratus.beans.ZCObjectVersions.ZCVersionDetail; import java.util.List; String nextToken = null; int maxVersion = 5; do { ZCObjectVersions res = object.listPagedVersions(maxVersion, nextToken); System.out.println(res.getVersion()); for(ZCVersionDetail version : res.getVersion()) { System.out.println("version id: "+version.getVersionId()); } nextToken = res.getNextToken(); } while(nextToken != null); ### List All Versions of the Object in an Iterable Manner You can use the following SDK method to list all available versions of the object in a single call. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section #### Sample Code Snippet <br> import java.util.Iterator; import com.zc.component.stratus.beans.ZCObjectVersions; import com.zc.component.stratus.beans.ZCObjectVersions.ZCVersionDetail; int maxVersion = 10; Iterable&lt;List&lt;ZCVersionDetail&gt;&gt; paginationIterable=object.listIterableVersions(maxVersion); Iterator&lt;List&lt;ZCVersionDetail&gt;&gt; iterator = paginationIterable.iterator(); while(iterator.hasNext()) { List&lt;ZCVersionDetail&gt; objects= iterator.next(); for(ZCVersionDetail object: objects){ System.out.println(object.getVersionId()); } } -------------------------------------------------------------------------------- title: "Get Object Details" description: "This page lists the Java SDK method to get details of objects stored in a bucket." last_updated: "2026-09-29T06:07:16.251Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/object-details/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Objects Help Documentation (/en/cloud-scale/help/stratus/objects/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/get-object-details/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/object-details/) - iOS SDK (/en/cloud-scale/help/stratus/introduction) - Android SDK (/en/cloud-scale/help/stratus/introduction) - Flutter SDK (/en/cloud-scale/help/stratus/introduction) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Get Object Details ### Get Details of an Object Using this SDK method, you will be able to get all details of an object and all its versions. The Object reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section #### Sample Code Snippet <br> import com.zc.component.stratus.ZCObject; ZCObject objectRes = object.getDetails(); System.out.println(objectRes); Note: If Versioning is enabled, then using this SDK method will only return the latest version's object details. ### Get Details of a Particular Version of the Object Using this SDK method, you will be able to get all details of a particular object's version. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>versionId</td> <td>String</td> <td>An Optional parameter. If Versioning is enabled for your bucket then, this param will help you refer to a particular version using its unique Version ID.</td> </tr> </tbody> </table> #### Sample Code Snippet <br> import com.zc.component.stratus.ZCObject; ZCObject objectRes = object.getDetails("versionId"); System.out.println(objectRes); Note: You can get the details of the latest version of the object by passing the parameter valuse as topVersion. -------------------------------------------------------------------------------- title: "Put Object Meta Data" description: "This page lists the Java SDK method to add meta data for an object stored in the object." last_updated: "2026-09-29T06:07:16.251Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/put-object-meta/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Object Metadata Help Documentation (/en/cloud-scale/help/stratus/objects/introduction/#metadata) - JavaScript SDK Documentation (/en/sdk/javascript/v1/cloudscale/stratus/put-object-metadata/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/put-object-meta/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Put Object Meta Data Using the following SDK method, you can add meta details for a particular object stored in a bucket in Stratus. The Object reference used in the below code snippet is the component instance. Info: To use this SDK method, you need intialize it with Admin scope. You can learn more about this requirement from this section The meta details will be passed as JSON key value pairs. For example, {"meta_key" : "meta_value"} Note: * You can use alphanumeric, underscores, or whitespace characters, as well as hyphens, to write your metadata. No other special character is allowed other than the once mentioned. * You can fetch the metadata of an object using the **HEAD** request method. In the response, the metadata will be listed in the key 'x-user-meta'. * The maximum size limit of characters allowed for the overall metadata is **2047** characters. The character count used to determine the size limit also includes the colon ":" special character used to define the key value pair. #### Sample Code Snippet <br> import org.json.simple.JSONObject; import java.util.HashMap; HashMap&lt;String, String&gt; objectMeta = new HashMap&lt;&gt;(); objectMeta.put("key1", "value1"); objectMeta.put("key2", "value2"); JSONObject res = object.putMeta(objectMeta); System.out.println(res); Note: Using this method to pass new meta details without adding the existent details will delete the existing details and only put the new details. To avoid this, pass the new meta details along with the existing meta details. **Example Response** { "message": "Metadata added successfully" } ### ZCQL -------------------------------------------------------------------------------- title: "Execute ZCQL queries" description: "This page describes the method to execute ZCQL queries on a table in the Data Store in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.252Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/zcql/execute-zcql-query/" service: "Cloud Scale" related: - Execute ZCQL queries - API (/en/api/code-reference/cloud-scale/zcql/execute-zcql-query/#ExecuteZCQLQuery) - Execute ZCQL queries (/en/cloud-scale/help/zcql/introduction) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # ZCQL ZCQL is Catalyst's own query language that enables you to perform data retrieval, insertion, updating, and deletion operations on the tables in the Catalyst Data Store. You can execute a variety of DML queries using ZCQL to obtain or manipulate data, and use various clauses and statements such as the SQL Join clauses, Groupby and OrderBy statements, and built-in SQL functions. ### Execute ZCQL Queries Catalyst also provides an **OLAP database**, in addition to the primary Data Store that is suited for analytical data retrieval queries. You can choose to execute simple transactional queries on the primary Data Store, and complex analytical queries that involve ZCQL functions on the OLAP database. The queries that you execute on the primary Data Store can include SELECT, INSERT, UPDATE, or DELETE statements. The queries that you execute on the OLAP database must only include the SELECT statement, as direct write operations on it are not allowed. You must construct a ZCQL query and pass it to the executeQuery() method for execution as shown in the sample code below. The executeQuery() method supports these three parameters: * The String variable containing the constructed query statement * isV2?: A boolean value (true or false) indicating if it is a ZCQL v2 query * isOLAP?: A boolean value (true or false) indicating if the query needs to be executed on the OLAP database executeQuery(query: string, isV2?: boolean , isOLAP?:boolean) A sample SELECT query is shown below. The response will contain the records you fetch using the SELECT query, or the response generated for the other operations. #### Sample Code Snippet <br> import com.zc.component.object.ZCRowObject; import com.zc.component.zcql.ZCQL; //Construct the query to be executed String query = "SELECT * from empDetails limit 10"; //Get the ZCQL instance and execute query using the query string ArrayList <ZCRowObject> rowList = ZCQL.getInstance().executeQuery(query, true , false) ## Connectors -------------------------------------------------------------------------------- title: "Connectors" description: "This page describes the method to use connectors to manage access token in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.253Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/connectors/connectors/" service: "All Services" -------------------------------------------------------------------------------- # Connectors A Catalyst Connector provides a seamless connection between Catalyst and an external Zoho service established through **Zoho OAuth authentication**. You can avail the use of a connector in your Catalyst application if your business logic includes the use of an external Zoho service's API, such as a Zoho CRM or a Zoho WorkDrive API. Catalyst handles the connection by storing the Access Token you generate in Zoho API console for a specific application in Catalyst Cache until its expiry. After it expires, the connector will automatically fetch a new Access Token using the Refresh Token and store it in the cache. Each time the Access Token expires, the connector automatically fetches and caches a new token in the background, relieving you from the efforts of constructing the logic to maintain an uninterrupted connection with the external Zoho service in your application's business logic. Note: Catalyst Connectors can only be used to maintain connections with an external Zoho service, and not any third-party services. This is because, the OAuth standards maintained across all Zoho services are uniform and compatible for Catalyst to implement the Connectors feature. Before you configure the connector in your Java business logic as shown below, you will need to register a new client in the Zoho API console, and follow the steps to generate an Authorization Code and an Access Token for the first time. You can then configure the connector with the Refresh Token received, as well as other standard OAuth parameters such as the Client ID, Client Secret, Authentication URL, and Refresh URL that are required to refresh the Access Token automatically in a periodical manner. You can also incorporate your own logic in the connector based on your requirements. Note: * The name you provide for each connector in your logic must be unique. * If you create a server-based application in the Zoho API console and you allow the access token to be created for different users within the same application, then you will need to provide a different and unique connector name for each user. This is because, when the same connector is used for different users in an application, the token will be overwritten on the same cache segment resulting in fetching the wrong user's data from the external Zoho service. The code below illustrates a Java connector. #### Sample Code Snippet <br> import org.json.simple.JSONObject; import com.zc.auth.connectors.ZCConnection; import com.zc.auth.connectors.ZCConnector; JSONObject authJson = new JSONObject(); // The JSON object holds the client_id, client_secret, refresh_token and refresh_url authJson.put("client_id","{client_id}"); authJson.put("client_secret","{client_secret}"); authJson.put("auth_url","{auth_url}"); authJson.put("refresh_url","{refresh_url}"); authJson.put("refresh_in","{refresh_in}"); //If refresh token is not provided, then you must provide the code to generate the refresh token authJson.put("refresh_token","{refresh_token}"); JSONObject connectorJson = new JSONObject(); connectorJson.put("CRMConnector",authJson); // You can create connectors for multiple Zoho services ZCConnection conn = ZCConnection.getInstance(connectorJson); ZCConnector crmConnector = conn.getConnector("CRMConnector"); // Fetches the AccessToken String accessToken = crmConnector.getAccessToken(); ## General ### Projects -------------------------------------------------------------------------------- title: "Retrieve Project Data Cached During Project Initialization" description: "This page describes the method to retrieve project data cached during project initialization." last_updated: "2026-09-29T06:07:16.254Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/general/projects/retrieve-project-cached-data/" service: "All Services" related: - Projects - API (/en/api/code-reference/general/projects/create-new-project/#CreateNewProject) - Initialize Projects (/en/cli/v1/initialize-resources/initialize-new-project/) -------------------------------------------------------------------------------- # Retrieve project data cached during project initialization Catalyst allows you to cache your project data in the backend as an app object during initialization. The SDK snippet below demonstrates how you can use the getProject() method to retrieve the cached app object at any time. #### Sample Code Snippet <br> import com.zc.common.ZCProject; import com.zc.component.zcql.ZCQL; ZCProject userProject = ZCProject.getProject("user"); ZCQL.getInstance(userProject).executeQuery("select * from test"); // You must use the getInstance() method to create a ZCQL object with a custom scope that you specify ## Job Scheduling -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the methods to perform Job Scheduling operations" last_updated: "2026-09-29T06:07:16.254Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/overview/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/jobpool/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/overview/) - Python SDK (/en/sdk/python/v1/job-scheduling/overview/) - REST API Collection (/en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Job Scheduling SDK Job Scheduling is a Catalyst service that allows you to schedule job submissions and execute them in a Job Pool to trigger Circuits, Webhooks(any third-party URL), Job Functions, and App Sail service's endpoints. Using the Catalyst SDK, you can perform the following operations through code: <table class="content-table"> <thead> <tr> <th class="w25p">Job Scheduling Component</th> <th class="w75p">Operations Possible Using SDK</th> </tr> </thead> <tbody> <tr> <td>Job Pool</td> <td>Get All Job Pool<br />Get a Specific Job Pool</td> </tr> <tr> <td>Job</td> <td>Create Job<br />Get Job Details<br />Delete a Job</td> </tr> <tr> <td>Cron</td> <td>Create a One-Time Cron<br />Create a Recurring Cron<br />Create Cron Using Cron Expressions<br />Get Details of a Particular Cron<br />Get Details of All Crons<br />Update Cron<br />Pause Cron<br />Resume Cron<br />Run Cron<br />Delete Cron</td> </tr> </tbody> </table> <br /> -------------------------------------------------------------------------------- title: "Initialize Job Scheduling Instance" description: "This page describes the method to create a component reference for the Job Scheduling service." last_updated: "2026-09-29T06:07:16.254Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/initialize-job-scheduling-instance/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/jobpool/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/jobpool/get-all-jobpool/) - Python SDK (/en/sdk/python/v1/job-scheduling/initialize-job-scheduling-instance/) - REST API Collection (/en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Initialize Job Scheduling Instance You can create a Job Scheduling component reference as shown below. This will not fire a server-side call. We will refer to this component instance in various code snippets of working with Job Scheduling's components. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.ZCJobScheduling; ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance(); // get job scheduling instance ### Cron -------------------------------------------------------------------------------- title: "Create a One-Time Cron" description: "This page describes the Java method to create a one-time cron with sample code snippets." last_updated: "2026-09-29T06:07:16.254Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/cron/create-one-time-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/cron/create-one-time-cron/) - Python SDK (/en/sdk/python/v1/job-scheduling/cron/create-one-time-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/create-cron/create-one-time-cron/#CreateaOne-TimeCron) -------------------------------------------------------------------------------- # Create a One-Time Cron The Cron component is used to schedule the submission of a job to the job Pool. Using the following SDK, you will be able to create a cron that will schedule a job submission only once. Note: The following SDK is written for a job that will trigger a Job Function. To make the SDK compatible for the other types, you need to replace the value with proper Job Pool ID, or Job Pool Name, and provide the appropriate Target Name, or Target ID. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; import com.zc.component.jobscheduling.beans.cron.ZCCronBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobMetaDetail; import org.json.simple.JSONObject; // generate function job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // get function job builder .setJobConfig(2, 15 * 60 l) // set job config - job retries => 2 retries in 15 mins (optional) .setJobpoolName("functions_jobpool") // set the name of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) // .setJobpoolId(1234567890L) // set the Id of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) .setTargetName("target_function") // set target function's name (optional) (either TargetName or TargetId is mandatory) // .setTargetId(1234567890L) // set the target function's Id (optional) (either TargetName or TargetId is mandatory) .setParams(new JSONObject() { { put("arg1", "job"); put("arg2", "test"); } }) // set params to be passed to target function (optional) .setJobName("job_name") // set job name .build(); // build job meta // generate cron details ZCCronDetails oneTimeCronDetails = ZCCronBuilder.zcOneTimeCronBuilder() // get one time cron builder .setCronStatus(true) // set cron as enabled .cronConfig((System.currentTimeMillis() / 1000) + (60 * 60), "America/Los_Angeles") // set the execution time as UNIX timestamp in seconds .setJobMeta(jobMeta) // set job meta (modify based on the job) .setCronName("one_time_cron") // set cron name (unique) .setCronDescription("one_time_cron") // set corn description (optional) .build(); // build cron details // create one time cron ZCCronDetails oneTimeCron = jobScheduling.cron.createCron(oneTimeCronDetails); Note: We urge you to use this SDK to configure only Dynamic Crons. Use the UI Builder to configure Pre-defined Crons. -------------------------------------------------------------------------------- title: "Create a Recurring Cron" description: "This page describes the Java method to create a recurring cron with sample code snippets." last_updated: "2026-09-29T06:07:16.254Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/cron/create-recurring-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/jobpool/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/cron/create-recurring-cron/) - Python SDK (/en/sdk/python/v1/job-scheduling/cron/create-recurring-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/create-cron/create-every-cron/#CreateanEveryCron) -------------------------------------------------------------------------------- # Create a Recurring Cron Using the following SDK, you will be able to create a recurring cron that can be executed at various time-period intervals. The intervals can range from a minute to entire calendar years. ### Create an Every Cron The following SDK can be used to create a recurring cron that will submit a job to the job pool at a scheduled interval that is less than **24Hrs**. Note: The following SDK is configured to submit a job every 2Hrs 1Mins and 3secs. You can change this value as per your requirement by passing the relevant value to the setTime() method. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; import com.zc.component.jobscheduling.beans.cron.ZCCronBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobMetaDetail; import org.json.simple.JSONObject; // generate function job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // get function job builder .setJobConfig(2, 15 * 60 l) // set job config - job retries => 2 retries in 15 mins (optional) .setJobpoolName("functions_jobpool") // set the name of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) // .setJobpoolId(1234567890L) // set the Id of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) .setTargetName("target_function") // set target function's name (optional) (either TargetName or TargetId is mandatory) // .setTargetId(1234567890L) // set the target function's Id (optional) (either TargetName or TargetId is mandatory) .setParams(new JSONObject() { { put("arg1", "job"); put("arg2", "test"); } }) // set params to be passed to target function (optional) .setJobName("job_name") // set job name .build(); // build job meta // EVERY CRON => which will be run for every 2hrs 1min and 3sec // generate cron details ZCCronDetails everyCronDetails = ZCCronBuilder.zcEveryCronBuilder() // get every cron builder .setCronStatus(true) // set cron as enabled .setTime(2, 1, 3) // set the repetition interval .setJobMeta(jobMeta) // set the job meta (modify based on the job) .setCronName("every_cron") // set cron name (unique) .setCronDescription("every_cron") // set corn description (optional) .build(); // build cron details // create every cron ZCCronDetails everyCron = jobScheduling.cron.createCron(everyCronDetails); <br> ### Create a Daily Cron The following SDK can be used to schedule a cron to submit a job to the job pool at a fixed time at a **daily interval**. Note: The following SDK is configured to execute the cron on 0Hr 0Min 0Sec every single day. You can change this value as per your requirement by passing the relevant value to the setTime() method. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; import com.zc.component.jobscheduling.beans.cron.ZCCronBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobMetaDetail; import org.json.simple.JSONObject; // generate function job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // get function job builder .setJobConfig(2, 15 * 60 l) // set job config - job retries => 2 retries in 15 mins (optional) .setJobpoolName("functions_jobpool") // set the name of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) // .setJobpoolId(1234567890L) // set the Id of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) .setTargetName("target_function") // set target function's name (optional) (either TargetName or TargetId is mandatory) // .setTargetId(1234567890L) // set the target function's Id (optional) (either TargetName or TargetId is mandatory) .setParams(new JSONObject() { { put("arg1", "job"); put("arg2", "test"); } }) // set params to be passed to target function (optional) .setJobName("job_name") // set job name .build(); // build job meta // DAILY CRON => which will be run on 0hrs 0mins and 0sec daily // generate cron details ZCCronDetails dailyCronDetails = ZCCronBuilder.zcDailyCronBuilder() // get daily cron builder .setCronStatus(true) // set cron as enabled .setTime(0, 0, 0) // set the time of the day during which the cron should be executed // .setTimezone("America/Los_Angeles") // set the timezone (optional) .setJobMeta(jobMeta) // set the job meta (modify based on the job) .setCronName("daily_cron") // set cron name (unique) .setCronDescription("daily_cron") // set corn description (optional) .build(); // build cron details // create daily cron ZCCronDetails dailyCron = jobScheduling.cron.createCron(dailyCronDetails); <br> ### Create a Monthly Cron The following SDK can be used to schedule a cron to submit a job to the job pool at a fixed date, and time at a **monthly interval**. Additionally, you also have the option to submit a job at a monthly interval but on a particular week. If you choose to schedule the cron to execute at a monthly interval on a date-based schedule, then the range of possible dates, based on the **month**, will be **1-31**. Similarly, if you choose a **week-based** interval, then the range can either be from **1-4**, and the particular **days of the week** will be in the range of **1-7**. Note: The following SDK is configured to execute the cron that will submit a job to the job pool every month on the 1st, 3rd, and 5th at 0Hrs,0Mins, 0Secs. You can change this value as per your requirement by passing the relevant value to the setTime() method. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; import com.zc.component.jobscheduling.beans.cron.ZCCronBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobMetaDetail; import org.json.simple.JSONObject; Note: In the following SDK snippet, if you comment out the lines .setWeeksOfMonth(1, 3) and .setDayOfTheWeek(1, 2), and comment in code lines .setTime(0, 0, 0) and .setDays(1, 3, 5), then the cron will be scheduled to submit a job to the job pool every month on the 1st and 2nd days of the 1st and 3rd week of a month. // generate function job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // get function job builder .setJobConfig(2, 15 * 60 l) // set job config - job retries => 2 retries in 15 mins (optional) .setJobpoolName("functions_jobpool") // set the name of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) // .setJobpoolId(1234567890L) // set the Id of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) .setTargetName("target_function") // set target function's name (optional) (either TargetName or TargetId is mandatory) // .setTargetId(1234567890L) // set the target function's Id (optional) (either TargetName or TargetId is mandatory) .setParams(new JSONObject() { { put("arg1", "job"); put("arg2", "test"); } }) // set params to be passed to target function (optional) .setJobName("job_name") // set job name .build(); // build job meta // MONTHLY CRON => which will be run on 0hrs 0mins 0sec on 1st 3rd and 5th days of every month // generate cron details ZCCronDetails monthlyCronDetails = ZCCronBuilder.zcMonthlyCronBuilder() // get monthly cron builder .setCronStatus(true) // set cron as enabled .setTime(0, 0, 0) // set the time of the day during which the cron should be executed .setDays(1, 3, 5) // set the days of the month (day based config) // .setWeeksOfMonth(1, 3) // set the weeks of the month (either week based or day based config is necessary) // .setDayOfTheWeek(1, 2) // set the days of the week (either week based or day based config is necessary) // .setTimezone("America/Los_Angeles") // set the timezone (optional) .setJobMeta(jobMeta) // set the job meta (modify based on the job) .setCronName("monthly_cron") // set cron name (unique) .setCronDescription("monthly_cron") // set corn description (optional) .build(); // build cron details // create monthly cron ZCCronDetails monthlyCron = jobScheduling.cron.createCron(monthlyCronDetails); <br> ### Create a Yearly Cron The following SDK can be used to schedule a cron tosubmit a job to the job pool at a fixed date, and time at a fixed month on a **yearly** interval. Additionally, you also have the option to submit a job at a yearly interval but on a particular week. If you choose to schedule the cron to execute at a **yearly** interval on a **date-based** schedule, then the range of possible dates, based on the **month**, will be **1-31**, and the **month** will be determined based on the range of values **1-12**. Similarly, if you choose a **week-based** interval, then the range can either be from **1-4**, and the particular **days of the week** will be in the range of **1-7**. Note: The following SDK is configured to execute the cron that will submit a job to the job pool on the 1st, 2nd, and 3rd on the 8th month of every year. You can change this value as per your requirement by passing the relevant value to the setTime() method. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; import com.zc.component.jobscheduling.beans.cron.ZCCronBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobMetaDetail; import org.json.simple.JSONObject; // generate function job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // get function job builder .setJobConfig(2, 15 * 60 l) // set job config - job retries => 2 retries in 15 mins (optional) .setJobpoolName("functions_jobpool") // set the name of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) // .setJobpoolId(1234567890L) // set the Id of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) .setTargetName("target_function") // set target function's name (optional) (either TargetName or TargetId is mandatory) // .setTargetId(1234567890L) // set the target function's Id (optional) (either TargetName or TargetId is mandatory) .setParams(new JSONObject() { { put("arg1", "job"); put("arg2", "test"); } }) // set params to be passed to target function (optional) .setJobName("job_name") // set job name .build(); // build job meta // YEARLY CRON => which will be run on 0hrs 0min 0sec on 1st 2nd 3rd days of the 8th month of a year // generate cron details ZCCronDetails yearlyCronDetails = ZCCronBuilder.zcYearlyCronBuilder() // get yearly cron builder .setCronStatus(true) // set cron as enabled .setTime(0, 0, 0) // set the time of the day during which the cron should be executed .setDays(1, 2, 3) // set the days of the month // .setWeeksOfMonth(1) // set the weeks of the month (either week based or day based config is necessary) // .setDayOfTheWeek(3) // set the days of the week (either week based or day based config is necessary) .setMonths(8) // set the months // .setTimezone("America/Los_Angeles") // set the timezone (optional) .setJobMeta(jobMeta) // set the job meta (modify based on the job) .setCronName("yearly_cron") // set cron name (unique) .setCronDescription("yearly_cron") // set corn description (optional) .build(); // build cron details // create yearly cron ZCCronDetails yearlyCron = jobScheduling.cron.createCron(yearlyCronDetails); Note: We urge you to use this SDK to configure only Dynamic Crons. Use the UI Builder to configure Pre-defined Crons. -------------------------------------------------------------------------------- title: "Create a Cron Using Cron Expressions" description: "This page describes the Java method to create a cron defined using Cron Expressions with sample code snippets." last_updated: "2026-09-29T06:07:16.255Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/cron/create-cron-cron-expressions/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/key-concepts/#cron-expressions) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/cron/create-cron-expressions/) - Python SDK (/en/sdk/python/v1/job-scheduling/cron/create-cron-cron-expressions/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/create-cron/create-cron-cron-exp/#CreateaCronUsingCronExpressions) -------------------------------------------------------------------------------- # Create a Cron Using Cron Expressions Use this SDK to implement crons to schedule the submission of jobs to job pools. However, the configuration of the cron will be defined using regex-like expressions called Cron Expressions. Note: In the following SDK, the cron has been configured using Cron Expressions, to submit a job to the job pool on 0Hrs 0Mins 0Secs on every 1st day of the week on the 1st month of every year. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; import com.zc.component.jobscheduling.beans.cron.ZCCronBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobMetaDetail; import org.json.simple.JSONObject; // generate function job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // get function job builder .setJobConfig(2, 15 * 60 l) // set job config - job retries => 2 retries in 15 mins (optional) .setJobpoolName("functions_jobpool") // set the name of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) // .setJobpoolId(1234567890L) // set the Id of the function jobpool (optional) (either jobpoolId or jobpoolName is mandatory) .setTargetName("target_function") // set target function's name (optional) (either TargetName or TargetId is mandatory) // .setTargetId(1234567890L) // set the target function's Id (optional) (either TargetName or TargetId is mandatory) .setParams(new JSONObject() { { put("arg1", "job"); put("arg2", "test"); } }) // set params to be passed to target function (optional) .setJobName("job_name") // set job name .build(); // build job meta // generate cron details ZCCronDetails expressionCronDetails = ZCCronBuilder.zcExpressionCronBuilder() // get expression corn builder .setCronStatus(true) // set cron as enabled .setCronExpression("0 0 * 1 1") // set the UNIX cron expression // .setTimezone("America/Los_Angeles") // set the timezone (optional) .setCronName("expression_cron") // set cron name .setCronDescription("expression_cron") // set corn description (optional) .setJobMeta(jobMeta) // set job meta .build(); // build cron details // create expression cron ZCCronDetails expressionCron = jobScheduling.cron.createCron(expressionCronDetails); Note: We urge you to use this SDK to configure only Dynamic Crons. Use the UI Builder to configure Pre-defined Crons. -------------------------------------------------------------------------------- title: "Get Details of a Particular Cron" description: "This page describes the Java method to get details of a particular cron with sample code snippets." last_updated: "2026-09-29T06:07:16.255Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/cron/get-cron-details/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/cron/get-cron-details/) - Python SDK (/en/sdk/python/v1/job-scheduling/cron/get-cron-details/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/get-cron/#GetCronByIdentifier) -------------------------------------------------------------------------------- # Get Details of a Particular Cron Use the following SDK to get all available details of a particular **Pre-Defined Cron** or **Dynamic Cron**. You need to pass the cron id or the name of the cron to getCron() SDK method. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; ZCCronDetails cronA = jobScheduling.cron.getCron(12378634912l); // get cron details with cron id ZCCronDetails cronB = jobScheduling.cron.getCron("test_cron"); // get cron details with cron name -------------------------------------------------------------------------------- title: "Get Details of All Crons" description: "This page describes the Java method to get the details of all the cron in the project with sample code snippets." last_updated: "2026-09-29T06:07:16.255Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/cron/get-all-cron-details/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/cron/get-all-cron/) - Python SDK (/en/sdk/python/v1/job-scheduling/cron/get-all-cron-details/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/get-all-cron/#GetAllCrons) -------------------------------------------------------------------------------- # Get Details of All Crons The following SDK will allow you to get all available information on all Pre-Defined Crons using the getCron() SDK method. Note: This method will only fetch you details of Pre-Defined Crons. This method will not work for Dynamic Crons. #### Sample Code Snippet <br> import java.util.List; import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; List&lt;ZCCronDetails&gt; allCrons = jobScheduling.cron.getCron(); // get all cron details -------------------------------------------------------------------------------- title: "Update Cron" description: "This page describes the Java method to update a cron in the project with sample code snippets." last_updated: "2026-09-29T06:07:16.255Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/cron/update-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/cron/update-cron/) - Python SDK (/en/sdk/python/v1/job-scheduling/cron/update-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/update-cron/update-one-time-cron/#UpdateaOne-TimeCron) -------------------------------------------------------------------------------- # Update Cron The following SDK can be used to update a particular cron's details. You can use this SDK to update the name, description and target. You can select your required cron by passing the cron id to getCron() method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; ZCCronDetails cron = jobScheduling.cron.getCron(12378634912l); // get cron with cron Id cron.setCronName("test_cron"); // set new cron name ZCCronDetails updatedCronA = jobScheduling.cron.updateCron(12378634912l, cron); // update cron with cron Id updatedCronA.setCronName("updated_test_cron"); ZCCronDetails updatedCronB = jobScheduling.cron.updateCron("test_cron", cron); // update cron with cron name -------------------------------------------------------------------------------- title: "Pause Cron" description: "This page describes the Java method to pause a cron in the project with sample code snippets." last_updated: "2026-09-29T06:07:16.255Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/cron/pause-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/cron/pause-cron/) - Python SDK (/en/sdk/python/v1/job-scheduling/cron/pause-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Pause Cron This SDK method can be used to temporarily halt a cron from submitting a job to the job Pool. You need to pass the cron id or name of the cron you wish to pause to the pauseCron() SDK method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; ZCCronDetails pausedCronA = jobScheduling.cron.pauseCron(123456789l); // pause cron with corn id ZCCronDetails pausedCronB = jobScheduling.cron.pauseCron("test_cron"); // pause cron with cron name -------------------------------------------------------------------------------- title: "Resume Cron" description: "This page describes the Java method to resume a paused cron in the project with sample code snippets." last_updated: "2026-09-29T06:07:16.256Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/cron/resume-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/cron/resume-cron/) - Python SDK (/en/sdk/python/v1/job-scheduling/cron/resume-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Resume Cron This SDK method can be used to resume the operations of a cron that had been previously paused. This can be done by passing the paused cron id or name to the resumeCron() SDK method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; ZCCronDetails resumedCronA = jobScheduling.cron.resumeCron(123456789l); // resume cron with cron id ZCCronDetails resumedCronB = jobScheduling.cron.resumeCron("test_cron"); // resume cron with cron name -------------------------------------------------------------------------------- title: "Run Cron" description: "This page describes the Java method to execute a cron in the project with sample code snippets." last_updated: "2026-09-29T06:07:16.256Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/cron/run-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/cron/run-cron/) - Python SDK (/en/sdk/python/v1/job-scheduling/cron/run-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Run Cron This SDK can be used to execute a cron. The cron once executed will immediately submit the associated job to the job Pool. This can be done by passing the cron id or name to the runCron() SDK method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.job.ZCJobDetails; ZCJobDetails runCronA = jobScheduling.cron.runCron(123456789l); // run cron with cron id ZCJobDetails runCronB = jobScheduling.cron.runCron("test_cron"); // run cron with cron name -------------------------------------------------------------------------------- title: "Delete Cron" description: "This page describes the Java method to delete a cron in the project with sample code snippets." last_updated: "2026-09-29T06:07:16.256Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/cron/delete-cron/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/cron/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/cron/delete-cron/) - Python SDK (/en/sdk/python/v1/job-scheduling/cron/delete-cron/) - REST API Collection (/en/api/code-reference/job-scheduling/cron/delete-cron/#DeleteCron) -------------------------------------------------------------------------------- # Delete Cron This SDK method can be used to delete a particular cron. This can be done by passing the cron id or name to the deleteCron() SDK method. Note: You can use this method to update details of both Pre-Defined Crons and Dynamic Crons. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.cron.ZCCronDetails; ZCCronDetails deletedCronA = jobScheduling.cron.deleteCron(123456789l); // delete cron with cron Id ZCCronDetails deletedCronB = jobScheduling.cron.deleteCron("test_cron"); // delete cron with cron name ### Job Pool -------------------------------------------------------------------------------- title: "Get All Job Pool" description: "This page describes the Java method to get all the job pools present in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.256Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/jobpool/get-all-job-pool/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/jobpool/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/overview/) - Python SDK (/en/sdk/python/v1/job-scheduling/jobpool/get-all-jobpool/) - REST API Collection (/en/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Get All Job Pool Using the following SDK, you will be able to get all the available details on all of the available Job Pools. #### Sample Code Snippet <br> import java.util.ArrayList; import com.zc.component.jobscheduling.beans.jobpool.ZCJobpoolDetails; ArrayList&lt;ZCJobpoolDetails&gt; jobpools = jobScheduling.getJobpool(); // get all jobpool -------------------------------------------------------------------------------- title: "Get a Specific Job Pool" description: "This page describes the Java method to get a specific job pool present in your project with sample code snippets." last_updated: "2026-09-29T06:07:16.256Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/jobpool/get-job-pool/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/jobpool/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/jobpool/get-jobpool/) - Python SDK (/en/sdk/python/v1/job-scheduling/jobpool/get-job-pool/) - REST API Collection (/en/api/code-reference/job-scheduling/jobpool/get-jobpool/#GetJobPoolbyIdentifier) -------------------------------------------------------------------------------- # Get a Specific Job Pool Using the following SDK, you will be able to get the details of a particular Job Pool by either passing the name or the ID of the Job Pool to the getJobpool() SDK method. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.jobpool.ZCJobpoolDetails; ZCJobpoolDetails jobpoolA = jobScheduling.getJobpool("test_jobpool"); // get jobpool with jobpool name ZCJobpoolDetails jobpoolB = jobScheduling.getJobpool(1234567889L); // get jobpool with jobpool Id ### Jobs -------------------------------------------------------------------------------- title: "Create Job" description: "This page describes the Java method to create a Job with sample code snippets." last_updated: "2026-09-29T06:07:16.256Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/jobs/create-job/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/job/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/job/create-job/) - Python SDK (/en/sdk/python/v1/job-scheduling/jobs/create-job/) - REST API Collection (/en/api/code-reference/job-scheduling/job/submit-job/submit-webhook-job/#SubmitWebhookJobByID) -------------------------------------------------------------------------------- # Create Job Using the following SDK method, you can create and submit Jobs to trigger Job Functions, Webhooks, Circuits, and App Sail services. You can also pass optional arguments in the form of JSON key value pairs. SDK snippet to create and submit Job to trigger: #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.job.ZCJobMetaDetail; import com.zc.component.jobscheduling.beans.job.ZCJobBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobDetails; import org.json.simple.JSONObject; // generate function job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // get function job builder .setJobConfig(2, 15 * 60 l) // set job config - job retries => 2 retries in 15 mins (optional) .setTargetName("target_function") // set target function's name (optional) (either TargetName or TargetId is mandatory) // .setTargetId(1234567890L) // set the target function's Id (optional) (either TargetName or TargetId is mandatory) .setParams(new JSONObject() { { put("arg1", "job"); put("arg2", "test"); } }) // set params to be passed to target function (optional) .setJobName("job_name") // set job name .setJobpoolName("test") // set the name of the Function jobpool to which the job should be submitted .build(); // build job meta // submit function job ZCJobDetails functionJob = jobScheduling.job.submitJob(jobMeta); **Ensure the following packages are imported:** import com.zc.component.jobscheduling.beans.job.ZCJobMetaDetail; import com.zc.component.jobscheduling.beans.job.ZCJobBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobDetails; import org.json.simple.JSONObject; // generate circuit job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.circuitJobBuilder() // create circuit job builder .setJobConfig(2, 15 * 60 l) // set job config - job retries => 2 retries in 15 mins (optional) .setTargetName("target_circuit") // set target circuits's name (optional) (either TargetName or TargetId is mandatory) // .setTargetId(1234567890L) // set the target circuits's Id (optional) (either TargetName or TargetId is mandatory) .setCircuitInput(new JSONObject() { { put("key1", "value1"); put("key2", "value2"); } }) // set the test cases for the circuit .setJobName("test_job") // set job name .setJobpoolName("test") // set the name of the Circuit jobpool where the job should be submitted .build(); // build circuit job meta // submit circuit job ZCJobDetails circuitJob = jobScheduling.job.submitJob(jobMeta); **Ensure the following packages are imported:** import com.zc.component.jobscheduling.beans.job.ZCJobMetaDetail; import com.zc.component.jobscheduling.beans.job.ZCJobBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobDetails; import org.json.simple.JSONObject; // generate webhook job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.webhookJobBuilder() // create web hook job builder .setJobConfig(2, 15 * 60 l) // set job config - job retries => 2 retries in 15 mins (optional) .setRequestMethod("POST") // set web hook request's method .setUrl("https://catalyst.zoho.com") // set web hook request's url .setParams(new JSONObject() { { put("arg1", "test"); put("arg2", "job"); } }) // set the web hook request's query params (optional) .setHeaders(new JSONObject() { { put("IS_TEST_REQUEST", "true"); } }) // set the web hook request's headers (optional) .setRequestBody("test_request") // set the web hook request's body (optional) .setJobName("test_job") // set job name .setJobpoolName("test") // set the name of the Webhook jobpool to which the job should be submitted .build(); // build web hook job meta // submit web hook job ZCJobDetails webHookJob = jobScheduling.job.submitJob(jobMeta); **Ensure the following packages are imported:** import com.zc.component.jobscheduling.beans.job.ZCJobMetaDetail; import com.zc.component.jobscheduling.beans.job.ZCJobBuilder; import com.zc.component.jobscheduling.beans.job.ZCJobDetails; import org.json.simple.JSONObject; // generate appsail job meta ZCJobMetaDetail jobMeta = ZCJobBuilder.appSailJobBuilder() // create appsail job builder .setJobConfig(2, 15 * 60 l) // set job config - job retries => 2 retries in 15 mins (optional) .setTargetName("test_appsail") // set appsail name .setRequestMethod("POST") // set appsail request method .setUrl("/test") // set appsail request url .setParams(new JSONObject() { { put("arg1", "value1"); put("arg2", "value2"); } }) // set appsail request query params .setHeaders(new JSONObject() { { put("IS_TEST_REQUEST", "true"); } }) // set the appsail request's headers (optional) .setRequestBody("test_request") // set the appsail request's body (optional) .setJobName("test_job") // set job name .setJobpoolName("test") // set the name of the AppSail jobpool to which the job should be submitted .build(); // build appsail job meta // submit appsail job ZCJobDetails appSailJob = jobScheduling.job.submitJob(jobMeta); -------------------------------------------------------------------------------- title: "Get Job Details" description: "This page describes the Java method to get all available details about a Job with sample code snippets." last_updated: "2026-09-29T06:07:16.256Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/jobs/get-job/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/job/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/job/get-job-details/) - Python SDK (/en/sdk/python/v1/job-scheduling/jobs/get-job/) - REST API Collection (/en/api/code-reference/job-scheduling/job/get-job/#GetJobByID) -------------------------------------------------------------------------------- # Get Job Details Using the following SDK method, you will be able to get all available details about a job that has been submitted to a job Pool. You need to pass the Job Id to the getJob() SDK method. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.job.ZCJobDetails; ZCJobDetails fetchedJob = jobScheduling.job.getJob(1234567890L); // get job with job Id -------------------------------------------------------------------------------- title: "Delete a Job" description: "This page describes the Java method to delete a Job with sample code snippets." last_updated: "2026-09-29T06:07:16.257Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/job-scheduling/jobs/delete-job/" service: "Job Scheduling" related: - Component Help Documentation (/en/job-scheduling/help/job/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/job-scheduling/job/delete-job/) - Python SDK (/en/sdk/python/v1/job-scheduling/jobs/delete-job/) - REST API Collection (/en/api/code-reference/job-scheduling/job/delete-job/#DeleteJobbyID) -------------------------------------------------------------------------------- # Delete a Job Using the following SDK method, you will be able to delete a job that is in the process of being executed in a job Pool. You need to pass the Job Id to the deleteJob() SDK method. #### Sample Code Snippet <br> import com.zc.component.jobscheduling.beans.job.ZCJobDetails; ZCJobDetails deletedJob = jobScheduling.job.deleteJob(1234567890L); // delete job with job Id ## Pipelines -------------------------------------------------------------------------------- title: "Get Pipeline Instance" description: "This page describes the method to fetch pipeline instance and use it for other pipeline operations." last_updated: "2026-09-29T06:07:16.257Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/pipelines/get-pipeline-instance/" service: "All Services" related: - Catalyst Pipelines (/en/pipelines/help/pipelines/introduction) - Create a Pipeline (/en/pipelines/help/pipelines/create-a-pipeline) - JavaScript SDK (/en/sdk/javascript/v1/pipelines/create-instance/) - Python SDK (/en/sdk/python/v1/pipelines/get-pipeline-instance) - REST API (/en/api/code-reference/pipelines/get-pipeline-details) -------------------------------------------------------------------------------- # Catalyst Pipelines Catalyst Pipelines implements a CI/CD approach to enable automation of building, testing, and deployment of web or mobile applications to preferred environments. You can create a pipeline from the Catalyst console.Using the SDKs below, you can retrieve the details of a Catalyst Pipeline and also execute a pipeline by incorporating the code snippets in your application. #### Sample Code Snippet <br> import com.zc.component.pipeline.ZCPipeline; import com.zc.component.pipeline.ZCPipelineDetails; import com.zc.component.pipeline.ZCPipelineRunHistory; # Get Pipeline Instance A component instance is an object that can be used to access the properties specific to a particular component. You can create a component instance to perform the below listed actions in Catalyst Pipelines. You can create a new pipelines_service instance as shown below. This component instance will be used for all Pipeline operations in the Java SDK. ZCPipeline pipelines_service = ZCPipeline.getInstance(); -------------------------------------------------------------------------------- title: "Get Pipeline Details" description: "This page describes the method to fetch all the details of an existing Catalyst Pipeline." last_updated: "2026-09-29T06:07:16.257Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/pipelines/get-pipeline-details/" service: "All Services" related: - JavaScript SDK (/en/sdk/javascript/v1/pipelines/create-instance/) - Python SDK (/en/sdk/python/v1/pipelines/get-pipeline-instance) -------------------------------------------------------------------------------- # Get Pipeline Details You can fetch the details of the Catalyst Pipeline by passing the pipeline ID as a parameter to the getPipelineDetails() method. The name of the pipeline, details of the Catalyst project in which the pipeline has been created, the details of the user who created the pipeline, the time of creation, and if modifications have been done, the details of the user who modified the pipeline, the modified time, the status of the pipeline and other details like runner specifications are returned as response to this method. The pipelines_service reference used below is already defined in this component instance page. ZCPipelineDetails pipeline_details = pipelines_service.getPipelineDetails(16965000000019202L); A sample response is shown below: { "status": "success", "data": { "pipeline_id": "16965000000019202L", "name": "test1", "project_details": { "project_name": "Project-Rainfall", "id": "5000000000072", "project_type": "Live" }, "created_by": { "zuid": "20257791", "is_confirmed": false, "email_id": "amelia.burrows@zylker.com", "first_name": "Amelia", "last_name": "Burrows", "user_type": "Admin", "user_id": "5000000000056" }, "created_time": "Mar 19, 2024 11:28 AM", "modified_by": { "zuid": "20257791", "is_confirmed": false, "email_id": "amelia.burrows@zylker.com", "first_name": "Amelia", "last_name": "Burrows", "user_type": "Admin", "user_id": "5000000000056" }, "modified_time": "Mar 19, 2024 11:28 AM", "git_account_id": "", "mask_regex": [ null ], "pipeline_status": "Active", "config_id": 2, "integ_id": 1 } } -------------------------------------------------------------------------------- title: "Execute Pipeline" description: "This page describes the method to run the Catalyst Pipeline manually." last_updated: "2026-09-29T06:07:16.257Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/pipelines/execute-pipeline/" service: "All Services" related: - JavaScript SDK (/en/sdk/javascript/v1/pipelines/create-instance/) - Python SDK (/en/sdk/python/v1/pipelines/get-pipeline-instance) -------------------------------------------------------------------------------- # Execute Pipeline You can initiate a Catalyst pipeline run by passing the pipeline ID and the branch name as parameters to the runPipeline() method. You can also pass environment variables required for the pipeline execution in a JSON object to this method, and it is completely optional. This method returns the execution history details of the pipeline as the response. JSONObject env = new JSONObject(); env.put("EVENT", "push"); env.put("URL", "https://www.google.com"); ZCPipelineRunHistory run = pipelines_service.runPipeline(8431000000161112051L,main,env); A sample response is shown below: { "status": "success", "data": { "history_id": "5000000021007", "pipeline_id": "8431000000161112051L", "event_time": "Mar 20, 2024 02:02 PM", "event_details": { "BRANCH_NAME": "detective_pre", "EVENT": "push", "URL": "https://www.google.com" }, "history_status": "Queued" } } ## QuickML -------------------------------------------------------------------------------- title: "Create QuickML Instance" description: "This page describes the method to execute QuickML endpoints in your Java application with a sample code snippet." last_updated: "2026-09-29T06:07:16.257Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/quickml/execute-quickml-endpoints/" service: "QuickML" related: - QuickML (/en/quickml/) - QuickML Pipeline Endpoints (/en/quickml/help/pipeline-endpoints/) -------------------------------------------------------------------------------- # Catalyst QuickML Catalyst QuickML is 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 Java object 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. import com.zc.component.quickml.ZCQuickMLDetail; import com.zc.component.quickml.ZCQuickML; // Create a QuickML instance. ZCQuickML quickMlInstance = ZCQuickML.getInstance(); -------------------------------------------------------------------------------- title: "Execute Custom ML Endpoint" description: "This page describes the method to execute QuickML endpoints in your Java application with a sample code snippet." last_updated: "2026-09-29T06:07:16.257Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/quickml/execute-custom-ml-endpoint/" service: "QuickML" related: - QuickML (/en/quickml/) -------------------------------------------------------------------------------- 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 retrieve the inference results from the ML model. The response contains the prediction generated by the ML model based on the input features provided. 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 centres. The `ZCQuickML` instance is initialized using the `getInstance()` method. This initialization does not make a server-side call. You must then create a `HashMap` containing the input data required by the ML model as key-value pairs. The keys in the `HashMap` must match the feature names expected by the trained model, and the corresponding values must contain the input data for those features. The `endpointKey` is the unique identifier of the endpoint published for the ML model in your Catalyst project. The endpoint key and input data are passed to the `runInference(endpointKey, input_data)` method to execute the ML endpoint. The `runInference()` method returns a `ZCQuickMLDetail` object containing the inference response. **_Sample Code Snippet_** //ML-endpoint change method name for ml endpoint predict to runInference HashMap<String, String> input_data = new HashMap<>(); // Give the column names and values based on your dataset. map.put("<FEATURE_1>", "<VALUE_1>"); map.put("<FEATURE_2>", "<VALUE_2>"); map.put("<FEATURE_3>", "<VALUE_3>"); ZCQuickML quickMlInstance = ZCQuickML.getInstance(); String endpointKey = "<ENDPOINT_KEY>"; ZCQuickMLDetail result = quickMlInstance.runInference(endpointKey, input_data); System.out.println(result.getResponse()); 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;"><b>endpointKey</b></td> <td style="border: 1px solid #ccc; padding: 10px;">A mandatory parameter that specifies 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;"><b>input_data</b></td> <td style="border: 1px solid #ccc; padding: 10px;">A mandatory parameter that contains the input data required by the ML model as key-value pairs. The keys must match the features expected by the trained model.</td> </tr> </tbody> </table> <br/> Note: 1. The `predict(endpointKey, input_data)` method continues to be supported for existing implementations and performs the same operation as runInference(endpointKey, input_data). 2. We recommend using `runInference()` 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 open the endpoint details page in the Catalyst console. The endpoint details page provides information such as the **Endpoint URL, required headers, and sample request and response** . -------------------------------------------------------------------------------- title: "Execute LLM Endpoint" description: "This page describes the method to execute QuickML endpoints in your Java application with a sample code snippet." last_updated: "2026-09-29T06:07:16.257Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/quickml/execute-llm-endpoint/" service: "QuickML" related: - QuickML (/en/quickml/) -------------------------------------------------------------------------------- **LLM Serving** QuickML now provides Generative AI services by hosting Large Language Models and Vision Language Models (VLMs) under the 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 configured for the endpoint: <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;"><b>askLlm(endpointKey, prompt)</b></td> </tr> <tr> <td style="border: 1px solid #ccc; padding: 10px;">Conversation mode ON</td> <td style="border: 1px solid #ccc; padding: 10px;"><b>converseWithLlm(endpointKey, prompt, conversationId)</b></td> </tr> </tbody> </table> ### a. Generate an LLM Response Single-shot interaction with a language model requires an input prompt and a valid endpoint key. The endpoint key is generated when the LLM endpoint is created. The `askLlm(endpointKey, prompt)` method sends a single prompt to the published LLM endpoint and returns the generated response. Each request is processed independently, and 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;">Value</th> </tr> </thead> <tbody> <tr> <td style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;"><b>endpointKey</b></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; text-align: left; font: 15px/24px zoho-puvi-semibold;"><b>prompt</b></td> <td style="border: 1px solid #ccc; padding: 10px;">The message sent to the language model.</td> <td style="border: 1px solid #ccc; padding: 10px;">String</td> </tr> </tbody> </table> **Sample Code Snippet** ZCQuickML quickMlInstance = ZCQuickML.getInstance(); // Replace with the endpoint key copied from the Catalyst console. String endpointKey = "<ENDPOINT_KEY>"; // Enter the prompt to send to the LLM. String prompt = "<YOUR_PROMPT>"; ZCQuickMLDetail result = quickMlInstance.askLlm(endpointKey, prompt); System.out.println(result.getResponse()); 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. ### b. Converse with an LLM Conversation mode allows you to interact with a language model while retaining the context of previous interactions within the same conversation. To use conversation mode, you must provide a valid `endpointKey`, `prompt`, and `conversationId`. The endpoint key is generated when the LLM endpoint is created. The `converseWithLlm(endpointKey, prompt, conversationId)` method sends a prompt to a published LLM endpoint while retaining the context of 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;">Value</th> </tr> </thead> <tbody> <tr> <td style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;"><b>endpointKey</b></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; text-align: left; font: 15px/24px zoho-puvi-semibold;"><b>prompt</b></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; text-align: left; font: 15px/24px zoho-puvi-semibold;"><b>conversationId</b></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: For the first request, you can either omit the conversationId or pass "-1" as its value. The response automatically generates and returns a unique conversation ID. Pass this conversation ID in each subsequent request to continue the same conversation thread. **Sample Code Snippet** ZCQuickML quickMlInstance = ZCQuickML.getInstance(); // Replace with the endpoint key copied from the Catalyst console. String endpointKey = "<ENDPOINT_KEY>"; // Enter your message. String prompt = "<YOUR_PROMPT>"; /* * For the first request, set the conversation ID to "-1". * For subsequent requests, use the conversation ID returned * in the previous response. */ String conversationId = "<CONVERSATION_ID>"; ZCQuickMLDetail result = quickMlInstance.converseWithLlm( endpointKey, prompt, conversationId ); System.out.println(result.getResponse()); The syntax of the model response received is shown below: { "status": "success", "result": [ { "conversationId": "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. --- -------------------------------------------------------------------------------- title: "Execute Vision Model Endpoint" description: "This page describes the method to execute QuickML endpoints in your Java application with a sample code snippet." last_updated: "2026-09-29T06:07:16.258Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/quickml/execute-vision-model-endpoint/" service: "QuickML" related: - QuickML (/en/quickml/) -------------------------------------------------------------------------------- #### 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 `analyzeImage(endpointKey, image, prompt)` method requires the endpoint key, image file, and prompt. The endpoint key is generated when the endpoint is created. This method sends an image along with an accompanying prompt to a published Vision Language Model endpoint and returns the model's 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 Name</th> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Definition</th> <th style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;">Value</th> </tr> </thead> <tbody> <tr> <td style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;"><b>endpointKey</b></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; text-align: left; font: 15px/24px zoho-puvi-semibold;"><b>image</b></td> <td style="border: 1px solid #ccc; padding: 10px;">The image file object to be analyzed.</td> <td style="border: 1px solid #ccc; padding: 10px;">File object</td> </tr> <tr> <td style="border: 1px solid #ccc; padding: 10px; text-align: left; font: 15px/24px zoho-puvi-semibold;"><b>prompt</b></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:** 500 KB **_Sample Code Snippet_** // Replace with the endpoint key copied from the Catalyst console. String endpointKey = "<ENDPOINT_KEY>"; // Replace with the path to the image you want to analyze. File image = new File("<IMAGE_PATH>"); // Enter the prompt describing the task to perform on the image. String prompt = "<YOUR_PROMPT>"; ZCQuickMLDetail result = quickMlInstance.analyzeImage(endpointKey, image, prompt); System.out.println(result.getResponse()); 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 Models for tasks such as image description, document and receipt understanding, chart interpretation, and visual question answering. **Where to Find the Endpoint Information?** Use Vision Language Model for tasks such as image description, document and receipt understanding, chart interpretation, and visual question answering, etc. -------------------------------------------------------------------------------- title: "Execute RAG Endpoint" description: "This page describes the method to execute QuickML endpoints in your Java application with a sample code snippet." last_updated: "2026-09-29T06:07:16.258Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/quickml/execute-rag-endpoint/" service: "QuickML" related: - QuickML (/en/quickml/) -------------------------------------------------------------------------------- **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;">generateRagRsponse( endpointKey, prompt )</td> </tr> <tr> <td style="border: 1px solid #ccc; padding: 10px;">Document Search</td> <td style="border: 1px solid #ccc; padding: 10px;">searchDocuments( endpointKey, 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;">askRagAgent( endpointKey, 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;">converseWithRagAgent( endpointKey, prompt, conversationId )</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 `generateRagResponse(endpointKey, 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 summarized response grounded in the retrieved 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;">endpointKey</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_** // Replace with your endpoint key copied from the Catalyst console. String endpointKey = "<ENDPOINT_KEY>"; // Enter your question. String prompt = "<YOUR_PROMPT>"; ZCQuickMLDetail result = quickMlInstance.generateRagResponse(endpointKey, prompt); System.out.println(result.getResponse()); 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 `searchDocuments(endpointKey, query)` method performs document retrieval only. It returns the chunks of content from the document store that most closely match the specified 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;">endpointKey</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_** // Replace with your endpoint key copied from the Catalyst console. String endpointKey = "<ENDPOINT_KEY>"; // Enter the search query. String query = "<SEARCH_QUERY>"; ZCQuickMLDetail result = quickMlInstance.searchDocuments(endpointKey, query); System.out.println(result.getResponse()); 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 `askRagAgent(endpointKey, 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;">endpointKey</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_** // Replace with your endpoint key copied from the Catalyst console. String endpointKey = "<ENDPOINT_KEY>"; // Enter your message. String prompt = "<YOUR_PROMPT>"; ZCQuickMLDetail result = quickMlInstance.askRagAgent(endpointKey, prompt); System.out.println(result.getResponse()); 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 } } ] } Use this method when your application needs **agentic reasoning over documents** for complex questions that may require query decomposition, refinement, and multi-step retrieval. ### d. Converse with a RAG Agent The `converseWithRagAgent(endpointKey, prompt, conversationId)` 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 using information 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;">endpointKey</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;">conversationId</td> <td style="border: 1px solid #ccc; padding: 10px;">Identifies the conversation thread to which the message belongs.</td> <td style="border: 1px solid #ccc; padding: 10px;">String</td> </tr> </tbody> </table> <br> Note: For the first request, set conversationId to `"-1"`. The response returns a unique conversation ID, which you must pass in subsequent requests to continue the same conversation thread. **_Sample Code Snippet_** // Replace with your endpoint key copied from the Catalyst console. String endpointKey = "<ENDPOINT_KEY>"; // Enter your message. String prompt = "<YOUR_PROMPT>"; /* * For the first request, set the conversation ID to "-1". * For subsequent requests, use the conversation ID returned * in the previous response. */ String conversationId = "<CONVERSATION_ID>"; ZCQuickMLDetail result = quickMlInstance.converseWithRagAgent(endpointKey, prompt, conversationId); System.out.println(result.getResponse()); **_The syntax of the response received is shown below:_** { "status": "success", "result": [ { "conversationId": "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 } } ] } The `conversationId` returned in the response identifies the conversation thread. Use this ID in subsequent requests to maintain the conversation context. Use this method to build **multi-turn RAG assistants** that can understand follow-up questions while retaining the context of previous interactions. **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 and response. #### ## Serverless ### AppSail -------------------------------------------------------------------------------- title: "Implement SDK in AppSail" description: "This page describes the method to implement Java SDK in an AppSail service for Catalyst-managed runtimes and avail Catalyst features within the application." last_updated: "2026-09-29T06:07:16.258Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/serverless/appsail/implement-sdk-in-appsail/" service: "Serverless" related: - AppSail Help (/en/serverless/help/appsail/introduction) -------------------------------------------------------------------------------- # Catalyst AppSail Catalyst AppSail is a fully-managed, independent platform for deploying web services to the cloud with ease. You can either deploy your application directly as a Catalyst-managed runtime that supports specific runtimes of Java, Node.js, and Python, or an OCI-compliant container image of your application as a custom-runtime. Catalyst enables you to implement Java SDK in your AppSail applications for Catalyst-managed runtimes. AppSail supports frameworks of Java such as Embedded Jetty, Spring MVC, and Spring Boot. You can access help guides for building sample apps in Java. ## Implement Java SDK in AppSail You can implement the Catalyst Java SDK in the codebase of your AppSail service with ease. The steps to implement and initialize the Catalyst SDK for different API versions of Java servlets are demonstrated with sample codes below. In all cases, Catalyst requires you to implement the **AuthHeaderProvider** interface from the Catalyst Java SDK package. The implementation defines the getHeader() method that returns the value of the request header. You can then pass an object of the implementation class to the init() method, to initialize the SDK. ### Java Servlet API versions <=4 Sample code for Java applications that use Java servlets of API versions lesser than or equal to 4.0 (javax.servlet): **Implementation Class:** package com.zoho.catalyst.appsail.demo.utils; import javax.servlet.http.HttpServletRequest; import com.zc.auth.AuthHeaderProvider; public class AuthProviderImpl implements AuthHeaderProvider { HttpServletRequest request; public AuthProviderImpl(HttpServletRequest request) { this.request = request; } @Override public String getHeaderValue(String key) { return request.getHeader(key); } } <br> **Initialization:** AuthProviderImpl authProviderImpl = new AuthProviderImpl(req); CatalystSDK.init(authProviderImpl) <br> ### Java Servlet API versions >=5 Sample code for Java applications that use Java servlets of API versions greater than or equal to 5.0 (jakarta.servlet): **Implementation Class:** import com.zc.auth.AuthHeaderProvider; import jakarta.servlet.http.HttpServletRequest; public class AuthProviderImpl implements AuthHeaderProvider { private HttpServletRequest request; AuthProviderImpl(HttpServletRequest request) { this.request = request; } @Override public String getHeaderValue(String s) { return request.getHeader(s); } } <br> **Initialization:** CatalystSDK.init(new AuthProviderImpl((HttpServletRequest) servletRequest)); <br> ### Implement Java SDK in a Maven Project If you are developing a Java application with the Maven build tool, you can include the Catalyst Java SDK as a dependency in the Maven configuration file (pom.xml), instead of downloading and adding the SDK in your source code manually. To add the Catalyst SDK in a Maven project, simply add the Zoho repository (published in MvnRepository) in the pom.xml file as shown below: &lt;repositories&gt; &lt;repository&gt; &lt;id&gt;java-sdk&lt;/id&gt; &lt;url&gt;https://maven.zohodl.com&lt;/url&gt; &lt;/repository&gt; &lt;/repositories&gt; You can then add the Java SDK as a dependency in pom.xml as shown below: &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;com.zoho.catalyst&lt;/groupId&gt; &lt;artifactId&gt;java-sdk&lt;/artifactId&gt; &lt;version&gt;1.15.0&lt;/version&gt; &lt;/dependency&gt; &lt;/dependencies&gt; ### Circuits -------------------------------------------------------------------------------- title: "Execute Circuit" description: "This page describes the method to make use of circuits to organize and orchestrate tasks in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.259Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/serverless/circuits/execute-circuit/" service: "Serverless" related: - Execute Circuit - API (/en/api/code-reference/serverless/circuits/execute-circuit/#ExecuteCircuit) - Circuits (/en/serverless/help/circuits/introduction) -------------------------------------------------------------------------------- # Execute a Circuit Catalyst Circuits allow you to define, organize, and orchestrate a sequence of tasks to be carried out automatically. You can enable concurrent or sequential executions of Catalyst functions in a circuit, and additionally include conditions, data, and paths in it and automate the workflow. Note: Circuits is currently not available to Catalyst users accessing from the EU, AU, IN, JP, SA or CA data centers. The sample code below illustrates executing a circuit by referring to its unique Circuit ID and passing key-value pairs as the input JSON to the circuit. It also illustrates obtaining the circuit's execution details by referring to its unique Execution ID saved in the execution history of the circuit. ZCCircuitDetails is used to refer to the circuit, and ZCCircuitExecutionDetails returns the circuit execution details. #### Sample Code Snippet <br> import org.json.simple.JSONObject; import com.zc.component.circuits.ZCCircuit; import com.zc.component.circuits.ZCCircuitDetails; import com.zc.component.circuits.ZCCircuitExecutionDetails; import com.zc.component.circuits.ZCCircuitExecutionStatus; //Executes the circuit by referring to its Circuit ID and passes the input JSON ZCCircuitDetails userBackupCircuit = ZCCircuit.getInstance().getCircuitInstance(1239000000L); JSONObject execInputJson = new JSONObject(); execInputJson.put("key", "value"); ZCCircuitExecutionDetails circuitExecution = userBackupCircuit.execute("Case 1",execInputJson); String executionId = circuitExecution.getExecutionId(); //Returns the Execution ID //Returns the circuit's execution details by referring to the Execution ID of the circuit. //You can write your own success logic here. ZCCircuitDetails userBackupCircuit = ZCCircuit.getInstance().getCircuitInstance(1239000000L); ZCCircuitExecutionDetails circuitExecution = userBackupCircuit.getExecutionDetails(executionId); if(circuitExecution.getStatus().equals(ZCCircuitExecutionStatus.SUCCESS)) { //Success logic } //Aborts the circuit execution by referring to the Execution ID of the circuit ZCCircuitDetails userBackupCircuit = ZCCircuit.getInstance().getCircuitInstance(1239000000L); userBackupCircuit.abortExecution(executionId); ### Functions -------------------------------------------------------------------------------- title: "Execute Function" description: "This page describes the method to execute functions in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.260Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/serverless/functions/execute-function/" service: "Serverless" related: - Execute Function - API (/en/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) - Functions (/en/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Execute function The function group in Catalyst is created and defined using either the online editor or the Command Line Interface (CLI). The function group can be executed to verify its functionality. ### Execute Function If a function endpoint is needs to be executed, then the following code snippet can be used. Here, the function's parameters are constructed as JSON objects and passed through the executeFunction() method. The function ID is an auto-generated numeric long integer value. #### Sample Code Snippet <br> import org.json.simple.JSONObject; import com.zc.functions.ZCatalystFunction; //Create a JSONObject For Adding Parameters JSONObject jsonobj = new JSONObject(); //Add Parameters as key-value pairs to pass them to the method jsonobj.put("Name", "Amelia"); //Execute the method referring the function groupId with the JSON object Object result = ZCatalystFunction.getInstance().getFunctionInstance(1510000000054095L).executeFunction(jsonobj); Note: You can also pass the function name as a string to the getFunctionInstance() method instead of using the function ID. ## SmartBrowz -------------------------------------------------------------------------------- title: "PDF & Screenshot" description: "This page describes the method to generate PDF and Screenshot" last_updated: "2026-09-29T06:07:16.260Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/generate-pdfnscreenshot/" service: "SmartBrowz" related: - PDF & Screenshot - API (/en/api/code-reference/smartbrowz/generate-pdfnscreenshoturl/#PDF%26ScreenshotwithHTML%2fURLasInput) -------------------------------------------------------------------------------- # PDF & Screenshot Catalyst SmartBrowz offers you the PDF & Screenshot component to generate your prefered visual docuemnts through code. You can incorporate this functionality in your application by copying the code below and pasting it in your application logic. Using the SDK below, you can generate visual documents by using HTML, URL or Templates as your input. #### Sample Code Snippet <br> import com.zc.component.smartbrowz.ZCSmartBrowz; import com.zc.component.smartbrowz.ZCSmartBrowzConvertDetails; ### Generate Visual Document From a Predefined Template // Initialize SmartBrowz ZCSmartBrowz smartBrowz = ZCSmartBrowz.getInstance(); // Generate output from a predefined template ObjectMapper mapper = new ObjectMapper(); JsonNode templateData = mapper.createObjectNode(); ((ObjectNode)templateData).put("name", "Amelia Burrows"); ((ObjectNode)templateData).put("age", "34"); ((ObjectNode)templateData).put("address", "Houstan"); ((ObjectNode)templateData).put("country", "USA"); ((ObjectNode)templateData).put("email", "emma@zylker.com"); ZCSmartBrowzPDFOptions pdfOptions = ZCSmartBrowzPDFOptions.getInstance(); pdfOptions.setDisplayHeaderFooter(true); pdfOptions.setFormat("A4"); pdfOptions.setPageRanges("1-2"); pdfOptions.setPrintBackground(true);; pdfOptions.setPassword("Siva123"); // set password after enabling template password setting in UI pdfOptions.setLandscape(true); pdfOptions.setScale(new BigDecimal("1.0")); pdfOptions.setWidth("100"); pdfOptions.setHeight("100"); ZCSmartBrowzNavigationOptions navigationOptions = new ZCSmartBrowzNavigationOptions(); navigationOptions.setWaitUntil("domcontentloaded"); navigationOptions.setTimeout(30000); ZCSmartBrowzPageOptions pageOptions = new ZCSmartBrowzPageOptions(); ContentDetails contentDetails = new ContentDetails(); contentDetails.setContent("&lt;html&gt;&lt;body&gt;Hello World&lt;/body&gt;&lt;/html&gt;"); pageOptions.setCss(contentDetails); pageOptions.setDevice("Blackberry PlayBook"); pageOptions.setJavaScriptEnabled(true); ViewportDetails viewportDetails = new ViewportDetails(); viewportDetails.setHeight(800); viewportDetails.setWidth(600); pageOptions.setViewport(viewportDetails); ZCSmartBrowzTemplateOptions templateOptions = ZCSmartBrowzTemplateOptions.getInstance(); templateOptions.setPdfDetails(pdfOptions); templateOptions.setNavigationDetails(navigationOptions); templateOptions.setOutputType(ZC_CONVERT_OUTPUT_TYPE.PDF); templateOptions.setPageDetails(pageOptions); templateOptions.setTemplateInput(templateData); templateOptions.setTemplateId(2075000000021001L); InputStream outputStream = smartBrowz.generateFromTemplate(templateOptions); ### Convert to PDF from HTML // Initialize SmartBrowz ZCSmartBrowz smartBrowz = ZCSmartBrowz.getInstance(); // Convert to PDF from HTML ZCSmartBrowzConvertDetails convertDetailsForPDF = ZCSmartBrowzConvertDetails.getInstance(); ZCSmartBrowzPDFOptions pdfOptions = ZCSmartBrowzPDFOptions.getInstance(); pdfOptions.setDisplayHeaderFooter(true); pdfOptions.setFormat("A4"); MarginDetails marginDetails = new MarginDetails(); marginDetails.setTop("10"); marginDetails.setRight("10"); marginDetails.setLeft("10"); marginDetails.setBottom("10"); pdfOptions.setMargin(marginDetails); pdfOptions.setPageRanges("1-2"); pdfOptions.setPrintBackground(true);; pdfOptions.setPassword("Siva123"); pdfOptions.setLandscape(true); pdfOptions.setScale(new BigDecimal("1.0")); pdfOptions.setWidth("100"); pdfOptions.setHeight("100"); ZCSmartBrowzNavigationOptions navigationOptions = new ZCSmartBrowzNavigationOptions(); navigationOptions.setWaitUntil("domcontentloaded"); navigationOptions.setTimeout(30000); ZCSmartBrowzPageOptions pageOptions = new ZCSmartBrowzPageOptions(); ContentDetails contentDetails = new ContentDetails(); contentDetails.setContent("&lt;html&gt;&lt;body&gt;Hello World&lt;/body&gt;&lt;/html&gt;"); pageOptions.setCss(contentDetails); pageOptions.setDevice("Blackberry PlayBook"); pageOptions.setJavaScriptEnabled(true); ViewportDetails viewportDetails = new ViewportDetails(); viewportDetails.setHeight(800); viewportDetails.setWidth(600); pageOptions.setViewport(viewportDetails); convertDetailsForPDF.setPdfDetails(pdfOptions); convertDetailsForPDF.setNavigationDetails(navigationOptions); convertDetailsForPDF.setPageDetails(pageOptions); convertDetailsForPDF.setHtml("&lt;html&gt;Hello&lt;/html&gt;"); InputStream outPutStream = smartBrowz.convertToPdf(convertDetailsForPDF); ### Take a screenshot from URL // initialize SmartBrowz ZCSmartBrowz smartBrowz = ZCSmartBrowz.getInstance(); // convert to PDF from URL ZCSmartBrowzConvertDetails convertDetailsForPDF = ZCSmartBrowzConvertDetails.getInstance(); ZCSmartBrowzPDFOptions pdfOptions = ZCSmartBrowzPDFOptions.getInstance(); pdfOptions.setDisplayHeaderFooter(true); pdfOptions.setFormat("A4"); MarginDetails marginDetails = new MarginDetails(); marginDetails.setTop("10"); marginDetails.setRight("10"); marginDetails.setLeft("10"); marginDetails.setBottom("10"); pdfOptions.setMargin(marginDetails); pdfOptions.setPageRanges("1-2"); pdfOptions.setPrintBackground(true);; pdfOptions.setPassword("Siva123"); pdfOptions.setLandscape(true); pdfOptions.setScale(new BigDecimal("1.0")); pdfOptions.setWidth("100"); pdfOptions.setHeight("100"); ZCSmartBrowzNavigationOptions navigationOptions = new ZCSmartBrowzNavigationOptions(); navigationOptions.setWaitUntil("domcontentloaded"); navigationOptions.setTimeout(30000); ZCSmartBrowzPageOptions pageOptions = new ZCSmartBrowzPageOptions(); ContentDetails contentDetails = new ContentDetails(); contentDetails.setContent("&lt;html&gt;&lt;body&gt;Hello World&lt;/body&gt;&lt;/html&gt;"); pageOptions.setCss(contentDetails); pageOptions.setDevice("Blackberry PlayBook"); pageOptions.setJavaScriptEnabled(true); ViewportDetails viewportDetails = new ViewportDetails(); viewportDetails.setHeight(800); viewportDetails.setWidth(600); pageOptions.setViewport(viewportDetails); convertDetailsForPDF.setPdfDetails(pdfOptions); convertDetailsForPDF.setNavigationDetails(navigationOptions); convertDetailsForPDF.setPageDetails(pageOptions); convertDetailsForPDF.setUrl("http://www.example.com"); InputStream outPutStream = smartBrowz.convertToPdf(convertDetailsForPDF); In the PDF & Screenshot section of the console, you can directly test this component using the Playground feature, and you can also copy the SDK directly from the console. Note: Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of Catalyst SmartBrowz is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone. ### Browser Grid -------------------------------------------------------------------------------- title: "Overview" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-09-29T06:07:16.261Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/browser-grid/overview/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/overview/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/overview/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Overview Browser Grid a *Catalyst SmartBrowz* service's auto scaling component that allows you to configure and manage multiple headless browsers. You are provided with options to configure your required grid by configuring the number of nodes and browsers that your process would require. Using the Browser Grid Java SDK, you will be able to get details about your browser grid, get node details about your browser grid and terminate browser grid executions. ### List of SDK Methods <table class="content-table"> <thead> <tr> <th class="w25p">Category</th> <th class="w50p">SDK Methods</th> <th class="w25p">Scope Requirements</th> </tr> </thead> <tbody> <tr> <td>General Operations</td> <td>Get Browser Grid Instance</td> <td>Admin</td> </tr> <tr> <td>Browser Grid Operations</td> <td> <ul> <li>Get all browser grids</li> <li>Get specific browser grid</li> <ul> <li>Get specific browser grid with ID</li> <li>Get specific browser grid with name</li> </ul> <li>Get nodes of a grid</li> <ul> <li>Using Grid ID</li> <li>Using Grid Name</li> </ul> <li>Stop browser grid</li> <ul> <li>Using Grid ID</li> <li>Using Grid Name</li> </ul> </ul> </td> <td>Admin</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Get Browser Grid Instance" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-09-29T06:07:16.261Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/overview/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get Browser Grid Instance You can get the browser grid instance as shown below. This will not fire a server-side call. You will refer to this component instance in various code snippets when working with the Browser Grid component. **Ensure you import the following packages** import com.zc.component.smartbrowz.*; ZCBrowserGrid grid = ZCBrowserGrid.getInstance()// get instance for the project -------------------------------------------------------------------------------- title: "Get All Browser Grid Details" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-09-29T06:07:16.261Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/browser-grid/get-all-grids/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/overview/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/get-all-grids/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get All Browser Grid Details You can use the getGrid() SDK method to get the grid details of all the browser grids that are present in your project. The grid instance used in the following snippet is the component reference. Info: To use this SDK method, you need to initialize it with Admin scope. You can learn more about this requirement from this section **Ensure you import the following packages** import com.zc.component.smartbrowz.*; List<\ZCGrid> gridList = grid.getGrid(); // Will return a list of details of all the grids that are present in the project. ### Example of Expected Response { "status": "success", "data": [ { "id": "3970000000006058", "name": "play", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 07:04 PM", "modified_time": "Sep 10, 2025 07:04 PM", "api_key_modified_time": "1757511270919", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 10, "max_concurrent_count": 10, "config_type": 1 }, { "id": "3970000000005426", "name": "Automation", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 12:47 PM", "modified_time": "Sep 23, 2025 03:12 PM", "api_key_modified_time": "1757488669690", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 5, "max_concurrent_count": 5, "config_type": 2 }, { "id": "3970000000005027", "name": "SDK", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 11:33 AM", "modified_time": "Sep 10, 2025 04:27 PM", "api_key_modified_time": "1757484201284", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 5, "max_concurrent_count": 5, "config_type": 1 }, { "id": "3970000000005015", "name": "Puppeteer_Grid", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 10:21 AM", "modified_time": "Sep 10, 2025 10:21 AM", "api_key_modified_time": "1757479864798", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 1, "max_concurrent_count": 1, "config_type": 1 }, { "id": "3970000000005013", "name": "Selenium_Gridt", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 10:21 AM", "modified_time": "Sep 23, 2025 05:50 PM", "api_key_modified_time": "1757479864794", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 1, "max_concurrent_count": 1, "config_type": 2 } ] } -------------------------------------------------------------------------------- title: "Get a Specific Browser Grid" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-09-29T06:07:16.261Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-grid/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/overview/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-grid/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get a Specific Browser Grid You can get the details of a specific browser grid in your project by passing the Grid ID or grid name to the getGrid() SDK method. Info: To use this SDK method, you need to initialize it with Admin scope. You can learn more about this requirement from this section ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the getGrid() SDK method. The grid instance used in the following snippet is the component reference. **Ensure you import the following packages** import com.zc.component.smartbrowz.*; ZCBrowserGrid gridDetails = grid.getGrid(3970000000005013l); // get grid details using the Grid ID ### Using the Grid's Name You can pass the name of the required browser grid to the getGrid() SDK method. The grid instance used in the following snippet is the component reference. **Ensure you import the following packages** import com.zc.component.smartbrowz.*; ZCBrowserGrid gridDetails = grid.getGrid("Selenium_Grid"); // get grid details using the name of the grid ### Example of Expected Response { "status": "success", "data": { "id": "3970000000006058", "name": "Selenium_Grid", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 07:04 PM", "modified_time": "Sep 24, 2025 11:55 AM", "api_key_modified_time": "1757511270919", "created_by": { "zuid": "111734674", "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 10, "max_concurrent_count": 10, "config_type": 1 } } -------------------------------------------------------------------------------- title: "Get Details of a Node" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-09-29T06:07:16.261Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-node/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/overview/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-node/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get Details of a Node By passing the **Grid ID** or name of the required browser grid to the getGridNodes() SDK method, you can get the details of a node in that grid. Info: To use this SDK method, you need to initialize it with Admin scope. You can learn more about this requirement from this section ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the getGridNodes() SDK method, to get its node details. The grid instance used in the following snippet is the component reference. **Ensure you import the following packages** import com.zc.component.smartbrowz.*; ZCBrowserGrid nodeDetails = grid.getGridNodes(3970000000005013l); // get details of the node using its Grid ID ### Using the Grid's Name You can pass the name of the required browser grid to the getGridNodes() SDK method, to get its node details. The grid instance used in the following snippet is the component reference. **Ensure you import the following packages** import com.zc.component.smartbrowz.*; ZCBrowserGrid gridDetails = grid.getGridNodes("Selenium_Grid"); // get details of the node using the grid's name -------------------------------------------------------------------------------- title: "Stop the Browser Grid" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-09-29T06:07:16.262Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/browser-grid/stop-grid/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - JavaScript SDK Documentation (/en/sdk/javascript/v1/overview/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/stop-grid/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Stop the Browser Grid By passing the **Grid ID** or name of the required browser grid to the stopGrid() SDK method, you can terminate all executions and stop the browser grid. Info: To use this SDK method, you need to initialize it with Admin scope. You can learn more about this requirement from this section ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the stopGrid() SDK method, to stop the grid, and terminate all its executions. The grid instance used in the following snippet is the component reference. **Ensure you import the following packages** import com.zc.component.smartbrowz.*; ZCBrowserGrid gridTerminate = grid.stopGrid(3970000000005013l); // stop the grid using the Grid ID ### Using the Grid's Name You can pass the name of the required browser grid to the stopGrid() SDK method, to stop the grid, and terminate all its executions. The grid instance used in the following snippet is the component reference. **Ensure you import the following packages** import com.zc.component.smartbrowz.*; ZCBrowserGrid gridTerminate = grid.stopGrid("Selenium_Grid"); //stop the grid using the name of the grid ### Example of Expected Response { "status": "success", "data": true } ## Zia Services -------------------------------------------------------------------------------- title: "OCR" description: "This page describes the method to use the Optical Character Recognition feature to detect textual characters in your Java application with sample code snippets" last_updated: "2026-09-29T06:07:16.263Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/ocr/" service: "Zia Services" related: - OCR - API (/en/api/code-reference/zia-services/ocr/#OCR) -------------------------------------------------------------------------------- # Optical Character Recognition Zia Optical Character Recognition electronically detects textual characters in images or digital documents, and converts them into machine-encoded text. Zia OCR can recognize text in 9 international languages and 10 Indian languages. You can check the list of languages and language codes from the API documentation Note: Catalyst does not store any of the files you upload in its systems. The files you upload are used for one-time processing only. They are not used for ML model training purposes either. Catalyst components are fully compliant with all applicable data protection and privacy laws. You must specify the path to the image or document file that needs to be processed for OCR, as shown in the code below. You can also format the response you receive as shown in the sample code. The response will also include a confidence score, which defines the accuracy of the processing, in addition to the recognized text. Allowed file formats: ._jpg,_ ._jpeg_, ._png_, ._tiff_, ._bmp_, ._pdf_ File size limit: 20 MB You must specify the model type as OCR in setModelType(), and the language codes using setLanguageCode. These values are optional for the OCR model type. By default, it is processed as the OCR model type, and the languages are automatically detected if they are not specified. #### Sample Code Snippet <br> import com.zc.component.ml.ZCContent; import com.zc.component.ml.ZCLine; import com.zc.component.ml.ZCML; import com.zc.component.ml.ZCOCRModelType; import com.zc.component.ml.ZCOCROptions; import com.zc.component.ml.ZCParagraph; import java.io.File; File file = new File("/Users/amelia-421/Desktop/MyImage.webp"); //Specify the file path ZCOCROptions options = ZCOCROptions.getInstance().setModelType(ZCOCRModelType.OCR).setLanguageCode("eng,tam"); //Set the model type and languages ZCContent ocrContent = ZCML.getInstance().getContent(file, options); //Call getContent() with the file object to get the detected text in ZCContent object //To get individual paragraphs List paragraphs = ocrContent.getParagraphs(); for(ZCParagraph paragraph : paragraphs) { //To get individual lines in the paragraph List paraLines = paragraph.lines; for(ZCLine line : paraLines) { //To get individual words in the line String words = line.words; String text = line.text; //Raw line text } String text = paragraph.text; //Returns the raw paragraph text } String text = ocrContent.text; //Returns the raw image text -------------------------------------------------------------------------------- title: "Face-Analytics" description: "This page describes the method to use the Face Analytics feature to detect faces with specified criteria in your Java application with sample code snippets" last_updated: "2026-09-29T06:07:16.263Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/face-analytics/" service: "Zia Services" related: - Face Analytics - API (/en/api/code-reference/zia-services/face-analytics/#FaceAnalytics) -------------------------------------------------------------------------------- # Face Analytics Zia Face Analytics performs facial detection in images, and analyzes the facial features to provide information such as the gender, age, and emotion of the detected faces. You can learn more from the Face Analytics help page. You must provide ._jpg_/._jpeg_ or ._png_ files as the input. Refer to the API documentation for the request and response formats. You can enable or disable the age, smile, or gender detection by setting the attributes as true or false. You can also specify the mode as BASIC, MODERATE, or ADVANCED. These values are optional. All attributes are detected and the ADVANCED mode is processed by default. The response returns the prediction of the enabled attributes, the coordinates and landmarks of facial features of each face, and the confidence score of each analysis. #### Sample Code Snippet <br> import com.zc.component.ml.ZCAge; import com.zc.component.ml.ZCAnalyseMode; import com.zc.component.ml.ZCFaceAnalysisData; import com.zc.component.ml.ZCFaceAnalyticsOptions; import com.zc.component.ml.ZCFaceEmotion; import com.zc.component.ml.ZCFaceLandmark; import com.zc.component.ml.ZCFacePoints; import com.zc.component.ml.ZCFaces; import com.zc.component.ml.ZCGender; import com.zc.component.ml.ZCML; import java.io.File; File file = new File("{filePath}"); //Specify the file path //Set each attribute detection as required or not required, and the mode of detection ZCFaceAnalyticsOptions options = ZCFaceAnalyticsOptions.getInstance().setAgeNeeded(false) .setEmotionNeeded(true).setGenderNeeded(true).setAnalyseMode(ZCAnalyseMode.ADVANCED); ZCFaceAnalysisData faceData = ZCML.getInstance().analyzeFace(file, options); //Call analyzeFace() with the file and options Long facesCount = faceData.getFacesCount(); //To obtain the count of faces in the image List faces = faceData.getFacesList(); for(ZCFaces face : faces) { //Executed for each detected face Double faceConfidence = face.getConfidence(); //To obtain the confidence score of each analysis ZCAge age = face.getAge(); //To get the age of the face ZCGender gender = face.getGender(); //To get the gender of the face ZCFaceEmotion emotion = face.getEmotion(); //To get smile information ZCFacePoints facePoints = face.getCoordinates(); //To get the coordinates of the face List faceLandmarks = face.getFaceLandmarks(); //To get the landmarks of the facial features } -------------------------------------------------------------------------------- title: "Image-Moderation" description: "This page describes the method to use the Image Moderation feature to detect vulnerability in images within your Java application with sample code snippets" last_updated: "2026-09-29T06:07:16.263Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/image-moderation/" service: "Zia Services" related: - Image-Moderation - API (/en/api/code-reference/zia-services/image-moderation/#ImageModeration) -------------------------------------------------------------------------------- # Image Moderation Image Moderation detects and recognizes inappropriate and unsafe content in images. The criteria include suggestive or explicit racy content, nudity, violence, gore, bloodshed, and the presence of weapons and drugs. You can learn more from the Image Moderation help page. You can provide a ._jpg_/._jpeg_ or ._png_ file as the input. Refer to the API documentation for the request and response formats. You can set the moderation mode as BASIC, MODERATE, or ADVANCED optionally. The image is processed in the ADVANCED mode by default. The response returns the probability of each criteria with their confidence scores, and the prediction of the image being safe\_to\_use or unsafe\_to\_use. #### Sample Code Snippet <br> import com.zc.component.ml.ZCAnalyseMode; import com.zc.component.ml.ZCImageModerateData; import com.zc.component.ml.ZCImageModerationConfidence; import com.zc.component.ml.ZCImageModerationOptions; import com.zc.component.ml.ZCImageModerationPrediction; import com.zc.component.ml.ZCML; import java.io.File; File file = new File("{filePath}"); //Specify the file path ZCImageModerationOptions options = ZCImageModerationOptions.getInstance().setAnalyseMode(ZCAnalyseMode.ADVANCED); //Set the moderation mode ZCImageModerateData imData = ZCML.getInstance().moderateImage(file, options); //Call moderateImage() with the input file and options ZCImageModerationPrediction prediction = imData.getPrediction(); //To get the final prediction Double predictionConfidence = imData.getConfidence(); //To get the confidence score of the final prediction List confidences = imData.getImageModerationConfidenceList(); //To get the confidence scores of each criteria predicted -------------------------------------------------------------------------------- title: "Object-Recognition" description: "This page describes the method to use the Object Recognition feature to locate objects in your Java application with sample code snippets" last_updated: "2026-09-29T06:07:16.263Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/object-recognition/" service: "Zia Services" related: - Image-Moderation - API (/en/api/code-reference/zia-services/image-moderation/#ImageModeration) -------------------------------------------------------------------------------- # Object Recognition Object Recognition detects, locates, and recognizes individual objects in an image file. Zia Object Recognition can identify 80 different kinds of objects from images. You can learn more from the Object Recognition help page. You can provide a ._jpg_/._jpeg_ or ._png_ file as the input. Refer to the API documentation for the request and response formats. The detectObject() method is used detect and identify the objects in the image. It returns the coordinates of each object, their type, and the confidence score of each recognition. #### Sample Code Snippet <br> import com.zc.component.ml.ZCML; import com.zc.component.ml.ZCObjectDetectionData; import com.zc.component.ml.ZCObjectPoints; import java.io.File; File file = new File("{filePath}"); //Specify the file location List objects = ZCML.getInstance().detectObjects(file); //To detect the objects in the image for(ZCObjectDetectionData object : objects) { String objectType = object.getObjectType(); //To get the object type Double objConfidence = object.getConfidence(); //To get the confidence score of the recognition ZCObjectPoints objCoordinates = object.getObjectPoints(); //To get the coordinates of the object in the image } -------------------------------------------------------------------------------- title: "Barcode Scanner" description: "This page describes the method to use the Barcode Scanner feature to scan certain data formats in your Java application with sample code snippets" last_updated: "2026-09-29T06:07:16.263Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/barcode-scanner/" service: "Zia Services" related: - Barcode Scanner - API (/en/api/code-reference/zia-services/barcode-scanner/#BarcodeScanner) -------------------------------------------------------------------------------- # Barcode Scanner Zia Barcode Scanner enables you to scan the most commonly used linear and 2D barcode formats and decode the encoded data. Barcode Scanner can detect formats like Codabar, EAN-13, ITF, UPC-A, QR Code, and more. You can learn more from the Barcode Scanner help page. You can provide an input file of the format ._jpg_/._jpeg_ or ._png_. Refer to the API documentation for the request and response formats. You can specify the barcode format using setFormat. If you enter the format as ALL, Barcode Scanner automatically detects the format. It provides the decoded information as the response. #### Sample Code Snippet <br> import com.zc.component.ml.ZCBarcodeData; import com.zc.component.ml.ZCBarcodeFormat; import com.zc.component.ml.ZCBarcodeOptions; import com.zc.component.ml.ZCML; import java.io.File; File file = new File("{filePath}"); //Specify the file path ZCBarcodeOptions options = ZCBarcodeOptions.getInstance().setFormat(ZCBarcodeFormat.ALL); //Specify the format ZCBarcodeData barcodeResult =ZCML.getInstance().scanBarcode(file, options); //Call scanBarcode() with the input file and options String content = barcodeResult.getContent(); //getContent() obtains the decoded content ### Identity Scanner -------------------------------------------------------------------------------- title: "Facial Comparison" description: "This page describes the method to use facial comparison feature in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.263Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/identity-scanner/facial-comparison/" service: "Zia Services" related: - Facial Comparison - API (/en/api/code-reference/zia-services/identity-scanner/facial-comparison/#FacialComparison) -------------------------------------------------------------------------------- # Identity Scanner Identity Scanner is a Zia AI-driven component that enables you to perform secure identity checks on individuals and documents by scanning and processing various ID proofs or official documents. It is a comprehensive suite that incorporates multiple functionalities divided into two major categories- E-KYC and Document Processing. Note: Catalyst does not store any of the files you upload in its systems. The documents you upload are used for one-time processing only. They are not used for ML model training purposes either. Catalyst components are fully compliant with all applicable data protection and privacy laws. ## Facial Comparison Facial Comparison, also known as E-KYC, is a part of Identity Scanner that Compares two faces in two different images to determine if they are the same individual. This will enable you to verify an individual's identity from their ID proof by comparing it with an existing photo of theirs. For example, you can verify the authenticity of a photo ID, such as an individual's Aadhaar card, by comparing it with their current photograph. Note: While the Document Processing feature of Identity Scanner is only relevant to Indian users, the Facial Comparison API and SDK tools are available to a global audience. However, accessing and testing Facial Comparison or E-KYC from the Catalyst console is restricted to the users from IN DC alone. You can perform a face comparison between a source image and a query image, by specifying the path to both the image files, as shown in the sample code. The compareFace() method processes both these images. Note: You can mark either the ID proof image or the individual's photograph as the source or the query image. This will not affect the results. Allowed file formats: _.webp_, _.jpeg_, _.png_ File size limit: 10 MB The result of the comparison is set to true if the faces match, or false if they don't match. The result also contains a confidence score between the range of 0 to 1, that determines the accuracy of the processing. Only if the comparison yields a confidence score of above 50% i.e., 0.5, the result will be set to true. #### Sample Code Snippet <br> import com.catalyst.advanced.CatalystAdvancedIOHandler; import com.zc.component.ml.ZCFaceComparisonData; import com.zc.component.ml.ZCML; import java.io.File; File sourceImage= new File("/Users/amelia-421/Desktop/source.webp"); //Specify the file path File queryImage= new File("/Users/amelia-421/Desktop/query.webp"); //Specify the file path ZCFaceComparisonData data = ZCML.getInstance().compareFace(sourceImage,queryImage ); Double confidence = data.getConfidence(); //Fetches the confidence score boolean matched= data.getMatched(); //Fetches the result as a boolean value -------------------------------------------------------------------------------- title: "Aadhaar" description: "This page describes the method to use the AADHAAR document processing feature in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.263Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/identity-scanner/aadhaar/" service: "Zia Services" related: - Aadhaar - API (/en/api/code-reference/zia-services/identity-scanner/aadhaar/#Aadhaar) -------------------------------------------------------------------------------- # Identity Scanner Identity Scanner is a Zia AI-driven component that enables you to perform secure identity checks on individuals and documents by scanning and processing various ID proofs or official documents. It is a comprehensive suite that incorporates multiple functionalities divided into two major categories- E-KYC and Document Processing. Note: Catalyst does not store any of the files you upload in its systems. The documents you upload are used for one-time processing only. They are not used for ML model training purposes either. Catalyst components are fully compliant with all applicable data protection and privacy laws. ## Aadhaar The AADHAAR model is a part of the Document Processing feature that enables you to process Indian Aadhaar cards as identity proof documents. This enables you to extract fields of data from an Indian Aadhaar card using an advanced OCR technology. The response will return the parameters recognized from the Aadhaar card, along with confidence scores for each recognition that determine their accuracy. Note: Document Processing is only relevant to Indian users and is only available in the IN DC. This feature will not be available to users accessing from the EU, AU, US, JP, SA or CA data centers. Users outside of India from the other DCs can access the general OCR component to read and process textual content. You must provide the path to the image files of the front and back of the Aadhaar card using the keys aadhaarFront and aadhaarBack, as shown in the code below. Note: The option to pass the languages present in an Aadhaar card has now been deprecated. Identity Scanner will now automatically identify the languages in an Aadhaar card and process it. The Java SDK code snippet will be updated accordingly soon. You can temporarily pass the languages as shown in the code below. You must pass English and the relevant regional language. For example, if you are from Tamil Nadu, you must pass tam and eng as the languages. You can check the list of languages and language codes from the API documentation. Allowed file formats: _.webp_, _.jpeg_, _.png_, _.bmp_, _.tiff_, _.pdf_<br /> File size limit: 15 MB Note: The variables should be declared only in following order: aadhaarFront, aadhaarBack, languageCode The response contains the parameters recognized in the Aadhaar card such as the card holder's name, address, gender, Aadhaar card number assigned to respective keys. The response also shows a confidence score in the range of 0 to 1 for each of the recognized values. #### Sample Code Snippet <br> import com.zc.component.ml.ZCContent; import com.zc.component.ml.ZCLine; import com.zc.component.ml.ZCML; import com.zc.component.ml.ZCParagraph; import java.io.File; File aadhaarFront = new File("/Users/amelia-421/Desktop/myAadhaar1.webp"); //Specify the file path of the front side image of the Aadhaar card File aadhaarBack = new File("/Users/amelia-421/Desktop/myAadhaar2.webp"); //Specify the file path of the back side image of the Aadhaar card String languageCode = "eng,tam"; //Set the languages ZCContent ocrContent = ZCML.getInstance().getContentForAadhaar(aadhaarFront,aadhaarBack,languageCode); //Call getContent() with the file object to get the detected text in ZCContent object //To get individual paragraphs List paragraphs = ocrContent.getParagraphs(); for(ZCParagraph paragraph : paragraphs) { //To get individual lines in the paragraph List paraLines = paragraph.lines; for(ZCLine line : paraLines) { //To get individual words in the line String words = line.words; String text = line.text; //Raw line text } String text = paragraph.text; //Returns the raw paragraph text } String text = ocrContent.text; //Returns the raw image text -------------------------------------------------------------------------------- title: "PAN" description: "This page describes the method to use the PAN document processing feature in your Java application with sample code snippets" last_updated: "2026-09-29T06:07:16.263Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/identity-scanner/pan/" service: "Zia Services" related: - PAN - API (/en/api/code-reference/zia-services/identity-scanner/pan/#PAN) -------------------------------------------------------------------------------- # Identity Scanner Identity Scanner is a Zia AI-driven component that enables you to perform secure identity checks on individuals and documents by scanning and processing various ID proofs or official documents. It is a comprehensive suite that incorporates multiple functionalities divided into two major categories- E-KYC and Document Processing. Note: Catalyst does not store any of the files you upload in its systems. The documents you upload are used for one-time processing only. They are not used for ML model training purposes either. Catalyst components are fully compliant with all applicable data protection and privacy laws. ## PAN The PAN model is a part of the Document Processing feature that enables you to process Indian PAN cards as identity proof documents. This enables you to extract fields of data from a PAN card using an advanced OCR technology, and return the parameters recognized from the PAN card in the response. Note: Document Processing is only relevant to Indian users and is only available in the IN DC. This feature will not be available to users accessing from the EU, AU, US, JP, SA or CA data centers. Users outside of India from the other DCs can access the general OCR component to read and process textual content. You must provide the path to the image file of the front side of the PAN card, as shown in the code below. Allowed file formats: _.webp_, _.jpeg_, _.png_<br /> File size limit: 15 MB You must specify the model type as PAN using ZCOCRModelType. The PAN model can only process text in English by default. No other languages are supported. The response will contain the parameters extracted from the PAN card such as their first name, last name, date of birth, and their PAN card number assigned to the respective keys. #### Sample Code Snippet <br> import java.sql.Date; import com.zc.component.ml.ZCContent; import com.zc.component.ml.ZCML; import com.zc.component.ml.ZCOCRModelType; import com.zc.component.ml.ZCOCROptions; import com.zc.component.ml.ZCPanData; import java.io.File; File file = new File("/Users/amelia-421/Desktop/pan.webp"); //Specify the file path ZCOCROptions options = ZCOCROptions.getInstance().setModelType(ZCOCRModelType.PAN); //Set the model type ZCContent ocrContent = ZCML.getInstance().getContent(file, options); //Call getContent() with the file object to get the detected text in ZCContent object ZCPanData panData = ocrContent.getPanData(); //This method obtains the PAN data //To fetch individual elements like the first name, last name, PAN details, and DOB from the processed image String firstName = panData.getFirstName(); String lastName = panData.getLastName(); String pan = panData.getPan(); Date dob = panData.getDob(); -------------------------------------------------------------------------------- title: "Passbook" description: "This page describes the method to use the PASSBOOK document processing feature in your Java application with sample code snippets" last_updated: "2026-09-29T06:07:16.264Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/identity-scanner/passbook/" service: "Zia Services" related: - Passbook - API (/en/api/code-reference/zia-services/identity-scanner/passbook/#Passbook) -------------------------------------------------------------------------------- # Identity Scanner Identity Scanner is a Zia AI-driven component that enables you to perform secure identity checks on individuals and documents by scanning and processing various ID proofs or official documents. It is a comprehensive suite that incorporates multiple functionalities divided into two major categories- E-KYC and Document Processing. Note: Catalyst does not store any of the files you upload in its systems. The documents you upload are used for one-time processing only. They are not used for ML model training purposes either. Catalyst components are fully compliant with all applicable data protection and privacy laws. ## Passbook The PASSBOOK model is a part of the Document Processing feature that enables you to process Indian bank passbooks as financial or identity proof documents. This enables you to extract fields of data from a passbook using the OCR technology, and fetch the parameters from it in the response. Note: Document Processing is only relevant to Indian users and is only available in the IN DC. This feature will not be available to users accessing from the EU, AU, US, JP, SA or CA data centers. Users outside of India from the other DCs can access the general OCR component to read and process textual content. The Passbook model supports 11 Indian languages and an additional 8 International languages. You can check the list of languages and language codes from the API documentation. You must provide the path to the image of the front page of the passbook, as shown in the code below. Allowed file formats: _.webp_, _.jpeg_, _.png_, _.bmp_, _.tiff_, _.pdf_<br /> File size limit: 15 MB You must specify the model type as PASSBOOK using ZCOCRModelType. You can also optionally specify the language using setLanguageCode(). English will be considered as the default language, if it isn't specified. The response contains the bank details and account details recognized from the passbook such as the bank name, branch, address, account number. The extracted fields of information are assigned to their respective keys. The response also shows if RTGS, NEFT, and IMPS have been enabled for that account. Note: Identity Scanner will return the response only in English, irrespective of the languages present in the passbook. #### Sample Code Snippet <br> import com.zc.component.ml.ZCContent; import com.zc.component.ml.ZCLine; import com.zc.component.ml.ZCML; import com.zc.component.ml.ZCOCRModelType; import com.zc.component.ml.ZCOCROptions; import com.zc.component.ml.ZCParagraph; import java.io.File; File file = new File("/Users/amelia-421/Desktop/MyPassbook.webp"); //Specify the file path ZCOCROptions options = ZCOCROptions.getInstance().setModelType(ZCOCRModelType.PASSBOOK) .setLanguageCode("tam"); //Set the model type and language ZCContent ocrContent = ZCML.getInstance().getContent(file, options); //Call getContent() with the file object to get the detected text in ZCContent object //To get individual paragraphs List paragraphs = ocrContent.getParagraphs(); for(ZCParagraph paragraph : paragraphs) { //To get individual lines in the paragraph List paraLines = paragraph.lines; for(ZCLine line : paraLines) { //To get individual words in the line String words = line.words; String text = line.text; //Raw line text } String text = paragraph.text; //Returns the raw paragraph text } String text = ocrContent.text; //Returns the raw image text -------------------------------------------------------------------------------- title: "Cheque" description: "This page describes the method to use the Cheque document processing feature in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.264Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/identity-scanner/cheque/" service: "Zia Services" related: - Cheque - API (/en/api/code-reference/zia-services/identity-scanner/cheque/#Cheque) -------------------------------------------------------------------------------- # Identity Scanner Identity Scanner is a Zia AI-driven component that enables you to perform secure identity checks on individuals and documents by scanning and processing various ID proofs or official documents. It is a comprehensive suite that incorporates multiple functionalities divided into two major categories- E-KYC and Document Processing. Note: Catalyst does not store any of the files you upload in its systems. The documents you upload are used for one-time processing only. They are not used for ML model training purposes either. Catalyst components are fully compliant with all applicable data protection and privacy laws. ## Cheque The CHEQUE model is a part of the Document Processing feature that enables you to process Indian bank cheque leaves as identity proof documents. This enables you to extract fields of data from a cheque using an advanced OCR technology, and fetch the parameters recognized from the cheque through the response. Note: Document Processing is only relevant to Indian users and is only available in the IN DC. This feature will not be available to users accessing from the EU, AU, US, JP, SA or CA data centers. Users outside of India from the other DCs can access the general OCR component to read and process textual content. You must provide the path to the image file of the front page of the chequebook, as shown in the code below. The CHEQUE model can only process text in English by default. No other languages are supported. Allowed file formats: _.webp_, _.jpeg_, _.png_<br /> File size limit: 15 MB You must specify the model type as CHEQUE using setModelType(). Note: Zia only processes cheques of the CTS-2010 format. The response will contain the parameters extracted from the cheque, such as the amount, bank name, branch name, account number, IFSC code, assigned to the respective keys. #### Sample Code Snippet <br> import java.sql.Date; import com.zc.component.ml.ZCChequeData; import com.zc.component.ml.ZCContent; import com.zc.component.ml.ZCML; import com.zc.component.ml.ZCOCRModelType; import com.zc.component.ml.ZCOCROptions; import java.io.File; File file = new File("/Users/amelia-421/Desktop/cheque.webp"); //Specify the file path ZCOCROptions options = ZCOCROptions.getInstance().setModelType(ZCOCRModelType.CHEQUE); //Set the model type ZCContent ocrContent = ZCML.getInstance().getContent(file, options); //Call getContent() with the file object to get the detected text in ZCContent object ZCChequeData chequeData = ocrContent.getChequeData(); //This method obtains the cheque data //To fetch individual elements like the account number, IFSC code, bank name, branch, amount, and date of transaction from the processed image String accountNumber = chequeData.getAccountNumber(); String ifsc = chequeData.getIfsc(); String bankName = chequeData.getBankName(); String branchName = chequeData.getBranchName(); Long amount = chequeData.getAmount(); Date date = chequeData.getDate(); ### Text Analytics -------------------------------------------------------------------------------- title: "Sentiment Analysis" description: "This page describes the method to use the sentiment analysis feature in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.265Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/text-analytics/sentiment-analysis/" service: "Zia Services" related: - Sentiment Analysis - API (/en/api/code-reference/zia-services/text-analytics/sentiment-analysis/#SentimentAnalysis) -------------------------------------------------------------------------------- # Sentiment Analysis Zia Sentiment Analysis is a part of Text Analytics that processes textual content to recognize the tone of the message, and the sentiments conveyed through it. It analyses each sentence in the text to determine if its tone is positive, negative, or neutral. It then determines the tone of the overall text as one of the these three sentiments, based on the sentiments recognized in each sentence. The response also returns the confidence scores for the sentiments detected in each sentence, to showcase the accuracy of the analysis. The confidence score lies in the range of 0 to 1\. A confidence score for the overall analysis is also returned. You can pass a block of text as the input of upto 1500 characters in a single request. You can also pass optional keywords for the text. This will enable Sentiment Analysis to process only those sentences that contain these keywords, and determine their sentiments. Other sentences will be ignored. The input text is passed to the getSentimentAnalysis() function of the ZCSentimentAnalysisData class. The code contains statements to fetch the sentiments and confidence score of each sentence, as well as the overall score. #### Sample Code Snippet <br> import org.json.simple.JSONArray; import com.catalyst.advanced.CatalystAdvancedIOHandler; import com.zc.component.ml.ZCML; import com.zc.component.ml.ZCSentenceAnalytics; import com.zc.component.ml.ZCSentimentAnalysisData; import com.zc.component.ml.ZCSentimentAnalysisDetails; import com.zc.component.ml.ZCSentimentConfidenceScore; import java.io.File; JSONArray textArray = new JSONArray(); textArray.add("ZylkerDB is one of their best products. I've been Zylker's customer for over a decade now, and I've always had a great experience with them."); //Input text to be processed JSONArray keywords = new JSONArray(); keywords.add("Zylker"); //Optional keywords, if you wish to process the sentences containing only these keywords List listOfSentimentAnalysisData = ZCML.getInstance().getSentimentAnalysis(textArray,keywords); //Input text is passed ZCSentimentAnalysisData sentimentAnalysisData = listOfSentimentAnalysisData.get(0); List SentimentAnalysisDetails = sentimentAnalysisData .getSentimentAnalysisDetails(); for (ZCSentimentAnalysisDetails sentimentAnalysis : SentimentAnalysisDetails) { String sentiment = sentimentAnalysis.getDocumentSentiment(); //To obtain the overall sentiment of the text double overallScore = sentimentAnalysis.getOverallScore(); //To obtain the confidence score of the overall analysis List listOfSentenceAnalytics = sentimentAnalysis.getSentenceAnalytics(); //To obtain the sentiment of each sentence ZCSentenceAnalytics sentenceAnalytic = listOfSentenceAnalytics.get(0); String sentenceSentiment = sentenceAnalytic.getSentiment(); String sentence = sentenceAnalytic.getSentence(); ZCSentimentConfidenceScore sentenceLevelConfidenceScore = sentenceAnalytic.getConfidenceScore(); //To obtain the confidence score of each sentence analysis } -------------------------------------------------------------------------------- title: "Named Entity Recognition" description: "This page describes the method to use the named entity recognition feature in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.265Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/text-analytics/named-entity-recognition/" service: "Zia Services" related: - Named Entity Recognition - API (/en/api/code-reference/zia-services/text-analytics/named-entity-recognition/#NamedEntityRecognition) -------------------------------------------------------------------------------- # Named Entity Recognition Zia Named Entity Recognition is a part of Text Analytics that processes textual content to extract key words and group them into various categorizes. For example, it can determine a word in a text to be the name of an organization, the name of a person, or a date, and add it to the appropriate category accordingly. Refer here for a list of all categories recognized by NER. The response returns an array of all the entities recognized in the text, and a tag indicating the category they belong to. It will also contain the confidence score of each categorization in percentage values, to showcase its accuracy. The response also returns the location of the entity in the text through its start index and end index. You can pass a block of text as the input of upto 1500 characters in a single request, as shown below. The text is passed to getNERPrediction(). The code contains statements to fetch the entities, their tags, locations, and the confidence scores. #### Sample Code Snippet <br> import org.json.simple.JSONArray; import com.zc.component.ml.ZCML; import com.zc.component.ml.ZCNERData; import com.zc.component.ml.ZCNERDetails; import java.io.File; JSONArray textArray = new JSONArray(); textArray.add("Zoho Corporation, is an Indian multinational technology company that makes web-based business tools.It is best known for Zoho Office Suite. The company was founded by Sridhar Vembu and Tony Thomas and has a presence in seven locations with its global headquarters in Chennai, India, and corporate headquarters in Pleasanton, California."); //Input text to be processed List listOfNERData = ZCML.getInstance().getNERPrediction(textArray); //Pass the input text List nerDetails = listOfNERData.get(0).getNERList(); String token = nerDetails.get(0).getToken(); //To recognize the entity String tag = nerDetails.get(0).getNERTag(); //To fetch the category of each entity double confidenceScore = nerDetails.get(0).getConfidenceScore(); //To fetch the confidence score of each classification int startIndex = nerDetails.get(0).getStartIndex(); //To fetch the start index of each entity int endIndex = nerDetails.get(0).getEndIndex(); //To fetch the end index of each entity -------------------------------------------------------------------------------- title: "Keyword Extraction" description: "This page describes the method to use the keyword extraction feature in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.265Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/text-analytics/keyword-extraction/" service: "Zia Services" related: - Keyword Extraction - API (/en/api/code-reference/zia-services/text-analytics/keyword-extraction/#KeywordExtraction) -------------------------------------------------------------------------------- # Keyword Extraction Zia Keyword Extraction is a part of Text Analytics that processes textual content and extracts the highlights of the text. The extracted terms are grouped into two categories: Keywords and Keyphrases. These highlights deliver a concise summary of the text and provide an abstraction of the whole text. The response contains an array of the key words, and another array of the key phrases that are extracted from the text. You can pass a block of text as the input of upto 1500 characters in a single request, as shown below. The text is passed to getKeywordExtraction(). The keywords and keyphrases are then fetched as individual lists. #### Sample Code Snippet <br> import org.json.simple.JSONArray; import com.zc.component.ml.ZCKeywordExtractionData; import com.zc.component.ml.ZCML; import java.io.File; JSONArray textArray = new JSONArray(); textArray.add("Zoho Corporation, is an Indian multinational technology company that makes web-based business tools. It is best known for Zoho Office Suite. The company was founded by Sridhar Vembu and Tony Thomas and has a presence in seven locations with its global headquarters in Chennai, India, and corporate headquarters in Pleasanton, California."); //Input text to be processed List listOfKeywordExtractionData = ZCML.getInstance().getKeywordExtraction(textArray); //Text is passed ZCKeywordExtractionData keywordExtractionData = listOfKeywordExtractionData.get(0); List keywordsList = keywordExtractionData.getKeywords(); //To fetch the keywords List keyphrasesList = keywordExtractionData.getKeyphrases(); //To fetch the keyphrases -------------------------------------------------------------------------------- title: "All Text Analytics" description: "This page describes the method to use the text analytics feature in your Java application with sample code snippets." last_updated: "2026-09-29T06:07:16.265Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/zia-services/text-analytics/all-text-analytics/" service: "Zia Services" related: - All Text Analytics - API (/en/api/code-reference/zia-services/text-analytics/all-text-analytics/#AllTextAnalytics) -------------------------------------------------------------------------------- # All Text Analytics Text Analytics as a whole includes a combination of all three features specified in the previous sections: Sentiment Analysis, Named Entity Recognition, and Keyword Extraction. You can perform all three actions on a specific block of text, and obtain the tone of the text, the categorizations of the entities recognized from it, and key words and phrases that provide a gist of the text. You can pass a block of text as the input of upto 1500 characters in a single request, as shown below. The text is passed to getTextAnalytics(). You can also pass optional keywords to perform Sentiment Analysis on the sentences containing only those keywords. The response contains the results of each of the text analytics feature. Refer to each feature page for detailed information on their respective functionalities and responses. #### Sample Code Snippet <br> import org.json.simple.JSONArray; import com.zc.component.ml.ZCKeywordExtractionData; import com.zc.component.ml.ZCML; import com.zc.component.ml.ZCNERData; import com.zc.component.ml.ZCSentimentAnalysisData; import com.zc.component.ml.ZCTextAnalyticsData; import java.io.File; JSONArray textArray = new JSONArray(); textArray.add("Zoho Corporation, is an Indian multinational technology company that makes web-based business tools. It is best known for Zoho Office Suite. The company was founded by Sridhar Vembu and Tony Thomas and has a presence in seven locations with its global headquarters in Chennai, India, and corporate headquarters in Pleasanton,California."); //Input text to be processed JSONArray keywords = new JSONArray(); keywords.add("Zoho"); //Optional keywords for Sentiment Analysis List listOfTextAnalyticsData = ZCML.getInstance().getTextAnalytics(textArray,keywords); //Text and keywords are passed ZCTextAnalyticsData textAnalyticsData = listOfTextAnalyticsData.get(0); ZCKeywordExtractionData keywordExtractionData = textAnalyticsData.getKeywordExtractionData(); //To perform Keyword Extraction on the text Z CNERData nerData = textAnalyticsData.getNERData(); //To perform NER on the text ZCSentimentAnalysisData sentimentAnalysisData = textAnalyticsData.getSentimentAnalysisData(); //To perform Sentiment Analysis on the text