# Data Store -------------------------------------------------------------------------------- title: "Introduction" description: "Catalyst Data Store is a highly-scalable, cloud-based relational database that stores the persistent data of your app that includes the data from the application’s backend and the data of the application’s end users." last_updated: "2026-03-18T07:41:08.535Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/data-store/introduction/" service: "Cloud Scale" -------------------------------------------------------------------------------- # Data Store ## Introduction The Data Store is a Catalyst Cloud Scale component that serves as a cloud-based relational database management system for storing your application’s persistent data, including backend information and end-user data. The ability to perform operations like creating tables, modifying records, setting field characteristics, and managing data efficiently is powered by Catalyst, ensuring scalability, reliability, and seamless integration with other services. You can perform these actions by clicking a few buttons, or you can also execute queries in {{%link href="/en/cloud-scale/help/zcql/introduction/" %}}ZCQL{{%/link%}} to manage the data operations. You can also set scopes and permissions for each table in the Data Store. They define the availability of the table's data and the levels of access granted to various user roles for each table. The Data Store works with APIs and your application platform's SDK, which you can use to process HTTP requests from the application for various operations. Catalyst comes with a built-in proprietary OLAP (Online Analytical Processing) database feature, exclusively built to handle analytical queries that you run on the Data Store. You can execute advanced analytical queries on the OLAP database directly, instead of the Data Store's primary relational database for instantaneous results on datasets of any scale. #### Key Features of Catalyst Data Store * Can be used to create databases and manage tables in the console without performing query operations. * Can be accessed with {{%link href="/en/cloud-scale/help/zcql/introduction/" %}}ZCQL query operations{{%/link%}}. This enables more control over data processing and handles specific requirements. * Comes with a built-in OLAP database to exclusively handle analytical queries. * Can be used to perform data manipulation operations by working with APIs and the platform-specific SDK. * Can process bulk data insertion in the background using queues. * Can be accessed and modified from client devices based on the scopes and permissions. * Contains cloud storage which ensures scalability and universal access. * Provides synchronization of data and updates between the various collaborators of the project. * Supports advanced search on the indexed columns using {{%link href="/en/cloud-scale/help/search-integration/introduction/" %}}Catalyst Search{{%/link%}}. * Supports Bulk Read, Bulk Write, and Bulk Delete operations. * {{%link href="/en/devops/help/metrics/introduction/" %}}Metrics{{%/link%}} displays the following usage information of Data Store- Table Count and Row Count history. #### SDK and API Documentation Catalyst offers several APIs to perform various operations in the Data Store. You can also access various Data Store features in the Catalyst SDK packages. For more information and code samples on working in these programming environments, refer to these help pages: * {{%link href="/en/sdk/java/v1/cloud-scale/data-store/get-table-meta/" %}}Data Store - Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-component-instance/" %}}Data Store - Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}Data Store - Python SDK{{%/link%}} * {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-component-instance/" %}}Data Store - Web SDK{{%/link%}} * {{%link href="/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow" %}}Data Store - API{{%/link%}} -------------------------------------------------------------------------------- title: "Tables" description: "Catalyst Data Store is a highly-scalable, cloud-based relational database that stores the persistent data of your app that includes the data from the application’s backend and the data of the application’s end users." last_updated: "2026-03-18T07:41:08.535Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/data-store/tables/" service: "Cloud Scale" -------------------------------------------------------------------------------- # Tables You can create tables in the Catalyst Data Store to store your application's data. You can create columns for a table that categorize and group similar data together, and then create records. In Catalyst terminology, the {{%bold%}}rows{{%/bold%}} in the Data Store represent the individual records of the table, and the {{%bold%}}columns{{%/bold%}} represent the fields that are created for a table. <br /> ### Create a New Table To create a new table in the Data Store: 1. Navigate to {{%bold%}}Data Store{{%/bold%}} under _Storage_ in the Catalyst Cloud Scale console. 2. In the _Data Store_ page, click {{%bold%}}Create a new Table{{%/bold%}}.<br /> <br /> 3. Enter the {{%bold%}}Table Name{{%/bold%}} in the text box and click {{%bold%}}Create{{%/bold%}}.<br /> <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} The table name can only contain alphanumeric characters and underscores. Do not include any whitespace or special characters. The table name should also not start with any numeric characters.{{%/note%}} The table is now created and displayed in the _Data Store_ page. All tables that you create will be listed on the left hand side of the page. <br /> Once your table is created, a unique {{%bold%}}Table ID{{%/bold%}} is created for it automatically. You can use it to refer to the table when working with the SDKs and APIs. You can find the Table ID under the table's name when you click on a table from the list. You can use the search box to search for a particular table by its name. When you create a new table in the Data Store, a set of default columns for its characteristics are created automatically. You can learn more about these columns in the {{%link href="/en/cloud-scale/help/data-store/columns/#default-columns" %}}next section{{%/link%}}. <br /> ### Update a Table Name To update a table name in the Data Store: 1. In the _Data Store_ page, click the ellipsis icon for the table that needs to be renamed and click {{%bold%}}Edit{{%/bold%}}.<br /> <br /> 2. Enter the new name for the table and click {{%bold%}}Update{{%/bold%}}.<br /> <br /> ### Truncate a Table The truncate operation deletes all the records in the table, while retaining its schema. The columns of the table and the table's metadata will still be available, after the operation has ended. You can truncate a table if you want to re-populate a table with a new set of data periodically and clear the old data. You can also perform this operation if you want to avoid creating a new table from scratch, and use an existing table with pre-defined schema instead. <br /> To truncate a table in the Data Store: 1. Click the {{%bold%}}ellipsis icon{{%/bold%}} for the table that needs to be truncated, then click {{%bold%}}Truncate{{%/bold%}}.<br /> <br /> 2. Enter "**TRUNCATE**" in the pop-up window to confirm the operation, then click {{%bold%}}Confirm{{%/bold%}}.<br /> <br /> The truncate process will be initiated. A Catalyst scheduler will run in the background and execute the operation. You will be able to perform other operations in the Data Store while the truncate operation is still in progress. After the truncate is complete, you will receive a notification in the console about the status of the operation. <br /> ### Delete a Table To delete a table from the Data Store: 1. Click the ellipsis icon for the table that needs to be deleted, then click {{%bold%}}Delete{{%/bold%}}.<br /> <br /> 2. Click {{%bold%}}Yes, Proceed{{%/bold%}} in the confirmation pop-up.<br /> <br /> The table is now deleted from the Data Store. <br /> -------------------------------------------------------------------------------- title: "Columns" description: "Catalyst Data Store is a highly-scalable, cloud-based relational database that stores the persistent data of your app that includes the data from the application’s backend and the data of the application’s end users." last_updated: "2026-03-18T07:41:08.536Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/data-store/columns/" service: "Cloud Scale" -------------------------------------------------------------------------------- # Columns The _Schema View_ page of the table displays the columns that are created for the table. As mentioned in the previous section, when a table is created, a set of columns are automatically created for it by default. <br /> <br /> ### Default Columns The four default columns that exist in every table are: * {{%bold%}}ROWID:{{%/bold%}} Represents the unique ID or the Primary Key of a particular record in the table. When you add a new record, the ROWID value for the record is created automatically. * {{%bold%}}CREATORID:{{%/bold%}} Represents the unique ID of the Catalyst account user. * {{%bold%}}CREATEDTIME:{{%/bold%}} Specifies the time a particular record was created. * {{%bold%}}MODIFIEDTIME:{{%/bold%}} Specifies the time a record was last modified. In addition to these four default columns, any new columns you create will be listed in the Schema View page under the default columns. {{%note%}}{{%bold%}}Note:{{%/bold%}} You cannot modify the values in the ROWID and CREATORID columns.{{%/note%}} <br /> ### Column Characteristics Every column in the Catalyst Data Store contains a set of characteristics that define the column's structure and behavior. The seven column characteristics are: 1. {{%bold%}}Column ID: {{%/bold%}} The unique ID of a particular column in the table. When you add a new column, the Column ID value for the record is created automatically. You cannot modify the Column ID value. 2. {{%bold%}}Column Name:{{%/bold%}} The name of the column. 3. {{%bold%}}Data Type:{{%/bold%}} Catalyst supports the following data types: <br /> * {{%bold%}}Text:{{%/bold%}} Long-form text data type that accommodates more characters than the Var Char data type, with a maximum length of 10,000 characters. * {{%bold%}}Var Char:{{%/bold%}} Variable-length character data type that can hold letters and numbers, with a maximum length of 255 characters. * {{%bold%}}Date:{{%/bold%}} Date value in the format YYYY-MM-DD * {{%bold%}}DateTime:{{%/bold%}} Date and time values in the format YYYY-MM-DD and HH:MM:SS * {{%bold%}}Int:{{%/bold%}} 4-byte integer data type, with a maximum length of 10 digits. * {{%bold%}}Double:{{%/bold%}} Double precision floating-point number, with a maximum of 17 digits including the decimal part * {{%bold%}}Boolean:{{%/bold%}} Boolean values can be either 'true' or 'false' * {{%bold%}}BigInt:{{%/bold%}} 8-byte integer data type, with a maximum of 19 digits * {{%bold%}}Foreign Key:{{%/bold%}} Refers to the Primary Key of another table * {{%bold%}}Encrypted text :{{%/bold%}} Encrypted long-form text data type, with a maximum length of 10,000 characters. 4. {{%bold%}}Default Value:{{%/bold%}} If the value for a column is left empty by the user, a default value is set for the column. 5. {{%bold%}}Search Index Constraint:{{%/bold%}} If the _Search Index_ constraint is enabled for a column, it will create a full-text search index for the column in the table. This allows the column to be search-enabled while using {{%link href="/en/cloud-scale/help/search-integration/introduction/" %}}Catalyst Search:{{%/link%}} integration in your application. 6. {{%bold%}}IsUnique Constraint:{{%/bold%}} If the IsUnique constraint is enabled for a column, it will mark the column as containing a unique value, and eliminate the possibility of duplicate values for the same column in the table. 7. {{%bold%}}IsMandatory Validator:{{%/bold%}} If the IsMandatory validator is enabled for a column, the column will need to contain a non-empty data value. If you attempt to skip adding a value to the column where the IsMandatory validator is enabled, it will generate an error message. 8. {{%bold%}}PII/ePHI Validator{{%/bold%}}: The Personal Identifiable Information (PII)/Electronic Protected Health Validator (ePHI) indicates sensitive user data that needs to be stored and managed in compliance with all relevant data and privacy protection laws, such as {{%link href="https://www.hhs.gov/hipaa/for-professionals/special-topics/health-information-technology/cloud-computing/index.html" %}}HIPAA{{%/link%}} and {{%link href="https://gdpr-info.eu/issues/personal-data/" %}}GDPR{{%/link%}} guidelines. Examples of such sensitive data include Identifiable Health Information (IIHI), personal and contact information such as name, address, and telephone numbers, medical history and information including Medical Record Number (MRN) and Medicare Beneficiary Identifier (MBI), identity information such as Social Security Number and vehicle identifiers and any other user data that falls under this scope. You must enable the PII/ePHI validator for columns that contain sensitive user data.<br /><br />If this validator is enabled for a column, Catalyst account admins and project members with the necessary permissions will be able to view all activities performed in these columns, in the {{%link href="/en/devops/help/logs/application-logs" %}}{{%italics%}}Application Logs{{%/italics%}}{{%/link%}} section of {{%link href="/en/getting-started/set-up-a-catalyst-project/audit-logs" %}}{{%italics%}}Audit Logs{{%/italics%}}{{%/link%}} in the console. The activities include creation, updation, or deletion of rows in the sensitive columns. Some of these column characteristics, such as the _IsUnique_ and the _IsMandatory_ are available for multiple data types. The _Search Index_ constraint and _Default Value_ is available for all data types except _Text_. The *PII/ePHI* validator is available for all data types. The _Var Char_ data type includes an additional characteristic called {{%bold%}}Max Length{{%/bold%}} which lets you define the maximum length of characters allowed to be entered. The highest value for Max Length supported by Catalyst is 255 characters. You will not be able to provide a higher value. When you edit this value, you must always provide a greater value for Max Length than the previous Max Length value. Likewise, the _Foreign Key_ data type includes two additional characteristics: 1. {{%bold%}}Parent Table:{{%/bold%}} The table whose primary keys should be referred 2. {{%bold%}}On Delete:{{%/bold%}} The action that must be performed when the primary key column in the parent table is deleted. It includes two options: Null and Cascade.<br /> If you select {{%bold%}}Null{{%/bold%}}, the foreign key's value will be set to null, upon the deletion of the primary key column in the parent table. If you select {{%bold%}}Cascade{{%/bold%}}, the foreign key column will be deleted entirely upon the deletion of the primary key column in the parent table. The values of all the column characteristics are pre-populated in the four default columns in every table (ROWID, CREATORID, CREATEDTIME, MODIFIED TIME), except for the Default Value characteristic. The Column ID values are automatically created for the default columns and the Default Value characteristic is null. The pre-populated values for the other column characteristics for the default columns are: <table class="content-table"> <thead> <tr> <th><strong>Column Name</strong></th> <th><strong>Data Type</strong></th> <th><strong>Search Indexed</strong></th> <th><strong>IsUnique</strong></th> <th><strong>IsMandatory</strong></th> <th><strong>PII/ePHI</strong></th> </tr> </thead> <tbody> <tr> <td>ROWID</td> <td>BigInt</td> <td>False</td> <td>False</td> <td>False</td> <td>False</td> </tr> <tr> <td>CREATORID</td> <td>BigInt</td> <td>True</td> <td>False</td> <td>False</td> <td>False</td> </tr> <tr> <td>CREATEDTIME</td> <td>DateTime</td> <td>True</td> <td>False</td> <td>False</td> <td>False</td> </tr> <tr> <td>MODIFIEDTIME</td> <td>DateTime</td> <td>True</td> <td>False</td> <td>False</td> <td>False</td> </tr> </tbody> </table> ### Create a New Column {{%note%}}{{%bold%}}Note:{{%/bold%}} Catalyst allows you to create upto 100 columns per table in the {{%link href="/en/deployment-and-billing/environments/introduction/" %}}development environment{{%/link%}}. You can request Catalyst for an increase in this limit by contacting our support at {{%bold%}}support@zohocatalyst.com{{%/bold%}}. We will address each request on a case-by-case basis. There are no upper limits for column creation in the production environment.{{%/note%}} To create a new column for a table in the Data Store: 1. In the _Schema View_ section of the table, click {{%bold%}}\[+New Column\]{{%/bold%}}.<br /> <br /> 2. Enter the {{%bold%}}Column Name{{%/bold%}} and choose the {{%bold%}}Data Type{{%/bold%}} from the drop-down list.<br /> <br /> 3. Enter the required details for the data type and enable the required constraints and validators.<br /> <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} The column name can only contain alphanumeric characters and certain specific characters. Do not include white spaces in it.{{%/note%}} 4. Click {{%bold%}}Create{{%/bold%}}. The column is now created and listed in the _Schema View_ page of the table along with its characteristics. You can use the search box to search for a particular column by its name. <br /> <br /> ### Edit a Column You can edit certain characteristics of a column in a table from the _Schema View_ page. The characteristics that cannot be edited include the _Column ID_, the _Data Type_ and the _IsUnique_ constraint once the column has been created. To edit a column in a table in the Data Store: 1. In the _Schema View_ section of the table, click the ellipsis icon for the column that needs to be edited, then click {{%bold%}}Edit{{%/bold%}}.<br /> <br /> 2. Make the necessary changes and click {{%bold%}}Update{{%/bold%}}.<br /> <br /> <br /> ### Delete a Column To delete a column in the Data Store: 1. In the _Schema View_ section of the table, click the ellipsis icon for the column that needs to be deleted, then click {{%bold%}}Delete{{%/bold%}}.<br /> <br /> 2. Click {{%bold%}}Yes, Proceed{{%/bold%}} in the confirmation window pop-up.<br /> <br /> The column is now deleted from the table. <br /> -------------------------------------------------------------------------------- title: "Scopes and Permissions" description: "Catalyst Data Store is a highly-scalable, cloud-based relational database that stores the persistent data of your app that includes the data from the application’s backend and the data of the application’s end users." last_updated: "2026-03-18T07:41:08.537Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/data-store/scopes-and-permissions/" service: "Cloud Scale" -------------------------------------------------------------------------------- # Scopes and Permissions The scopes and permissions settings in the Data Store allow you to define the {{%bold%}}Table Scopes{{%/bold%}} and the {{%bold%}}Table Permissions{{%/bold%}} for every table. You can use these settings to customize the availability of your data and prevent unauthorized access to it. <br /> ### Table Scopes The Table Scopes defines the availability scope of a particular table. This limits the availability of the data to the range that you specify. The three table scopes that are available in the Data Store are: * {{%bold%}}Global:{{%/bold%}} If you select _Global_ as the scope for a table that you create, the table's entire data set can be accessed globally. This can be used for tables which all your application's users will require complete access to. * {{%bold%}}Org{{%/bold%}}: If you select the _Org_ as the scope for a table that you create, only the users of your organization can access the table's data. * {{%bold%}}User{{%/bold%}}: If you select _User_ as the scope for a table that you create, only you can access the table's data. The table scopes are defined for each user role. For example, if you select the table scope as "Org" for the user role *App Admin*, the users of the role will be able to view the table's data only if they belong in the same organization as yours. To set the _Table Scope_ for a table: 1. In the _Data Store_ page, click the table name and then click {{%bold%}}Scopes & Permissions{{%/bold%}}. 2. Select a scope for the table from the three options, for each user role, under _Table Scope_.<br /> <br /> The table's data set is now available for the scope that you have selected for each user role. <br /> ### Table Permissions The Table Permissions defines the level of permission to access and modify the table which is granted to various Catalyst user roles. The user roles for Catalyst users can be managed in the _Roles_ section of _Authentication_. You can learn more about user roles from the {{%link href="/en/cloud-scale/help/authentication/user-management/roles/introduction/" %}}Roles help page{{%/link%}}. There are four specific access permissions for every table in the Data Store: * {{%bold%}}Select:{{%/bold%}} If this option is selected for a user role, the users with that role can view the table's data. * {{%bold%}}Update:{{%/bold%}} If this option is selected for a user role, the users with that role can update the existing data in the table. * {{%bold%}}Insert:{{%/bold%}} If this option is selected for a user role, the users with that role can add new data to the table. * {{%bold%}}Delete:{{%/bold%}} If this option is selected for a user role, the users with that role can delete existing content from the table and the table itself. To set the _Table Permissions_ for a table: In the _Scopes & Permissions_ section of the table, click the required check boxes under _Table Permissions_ to enable the necessary access permissions for every user role.<br /> <br /> The access permissions for the table's data are now set for the user roles in your Catalyst account. <br /> -------------------------------------------------------------------------------- title: "Records" description: "Catalyst Data Store is a highly-scalable, cloud-based relational database that stores the persistent data of your app that includes the data from the application’s backend and the data of the application’s end users." last_updated: "2026-03-18T07:41:08.537Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/data-store/records/" service: "Cloud Scale" -------------------------------------------------------------------------------- # Records The _Data Views_ page for a table lists out the records that have been created for the table. The columns of the records are displayed for each record as columns, including the four default columns CREATORID, MODIFIEDTIME, CREATEDTIME, and ROWID. The values of these default columns are created automatically. <br /> ### Create a New Record To create a new record for a table in the Data Store: 1. In the _Data Views_ section, click {{%bold%}}Add Row{{%/bold%}} if you are adding the first record. A {{%bold%}}\[+New Row\]{{%/bold%}} is present if records exist for the table. 2. Enter the values for the columns of the record.<br /> <br /> 3. Click {{%bold%}}Add{{%/bold%}}. The data record is now saved will now be displayed in the _Data Views_ page. You can use the search box to search for a particular record by the name of one of its indexed columns. <br /> {{%note%}}{{%bold%}}Note: {{%/bold%}} <br /> * You cannot search for a record by a column name for which the Search Index constraint is disabled. * Ensure that you enter the value for a column in its data type's specified format. The text box will prevent you from providing a mismatched value. In certain cases, error messages will be displayed to indicate mismatched values. * For columns where the _IsUnique_ constraint is enabled, ensure that you don't enter values that are already present in other records. Similarly, for the columns where the *IsMandatory* validator is enabled, ensure that you do not leave the data value blank. * For a column where the data type is a {{%bold%}}Foreign Key{{%/bold%}}, you must provide the ROWID of the parent table's record which it refers, as its value. {{%/note%}} <br /> ### Edit a Record To edit a record from a table in the Data Store: 1. In the _Data Views_ section of the table, click the ellipsis icon for the record that needs to be edited, then click {{%bold%}}Edit{{%/bold%}}.<br /> <br /> 2. Make the necessary changes and click {{%bold%}}Update{{%/bold%}}.<br /> <br /> <br /> ### Delete a Record To delete a record from a table in the Data Store: 1. In the _Data Views_ section of the table, click the ellipsis icon for the record that needs to be delted, then click {{%bold%}}Delete{{%/bold%}}.<br /> <br /> 2. Click {{%bold%}}Yes, Proceed{{%/bold%}} in the confirmation pop-up.<br /> <br /> <br /> -------------------------------------------------------------------------------- title: "Bulk Operations" description: "Catalyst Data Store is a highly-scalable, cloud-based relational database that stores the persistent data of your app that includes the data from the application’s backend and the data of the application’s end users." last_updated: "2026-03-18T07:41:08.537Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/data-store/bulk-operations/" service: "Cloud Scale" -------------------------------------------------------------------------------- # Bulk Operations ### Bulk Read and Bulk Write Records Catalyst enables you to perform bulk read and bulk write operations on the tables in the Data Store using the CLI or the APIs. * {{%bold%}}Bulk Read Records:{{%/bold%}} This operation reads large volumes of records from a specific table in the Data Store, and generates a CSV file containing the results of the read operation if the job is successful. * {{%bold%}}Bulk Write Records:{{%/bold%}} This operation fetches large volumes of records from a CSV file uploaded to a {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}bucket{{%/link%}} in {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}Stratus{{%/link%}}, bulk writes them to a specific table in the Data Store, and generates a report file containing the details of the job execution. To learn about these operations in detail, refer to these help links: * {{%link href="/en/cli/v1/export-and-import-projects/introduction/" %}}Data Store Import and Export CLI documentation{{%/link%}} * {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-read-rows/create-bulk-read-job/#CreateBulkReadJob" %}}Bulk Read API documentation{{%/link%}} * {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-write-rows/create-bulk-write-job/#CreateBulkWriteJob" %}}Bulk Write API documentation{{%/link%}} <br /> ### Bulk Delete Records Catalyst enables you to delete records in bulk from a specific table in the Data Store, using an API or as an SDK operation. The bulk delete operation can delete a maximum of 200 rows in a single API call or an SDK operation. To learn about this operation in detail, refer to these help links: * {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-delete-rows/#BulkDeleteRows" %}}Bulk Delete API documentation{{%/link%}} * {{%link href="/en/sdk/java/v1/cloud-scale/data-store/bulk-delete-rows/" %}}Bulk Delete Java SDK documentation{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/bulk-delete-rows/" %}}Bulk Delete Node.js SDK documentation{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/data-store/bulk-delete-rows/" %}}Bulk Delete Python SDK documentation{{%/link%}} * {{%link href="/en/sdk/web/v4/cloud-scale/data-store/bulk-delete-rows/" %}}Bulk Delete Web SDK documentation{{%/link%}} ## OLAP Database -------------------------------------------------------------------------------- title: "Introduction" description: "Catalyst Data Store is a highly-scalable, cloud-based relational database that stores the persistent data of your app that includes the data from the application’s backend and the data of the application’s end users." last_updated: "2026-03-18T07:41:08.538Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/data-store/olap-database/introduction/" service: "Cloud Scale" -------------------------------------------------------------------------------- # OLAP Database ## Introduction Catalyst comes with a built-in proprietary OLAP (Online Analytical Processing) database feature, exclusively built to handle analytical queries that you run on the Data Store. You can execute advanced analytical queries on the OLAP database directly, instead of the Data Store's primary relational database for instantaneous results on datasets of any scale. With its speed and efficiency, the OLAP database enables you to perform intricate analysis on multidimensional data and is designed for advanced business intelligence. {{%link href="/en/cloud-scale/help/zcql/introduction/" %}}Catalyst ZCQL{{%/link%}} supports querying the Data Store to execute the typical CRUD operations, and even include clauses and statements in them. In addition to this, ZCQL also supports {{%link href="/en/cloud-scale/help/zcql/zcql-functions/" %}}built-in functions{{%/link%}} that help you perform quick arithmetic and analytical operations on the data in read queries, and manipulate the results to meet your requirements. As these involve advanced calculations, Catalyst provides you with a state-of-the-art OLAP system to handle these queries exclusively. With a single one-time action, you can enable automated synchronization of the data from the primary Data Store's database to the OLAP database, and then execute data retrieval queries on it directly through our platform SDKs and APIs. {{%note%}}{{%bold%}}Note:{{%/bold%}} The OLAP database is a secondary database to the primary Data Store's database, optimized for analytical processing in data retrieval. Direct write operations to the OLAP database are not allowed. You will not be able to perform Create, Update, and Delete operations on OLAP; you will only be able to perform Read operations.{{%/note%}} The OLAP system is designed to make complex data analysis easy for business users and decision makers. Some common applications where advanced data analysis and business intelligence can be integral include aggregated report generation, real-time dashboards and analytics, financial analysis that includes budgeting and forecasting, sales and marketing performance analysis, inventory and logistics management, data mining and trend analysis. If your application involves any of these aspects, you can query on the OLAP database and utilize its features to the fullest. <br> ### Differences between the Primary Data Store and the OLAP Database Consider the factors listed below to determine when you would need to enable the OLAP database and query it, instead of querying the primary Data Store. <table class="content-table"> <thead> <tr> <th>Primary Data Store</th> <th>OLAP Database</th> </tr> </thead> <tbody> <tr> <td>The primary Data Store implements OLTP (Online Transaction Processing) that is suited to handle queries to process transactions, rather than for the purpose of business intelligence.</td> <td>The OLAP system is built for a multidimensional data model, that allows for complex analytical and ad hoc query executions with a quick execution time, more suited for advanced data analysis.</td> </tr> <tr> <td>The primary Data Store can process all CRUD operations in an equally optimized manner, as it is fundamentally transaction-oriented. </td> <td>The OLAP database is highly read-optimized, as it is designed to handle analytical queries, which are typically executed in read operations. </td> </tr> <tr> <td>You can perform all CRUD operations on the primary Data Store.</td> <td>You will not be able to execute direct write operations on the OLAP database. </td> </tr> <tr> <td>Use this to execute transactional SELECT, INSERT, UPDATE and DELETE operations. </td> <td>Use this to execute analytical SELECT operations that include built-in ZCQL functions..</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Key Features" description: "Catalyst Data Store is a highly-scalable, cloud-based relational database that stores the persistent data of your app that includes the data from the application’s backend and the data of the application’s end users." last_updated: "2026-03-18T07:41:08.538Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/data-store/olap-database/key-features/" service: "Cloud Scale" -------------------------------------------------------------------------------- # Key Features of Catalyst OLAP Database * {{%bold%}}Data Analysis and Advanced Business Intelligence{{%/bold%}} The OLAP system is built to analyze complex business data and provide you with actionable insights, allowing you to plan strategy and make informed business decisions. It uses columnar storage to organize data and define the relationships between them. Data is represented in the form of cubes that are categorized by multiple dimensions. These allow you to perform aggregations and manipulations on the data easily and efficiently. You can execute key analytical operations on your data that include: **Drill-down**, **Roll-up**, **Slice**, and **Dice** using the various clauses and analytical functions provided in ZCQL. For more, refer to the examples in the {{%link href="/en/cloud-scale/help/data-store/olap-database/olap-operations-guide/" %}}next section{{%/link%}}. * {{%bold%}}Fully Platform-Managed Storage{{%/bold%}} Catalyst eliminates any efforts from your end in setting up or managing the OLAP database. It is built on Zoho's tried-and-tested infrastructure that is fully platform-managed. You can enable the OLAP database as a one-time action for a project from the console. This will then automate data synchronization from the primary Data Store. You will not be required to perform any other actions towards managing it. * {{%bold%}}Near Real-Time Sync with the Primary Data Store{{%/bold%}} After you enable the OLAP database for your project, data from the primary Data Store is automatically synced with the OLAP system in near real-time. The synchronization is not based on a scheduler that runs in periodic intervals, and is rather triggered by any updates made to the primary Data Store. This ensures that the sync is close to real-time, allowing you to perform analysis on data as it arrives with minimal delay between ingestion and query execution. The sync is maintained throughout the period of the OLAP database being enabled, for all the tables created and updated in the Data Store. * {{%bold%}}Instant Results with Large Datasets{{%/bold%}} Catalyst delivers a highly scalable, streamlined, and hassle-free experience with querying the OLAP database. It enables high-concurrency query processing, allowing you to experience instant results on datasets of any scale. You can obtain results for complex queries, without timeouts or lags even with the largest of datasets. -------------------------------------------------------------------------------- title: "Help Guide on OLAP Operations" description: "Catalyst Data Store is a highly-scalable, cloud-based relational database that stores the persistent data of your app that includes the data from the application’s backend and the data of the application’s end users." last_updated: "2026-03-18T07:41:08.538Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/data-store/olap-database/olap-operations-guide/" service: "Cloud Scale" -------------------------------------------------------------------------------- # Help Guide on OLAP Operations This section includes examples of some of the common OLAP operations you can perform on the OLAP database using ZCQL. **Example Database:** Given below is a sample table that contains the sales data of products by region, year, and quarter. <table class="content-table"> <thead> <tr> <th>sale_id </th> <th>region</th> <th>product</th> <th>year</th> <th>quarter</th> <th>amount</th> </tr> </thead> <tbody> <tr> <td>101</td> <td>East</td> <td>Laptop</td> <td>2024</td> <td>Q1</td> <td>900</td> </tr> <tr> <td>102</td> <td>East</td> <td>Laptop</td> <td>2024</td> <td>Q2</td> <td>1100</td> </tr> <tr> <td>103</td> <td>East</td> <td>Phone</td> <td>2024</td> <td>Q1</td> <td>500</td> </tr> <tr> <td>104</td> <td>West</td> <td>Laptop</td> <td>2024</td> <td>Q1</td> <td>800</td> </tr> <tr> <td>105</td> <td>West</td> <td>Phone</td> <td>2024</td> <td>Q2</td> <td>600</td> </tr> <tr> <td>106</td> <td>West</td> <td>Laptop</td> <td>2024</td> <td>Q2</td> <td>700</td> </tr> <tr> <td>107</td> <td>North</td> <td>Phone</td> <td>2024</td> <td>Q1</td> <td>300</td> </tr> <tr> <td>108</td> <td>North</td> <td>Phone</td> <td>2024</td> <td>Q2</td> <td>400</td> </tr> </tbody> </table> <br> ### Roll-Up Roll-up involves aggregating or summarizing the data to a higher-level hierarchy, reducing granularity. For example, summarizing the data from quarter to year, or from individual sales amount to a total. This example query will roll up from a quarter-level sales to a yearly sales total, per region. {{%code class="language-sql"%}}SELECT region, year, Sum(amount) FROM sales_fact GROUP BY region, year ORDER BY region{{%/code%}} It will generate the following output: <table class="content-table"> <thead> <tr> <th>region</th> <th>year</th> <th>Sum(amount)</th> </tr> </thead> <tbody> <tr> <td>East</td> <td>2024</td> <td>2500</td> </tr> <tr> <td>North</td> <td>2024</td> <td>700</td> </tr> <tr> <td>West</td> <td>2024</td> <td>2100</td> </tr> </tbody> </table> <br> ### Drill-Down The drill-down operation moves down from a summary-level to a lower level in the concept hierarchy, providing a more detailed view of the data and adding new dimensions. This example query will drill down and provide totals for each quarter, instead of yearly totals. {{%code class="language-sql"%}}SELECT region, year, quarter, Sum(amount) FROM sales_fact GROUP BY region, year, quarter ORDER BY region, quarter{{%/code%}} It will generate the following output: <table class="content-table"> <thead> <tr> <th>region</th> <th>year</th> <th>quarter</th> <th>Sum(amount)</th> </tr> </thead> <tbody> <tr> <td>East</td> <td>2024</td> <td>Q1</td> <td>1400</td> </tr> <tr> <td>East</td> <td>2024</td> <td>Q2</td> <td>1100</td> </tr> <tr> <td>North</td> <td>2024</td> <td>Q1</td> <td>300</td> </tr> <tr> <td>North</td> <td>2024</td> <td>Q2</td> <td>400</td> </tr> <tr> <td>West</td> <td>2024</td> <td>Q1</td> <td>800</td> </tr> <tr> <td>West</td> <td>2024</td> <td>Q2</td> <td>1300</td> </tr> </tbody> </table> <br> ### Slicing The Slice operation selects a single dimension from the cube where data is represented, and creates a slice of the cube with reduced dimensionality. This operation helps focus on a specific data slice for analysis. This example query will provide the average Q1 sales amount per region. {{%code class="language-sql"%}}SELECT region, Avg(amount) FROM sales_fact WHERE quarter = 'Q1' GROUP BY region ORDER BY region{{%/code%}} It will generate the following output: <table class="content-table"> <thead> <tr> <th>region</th> <th>Avg(amount)</th> </tr> </thead> <tbody> <tr> <td>East</td> <td>700</td> </tr> <tr> <td>North</td> <td>300</td> </tr> <tr> <td>West</td> <td>600</td> </tr> </tbody> </table> <br> ### Dicing The Dice operation applies multiple filters on two or more dimensions of the cube where the data is represented, to form a smaller sub-cube. It provides a multidimensional subset of the original data cube. This example query will count the number of Laptop sales in the East and West regions during Q1 or Q2 of 2024. {{%code class="language-sql"%}}SELECT region, Count(sale_id) FROM sales_fact WHERE product = 'Laptop' AND region IN ('East', 'West') AND quarter IN ('Q1', 'Q2') AND year = 2024 GROUP BY region ORDER BY region{{%/code%}} It will generate the following output: <table class="content-table"> <thead> <tr> <th>region</th> <th>Count(sale_id)</th> </tr> </thead> <tbody> <tr> <td>East</td> <td>2</td> </tr> <tr> <td>West</td> <td>2</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Enable and Query OLAP Database" description: "Catalyst Data Store is a highly-scalable, cloud-based relational database that stores the persistent data of your app that includes the data from the application’s backend and the data of the application’s end users." last_updated: "2026-03-18T07:41:08.538Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/data-store/olap-database/enable-and-query/" service: "Cloud Scale" -------------------------------------------------------------------------------- # Enable and Query OLAP Database ### Enable OLAP Database You can enable the OLAP database for a Catalyst project as a whole. All the tables created in the Data Store in this project will then be automatically synchronized to the OLAP database. To enable the OLAP database for your project: 1. Navigate to **Data Store** in *CloudScale*, then click the **OLAP Database** tab. 2. Click **Enable** from this section. <br /> 3. Click **Enable** in the confirmation pop-up. <br /> The OLAP Database will be enabled and Catalyst will start syncing your data from the primary Data Store. <br /> <br> ### Disable OLAP Database You can disable the OLAP database whenever you require it. Typically, you can disable this when you do not have any requirements to execute analytical queries and would prefer querying the primary Data Store alone. Your data from the primary Data Store will not be synchronized with the OLAP database when it is disabled. If you choose to re-enable it later again, Catalyst will synchronize the updated data then. To disable the OLAP database for your project: 1. From the **OLAP Database** tab in the Data Store, click the ellipsis icon in the window. Click **Disable**. <br /> 2. Click **Disable** in the confirmation pop-up window. <br /> <br> ### Querying on the OLAP Database When the OLAP database is enabled, you can execute queries on it the same way you execute queries on the primary Data Store with {{%link href="/en/cloud-scale/help/zcql/introduction/" %}}ZCQL{{%/link%}} programmatically. Catalyst auto-synchronizes data from the primary Data Store in real-time, so the queries will be run on the up-to date data from your tables. You can construct ZCQL queries and execute them using the Catalyst server-side SDKs ({{%link href="/en/sdk/java/v1/cloud-scale/zcql/execute-zcql-query/" %}}Java{{%/link%}}, {{%link href="/en/sdk/nodejs/v2/cloud-scale/zcql/get-component-instance/" %}}Node.js{{%/link%}}, {{%link href="/en/sdk/python/v1/cloud-scale/zcql/get-component-instance/" %}}Python{{%/link%}}) or the client-side SDKs ({{%link href="/en/sdk/web/v4/cloud-scale/zcql/get-component-instance/" %}}Web{{%/link%}}, {{%link href="/en/sdk/android/v2/cloud-scale/zcql/execute-zcql-query/" %}}Android{{%/link%}}, {{%link href="/en/sdk/ios/v2/cloud-scale/zcql/execute-zcql-query/" %}}iOS{{%/link%}}, {{%link href="/en/sdk/flutter/v2/cloud-scale/zcql/execute-zcql-query/" %}}Flutter{{%/link%}}), as well as our {{%link href="/en/api/code-reference/cloud-scale/zcql/execute-zcql-query/#ExecuteZCQLQuery" %}}REST API{{%/link%}}. Refer to the respective help pages for the syntax to execute queries on the OLAP database using these SDKs. Catalyst provides a **{{%link href="/en/cloud-scale/help/zcql/zcql-console/" %}}ZCQL console tool{{%/link%}}** that allows you to execute ZCQL queries on the data stored from the Data Store, in the Catalyst console. You can avail features like code-completion, code saver, ZCQL explorer to reuse saved queries, and more. You can choose to execute queries on the primary database or the OLAP database in the ZCQL console. Click the **ZCQL Console** tab in the Data Store, then click **OLAP DB** next to *Execute on*. You can now type in your analytical query and click **Execute Query**. <br /> The console will return the query result, that you can choose to view in a table format or the JSON format using the drop-down. <br /> Refer to the {{%link href="/en/cloud-scale/help/zcql/zcql-console/" %}}ZCQL console help section{{%/link%}} for details about the various features available in the console. --- ## API Reference — Data Store -------------------------------------------------------------------------------- title: "Insert New Row" description: "This API enables you to insert a new row of data or a record in a table in the Data Store." last_updated: "2026-03-18T07:41:08.545Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/data-store/insert-new-row/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/data-store/insert-new-row/" id="InsertNewRow" %}} {{%divtag class="LeftContent"%}} # Data Store {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Catalyst Data Store{{%/link%}} is a cloud-based relational database management system which stores the persistent data of your application in the form of tables. Data Store APIs enable you to insert and manage records in the tables of your project's Data Store, obtain table and column details, and even perform bulk read and bulk write actions. However, you can create a table and its schema only from the Catalyst console. # Insert a New Row In a Table ### Description This API enables you to 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 must pass the column names and their corresponding values for the record in a JSON array in the request as described below. {{%note%}}{{%bold class="bold-primary"%}}Note:{{%/bold%}} <br /> * The table and the columns in it must already be created. You can {{%link href="/en/cloud-scale/help/data-store/tables/#create-a-new-table"%}}create a table{{%/link%}} and the {{%link href="/en/cloud-scale/help/data-store/columns/#create-a-new-column"%}}columns{{%/link%}} for it from the console. * You will be able to insert upto 5000 records in each table per project in the {{%link href="/en/deployment-and-billing/environments/introduction/"%}}development environment{{%/link%}}. You can create upto 25,000 records overall in each project in the development environment. There are no upper limits for record creation in the production environment.{{%/note%}} ### Request Details #### Request URL {{%request class="apiyellow" req="POST" %}}<p>{api-domain}/baas/v1/project/{project_id}/table/{tableIdentifier}/row</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="tableIdentifier" data="Numerical" %}}The {{%link href="/en/cloud-scale/help/data-store/tables/#create-a-new-table"%}}unique ID{{%/link%}} of the table or table name{{%/request_id%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%bold class="bold-primary"%}}Content-Type:{{%/bold%}} application/json <br> {{%/scope%}} **Optional Headers** <br> {{%scope%}} **CATALYST-ORG:** {org_id} {{%/scope%}} {{%scope%}} **Environment:** Development {{%/scope%}} #### Scope {{%scope%}} ZohoCatalyst.tables.rows.CREATE {{%/scope%}} {{%note%}} {{%bold class="bold-primary"%}}Note:{{%/bold%}} This operation can also be executed with Catalyst user authentication permissions using Catalyst SDKs. Refer to the [Catalyst API Prerequisites section](/en/api/introduction/overview-and-prerequisites/#prerequisites) for details.{{%/note%}} #### Request JSON Array You must send the column names and their corresponding values in a **JSON array** like this: {{%code class="language-json line-numbers"%}} { "column1_name": "column1_value", "column2_name": "column2_value", "column3_name": "column3_value", . . }{{%/code%}} where {{%badge%}}column_name{{%/badge%}} is the name of a unique column in the table, and {{%badge%}}column_value{{%/badge%}} is its corresponding value in the record. <br> {{%note%}}{{%bold class="bold-primary"%}}Note:{{%/bold%}} You must send at least one column name and value pair to insert in the record. {{%/note%}} ### Response Details The response will contain the metadata of the row that was created such as its {{%badge%}}ROWID{{%/badge%}} and {{%badge%}}CREATEDTIME{{%/badge%}}, and the column key names and values that were inserted. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X POST \ https://api.catalyst.zoho.com/baas/v1/project/4000000006007/table/EmpDetails/row \ -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" \ -H "Content-Type:application/json" \ -d '[ { "Department_ID":"IT678", "Department_Name":"Marketing", "Employee_Name":"Robert Page" } ]' {{% /panel_without_adjustment %}} {{% panel_without_adjustment header="Sample Response" class="language-json line-numbers"%}} { "status": "success", "data": [ { "CREATORID": "12096000000003003", "MODIFIEDTIME": "2023-06-05 11:35:14:332", "Department_ID": null, "Employee_Name": "Robert Page", "Department_Name": "Marketing", "CREATEDTIME": "2023-06-05 11:35:14:332", "ROWID": 12096000000642928 } ] }{{% /panel_without_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/cloud-scale/data-store/insert-rows"%}}Insert Rows- Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/insert-rows"%}}Insert Rows- Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/cloud-scale/data-store/insert-rows"%}}Insert Rows- Python SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/web/v4/cloud-scale/data-store/insert-rows"%}}Insert Rows- Web SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Get All Rows" description: "his API enables you to fetch all the rows from a particular table in the Catalyst Data Store." last_updated: "2026-03-18T07:41:08.545Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/data-store/get-all-rows/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/data-store/get-all-rows/" id="GetAllRows" %}} {{%divtag class="LeftContent"%}} # Get All Rows In a Table ### Description This API enables you to fetch all the rows from a particular table in the {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}. You can refer to the table by its ID or name. The API incorporates pagination for fetching all rows. **Pagination** allows you to retrieve the records in pages through an iteration of API calls. For example, if you require the rows to be fetched in batches of 100 as individual pages, you must include a {{%badge%}}max_rows{{%/badge%}} parameter in your request, that specifies the maximum rows to be fetched in each page as 100. Additionally, every API response will contain a token that you can pass in the next API call, to fetch the next page of rows. This token authorizes the subsequent fetching of data. You must pass the token string obtained in the response of the previous API call through the {{%badge%}}next_token{{%/badge%}} parameter in the request. You need not pass the {{%badge%}}next_token{{%/badge%}} parameter for the first API call. You can execute an API call for each iteration in this manner and fetch all rows in pages. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/baas/v1/project/{project_id}/table/{tableIdentifier}/row?next_token={token_string}&max_rows={number_of_rows}</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="tableIdentifier" data="Numerical" %}}The {{%link href="/en/cloud-scale/help/data-store/tables/#create-a-new-table"%}}unique ID{{%/link%}} of the table or table name{{%/request_id%}} {{%request_id id="next_token" data="Numerical" %}} <p>(not required for the first API call) The token value obtained from the previous API call to be passed for fetching the next set of rows through pagination</p>{{%/request_id%}} {{%request_id id="max_rows" data="Numerical" %}} <p> (optional) The maximum number of rows that must be returned in a single page through pagination. The API will return 200 rows in a single page by default if this value is not specified.</p>{{%/request_id%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%/scope%}} **Optional Headers** <br> {{%scope%}} **CATALYST-ORG:** {org_id} {{%/scope%}} {{%scope%}} **Environment:** Development {{%/scope%}} #### Scope {{%scope%}} ZohoCatalyst.tables.rows.READ {{%/scope%}} {{%note%}} {{%bold class="bold-primary"%}}Note:{{%/bold%}} This operation can also be executed with Catalyst user authentication permissions using Catalyst SDKs. Refer to the [Catalyst API Prerequisites section](/en/api/introduction/overview-and-prerequisites/#prerequisites) for details.{{%/note%}} ### Response Details The response will return the rows that are fetched through the API call in pages based on the {{%badge%}}max_rows{{%/badge%}} value you specify. If there are rows available more than the requested count or the {{%badge%}}max_rows{{%/badge%}} count, the response will also contain the token that you must pass to fetch the next set of rows as {{%badge%}}next_token{{%/badge%}}. If there are no more records to be fetched, the response will not contain a token. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X GET \ https://api.catalyst.zoho.com/baas/v1/project/4000000006007/table/CustomerDetails/row?max_rows=4&next_token=************* \ -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" {{% /panel_without_adjustment %}} {{% panel_with_adjustment header="Sample Response (If more records available)" class="language-json line-numbers"%}} { "status": "success", "data": [ { "CREATORID": 56000000002003, "MODIFIEDTIME": "2019-03-06 10:16:41", "Department_ID": "IT148", "Department_Name": "Admin", "Employee_Name": "Eric Hyde", "CREATEDTIME": "2019-03-06 10:16:41", "ROWID": 56000000342025, "doubleDataType": null }, { "CREATORID": 56000000002003, "MODIFIEDTIME": "2019-03-06 10:18:56", "Department_ID": "IT170", "Department_Name": "Sales", "Employee_Name": "Steven Kelso", "CREATEDTIME": "2019-03-06 10:18:56", "ROWID": 56000000342026, "doubleDataType": null }, { "CREATORID": 56000000002003, "MODIFIEDTIME": "2019-03-06 10:19:00", "Department_ID": "IT190", "Department_Name": "Marketing", "Employee_Name": "Micheal Forman", "CREATEDTIME": "2019-03-06 10:18:58", "ROWID": 56000000342027, "doubleDataType": null }, { "CREATORID": 56000000002003, "MODIFIEDTIME": "2019-03-06 10:45:11", "Department_ID": "IT111", "Department_Name": "Support", "Employee_Name": "Madeline Burkhart", "CREATEDTIME": "2019-03-06 10:18:34", "ROWID": 56000000342028, "doubleDataType": null }, ], "more_records" : true, "next_token" : "{{token}}" }{{% /panel_with_adjustment %}} {{% panel_with_adjustment header="Sample Response (If no more records available)" class="language-json line-numbers"%}} { "status": "success", "data": [ { "CREATORID": 56000000002003, "MODIFIEDTIME": "2019-03-06 10:16:41", "Department_ID": "IT148", "Department_Name": "Admin", "Employee_Name": "Eric Hyde", "CREATEDTIME": "2019-03-06 10:16:41", "ROWID": 56000000342025, "doubleDataType": null }, { "CREATORID": 56000000002003, "MODIFIEDTIME": "2019-03-06 10:18:56", "Department_ID": "IT170", "Department_Name": "Sales", "Employee_Name": "Steven Kelso", "CREATEDTIME": "2019-03-06 10:18:56", "ROWID": 56000000342026, "doubleDataType": null }, { "CREATORID": 56000000002003, "MODIFIEDTIME": "2019-03-06 10:19:00", "Department_ID": "IT190", "Department_Name": "Marketing", "Employee_Name": "Micheal Forman", "CREATEDTIME": "2019-03-06 10:18:58", "ROWID": 56000000342027, "doubleDataType": null }, { "CREATORID": 56000000002003, "MODIFIEDTIME": "2019-03-06 10:45:11", "Department_ID": "IT111", "Department_Name": "Support", "Employee_Name": "Madeline Burkhart", "CREATEDTIME": "2019-03-06 10:18:34", "ROWID": 56000000342028, "doubleDataType": null }, ], "more_records" : false }{{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/cloud-scale/data-store/get-rows"%}}Get Rows- Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-rows"%}}Get Rows- Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-rows"%}}Get Rows- Python SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-rows"%}}Get Rows- Web SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Update Row" description: "This API enables you to update a particular row in a table in the Data Store." last_updated: "2026-03-18T07:41:08.545Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/data-store/update-row/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/data-store/update-row/" id="UpdateRow" %}} {{%divtag class="LeftContent"%}} # Update a Row in a Table ### Description This API enables you to update a particular row in a table in the {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Catalyst Data Store{{%/link%}}, by referring to its table ID or the table name. You must send the data to be updated in the record in the request JSON as described below. ### Request Details #### Request URL {{%request class="apiblue" req="PUT" %}}<p>{api-domain}/baas/v1/project/{project_id}/table/{tableIdentifier}/row</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="tableIdentifier" data="Numerical" %}}The {{%link href="/en/cloud-scale/help/data-store/tables/#create-a-new-table"%}}unique ID{{%/link%}} of the table or table name{{%/request_id%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%bold class="bold-primary"%}}Content-Type:{{%/bold%}} application/json <br> {{%/scope%}} **Optional Headers** <br> {{%scope%}} **CATALYST-ORG:** {org_id} {{%/scope%}} {{%scope%}} **Environment:** Development {{%/scope%}} #### Scope {{%scope%}} ZohoCatalyst.tables.rows.UPDATE {{%/scope%}} {{%note%}} {{%bold class="bold-primary"%}}Note:{{%/bold%}} This operation can also be executed with Catalyst user authentication permissions using Catalyst SDKs. Refer to the [Catalyst API Prerequisites section](/en/api/introduction/overview-and-prerequisites/#prerequisites) for details.{{%/note%}} #### Request JSON Format You must send the names of the columns and their corresponding values to be updated in the request, along with the ROWID of the record, as a **JSON Array** like this: {{%code class="language-json line-numbers"%}} { "column1_name": "column1_value", "column2_name": "column2_value", "column3_name": "column3_value", . . "*ROWID*":{row_id of the record} } {{%/code%}} #### Request JSON Properties {{% nested_fields children="open" border="yes" expandable="no" title="column_name" textformat="string" condition="mandatory" maxlength=" " %}} Specifies the column name of the specified table {{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="column_value" textformat="string" condition="mandatory" maxlength=" " %}} Specifies the value for the column {{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="ROWID" textformat="bigint" condition="mandatory" maxlength="" %}} The ROWID of the record to be updated {{% /nested_fields %}} ### Response Details The response will contain the metadata of the row that was updated such as its {{%badge%}}ROWID{{%/badge%}} and {{%badge%}}CREATEDTIME{{%/badge%}}, and the updated column key names and values. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X PUT \ https://api.catalyst.zoho.com/baas/v1/project/4000000006007/table/EmpDetails/row \ -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" \ -H "Content-Type:application/json" \ -d '[ { "Department_Name":"Finance", "Employee_Name":"Morgan Jones", "ROWID":3376000000170191 } ]' {{% /panel_without_adjustment %}} {{% panel_without_adjustment header="Sample Response" class="language-json line-numbers"%}} { "status": "success", "data": [ { "CREATORID": 3376000000002099, "MODIFIEDTIME": "2019-02-26 11:18:49", "Department_ID":"IT245", "Department_Name":"Finance", "Employee_Name": "Morgan Jones", "CREATEDTIME": "2019-02-26 11:18:49", "ROWID": 3376000000170191 } ] }{{% /panel_without_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/cloud-scale/data-store/update-rows"%}}Update Rows- Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/update-rows"%}}Update Rows- Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/cloud-scale/data-store/update-rows"%}}Update Rows- Python SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/web/v4/cloud-scale/data-store/update-rows"%}}Update Rows- Web SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Delete Row" description: "This API enables you to delete a particular record or a row of a table in the Data Store." last_updated: "2026-03-18T07:41:08.545Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/data-store/delete-row/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/data-store/delete-row/" id="DeleteRow" %}} {{%divtag class="LeftContent"%}} # Delete a Row in a Table ### Description This API enables you to delete a particular record or a row of a table in the {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}, by referring to the table's unique ID or name. The row is referred by its ROWID. ### Request Details #### Request URL {{%request class="apired" req="DELETE" %}}<p>{api-domain}/baas/v1/project/{project_id}/table/{tableIdentifier}/row/{row_id}</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="tableIdentifier" data="Numerical" %}}The {{%link href="/en/cloud-scale/help/data-store/tables/#create-a-new-table"%}}unique ID{{%/link%}} of the table or table name{{%/request_id%}} {{%request_id id="row_id" data="Numerical" %}}The {{%link href="/en/cloud-scale/help/data-store/records/"%}}unique ID{{%/link%}} of the row{{%/request_id%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%/scope%}} **Optional Headers** <br> {{%scope%}} **CATALYST-ORG:** {org_id} {{%/scope%}} {{%scope%}} **Environment:** Development {{%/scope%}} #### Scope {{%scope%}} ZohoCatalyst.tables.rows.DELETE {{%/scope%}} {{%note%}} {{%bold class="bold-primary"%}}Note:{{%/bold%}} This operation can also be executed with Catalyst user authentication permissions using Catalyst SDKs. Refer to the [Catalyst API Prerequisites section](/en/api/introduction/overview-and-prerequisites/#prerequisites) for details.{{%/note%}} ### Response Details The response will contain the metadata of the row that was deleted such as its {{%badge%}}ROWID{{%/badge%}} and {{%badge%}}CREATEDTIME{{%/badge%}}, and the column key names and values in the row. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X DELETE \ https://api.catalyst.zoho.com/baas/v1/project/4000000006007/table/EmpDetails/row/3376000000171021 \ -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" {{% /panel_without_adjustment %}} {{% panel_without_adjustment header="Sample Response" class="language-json line-numbers"%}} { "status": "success", "data": { "CREATORID": 56000000002003, "MODIFIEDTIME": "2019-02-26 11:18:49", "Department_ID": "IT809" "Department_Name": "Accounting", "Customer_Name": "Jason Pierre", "CREATEDTIME": "2019-02-26 11:18:49", "ROWID": 3376000000171021, "doubleDataType": null } }{{% /panel_without_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/cloud-scale/data-store/delete-row"%}}Delete a Row- Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/delete-row"%}}Delete a Row- Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/cloud-scale/data-store/delete-row"%}}Delete a Row- Python SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/web/v4/cloud-scale/data-store/delete-row/"%}}Delete a Row- Web SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Get Table Metadata" description: "This API enables you to retrieve the metadata of a specific table from the Data Store." last_updated: "2026-03-18T07:41:08.545Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/data-store/get-table-metadata/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/data-store/get-table-metadata/" id="GetTableMetadata" %}} {{%divtag class="LeftContent"%}} # Get the Metadata of a Specific Table ### Description This API enables you to retrieve the metadata of a specific table from the {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}, by referring to the table's unique ID or name. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/baas/v1/project/{project_id}/table/{tableIdentifier}</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="tableIdentifier" data="Numerical" %}}The {{%link href="/en/cloud-scale/help/data-store/tables/#create-a-new-table"%}}unique ID{{%/link%}} of the table or table name{{%/request_id%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%/scope%}} **Optional Headers** <br> {{%scope%}} **CATALYST-ORG:** {org_id} {{%/scope%}} {{%scope%}} **Environment:** Development {{%/scope%}} #### Scope {{%scope%}} ZohoCatalyst.tables.READ {{%/scope%}} ### Response Details The response will return the metadata of the table which will include the table details such as the {{%badge%}}table_id{{%/badge%}} and {{%badge%}}table_name{{%/badge%}}, and the metadata of all the columns in it such as the {{%badge%}}column_id{{%/badge%}}, {{%badge%}}column_name{{%/badge%}}, and {{%badge%}}data_type{{%/badge%}} of each column. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X GET \ https://api.catalyst.zoho.com/baas/v1/project/4000000006007/table/EmpDetails \ -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" {{% /panel_without_adjustment %}} {{% panel_with_adjustment header="Sample Response" class="language-json line-numbers"%}} { "status": "success", "data": { "table_id": 56000000111778, "project_id": { "id": 4000000006007, "project_name": "HRApp" }, "table_name": "EmpDetails", "modified_by": { "is_confirmed":true, "zuid": 1019540152, "user_id": 671930455, "email_id": "emma@zylker.com", "first_name": "Amelia", "last_name": "Burrows" }, "modified_time": "2019-02-19T02:45:16+05:30", "column_details": [ { "table_id": 56000000111778, "column_sequence": 1, "column_id": 23400091030, "column_name": "ROWID", "category": 1, "data_type": "bigint", "is_read_only": false, "max_length": 50, "is_mandatory": false, "default_value": "250", "decimal_digits": 2, "is_unique": false, "search_index_enabled": false }, { "table_id": 56000000111778, "column_sequence": 1, "column_id": 23400091031, "column_name": "CREATORID", "category": 1, "data_type": "bigint", "is_read_only": false, "max_length": 50, "is_mandatory": false, "default_value": "250", "decimal_digits": 2, "is_unique": false, "search_index_enabled": true }, { "table_id": 56000000111778, "column_sequence": 1, "column_id": 23400091032, "column_name": "CREATEDTIME", "category": 1, "data_type": "datetime", "is_read_only": false, "max_length": 50, "is_mandatory": false, "default_value": "250", "decimal_digits": 2, "is_unique": false, "search_index_enabled": true }, { "table_id": 56000000111778, "column_sequence": 1, "column_id": 23400091033, "column_name": "MODIFIEDTIME", "category": 1, "data_type": "datetime", "is_read_only": false, "max_length": 50, "is_mandatory": false, "default_value": "250", "decimal_digits": 2, "is_unique": false, "search_index_enabled": true } { "table_id": 56000000111778, "column_sequence": 1, "column_id": 23400091034, "column_name": "EmpID", "category": 1, "data_type": "varchar", "is_read_only": false, "max_length": 6, "is_mandatory": true, "default_value": "", "decimal_digits": , "is_unique": true, "search_index_enabled": true } { "table_id": 56000000111778, "column_sequence": 1, "column_id": 23400091035, "column_name": "EmpName", "category": 1, "data_type": "varchar", "is_read_only": false, "max_length": 30, "is_mandatory": true, "default_value": "", "decimal_digits": , "is_unique": false, "search_index_enabled": false } { "table_id": 56000000111778, "column_sequence": 1, "column_id": 23400091036, "column_name": "DeptName", "category": 1, "data_type": "varchar", "is_read_only": false, "max_length": 30, "is_mandatory": true, "default_value": "", "decimal_digits": , "is_unique": false, "search_index_enabled": false } ], "table_scope": "ORG" } }{{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/cloud-scale/data-store/get-table-meta"%}}Get Table Metadata- Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-meta"%}}Get Table Metadata- Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-meta"%}}Get Table Metadata- Python SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-table-meta"%}}Get Table Metadata- Web SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Get All Tables Metadata" description: "This API enables you to retrieve the metadata of all the tables in your project from the Data Store." last_updated: "2026-03-18T07:41:08.546Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/data-store/get-all-tables-metadata/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/data-store/get-all-tables-metadata/" id="GetAllTablesMetadata" %}} {{%divtag class="LeftContent"%}} # Get the Metadata of All Tables ### Description This API enables you to retrieve the metadata of all the tables in your project from the {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/baas/v1/project/{project_id}/table</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%/scope%}} **Optional Headers** <br> {{%scope%}} **CATALYST-ORG:** {org_id} {{%/scope%}} {{%scope%}} **Environment:** Development {{%/scope%}} #### Scope {{%scope%}} ZohoCatalyst.tables.READ {{%/scope%}} ### Response Details The response will return the metadata of all the tables which will include the table details such as the {{%badge%}}table_id{{%/badge%}} and {{%badge%}}table_name{{%/badge%}} of each table, and the details of the user that last modified the tables. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X GET \ https://api.catalyst.zoho.com/baas/v1/project/4000000006007/table \ -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" {{% /panel_without_adjustment %}} {{% panel_with_adjustment header="Sample Response" class="language-json line-numbers"%}} { "status":"success", "data":[ { "project_id":{ "project_name":"ShipmentTracking", "id":4000000006007 }, "table_name":"CustomerInfo", "modified_by":{ "zuid":1019540152, "is_confirmed":true, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_id":671930111 }, "modified_time":"Apr 11, 2020 10:33 PM", "table_id":3376000000081234 }, { "project_id":{ "project_name":"ShipmentTracking", "id":3376000000061190 }, "table_name":"EmpInfo", "modified_by":{ "zuid":1019540232, "is_confirmed":true, "email_id":"p.boyle@zylker.com", "first_name":"Patricia", "last_name":"Boyle", "user_id":671930455 }, "modified_time":"Mar 09, 2020 03:16 AM", "table_id":3376000000017896 } ] }{{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/cloud-scale/data-store/get-table-meta"%}}Get Table Metadata- Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-meta"%}}Get Table Metadata- Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-meta"%}}Get Table Metadata- Python SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-table-meta"%}}Get Table Metadata- Web SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Get Column Metadata" description: "This API enables you to retrieve the metadata of a specific column in a table in the Data Store." last_updated: "2026-03-18T07:41:08.546Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/data-store/get-column-metadata/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/data-store/get-column-metadata/" id="GetColumnMetadata" %}} {{%divtag class="LeftContent"%}} # Get the Metadata of a Specific Column ### Description This API enables you to retrieve the metadata of a specific column in a table in the {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}. The table is referred by its unique ID or name, and the column is referred by the column ID. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/baas/v1/project/{project_id}/table/{tableIdentifier}/column/{column_id}</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="tableIdentifier" data="Numerical" %}}The {{%link href="/en/cloud-scale/help/data-store/tables/#create-a-new-table"%}}unique ID{{%/link%}} of the table or table name{{%/request_id%}} {{%request_id id="column_id" data="Numerical" %}}The {{%link href="/en/cloud-scale/help/data-store/columns/#create-a-new-column"%}}unique ID{{%/link%}} of the column{{%/request_id%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%/scope%}} **Optional Headers** <br> {{%scope%}} **CATALYST-ORG:** {org_id} {{%/scope%}} {{%scope%}} **Environment:** Development {{%/scope%}} #### Scope {{%scope%}} ZohoCatalyst.tables.columns.READ {{%/scope%}} ### Response Details The response will return the metadata of the specific column such as its {{%badge%}}column_id{{%/badge%}}, {{%badge%}}column_name{{%/badge%}}, and {{%badge%}}data_type{{%/badge%}}. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X GET \ https://api.catalyst.zoho.com/baas/v1/project/4000000006007/table/EmpDetails/column/4000000042018 \ -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" {{% /panel_without_adjustment %}} {{% panel_without_adjustment header="Sample Response" class="language-json line-numbers"%}} { "status": "success", "data": { "table_id": 56000000118, "column_sequence": 3, "column_id": 4000000042018, "column_name": "Department", "category": 2, "data_type": "text", "is_read_only": false, "max_length": 100, "is_mandatory": true, "default_value": "Admin", "is_unique": false, "search_index_enabled": false } }{{% /panel_without_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/cloud-scale/data-store/get-column-meta"%}}Get Column Metadata- Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-column-meta"%}}Get Column Metadata- Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-column-meta"%}}Get Column Metadata- Python SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-column-meta"%}}Get Column Metadata- Web SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Get All Columns Metadata" description: "This API enables you to retrieve the metadata of all the columns in a table in the Data Store." last_updated: "2026-03-18T07:41:08.546Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/data-store/get-all-columns-metadata/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/data-store/get-all-columns-metadata/" id="GetAllColumnsMetadata" %}} {{%divtag class="LeftContent"%}} # Get the Metadata of All Columns ### Description This API enables you to retrieve the metadata of all the columns in a table in the {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}, by referring to the table's unique ID or name. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/baas/v1/project/{project_id}/table/{tableIdentifier}/column</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="tableIdentifier" data="Numerical" %}}The {{%link href="/en/cloud-scale/help/data-store/tables/#create-a-new-table"%}}unique ID{{%/link%}} of the table or table name{{%/request_id%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%/scope%}} **Optional Headers** <br> {{%scope%}} **CATALYST-ORG:** {org_id} {{%/scope%}} {{%scope%}} **Environment:** Development {{%/scope%}} #### Scope {{%scope%}} ZohoCatalyst.tables.columns.READ {{%/scope%}} ### Response Details The response will return the metadata of all columns such as the {{%badge%}}column_id{{%/badge%}}, {{%badge%}}column_name{{%/badge%}}, and {{%badge%}}data_type{{%/badge%}} of each column. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X GET \ https://api.catalyst.zoho.com/baas/v1/project/4000000006007/table/EmpDetails/column \ -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" {{% /panel_without_adjustment %}} {{% panel_with_adjustment header="Sample Response" class="language-json line-numbers"%}} { "status":"success", "data":[ { "table_id":829000000037723, "column_sequence":1, "column_name":"ROWID", "category":1, "data_type":"bigint", "is_read_only":false, "max_length":50, "is_mandatory":false, "decimal_digits":2, "is_unique":false, "search_index_enabled":false, "column_id":829000000037726 }, { "table_id":829000000037723, "column_sequence":2, "column_name":"CREATORID", "category":1, "data_type":"bigint", "is_read_only":false, "max_length":50, "is_mandatory":false, "decimal_digits":2, "is_unique":false, "search_index_enabled":true, "column_id":829000000037728 }, { "table_id":829000000037723, "column_sequence":3, "column_name":"CREATEDTIME", "category":1, "data_type":"datetime", "is_read_only":false, "max_length":50, "is_mandatory":false, "decimal_digits":2, "is_unique":false, "search_index_enabled":true, "column_id":829000000037730 }, { "table_id":829000000037723, "column_sequence":4, "column_name":"MODIFIEDTIME", "category":1, "data_type":"datetime", "is_read_only":false, "max_length":50, "is_mandatory":false, "decimal_digits":2, "is_unique":false, "search_index_enabled":true, "column_id":829000000037732 }, { "table_id":829000000037723, "column_sequence":5, "column_name":"EmpID", "category":2, "data_type":"bigint", "is_read_only":false, "max_length":15, "is_mandatory":true, "decimal_digits":2, "is_unique":true, "search_index_enabled":false, "column_id":829000000038445 }, { "table_id":829000000037723, "column_sequence":6, "column_name":"EmpName", "category":2, "data_type":"text", "is_read_only":false, "max_length":50, "is_mandatory":true, "decimal_digits":2, "is_unique":false, "search_index_enabled":false, "column_id":829000000038450 } ] }{{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/cloud-scale/data-store/get-column-meta"%}}Get Column Metadata- Java SDK{{%/link%}}</br></br> {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-column-meta"%}}Get Column Metadata- Node.js SDK{{%/link%}}</br></br> {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-column-meta"%}}Get Column Metadata- Python SDK{{%/link%}}</br></br> {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-column-meta"%}}Get Column Metadata- Web SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Truncate Table" description: "This API enables you to truncate a specific table in the Data Store." last_updated: "2026-03-18T07:41:08.546Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/data-store/truncate-table/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/data-store/truncate-table/" id="TruncateTable" %}} {{%divtag class="LeftContent"%}} # Truncate a Table ### Description This API enables you to truncate a specific table in the {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}, by referring to the table's unique ID or name. The truncate operation deletes all the records in the table, while retaining its schema. The columns of the table and the table's metadata will still be available, after the operation has ended. You will receive notifications in your Catalyst console about the updates of the operation. ### Request Details #### Request URL {{%request class="apired" req="DELETE" %}}<p>{api-domain}/baas/v1/project/{project_id}/table/{tableIdentifier}/truncate</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="tableIdentifier" data="Numerical" %}}The {{%link href="/en/cloud-scale/help/data-store/tables/#create-a-new-table"%}}unique ID{{%/link%}} of the table or table name{{%/request_id%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%/scope%}} **Optional Headers** <br> {{%scope%}} **CATALYST-ORG:** {org_id} {{%/scope%}} {{%scope%}} **Environment:** Development {{%/scope%}} #### Scope {{%scope%}} ZohoCatalyst.tables.rows.DELETE {{%/scope%}} ### Response Details The response will return the status of the truncate operation. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X DELETE \ https://api.catalyst.zoho.com/baas/v1/project/4000000006007/table/NewsHeadlines/truncate \ -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" {{% /panel_without_adjustment %}} {{% panel_without_adjustment header="Sample Response" class="language-json line-numbers"%}} { "status": "success", "data": "The table will be truncated Shortly. Kindly Check Notification bar for updates" }{{% /panel_without_adjustment %}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Bulk Delete Rows" description: "This API enables you to delete records or rows of data in bulk from a specific table in the Data Store." last_updated: "2026-03-18T07:41:08.546Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/data-store/bulk-delete-rows/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/data-store/bulk-delete-rows/" id="BulkDeleteRows" %}} {{%divtag class="LeftContent"%}} # Bulk Delete Rows in a Table ### Description This API enables you to delete records or rows of data in bulk from a specific table in the {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}. The table is referred by its unique ID or name. The bulk delete operation can delete a maximum of 200 rows in a single API call. You can choose the rows to be deleted by passing the unique ROWIDs of those rows as params in the request URL, as shown in the sample request. You must include at least one ROWID, and can include upto 200 ROWIDs, in the request. ### Request Details #### Request URL {{%request class="apired" req="DELETE" %}}<p>{api-domain}/baas/v1/project/{project_id}/table/{tableIdentifier}/row?ids={rowID_1},{rowID_2},{rowID_3}</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="tableIdentifier" data="Numerical" %}}The {{%link href="/en/cloud-scale/help/data-store/tables/#create-a-new-table"%}}unique ID{{%/link%}} of the table or table name{{%/request_id%}} {{%request_id id="ids" data="Numerical" %}}The Row IDs of the records to be deleted as params. Multiple Row IDs must be separated by commas. The parameter key name must be {{%badge%}}ids{{%/badge%}}{{%/request_id%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%/scope%}} **Optional Headers** <br> {{%scope%}} **CATALYST-ORG:** {org_id} {{%/scope%}} {{%scope%}} **Environment:** Development {{%/scope%}} #### Scope {{%scope%}} ZohoCatalyst.tables.rows.DELETE {{%/scope%}} ### Response Details The response contains the data of all the rows that were deleted through the operation, including their metadata like the{{%badge%}}ROWID{{%/badge%}} and {{%badge%}}CREATEDTIME{{%/badge%}}, and the column key names and values in each row. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X DELETE \ https://api.catalyst.zoho.com/baas/v1/project/4000000006007/table/EmpDetails/row?ids=1028000000171815,1028000000171810,1028000000171805,1028000000171617 \ -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" {{% /panel_without_adjustment %}} {{% panel_with_adjustment header="Sample Response" class="language-json line-numbers"%}} { "status": "success", "data": [ { "CREATORID": "1444000000003001", "MODIFIEDTIME": "2020-11-19 15:20:21:830", "Department_ID":"IT245", "Department_Name":"Finance", "Employee_Name": "Morgan Jones", "CREATEDTIME": "2020-11-19 15:20:21:830", "ROWID": "1028000000171815" }, { "CREATORID": "1444000000003001", "MODIFIEDTIME": "2020-11-19 15:20:34:503", "Department_ID":"IT121", "Department_Name":"HR", "Employee_Name": "Leena Medley", "CREATEDTIME": "2020-11-19 15:20:34:503", "ROWID": "1028000000171810" }, { "CREATORID": "1444000000003001", "MODIFIEDTIME": "2020-11-19 15:20:42:314", "Department_ID":"IT783", "Department_Name":"Marketing", "Employee_Name": "Tamira Shah", "CREATEDTIME": "2020-11-19 15:20:42:314", "ROWID": "1028000000171805" }, { "CREATORID": "1444000000003001", "MODIFIEDTIME": "2020-11-19 15:20:42:314", "Department_ID":"IT098", "Department_Name":"Sales", "Employee_Name": "Julia McGregor", "CREATEDTIME": "2020-11-19 15:20:42:314", "ROWID": "1028000000171617" } ] } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/cloud-scale/data-store/bulk-delete-rows"%}}Bulk Delete Rows- Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/bulk-delete-rows"%}}Bulk Delete Rows- Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/cloud-scale/data-store/bulk-delete-rows"%}}Bulk Delete Rows- Python SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/web/v4/cloud-scale/data-store/bulk-delete-rows"%}}Bulk Delete Rows- Web SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} ### Bulk Read Rows -------------------------------------------------------------------------------- title: "Create Bulk Read Job" description: "This API triggers the bulk read operation to obtain records from a table in the Data Store in bulk" last_updated: "2026-03-18T07:41:08.546Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/data-store/bulk-read-rows/create-bulk-read-job/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/data-store/bulk-read-rows/create-bulk-read-job/" id="CreateBulkReadJob" %}} {{%divtag class="LeftContent"%}} # Bulk Read Records The Bulk Read operation can read thousands of records from a specific table in the {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} and generate a CSV file containing the results of the read operation, if the job is successful. This data-intense operation can be performed in a single API execution. Catalyst supports three APIs for the bulk read operation: a Create Bulk Read API, a {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-read-rows/create-bulk-read-job/#CheckBulkReadStatus"%}}Check Bulk Read Status API{{%/link%}} to check the status of the job execution manually, and a {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-read-rows/create-bulk-read-job/#DownloadBulkReadResult"%}}Download Bulk Read Result API{{%/link%}} to download the results. You can also configure a callback URL to enable the automatic posting of the job status responses in it. {{%note%}}{{%bold class="bold-primary"%}}Note:{{%/bold%}} You can also perform Bulk Read operation using the Catalyst CLI. Refer to {{%link href="/en/cli/v1/data-store-import-and-export/introduction/"%}}Data Store Import and Export CLI documentation{{%/link%}}.{{%/note%}} # Create a Bulk Read Job ### Description This API triggers the bulk read operation to obtain the records from the table in the Data Store, that match the criteria you specify in the input JSON. The table is referred to using its unique table ID or the table name. ### Request Details #### Request URL {{%request class="apiyellow" req="POST" %}}<p>{api-domain}/baas/v1/project/{projectId}/bulk/read</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} {{%/scope%}} **Optional Headers** <br> {{%scope%}} **CATALYST-ORG:** {org_id} {{%/scope%}} {{%scope%}} **Environment:** Development {{%/scope%}} #### Scope {{%scope%}} ZohoCatalyst.tables.bulk.READ {{%/scope%}} #### Request JSON Properties The input for the Bulk Read API request must be sent in a JSON format. The request parameters are explained below. {{% nested_fields children="open" border="yes" expandable="no" title="table_identifier" textformat="string" condition="mandatory" maxlength=" " %}} The {{%link href="/en/cloud-scale/help/data-store/tables/#create-a-new-table"%}}unique ID{{%/link%}} of the table or the table name. You can obtain the table ID from Data Store or from the URL when the table is opened in the console. {{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="yes" title="query" textformat="json" condition="optional" maxlength=" " %}} The section where you can define the conditions and criteria for the bulk read job {{% nested_button%}} {{%request_id%}}{{% nested_fields children="open" border="no" expandable="no" title="page" textformat="numerical" condition="optional" maxlength="" %}} The CSV file generated as the result of the bulk read process contains two hundred thousand/two lakh records in one page. Page value '1' indicates that the first two hundred thousand records matching your query will get exported. You can fetch subsequent records by increasing the page value. For example, if you want to fetch records from the range 2,00,001 to 4,00,000, then you must specify the page value as '2'. Default value: 1 {{% /nested_fields %}} {{%/request_id%}} {{%request_id%}}{{% nested_fields children="open" border="no" expandable="no" title="select_columns" textformat="array" condition="optional" maxlength="" %}} Specific columns in the records that need to be fetched from the table. If you do not specify the columns, all columns will be selected and fetched. <br> You can include multiple columns in an array. Refer to the sample request code window. {{% /nested_fields %}} {{%/request_id%}} {{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="yes" title="criteria" textformat="json" condition="optional" maxlength=" " %}} A set of conditions based on which the records will be fetched {{% nested_button%}} {{%request_id%}}{{% nested_fields children="open" border="no" expandable="no" title="group_operator" textformat="string" condition="mandatory (if specifying criteria)" maxlength="" %}}The operator that will bind the criteria groups together. <br> Supported Operators: {{%badge%}}AND{{%/badge%}}, {{%badge%}}OR{{%/badge%}} <br> If you define two or more criteria groups, you can use the {{%badge%}}AND{{%/badge%}} or the {{%badge%}}OR{{%/badge%}} operator in your request. For example, you can specify a criteria like "column1 equal value 1 AND column2 contains value 2" in the format specified in the previous section. <br> {{%note%}}{{%bold class="bold-primary"%}}Note:{{%/bold%}} You will not be able to use combinations of both the operators in a single API request. You can either use {{%badge%}}AND{{%/badge%}} or {{%badge%}}OR{{%/badge%}} in one request.{{%/note%}}{{% /nested_fields %}} {{%/request_id%}} {{% nested_fields children="open" border="no" expandable="yes" title="group" textformat="json" condition="mandatory (if specifying criteria)" maxlength="" %}}You can include upto 25 criteria sets in this section. The example shows 3 criteria sets. <br> {{%note%}}{{%bold class="bold-primary"%}}Note:{{%/bold%}} You can include only one overall group with one group operator in a single API request.{{%/note%}} {{% nested_button%}} {{%request_id%}}{{% nested_fields children="open" border="no" expandable="no" title="column_name" textformat="string" condition="mandatory (if specifying criteria)" maxlength="" %}}Name of the specific column from the table that the criteria should be defined for{{% /nested_fields %}} {{%/request_id%}} {{%request_id%}}{{% nested_fields children="open" border="no" expandable="no" title="comparator" textformat="string" condition="mandatory (if specifying criteria)" maxlength="" %}}The comparison operator that matches the column name with the criteria value <br> Supported Comparators: {{%badge%}}equal{{%/badge%}}, {{%badge%}}not_equal{{%/badge%}}, {{%badge%}}greater_than{{%/badge%}}, {{%badge%}}greater_equal{{%/badge%}}, {{%badge%}}less_than{{%/badge%}}, {{%badge%}}less_equal{{%/badge%}}, {{%badge%}}starts_with{{%/badge%}}, {{%badge%}}ends_with{{%/badge%}}, {{%badge%}}contains{{%/badge%}}, {{%badge%}}not_contains{{%/badge%}}, {{%badge%}}in{{%/badge%}}, {{%badge%}}not_in{{%/badge%}}, {{%badge%}}between{{%/badge%}}, {{%badge%}}not_between{{%/badge%}} <br> {{%note%}}{{%bold class="bold-primary"%}}Note:{{%/bold%}}<br> * You can specify multiple values for in and not_in comparators, separated by commas. * Catalyst supports only the equal comparator for an encrypted column. You will not be able to use other comparators as the criteria for an encrypted column.{{% /nested_fields %}} {{%/request_id%}}{{%/note%}} {{%request_id%}}{{% nested_fields children="open" border="no" expandable="no" title="value" textformat="string" condition="mandatory (if specifying criteria)" maxlength="" %}}The value for the specific column in the record that you require to be defined as a criteria{{% /nested_fields %}} {{%/request_id%}} {{% /nested_fields %}} {{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="yes" title="callback" textformat="json" condition="optional" maxlength="" %}} The section where you can define the properties of the callback URL, where automatic JSON responses of the job statuses will be sent to {{% nested_button%}} {{%request_id%}}{{% nested_fields children="open" border="no" expandable="no" title="url" textformat="string" condition="mandatory (if specifying callback)" maxlength="" %}} The URL where the automatic responses will be sent to using the HTTP POST method, each time the job status changes. Information about the job details will be contained in the body of the JSON response. <br> If you don't configure a callback URL, you must manually check the status of the job processing when you need, using the [Check Bulk Read Status API](/en/api/code-reference/cloud-scale/data-store/bulk-read-rows/check-bulk-read-status/#CheckBulkReadStatus). {{% /nested_fields %}} {{%/request_id%}} {{%request_id%}}{{% nested_fields children="open" border="no" expandable="no" title="headers" textformat="string" condition="optional" maxlength="" %}} Headers that you require to be passed in the JSON response to the callback URL. <br> You must specify the headers as:<br> *{* <br> *"{header_name_1}" : "{header_value_1}",*<br> *"{header_name_2}" : "{header_value_2}"*<br> *}* <br> and so on. Refer to the sample request code. {{% /nested_fields %}} {{%/request_id%}} {{%request_id%}}{{% nested_fields children="open" border="no" expandable="no" title="params" textformat="string" condition="optional" maxlength="" %}} Parameters that you require to be appended to the callback URL <br> You must specify the parameters as:<br> *{* <br> *"{param_name_1}" : "{param_value_1}",*<br> *"{param_name_2}" : "{param_value_2}"*<br> *}* <br> and so on. Refer to the sample request code. {{% /nested_fields %}} {{%/request_id%}} {{% /nested_fields %}} ### Response Details There are three job processing states which will generate three different responses: * **In-Progress:** When you execute the API, Catalyst will immediately and automatically send you a response indicating that the job execution is in progress. If you have configured a callback URL in the request, the response will also be posted to the URL in the format you defined. The response will contain a {{%badge%}}job_id parameter{{%/badge%}} which you can use to {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-read-rows/create-bulk-read-job/#CheckBulkReadStatus"%}}check the status of the job execution{{%/link%}} for subsequent responses, if you have not configured a callback URL. * **Success:** The success state response will contain a download URL, where you can {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-read-rows/check-bulk-read-status/#DownloadBulkReadResult"%}}download a CSV file{{%/link%}} that contains the records matching your query. If you have not configured a callback URL, this response will not be sent by Catalyst automatically. * **Failed:** The failed state response will contain a description of the error occurred and the details. If you have not configured a callback URL, this response will not be sent by Catalyst automatically. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X POST \ https://api.catalyst.zoho.com/baas/v1/project/4000000006007/bulk/read \ -H "Authorization: Zoho-oauthtoken 1000.910***************************16.2f****************************57" \ -d '{ "table_identifier": "EmpDetails", "query" : { "page" : "1", "select_columns" : [ "EmpID", "EmpName", "Department" ], "criteria": { "group_operator": "or", "group": [ { "column_name": "Department", "comparator": "equal", "value": "Marketing" } , { "column_name": "EmpID", "comparator": "greater_than", "value": "1000" } , { "column_name": "EmpName", "comparator": "starts_with", "value": "S" } ] } }, "callback" : { "url" : "https://hr.zylker.com/en/EmpRecords/_callback.php", "headers" : { "src" : "ZCatalyst", "operation" : "bulkreadAPI" }, "params" : { "project_name" : "EmployeeDatabase" } } }' {{% /panel_without_adjustment %}} {{% panel_with_adjustment header="Sample Response: Job in Progress" class="language-json line-numbers"%}} { "status": "success", "data": { "job_id": 2000000118004, "status": "In-Progress", "operation": "read", "project_details": { "project_name": "ShipmentTracking", "id": 4000000006007 }, "query": [ { "table_id": 3376000000165541, "details": { "page": "1" } } ], "callback": { "url": "https://hr.zylker.com/en/EmpRecords/_callback.php", "headers": { "src" : "ZCatalyst", "operation" : "bulkreadAPI" }, "params": { "project_name" : "EmployeeDatabase" } }, "created_by": { "zuid": 1019540152, "is_confirmed": true, "email_id": "emma@zylker.com", "first_name": "Amelia", "last_name": "Burrows", "user_id": 671930409 }, "created_time": "Oct 06, 2020 07:06 PM" } } {{% /panel_without_adjustment %}} {{% panel_with_adjustment header="Sample Response: Job Successful" class="language-json line-numbers"%}} { "status": "success", "data": { "job_id": 2000000118004, "status": "In-Progress", "operation": "read", "project_details": { "project_name": "ShipmentTracking", "id": 4000000006007 }, "query": [ { "table_id": 3376000000165541, "details": { "page": "1" } } ], "callback": { "url": "https://hr.zylker.com/en/EmpRecords/_callback.php", "headers": { "src" : "ZCatalyst", "operation" : "bulkreadAPI" }, "params": { "project_name" : "EmployeeDatabase" } }, "created_by": { "zuid": 1019540152, "is_confirmed": true, "email_id": "emma@zylker.com", "first_name": "Amelia", "last_name": "Burrows", "user_id": 671930409 }, "created_time": "Oct 06, 2020 07:06 PM" } } {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="Sample Response: Job Failed" class="language-json line-numbers"%}} { "status": "success", "data": { "job_id": 2000000117007, "status": "Failed", "operation": "read", "project_details": { "project_name": "ShipmentTracking", "id": 4000000006007 }, "query": [ { "table_id": 3376000000165541, "details": { "page": "1" } } ], "callback": { "url": "https://hr.zylker.com/en/EmpRecords/_callback.php", "headers": { "src" : "ZCatalyst", "operation" : "bulkreadAPI" }, "params": { "project_name" : "EmployeeDatabase" } }, "created_by": { "zuid": 1019540152, "is_confirmed": true, "email_id": "emma@zylker.com", "first_name": "Amelia", "last_name": "Burrows", "user_id": 671930409 }, "created_time": "Oct 06, 2020 07:00 PM", "results": { "description": "The column ID in select_columns is invalid", } } } {{% /panel_with_adjustment %}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Check Bulk Read Status" description: "This API enables you to manually check the status of a bulk read job that you initiated previously." last_updated: "2026-03-18T07:41:08.546Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/data-store/bulk-read-rows/check-bulk-read-status/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/data-store/bulk-read-rows/check-bulk-read-status/" id="CheckBulkReadStatus" %}} {{%divtag class="LeftContent"%}} # Check Bulk Read Status ### Description You can execute this API to manually check the status of the {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-read-rows/check-bulk-read-status/#CreateBulkReadJob"%}}bulk read job{{%/link%}} that you initiated previously. If you had not configured a callback URL in your JSON request, you must check the job status yourself by executing this API. You must use the {{%badge%}}job_id{{%/badge%}} that is sent to you in the automatic in-progress response when you initiate the bulk read operation, to check the job status subsequently. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/baas/v1/project/{project_id}/bulk/read/{job_id}</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="job_id" data="Numerical" %}}<p>The unique ID of the job that was sent in the initial {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-read-rows/create-bulk-read-job/#CreateBulkReadJob"%}}in-progress status response{{%/link%}} after the Bulk Read API was executed</p>{{%/request_id%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%/scope%}} **Optional Headers** <br> {{%scope%}} **CATALYST-ORG:** {org_id} {{%/scope%}} {{%scope%}} **Environment:** Development {{%/scope%}} #### Scope {{%scope%}} ZohoCatalyst.tables.bulk.READ {{%/scope%}} ### Response Details The JSON response for the success state will contain the details of the executed job, along with a download URL where you can {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-read-rows/create-bulk-read-job/#DownloadBulkReadResult"%}}download a CSV file{{%/link%}} that will contain a list of records matching your bulk read job query. The JSON response for the failed state will contain the details of the executed job, along with a description of the error the occurred in the job processing, and its details, such as the rows that were skipped from being read and the reasons. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X GET \ https://api.catalyst.zoho.com/baas/v1/project/4000000006007/bulk/read/2000000118004 \ -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" {{% /panel_without_adjustment %}} {{% panel_with_adjustment header="Sample Response: Job in Progress" class="language-json line-numbers"%}} { "status": "success", "data": { "job_id": 2000000118004, "status": "In-Progress", "operation": "read", "project_details": { "project_name": "EmployeeDatabase", "id": 4000000006007 }, "query": [ { "table_id": 3376000000165541, "details": { "page": "1" } } ], "callback": { "url": "https://hr.zylker.com/en/EmpRecords/_callback.php", "headers": { "src" : "ZCatalyst", "operation" : "bulkreadAPI" }, "params": { "project_name" : "EmployeeDatabase" } }, "created_by": { "zuid": 1019540152, "is_confirmed": true, "email_id": "emma@zylker.com", "first_name": "Amelia", "last_name": "Burrows", "user_id": 671930409 }, "created_time": "Oct 06, 2020 07:06 PM" } } {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="Sample Response: Job Successful" class="language-json line-numbers"%}} { "status": "success", "data": { "job_id": 2000000118004, "status": "Completed", "operation": "read", "project_details": { "project_name": "EmployeeDatabase", "id": 4000000006007 }, "query": [ { "table_id": 3376000000165541, "details": { "page": "1" } } ], "callback": { "url": "https://hr.zylker.com/en/EmpRecords/_callback.php", "headers": { "src" : "ZCatalyst", "operation" : "bulkreadAPI" }, "params": { "project_name" : "EmployeeDatabase" } }, "created_by": { "zuid": 1019540152, "is_confirmed": true, "email_id": "emma@zylker.com", "first_name": "Amelia", "last_name": "Burrows", "user_id": 671930409 }, "created_time": "Oct 06, 2020 07:06 PM", "results": { "download_url": "https://api.catalyst.zoho.com/baas/v1/bulk/read/2000000117007/download", "description": "Bulk READ job 2000000117007 completed.", "details": [ { "table_id": 3376000000165541, "records_processed": 21, "more_records": false } ] } } } {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="Sample Response: Job Failed" class="language-json line-numbers"%}} { "status": "success", "data": { "job_id": 2000000117007, "status": "Failed", "operation": "read", "project_details": { "project_name": "EmployeeDatabase", "id": 4000000006007 }, "query": [ { "table_id": 3376000000165541, "details": { "page": "1" } } ], "callback": { "url": "https://hr.zylker.com/en/EmpRecords/_callback.php", "headers": { "src" : "ZCatalyst", "operation" : "bulkreadAPI" }, "params": { "project_name" : "EmployeeDatabase" } }, "created_by": { "zuid": 1019540152, "is_confirmed": true, "email_id": "emma@zylker.com", "first_name": "Amelia", "last_name": "Burrows", "user_id": 671930409 }, "created_time": "Oct 06, 2020 07:00 PM", "results": { "description": "The column ID in select_columns is invalid", } } } {{% /panel_with_adjustment %}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Download Bulk Read Result" description: "This API enables you to download the result of a successful bulk read job that you initiated previously." last_updated: "2026-03-18T07:41:08.547Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/data-store/bulk-read-rows/download-bulk-read-result/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/data-store/bulk-read-rows/download-bulk-read-result/" id="DownloadBulkReadResult" %}} {{%divtag class="LeftContent"%}} # Download Bulk Read Result ### Description You can execute this API to download the result of a successful {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-read-rows/download-bulk-read-result/#CreateBulkReadJob"%}}bulk read job{{%/link%}} that you initiated. This URL will also be sent in JSON response for the success state. The downloaded CSV result file will contain a list of all the records matching your bulk read job query. {{%note%}}{{%bold class="bold-primary"%}}Note:{{%/bold%}} The download URL will be valid for **1 day** after its generation. The link will expire after that time period, and you will not be able to obtain the CSV result file containing the job details.{{%/note%}} ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/baas/v1/project/{project_id}/bulk/read/{job_id}/download</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="job_id" data="Numerical" %}}The unique ID of the job that was sent in the initial {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-read-rows/create-bulk-read-job/#CreateBulkReadJob"%}}in-progress status response{{%/link%}} after the Bulk Read API was executed {{%/request_id%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%/scope%}} **Optional Headers** <br> {{%scope%}} **CATALYST-ORG:** {org_id} {{%/scope%}} {{%scope%}} **Environment:** Development {{%/scope%}} #### Scope {{%scope%}} ZohoCatalyst.tables.bulk.READ {{%/scope%}} ### Response Details The bulk read result file will be automatically downloaded to the configured directory in your system after you execute this API. **File format:** ZIP file containing the CSV result file Sample result file showing the details of a bulk read job: {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X GET \ https://api.catalyst.zoho.com/baas/v1/project/4000000006007/bulk/read/2000000118004/download \ -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" {{% /panel_without_adjustment %}} {{%/divtag%}} {{%/section%}} ### Bulk Write Rows -------------------------------------------------------------------------------- title: "Create Bulk Write Job" description: "This API triggers the bulk write operation to write records from a CSV file in Stratus to a table in the Data Store." last_updated: "2026-03-18T07:41:08.547Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/data-store/bulk-write-rows/create-bulk-write-job/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/data-store/bulk-write-rows/create-bulk-write-job/" id="CreateBulkWriteJob" %}} {{%divtag class="LeftContent"%}} # Bulk Write Records The Bulk Write operation can fetch thousands of records from a CSV file uploaded to a bucket in {{%link href="/en/cloud-scale/help/stratus/introduction"%}}Stratus{{%/link%}} and insert them in a specific table in the {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}. This data-intense operation can be performed in a single API execution. After the bulk write operation has executed successfully, a CSV report file containing the details of the job execution will be generated at a download URL. Catalyst supports three APIs for the bulk write operation: a Create Bulk Write API, a {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-write-rows/create-bulk-write-job/#CheckBulkWriteStatus"%}}Check Bulk Write Status API{{%/link%}} to check the status of the job execution manually, and a {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-write-rows/create-bulk-write-job/#DownloadBulkWriteResult"%}}Download Bulk Write Result API{{%/link%}} to download the results. You can also configure a callback URL to enable automatic posting of the job status responses in it. {{%note%}}{{%bold class="bold-primary"%}}Note:{{%/bold%}} You can also perform Bulk Write operation using the Catalyst CLI. Refer to {{%link href="/en/cli/v1/data-store-import-and-export/introduction/"%}}Data Store Import and Export CLI documentation{{%/link%}}.{{%/note%}} # Create a Bulk Write Job ### Description This API triggers the bulk write operation to obtain the records from a CSV file stored in Stratus and exports them to a table in the Data Store, based on the criteria you specify in the input JSON. The CSV file is referred to using its {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} in Stratus, and the table is referred to using its unique table ID or the table name. {{%note%}}{{%bold class="bold-primary"%}}Note:{{%/bold%}}<br /> * Ensure you have uploaded the required CSV file containing in Stratus, before you begin executing this operation. * The CSV file's first row must be the header row i.e., the column names must be present as the header row. * The CSV file must contain data in the format that adheres to CSV file standards. If the file is not in the standard format, the data written to the table might be corrupted. * You can insert 5000 records in each table per project in the {{%link href="/en/deployment-and-billing/environments/introduction"%}}development environment{{%/link%}} using this API. If the CSV file contains records more than that, the first 5000 records will be written to the table. The others will be skipped in the development environment. There are no table limits for insertion in the production environment. However, the Bulk Write API can insert upto 100000 records in a single API call from a CSV file even in the production environment. If you require more records to be written, you can do so in batches of 100000 records by sending multiple Bulk Write API requests accordingly. {{%/note%}} There are three operations that can be performed using this API: * **Insert:** Inserts new rows of data into the table from the CSV file * **Update:** Updates existing rows of data in the table. The records are identified either using a unique column in the table, or using their {{%link href="/en/cloud-scale/help/data-store/records/"%}}ROWIDs{{%/link%}} generated in the Data Store. * **Upsert:** Enables both insert and update operations at the same time. If the record already exists, the row is updated. If the record does not exist, a new row with the data is inserted. ### Request Details #### Request URL {{%request class="apiyellow" req="POST" %}}<p>{api-domain}/baas/v1/project/{projectId}/bulk/write</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} {{%/scope%}} **Optional Headers** <br> {{%scope%}} **CATALYST-ORG:** {org_id} {{%/scope%}} {{%scope%}} **Environment:** Development {{%/scope%}} #### Scope {{%scope%}} ZohoCatalyst.tables.bulk.CREATE {{%/scope%}} #### Request JSON Properties The input for the Bulk Write API request must be sent in a JSON format. The request parameters are explained below. {{% nested_fields children="open" border="yes" expandable="no" title="table_identifier" textformat="string" condition="mandatory" maxlength=" " %}} The {{%link href="/en/cloud-scale/help/data-store/tables/#create-a-new-table"%}}unique ID{{%/link%}} of the table or the table name. You can obtain the table ID from Data Store or from the URL when the table is opened in the console. {{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="operation" textformat="string" condition="optional" maxlength=" " %}} Specifies the operation to be executed using the API. Allowed values: {{%badge%}}insert{{%/badge%}}, {{%badge%}}update{{%/badge%}}, {{%badge%}}upsert{{%/badge%}} Default operation: {{%badge%}}insert{{%/badge%}} {{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="object_details" textformat="JSON" condition="mandatory" maxlength="" %}} Will contain the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}bucket_name{{%/link%}}, object_key (Object {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}} or {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}}), and {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}version_id{{%/link%}}(If versioning has been enabled). {{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="find_by" textformat="string" condition="mandatory (update, upsert), optional (insert)" maxlength="" %}} The unique column using which the records are identified. For example, if you specify a unique column called 'EmployeeID' as the {{%badge%}}find_by{{%/badge%}} value, Catalyst will search the records in the Data Store table using the EmployeeID value. For the update operation, Catalyst will update the rows that match the EmployeeID from the CSV file. For the upsert operation, Catalyst will update existing rows, and insert new rows if there are no records with matching EmployeeID values. Update: This can be a column with unique values as configured in the Data Store, or the {{%link href="/en/cloud-scale/help/data-store/records/"%}}ROWID{{%/link%}} generated by Catalyst for the records. Upsert: You can only specify a column with unique values as configured in the Data Store. You will not be able to specify the ROWID as the {{%badge%}}find_by{{%/badge%}} value. This is because, upsert will insert new rows if matching ones are not found, and the ROWID values will not be available for rows not existing in the Data Store. Insert: If you specify a {{%badge%}}find_by{{%/badge%}} column for an insert operation, any records matching the column values from the CSV file will be skipped and not inserted into the Data Store table. This is because, insert cannot update if a given record already exists. {{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="fk_mapping" textformat="json" condition="optional" maxlength=" " %}} Foreign key mapping for the columns that are primary keys in other tables. This is specified if any columns imported from the CSV file should be configured as foreign keys. You must map foreign keys in the following format:<br> *{*<br> *"local_column" : "local_column_name_1",*<br> *"reference_column" : "reference_column_name_1"*<br> *}*<br> where {{%badge%}}local_column{{%/badge%}} is the name of the column in the table where the bulk write operation is processed, and {{%badge%}}reference_column{{%/badge%}} is the name of the column in the table in which it is a primary key. Refer to the sample request code.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="yes" title="callback" textformat="json" condition="optional" maxlength="" %}} The section where you can define the properties of the callback URL, where automatic JSON responses of the job statuses will be sent to. {{% nested_button%}} {{%request_id%}}{{% nested_fields children="open" border="no" expandable="no" title="url" textformat="string" condition="mandatory (if specifying callback)" maxlength="" %}} The URL where the automatic responses will be sent to using the HTTP POST method, each time the job status changes. Information about the job details will be contained in the body of the JSON response. If you don't configure a callback URL, you must manually check the status of the job processing when you need, using the [Check Bulk Write Status API](/en/api/code-reference/cloud-scale/data-store/bulk-write-rows/check-bulk-write-status/#CheckBulkWriteStatus). {{% /nested_fields %}} {{%/request_id%}} {{%request_id%}}{{% nested_fields children="open" border="no" expandable="no" title="headers" textformat="string" condition="optional" maxlength="" %}} Headers that you require to be passed in the JSON response to the callback URL You must specify the headers as:<br> *{* <br> *"{header_name_1}" : "{header_value_1}",*<br> *"{header_name_2}" : "{header_value_2}"*<br> *}* and so on. Refer to the sample request code. {{% /nested_fields %}} {{%/request_id%}} {{%request_id%}}{{% nested_fields children="open" border="no" expandable="no" title="params" textformat="string" condition="optional" maxlength="" %}} Parameters that you require to be appended to the callback URL You must specify the parameters as:<br> *{* <br> *"{param_name_1}" : "{param_value_1}",*<br> *"{param_name_2}" : "{param_value_2}"*<br> *}* and so on. Refer to the sample request code. {{% /nested_fields %}} {{%/request_id%}} {{% /nested_fields %}} ### Response Details There are three job processing states which will generate three different responses: * **In-Progress:** When you execute the API, Catalyst will immediately and automatically send you a response indicating that the job execution is in progress. If you have configured a callback URL in the request, the response will also be posted to the URL in the format you defined. The response will contain a {{%badge%}}job_id parameter{{%/badge%}} which you can use to {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-write-rows/create-bulk-write-job/#CheckBulkWriteStatus"%}}check the status of the job execution{{%/link%}} for subsequent responses, if you have not configured a callback URL. * **Success:** The success state response will contain a download URL, where you can {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-write-rows/create-bulk-write-job/#DownloadBulkReadResult"%}}download a CSV report file{{%/link%}} that contains the details of the job execution. It will list all the records that were skipped from being written along with the reasons. If you have not configured a callback URL, this response will not be sent by Catalyst automatically. * **Failed:** The failed state response will contain a description of the error that occurred and the details. If you have not configured a callback URL, this response will not be sent by Catalyst automatically. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X POST https://api.catalyst.zoho.com/baas/v1/project/4000000006007/bulk/write \ -H "Authorization: Zoho-oauthtoken 1000.910***************************16.2f****************************57" \ -d '{ "table_identifier": "3376000000165511", "operation": "insert", "object_details": { "bucket_name": "zylker-emp", "object_key": "employees/emp_rec.csv", "version_id": "3546576879809" }, "callback": { "url": "https://hr.zylker.com/en/EmpRecords/_callback.php", "headers": { "src": "ZCatalyst", "operation": "bulkwriteAPI" }, "params": { "project_name": "EmployeeDatabase" } }, "find_by": "EmpID", "fk_mapping": [ { "local_column": "EmployeeID", "reference_column": "EmpID" }, { "local_column": "DepartmentID", "reference_column": "DeptID" } ] }' {{% /panel_without_adjustment %}} {{% panel_with_adjustment header="Sample Response: Job in Progress" class="language-json line-numbers"%}} { "status": "success", "data": { "job_id": 2000000110044, "status": "In-Progress", "operation": "insert", "project_details": { "project_name": "ShipmentTracking", "id": 4000000006007 }, "query": [ { "table_id": 3376000000165511, "object_details": { "bucket_name": "zylker-emp", "object_key" : "employees/emp_rec.csv", "version_id":"3546576879809" } } ], "callback": { "url": "https://hr.zylker.com/en/EmpRecords/_callback.php", "headers": { "src": "ZCatalyst", "operation": "bulkwriteAPI" }, "params": { "project_name": "EmployeeDatabase" } }, "created_by": { "zuid": 3000000006111, "is_confirmed": true, "email_id": "emma@zylker.com", "first_name": "Amelia", "last_name": "Burrows", "user_id": 671930409 }, "created_time": "Oct 05, 2020 07:33 PM" } }{{% /panel_with_adjustment %}} {{% panel_with_adjustment header="Sample Response: Job Successful" class="language-json line-numbers"%}} { "status": "success", "data": { "job_id": 2000000110044, "status": "Completed", "operation": "insert", "project_details": { "project_name": "ShipmentTracking", "id": 4000000006007 }, "query": [ { "table_id": 3376000000165511, "details": { "object_url" : "https://zylker-emp-development.zohostratus.com/employees/emp_rec.csv" } } ], "callback": { "url": "https://hr.zylker.com/en/EmpRecords/_callback.php", "headers": { "src": "ZCatalyst", "operation": "bulkwriteAPI" }, "params": { "project_name": "EmployeeDatabase" } }, "created_by": { "zuid": 3000000006111, "is_confirmed": true, "email_id": "emma@zylker.com", "first_name": "Amelia", "last_name": "Burrows", "user_id": 671930409 }, "created_time": "Oct 05, 2020 07:25 PM", "results": { "download_url": "https://api.catalyst.zoho.com/baas/v1/bulk/write/2000000110013/download", "description": "Bulk WRITE job completed. ", "details": [ { "table_id": 3376000000165511, "records_processed": 176 } ] } } }{{% /panel_with_adjustment %}} {{% panel_with_adjustment header="Sample Response: Job Failed" class="language-json line-numbers"%}} { "status": "success", "data": { "job_id": 2000000110044, "status": "Failed", "operation": "insert", "project_details": { "project_name": "ShipmentTracking", "id": 4000000006007 }, "query": [ { "table_id": 3376000000165511, "details": { "object_url" : "https://zylker-emp-development.zohostratus.com/employees/emp_rec.csv" } } ], "callback": { "url": "https://hr.zylker.com/en/EmpRecords/_callback.php", "headers": { "src": "ZCatalyst", "operation": "bulkwriteAPI" }, "params": { "project_name": "EmployeeDatabase" } } "created_by": { "zuid": 3000000006111, "is_confirmed": true, "email_id": "emma@zylker.com", "first_name": "Amelia", "last_name": "Burrows", "user_id": 671930409 }, "created_time": "Oct 05, 2020 07:25 PM", "results": { "description": "The reference_column 'DeptID' in fk_mapping of table 3376000000165511 is not a unique column", "details": [ ] } } }{{% /panel_with_adjustment %}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Check Bulk Write Status" description: "This API enables you to manually check the status of a bulk write job that you initiated previously." last_updated: "2026-03-18T07:41:08.547Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/data-store/bulk-write-rows/check-bulk-write-status/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/data-store/bulk-write-rows/check-bulk-write-status/" id="CheckBulkWriteStatus" %}} {{%divtag class="LeftContent"%}} # Check Bulk Write Status ### Description You can execute this API to manually check the status of the [bulk write job](/en/api/code-reference/cloud-scale/data-store/bulk-write-rows/create-bulk-write-job/#CreateBulkWriteJob) that you initiated previously. If you had not configured a callback URL in your JSON request, you must check the job status yourself by executing this API. You must use the {{%badge%}}job_id{{%/badge%}} that is sent to you in the automatic in-progress response when you initiated the bulk write operation, to check the job status subsequently. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/baas/v1/project/{project_id}/bulk/write/{job_id}</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="job_id" data="Numerical" %}}<p>The unique ID of the job that was sent in the initial [in-progress status response](/en/api/introduction/overview-and-prerequisites/#response-details) after the Bulk Write API was executed</p>{{%/request_id%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%/scope%}} **Optional Headers** <br> {{%scope%}} **CATALYST-ORG:** {org_id} {{%/scope%}} {{%scope%}} **Environment:** Development {{%/scope%}} #### Scope {{%scope%}} ZohoCatalyst.tables.bulk.CREATE {{%/scope%}} ### Response Details The JSON response for the success state will contain the details of the executed job, along with a download URL, where you can [download a CSV report file](/en/api/code-reference/cloud-scale/data-store/bulk-write-rows/download-bulk-write-result/#DownloadBulkWriteResult) that will contain the details of the job execution. It will list all the records that were skipped from being written along with the reasons. The JSON response for the failed state will contain the details of the executed job, along with a description of the error occurred in the job processing, and its details. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X GET \ https://api.catalyst.zoho.com/baas/v1/project/4000000006007/bulk/write/2000000110044 \ -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" {{% /panel_without_adjustment %}} {{% panel_with_adjustment header="Sample Response: Job in Progress" class="language-json line-numbers"%}} { "status": "success", "data": { "job_id": 2000000110044, "status": "In-Progress", "operation": "insert", "project_details": { "project_name": "EmployeeDatabase", "id": 4000000006007 } "query": [ { "table_id": 3376000000165511, "details": { "object_url" : "https://zylker-emp-development.zohostratus.com/employees/emp_rec.csv", } } ], "callback": { "url": "https://hr.zylker.com/en/EmpRecords/_callback.php", "headers": { "src": "ZCatalyst", "operation": "bulkwriteAPI" }, "params": { "project_name": "EmployeeDatabase" } }, "created_by": { "zuid": 3000000006111, "is_confirmed": true, "email_id": "emma@zylker.com", "first_name": "Amelia", "last_name": "Burrows", "user_id": 671930409 }, "created_time": "Oct 05, 2020 07:33 PM" } }{{% /panel_with_adjustment %}} {{% panel_with_adjustment header="Sample Response: Job Successful" class="language-json line-numbers"%}} { "status": "success", "data": { "job_id": 2000000110044, "status": "Completed", "operation": "insert", "project_details": { "project_name": "EmployeeDatabase", "id": 4000000006007 } "query": [ { "table_id": 3376000000165511, "details": { "object_url" : "https://zylker-emp-development.zohostratus.com/employees/emp_rec.csv" } } ], "callback": { "url": "https://hr.zylker.com/en/EmpRecords/_callback.php", "headers": { "src": "ZCatalyst", "operation": "bulkwriteAPI" }, "params": { "project_name": "EmployeeDatabase" } }, "created_by": { "zuid": 3000000006111, "is_confirmed": true, "email_id": "emma@zylker.com", "first_name": "Amelia", "last_name": "Burrows", "user_id": 671930409 }, "created_time": "Oct 05, 2020 07:25 PM", "results": { "download_url": "https://api.catalyst.zoho.com/baas/v1/bulk/write/2000000110013/download", "description": "Bulk WRITE job completed. ", "details": [ { "table_id": 3376000000165511, "records_processed": 176 } ] } } }{{% /panel_with_adjustment %}} {{% panel_with_adjustment header="Sample Response: Job Failed" class="language-json line-numbers"%}} { "status": "success", "data": { "job_id": 2000000110044, "status": "Failed", "operation": "insert", "project_details": { "project_name": "EmployeeDatabase", "id": 4000000006007 } "query": [ { "table_id": 3376000000165511, "details": { "object_url" : "https://zylker-emp-development.zohostratus.com/employees/emp_rec.csv" } } ], "callback": { "url": "https://hr.zylker.com/en/EmpRecords/_callback.php", "headers": { "src": "ZCatalyst", "operation": "bulkwriteAPI" }, "params": { "project_name": "EmployeeDatabase" } }, "created_by": { "zuid": 3000000006111, "is_confirmed": true, "email_id": "emma@zylker.com", "first_name": "Amelia", "last_name": "Burrows", "user_id": 671930409 }, "created_time": "Oct 05, 2020 07:25 PM", "results": { "description": "The reference_column 'DeptID' in fk_mapping of table 3376000000165511 is not a unique column", "details": [ ] } } }{{% /panel_with_adjustment %}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Download Bulk Write Result" description: "This API enables you to download the result of a successful bulk write job that you initiated previously." last_updated: "2026-03-18T07:41:08.547Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/data-store/bulk-write-rows/download-bulk-write-result/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/data-store/bulk-write-rows/download-bulk-write-result/" id="DownloadBulkWriteResult" %}} {{%divtag class="LeftContent"%}} # Download Bulk Write Result ### Description You can execute this API to download the result of a successful {{%link href="/en/api/code-reference/cloud-scale/data-store/bulk-write-rows/download-bulk-write-result/#CreateBulkWriteJob"%}}bulk write job{{%/link%}} that you initiated. This URL will also be sent in JSON response for the success state. The downloaded CSV file will contain the details of the job execution. It will list all the records that were skipped from being written along with the reasons. {{%note%}}{{%bold class="bold-primary"%}}Note:{{%/bold%}} The download URL will be valid for **1 day** after its generation. The link will expire after that time period, and you will not be able to obtain the CSV result file containing the job details.{{%/note%}} ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/baas/v1/project/{project_id}/bulk/write/{job_id}/download</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="job_id" data="Numerical" %}}<p>The unique ID of the job that was sent in the initial [in-progress status response](/en/api/introduction/overview-and-prerequisites/#response-details) after the Bulk Write API was executed</p>{{%/request_id%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%/scope%}} **Optional Headers** <br> {{%scope%}} **CATALYST-ORG:** {org_id} {{%/scope%}} {{%scope%}} **Environment:** Development {{%/scope%}} #### Scope {{%scope%}} ZohoCatalyst.tables.bulk.CREATE {{%/scope%}} ### Response Details The bulk write result file will be automatically downloaded to the configured directory in your system after you execute this API. **File format:** ZIP file containing the CSV result file Sample result file showing the details of a bulk write job: {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X GET \ https://api.catalyst.zoho.com/baas/v1/project/4000000006007/bulk/write/2000000110044/download \ -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" {{% /panel_without_adjustment %}} {{%/divtag%}} {{%/section%}} --- ## SDK — Android — Data Store -------------------------------------------------------------------------------- title: "Create a New Data Store Instance" description: "Catalyst Data Store is a cloud-based relational database management system which stores the persistent data of your application in the form of tables." last_updated: "2026-03-18T07:41:08.552Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/data-store/create-data-store-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Data Store - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) -------------------------------------------------------------------------------- # Data Store {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Catalyst Data Store{{%/link%}} is a cloud-based relational database management system that stores the persistent data of your application through tables. ### Create a New Data Store Instance To access the Data Store of a Catalyst project, you can create an instance of the Data Store, and enable the methods defined in this class to access the instance object. This will prevent unnecessary server calls. You must call the {{%badge%}}**getDataStoreInstance()**{{%/badge%}} method as shown in the code syntax below, to obtain the Data Store instance successfully: {{%code class="language-bash"%}}ZCatalystApp.getInstance().getDataStoreInstance(): ZCatalystDataStore{{%/code%}} -------------------------------------------------------------------------------- title: "Create a New Table Instance" description: "You can create a table instance for a particular table in the Data Store, and enable the methods defined in this class to access the instance object." last_updated: "2026-03-18T07:41:08.552Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/data-store/create-table-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Tables (/en/cloud-scale/help/data-store/tables) - Data Store - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Create a New Table Instance You can create a table instance for a particular table in the {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}, and enable the methods defined in this class to access the instance object. This prevents unnecessary server calls. A table instance can be created by calling the {{%badge%}}**getTableInstance()**{{%/badge%}} method in either of the two ways mentioned below. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used in both the methods is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-data-store-instance"%}}Data Store Instance page{{%/link%}}. ### Create a Table Instance by its ID You can create a table instance by passing the particular table ID as the argument to the {{%badge%}}getTableInstance(){{%/badge%}} method, as shown in the code syntax below: {{%code class="language-bash line-numbers"%}}&lt;DATA_STORE_INSTANCE&gt;.getTableInstance( id: Long ): ZCatalystTable {{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/data-store/tables"%}}unique table ID{{%/link%}} of the specific table the instance needs to be created for A sample code snippet is shown below: {{%code class="language-bash"%}}val table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance(2823000000017011) //Replace this with your Table ID{{%/code%}} ### Create a Table Instance by its Name Alternatively, you can create a table instance by passing the particular table's name as the argument to the {{%badge%}}**getTableInstance()**{{%/badge%}} method, as shown in the code syntax below: {{%code class="language-bash line-numbers"%}}&lt;DATA_STORE_INSTANCE&gt;.getTableInstance( identifier: String ): ZCatalystTable {{%/code%}} **Parameters**: * {{%badge%}}**identifier**{{%/badge%}}: The name of the specific table the instance needs to be created for A sample code snippet is shown below: {{%code class="language-bash"%}}val table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails") //Replace this with your table name{{%/code%}} -------------------------------------------------------------------------------- title: "Get Column Metadata" description: "You can obtain the metadata of all columns or single specific column of a Data Store table of the given instance by its ID or name." last_updated: "2026-03-18T07:41:08.552Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/data-store/get-column-metadata/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Columns (/en/cloud-scale/help/data-store/columns) - Get Metadata of Coulumns - API (/en/api/code-reference/cloud-scale/data-store/get-all-columns-metadata/#GetAllColumnsMetadata) -------------------------------------------------------------------------------- # Get Column Metadata ### Get the Metadata of a Specific Column You can obtain the metadata of a single specific column of a {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table of the given instance by calling the {{%badge%}}**getColumn()**{{%/badge%}} method. If the operation is successful, this method can return the metadata of the column, such as its data type, default value, or maximum length, or whether it is read only, unique, or mandatory. The metadata of a specific column can be fetched in two different ways. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in both the methods is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. #### i. Get a Column by its ID You can retrieve a specific column's metadata by passing the column ID as the argument to the {{%badge%}}getColumn(){{%/badge%}} method, as shown in the code syntax below: {{%code class="language-bash line-numbers"%}}&lt;TABLE_INSTANCE&gt;.getColumn( id: Long, success: (ZCatalystColumn) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystColumn&gt;&gt;? {{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/data-store/columns/#column-characteristics"%}}unique Column ID{{%/link%}} of the particular column that needs to be retrieved A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}val table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails") //Replace this with your table name table.getColumn(2823000000017733, //Replace this with your Column ID { column -> println("Get Column success") println("The name of the column is: ${column.name}") }, { exception -> println("Get column failed! $exception") }) {{%/code%}} #### ii. Get a Column by its Name You can retrieve a specific column's metadata by passing the column's name as the argument to the {{%badge%}}getColumn(){{%/badge%}} method, as shown in the code syntax below: {{%code class="language-bash line-numbers"%}}&lt;TABLE_INSTANCE&gt;.getColumn( name: String, success: (ZCatalystColumn) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystColumn&gt;&gt;? {{%/code%}} **Parameters**: * {{%badge%}}**name**{{%/badge%}}: The name of the particular column that needs to be retrieved A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}val table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails") //Replace this with your table name table.getColumn("DepartmentName", //Replace this with your column name { column -> println("Get Column Success") println("The ID of the column is: ${column.id}") }, { exception -> println("Get column failed! $exception") }) {{%/code%}} ### Get the Metadata of all Columns You can retrieve the metadata of all the columns of a table of the given instance, using the {{%badge%}}**getColumns()**{{%/badge%}} method, as shown in the code syntax below. If the operation is successful, this method can return the metadata of all the columns of the specific table. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;TABLE_INSTANCE&gt;.getColumns( success: (List&lt;ZCatalystColumn&gt;) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystColumn&gt;&gt;&gt;? {{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}val table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails") //Replace this with your table name table.getColumns( { columns -> println("Get Columns success") for (column in columns) { println("${column.name}") } }, { exception -> println("Get Columns failed! $exception.") } ) {{%/code%}} -------------------------------------------------------------------------------- title: "Get Rows" description: "You can retrieve a single specific row or all rows, even with pagination, from a Data Store table of the given instance." last_updated: "2026-03-18T07:41:08.552Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/data-store/get-rows/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Get All Rows - API (/en/api/code-reference/cloud-scale/data-store/get-all-rows/#GetAllRows) -------------------------------------------------------------------------------- # Get Rows ### Get a Specific Row You can retrieve a single specific row from a {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table of the given instance using the {{%badge%}}**getRow()**{{%/badge%}} method. This is done by passing the unique ROWID of the row as the argument to this method, as shown in the code syntax below. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;TABLE_INSTANCE&gt;.getRow( id: Long, success: (ZCatalystRow) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystRow&gt;&gt;? {{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/data-store/records/#create-a-new-record"%}}unique ROWID{{%/link%}} of the particular row that needs to be retrieved A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}val table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails") //Replace this with your table name table.getRow(2823000000014176, //Replace this with your Row ID { row -> println("Get Row Success") println(" The row details are: ${row.getData()}") }, { exception -> println("Get row failed! $exception") }) {{%/code%}} <br> ### Get Rows Through Pagination You can retrieve all the rows from a table in the Data Store by incorporating pagination in your code. Pagination allows you to fetch the rows of a table in batches or pages through iterations. For example, if you require the rows to be fetched in batches of 100 as individual pages, you can define the maximum rows to be fetched in each page and specify the count using {{%badge%}}**maxRows**{{%/badge%}} as shown below. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code snippets below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;TABLE_INSTANCE&gt;.getRows(maxRows: Int, success: (List&lt;ZCatalystRow&gt;, ResponseInfo) -> Unit, failure: ((ZCatalystException) -&gt; Unit)? = null): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystRow&gt;&gt;&gt;?{{%/code%}} **Parameters**: * {{%badge%}}**maxRows**{{%/badge%}}: The maximum number of rows to be fetched in this iteration A sample code snippet is given below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").getRows( 10, { rows, info -&gt;{ println("The token for next set of rows - ${info.nextToken}") println("Boolean to know if there are records in next page - ${info.moreRecords}") } }, { exception -&gt; println("Failed to get the rows! $exception") }){{%/code%}} Additionally, after each execution of the loop, you will receive a token string in the response that authorizes the subsequent fetching of data. You can fetch this token through {{%badge%}}info.nextToken{{%/badge%}}, and pass it as the value for {{%badge%}}nextToken{{%/badge%}} during the subsequent iteration. During the first execution of the loop, the {{%badge%}}nextToken{{%/badge%}} string is not passed. You can also verify the number of pending rows to be fetched through {{%badge%}}info.moreRecords{{%/badge%}} as shown in the code snippet. You can fetch the next set of rows by passing the nextToken as well as {{%badge%}}maxRows{{%/badge%}} if you require pagination to continue. This can be done as shown below. {{%code class="language-bash line-numbers"%}}&lt;TABLE_INSTANCE&gt;.getRows(nextToken: String, maxRows: Int, success: (List&lt;ZCatalystRow&gt;, ResponseInfo) -> Unit, failure: ((ZCatalystException) -&gt; Unit)? = null): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystRow&gt;&gt;&gt;?{{%/code%}} **Parameters**: * {{%badge%}}**maxRows**{{%/badge%}}: The maximum number of rows to be fetched in this iteration * {{%badge%}}**nextToken**{{%/badge%}}: The authorization token to fetch the next set of rows A sample code snippet is given below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").getRows( "1000.6f********" , 20 , { rows, info ->{ println("The token for next set of rows - ${info.nextToken}") println("Boolean to know if there are records in next page - ${info.moreRecords}") } }, { exception -> println("Failed to get the rows! $exception") }){{%/code%}} You can fetch the {{%badge%}}nextToken{{%/badge%}} and {{%badge%}}moreRecords{{%/badge%}} information until {{%badge%}}info.moreRecords{{%/badge%}} returns {{%badge%}}FALSE{{%/badge%}}. If you prefer to fetch all pending rows after the first iteration and don't want to set a {{%badge%}}maxRows{{%/badge%}} limit, you can do so in the following manner: {{%code class="language-bash line-numbers"%}}&lt;TABLE_INSTANCE&gt;.getRows(nextToken: String, success: (List&lt;ZCatalystRow&gt;, ResponseInfo) -&gt; Unit, failure: ((ZCatalystException) -&gt; Unit)? = null): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystRow&gt;&gt;&gt;?{{%/code%}} **Parameters**: * {{%badge%}}**nextToken**{{%/badge%}}: The authorization token to fetch the next set of rows A sample code snippet is given below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").getRows( "1000.6f********", { rows, info ->{ println("The token for next set of rows - ${info.nextToken}") println("Boolean to know if there are records in next page - ${info.moreRecords}") } }, { exception -> println("Failed to get the rows! $exception") }){{%/code%}} This will make {{%badge%}}info.moreRecords{{%/badge%}} return {{%badge%}}FALSE{{%/badge%}}. <br> ### Get All Rows You can retrieve all the rows of a table of the given instance using the {{%badge%}}**getRows()**{{%/badge%}} method, as shown in the code syntax below. If the operation is successful, this method will return all the rows of the table without any filters or conditions. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;TABLE_INSTANCE&gt;.getRows( success: (List&lt;ZCatalystRow&gt;,ResponseInfo) → Unit, failure: ((ZCatalystException) → Unit)?= null): ): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystRow&gt;&gt;&gt;? {{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}val table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails") //Replace this with your table name table.getRows( { rows, info ->{ println("The token for next set of rows - ${info.nextToken}") println("Boolean to know if there are records in next page - ${info.moreRecords}") } }, { exception -> println("Failed to get the rows! $exception") }) {{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Because this is an operation to fetch all the rows, you can ignore the {{%badge%}}info.nextToken{{%/badge%}}. This will return all the rows available without pagination. The {{%badge%}}info.moreRecords{{%/badge%}} will also return {{%badge%}}FALSE{{%/badge%}} if all the rows are fetched.{{%/note%}} -------------------------------------------------------------------------------- title: "Get Column Value from Row" description: "You can retrieve a specific column's value in a row in a Data Store table." last_updated: "2026-03-18T07:41:08.552Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/data-store/get-column-value-from-row/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Columns (/en/cloud-scale/help/data-store/columns) - Get Metadata of Columns - API (/en/api/code-reference/cloud-scale/data-store/get-all-columns-metadata/#GetAllColumnsMetadata) -------------------------------------------------------------------------------- # Get Column Value from Row You can retrieve a specific column's value in a row in a {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table using the {{%badge%}}getFieldValue(){{%/badge%}} method. For example, if you require the value of a single column called 'Employee ID' in a row, you can use this method to obtain that specific value. You must pass the Field Name of the column as the argument to the {{%badge%}}getFieldValue(){{%/badge%}}method, as shown in the code syntax below. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;TABLE_INSTANCE&gt;.getRow( id : Long, success: (ZCatalystRow) → ZCatalystRow.getFieldValue(fieldAPIName: String): Any, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ZCatalystRow&gt;&gt;? {{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The The {{%link href="/en/cloud-scale/help/data-store/records/#create-a-new-record"%}}unique ROWID{{%/link%}} of the particular row that needs to be retrieved * {{%badge%}}**fieldAPIName**{{%/badge%}}: The name of the column whose value needs to be fetched A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").getRow(2823000000054062, // Replace this with your table name and the ROWID of the row { row -> println(" The value of 'Employee ID' field is :${row.getFieldValue("EmployeeID")}") //Replace this with your column name }, { exception -> println("Failed to get the column value! $exception") }) {{%/code%}} -------------------------------------------------------------------------------- title: "Create a New Row Instance" description: "You can create a new row instance for a particular table in the Data Store." last_updated: "2026-03-18T07:41:08.553Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/data-store/create-row-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Insert Row - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Create a New Row Instance You can create a new row instance for a particular table in the {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}, and enable the methods defined in this class to access the instance object. This prevents unnecessary server calls. A row instance can be created by calling the {{%badge%}}**newRow()**{{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used here is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. <br /> {{%code class="language-bash"%}}&lt;TABLE_INSTANCE&gt;.newRow(): ZCatalystRow{{%/code%}} <br /> A sample code snippet is shown below: <br /> {{%code class="language-bash"%}}val rowInstance = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").newRow() //Replace this with your table name{{%/code%}} -------------------------------------------------------------------------------- title: "Create Rows" description: "You can create a new row instance for a particular table in the Data Store, and enable the methods defined in this class to access the instance object." last_updated: "2026-03-18T07:41:08.553Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/data-store/create-rows/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Insert Row - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Create Rows ### Create a Single Row You can create a new row in a {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table of the given instance using the {{%badge%}}**newRow()**{{%/badge%}} method. You must set the values of the rows in the table, by specifying the column name and the corresponding row value as a key-value pair. The {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-row-instance"%}}Row Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;ROW_INSTANCE&gt;.create( success: (ZCatalystRow) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystRow&gt;&gt;&gt;? {{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If a column was created with the {{%badge%}}{{%bold%}}is_unique{{%/bold%}}{{%/badge%}} or {{%badge%}}{{%bold%}}is_mandatory{{%/bold%}}{{%/badge%}} property enabled, you must ensure that the value is unique or is mandatorily passed, respectively. You must also ensure that the data you pass for a column is of the column's configured data type.{{%/note%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}val row = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").newRow() //Replace this with your table name row.setColumnValue("Department_Name", "Marketing") //Replace this with your column name and its value row.setColumnValue("Employee_ID", "109223") //Replace this with your column name and its value row.setColumnValue("Employee_Name", "Robert Smith") //Replace this with your column name and its value row.create( { success -> println("New row created successfully $success") }, { exception -> println("Failed to create a new row! $exception") } ) {{%/code%}} ### Create Multiple Rows Catalyst Android SDK enables you to create multiple rows at a time in a table of the given instance. This is done by passing an array containing the rows that need to be inserted in the table. The array is passed as an argument to the {{%badge%}}**createRows()**{{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;TABLE_INSTANCE&gt;.createRows( rows: ArrayList&lt;ZCatalystRow&gt;, success: (List&lt;ZCatalystRow&gt;) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystRow&gt;&gt;&gt;? {{%/code%}} **Parameters**: * {{%badge%}}**rows**{{%/badge%}}: The array of rows to be created A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").createRows( //Replace this with your table name rowsList, //Set the names and values of the columns and add them to an arrayList { rows -> println("The IDs of the rows that were successfully created are listed below:") for (row in rows){ println("${row.id}") } }, { exception -> println("Add Rows Failed! $exception") }) {{%/code%}} -------------------------------------------------------------------------------- title: "Delete a Row" description: "Catalyst Android SDK enables you to delete a single row from a specific Data Store table." last_updated: "2026-03-18T07:41:08.553Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/data-store/delete-row/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Delete Row - API (/en/api/code-reference/cloud-scale/data-store/delete-row/#DeleteRow) -------------------------------------------------------------------------------- # Delete a Row Catalyst Android SDK enables you to delete a single row from a specific {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table. However, you will not be able to delete multiple rows at a time. You can delete a row from a table in either of these two methods: ### Delete a Row by passing the Row ID to the Table Instance You can delete a row from a table by passing the ROWID of the row as the argument to the {{%badge%}}**deleteRow()**{{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;TABLE_INSTANCE&gt;.deleteRow( rowId: Long, success: () → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;Unit&gt;? {{%/code%}} **Parameters**: * {{%badge%}}**rowId**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/data-store/records/#create-a-new-record"%}}unique ROWID{{%/link%}} of the row to be deleted. A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("Project").deleteRow(2823000000098007, //Replace this with your table name and the ROWID of the row { println("Row deleted successfully $it") }, { exception -> println("Delete Row failed $exception") }) {{%/code%}} ### Delete a Row by passing the Row Instance You can delete a row from a table simply by calling the {{%badge%}}**delete()**{{%/badge%}} method for the row instance. The {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-row-instance"%}}Row Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;ROW_INSTANCE&gt;.delete( success: () → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;Unit&gt;? {{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").getRow(2823000000095003, //Replace this with your table name and the ROWID of the row { row -> row.delete( { println("Row deleted successfully") }, { exception -> println("Delete row failed $exception") } )}, { exception -> println("Exception occured $exception") }) {{%/code%}} -------------------------------------------------------------------------------- title: "Update Rows" description: "You can update a single specific row or all rows in a Data Store table." last_updated: "2026-03-18T07:41:08.553Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/data-store/update-rows/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Rows (/en/cloud-scale/help/data-store/records) - Update Row - API (/en/api/code-reference/cloud-scale/data-store/update-row/#UpdateRow) -------------------------------------------------------------------------------- # Update Rows ### Update a Specific Row You can update a single specific row in a {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table using the {{%badge%}}**update()**{{%/badge%}} method. This enables you to update the values of one or more columns of the row by passing the modified values of the columns as key-value pairs. The {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-row-instance"%}}Row Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;ROW_INSTANCE&gt;.update( success: (ZCatalystRow) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystRow&gt;&gt;&gt;? {{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").getRow(2823000000095003, //Replace this with your table name and the ROWID of the row { row -> row.setColumnValue("Employee_Name", "Morgan Jones") row.update( { success -> println("Row updated successfully $success") }, { exception -> println("Failed to update the row $exception") } ) }) {{%/code%}} ### Update all Rows You can update multiple row in a table by passing an array of the rows as an argument to the {{%badge%}}**updateRows()**{{%/badge%}} method. This enables you to update the values of one or more columns of the rows, by passing the modified values of the columns as key-value pairs. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/android/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;TABLE_INSTANCE&gt;.updateRows( rows: ArrayList&lt;ZCatalystRow&gt;, success: (List&lt;ZCatalystRow&gt;) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;ZCatalystResponse&lt;ArrayList&lt;ZCatalystRow&gt;&gt;&gt;? {{%/code%}} **Parameters**: * {{%badge%}}**rows**{{%/badge%}}: The array of rows to be updated A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("EmployeeDetails").updateRows( //Replace this with your table name rowsList, //Set the names and values of the columns and add them to an arrayList { println(">>>> Rows updated successfully $it") }, { println(">>>> Update Rows Failed $it") }) {{%/code%}} --- ## SDK — Flutter — Data Store -------------------------------------------------------------------------------- title: "Create a New Data Store Instance" description: "You can create an instance of the Data Store to access the Data Store features in Flutter SDK." last_updated: "2026-03-18T07:41:08.555Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/data-store/create-data-store-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Data Store - API (/en/api/code-reference/cloud-scale/authentication/add-new-user/#AddNewUser) -------------------------------------------------------------------------------- # Data Store {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Catalyst Data Store{{%/link%}} is a cloud-based relational database management system that stores the persistent data of your application through tables. ### Create a New Data Store Instance To access the Data Store of a Catalyst project, you can create an instance of the Data Store, and enable the methods defined in this class to access the instance object. This will prevent unnecessary server calls. You must call the {{%badge%}}**getDataStoreInstance()**{{%/badge%}} method as shown in the code syntax below, to obtain the Data Store instance successfully: {{%code class="language-bash"%}}ZCatalystDataStore dataStore = ZCatalystApp.getInstance().getDataStoreInstance();{{%/code%}} -------------------------------------------------------------------------------- title: "Create a New Table Instance" description: "You can create a table instance for a particular table in the Data Store, and enable the methods defined in this class to access the instance object." last_updated: "2026-03-18T07:41:08.555Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/data-store/create-table-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Tables (/en/cloud-scale/help/data-store/tables) - Data Store - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Create a New Table Instance You can create a table instance for a particular table in the {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}, and enable the methods defined in this class to access the instance object. This prevents unnecessary server calls. A table instance can be created by calling the {{%badge%}}**getTableInstance()**{{%/badge%}} method in either of the two ways mentioned below. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used in both the methods is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-data-store-instance"%}}Data Store Instance page{{%/link%}}. ### Create a Table Instance by its ID You can create a table instance by passing the particular table ID as the argument to the {{%badge%}}getTableInstance(){{%/badge%}} method, as shown in the code syntax below: {{%code class="language-bash line-numbers"%}}ZCatalystTable &lt;DATA_STORE_INSTANCE&gt;.getTableInstance(String identifier){{%/code%}} **Parameters**: * {{%badge%}}**identifier**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/data-store/tables"%}}unique table ID{{%/link%}} of the specific table the instance needs to be created for A sample code snippet is shown below: {{%code class="language-bash"%}}var table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance("2823000000017011"){{%/code%}} <br> ### Create a Table Instance by its Name Alternatively, you can create a table instance by passing the particular table's name as the argument to the {{%badge%}}**getTableInstance()**{{%/badge%}} method, as shown in the code syntax below: {{%code class="language-bash line-numbers"%}}&lt;DATA_STORE_INSTANCE&gt;.getTableInstance( String identifier ){{%/code%}} **Parameters**: * {{%badge%}}**identifier**{{%/badge%}}: The name of the specific table the instance needs to be created for A sample code snippet is shown below: {{%code class="language-bash"%}}var table = ZCatalystApp.getInstance().getDataStoreInstance().getTableInstance(identifier: "Products"); {{%/code%}} -------------------------------------------------------------------------------- title: "Get Column Metadata" description: "You can obtain the metadata of all columns or single specific column of a Data Store table of the given instance by its ID or name." last_updated: "2026-03-18T07:41:08.555Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/data-store/get-column-metadata/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Columns (/en/cloud-scale/help/data-store/columns) - Get Metadata of Coulumns - API (/en/api/code-reference/cloud-scale/data-store/get-all-columns-metadata/#GetAllColumnsMetadata) -------------------------------------------------------------------------------- # Get Column Metadata ### Get the Metadata of a Specific Column You can obtain the metadata of a single specific column of a {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table of the given instance by calling the {{%badge%}}**getColumn()**{{%/badge%}} method. If the operation is successful, this method can return the metadata of the column, such as its data type, default value, or maximum length, or whether it is read only, unique, or mandatory. The metadata of a specific column can be fetched in two different ways. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in both the methods is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. #### i. Get a Column by its ID You can retrieve a specific column's metadata by passing the column ID as the argument to the {{%badge%}}getColumn(){{%/badge%}} method in the String format, as shown in the code structure below: {{%code class="language-bash line-numbers"%}}Future<(APIResponse, ZCatalystColumn)> &lt;TABLE_INSTANCE&gt;.getColumn(String identifier){{%/code%}} **Parameters**: * {{%badge%}}**identifier**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/data-store/columns/#column-characteristics"%}}unique Column ID{{%/link%}} of the particular column that needs to be retrieved A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}try { var (response, column) = await app .getDataStoreInstance() .getTableInstance('Projects') .getColumn('1624000000139101'); print(column.id) } on ZCatalystException catch (ex) { print(ex.toString()); }{{%/code%}} #### ii. Get a Column by its Name You can retrieve a specific column's metadata by passing the column's name as the argument to the {{%badge%}}getColumn(){{%/badge%}} method, as shown in the code syntax below: {{%code class="language-bash line-numbers"%}}Future<(APIResponse, ZCatalystColumn)> &lt;TABLE_INSTANCE&gt;.getColumn(String identifier){{%/code%}} **Parameters**: * {{%badge%}}**identifier**{{%/badge%}}: The name of the particular column that needs to be retrieved A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}try { var (response, column) = await app .getDataStoreInstance() .getTableInstance('Projects') .getColumn('Category'); print(column.id); } on ZCatalystException catch (ex) { print(ex.toString()); }{{%/code%}} <br> ### Get the Metadata of all Columns You can retrieve the metadata of all the columns of a table of the given instance, using the {{%badge%}}**getColumns()**{{%/badge%}} method, as shown in the code syntax below. If the operation is successful, this method can return the metadata of all the columns of the specific table. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, List&lt;ZCatalystColumn&gt;)> &lt;TABLE_INSTANCE&gt;.getColumns(){{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}try { var (response, columns) = await app .getDataStoreInstance() .getTableInstance('Projects') .getColumns(); for (var column in columns) { print(column.name); } } on ZCatalystException catch (ex) { print(ex.toString()); }{{%/code%}} -------------------------------------------------------------------------------- title: "Get Rows" description: "You can retrieve a single specific row or all rows from a Data Store table of the given instance." last_updated: "2026-03-18T07:41:08.555Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/data-store/get-rows/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Get All Rows - API (/en/api/code-reference/cloud-scale/data-store/get-all-rows/#GetAllRows) -------------------------------------------------------------------------------- # Get Rows ### Get a Specific Row You can retrieve a single specific row from a {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table of the given instance using the {{%badge%}}**getRow()**{{%/badge%}} method. This is done by passing the unique ROWID of the row as the argument to this method, as shown in the code syntax below. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, ZCatalystRow)> &lt;TABLE_INSTANCE&gt;.getRow(int id){{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/data-store/records/#create-a-new-record"%}}unique ROWID{{%/link%}} of the particular row that needs to be retrieved A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}try { ZCatalystTable table = app.getDataStoreInstance().getTableInstance('Projects'); var (response, row) = await table.getRow(1624000000139040); print(row.id); } on ZCatalystException catch (ex) { print(ex.toString()); }{{%/code%}} <br> ### Get All Rows You can retrieve all the rows of a table of the given instance using the {{%badge%}}**getRows()**{{%/badge%}} method, as shown in the code syntax below. If the operation is successful, this method will return all the rows of the table without any filters or conditions. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, List)> &lt;TABLE_INSTANCE&gt;.getRows(){{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}try { var (response, rows, resInfo) = await app .getDataStoreInstance() .getTableInstance('Projects') .getRows(); for (var row in rows) { print(row.getData()); } } on ZCatalystException catch (ex) { print(ex.toString()); }{{%/code%}} -------------------------------------------------------------------------------- title: "Get Column Value from Row" description: "You can retrieve a specific column's value in a row in a Data Store table." last_updated: "2026-03-18T07:41:08.555Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/data-store/get-column-value-from-row/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Columns (/en/cloud-scale/help/data-store/columns) - Get Metadata of Columns - API (/en/api/code-reference/cloud-scale/data-store/get-all-columns-metadata/#GetAllColumnsMetadata) -------------------------------------------------------------------------------- # Get Column Value from Row You can retrieve a specific column's value in a row in a {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table using the {{%badge%}}getColumnValue(){{%/badge%}} method. For example, if you require the value of a single column called 'product_name' in a row, you can use this method to obtain that specific value. You must pass the Column Name of the column as the argument to the {{%badge%}}getColumnValue(){{%/badge%}}method, as shown in the sample code syntax. You must first fetch an instance of the row as shown below. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}dynamic &lt;ROWINSTANCE&gt;.getColumnValue(){{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The The {{%link href="/en/cloud-scale/help/data-store/records/#create-a-new-record"%}}unique ROWID{{%/link%}} of the particular row that needs to be retrieved A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}var table = dataStore.getTableInstance(identifier: 'Products'); try{ var (response, table) = await table.getRow(id: 2823000000014176) print("quantity: ${row.getColumnValue("quantity")}") } on ZCatalystException catch (ex) { print("GET ROW FAILED: $ex"); }{{%/code%}} -------------------------------------------------------------------------------- title: "Create a New Row Instance" description: "You can create a new row instance for a particular table in the Data Store." last_updated: "2026-03-18T07:41:08.556Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/data-store/create-row-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Insert Row - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Create a New Row Instance You can create a new row instance for a particular table in the {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}, and enable the methods defined in this class to access the instance object. This prevents unnecessary server calls. A row instance can be created by calling the {{%badge%}}**newRow()**{{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used here is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. <br /> {{%code class="language-bash"%}}&lt;TABLE_INSTANCE&gt;.newRow(){{%/code%}} <br /> A sample code snippet is shown below: <br /> {{%code class="language-bash"%}}var row = ZCatalystApp.getInstance() .getDataStoreInstance() .getTableInstance(identifier: 'Products') .newRow(); {{%/code%}} -------------------------------------------------------------------------------- title: "Create Rows" description: "You can create a new row instance for a particular table in the Data Store, and enable the methods defined in this class to access the instance object." last_updated: "2026-03-18T07:41:08.556Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/data-store/create-rows/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Insert Row - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Create Rows ### Create a Single Row You can create a new row in a {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table of the given instance using the {{%badge%}}**newRow()**{{%/badge%}} method. You must set the values of the rows in the table, by specifying the column name and the corresponding row value as a key-value pair. The {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-row-instance"%}}Row Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, ZCatalystRow)> &lt;ROW_INSTANCE&gt;.create(){{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If a column was created with the {{%badge%}}{{%bold%}}is_unique{{%/bold%}}{{%/badge%}} or {{%badge%}}{{%bold%}}is_mandatory{{%/bold%}}{{%/badge%}} property enabled, you must ensure that the value is unique or is mandatorily passed, respectively. You must also ensure that the data you pass for a column is of the column's configured data type.{{%/note%}} A sample code snippet with creating a row instance is shown below: {{%code class="language-bash line-numbers"%}}var row = ZCatalystApp.getInstance() .getDataStoreInstance() .getTableInstance(identifier: 'Products') .newRow(); //Defining the row instance for the table and passing the key-value data for the row row.setColumnValue('product_name', 'power_bank'); row.setColumnValue('product_price', 2000); row.setColumnValue('product_quantity', 2); try { var (response, row) = await row.create(); print('New row created successfully : ${row.id}'); } on ZCatalystException catch (ex) { print('Failed to create the row: $exception'); }{{%/code%}} <br> ### Create Multiple Rows Catalyst Flutter SDK enables you to create multiple rows at a time in a table of the given instance. This is done by passing a list containing the rows that need to be inserted in the table. The list is passed as an argument to the {{%badge%}}**createRows()**{{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, List&lt;ZCatalystRow&gt;)> &lt;TABLE_INSTANCE&gt;.createRows(List&lt;ZCatalystRow&gt; rows){{%/code%}} **Parameters**: * {{%badge%}}**rows**{{%/badge%}}: The array of rows to be created A sample code snippet with creating row instances is shown below: {{%code class="language-bash line-numbers"%}}List&lt;ZCatalystRow&gt; newRows = []; //Create an array //Define row instances for rows to be created ZCatalystRow row1 = dataStore.getTableInstance(identifier: 'Products').newRow(); row1.setColumnValue('product_name', 'a'); row1.setColumnValue('product_price', 25); row1.setColumnValue('product_quantity', 50); ZCatalystRow row2 = dataStore.getTableInstance(identifier: 'Products').newRow(); row2.setColumnValue('product_name', 'b'); row2.setColumnValue('product_price', 30); row2.setColumnValue('product_quantity', 40); ZCatalystRow row3 = dataStore.getTableInstance(identifier: 'Products').newRow(); row3.setColumnValue('product_name', 'c'); row3.setColumnValue('product_price', 25); row3.setColumnValue('product_quantity', 70); //Add row instances to the array newRows.add(row1); newRows.add(row2); newRows.add(row3); try{ var (response, rows) = await dataStore.getTableInstance(identifier: 'Products').createRows(rows: newRows); for (var row in rows) { print(row.id); //Actions to be executed upon a successful creation of the rows } } on ZCatalystException catch (ex) { print('The IDs of the rows that were successfully created are listed below:') }{{%/code%}} -------------------------------------------------------------------------------- title: "Update Rows" description: "You can update a single specific row or all rows in a Data Store table." last_updated: "2026-03-18T07:41:08.556Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/data-store/update-rows/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Rows (/en/cloud-scale/help/data-store/records) - Update Row - API (/en/api/code-reference/cloud-scale/data-store/update-row/#UpdateRow) -------------------------------------------------------------------------------- # Update Rows ### Update a Specific Row You can update a single specific row in a {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table using the {{%badge%}}**update()**{{%/badge%}} method after fetching the row instance. This enables you to update the values of one or more columns of the row by passing the modified values of the columns as key-value pairs to the {{%badge%}}setColumnValue(){{%/badge%}} method. The {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-row-instance"%}}Row Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, ZCatalystRow)> &lt;ROW_INSTANCE&gt;.update(){{%/code%}} A sample code snippet with fetching the row instance is shown below: {{%code class="language-bash line-numbers"%}}var (response, row) = ZCatalystApp.getInstance() .getDataStoreInstance() .getTableInstance(identifier: 'Products') .getRow(id: 2823000000014176) row.setColumnValue('product_quantity', '100'); //Pass the modified column name and value in the row try { var (response, row) = await row.update(); print('Row updated successfully ${row.getColumnValue('product_quantity')}'); } on ZCatalystException catch (ex) { print('Failed to update the row $exception'); }{{%/code%}} <br> ### Update all Rows You can update multiple row in a table by passing a list of the rows as an argument to the {{%badge%}}**updateRows()**{{%/badge%}} method. You must fetch the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-row-instance"%}}row instances{{%/link%}} for each column key-value pair to be updated in a row and pass the modified data through the {{%badge%}}setColumnValue(){{%/badge%}} method. You can then add the row instances to an array and passing the array as an argument to the {{%badge%}}updateRows(){{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;TABLE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future<(APIResponse, List&lt;ZCatalystRow&gt;)> &lt;TABLE_INSTANCE&gt;.updateRows(List&lt;ZCatalystRow&gt; rows){{%/code%}} **Parameters**: * {{%badge%}}**rows**{{%/badge%}}: The list of rows to be updated A sample code snippet with fetching the row instance is shown below: {{%code class="language-bash line-numbers"%}}List&lt;ZCatalystRow&gt; modifiedRows = []; //Create an array var table = ZCatalystApp.getInstance() .getDataStoreInstance() .getTableInstance(identifier: 'Products'); //Create table instance try{ var (_, row) = await table.getRow(id: 2823000000014176); row.setColumnValue('product_price', '400'); modifiedRows.add(row); var (_, row) = await table.getRow(id: 2823000000014177); row.setColumnValue('product_price', '90'); modifiedRows.add(row); var (_, row) = await table.getRow(id: 2823000000014178); row.setColumnValue('product_price', '100'); modifiedRows.add(row); var (response, rows) = await table.updateRows(modifiedRows); } on ZCatalystException catch (ex) { print("Failed to update rows: $ex") }{{%/code%}} -------------------------------------------------------------------------------- title: "Delete a Row" description: "Catalyst Flutter SDK enables you to delete a single row from a specific Data Store table." last_updated: "2026-03-18T07:41:08.556Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/data-store/delete-row/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Delete Row - API (/en/api/code-reference/cloud-scale/data-store/delete-row/#DeleteRow) -------------------------------------------------------------------------------- # Delete a Row Catalyst Flutter SDK enables you to delete a single row from a specific {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table. However, you will not be able to delete multiple rows at a time. You can delete a row from a table by fetching the row instance and passing it to the {{%badge%}}delete(){{%/badge%}} method. The {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/flutter/v2/cloud-scale/data-store/create-row-instance"%}}Row Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}Future&lt;void&gt; &lt;ROW_INSTANCE&gt;.delete(){{%/code%}} A sample code snippet with fetching the row instance is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystTable table = app.getDataStoreInstance().getTableInstance('Products'); var (_, row) = await developers.getRow(1624000000139040); await row.delete();{{%/code%}} --- ## SDK — iOS — Data Store -------------------------------------------------------------------------------- title: "Create a New Data Store Instance" description: "You can obtain the details of the current end user of your application." last_updated: "2026-03-18T07:41:08.558Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Data Store - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Data Store {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Catalyst Data Store{{%/link%}} is a cloud-based relational database management system which stores the persistent data of your application in the form of tables. ### Create a New Data Store Instance To access the Data Store of a Catalyst project, you can create an instance of the Data Store, and enable the methods defined in this class to access the instance object. This will prevent unnecessary server calls. You must call the {{%badge%}}**getDataStoreInstance()**{{%/badge%}} method as shown in the code syntax below, to obtain the Data Store instance successfully: {{%code class="language-bash"%}}ZCatalystApp.shared.getDataStoreInstance(tableIdentifier : String) -> ZCatalystDataStore{{%/code%}} -------------------------------------------------------------------------------- title: "Get Column Metadata" description: "You can obtain the metadata of all columns or single specific column of a Data Store table of the given instance by its ID or name." last_updated: "2026-03-18T07:41:08.558Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/data-store/get-column-metadata/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Columns (/en/cloud-scale/help/data-store/columns) - Get Metadata of Coulumns - API (/en/api/code-reference/cloud-scale/data-store/get-all-columns-metadata/#GetAllColumnsMetadata) -------------------------------------------------------------------------------- # Get Column Metadata ### Get the Metadata of a Specific Column You can obtain the metadata of a single specific column of a {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table of the given instance, by calling the {{%badge%}}**getColumn()**{{%/badge%}} method. If the operation is successful, this method can return the metadata of the column such as its data type, default value, maximum length, or whether it is read only, unique, or mandatory. You can retrieve a specific column's metadata by passing the column ID as the argument to the {{%badge%}}getColumn(){{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used here is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;DATA_STORE_INSTANCE&gt;.getColumn( id : Int64, completion : @escaping ( Result&lt; ZCatalystColumn, ZCatalystError &gt; ) -> Void ){{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/data-store/columns/#column-characteristics"%}}unique Column ID{{%/link%}} of the particular column that needs to be retrieved * {{%badge%}}**completion**{{%/badge%}}: If the operation is successful, the completion block will return the column details. Else, it will return an error. A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.shared.getDataStoreInstance(tableIdentifier : String).getColumn(id :1096000000002459 ) { ( result ) in //Replace this with your column ID switch result{ case .success ( let column) : print(column.name) case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } {{%/code%}} ### Get the Metadata of all Columns You can retrieve the metadata of all the columns of a table of the given instance, using the {{%badge%}}**getColumns()**{{%/badge%}} method, as shown in the code syntax below. If the operation is successful, this method can return the metadata of all the columns of the specific table. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance created earlier in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;DATA_STORE_INSTANCE&gt;.getColumns( completion : @escaping ( Result&lt; [ ZCatalystColumn ], ZCatalystError &gt; ) -> Void ){{%/code%}} **Parameters**: * {{%badge%}}**completion**{{%/badge%}}: If the operation is successful, the completion block will return the details of all the columns in the table. Else, it will return an error. A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.shared.getDataStoreInstance(tableIdentifier : "EmployeeDetails").getColumns{ ( result ) in // Replace this with your table name switch result { case .success ( let columns) : for column in columns { print(column.name) } case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } {{%/code%}} -------------------------------------------------------------------------------- title: "Get Rows" description: "You can retrieve a single specific row or all rows, even with pagination, from a Data Store table of the given instance." last_updated: "2026-03-18T07:41:08.558Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/data-store/get-rows/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Get All Rows - API (/en/api/code-reference/cloud-scale/data-store/get-all-rows/#GetAllRows) -------------------------------------------------------------------------------- # Get Rows ### Get a Specific Row You can retrieve a single specific row from a {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table of the given instance using the {{%badge%}}**getRow()**{{%/badge%}} method. This is done by passing the unique ROWID of the row as the argument to this method, as shown in the code syntax below. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance"%}}Data Store Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;DATA_STORE_INSTANCE&gt;.getRow(id : Int64, completion: @escaping (Result&lt;ZCatalystRow, ZCatalystError&gt;) -> Void){{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/data-store/records/#create-a-new-record"%}}unique ROWID{{%/link%}} of the particular row that needs to be retrieved * {{%badge%}}**completion**{{%/badge%}}: If the operation is successful, the completion block will return the details of the row. Else, it will return an error. A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.shared.getDataStoreInstance(tableIdentifier : "EmployeeDetails").getRow(id: 1096000000002845){( result ) in // Replace this with your Table identifier and ROW ID here switch result{ case .success ( let row) : print(row.id) case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } {{%/code%}} <br> ### Get Rows Through Pagination You can retrieve all the rows from a table in the Data Store by incorporating pagination in your code. Pagination allows you to fetch the rows of a table in batches or pages through iterations. For example, if you require the rows to be fetched in batches of 100 as individual pages, you can define the maximum rows to be fetched in each page and specify the count using {{%badge%}}**maxRows**{{%/badge%}} as shown below. Additionally, after each execution of the loop, you will receive a token string in the response that authorizes the subsequent fetching of data. You can pass this as the value for {{%badge%}}nextToken{{%/badge%}} during the subsequent iteration. During the first execution of the loop, the {{%badge%}}nextToken{{%/badge%}} string is not passed. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used in the code snippets below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance/"%}}Data Store Instance page{{%/link%}}. {{%code class="language-bash line-numbers"%}}&lt;DATA_STORE_INSTANCE&gt;.getRows(nextToken : String?, maxRecord : String?, completion: @escaping (Result&lt;[ZCatalystRow], ZCatalystError&gt;) -&gt; Void){{%/code%}} **Parameters**: * {{%badge%}}**maxRows**{{%/badge%}}: The maximum number of rows to be fetched in this iteration * {{%badge%}}**nextToken**{{%/badge%}}: The authorization token to fetch the next set of rows If you prefer to fetch all pending rows after the first iteration, you can avoid passing the {{%badge%}}maxRows{{%/badge%}} limit. After all the rows are fetched, the pagination will be complete. <br> ### Get All Rows You can retrieve all the rows of a table of the given instance, using the {{%badge%}}**getRows()**{{%/badge%}} method, as shown in the code syntax below. If the operation is successful, this method will return all the rows of the table without any filters or conditions. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance"%}}Data Store Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;DATA_STORE_INSTANCE&gt;.getRows(completion: @escaping (Result&lt;[ZCatalystRow], ZCatalystError&gt;) -> Void){{%/code%}} **Parameters**: * {{%badge%}}**completion**{{%/badge%}}: If the operation is successful, the completion block will return the details of all the rows. Else, it will return an error. A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.shared.getDataStoreInstance(tableIdentifier : "EmployeeDetails").getRows{ ( result ) in //Replace this with your table name switch result{ case .success ( let rows) : for row in rows{ print(row.id) } case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } {{%/code%}} -------------------------------------------------------------------------------- title: "Create a New Row Instance" description: "You can create a new row instance for a particular table in the Data Store." last_updated: "2026-03-18T07:41:08.558Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/data-store/create-new-row-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Insert Row - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Create a New Row Instance You can create a new row instance for a particular table in the {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}}, and enable the methods defined in this class to access the instance object. This prevents unnecessary server calls. A row instance can be created by calling the {{%badge%}}**newRow()**{{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used here is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance"%}}Data Store Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;DATA_STORE_INSTANCE&gt;.newRow() -> ZCatalystRow{{%/code%}} A sample code snippet is shown below: {{%code class="language-bash"%}}let instance = ZCatalystApp.shared.getDataStoreInstance(tableIdentifier: “1096000000002071” ).newRow() //Replace this with your table ID{{%/code%}} -------------------------------------------------------------------------------- title: "Get Column Value from Row" description: "You can retrieve a specific column's value in a row in a Data Store table." last_updated: "2026-03-18T07:41:08.559Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/data-store/column-value-from-row/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Columns (/en/cloud-scale/help/data-store/columns) - Get Metadata of Columns - API (/en/api/code-reference/cloud-scale/data-store/get-all-columns-metadata/#GetAllColumnsMetadata) -------------------------------------------------------------------------------- # Get Column Value from Row You can retrieve a specific column's value in a row in a {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table. That is, if you require the value of the column 'Employee ID' alone for in a row, you can retrieve it using this operation. You can execute this operation in three ways, as shown below. The {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in all the code sections below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-new-row-instance"%}}Row Instance page{{%/link%}}. ### If you know the data type of the column: {{%code class="language-bash"%}}let data : &lt;T&gt; = try &lt;ROW_INSTANCE&gt;.getValue(forKey: "&lt;columnName&gt;"){{%/code%}} **Parameters**: * {{%badge%}}**T**{{%/badge%}}: Datatype of the expected value * {{%badge%}}**columnName**{{%/badge%}}: Name of the column for that needs to be fetched A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.shared.getDataStoreInstance().getTableInstance(id: 1096000000002071).getRow(id: 1096000000002845) {( result ) in //Replace this with your Table ID and ROWID switch result{ case .success ( let row) : do{ let data : String = try row.getValue(forKey: "EmpID") as! String print(data) } catch{ print("Error occured") } case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } {{%/code%}} ### If you don't know the data type of the column: {{%code class="language-bash"%}}let data : &lt;T&gt;? = &lt;ROW_INSTANCE&gt;.getValue(forKey: "&lt;columnName&gt;"){{%/code%}} **Parameters**: * {{%badge%}}**T**{{%/badge%}}: Datatype of the expected value * {{%badge%}}**columnName**{{%/badge%}}: Name of the column for that needs to be fetched A sample code snippet is shown below: {{%code class="language-bash"%}}ZCatalystApp.shared.getDataStoreInstance().getTableInstance(id: 1096000000002071).getRow(id: 1096000000002845) {( result ) in //Replace this with your Table ID and Row ID switch result{ case .success ( let row) : let data :String? = row.getValue(forKey: "EmpID") print(data) case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } {{%/code%}} ### Without using getValue(): {{%code class="language-bash"%}}let data : &lt;T&gt;? = &lt;ROW_INSTANCE&gt;[ "&lt;columnName&gt;" ]{{%/code%}} **Parameters**: * {{%badge%}}**T**{{%/badge%}}: Datatype of the expected value * {{%badge%}}**columnName**{{%/badge%}}: Name of the column for that needs to be fetched {{%code class="language-bash"%}}ZCatalystApp.shared.getDataStoreInstance().getTableInstance(id: 1096000000002071).getRow(id: 1096000000002845) {( result ) in //Replace this with your Table ID and Row ID switch result{ case .success ( let row) : let data :String? = row[ "EmpID" ] print(data) case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } {{%/code%}} -------------------------------------------------------------------------------- title: "Get Row Data" description: "The actual data of a specific row can be retrieved." last_updated: "2026-03-18T07:41:08.559Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/data-store/get-row-data/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Get Rows - API (/en/api/code-reference/cloud-scale/data-store/get-all-rows/#GetAllRows) -------------------------------------------------------------------------------- # Get Row Data The actual data of a specific row can be retrieved using {{%badge%}}getData(){{%/badge%}} method, as shown below. This returns the row in a dictionary format. The {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance generated in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-new-row-instance"%}}Row Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;ROW_INSTANCE&gt;.getRow() -> [ String : Any? ]{{%/code%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.shared.getDataStoreInstance(tableIdentifier: "1096000000002071").getRow(id: 1096000000002845) {( result ) in //Replace this with your Table ID and ROW ID switch result{ case .success ( let row) : let datas = row.getData() print(datas) case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } {{%/code%}} -------------------------------------------------------------------------------- title: "Add Column Value to Row" description: "You can set the value for a single specific column in a row." last_updated: "2026-03-18T07:41:08.559Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/data-store/add-column-value-to-row/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Get Metadata of Coulumns - API (/en/api/code-reference/cloud-scale/data-store/get-all-columns-metadata/#GetAllColumnsMetadata) -------------------------------------------------------------------------------- # Add Column Value to Row You can set the value for a single specific column in a row by this method. This can be used while creating or updating a row in a column. The {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code below is the instance created in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-new-row-instance"%}}Row Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;ROW_INSTANCE&gt;.setColumnValue( columnName : String, value : Any? ){{%/code%}} **Parameters**: * {{%badge%}}**columnName**{{%/badge%}}: The name of the column the value should be set for * {{%badge%}}**value**{{%/badge%}}: The value to be set for the column A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}let instance = ZCatalystApp.shared.getDataStoreInstance().getTableInstance(id: 1096000000002071).newRow() //Replace this with your Table ID instance.setColumnValue(columnName: "Department_Name", value: "Marketing") instance.setColumnValue(columnName: "Employee_Name", value: "Robert Jones") //Replace this with your column name and value {{%/code%}} -------------------------------------------------------------------------------- title: "Create Rows" description: "You can create a single row or multiple rows in a data store table." last_updated: "2026-03-18T07:41:08.559Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/data-store/create-rows/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Insert Row - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) -------------------------------------------------------------------------------- # Create Rows ### Create a Single Row You can create a new row in a {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table of the given instance using the {{%badge%}}**newRow()**{{%/badge%}} method, as shown below. You must set the values of the rows in the table, by specifying the column name and the corresponding row value as a key-value pair. The {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-new-row-instance"%}}Row Instance page{{%/link%}}. The column value is set using the method discussed in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/add-column-value-to-row"%}}Add a Column Value page{{%/link%}}. **Parameters**: * {{%badge%}}**completion**{{%/badge%}}: If the operation is successful, the completion block will return the details of the created row, such as its unique ROWID and other meta information. Else, it will return an error. {{%note%}}{{%bold%}}Note:{{%/bold%}} If a column was created with the {{%badge%}}{{%bold%}}is_unique{{%/bold%}}{{%/badge%}} or {{%badge%}}{{%bold%}}is_mandatory{{%/bold%}}{{%/badge%}} property enabled, you must ensure that the value is unique or is mandatorily passed, respectively. You must also ensure that the data you pass for a column is of the column's configured data type. {{%/note%}} A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}let instance = ZCatalystApp.shared.getDataStoreInstance(tableIdentifier: "1096000000002071").newRow() //Replace this with your Table ID instance.setColumnValue(columnName: "Department_Name", value: "Marketing") instance.setColumnValue(columnName: "Employee_Name", value: "Linda Page") //Replace this with your column name and value instance.create() {(result) in switch result{ case .success ( let row) : print("A new row is successfully created with row id /(row.id)") case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } {{%/code%}} ### Create Multiple Rows iOS SDK enables you to create multiple rows in a table of the given instance at a time. This is done by passing an array containing the rows that need to be inserted in the table. The array is passed as an argument to the {{%badge%}}**create()**{{%/badge%}} method, as shown in the code structure below. You must pass the array of {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}}, after creating the instance for each row as explained in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-new-row-instance"%}}Row Instance page{{%/link%}}. Their column value must be set as discussed in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/add-column-value-to-row"%}}Add a Column Value page{{%/link%}}. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance created earlier in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance/"%}}Data Store Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;DATA_STORE_INSTANCE&gt;.create(_ rows: [ ZCatalystRow ], completion: @escaping(Result&lt;[ZCatalystRow], ZCatalystError&gt;) -> Void){{%/code%}} **Parameters**: * {{%badge%}}**rows**{{%/badge%}}: The array of rows to be created. * {{%badge%}}**completion**{{%/badge%}}: If the operation is successful, the completion block returns the details of the rows created, such as their ROWIDs and other meta information. Else, it returns an error. A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}let row_instance1 = ZCatalystApp.shared.getDataStoreInstance(tableIdentifier: "1096000000002071").newRow() //replace your table id here row_instance1.setColumnValue(columnName: "Department_Name", value: "Marketing") row_instance1.setColumnValue(columnName: "Employee_Name", value: "Robert Jones") //Replace this with your column name and value let row_instance2 = ZCatalystApp.shared.getDataStoreInstance(tableIdentifier: "1096000000002071").newRow() //Replace this with your Table ID row_instance2.setColumnValue(columnName: "Department_Name", value: "Finance") row_instance2.setColumnValue(columnName: "Employee_Name", value: "Louis Smith") //Replace this with your column name and value ZCatalystApp.shared.getDataStoreInstance(tableIdentifier: "1096000000002071").create([row_instance1, row_instance2]) {(result) in switch result{ case .success ( let rows) : print("The rows ids which are successfully created are listed below") for row in rows{ print(row.id) } case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } {{%/code%}} -------------------------------------------------------------------------------- title: "Update Rows" description: "You can update a single row or multiple rows in a data store table." last_updated: "2026-03-18T07:41:08.559Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/data-store/update-rows/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Rows (/en/cloud-scale/help/data-store/records) - Update Row - API (/en/api/code-reference/cloud-scale/data-store/update-row/#UpdateRow) -------------------------------------------------------------------------------- # Update Rows ### Update a Specific Row You can update a single specific row in a {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table using the {{%badge%}}**update()**{{%/badge%}} method. This enables you to update the values of one or more columns of the row by passing the modified values of the columns as key-value pairs. The {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-new-row-instance"%}}Row Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;ROW_INSTANCE&gt;.update( completion: @escaping(Result&lt;ZCatalystRow, ZCatalystError&gt;) -> Void){{%/code%}} **Parameters**: * {{%badge%}}**completion**{{%/badge%}}: If the operation is successful, the completion block will return the details of the updated row. Else, it will return an error. A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.shared.getDataStoreInstance(tableIdentifier: "1096000000002071").getRow(id: 3376000000170191){(result)in //Replace this with your Table ID switch result{ case .success ( let row) : row.setColumnValue(columnName: "Employee_Name", value: "Morgan Jones") //replace your column name and value here row.update {(update_result) in switch update_result{ case .success(let updated_row) : print("Name is updated") case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } case .error( let error ) : print( "Error occurred &gt;&gt;&gt; \( error )" ) } } {{%/code%}} ### Update all Rows You can update multiple row in a table by passing an array of the rows as an argument to the {{%badge%}}update(){{%/badge%}} method. This enables you to update the values of one or more columns of the rows, by passing the modified values of the columns as key-value pairs. You must pass the array of the row instances to be updated by {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-new-row-instance"%}}creating the instance for each row{{%/link%}}, and passing the updated value of each corresponding column using the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/add-column-value-to-row"%}}Add Column Value method{{%/link%}}, as shown in the code below. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used in the code below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-new-table-instance"%}}Table Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;DATA_STORE_INSTANCE&gt;.update(_ rows: [ ZCatalystRow ], completion: @escaping(Result&lt;[ZCatalystRow], ZCatalystError&gt;) -> Void){{%/code%}} **Parameters**: * {{%badge%}}**rows**{{%/badge%}}: The array of rows to be updated * {{%badge%}}**completion**{{%/badge%}}: If the operation is successful, the completion block will return the details of all the updated rows. Else, it will return an error. A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}let data_store_instance = ZCatalystApp.shared.getDataStoreInstance(tableIdentifier: "EmployeeDetails")//Replace this with you Table Name data_store_instance.getRows{(result)in switch result{ case .success ( let rows) : for row in rows{ row.setColumnValue(columnName: "Employee_Name", value: "Morgan Jones") } data_store_instance.update(rows) {(result) in switch result { case .success ( let updated_rows): print("Rows has been successfully updated"); case .error( let error ) : print( "Error occurred >>> \( error )" ) } } case .error(let error): print("Error occurred >>> \( error )") } } {{%/code%}} -------------------------------------------------------------------------------- title: "Delete a Row" description: "Catalyst iOS SDK enables you to delete a single row from a specific Data Store table by either the Row ID or the Row Instance." last_updated: "2026-03-18T07:41:08.560Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/data-store/delete-row/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) - Records (/en/cloud-scale/help/data-store/records) - Delete Row - API (/en/api/code-reference/cloud-scale/data-store/delete-row/#DeleteRow) -------------------------------------------------------------------------------- # Delete a Row Catalyst iOS SDK enables you to delete a single row from a specific {{%link href="/en/cloud-scale/help/data-store/introduction"%}}Data Store{{%/link%}} table. However, you will not be able to delete multiple rows at a time. You can delete a row from a table in any of these two methods: ### Delete a Row by passing the Row ID to the Table Instance You can delete a row from a table by passing the ROWID of the row as the argument to the {{%badge%}}**deleteRow()**{{%/badge%}} method, as shown in the code syntax below. The {{%badge%}}&lt;DATA_STORE_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-data-store-instance/"%}}Data Store Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;DATA_STORE_INSTANCE&gt;.deleteRow( id : Int64, completion : @escaping( ZCatalystError? ) -> Void ){{%/code%}} **Parameters**: * {{%badge%}}**id**{{%/badge%}}: The {{%link href="/en/cloud-scale/help/data-store/records/#create-a-new-record"%}}unique ROWID{{%/link%}} of the row to be deleted. * {{%badge%}}**completion**{{%/badge%}}: If the operation is successful, the completion block will return the details of the deleted row. Else, it will return an error. A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}}ZCatalystApp.shared.getDataStoreInstance(tableIdentifier: "1096000000002071").deleteRow(id: 3376000000171021){( error ) in //Replace this with your ROWID if let error = error{ print( "Error occurred &gt;&gt;&gt; \( error )" ) } else { print("Row is successfully deleted.") } } {{%/code%}} ### Delete a Row by passing the Row Instance You can delete a row from a table simply by calling the {{%badge%}}**delete()**{{%/badge%}} method for the row instance. The {{%badge%}}&lt;ROW_INSTANCE&gt;{{%/badge%}} used in the code syntax below is the instance defined in the {{%link href="/en/sdk/ios/v2/cloud-scale/data-store/create-new-row-instance"%}}Row Instance page{{%/link%}}. {{%code class="language-bash"%}}&lt;ROW_INSTANCE&gt;.delete(completion: @escaping( ZCatalystError? ) -> Void){{%/code%}} **Parameters**: * {{%badge%}}**completion**{{%/badge%}}: If the operation is successful, the completion block will return the details of the deleted rows. Else, it will return an error. A sample code snippet is shown below: {{%code class="language-bash line-numbers"%}} ZCatalystApp.shared.getDataStoreInstance().getTableInstance(id: 1096000000002071).getRow(id: 3376000000171021){(result)in //Replace this with your ROWID switch result { case .success ( let row) : row.delete() {( error ) in if let error = error{ print( "Error occurred &gt;&gt;&gt; \( error )" ) } else { print("Row is successfully deleted.") } } case .error(let error) : print("Error occurred &gt;&gt;&gt; \( error )") } } {{%/code%}} --- ## SDK — Java — Data Store -------------------------------------------------------------------------------- title: "Get Table Meta" description: "This page describes the method to fetch the meta data of a single table or multiple tables in your Java application with sample code snippets" last_updated: "2026-03-18T07:41:08.561Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/get-table-meta/" service: "Cloud Scale" related: - Get Table Meta - API (/en/api/code-reference/cloud-scale/data-store/get-table-metadata/#GetTableMetadata) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get Table Meta The meta data of a single table or multiple tables can be obtained in several ways. ### Get a single table meta by tableID A table's meta data is fetched by referring the table Id, using the method {{%badge%}}getTable(){{%/badge%}} as given below, #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; {{% /panel_without_adjustment %}} {{%code class="language-java"%}}//Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable tableMeta = object.getTable(1510000000110121L); {{%/code%}} ### Get a single table meta by table name On the other hand, you can refer the table name also to fetch the meta data details of a table where table name is passed as an argument to the {{%badge%}}getTable(){{%/badge%}} method. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}//Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable tableMeta = object.getTable("SampleTable"); {{%/code%}} ### Get all the tables In addition to getting the meta data of a single table, you can fetch the details of all the tables in a catalyst project using {{%badge%}}getAllTables(){{%/badge%}} method. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; {{% /panel_without_adjustment %}} {{%code class="language-java"%}}//Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get all the Tables in a given Project List<ZCTable> tableList =object.getAllTables(); {{%/code%}} -------------------------------------------------------------------------------- title: "Get Column Meta" description: "This page describes the method to retrieve metadata of a single column or multiple columns from a table in the Data Store in your Java application with sample code snippets" last_updated: "2026-03-18T07:41:08.561Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/get-column-meta/" service: "Cloud Scale" related: - Get Column Meta - API (/en/api/code-reference/cloud-scale/data-store/get-column-metadata/#GetColumnMetadata) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get Column Meta There are methods to retrieve the metadata of a single column or multiple columns of a particular table. ### Get a single column meta by columnID while a table's meta data was fetched previously, now it is to fetch a particular column's meta data of a table using {{%badge%}}getColumn(){{%/badge%}} method. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCColumn; import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; {{% /panel_without_adjustment %}} {{%code class="language-java"%}}//Create Base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable table = object.getTable(1510000000110121L); //Get the Meta of a specific column of using columnID ZCColumn column = table.getColumn("1510000000110832"); {{%/code%}} <br> ### Get a single column meta by column name An alternative way to get the meta data of a column is referring to the table name instead of table Id. This also returns the same response as that of the previous one. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCColumn; import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; {{% /panel_without_adjustment %}} {{%code class="language-java"%}}//Create Base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable table = object.getTable(1510000000110121L); //Get the Meta of a specific column of using column name ZCColumn column = table.getColumn("Name"); {{%/code%}} <br> ### Get all the columns In addition to getting the meta data of a single column, you can retrieve the meta data of all the columns of a particular table using _getAllColumns()_ method. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCColumn; import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; {{% /panel_without_adjustment %}} {{%code class="language-java"%}}//Create Base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable table = object.getTable(1510000000110121L); //Get all the Columns in the Table List columns = table.getAllColumns(); {{%/code%}} -------------------------------------------------------------------------------- title: "Get a Table Instance" description: "This page describes the method to fetch the table instance using tableID and name from a table in the Data Store in your Java application with sample code snippets." last_updated: "2026-03-18T07:41:08.561Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/get-table-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get Table Instance ### Get the table instance using tableID An empty _table instance_ is created as the first step to refer a table and perform its operations.This is done through the {{%badge%}}getTableInstance(){{%/badge%}} method which actually doesn't fire a server side call. This does not hold any values. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; {{% /panel_without_adjustment %}} {{%code class="language-java"%}}//Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the tableID on base object ZCTable tableMeta =object.getTableInstance(1510000000110121L); {{%/code%}} <br> ### Get the table instance using table name Table name is passed as an argument here to refer the table, without firing the server side call which is equivalent to the previous case. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}//Create Base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable tableMeta = object.getTableInstance("SampleTable"); {{%/code%}} -------------------------------------------------------------------------------- title: "Insert Rows" description: "This page describes the method to insert a single row or rows in bulk from a table in the Data Store in your Java application with sample code snippets." last_updated: "2026-03-18T07:41:08.562Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/insert-rows/" service: "Cloud Scale" related: - Insert Rows - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Insert Rows You can insert a new row of data or a record in a table in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}} by referring to the table's unique ID or name. You can also insert multiple rows in a table as explained in the next section. {{%note%}}{{%bold%}}Note:{{%/bold%}} 1. The table and the columns in it must already be created. You can {{%link href="/en/cloud-scale/help/data-store/tables/#create-a-new-table" %}}create a table{{%/link%}} and {{%link href="/en/cloud-scale/help/data-store/columns/#create-a-new-column" %}}the columns for it{{%/link%}} from the console. 2. You will be able to insert upto 5000 records in each table per project in the {{%link href="/en/deployment-and-billing//environments/introduction" %}}development environment{{%/link%}}. You can create upto 25,000 records overall in each project in the development environment. There are no upper limits for record creation in the production environment.{{%/note%}} ### Insert a Single Row You must create a row instance and then pass the column names and their corresponding values as shown in the sample code below. The {{%badge%}}insertRow(){{%/badge%}} method inserts a row to the table whose instance you create by referring to its unique name or ID. A unique {{%badge%}}RowID{{%/badge%}} value for the row is automatically generated once a row is inserted. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCTable; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}} //Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the tableID on base object ZCTable tab = object.getTable("1510000000110121"); //Create a row instance ZCRowObject row = ZCRowObject.getInstance(); //Set the required column values using set() method on the row instance row.set("Name","George Smith"); row.set("Age", 25); //Add the single row to table by calling insertRow() method tab.insertRow(row); {{% /code%}} <br> ### Insert Multiple rows You can insert multiple rows in a table by constructing a list of row objects and passing it as an argument to the {{%badge%}}insertRows(){{%/badge%}} method as shown below. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCTable; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}} //Create a List of RowObjects List rows = new ArrayList(); //Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the tableID on base object ZCTable tab = object.getTable(1510000000110121L); //Create required number of row instances ZCRowObject row1 = ZCRowObject.getInstance(); ZCRowObject row2 = ZCRowObject.getInstance(); //Set the column values on the respective rows using set() method row1.set("Name","George Smith"); row1.set("Age", 25); row2.set("Name","Moana Violet"); row2.set("Age", 22); //Add rows to List using add() method rows.add(row1); rows.add(row2); //Add the list to table using insertRows() method tab.insertRows(rows); {{%/code%}} -------------------------------------------------------------------------------- title: "Get Rows" description: "This page describes the method to fetch a single row or all the rows from a table in the Data Store in your Java application with sample code snippets" last_updated: "2026-03-18T07:41:08.562Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/get-rows/" service: "Cloud Scale" related: - Get Rows - API (/en/api/code-reference/cloud-scale/data-store/get-all-rows/#GetAllRows) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get Rows You can retrieve single row or multiple rows of data from a table in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}}. You can fetch the rows by passing the unique Table ID of table to the {{%badge%}}getTable(){{%/badge%}} method as shown in the sample code below. ### Get a Single Row You can fetch a single row of data from a table using the {{%badge%}}getRow(){{%/badge%}} method. You must pass the unique Row ID of the row that you require to be fetched to this method as shown below. You must first fetch a base object instance using {{%badge%}}getInstance(){{%/badge%}}. Using the base object instance, you must fetch a table instance that can be used to fetch the row. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCTable; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//Create a base object instance ZCObject ZCObject obj = ZCObject.getInstance(); //Get a table instance referring to the table ID using the base object ZCTable tab = obj.getTable(1510000000110121L); //Fetch a single row from the table by passing the Row ID ZCRowObject row = tab.getRow(1510000000108103L); {{%/code%}} <br> ### Get All Rows Through Pagination You can retrieve all the rows from a table in the Data Store by incorporating pagination in your code using the {{%badge%}}ZCRowPagedResponse{{%/badge%}} class. Pagination allows you to fetch the rows of a table in batches or pages through iterations. For example, if you require the rows to be fetched in batches of 100 as individual pages, you can define a variable for the maximum rows to be fetched in each page and specify the count. The sample code below assigns {{%badge%}}maxRows{{%/badge%}} as 100. {{%note%}}{{%bold%}}Note:{{%/bold%}} The {{%badge%}}maxRows{{%/badge%}} parameter is optional. The SDK call will return 200 rows in a single page by default if this value is not specified.{{%/note%}} Additionally, after each execution of the loop, you will receive a token string in the response that authorizes the subsequent fetching of data. You can fetch this token through the {{%badge%}}getNextToken(){{%/badge%}} method, and pass it as the value for {{%badge%}}nextToken{{%/badge%}} during the subsequent iteration, as shown in the code below. During the first execution of the loop, the value for the {{%badge%}}nextToken{{%/badge%}} string is assigned as null. This iteration is executed until all the rows fetched, which is validated by the {{%badge%}}moreRecordsAvailable(){{%/badge%}} method. You can specify the table name and the names of the columns to be fetched as shown in the sample code. {{%note%}}{{%bold%}}Note:{{%/bold%}} Pagination has been made available from the Java SDK v1.7.0 update. This will not be available in the older versions of the Java SDK.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCRowPagedResponse; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}String nextToken = null; //Declare the value for nextToken as null for the first iteration ZCRowPagedResponse pagedResp; //Define the paged response object Long maxRows = 100; //Define the maximum rows to be fetched in a single page do { pagedResp = ZCObject.getInstance().getTable(empDetails).getPagedRows(nextToken, maxRows); //Specify the table name and fetch the paged response by passing nextToken and maxRows //Fetch the columns from the table by passing the column names for(ZCRowObject row : pagedResp.getRows()) { basicIO.write("Employee ID: " +row.get("empID") + ","); basicIO.write("Name: " +row.get("empName") + ","); basicIO.write("Department: " +row.get("empDept") + ","); } //Validate the iteration and pass the token string obtained in the response for the next iteration if(pagedResp.moreRecordsAvailable()) { nextToken = pagedResp.getNextToken(); } } while(pagedResp.moreRecordsAvailable()); {{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} We have deprecated support for the {{%badge%}}getAllRows(){{%/badge%}} method that was available earlier to fetch multiple rows of data from a table. Pagination is now available as an enhancement that enables you to fetch all rows, without any limitations on the number of rows fetched. The {{%badge%}}getAllRows(){{%/badge%}} method will be removed from all future SDK versions. Please ensure that you upgrade your code accordingly.{{%/note%}} -------------------------------------------------------------------------------- title: "Update Rows" description: "This page describes the method to update a single row or rows in bulk in a table in the Data Store in your Java application with sample code snippets." last_updated: "2026-03-18T07:41:08.562Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/update-rows/" service: "Cloud Scale" related: - Update Rows - API (/en/api/code-reference/cloud-scale/data-store/update-row/#UpdateRow) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Update Rows If a single row or multiple rows are to be updated with one or more column values in a table,{{%badge%}} updateRows(){{%/badge%}} method is used. {{%note%}}{{%bold%}}Note:{{%/bold%}} ROWDID should be set to update a row.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; import com.zc.component.object.ZCTable;{{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//Create a base Object Instance ZCObject object = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable table = object.getTable(1510000000110121L); // replace table ID //Create a List of RowObjects List<ZCRowObject> rows = new ArrayList(); //Create row instances ZCRowObject row1 = ZCRowObject.getInstance(); ZCRowObject row2 = ZCRowObject.getInstance(); //Set the updated value on the rows referring the ROWIDs row1.set("Name","Amelia S"); row1.set("Age", 19); row1.set("ROWID", 1510000000109113L); // replace row id row2.set("Name", "Walker Don"); row2.set("Age", 19); row2.set("ROWID", 1510000000109115L); // replace row id //Add Rows to the List rows.add(row1); rows.add(row2); //Update Multiple rows in table table.updateRows(rows); {{% /code%}} -------------------------------------------------------------------------------- title: "Delete Row" description: "This page describes the method to delete a single row from a table in the Data Store in your Java application with sample code snippets" last_updated: "2026-03-18T07:41:08.562Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/delete-row/" service: "Cloud Scale" related: - Delete Data - API (/en/api/code-reference/cloud-scale/data-store/delete-row/#DeleteRow) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Delete Row A row can be deleted from a table simply by passing the {{%bold%}}ROWID{{%/bold%}} in the calling method {{%badge%}}deteleRow().{{%/badge%}} You will not be able to delete more than one row at a time. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCTable; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//Create Base Object Instance ZCObject obj = ZCObject.getInstance(); //Get a Table Instance referring the table ID on base object ZCTable tab = obj.getTable(1510000000110121L); //Delete a single row with its ROWID tab.deleteRow(1510000000109115L); {{% /code%}} -------------------------------------------------------------------------------- title: "Bulk Read Rows" description: "This page describes the method to read multiple rows from a table in the Data Store in your Java application with sample code snippets" last_updated: "2026-03-18T07:41:08.562Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/bulk-read/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Bulk Read Rows Catalyst allows you to perform bulk read jobs on a specific table present in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}}. In the SDK snippet below, the Bulk Read job can read thousands of records from a specific table and generate a CSV file containing the results of the read operation, if the job is successful. The table is referred to by its unique {{%link href="/en/cloud-scale/help/data-store/tables/" %}}Table ID{{%/link%}}. Catalyst supports the following methods for bulk write in Java SDK: <table class="content-table"> <thead> <tr> <th>Method Used</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}createBulkReadJob(){{%/badge%}}</td> <td>Create a new bulk read job.</td> </tr> <td>{{%badge%}}getBulkReadJobStatus(){{%/badge%}}</td> <td>to find out the status and the result of the bulk read job.</td> </tr> </tbody> </table> Copy the SDK snippet below to perform a bulk read job on a particular table. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.bulk.ZCBulkReadServices; import com.zc.component.object.bulk.ZCBulkQueryDetails; import com.zc.component.object.bulk.ZCBulkCallbackDetails; import com.zc.component.object.bulk.ZCDataStoreBulk; import com.zc.component.object.bulk.result.ZCBulkResult; import com.zc.component.object.bulk.ZCBulkReadDetails;{{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}ZCBulkReadServices bulkRead = ZCDataStoreBulk.getInstance().getBulkReadInstance(); bulkRead.createBulkReadJob(12096000000642178L); //Provide your Table ID // create bulkread job with table ID ZCBulkQueryDetails bulkQueryDetails = ZCBulkQueryDetails.getInstance(); // get bulk query details instance ZCBulkCallbackDetails callbackDetails = ZCBulkCallbackDetails.getInstance(); // get bulk callback details instance bulkRead.createBulkReadJob(12096000000642178L, bulkQueryDetails); //Provide your Table ID // create bulkread job with table ID and query details bulkRead.createBulkReadJob(12096000000642178L, bulkQueryDetails, callbackDetails); //Provide your Table ID // create bulkread job with table ID, query details and callback details. ZCBulkReadDetails bulkReadDetails = ZCBulkReadDetails.getInstance(); // create bulk read details instance. bulkReadDetails.setTableIdentifier(12096000000642178L); //Provide your Table ID ZCBulkResult readJob = bulkRead.createBulkReadJob(bulkReadDetails); // create bulkread job with bulk read details. bulkRead.getBulkReadJobStatus(readJob.getJobId()); // get bulk read job status and result {{%/code%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} A maximum of {{%bold%}}200,000 rows{{%/bold%}} can be read simultaneously using the {{%badge%}}createBulkReadJob(){{%/badge%}} method.{{%/note%}} <br /> -------------------------------------------------------------------------------- title: "Bulk Write Rows" description: "This page describes the method to write multiple rows in a table in the Data Store in your Java application with sample code snippets" last_updated: "2026-03-18T07:41:08.563Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/bulk-write/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Bulk Write Rows Catalyst enables you to perform bulk write jobs on a specific table present in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}}. The bulk write operation can fetch thousands of records from a CSV file uploaded in {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}Stratus{{%/link%}} and insert them in a specific table. The table is referred to by its unique {{%link href="/en/cloud-scale/help/data-store/tables/" %}}Table ID{{%/link%}}. The column in which the write operation must be performed is referred to by its unique {{%link href="/en/cloud-scale/help/data-store/columns/#column-characteristics" %}}column ID{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} To perform a bulk write operation, you must {{%link href="/en/cloud-scale/help/stratus/objects/upload-object/" %}}first upload{{%/link%}} the required data as a CSV file in Stratus.{{%/note%}} During the write job, the file will be referred to using the following attributes: * {{%badge%}}bucketName{{%/badge%}}: The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}name of the bucket{{%/link%}}, where the object is stored. * {{%badge%}}objectKey{{%/badge%}}: Can contain the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}} or the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} of the required object. * {{%badge%}}versionID{{%/badge%}}: If the bucket has {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}versioning{{%/link%}} enabled, then the specific versionID of the file will be stored in this attribute. These details will need to be resolved as a JSON object named {{%badge%}}objectDetails{{%/badge%}}, and passed to the {{%badge%}}setObjectDetails(){{%/badge%}} method. Catalyst supports the following methods for bulk write in Java SDK: <table class="content-table"> <thead> <tr> <th>Method Used</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}createBulkWriteJob(bulkWriteDetails){{%/badge%}}</td> <td>Create a new bulk write job on a specific table.</td> </tr> <td>{{%badge%}}createInsertBulkWriteJob(table ID, objectDetails){{%/badge%}}</td> <td>Create a new bulk write insert job.</td> <tr> <td>{{%badge%}}createUpsertBulkWriteJob(tableId, objectDetails, column ID){{%/badge%}}</td> <td>Create a new bulk write upsert job.</td> </tr> <tr> <td>{{%badge%}}getBulkWriteJobDetails(jobID){{%/badge%}}</td> <td>Get the status and results of a bulk write job.</td> </tr> </tbody> </table> Copy the SDK snippet below to perform a bulk write job on a particular table. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.bulk.ZCBulkWriteServices; import com.zc.component.object.bulk.ZCDataStoreBulk; import com.zc.component.object.bulk.result.ZCBulkResult; import com.zc.component.object.bulk.ZCBucketObjectDetails; import com.zc.component.object.bulk.ZCBulkWriteDetails {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}ZCBulkWriteServices bulkWrite = ZCDataStoreBulk.getInstance().getBulkWriteInstance(); // create bulk write instance ZCBulkWriteDetails bulkWriteDetails = ZCBulkWriteDetails.getInstance(); // create and fill the bulk write details object bulkWriteDetails.setTableIdentifier(12096000000642178L); // Provide your Table ID bulkWriteDetails.setObjectDetails(objectDetails); ZCBulkResult bulkWriteResult = bulkWrite.createBulkWriteJob(bulkWriteDetails); // create bulk write job bulkWrite.createInsertBulkWriteJob(12096000000642178L, objectDetails); // Provide your Table ID // create bulk write insert job bulkWrite.createUpdateBulkWriteJob(12096000000642178L, objectDetails, 12096000000642900L); // Provide your Table ID and Column ID // create bulk write insert job bulkWrite.createUpsertBulkWriteJob(12096000000642178L, objectDetails, 12096000000642900L); // Provide your Table ID and Column ID // create bulk write upsert job bulkWrite.getBulkWriteJobStatus(bulkWriteResult.getJobId()); // get the bulk write job status and results {{%/code%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} A maximum of {{%bold%}}100,000 rows{{%/bold%}} can be written simultaneously using the {{%badge%}}createBulkWriteJob(){{%/badge%}} method.{{%/note%}} <br /> -------------------------------------------------------------------------------- title: "Bulk Delete Rows" description: "This page describes the method to delete rows in bulk from a table in the Data Store in your Java application with sample code snippets." last_updated: "2026-03-18T07:41:08.563Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/data-store/bulk-delete-rows/" service: "Cloud Scale" related: - Bulk Delete Rows - API (/en/api/code-reference/cloud-scale/data-store/bulk-delete-rows/#BulkDeleteRows) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Bulk Delete Rows Catalyst enables you to delete records or rows of data in bulk from a specific table in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}}. The table is referred by its unique ID or name. You can obtain the table ID from Data Store or from the URL when the table is opened in the console. The bulk delete operation can delete a maximum of 200 rows in a single operation. You can add the unique ROWIDs of the rows to be deleted in an {{%badge%}}ArrayList{{%/badge%}} as shown in the sample code below. You must include at least one ROWID, and can include upto 200 ROWIDs, in the code. The {{%badge%}}ArrayList{{%/badge%}} is passed to the {{%badge%}}deleteRows(){{%/badge%}} function through a {{%badge%}}ZCRowObject{{%/badge%}} list. The table name or table ID must be passed to {{%badge%}}getTableInstance(){{%/badge%}}. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.object.ZCObject; import com.zc.component.object.ZCRowObject; {{% /panel_without_adjustment %}} {{%code class="language-java" scroll="set-scroll" %}}//Define an ArrayList and add the ROWIDs of the records to be deleted in it ArrayList rowIdList = new ArrayList<>(); rowIdList.add(1028000000171815L); // replace row id rowIdList.add(1028000000171810L); rowIdList.add(1028000000171805L); rowIdList.add(1028000000171617L); rowIdList.add(1028000000171098L); //Pass the ArrayList to the deleteRows() function. //Pass the table ID or table name as a ZCObject. List &lt;ZCRowObject&gt; deletedRowList = ZCObject.getInstance().getTableInstance("EmpDetails").deleteRows(rowIdList); {{% /code%}} --- ## SDK — Node JS — Data Store -------------------------------------------------------------------------------- title: "Get Data Store Instance" description: "This page describes the method to delete rows in bulk from a table in the Data Store in your NodeJS application with sample code snippets." last_updated: "2026-03-18T07:41:08.565Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/get-component-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Data Store ### Get a Component Instance The datastore reference can be created by the following method which would not fire a server side call. {{%code class="language-javascript" scroll="set-scroll" %}}//Get a datastore instance let datastore = app.datastore();{{% /code%}} -------------------------------------------------------------------------------- title: "Get Table Metadata" description: "This page describes the method to fetch the meta data of a single table or multiple tables in your NodeJS application with sample code snippets" last_updated: "2026-03-18T07:41:08.565Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-meta/" service: "Cloud Scale" related: - Get table meta - API (/en/api/code-reference/cloud-scale/data-store/get-table-metadata/#GetTableMetadata) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get Table Metadata The metadata of a single table in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}} can be obtained in two ways. The {{%badge%}}datastore{{%/badge%}} reference used in the code snippets below is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-component-instance" %}}component instance.{{%/link%}} ### Get a Table's Metadata by Table ID A table's meta data is fetched by referring the table Id, using the method {{%badge%}}getTableDetails(){{%/badge%}} as given below, {{%code class="language-javascript" scroll="set-scroll" %}}//Get a Single Table's details using table ID let datastore = app.datastore(); let tablePromise = datastore.getTableDetails(1510000000110121); tablePromise.then((table) => { console.log(table); });{{%/code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-json line-numbers"%}} { "project_id":{ "project_name":"AlienCity", "id":"2136000000007733" }, "table_name":"AlienCity", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "modified_time":"Aug 13, 2021 01:47 PM", "column_details":[ { "table_id":"2136000000007781", "column_sequence":"1", "column_name":"ROWID", "category":1, "data_type":"bigint", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":false, "column_id":"2136000000007784" }, { "table_id":"2136000000007781", "column_sequence":"2", "column_name":"CREATORID", "category":1, "data_type":"bigint", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007786" }, { "table_id":"2136000000007781", "column_sequence":"3", "column_name":"CREATEDTIME", "category":1, "data_type":"datetime", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007788" }, { "table_id":"2136000000007781", "column_sequence":"4", "column_name":"MODIFIEDTIME", "category":1, "data_type":"datetime", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007790" }, { "table_id":"2136000000007781", "column_sequence":"5", "column_name":"CityName", "category":2, "data_type":"varchar", "max_length":"100", "is_mandatory":false, "decimal_digits":"2", "is_unique":true, "search_index_enabled":true, "column_id":"2136000000008503" } ], "table_id":"2136000000007781" } {{% /divtag %}} {{% divtag id="V1" class="language-json line-numbers"%}} { "project_id":{ "project_name":"AlienCity", "id":2136000000007733 }, "table_name":"AlienCity", "modified_by":{ "zuid":66466723, "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":2136000000006003 }, "modified_time":"Aug 13, 2021 01:47 PM", "column_details":[ { "table_id":2136000000007781, "column_sequence":1, "column_name":"ROWID", "category":1, "data_type":"bigint", "max_length":50, "is_mandatory":false, "decimal_digits":2, "is_unique":false, "search_index_enabled":false, "column_id":2136000000007784 }, { "table_id":2136000000007781, "column_sequence":2, "column_name":"CREATORID", "category":1, "data_type":"bigint", "max_length":50, "is_mandatory":false, "decimal_digits":2, "is_unique":false, "search_index_enabled":true, "column_id":2136000000007786 }, { "table_id":2136000000007781, "column_sequence":3, "column_name":"CREATEDTIME", "category":1, "data_type":"datetime", "max_length":50, "is_mandatory":false, "decimal_digits":2, "is_unique":false, "search_index_enabled":true, "column_id":2136000000007788 }, { "table_id":2136000000007781, "column_sequence":4, "column_name":"MODIFIEDTIME", "category":1, "data_type":"datetime", "max_length":50, "is_mandatory":false, "decimal_digits":2, "is_unique":false, "search_index_enabled":true, "column_id":2136000000007790 }, { "table_id":2136000000007781, "column_sequence":5, "column_name":"CityName", "category":2, "data_type":"varchar", "max_length":100, "is_mandatory":false, "decimal_digits":2, "is_unique":true, "search_index_enabled":true, "column_id":2136000000008503 } ], "table_id":2136000000007781 } {{% /divtag %}} {{% /panel_with_select %}} ### Get a Table's Metadata by Table Name When the table's metadata is to be fetched by referring the table name, the below code snippet can be used. However, note that when the table name is changed in the future, it must be reflected in all the places wherever it is used in the code. In both cases, a promise is returned, which in turn resolves to the table meta details. The resultant meta can be converted to a string or JSON output by accessing {{%bold%}}.toString(){{%/bold%}} or {{%bold%}}.toJSON(){{%/bold%}} methods. {{%code class="language-javascript" scroll="set-scroll" %}}//Get a Single Table's details using the table name let datastore = app.datastore(); let tablePromise = datastore.getTableDetails('SampleTable'); tablePromise.then((table) => { console.log(table); });{{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-json line-numbers"%}} { "project_id":{ "project_name":"AlienCity", "id":"2136000000007733" }, "table_name":"AlienCity", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "modified_time":"Aug 13, 2021 01:47 PM", "column_details":[ { "table_id":"2136000000007781", "column_sequence":"1", "column_name":"ROWID", "category":1, "data_type":"bigint", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":false, "column_id":"2136000000007784" }, { "table_id":"2136000000007781", "column_sequence":"2", "column_name":"CREATORID", "category":1, "data_type":"bigint", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007786" }, { "table_id":"2136000000007781", "column_sequence":"3", "column_name":"CREATEDTIME", "category":1, "data_type":"datetime", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007788" }, { "table_id":"2136000000007781", "column_sequence":"4", "column_name":"MODIFIEDTIME", "category":1, "data_type":"datetime", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007790" }, { "table_id":"2136000000007781", "column_sequence":"5", "column_name":"CityName", "category":2, "data_type":"varchar", "max_length":"100", "is_mandatory":false, "decimal_digits":"2", "is_unique":true, "search_index_enabled":true, "column_id":"2136000000008503" } ], "table_id":"2136000000007781" } {{% /divtag %}} {{% divtag id="V1" class="language-json line-numbers"%}}{ "project_id":{ "project_name":"AlienCity", "id":2136000000007733 }, "table_name":"AlienCity", "modified_by":{ "zuid":66466723, "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":2136000000006003 }, "modified_time":"Aug 13, 2021 01:47 PM", "column_details":[ { "table_id":2136000000007781, "column_sequence":1, "column_name":"ROWID", "category":1, "data_type":"bigint", "max_length":50, "is_mandatory":false, "decimal_digits":2, "is_unique":false, "search_index_enabled":false, "column_id":2136000000007784 }, { "table_id":2136000000007781, "column_sequence":2, "column_name":"CREATORID", "category":1, "data_type":"bigint", "max_length":50, "is_mandatory":false, "decimal_digits":2, "is_unique":false, "search_index_enabled":true, "column_id":2136000000007786 }, { "table_id":2136000000007781, "column_sequence":3, "column_name":"CREATEDTIME", "category":1, "data_type":"datetime", "max_length":50, "is_mandatory":false, "decimal_digits":2, "is_unique":false, "search_index_enabled":true, "column_id":2136000000007788 }, { "table_id":2136000000007781, "column_sequence":4, "column_name":"MODIFIEDTIME", "category":1, "data_type":"datetime", "max_length":50, "is_mandatory":false, "decimal_digits":2, "is_unique":false, "search_index_enabled":true, "column_id":2136000000007790 }, { "table_id":2136000000007781, "column_sequence":5, "column_name":"CityName", "category":2, "data_type":"varchar", "max_length":100, "is_mandatory":false, "decimal_digits":2, "is_unique":true, "search_index_enabled":true, "column_id":2136000000008503 } ], "table_id":2136000000007781 } {{% /divtag %}} {{% /panel_with_select %}} ### Get Metadata of All Tables In addition to getting the meta data of a single table, you can fetch the details of all the tables in a catalyst project using {{%badge%}}getAllTables(){{%/badge%}} method. The promise returned here will be resolved to an array of table meta details. {{%code class="language-javascript" scroll="set-scroll" %}}//Get meta data of all tables let datastore = app.datastore(); let allTablePromise = datastore.getAllTables(); allTablePromise.then((tables) => { console.log(tables); });{{%/code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-json line-numbers"%}} [ { "project_id":{ "project_name":"AlienCity", "id":"2136000000007733" }, "table_name":"AlienCity", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "modified_time":"Aug 13, 2021 01:47 PM", "table_id":"2136000000007781" }, "table_name":"CityDetails", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "modified_time":"Aug 13, 2021 01:47 PM", "table_id":"2136000000009090" } ] {{% /divtag %}} {{% divtag id="V1" class="language-json line-numbers"%}} [ { "project_id":{ "project_name":"AlienCity", "id":2136000000007733 }, "table_name":"AlienCity", "modified_by":{ "zuid":66466723, "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":2136000000006003 }, "modified_time":"Aug 13, 2021 01:47 PM", "table_id":2136000000007781 }, "table_name":"CityDetails", "modified_by":{ "zuid":66466723, "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":2136000000006003 }, "modified_time":"Aug 13, 2021 01:47 PM", "table_id":2136000000009090 } ] {{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- title: "Get Table Instance" description: "This page describes the method to fetch the table instance using tableID and name from a table in the Data Store in your NodeJS application with sample code snippets." last_updated: "2026-03-18T07:41:08.595Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get a Table Instance A table reference can be created by the following methods which would not fire a server-side call. The datastore reference used in the below code snippets is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-component-instance" %}}component instance.{{%/link%}} ### Get the table instance using tableID A table reference can be created by referring the table ID using the {{%badge%}}getTable(){{%/badge%}} method. {{%code class="language-javascript" scroll="set-scroll" %}}//Get a Single Table without details using table ID let datastore = app.datastore(); let table = datastore.table(1510000000110121);{{% /code%}} ### Get the table instance using table name Alternatively, A table reference can be created by referring the table name using the {{%badge%}}getTable(){{%/badge%}} method. There is no promise involved in these methods and the instance of the table alone is returned. {{%code class="language-javascript" scroll="set-scroll" %}}//Get a Single Table without details using table name let datastore = app.datastore(); let table = datastore.table('SampleTable');{{% /code%}} -------------------------------------------------------------------------------- title: "Get Column Metadata" description: "This page describes the method to retrieve metadata of a single column or multiple columns from a table in the Data Store in your NodeJS application with sample code snippets" last_updated: "2026-03-18T07:41:08.595Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/get-column-meta/" service: "Cloud Scale" related: - Get Column Meta - API (/en/api/code-reference/cloud-scale/data-store/get-column-metadata/#GetColumnMetadata) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get Column Metadata Column metadata details of a single column of a table in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}} can be retrieved through the following methods. The table reference used in the below code snippets can either be a {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-instance" %}}table instance{{%/link%}} or a {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-meta" %}}table meta.{{%/link%}} ### Get a Column's Metadata by ID You can fetch a column's meta data of a particular table using {{%badge%}}getColumnDetails(){{%/badge%}} method. {{%code class="language-javascript" scroll="set-scroll" %}} //Use Table Meta Object to get the column with column ID which returns a promise let datastore = app.datastore(); let table = datastore.table('ShipmentDetails'); let columnPromise = table.getColumnDetails(1510000000110832); columnPromise.then((column) => { console.log(column); });{{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-javascript line-numbers"%}} { table_id: "2305000000007003", column_sequence: "5", column_name: "CityName", category: 2, data_type: "varchar", max_length: "100", is_mandatory: false, decimal_digits: "2", is_unique: true, search_index_enabled: false, column_id: "2305000000007725" } {{% /divtag %}} {{% divtag id="V1" class="language-javascript line-numbers"%}} { table_id: 2305000000007003, column_sequence: 5, column_name: "CityName", category: 2, data_type: "varchar", max_length: 100, is_mandatory: false, decimal_digits: 2, is_unique: true, search_index_enabled: false, column_id: 2305000000007725 } {{% /divtag %}} {{% /panel_with_select %}} ### Get a Column's Metadata by Name An alternative way to get the meta data of a column is, referring to the Column name. This returns the same response as that of the previous one. The column meta will not involve any further operations. Therefore the promise returned here is resolved to a JSON object. {{%code class="language-javascript" scroll="set-scroll" %}}//Use Table Meta Object to get the column with column ID which returns a promise let datastore = app.datastore(); let table = datastore.table('SampleTable'); let columnPromise = table.getColumnDetails('newColumn'); columnPromise.then((column) => { console.log(column); });{{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-javascript line-numbers"%}} { table_id: "2305000000007003", column_sequence: "5", column_name: "CityName", category: 2, data_type: "varchar", max_length: "100", is_mandatory: false, decimal_digits: "2", is_unique: true, search_index_enabled: false, column_id: "2305000000007725" } {{% /divtag %}} {{% divtag id="V1" class="language-javascript line-numbers"%}} { table_id: 2305000000007003, column_sequence: 5, column_name: "CityName", category: 2, data_type: "varchar", max_length: 100, is_mandatory: false, decimal_digits: 2, is_unique: true, search_index_enabled: false, column_id: 2305000000007725 } {{% /divtag %}} {{% /panel_with_select %}} ### Get Metadata of All Columns In addition to getting the meta data of a single column, you can retrieve the meta data of all the columns of a particular table using _getAllColumns()_ method. The promise returned here is resolved into an array of column meta details. {{%code class="language-javascript" scroll="set-scroll" %}}//Use Table Meta Object to get all the columns which returns a promise let datastore = app.datastore(); let table = datastore.table('SampleTable'); let allColumnsPromise = table.getAllColumns(); allColumnsPromise.then((columns) => { console.log(columns); });{{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Node JS" %}} {{% divtag id="V2" class="language-javascript line-numbers"%}} [ { table_id: "2136000000007781", column_sequence: "1", column_name: "ROWID", category: 1, data_type: "bigint", max_length: "50", is_mandatory: false, decimal_digits: "2", is_unique: false, search_index_enabled: false, column_id: "2136000000007784" }, { table_id: "2136000000007781", column_sequence: "2", column_name: "CREATORID", category: 1, data_type: "bigint", max_length: "50", is_mandatory: false, decimal_digits: "2", is_unique: false, search_index_enabled: true, column_id: "2136000000007786" }, { table_id: "2136000000007781", column_sequence: "3", column_name: "CREATEDTIME", category: 1, data_type: "datetime", max_length: "50", is_mandatory: false, decimal_digits: "2", is_unique: false, search_index_enabled: true, column_id: "2136000000007788" }, { table_id: "2136000000007781", column_sequence: "4", column_name: "MODIFIEDTIME", category: 1, data_type: "datetime", max_length: "50", is_mandatory: false, decimal_digits: "2", is_unique: false, search_index_enabled: true, column_id: "2136000000007790" }, { table_id: "2136000000007781", column_sequence: "5", column_name: "CityName", category: 2, data_type: "varchar", max_length: "100", is_mandatory: false, decimal_digits: "2", is_unique: true, search_index_enabled: true, column_id: "2136000000008503" } ] {{% /divtag %}} {{% divtag id="V1" class="language-javascript line-numbers"%}} [ { table_id: 2136000000007781, column_sequence: 1, column_name: "ROWID", category: 1, data_type: "bigint", max_length: 50, is_mandatory: false, decimal_digits: 2, is_unique: false, search_index_enabled: false, column_id: 2136000000007784 }, { table_id: 2136000000007781, column_sequence: 2, column_name: "CREATORID", category: 1, data_type: "bigint", max_length: 50, is_mandatory: false, decimal_digits: 2, is_unique: false, search_index_enabled: true, column_id: 2136000000007786 }, { table_id: 2136000000007781, column_sequence: 3, column_name: "CREATEDTIME", category: 1, data_type: "datetime", max_length: 50, is_mandatory: false, decimal_digits: 2, is_unique: false, search_index_enabled: true, column_id: 2136000000007788 }, { table_id: 2136000000007781, column_sequence: 4, column_name: "MODIFIEDTIME", category: 1, data_type: "datetime", max_length: 50, is_mandatory: false, decimal_digits: 2, is_unique: false, search_index_enabled: true, column_id: 2136000000007790 }, { table_id: 2136000000007781, column_sequence: 5, column_name: "CityName", category: 2, data_type: "varchar", max_length: 100, is_mandatory: false, decimal_digits: 2, is_unique: true, search_index_enabled: true, column_id: 2136000000008503 } ] {{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- title: "Get Rows" description: "This page describes the method to fetch a single row or all the rows from a table in the Data Store in your Nodejs application with sample code snippets" last_updated: "2026-03-18T07:41:08.595Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/get-rows/" service: "Cloud Scale" related: - Get rows - API (/en/api/code-reference/cloud-scale/data-store/get-all-rows/#GetAllRows) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get Rows You can retrieve single row or multiple rows of data from a table in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}}. The {{%badge%}}table{{%/badge%}} reference used in these code snippets can either be a {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-instance" %}}table instance{{%/link%}} or the {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-meta" %}}table meta{{%/link%}}. ### Get A Single Row You can fetch a single row from a table using the {{%badge%}}getRow(){{%/badge%}} method. You must pass the unique Row ID of the row to this method as shown in the sample code below. The promise returned here will be resolved to a JSON row object. {{%code class="language-javascript" scroll="set-scroll" %}} //Use the table instance or the table meta object to fetch a row by passing the Row ID let rowPromise = table.getRow(1510000000109476);{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. {{%code class="language-javascript" scroll="set-scroll" %}}{ CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-17 13:02:11:184", CREATEDTIME: "2021-08-16 16:29:10:499", CityName: "Pune", ROWID: "2136000000011011" }{{% /code%}} ### Get All Rows Through Pagination You can retrieve all the rows of data from a table in the Data Store by incorporating pagination in your code using the {{%badge%}}getMyPagedRows(){{%/badge%}} function. Pagination allows you to fetch the rows of a table in batches or pages through iterations. This iteration is executed until all the rows fetched, which is validated by {{%badge%}}hasNext, {{%/badge%}}as shown in the code below. You can refer to the table by its unique Table ID. For example, if you require the rows to be fetched in batches of 100 as individual pages, you can define a variable for the maximum rows to be fetched in each page and specify the count. The sample code below assigns {{%badge%}}maxRows{{%/badge%}} as 100. {{%note%}}{{%bold%}}Note: {{%/bold%}} The {{%badge%}}maxRows{{%/badge%}} parameter is optional. The SDK call will return 200 rows in a single page by default if this value is not specified.{{%/note%}} Additionally, after each execution of the loop, you will receive a token string in the response data that authorizes the subsequent fetching of data. You can fetch this token through {{%badge%}}next\_token{{%/badge%}}, and pass it as the value for {{%badge%}}nextToken{{%/badge%}} during the subsequent iteration, as shown in the code below. During the first execution of the loop, the value for the {{%badge%}}nextToken{{%/badge%}} string is assigned as {{%badge%}}undefined{{%/badge%}}. The next set of records are fetched through {{%badge%}}more\_records{{%/badge%}} in the response data. {{%note%}}{{%bold%}}Note:{{%/bold%}} Pagination has been made available from the Node.js SDK v2.1.0 update. This will not be available in the older versions of the Node.js SDK.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}//Fetch rows through pagination and declare the value for nextToken as undefined for the first iteration function getMyPagedRows(hasNext = true, nextToken = undefined) { if (!hasNext) { return; } dataStore.table(195000000042025) //Specify the Table ID of the table to fetch the records from .getPagedRows({ nextToken, maxRows: 100 }) //Define the maximum rows to be fetched in a single page and pass it along with nextToken .then(({ data, next_token, more_records }) => { console.log('rows : ', data); //Fetch the rows from the table return getMyPagedRows(more_records, next_token); //Fetch the next set of records and the token string for the next iteration }) .catch((err) => { console.log(err.toString()); }); }{{% /code%}} A sample response that you will receive if there are more records available is shown below. The {{%badge%}}more_records{{%/badge%}} parameter will be set to {{%badge%}}true{{%/badge%}} in this case. #### Node.js v2.1.0 {{%code class="language-json" scroll="set-scroll" %}}{ "status": 200, "data": [ { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:24:855", "name": "Alex Jones", "CREATEDTIME": "2022-01-11 18:18:24:855", "ROWID": "3359000000108111" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:25:117", "name": "Robert Neal", "CREATEDTIME": "2022-01-11 18:18:25:117", "ROWID": "3359000000108114" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:25:120", "name": "Roslyn Gunn", "CREATEDTIME": "2022-01-11 18:18:25:120", "ROWID": "3359000000108117" } ], "message": "OK", "more_records": true, "next_token": "{{token}}" } {{%/code%}} A sample response that you will receive if there are no more records available is shown below. The {{%badge%}}more_records{{%/badge%}} parameter will be set to {{%badge%}}false{{%/badge%}} in this case. #### Node.js v2.1.0 {{%code class="language-json" scroll="set-scroll" %}}{ "status": 200, "data": [ { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:556", "name": "Alex Jones", "CREATEDTIME": "2022-01-11 18:18:43:556", "ROWID": "3359000000108410" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:557", "name": "Robert Neal", "CREATEDTIME": "2022-01-11 18:18:43:557", "ROWID": "3359000000108413" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:568", "name": "Roslyn Gunn", "CREATEDTIME": "2022-01-11 18:18:43:568", "ROWID": "3359000000108417" } ], "message": "OK", "more_records": false }{{% /code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} We have deprecated support for the {{%badge%}}getAllRows(){{%/badge%}} method that was available earlier to fetch multiple rows of data from a table. Pagination is now available as an enhancement that enables you to fetch all rows, without any limitations on the number of rows fetched. The {{%badge%}}getAllRows(){{%/badge%}} method will be removed from all future SDK versions. Please ensure that you upgrade your code accordingly.{{%/note%}} -------------------------------------------------------------------------------- title: "Insert Rows" description: "This page describes the method to insert a single row or rows in bulk from a table in the Data Store in your NodeJS application with sample code snippets." last_updated: "2026-03-18T07:41:08.596Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/insert-rows/" service: "Cloud Scale" related: - Insert Rows - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Insert Rows You can insert a new row of data or a record in a table in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}} by referring to the table's unique ID or name. You can also insert multiple rows in a table as explained in the next section. The {{%badge%}}table{{%/badge%}} reference used in the code below can either be a {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-instance" %}}table instance{{%/link%}} or a {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-meta" %}}table meta{{%/link%}} created earlier. {{%note%}}{{%bold%}}Note:{{%/bold%}} * The table and the columns in it must already be created. You can {{%link href="/en/cloud-scale/help/data-store/tables/#create-a-new-table" %}}create a table{{%/link%}} and {{%link href="/en/cloud-scale/help/data-store/columns/#create-a-new-column" %}}the columns for it{{%/link%}} from the console. * You will be able to insert upto 5000 records in each table per project in the {{%link href="/en/deployment-and-billing/environments/development-environment" %}}development environment{{%/link%}}. You can create upto 25,000 records overall in each project in the development environment. There are no upper limits for record creation in the production environment.{{%/note%}} ### Insert a Single Row You must create a JSON object containing the row details in a _{column name : column value}_ format, and pass it as an argument to the {{%badge%}}insertRow(){{%/badge%}} method as shown below. This inserts the row in the table that you refer by its name or unique Table ID. A unique {{%badge%}}RowID{{%/badge%}} value for the row is automatically generated once a row is inserted. The promise returned here will be resolved to a JSON row object. {{%code class="language-javascript" scroll="set-scroll" %}}//Create a JSON object with the rows to be inserted let rowData = { Name: `George Hamilton`, Age: 22, ID: 6868 }; //Use the table meta object to insert the row which returns a promise let datastore = app.datastore(); let table = datastore.table('EmpDetails'); let insertPromise = table.insertRow(rowData); insertPromise.then((row) => { console.log(row); });{{% /code%}} A sample response that you will receive for each version is shown below: {{%code class="language-javascript" scroll="set-scroll" %}}{ CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-16 16:29:10:499", Name: "George Hamilton", Age: "22", ID: "6868", CREATEDTIME: "2021-08-16 16:29:10:499", ROWID: 2136000000011011 }{{% /code%}} ### Insert Multiple Rows You can insert multiple rows in a table by constructing an array that contains the rows, and passing it as an argument to the {{%badge%}}insertRows(){{%/badge%}} method as shown below. The promise returned here is resolved to an array containing the row objects. {{%code class="language-javascript" scroll="set-scroll" %}}//Create a JSON array with the rows to be inserted let rowData = [{ Name: `Mark Wellington`, Age: 29, ID: 7218 }, { Name: `Zendaya Jones`, Age: 32, ID: 3211 } ]; //Use the table meta object to insert multiple rows which returns a promise let datastore = app.datastore(); let table = datastore.table('EmpDetails'); let insertPromise = table.insertRows(rowData); insertPromise.then((rows) => { console.log(rows); });{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions. {{%code class="language-javascript" scroll="set-scroll" %}}[ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-25 13:55:04:904", Name: "Mark Wellington", Age: "92", ID: "7218", CREATEDTIME: "2021-08-25 13:55:04:904", ROWID: 2136000000038008 }, { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-25 13:55:04:906", Name: "Zendaya Jones", Age: "32", ID: "3211", CREATEDTIME: "2021-08-25 13:55:04:906", ROWID: 2136000000038010 } ]{{% /code%}} -------------------------------------------------------------------------------- title: "Update Rows" description: "This page describes the method to update a single row or rows in bulk in a table in the Data Store in your NodeJS application with sample code snippets." last_updated: "2026-03-18T07:41:08.596Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/update-rows/" service: "Cloud Scale" related: - Update Rows - API (/en/api/code-reference/cloud-scale/data-store/update-row/#UpdateRow) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Update Rows You can update a single row or multiple rows in a table in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}}, and update one more column values. The {{%badge%}}table{{%/badge%}} reference used in the below code snippets can either be a {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-instance" %}}table instance{{%/link%}} or the {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-table-meta" %}}table meta.{{%/link%}} ### Update a Single Row This particular method allows you to update a single row by constructing a object with altered values in the required column. Refer the unique {{%bold%}}ROWID{{%/bold%}} and pass the newly constructed Object to the {{%badge%}}updateRow(){{%/badge%}} method. Here {{%bold%}}ROWID{{%/bold%}} is a mandatory attribute. The promise returned here will be resolved to a JSON row object. {{%code class="language-javascript" scroll="set-scroll" %}}//Construct a JSON Object with the updated row details let updatedRowData = { Name: `Mathew Jones`, Age: 31, ROWID: 1510000000109474 }; //Use Table Meta Object to update a single row using ROWID which returns a promise let datastore = app.datastore(); let table = datastore.table('SampleTable'); let rowPromise = table.updateRow(updatedRowData); rowPromise.then((row) => { console.log(row); });{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node.js {{%code class="language-javascript" scroll="set-scroll" %}}{ CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-17 13:02:11:184", CREATEDTIME: "2021-08-16 16:29:10:499", Name: "Mathew Jones", Age: 31, ROWID: "2136000000011011" }{{% /code%}} ### Update Multiple Rows To update multiple rows, an array of objects is constructed containing modified values which is passed as an argument to the {{%badge%}}updateRows(){{%/badge%}} method. {{%bold%}}ROWIDs{{%/bold%}} are used in corresponding array objects to refer the specific rows which requires modification. The promise returned here will be resolved to an array of row objects. {{%code class="language-javascript" scroll="set-scroll" %}}//Data to be updated along with the ROWID let updatedRowsData = [{ Name: `Mathew Jones`, Age: 31, ROWID: 1510000000113298 }, { Name: `Rhonda Watson`, Age: 28, ROWID: 1510000000109474 }]; //Use Table Meta Object to update a multiple rows using ROWIDs which returns a promise let datastore = app.datastore(); let table = datastore.table('SampleTable'); let rowPromise = table.updateRows(updatedRowsData); rowPromise.then((rows) => { console.log(rows); });{{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions of Node.js. #### Node.js {{%code class="language-javascript" scroll="set-scroll" %}}[ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-24 13:22:14:718", CREATEDTIME: "2021-08-24 13:12:55:999", Name: "Mathew Jones", Age: 31, ROWID: "2136000000034043" }, { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-24 13:22:14:728", CREATEDTIME: "2021-08-24 13:12:56:001", Name: "Rhonda Watson", Age: 28, ROWID: "2136000000034045" } ]{{% /code%}} -------------------------------------------------------------------------------- title: "Delete Row" description: "This page describes the method to delete a single row from a table in the Data Store in your NodeJS application with sample code snippets" last_updated: "2026-03-18T07:41:08.596Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/delete-row/" service: "Cloud Scale" related: - Delete row - API (/en/api/code-reference/cloud-scale/data-store/delete-row/#DeleteRow) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Delete a Row A row can be deleted from a table simply by passing the {{%badge%}}ROWID{{%/badge%}}as a parameter to the {{%badge%}}deteleRow(){{%/badge%}} method. Multiple rows cannot be deleted at a time. The promise returned here will be resolved to a row object which is a JSON. {{%code class="language-javascript" scroll="set-scroll" %}}//Use Table Meta Object to delete a single row using ROWID which returns a promise let datastore = app.datastore(); let table = datastore.table('SampleTable'); let rowPromise = table.deleteRow(1510000000109476); rowPromise.then((row) => { console.log(row); });{{% /code%}} -------------------------------------------------------------------------------- title: "Bulk Read Rows" description: "This page describes the method to read multiple rows from a table in the Data Store in your NodeJS application with sample code snippets" last_updated: "2026-03-18T07:41:08.596Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/bulk-read/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Bulk Read Rows Catalyst allows you to perform bulk read jobs on a specific table present in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}}. In the SDK snippet below, the Bulk Read job can read thousands of records from a specific table and generate a CSV file containing the results of the read operation, if the job is successful.The table is referred to by its unique {{%link href="/en/cloud-scale/help/data-store/tables/" %}}{{%badge%}}Table ID{{%/badge%}}{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can also use the {{%badge%}}dataStore.table().bulkJob('read' | 'write'){{%/badge%}} method to perform either a bulk read or a bulk write job.{{%/note%}} <table class="content-table"> <thead> <tr> <th>Method Used</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}bulkRead.createJob({ criteria, page, select_columns }){{%/badge%}}</td> <td> Create a new bulk read job.</td> </tr> <td>{{%badge%}}bulkRead.getStatus(job ID){{%/badge%}}</td> <td>Get a bulk read job's status.</td> <tr> <td>{{%badge%}}bulkRead.getResult(job ID){{%/badge%}}</td> <td>Get a bulk read job's result.</td> </tr> </tbody> </table> Copy the SDK snippet below to perform a bulk read job on a particular table. {{%code class="language-javascript" scroll="set-scroll" %}}// bulk read let datastore = app.datastore(); //get datastore instance const bulkRead = dataStore.table('sampleTable').bulkJob('read'); // create bulk read job const bulkReadJob = await bulkRead.createJob({ criteria: { group_operator: 'or', group: [ { column_name: 'Department', comparator: 'equal', value: 'Marketing' }, { column_name: 'EmpID', comparator: 'greater_than', value: '1000' }, { column_name: 'EmpName', comparator: 'starts_with', value: 'S' } ] }, page: 1, select_columns: ['EmpID', 'EmpName', 'Department'] }; { url: 'https://hr.zylker.com/en/EmpRecords/_callback.php', headers: { 'src': 'ZCatalyst', 'operation': 'bulkreadAPI' }, params: { 'project_name': 'EmployeeDatabase' } }); // Get bulk read status await bulkRead.getStatus(bulkReadJob.job_id); // Get bulk read result await bulkRead.getResult(bulkReadJob.job_id);{{%/code%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} A maximum of {{%bold%}}200,000 rows{{%/bold%}} can be read simultaneously.{{%/note%}} -------------------------------------------------------------------------------- title: "Bulk Write Rows" description: "This page describes the method to write multiple rows from a table in the Data Store in your NodeJS application with sample code snippets" last_updated: "2026-03-18T07:41:08.596Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/bulk-write/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Bulk Write Rows Catalyst enables you to perform bulk write jobs on a specific table present in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}}. The bulk write operation can fetch thousands of records from a CSV file uploaded in {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}Stratus{{%/link%}} and insert them in a specific table. The table is referred to by its unique {{%link href="/en/cloud-scale/help/data-store/tables/" %}}{{%badge%}}table ID{{%/badge%}}{{%/link%}} that is generated by Catalyst during creation. The column in which the write operation must be performed is referred to by its unique {{%link href="/en/cloud-scale/help/data-store/columns/#column-characteristics" %}}column ID{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} To perform a bulk write operation, you must {{%link href="/en/cloud-scale/help/stratus/objects/upload-object/" %}}first upload{{%/link%}} the required data as a CSV file in Stratus.{{%/note%}} During the write job, the file will be referred to using the following attributes: * {{%badge%}}bucketName{{%/badge%}}: The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}name of the bucket{{%/link%}}, where the object is stored. * {{%badge%}}objectKey{{%/badge%}}: Can contain the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}} or the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} of the required object. * {{%badge%}}versionID{{%/badge%}}: If the bucket has {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}versioning{{%/link%}} enabled, then the specific versionID of the file will be stored in this attribute. <table class="content-table"> <thead> <tr> <th>Method Used</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}bulkWrite.createJob(objectDetails, {find_by,fk_mapping,operation}){{%/badge%}}</td> <td>Create a new bulk write job on a specific table.</td> </tr> <td>{{%badge%}}bulkWrite.status(job ID){{%/badge%}}</td> <td>Get the status of a bulk write operation.</td> <tr> <td>{{%badge%}}bulkWrite.result(job ID){{%/badge%}}</td> <td>Get the result of a bulk write operation.</td> </tr> </tbody> </table> Copy the SDK snippet below to perform a bulk write job on a particular table. {{%code class="language-javascript" scroll="set-scroll" %}}let datastore = app.datastore(); // get datastore instance const bulkWrite = datastore.table('sampleTable').bulkJob('write'); const objectDetails = { "bucket_name": "zylker14266", "object_key": "emp_records.csv", "version_id": "64832huidksnd83" }; // create bulk write job const bulkWriteJob = await bulkWrite.createJob(objectDetails, { find_by: 'EmpID', fk_mapping: [ { local_column: 'EmployeeID', reference_column: 'EmpID' }, { local_column: 'DepartmentID', reference_column: 'DeptID' } ], operation: 'insert' }); // get bulk write status await bulkWrite.getStatus(bulkWriteJob.job_id); // get bulk write result await bulkWrite.getResult(bulkWriteJob.job_id); {{%/code%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} A maximum of {{%bold%}}100,000 rows{{%/bold%}} can be written at one time.{{%/note%}} -------------------------------------------------------------------------------- title: "Bulk Delete Rows" description: "This page describes the method to delete rows in bulk from a table in the Data Store in your NodeJS application with sample code snippets." last_updated: "2026-03-18T07:41:08.596Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/data-store/bulk-delete-rows/" service: "Cloud Scale" related: - Bulk delete rows - API (/en/api/code-reference/cloud-scale/data-store/bulk-delete-rows/#BulkDeleteRows) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Bulk Delete Rows Catalyst enables you to delete records or rows of data in bulk from a specific table in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}}. The table is referred by its unique ID or name. You can obtain the table ID from Data Store or from the URL when the table is opened in the console. The bulk delete operation can delete a maximum of 200 rows in a single operation. You can pass the unique ROWIDs of the rows to be deleted in an array as shown in the sample code below. You must include at least one ROWID, and can include upto 200 ROWIDs, in the code. The rows are passed to the {{%badge%}}deleteRows(){{%/badge%}} function through {{%badge%}}rowPromise{{%/badge%}} in the sample code. The table name or table ID must be passed to {{%badge%}}datastore.table(){{%/badge%}}. The {{%badge%}}datastore{{%/badge%}} reference used below is defined in the {{%link href="/en/sdk/nodejs/v2/cloud-scale/data-store/get-component-instance" %}}component instance page{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}let datastore = app.datastore(); //Pass the table ID or table name let table = datastore.table('EmpDetails'); //Pass the ROWIDs of the records to be deleted to the deleteRows() function let rowPromise = table.deleteRows([1028000000171815,1028000000171810, 1028000000171805, 1028000000171617, 1028000000171098]); //Returns the promise and pushes to Catalyst rowPromise.then((row) => { console.log(row); });{{% /code%}} --- ## SDK — Python — Data Store -------------------------------------------------------------------------------- title: "Get Data Store Instance" description: "This page describes the method to delete rows in bulk from a table in the Data Store in your Python application with sample code snippets." last_updated: "2026-03-18T07:41:08.598Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" service: "Cloud Scale" related: - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Data Store {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Cloud Scale Data Store{{%/link%}} is a cloud-based relational database management system that stores the persistent data of your application. This section covers the various methods that you can use to perform data-intensive operations in the Data Store such as fetching the metadata of the tables and columns, fetching row details, inserting new rows, updating rows, or deleting them. ### Get a component instance A component instance is an object that can be used to access the pre-defined configurations specific to a particular component. This process will not fire a server-side call. The {{%badge%}}app{{%/badge%}} reference used in the code below is the {{%link href="/en/sdk/python/v1/setup/#initializing-the-sdk" %}}Python object{{%/link%}} returned as a response during SDK initialization. You can create a new {{%badge%}}datastore_service{{%/badge%}}instance as shown below. Also note that this instance will be used in multiple scenarios while performing database specific operations. {{%code class="language-python" scroll="set-scroll" %}}#Get Data Store component instance datastore_service = app.datastore() {{% /code%}} -------------------------------------------------------------------------------- title: "Get Table Meta" description: "This page describes the method to fetch the meta data of a single table or multiple tables in your Python application with sample code snippets" last_updated: "2026-03-18T07:41:08.598Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/get-table-meta/" service: "Cloud Scale" related: - Get Table Meta - API (/en/api/code-reference/cloud-scale/data-store/get-table-metadata/#GetTableMetadata) - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Get Table Metadata The metadata of a single table in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}} can be obtained in two ways. The data store reference used in the code snippets below is the component instance created earlier. ### Get a Table's Metadata by Table ID A table's meta data is fetched by referring the respective tableID in the method {{%badge%}}get_table_details(){{%/badge%}} as given below. You can obtain the table ID from the Data Store or from the URL when the table is opened in the console. To know more about the component instance {{%badge%}}datastore_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}this help section{{%/link%}}. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}tableID{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the ID of the table whose meta data has to be retrieved.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Get table metadata using TableID datastore_service = app.datastore() table_data = datastore_service.get_table_details(5249000000011745) {{%/code%}} A sample response is shown below : {{%code class="language-json line-numbers"%}}{ "project_id":{ "project_name":"AlienCity", "id":"2136000000007733" }, "table_name":"COUNTRY", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"amelia@burrows.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "modified_time":"Aug 13, 2021 01:47 PM", "column_details":[ { "table_id":"5249000000011745", "column_sequence":"1", "column_name":"ROWID", "category":1, "data_type":"bigint", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":false, "column_id":"2136000000007784" }, { "table_id":"5249000000011745", "column_sequence":"2", "column_name":"CREATORID", "category":1, "data_type":"bigint", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007785" }, { "table_id":"5249000000011745", "column_sequence":"3", "column_name":"CREATEDTIME", "category":1, "data_type":"datetime", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007786" }, { "table_id":"5249000000011745", "column_sequence":"4", "column_name":"MODIFIEDTIME", "category":1, "data_type":"datetime", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007787" }, { "table_id":"5249000000011745", "column_sequence":"5", "column_name":"CITYNAME", "category":2, "data_type":"varchar", "max_length":"100", "is_mandatory":false, "decimal_digits":"2", "is_unique":true, "search_index_enabled":true, "column_id":"2136000000008588" } ], "table_id":"5249000000011745" } {{%/code%}} ### Get a Table's Metadata by Table Name You can use the below-mentioned code snippet to fetch a table's metadata by referring the {{%badge%}}table_name{{%/badge%}}. {{%note%}}{{%bold class="bold-primary" %}}Note :{{%/bold%}} If you rename the table, you must update the changes in the code in all applicable sections.{{%/note%}} To know more about the component instance {{%badge%}}datastore_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}this help section{{%/link%}}. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}table_name{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the name of the table whose meta data has to be retrieved.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}datastore_service = app.datastore() table_data = datastore_service.get_table_details("Aliens") {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers"%}}{ "project_id":{ "project_name":"AlienCity", "id":"2136000000007733" }, "table_name":"Aliens", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"amelia.burrows@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "modified_time":"Aug 13, 2021 01:47 PM", "column_details":[ { "table_id":"5249000000011745", "column_sequence":"1", "column_name":"ROWID", "category":1, "data_type":"bigint", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":false, "column_id":"2136000000007784" }, { "table_id":"5249000000011745", "column_sequence":"2", "column_name":"CREATORID", "category":1, "data_type":"bigint", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007785" }, { "table_id":"5249000000011745", "column_sequence":"3", "column_name":"CREATEDTIME", "category":1, "data_type":"datetime", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007786" }, { "table_id":"5249000000011745", "column_sequence":"4", "column_name":"MODIFIEDTIME", "category":1, "data_type":"datetime", "max_length":"50", "is_mandatory":false, "decimal_digits":"2", "is_unique":false, "search_index_enabled":true, "column_id":"2136000000007787" }, { "table_id":"5249000000011745", "column_sequence":"5", "column_name":"AlienType", "category":2, "data_type":"varchar", "max_length":"100", "is_mandatory":false, "decimal_digits":"2", "is_unique":true, "search_index_enabled":true, "column_id":"2136000000008588" } ], "table_id":"5249000000011745" } {{%/code%}} ### Get Metadata of All Tables In addition to getting the meta data of a single table, you can fetch the details of all the tables in a Catalyst project using {{%badge%}}getAllTables(){{%/badge%}} method. To know more about the component instance {{%badge%}}datastore_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}this help section{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}datastore_service = app.datastore() tables = datastore_service.get_all_tables() {{%/code%}} A sample response is shown below: {{%code class="language-json line-numbers"%}}[ { "project_id":{ "project_name":"AlienCity", "id":"2136000000007733" }, "table_name":"Attackers", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"amelia.burrows@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "modified_time":"Aug 13, 2021 01:47 PM", "table_id":"2136000000007781" }, "table_name":"Aliens", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "modified_time":"Aug 13, 2021 01:47 PM", "table_id":"5249000000011745" } ] {{%/code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- title: "Get Table Instance" description: "This page describes the method to fetch the table instance using tableID and name from a table in the Data Store in your Python application with sample code snippets." last_updated: "2026-03-18T07:41:08.599Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" service: "Cloud Scale" related: - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Get a Table Instance A table reference can be created by referring to the predefined data store reference by passing either the tableID or table name as the parameter. The {{%badge%}}datastore_service{{%/badge%}} reference used in the below code snippet is the component instance created earlier. ### Get the Table Instance using TableID The {{%badge%}}table_service{{%/badge%}} reference can be created by passing the tableID as a parameter to the {{%badge%}}table(){{%/badge%}} method. To know more about the component instance {{%badge%}}datastore_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}this help section{{%/link%}}. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}tableID{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the ID of the table.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Get table instance using table ID datastore_service = app.datastore() table_service = datastore_service.table(5249000000011745) {{% /code%}} ### Get the Table Instance using Table Name Alternatively, a table reference can be created by referring the tablename in the {{%badge%}}table(){{%/badge%}} method. There is no explicit response involved in these methods and only the instance of the table is returned. To know more about the component instance {{%badge%}}datastore_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}this help section{{%/link%}}. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}table_name{{%/badge%}}</td> <td>{{%badge%}}String{{%/badge%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the name of the table.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Get table instance using table name datastore_service = app.datastore() table_service = datastore_service.table("CITY") {{% /code%}} -------------------------------------------------------------------------------- title: "Get Column Meta" description: "This page describes the method to retrieve metadata of a single column or multiple columns from a table in the Data Store in your Python application with sample code snippets" last_updated: "2026-03-18T07:41:08.599Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/get-column-meta/" service: "Cloud Scale" related: - Get Column Meta - API (/en/api/code-reference/cloud-scale/data-store/get-column-metadata/#GetColumnMetadata) - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Get Column Metadata Column metadata details of a single column of a table in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}} can be retrieved either by using the columnID or the column name. ### Get a Column's Metadata by ID You can fetch a column's meta data of a particular table using {{%badge%}}get_column_details(){{%/badge%}} method. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}datastore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" %}}table instance{{%/link%}}{{%badge%}}table_service{{%/badge%}} used below, please refer to their respective help sections. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}columnID{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the ID of the column for which metadata has to be retrieved.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Get column's metadata using columnID datastore_service = app.datastore() table_service = datastore_service.table("CITY") column_data = table_service.get_column_details(5249000000032372) {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers"%}}{ table_id: "5249000000011745", column_sequence: "5", column_name: "CITYNAME", category: 2, data_type: "varchar", max_length: "100", is_mandatory: false, decimal_digits: "2", is_unique: true, search_index_enabled: false, column_id: "5249000000032372" } {{% /code%}} ### Get a Column's Metadata by Name An alternative way to get the meta data of a column is, referring to the {{%badge%}}column_name{{%/badge%}}. This returns the same response as that of the previous one. The column meta will not involve any further operations. Therefore, the response is returned here directly. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}datastore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" %}}table instance{{%/link%}}{{%badge%}}table_service{{%/badge%}} used below, please refer to their respective help sections. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}column_name{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the name of the column for which metadata has to be retrieved.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Get column's metadata using column name datastore_service = app.datastore() table_service = datastore_service.table("CITY") column_data = table_service.get_column_details("CITYNAME") {{% /code%}} A sample response is shown below : {{%code class="language-javascript line-numbers"%}}{ table_id: "5249000000011745", column_sequence: "5", column_name: "CITYNAME", category: 2, data_type: "varchar", max_length: "100", is_mandatory: false, decimal_digits: "2", is_unique: true, search_index_enabled: false, column_id: "2305000000007725" }{{% /code%}} ### Get Metadata of All Columns In addition to getting the meta data of a single column, you can retrieve the meta data of all the columns in a particular table using {{%badge%}}get_all_columns(){{%/badge%}} method. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}datastore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" %}}table instance{{%/link%}}{{%badge%}}table_service{{%/badge%}} used below, please refer to their respective help sections. {{%code class="language-python" scroll="set-scroll" %}}#Get metadata of all columns datastore_service = app.datastore() table_service = datastore_service.table("CITY") columns = table_service.get_all_columns() {{% /code%}} A sample response is shown below : {{%code class="language-json line-numbers"%}}[ { table_id: "5249000000011745", column_sequence: "1", column_name: "ROWID", category: 1, data_type: "bigint", max_length: "50", is_mandatory: false, decimal_digits: "2", is_unique: false, search_index_enabled: false, column_id: "2136000000007784" }, { table_id: "5249000000011745", column_sequence: "2", column_name: "CREATORID", category: 1, data_type: "bigint", max_length: "50", is_mandatory: false, decimal_digits: "2", is_unique: false, search_index_enabled: true, column_id: "2136000000007785" }, { table_id: "5249000000011745", column_sequence: "3", column_name: "CREATEDTIME", category: 1, data_type: "datetime", max_length: "50", is_mandatory: false, decimal_digits: "2", is_unique: false, search_index_enabled: true, column_id: "2136000000007786" }, { table_id: "5249000000011745", column_sequence: "4", column_name: "MODIFIEDTIME", category: 1, data_type: "datetime", max_length: "50", is_mandatory: false, decimal_digits: "2", is_unique: false, search_index_enabled: true, column_id: "2136000000007787" }, { table_id: "5249000000011745", column_sequence: "5", column_name: "CITYNAME", category: 2, data_type: "varchar", max_length: "100", is_mandatory: false, decimal_digits: "2", is_unique: true, search_index_enabled: true, column_id: "2136000000008588" } ] {{%/code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- title: "Get Rows" description: "This page describes the method to fetch a single row or all the rows from a table in the Data Store in your Python application with sample code snippets" last_updated: "2026-03-18T07:41:08.599Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/get-rows/" service: "Cloud Scale" related: - Get Rows - API (/en/api/code-reference/cloud-scale/data-store/get-all-rows/#GetAllRows) - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Get Rows You can retrieve a single row or multiple rows of data from a table in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}}. The {{%badge%}}table_service{{%/badge%}} reference used in these code snippets can either be a table instance or table meta. ### Get A Single Row You can fetch a single row from the table using the {{%badge%}}get_row(){{%/badge%}} method. You must pass the unique RowID of the row to this method as shown in the code snippet below. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}datastore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" %}}table instance{{%/link%}}{{%badge%}}table_service{{%/badge%}} used below, please refer to their respective help sections. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}rowID{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the ID of the row whose details has to be retrieved.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}} # Get A Single Row datastore_service = app.datastore() table_service = datastore_service.table("CITY") row_data = table_service.get_row(5249000000032385) {{% /code%}} A sample response is shown below : {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}{ CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-17 13:02:11:184", CREATEDTIME: "2021-08-16 16:29:10:499", CITYNAME: "Pune", ROWID: "5249000000032385" } {{% /code%}} ### Get All Rows Through Pagination You can retrieve all the rows of data from a table in the Data Store by incorporating pagination in your code using the {{%badge%}}get_paged_rows(){{%/badge%}} function. Pagination allows you to fetch the rows of a table in batches or pages through iterations. This iteration is executed until all the rows are fetched, which is validated by a simple if condition, as shown in the code below. You can refer to the table by its unique tablename. For example, if you require the rows to be fetched in batches of 100 as individual pages, you can define a variable for the maximum rows to be fetched in each page and specify the count. The sample code below assigns {{%badge%}}max_rows{{%/badge%}} as 100. {{%note%}}{{%bold%}}Note:{{%/bold%}} The {{%badge%}}maxRows{{%/badge%}} parameter is optional. The SDK call will return 200 rows in a single page by default if this value is not specified.{{%/note%}} Additionally, you will receive a token string in the response data that authorizes the subsequent fetching of data. You can fetch this token through {{%badge%}}next_token{{%/badge%}}, and pass it as the value for {{%badge%}}next_token{{%/badge%}} during the subsequent iteration, as shown in the code below. During the first execution of the loop, the value for the {{%badge%}}next_token{{%/badge%}} string is assigned as None. The next set of records are fetched through {{%badge%}}more_records{{%/badge%}} in the response data. {{%note%}}{{%bold%}}Note:{{%/bold%}} Pagination has been made available from the Node.js SDK v2.1.0 update. This will not be available in the older versions of the Node.js SDK.{{%/note%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}next_token{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the token from the response data, authorizing subsequent data retrieval.</td> </tr> <tr> <td>{{%badge%}}max_rows{{%/badge%}}</td> <td>Numeric</td> <td>A {{%bold%}}Optional{{%/bold%}} parameter. Will hold the the number of batches in which the rows has to be fetched.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}datastore_service = app.datastore() table_service = datastore_service.table("Aliens") def getMyPagedRows(next_token=None, more_records=True): rows = table_service.get_paged_rows(next_token, max_rows=100) more_records = rows['more_records'] if not more_records: return None next_token = rows['next_token'] return getMyPagedRows(next_token, more_records) getMyPagedRows(){{% /code%}} When the {{%badge%}}more_records{{%/badge%}} parameter is set to true, the sample response is shown below: {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ "status": 200, "content": [ { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:24:855", "CITYNAME": "New York", "CREATEDTIME": "2022-01-11 18:18:24:855", "ROWID": "5249000000032385" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:25:117", "CITYNAME": "Houston", "CREATEDTIME": "2022-01-11 18:18:25:117", "ROWID": "5249000000032386" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:25:120", "CITYNAME": "Chicago", "CREATEDTIME": "2022-01-11 18:18:25:120", "ROWID": "5249000000032387" } ], "message": "OK", "more_records": true, "next_token": "{{token}}" } {{%/code%}} When the {{%badge%}}more_records parameter{{%/badge%}} is set to false, the sample response is shown below: {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ "status": 200, "content": [ { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:556", "name": "San Diego", "CREATEDTIME": "2022-01-11 18:18:43:556", "ROWID": "5249000000032385" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:557", "name": "Phoenix", "CREATEDTIME": "2022-01-11 18:18:43:557", "ROWID": "5249000000032386" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:568", "name": "Seattle", "CREATEDTIME": "2022-01-11 18:18:43:568", "ROWID": "5249000000032387" } ], "message": "OK", "more_records": false } {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- title: "Insert Rows" description: "This page describes the method to insert a single row or rows in bulk from a table in the Data Store in your Python application with sample code snippets." last_updated: "2026-03-18T07:41:08.600Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/insert-rows/" service: "Cloud Scale" related: - Insert Rows - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Insert Rows You can insert a new row in a table in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}} by referring to the table's unique ID or name. You can also insert multiple rows in a table as explained in the next section. The {{%badge%}}table_service{{%/badge%}} reference used in the code below can either be a table instance or table meta created earlier. {{%note%}}{{%bold%}}Note:{{%/bold%}} * The table and the columns in it must already be created. You can {{%link href="/en/cloud-scale/help/data-store/tables/#create-a-new-table" %}}create a table{{%/link%}} and {{%link href="/en/cloud-scale/help/data-store/columns/#create-a-new-column" %}}the columns for it{{%/link%}} from the console. * You will be able to insert upto 5000 records in each table per project in the {{%link href="/en/deployment-and-billing/environments/development-environment" %}}development environment{{%/link%}}. You can create upto 25,000 records overall in each project in the development environment. There are no upper limits for record creation in the production environment.{{%/note%}} ### Insert a Single Row You must create a dictionary containing the row details in a {column name : column value} format, and pass it as an argument to the {{%badge%}}insert_row(){{%/badge%}} method, as shown below. This inserts the rows in the table that you refer by its unique tablename or tableID. A unique {{%badge%}}ID{{%/badge%}} value for the row is automatically generated once the row is inserted. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}datastore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" %}}table instance{{%/link%}}{{%badge%}}table_service{{%/badge%}} used below, please refer to their respective help sections. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}row_data{{%/badge%}}</td> <td>Array</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the details of the row to be inserted in key-value pairs.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Insert a single row in the table datastore_service = app.datastore() table_service = datastore_service.table("Employee") row_data = {'name': 'George Hamilton', 'id': '6868', 'age': '22'} row_response = table_service.insert_row(row_data) {{% /code%}} A sample response is shown below : {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}{ CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-16 16:30:12:799", Name: "George Hamilton", Age: 22, ID: 6868, CREATEDTIME: "2021-08-16 16:30:12:799", ROWID: "2136000000011015" } {{% /code%}} ### Insert Multiple Rows You can insert multiple rows in a table by constructing an array that contains the rows, and passing it as an argument to the {{%badge%}}insert_rows(){{%/badge%}} method as shown below. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}datastore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" %}}table instance{{%/link%}}{{%badge%}}table_service{{%/badge%}} used below, please refer to their respective help sections. This returns a response containing an array of row objects. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w60p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}row_data{{%/badge%}}</td> <td>Array</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the details of the rows to be inserted in key-value pairs.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}datastore_service = app.datastore() table_service = datastore_service.table("Employee") row_data = [{'name': 'Mark Wellington', 'id': '7218', 'age': '29'}, {'name': 'Zendaya Jones', 'id': '3211', 'age': '32'}] row_response = table_service.insert_rows(row_data) {{% /code%}} A sample response is shown below : {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}[ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-25 13:55:04:904", Name: "Mark Wellington", Age: 29, ID: 7218, CREATEDTIME: "2021-08-25 13:55:04:904", ROWID: 2136000000011015 }, { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-25 13:55:04:906", Name: "Zendaya Jones", Age: 32, ID: 3211, CREATEDTIME: "2021-08-25 13:55:04:906", ROWID: 2136000000011016 } ] {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- title: "Update Rows" description: "This page describes the method to update a single row or rows in bulk in a table in the Data Store in your Python application with sample code snippets." last_updated: "2026-03-18T07:41:08.600Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/update-rows/" service: "Cloud Scale" related: - Update Rows - API (/en/api/code-reference/cloud-scale/data-store/update-row/#UpdateRow) - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Update Rows You can update a single row or multiple rows in a table in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}}. The {{%badge%}}table_service{{%/badge%}} reference used in the below code snippets can either be a table instance or table meta created earlier. ### Update a Single Row This particular method allows you to update a single row by constructing an object with modified values in the required columns. Refer the unique ROWID and pass the newly constructed object that contains the updated row details to the {{%badge%}}update_row(){{%/badge%}} method. Please note that it is mandatory to specify the ROWID value here. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}datastore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" %}}table instance{{%/link%}}{{%badge%}}table_service{{%/badge%}} used below, please refer to their respective help sections. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}row_data{{%/badge%}}</td> <td>Array</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the details of the row to be updated in key-value pairs.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Update a single row datastore_service = app.datastore() table_service = datastore_service.table("table_name") row_data = {'name': 'Mathew Jones', 'id': '7211', 'age': '31', 'ROWID': 2136000000011011} row_response = table_service.update_row(row_data) logging.info(row_response) {{% /code%}} A sample response is shown below : {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}{ CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-17 13:02:11:184", CREATEDTIME: "2021-08-16 16:29:10:499", Name: "Mathew Jones", ID : "7211", Age: 31, ROWID: "2136000000011011" } {{% /code%}} ### Update Multiple Rows To update multiple rows, an array of objects is constructed containing the modified row values, which is passed as an argument to the {{%badge%}}update_rows() {{%/badge%}} method. The ROWIDs are used in corresponding array objects to refer the specific rows which requires modification. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}datastore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" %}}table instance{{%/link%}}{{%badge%}}table_service{{%/badge%}} used below, please refer to their respective help sections. The response returned here will be resolved to an array of row objects. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}row_data{{%/badge%}}</td> <td>Array</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the details of the rows to be updated in key-value pairs.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Update multiple rows datastore_service = app.datastore() table_service = datastore_service.table("Employee") row_data = [{'name': 'Mathew Jones', 'id': '7211', 'age': '31', 'ROWID': 2136000000034043}, {'name': 'Rhonda Watson', 'id': '7212', 'age': '28', 'ROWID': 2136000000034045}] row_response = table_service.update_rows(row_data) {{%/code%}} A sample response is shown below : {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}[ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-24 13:22:14:718", CREATEDTIME: "2021-08-24 13:12:55:999", Name: "Mathew Jones", ID : "7211", Age: 31, ROWID: "2136000000034043" }, { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-24 13:22:14:728", CREATEDTIME: "2021-08-24 13:12:56:001", Name: "Rhonda Watson", ID : "7212", Age: 28, ROWID: "2136000000034045" } ] {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- title: "Delete Row" description: "This page describes the method to delete a single row from a table in the Data Store in your Python application with sample code snippets" last_updated: "2026-03-18T07:41:08.600Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/delete-row/" service: "Cloud Scale" related: - Delete Row - API (/en/api/code-reference/cloud-scale/data-store/delete-row/#DeleteRow) - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Delete a row A row can be deleted from a table simply by passing the ROWID as a parameter to the {{%badge%}}delete_row(){{%/badge%}} method. This method will return true as response on deletion of the row. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}datastore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" %}}table instance{{%/link%}}{{%badge%}}table_service{{%/badge%}} used below, please refer to their respective help sections. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}ROWID{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the ID of the row to be deleted.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Delete a row datastore_service = app.datastore() table_service = datastore_service.table("CITY") row_response = table_service.delete_row(5249000000032461) {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- title: "Bulk Read Rows" description: "This page describes the method to read rows in bulk from a table in the Data Store in your Python application with sample code snippets." last_updated: "2026-03-18T07:41:08.600Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/bulk-read-rows/" service: "Cloud Scale" related: - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Bulk Read Rows Catalyst allows you to perform bulk read jobs on a specific table present in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}}. In the SDK snippet below, the Bulk Read job can read thousands of records from a specific table and generate a CSV file containing the results of the read operation, if the job is successful.The table is referred to by its unique {{%link href="/en/cloud-scale/help/data-store/tables/" %}}{{%badge%}}Table ID{{%/badge%}}{{%/link%}}. To know more about the component instance {{%badge%}}datastore_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}this help section{{%/link%}}. <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}criteria{{%/badge%}}</td> <td>Array</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the conditions based on which the rows has to be read.</td> </tr> <tr> <td>{{%badge%}}page{{%/badge%}}</td> <td>Numeric</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the number of page rows that has to be read.</td> </tr> <tr> <td>{{%badge%}}select_columns{{%/badge%}}</td> <td>Array</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold specific columns that has to be read.</td> </tr> </tbody> </table> Copy the SDK snippet below to perform a bulk read job on a particular table. {{%code class="language-python" scroll="set-scroll" %}}#Bulk read datastore_service = app.datastore() bulk_read = datastore_service.table("sampleTable").bulk_read() #Create bulk read job bulk_read_Job = bulk_read.create_job({ "criteria": { "group_operator": 'or', "group": [ { "column_name": 'Department', "comparator": 'equal', "value": 'Marketing' }, { "column_name": 'EmpId', "comparator": 'greater_than', "value": '1000' }, { "column_name": 'EmpName', "comparator": 'starts_with', "value": 'S' } ] }, "page": 1, "select_columns": ['EmpId', 'EmpName', 'Department'] }) #Get bulk read status status = bulk_read.get_status(bulk_read_Job['job_id']) #Get bulk read result result = bulk_read.get_result(bulk_read_Job['job_id']) {{%/code%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} A maximum of {{%bold%}}200,000 rows{{%/bold%}} can be read simultaneously.{{%/note%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- title: "Bulk Write Rows" description: "This page describes the method to write rows in bulk from a table in the Data Store in your Python application with sample code snippets." last_updated: "2026-03-18T07:41:08.600Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/bulk-write-rows/" service: "Cloud Scale" related: - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Bulk Write Rows Catalyst enables you to perform bulk write jobs on a specific table present in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}}. The bulk write operation can fetch thousands of records from a CSV file uploaded in {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}Stratus{{%/link%}} and insert them in a specific table. The table is referred to by its unique {{%link href="/en/cloud-scale/help/data-store/tables/" %}}{{%badge%}}table ID{{%/badge%}}{{%/link%}} that is generated by Catalyst during creation. The column in which the write operation must be performed is referred to by its unique {{%link href="/en/cloud-scale/help/data-store/columns/#column-characteristics" %}}column ID{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} To perform a bulk write operation, you must {{%link href="/en/cloud-scale/help/stratus/objects/upload-object/" %}}first upload{{%/link%}} the required data as a CSV file in Stratus.{{%/note%}} <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}tableID{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the ID of the table to which data has to be written.</td> </tr> <tr> <td>{{%badge%}}find_by{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the name of the column to which data has to be written.</td> </tr> <tr> <td>{{%badge%}}fk_mapping{{%/badge%}}</td> <td>Array</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the local_column and reference_column details.</td> </tr> <tr> <td>{{%badge%}}operation{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. The value of this parameter should be insert.</td> </tr> <tr> <td>o{{%badge%}}bject_details{{%/badge%}}</td> <td>JSON Object</td> <td> <ul> <li>{{%badge%}}bucket_name{{%/badge%}}: The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}name of the bucket{{%/link%}}, where the object is stored.</li> <li>{{%badge%}}object_key{{%/badge%}}: Can contain the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}} or the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} of the required object.</li> <li>{{%badge%}}version_id{{%/badge%}}: If the bucket has {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}versioning{{%/link%}} enabled, then the specific versionID of the file will be stored in this attribute.</li> </ul> </td> </tr> </tbody> </table> Copy the SDK snippet below to perform a bulk write job on a particular table. To know more about the component instance {{%badge%}}datastore_service{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}this help section{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}datastore_service = app.datastore() bulk_write = datastore_service.table("Sample").bulk_write() object_details = { "bucket_name": "zcstratus12345", "object_key": "sample.csv", "version_id": "64832huidksnd83" } #create bulk write job bulk_write_job = bulk_write.create_job(object_details, { "find_by": "S1", "fk_mapping": [ {"local_column": "EmployeeID", "reference_column": "EmpId"}, {"local_column": "DepartmentID", "reference_column": "DepId"} ], "operation": "insert" }) #get bulk write status status = bulk_write.get_status('6759000000167103') #get bulk write result result = bulk_write.get_result('6759000000167103') {{%/code%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} A maximum of {{%bold%}}100,000 rows{{%/bold%}} can be written at one time.{{%/note%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- title: "Bulk Delete Rows" description: "This page describes the method to delete rows in bulk from a table in the Data Store in your Python application with sample code snippets." last_updated: "2026-03-18T07:41:08.601Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/data-store/bulk-delete-rows/" service: "Cloud Scale" related: - Data Store Help (/en/cloud-scale/help/data-store/introduction) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Bulk Delete Rows Catalyst enables you to delete rows in bulk from a specific table in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}}. The table is referred by its unique tableID or tablename. You can obtain the table ID from the Data Store or from the URL when the table is opened in the console. The bulk delete operation can delete a maximum of 200 rows in a single operation. You can pass the unique ROWIDs of the rows to be deleted in an array as shown in the sample code below. You must include at least one ROWID, and can include up to a maximum of 200 ROWIDs in the code snippet given below. The rows are passed to the {{%badge%}}delete_rows(){{%/badge%}} function through datastore_service instance in the sample code. The tablename or tableID must be passed as a parameter to the {{%badge%}}table(){{%/badge%}} method. The response returns a boolean value ( true or false ) based on the status of deletion. To know more about the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-component-instance/" %}}component instance{{%/link%}}{{%badge%}}datastore_service{{%/badge%}} and the {{%link href="/en/sdk/python/v1/cloud-scale/data-store/get-table-instance/" %}}table instance{{%/link%}}{{%badge%}}table_service{{%/badge%}} used below, please refer to their respective help sections. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}ROWID{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the rowIDs to be deleted.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}#Bulk delete rows datastore_service = app.datastore() table_service = datastore_service.table("sampleTable") row_response = table_service.delete_rows([6759000000159113, 6759000000159115, 5249000000032411]) {{% /code%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} --- ## SDK — Web — Data Store -------------------------------------------------------------------------------- title: "Get a Component Instance" description: "This page describes the method to fetch component instance from the Data Store in your Web application with sample code snippets." last_updated: "2026-03-18T07:41:08.601Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/data-store/get-component-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Data Store ### Get a Component Instance The {{%badge%}}datastore{{%/badge%}} reference can be created by the following method which would not fire a server side call. {{%code class="language-javascript" scroll="set-scroll" %}}//Get a datastore instance var datastore = catalyst.table; {{% /code%}} -------------------------------------------------------------------------------- title: "Get Table Instance" description: "This page describes the method to fetch the table instance using tableID and name from a table in the Data Store in your Web application with sample code snippets." last_updated: "2026-03-18T07:41:08.601Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/data-store/get-table-instance/" service: "Cloud Scale" related: - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get a Table Object A {{%badge%}}table{{%/badge%}} object can be created by the following methods which would not fire a server-side call. The {{%badge%}}datastore{{%/badge%}} reference used in the below code snippets is the {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-component-instance" %}}component instance.{{%/link%}} ### Get a Table Instance Using TableID A {{%badge%}}table{{%/badge%}}object can be created by referring to the {{%bold%}}table ID{{%/bold%}}. {{%code class="language-javascript" scroll="set-scroll" %}}//Get a table object using table ID var table = datastore.tableId('1510000000110121'); {{% /code%}} ### Get a Table Instance Using TableName Alternatively, a {{%badge%}}table{{%/badge%}} object can be created by referring to the {{%bold%}}table name.{{%/bold%}} {{%note%}}{{%bold%}}Note : {{%/bold%}} There is no promise involved in the above methods and the table object contains the methods accessible by the table.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}//Get a table object using the table name var table = datastore.tableId('SampleTable'); {{% /code%}} -------------------------------------------------------------------------------- title: "Get Table Metadata" description: "This page describes the method to fetch the meta data of a single table or multiple tables in your Web application with sample code snippets" last_updated: "2026-03-18T07:41:08.601Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/data-store/get-table-meta/" service: "Cloud Scale" related: - Get Table Metadata - API (/en/api/code-reference/cloud-scale/data-store/get-table-metadata/#GetTableMetadata) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get Table Metadata You can obtain the metadata of the tables in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}}. ### Get Metadata of All Tables You can fetch the details of all the tables in a Catalyst project using {{%badge%}}getAll(){{%/badge%}} method. The {{%badge%}}datastore{{%/badge%}} and {{%badge%}}table{{%/badge%}} instances used in the code snippet below are the {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-component-instance" %}}component instance{{%/link%}} and the {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-table-instance" %}}table object{{%/link%}} respectively. This returns a promise which will be resolved to an object in which the {{%badge%}}content{{%/badge%}} key contains the array of the meta details of all the tables. {{%code class="language-javascript" scroll="set-scroll" %}}//Get metadata of all the tables in the project var datastore = catalyst.table; var allTablePromise = datastore.getAll(); allTablePromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); {{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="WebSDK" %}} {{% divtag id="V3" class="language-json line-numbers"%}} [ { "project_id":{ "project_name":"AlienCity", "id":"2136000000007733" }, "table_name":"AlienCity", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "modified_time":"Aug 13, 2021 01:47 PM", "table_id":"2136000000007781" }, "table_name":"CityDetails", "modified_by":{ "zuid":"66466723", "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":"2136000000006003" }, "modified_time":"Aug 13, 2021 01:47 PM", "table_id":"2136000000009090" } ] {{% /divtag %}} {{% divtag id="V2" class="language-json line-numbers"%}} [ { "project_id":{ "project_name":"AlienCity", "id":2136000000007733 }, "table_name":"AlienCity", "modified_by":{ "zuid":66466723, "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":2136000000006003 }, "modified_time":"Aug 13, 2021 01:47 PM", "table_id":2136000000007781 }, "table_name":"CityDetails", "modified_by":{ "zuid":66466723, "is_confirmed":false, "email_id":"emma@zylker.com", "first_name":"Amelia", "last_name":"Burrows", "user_type":"Admin", "user_id":2136000000006003 }, "modified_time":"Aug 13, 2021 01:47 PM", "table_id":2136000000009090 } ] {{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- title: "Get Column Metadata" description: "This page describes the method to retrieve metadata of a single column or multiple columns from a table in the Data Store in your Web application with sample code snippets" last_updated: "2026-03-18T07:41:08.601Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/data-store/get-column-meta/" service: "Cloud Scale" related: - Get Column Metadata - API (/en/api/code-reference/cloud-scale/data-store/get-column-metadata/#GetColumnMetadata) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get Column Metadata Column metadata details of a single column of a table in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}} can be retrieved through the following methods. The table reference used in the below code snippets can either be a {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-table-instance" %}}table instance{{%/link%}} or a {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-table-meta" %}}table meta.{{%/link%}} ### Get a Column's Metadata by ID You can fetch a column's meta data of a particular table using {{%badge%}}getColumnDetails(){{%/badge%}} method. {{%code class="language-javascript" %}}//Get The Column Object using Columnid var datastore = catalyst.table; var table = datastore.tableId("SampleTable"); var column = table.columnId(COLUMN_ID); {{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Web SDK" %}} {{% divtag id="V3" class="language-json line-numbers"%}} { table_id: "2305000000007003", column_sequence: "5", column_name: "CityName", category: 2, data_type: "varchar", audit_consent: false, max_length: "100", is_mandatory: false, decimal_digits: "2", is_unique: true, search_index_enabled: false, column_id: "2305000000007725" } {{% /divtag %}} {{% divtag id="V2" class="language-json line-numbers"%}} { table_id: 2305000000007003, column_sequence: 5, column_name: "CityName", category: 2, data_type: "varchar", max_length: 100, is_mandatory: false, decimal_digits: 2, is_unique: true, search_index_enabled: false, column_id: 2305000000007725 } {{% /divtag %}} {{% /panel_with_select %}} <br> ### Get a Column's Metadata by Name An alternative way to get the meta data of a column is, referring to the Column name. This returns the same response as that of the previous one. The column meta will not involve any further operations. Therefore the promise returned here is resolved to a JSON object. {{%code class="language-javascript" scroll="set-scroll" %}}//Get The Column Object using Columnname var datastore = catalyst.table; var table = datastore.tableId('SampleTable'); var column = table.columnId(COLUMN_NAME); {{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Web SDK" %}} {{% divtag id="V3" class="language-json line-numbers"%}} { table_id: "2305000000007003", column_sequence: "5", column_name: "CityName", category: 2, data_type: "varchar", audit_consent: false, max_length: "100", is_mandatory: false, decimal_digits: "2", is_unique: true, search_index_enabled: false, column_id: "2305000000007725" } {{% /divtag %}} {{% divtag id="V2" class="language-json line-numbers"%}} { table_id: 2305000000007003, column_sequence: 5, column_name: "CityName", category: 2, data_type: "varchar", max_length: 100, is_mandatory: false, decimal_digits: 2, is_unique: true, search_index_enabled: false, column_id: 2305000000007725 } {{% /divtag %}} {{% /panel_with_select %}} <br> ### Get Column Metadata Details To fetch the metadata details of a column, you must use any one of the column objects created in the previous steps which will return a promise. The promise returned will be resolved to an object in which the {{%bold%}}content{{%/bold%}} key contains the column metadata details. {{%code class="language-javascript" scroll="set-scroll" %}}//Get The column details which in turn returns a promise var datastore = catalyst.table; var table = datastore.tableId('SampleTable'); var column = table.columnId(COLUMN_NAME); var columnPromise = column.get(); columnPromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); {{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Web SDK" %}} {{% divtag id="V3" class="language-json line-numbers"%}} { table_id: "2305000000007003", column_sequence: "5", column_name: "CityName", category: 2, data_type: "varchar", audit_consent: false, max_length: "100", is_mandatory: false, decimal_digits: "2", is_unique: true, search_index_enabled: false, column_id: "2305000000007725" } {{% /divtag %}} {{% divtag id="V2" class="language-json line-numbers"%}} { table_id: 2305000000007003, column_sequence: 5, column_name: "CityName", category: 2, data_type: "varchar", max_length: 100, is_mandatory: false, decimal_digits: 2, is_unique: true, search_index_enabled: false, column_id: 2305000000007725 } {{% /divtag %}} {{% /panel_with_select %}} <br> ### Get Metadata of All Columns In addition to getting the meta data of a single column, you can retrieve the meta data of all the columns of a particular table using {{%badge%}}getAllColumns(){{%/badge%}}method. {{%note%}}{{%bold%}}Note : {{%/bold%}} The promise returned here is resolved into an array of column meta details.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}//Get all the columns in the table which in turn returns a promise var datastore = catalyst.table; var table = datastore.tableId('SampleTable'); var allcolumnPromise = table.getColumns(); allcolumnPromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); {{% /code%}} A sample response that you will receive for each version is shown below: {{% panel_with_select header="Web SDK" %}} {{% divtag id="V3" class="language-json line-numbers"%}} [ { table_id: "2136000000007781", column_sequence: "1", column_name: "ROWID", category: 1, data_type: "bigint", audit_consent: false, max_length: "50", is_mandatory: false, decimal_digits: "2", is_unique: false, search_index_enabled: false, column_id: "2136000000007784" }, { table_id: "2136000000007781", column_sequence: "2", column_name: "CREATORID", category: 1, data_type: "bigint", max_length: "50", is_mandatory: false, decimal_digits: "2", is_unique: false, search_index_enabled: true, column_id: "2136000000007786" }, { table_id: "2136000000007781", column_sequence: "3", column_name: "CREATEDTIME", category: 1, data_type: "datetime", max_length: "50", is_mandatory: false, decimal_digits: "2", is_unique: false, search_index_enabled: true, column_id: "2136000000007788" }, { table_id: "2136000000007781", column_sequence: "4", column_name: "MODIFIEDTIME", category: 1, data_type: "datetime", max_length: "50", is_mandatory: false, decimal_digits: "2", is_unique: false, search_index_enabled: true, column_id: "2136000000007790" }, { table_id: "2136000000007781", column_sequence: "5", column_name: "CityName", category: 2, data_type: "varchar", max_length: "100", is_mandatory: false, decimal_digits: "2", is_unique: true, search_index_enabled: true, column_id: "2136000000008503" } ] {{% /divtag %}} {{% divtag id="V2" class="language-json line-numbers"%}} [ { table_id: 2136000000007781, column_sequence: 1, column_name: "ROWID", category: 1, data_type: "bigint", max_length: 50, is_mandatory: false, decimal_digits: 2, is_unique: false, search_index_enabled: false, column_id: 2136000000007784 }, { table_id: 2136000000007781, column_sequence: 2, column_name: "CREATORID", category: 1, data_type: "bigint", max_length: 50, is_mandatory: false, decimal_digits: 2, is_unique: false, search_index_enabled: true, column_id: 2136000000007786 }, { table_id: 2136000000007781, column_sequence: 3, column_name: "CREATEDTIME", category: 1, data_type: "datetime", max_length: 50, is_mandatory: false, decimal_digits: 2, is_unique: false, search_index_enabled: true, column_id: 2136000000007788 }, { table_id: 2136000000007781, column_sequence: 4, column_name: "MODIFIEDTIME", category: 1, data_type: "datetime", max_length: 50, is_mandatory: false, decimal_digits: 2, is_unique: false, search_index_enabled: true, column_id: 2136000000007790 }, { table_id: 2136000000007781, column_sequence: 5, column_name: "CityName", category: 2, data_type: "varchar", max_length: 100, is_mandatory: false, decimal_digits: 2, is_unique: true, search_index_enabled: true, column_id: 2136000000008503 } ] {{% /divtag %}} {{% /panel_with_select %}} -------------------------------------------------------------------------------- title: "Insert Rows" description: "This page describes the method to insert a single row or rows in bulk from a table in the Data Store in your Web application with sample code snippets." last_updated: "2026-03-18T07:41:08.601Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/data-store/insert-rows/" service: "Cloud Scale" related: - Insert Rows - API (/en/api/code-reference/cloud-scale/data-store/insert-new-row/#InsertNewRow) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Insert Rows You can insert a new row of data or a record in a table in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}} by referring to the table's unique ID or name. You can also insert multiple rows in a table in the same operation. {{%note%}}{{%bold%}}Note:{{%/bold%}} 1. The table and the columns in it must already be created. You can create a table and the columns for it from the console. 2. You will be able to insert upto 5000 records in each table per project in the {{%link href="/en/deployment-and-billing/environments/development-environment" %}}development environment{{%/link%}}. You can create upto 25,000 records overall in each project in the development environment. There are no upper limits for record creation in the production environment.{{%/note%}} You must construct an array containing the rows to be inserted in the table, and pass the array as an argument to the {{%badge%}}addRow(){{%/badge%}} method as shown below. This inserts the rows in the table you refer to by its unique name or ID. The rows are specified in a {column name : column value} format. The promise returned here is resolved to an object, where the {{%badge%}}content{{%/badge%}} key contains the array of the rows. The {{%badge%}}table{{%/badge%}} reference used in the code below is the {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-table-instance/" %}}table object{{%/link%}} created earlier. {{%code class="language-javascript" scroll="set-scroll" %}}//Create an array with the rows to be inserted var details = [ {"Name": "Heather Drake", "Age": 26}, {"Name": "Lucy Park", "Age": 34} ]; //Insert the rows by passing the array, which in turn returns a promise var datastore = catalyst.table; var table = datastore.tableId('EmpDetails'); //Provide the table ID or table name to insert the rows var insertPromise = table.addRow(details); //Pass the JSON array insertPromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); {{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions. #### Web SDK {{%code class="language-json" scroll="set-scroll" %}}[ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-25 13:55:04:904", Name: "Heather Drake", Age: 26, CREATEDTIME: "2021-08-25 13:55:04:904", ROWID: 2136000000038008 }, { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-25 13:55:04:906", Name: "Lucy Park", Age: 34, CREATEDTIME: "2021-08-25 13:55:04:906", ROWID: 2136000000038010 } ] {{% /code%}} -------------------------------------------------------------------------------- title: "Update Rows" description: "This page describes the method to update a single row or rows in bulk in a table in the Data Store in your Web application with sample code snippets." last_updated: "2026-03-18T07:41:08.602Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/data-store/update-rows/" service: "Cloud Scale" related: - Update Rows - API (/en/api/code-reference/cloud-scale/data-store/update-row/#UpdateRow) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Update Rows If a single row or multiple rows are to be updated with one or more column values in a table, the following method is used. The {{%badge%}}table{{%/badge%}} used in the below code snippet is the {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-table-instance" %}}table object.{{%/link%}} {{%note%}}{{%bold%}}Note : {{%/bold%}}The promise returned here will be resolved to an object in which the {{%bold%}}content{{%/bold%}} key contains an array of updated row details.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}//Create an object with the details to be updated referring to the corresponding ROWID var details = [ { "Name": "John Denver", "Age": 25, "ROWID": 1510000000085482}, { "Name": "Jill Scott", "Age": 39, "ROWID": 1510000000113707} ]; //Update The Row Object using details var datastore = catalyst.table; var table = datastore.tableId('SampleTable'); var updatePromise = table.updateRow(details); updatePromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); {{% /code%}} A sample response that you will receive is shown below. The response is the same for both versions. #### Web SDK {{%code class="language-json" scroll="set-scroll" %}}[ { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-24 13:22:14:718", CREATEDTIME: "2021-08-24 13:12:55:999", Name: "John Denver", Age: 25 ROWID: "2136000000034043" }, { CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-24 13:22:14:728", CREATEDTIME: "2021-08-24 13:12:56:001", Name: "Jill Scott", Age: 39 ROWID: "2136000000034045" } ] {{% /code%}} -------------------------------------------------------------------------------- title: "Get Rows" description: "This page describes the method to fetch a single row or all the rows from a table in the Data Store in your Web application with sample code snippets" last_updated: "2026-03-18T07:41:08.603Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/data-store/get-rows/" service: "Cloud Scale" related: - Get Rows - API (/en/api/code-reference/cloud-scale/data-store/get-all-rows/#GetAllRows) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Get Rows You can retrieve single row or multiple rows of data from a table in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Catalyst Data Store{{%/link%}}. The {{%badge%}}table{{%/badge%}} object used in these code snippets is defined in the {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-table-instance" %}}component instance page{{%/link%}}. ### Get a Row Object Before you fetch a row from a table in the Data Store, you must first create a row object for it using the unique Row ID of the row as shown below. This will not fire a server-side call. {{%code class="language-javascript" scroll="set-scroll" %}}//Create a row object using the Rowid var datastore = catalyst.table; var table = datastore.tableId("ShipmentTracking"); var row = table.rowId("12781121212121"); {{% /code%}} ### Get a Single Row You can now fetch a single row from a table using the {{%badge%}}get(){{%/badge%}} method. You must pass the unique Row ID of the row to the row object that you created in the previous section, as shown below. The promise returned here will be resolved to a JSON row object, in which the {{%badge%}}content{{%/badge%}} key contains a row object. {{%code class="language-javascript" scroll="set-scroll" %}}//Fetch the row details by passing the row ID to the row object var datastore = catalyst.table; var table = datastore.tableId('ShipmentTracking'); var row = table.rowId("12781121212121"); var rowPromise = row.get(); rowPromise.then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); {{% /code%}} A sample response that you will receive is shown below. The response is the same for all versions of Web SDK. {{%code class="language-json" scroll="set-scroll" %}}{ CREATORID: "2136000000006003", MODIFIEDTIME: "2021-08-17 13:02:11:184", CREATEDTIME: "2021-08-16 16:29:10:499", CityName: "Pune", ROWID: "2136000000011011" } {{% /code%}} ### Get All Rows Through Pagination You can retrieve all the rows of data from a table in the Data Store by incorporating pagination in your code using the {{%badge%}}getPagedRows(){{%/badge%}} function. Pagination allows you to fetch the rows of a table in batches or pages through iterations. This iteration is executed until all the rows fetched, which is validated by {{%badge%}}hasNext{{%/badge%}}, as shown in the sample code below. You can refer to the table by its unique Table ID or name. For example, if you require the rows to be fetched in batches of 100 as individual pages, you can specify the count of the {{%badge%}}max_rows{{%/badge%}} parameter as 100, as shown below. {{%note%}}{{%bold class="bold-primary" %}}Note:{{%/bold%}} The {{%badge%}}max_rows{{%/badge%}} parameter is optional. The SDK call will return 200 rows in a single page by default if this value is not specified.{{%/note%}} Additionally, after each execution of the loop, you will receive a token string in the response data that authorizes the subsequent fetching of data. You must pass this token through the {{%badge%}}next_token{{%/badge%}} parameter during the subsequent iteration, as shown below. During the first execution of the loop, the value for the {{%badge%}}next_token{{%/badge%}} string is assigned as {{%badge%}}undefined{{%/badge%}}. The next set of records are fetched through {{%badge%}}more_records{{%/badge%}} in the response data. {{%note%}}{{%bold%}}Note:{{%/bold%}} Pagination has been made available from the Web SDK v3.1.0 update. This will not be available in the older versions of the Web SDK.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}{ if (!hasNext) { return; } catalyst.table .tableId('userDetails') //Specify the Table ID or Table name of the table to fetch the records from .getPagedRows({ next_token, max_rows: 100 }) //Define the maximum rows to be fetched in a single page and pass it along with nextToken .then(resp => { console.log('rows : ', resp.content); //Fetch the rows from the table return getMyPagedRows(resp.more_records, resp.next_token); //Fetch the next set of records and the token string for the next iteration }) .catch((err) => { console.log(err.toString()); }); } {{% /code%}} A sample response that you will receive if there are more records available is shown below. The {{%badge%}}more_records{{%/badge%}} parameter will be set to {{%badge%}}true{{%/badge%}} in this case. #### Web SDK v3.1.0 {{% panel_with_adjustment header="Web SDK v3.1.0" class="language-json line-numbers"%}}{ "status": 200, "content": [ { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:24:855", "name": "raj", "CREATEDTIME": "2022-01-11 18:18:24:855", "ROWID": "3359000000108111" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:25:117", "name": "raj", "CREATEDTIME": "2022-01-11 18:18:25:117", "ROWID": "3359000000108114" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:25:120", "name": "raj", "CREATEDTIME": "2022-01-11 18:18:25:120", "ROWID": "3359000000108117" } ], "message": "OK", "more_records": true, "next_token": "{{token}}" }{{% /panel_with_adjustment %}} A sample response that you will receive if there are no more records available is shown below. The {{%badge%}}more_records{{%/badge%}} parameter will be set to {{%badge%}}false{{%/badge%}} in this case. {{% panel_with_adjustment header="Web SDK v3.1.0" class="language-json line-numbers" %}}{ "status": 200, "content": [ { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:556", "name": "raj99", "CREATEDTIME": "2022-01-11 18:18:43:556", "ROWID": "3359000000108410" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:557", "name": "raj98", "CREATEDTIME": "2022-01-11 18:18:43:557", "ROWID": "3359000000108413" }, { "CREATORID": "3359000000006003", "MODIFIEDTIME": "2022-01-11 18:18:43:568", "name": "raj96", "CREATEDTIME": "2022-01-11 18:18:43:568", "ROWID": "3359000000108417" } ], "message": "OK", "more_records": false } {{% /panel_with_adjustment %}} {{%note%}}{{%bold class="bold-primary" %}}Note:{{%/bold%}} We have deprecated support for the {{%badge%}}getAllRows(){{%/badge%}} method that was available in the earlier versions of the Web SDK to fetch multiple rows of data from a table. Pagination is now available as an enhancement that enables you to fetch all rows, without any limitations on the number of rows fetched. The {{%badge%}}getAllRows(){{%/badge%}} method will be removed from all future SDK versions. Please ensure that you upgrade your code accordingly.{{%/note%}} -------------------------------------------------------------------------------- title: "Delete a Row" description: "This page describes the method to delete a single row from a table in the Data Store in your Web application with sample code snippets" last_updated: "2026-03-18T07:41:08.603Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/data-store/delete-row/" service: "Cloud Scale" related: - Delete Row - API (/en/api/code-reference/cloud-scale/data-store/delete-row/#DeleteRow) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Delete a Row A single row can be deleted, but multiple rows cannot be deleted at a time. The _row_ used in the below code snippets is the {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-table-instance" %}}row object.{{%/link%}} A row can be deleted from a table simply by passing the {{%bold%}}{{%badge%}}ROWID{{%/badge%}}{{%/bold%}} as a parameter to the {{%badge%}}delete(){{%/badge%}} method. {{%note%}}{{%bold%}}Note : {{%/bold%}} The promise returned here will be resolved to an object in which the {{%bold%}}{{%badge%}}content{{%/badge%}}{{%/bold%}} key contains a deleted row object.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}//Delete the row which in turn returns a promise var datastore = catalyst.table; var table = datastore.tableId('SampleTable'); var row = table.rowId(ROW_ID); var rowPromise = row.delete(); rowPromise.then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); {{% /code%}} -------------------------------------------------------------------------------- title: "Bulk Delete Rows" description: "This page describes the method to delete rows in bulk from a table in the Data Store in your Web application with sample code snippets." last_updated: "2026-03-18T07:41:08.603Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/data-store/bulk-delete-rows/" service: "Cloud Scale" related: - Bulk Delete Rows - API (/en/api/code-reference/cloud-scale/data-store/bulk-delete-rows/#BulkDeleteRows) - Data Store (/en/cloud-scale/help/data-store/introduction) -------------------------------------------------------------------------------- # Bulk Delete Rows Catalyst enables you to delete records or rows of data in bulk from a specific table in the {{%link href="/en/cloud-scale/help/data-store/introduction" %}}Data Store{{%/link%}}. The table is referred by its unique ID or name. You can obtain the table ID from Data Store or from the URL when the table is opened in the console. The bulk delete operation can delete a maximum of 200 rows in a single operation. You can pass the unique ROWIDs of the rows to be deleted in an array as shown in the sample code below. You must include at least one ROWID, and can include upto 200 ROWIDs, in the code. The array is assigned to a variable which is passed to the {{%badge%}}deleteRows(){{%/badge%}} function through {{%badge%}}deletePromise{{%/badge%}} in the sample code. The table name or table ID must be passed to {{%badge%}}datastore.tableId(){{%/badge%}}. The {{%badge%}}datastore{{%/badge%}} reference used below is defined in the {{%link href="/en/sdk/web/v4/cloud-scale/data-store/get-component-instance" %}}component instance page{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}var datastore = catalyst.table; //Pass the table ID or table name var table = datastore.tableId('EmpDetails'); //Declare the ROWIDs of the records to be deleted var rowIds =[1028000000171815, 1028000000171810, 1028000000171805, 1028000000171617, 1028000000171098]; //Pass the array of the ROWIDs to the deleteRows() function var deletePromise = table.deleteRows(rowIds); //Returns the promise and prints in the browser console deletePromise .then((response) => { console.log(response.content); }) .catch((err) => { console.log(err); }); {{% /code%}}