# Stratus -------------------------------------------------------------------------------- title: "Introduction" description: "Stratus is a robust cloud storage solution powered by Catalyst. You can store data of any format type in the form of buckets and objects." last_updated: "2026-03-18T07:41:08.534Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/stratus/introduction/" service: "Cloud Scale" related: - Create a Bucket (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/overview/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Stratus ### Introduction Catalyst Stratus, a component of Catalyst Cloud Scale service, is a robust cloud storage solution that lets you store any type of data as objects within containers called buckets. With a simple upload, you can organize and manage these objects in the console using a familiar directory-like structure and easily perform upload or download operations. This storage infrastructure powered by Catalyst ensures high availability, scalability, and reliability for handling your application’s storage needs efficiently. <!--You can also enable Caching for the bucket in Stratus to cache objects.--> A **Bucket** is your ideal storage container that can store an unlimited amount of objects, and can be referred to using a {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/#bucket-url" %}}*Bucket URL*{{%/link%}}. This URL will be generated by Stratus when you create the bucket. An **Object** is data of any format that is stored in the bucket. Stratus will generate an {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}*Object URL*{{%/link%}} when the Object is uploaded to the bucket. This URL will be unique to each object, and it can be used to access the objects in the bucket securely. <br /> You can also access Stratus and control the data present in its buckets, through code using Catalyst SDKs. Stratus server SDKs are available in the following runtime: * {{%link href="/en/sdk/java/v1/cloud-scale/stratus/overview/" %}}Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/overview/" %}}Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/stratus/overview/" %}}Python SDK{{%/link%}} Stratus Client SDKs are available in: * {{%link href="/en/sdk/web/v4/cloud-scale/stratus/overview/" %}}Web SDK{{%/link%}} * {{%link href="/en/sdk/android/v2/cloud-scale/stratus/overview/" %}}Android SDK{{%/link%}} * {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/overview/" %}}iOS SDK{{%/link%}} * {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/overview/" %}}Flutter SDK{{%/link%}} You also have support to perform operations in Stratus using {{%link href="/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets" %}}REST APIs{{%/link%}}. ### Highlights In this help section, we'll go over some of the salient features of Stratus that make it the ideal cloud storage solution for your application's requirements. - **Third-party migration**: You can migrate the data stored in third-party storage platforms such as {{%link href="/en/cloud-scale/help/stratus/third-party-migration/migrate-s3/" %}}*Amazon S3*{{%/link%}} and {{%link href="/en/cloud-scale/help/stratus/third-party-migration/gcp/" %}}*Google Cloud Platform (GCP) Cloud Storage*{{%/link%}} to Stratus in a few simple steps. - **Complete cloud storage solution**: You can store objects of any file format in buckets. The data is stored in the form of {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/" %}}Buckets{{%/link%}} and {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}Objects{{%/link%}}, and each object will be stored and accessed using a unique URL. {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}Path support{{%/link%}} is also available for Stratus, and each object in a bucket can be stored in a specific path. - **Custom Permissions**: Using JSON code, you can provide {{%link href="/en/cloud-scale/help/stratus/stratus-permissions/#custom-permissions" %}}custom permissions{{%/link%}} for every individual object stored in the bucket. - You can optionally enable the following bucket settings: - **Versioning**: {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} allows you to store multiple versions of each object in the bucket, and every version of the object will be accessed and identified using a unique {{%badge%}}version ID{{%/badge%}} generated by *Stratus*. - **Data Encryption**: If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#data-encryption" %}}Data Encryption{{%/link%}} is enabled, *Stratus* can perform both encryption at rest and encryption at flight for the objects. - **PII/ePHI**: The {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#piiephi" %}}PII/ePHI{{%/link%}} setting has to be enabled to store confidential or personally identifiable information in a {{%link href="/en/compliance/hipaa/" %}}HIPAA{{%/link%}} compliant manner. Moreover, enabling this feature will log every access made to the objects, and these logs can be read in {{%link href="/en/getting-started/set-up-a-catalyst-project/audit-logs/" %}}Audit Logs{{%/link%}}. <!-- - **Caching**: Once {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#caching" %}}Caching{{%/link%}} is enabled, Catalyst will generate an additional URL called *Caching URL*. Objects accessed using this URL will be cached.--> - **Safety Scanning**: *Stratus* constantly scans for malware in the background. When the scans encounter malware, the user, admin, super admin, and the project owner will be notified about it via email, and the uploaded object is immediately and permanently deleted from the bucket. - **Multipart Upload Support**: *Stratus* supports multipart upload of an object. If you upload an object that is too large in size (for example, 2GB) then you have the option to define the smaller parts of your object to Catalyst using the multipart server ({{%link href="/en/sdk/java/v1/cloud-scale/stratus/upload-object/#upload-an-object-using-multipart-operations" %}}Java{{%/link%}}, {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/#upload-object-using-multipart" %}}Node.js{{%/link%}}, or {{%link href="/en/sdk/python/v1/cloud-scale/stratus/upload-object/#upload-object-using-multipart" %}}Python{{%/link%}}) SDKs, and client ({{%link href="/en/sdk/web/v4/cloud-scale/stratus/upload-object/#mutlipart-upload" %}}Web{{%/link%}}) SDKs, and perform uploads in a manner that minimizes the impact of network errors. You also get improved throughput as each part can be uploaded in parallel. If you do not define specific smaller parts of your object, Catalyst will by default split the object to smaller parts and upload it and fulfill your requirement. - **Download Using Transfer Manager**: Stratus supports download of large objects using Transfer Manager. This allows you to specify the start and end range of an object that you wish to download. For example, consider you have a file that is 4GB in size; you can choose to download a portion of the object, say 2GB, at one time by specifying the start and end byte range. The required range download can be performed using Catalyst server ({{%link href="/en/sdk/java/v1/cloud-scale/stratus/download-object/#download-an-object-using-transfer-manager" %}}Java{{%/link%}}, {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/#download-an-object-using-transfer-manager" %}}Node.js{{%/link%}}, and {{%link href="/en/sdk/python/v1/cloud-scale/stratus/download-object/#download-an-object-using-transfer-manager" %}}Python{{%/link%}}) SDKs and client ({{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/#download-a-particular-part-of-the-object" %}}Web{{%/link%}}) SDKs. -------------------------------------------------------------------------------- title: "Stratus Permissions" description: "Stratus is a robust cloud storage solution powered by Catalyst. You can store data of any format type in the form of buckets and objects." last_updated: "2026-03-18T07:41:08.534Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/stratus/stratus-permissions/" service: "Cloud Scale" related: - Create a Bucket (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/overview/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Stratus Permissions ### Default Permission Template You can create a bucket with one of two types of default permission templates. <br /> * **Authenticated Permission Template**: A bucket created using this default permission template will dictate that all the objects of your bucket can only be accessed by users that are authenticated on the client portal of your application. * **Public Permission Template**: A bucket created using this default permission template will allow any end-user on the internet to access the objects of your bucket without any authorization requirement. {{%note%}}{{%bold%}}Note:{{%/bold%}} * Both the permission templates are default types that you have to select while you {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/" %}}create your bucket{{%/link%}}. These templates are editable, and you can also edit the permissions of individual objects stored in your bucket. * The permissions that are configured are only applicable to project users and not collaborators. <!--* If the bucket is created using the {{%bold%}}Authenticated permission template{{%/bold%}}, and {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#caching" %}}Caching{{%/link%}} has been enabled for the bucket. To access the cached objects using the {{%bold%}}Caching URL{{%/bold%}}, you need to {{%bold%}}sign the Caching URL{{%/bold%}} first. The {{%italics%}}signing of the Caching URL{{%/italics%}} needs to be done every one hour, and it can only be done using the Catalyst Server SDKs ({{%link href="/en/sdk/java/v1/cloud-scale/stratus/generate-cached-url/" %}}Java{{%/link%}}, {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/generate-cached-url/" %}}Node.js{{%/link%}}, or {{%link href="/en/sdk/python/v1/cloud-scale/stratus/generate-cached-url/" %}}Python{{%/link%}}) or {{%link href="/en/api/code-reference/cloud-scale/stratus/get-presigned-urls/#GetSignedCachedURL" %}}API{{%/link%}}.--> * These permissions are meant to define the access level of end-users and not {{%italics%}}Collaborators{{%/italics%}} or {{%italics%}}Administrators{{%/italics%}}. You can define Collaborator's access level in the {{%link href="/en/getting-started/set-up-a-catalyst-project/profiles-and-permissions/" %}}Profiles & Permissions{{%/link%}} section. * Regardless of the permission template you have chosen, {{%bold%}}upload{{%/bold%}} actions in the bucket can only be performed by {{%bold%}}authenticated users{{%/bold%}}.{{%/note%}} ### Custom Permissions When you create a bucket, you are mandated to choose a default permission template- **Authenticated**, or **Public**. Based on your choice, a default permission template will be loaded, and your bucket will be created. In addition to this, regardless of the permission template you had chosen, you can **define the permissions of every individual object** or sub-directory as a whole using simple JSON code. <br /> The default permission templates that will be loaded based on your choice are shown below: #### Default Authenticated Permission Template {{% panel_without_adjustment header="Authenticated Permission Template" class="language-json line-numbers"%}}{ "rules": [ { "rule_id": "AuthenticatedBucket_Rule1", "condition": { "user": { "auth_type": "authenticated", "zuid": "*" } }, "allowed_actions": [ "GetObject" ], "paths": [ "vendorstats::/*" ], "effect": "allow" } ], "version": "v1" } {{%/panel_without_adjustment%}} #### Default Public Permission Template {{% panel_without_adjustment header="Authenticated Permission Template" class="language-json line-numbers"%}}{ "rules": [ { "rule_id": "PublicBucket", "condition": { "user": { "auth_type": "public" } }, "actions": [ "GetObject" ], "paths": [ "zylker-bucket-pubs::/*" ], "effect": "allow" } ], "version": "v1" } {{%/panel_without_adjustment%}} To effectively edit both the permission templates and employ custom permissions, you need to familiarize yourself with the following JSON keys and their purpose: <table class="content-table"> <thead> <tr> <th class="w30p">JSON Key Name</th> <th class="w70p">Purpose</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}rules{{%/badge%}}</td> <td> <ul> <li>This is the JSON key where you configure your permissions</li> <li>This key will contain all the rules you define for the objects present in the bucket</li> </ul> </td> </tr> <tr> <td>{{%badge%}}rule_id{{%/badge%}}</td> <td> <ul> <li>This is a string that will contain the name of the rule you are going to define.</li> <li>You need to name the rule in a manner you can uniquely identify it.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}effect{{%/badge%}}</td> <td> <ul> <li>This is a key where you can only enter one of two values: {{%bold%}}allow{{%/bold%}} or {{%bold%}}deny{{%/bold%}}</li> <li>Based on the value, the rule will be to {{%italics%}}allow{{%/italics%}} a specific user or users to perform an action, or to {{%italics%}}deny{{%/italics%}} a specific user or users to deny an action.</li> <li>The following behaviour is to be expected when you recieve an access request that satisfies conditions present in more than one configured permission statement <ul> <li>Even if one matching statement has the effect as {{%bold%}}deny{{%/bold%}} then the {{%badge%}}deny{{%/badge%}} will override all {{%bold%}}allow{{%/bold%}} statements.</li> <li>For an {{%bold%}}allow{{%/bold%}} effect to take place, then {{%bold%}}atleast one{{%/bold%}} statement with the matching condition should have its effect as {{%badge%}}allow{{%/badge%}} and none of the statements should have effect as {{%bold%}}deny{{%/bold%}}.</li> </ul> </li> </ul> </td> </tr> <tr> <td>{{%badge%}}allowed_actions{{%/badge%}}</td> <td> <ul> <li>This is a key to define the actions that can be performed on the object by the user.</li> <li>The allowed actions are: <ul> <li>{{%badge%}}{{%bold%}}GetObject{{%/bold%}}{{%/badge%}}: To fetch the object data</li> <li>{{%badge%}}{{%bold%}}PutObject{{%/bold%}}{{%/badge%}}: To create, write and update object data</li> <li>{{%badge%}}{{%bold%}}DeleteObject{{%/bold%}}{{%/badge%}}: To delete object data</li> </ul> </li> </ul> </td> </tr> <tr> <td>{{%badge%}}paths{{%/badge%}}</td> <td> <ul> <li>This key will define the location path of an object.</li> <li>You will be providing this value in standard file path format. The value needs to be provided as an array.</li> <li>To denote {{%bold%}}all the objects{{%/bold%}} present in a subdirectory or a bucket, you can use the asterisk '*' special character.</li> <li>You can also use Dynamic Variables; {{%badge%}}X_ZUID{{%/badge%}} and {{%badge%}}X_ORGID{{%/badge%}} to define the path. These dynamic variables will hold the value of the {{%bold%}}UserID{{%/bold%}}, and {{%bold%}}OrgID{{%/bold%}} respectively. So, to use these dynamic variables you need to have defined your directories and objects with actual {{%bold%}}UserID{{%/bold%}} and {{%bold%}}OrgID{{%/bold%}} names. Please visit {{%link href="/en/cloud-scale/help/stratus/stratus-permissions/#dynamic-variables" %}}this section{{%/link%}} to learn more about defining your object path using Dynamic Variables.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}condition{{%/badge%}}</td> <td>This JSON key will define the conditions under which the actions need to occur.</td> </tr> <tr> <td>{{%badge%}}user{{%/badge%}}</td> <td> This JSON key will be used in the condition key to specify which user, or set of users, does the condition that is being defined apply to. <ul> <li>Will contain two other json keys: {{%badge%}}auth_type{{%/badge%}} and {{%badge%}}zuid{{%/badge%}}.</li> <li>You can define the type of user using the {{%badge%}}auth_type{{%/badge%}} json key</li> <li>The {{%badge%}}auth_type{{%/badge%}} will contain a default value when you create the bucket using a default permission template</li> <li>The {{%badge%}}auth_type{{%/badge%}} json key can only contain two values: "{{%badge%}}{{%bold%}}public{{%/bold%}}{{%/badge%}}" or "{{%badge%}}{{%bold%}}authenticated{{%/bold%}}{{%/badge%}}".</li> <li>The {{%badge%}}zuid{{%/badge%}} json key will be used to determine which users do the conditions apply to.</li> <li>{{%badge%}}zuid{{%/badge%}} can contain the special character asterisk "*" to mean all ZUIDs qualify for the condition, or can contain an array of ZUIDs to specify which users alone do the conditions apply to.</li> <li>{{%badge%}}org_details{{%/badge%}} is a JSON key that will accept a JSON object. The JSON object will be defined as a JSON key value pair, with the key as {{%badge%}}zaaid{{%/badge%}}, and the value as an array of {{%badge%}}zuid values{{%/badge%}}.</li> </ul> {{%note%}}{{%bold%}}Note:{{%/bold%}} You can determine access based on user IDs either using {{%badge%}}zuid values{{%/badge%}} JSON key-value pair or {{%badge%}}org_details{{%/badge%}} JSON. You cannot use both to define user access.{{%/note%}} </td> </tr> <tr> <td>{{%badge%}}{{%bold%}}Operators{{%/bold%}}{{%/badge%}}</td> <td>These are JSON keys that will help you in defining cases for the conditions to apply or not apply.</td> </tr> <tr> <td>{{%badge%}}string_equals{{%/badge%}}</td> <td>Dictate actions that need to occur if the string values are equal.</td> </tr> <tr> <td>{{%badge%}}string_not_equals{{%/badge%}}</td> <td>Define actions that need to occur if the string value does not match.</td> </tr> <tr> <td>{{%badge%}}string_equals_ignore_case{{%/badge%}}</td> <td>Define actions where the string value can match regardless of the case (upper/lower) that is used.</td> </tr> <tr> <td>{{%badge%}}string_not_equals_ignore_case{{%/badge%}}</td> <td>Define actions that need to occur if the string values do not match regardless of the case that is used.</td> </tr> <tr> <td>{{%badge%}}string_like{{%/badge%}}</td> <td>If part of the string value matches with the key you provide, then actions can be performed on the object.</td> </tr> <tr> <td>{{%badge%}}string_not_like{{%/badge%}}</td> <td>If part of the string value does not match with the key you provide, then actions can be performed on the object.</td> </tr> <tr> <td>{{%badge%}}ip_address{{%/badge%}}</td> <td>Define an action if the source of the request comes from a particular IP or IPs that you are allowing.</td> </tr> <tr> <td>{{%badge%}}not_ip_address{{%/badge%}}</td> <td>Define actions that should if the source of the request comes from IP or IPs that you are particularly halting.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}Condition Keys{{%/bold%}}{{%/badge%}}</td> <td></td> </tr> <tr> <td>{{%badge%}}referrer{{%/badge%}}</td> <td>This JSON key will contain the value of the complete URL where the action was requested. The value needs to be provided as an array. For example, let's say you have created a microservice and you have hosted it on {{%link href="/en/serverless/help/appsail/introduction/" %}}Catalyst AppSail{{%/link%}}. The value of referrer will be the complete URL of this microservice, and the permission will be defined for actions pertaining to this microservice alone. This key will be used for the following operators: <ul> <li>{{%badge%}}string_equals{{%/badge%}}</li> <li>{{%badge%}}string_not_equals{{%/badge%}}</li> <li>{{%badge%}}string_equals_ignore_case{{%/badge%}}</li> <li>{{%badge%}}string_not_equals_ignore_case{{%/badge%}}</li> <li>{{%badge%}}string_like{{%/badge%}}</li> <li>{{%badge%}}string_not_like{{%/badge%}}</li> </ul> </td> </tr> <tr> <td>{{%badge%}}user_agent{{%/badge%}}</td> <td>This JSON key will contain the value of the source from which the request has been made. The value needs to be provided as an array. Whether the source of the request is an API, from a browser, or so on. This key will be used for the following operators: <ul> <li>{{%badge%}}string_equals{{%/badge%}}</li> <li>{{%badge%}}string_not_equals{{%/badge%}}</li> <li>{{%badge%}}string_equals_ignore_case{{%/badge%}}</li> <li>{{%badge%}}string_not_equals_ignore_case{{%/badge%}}</li> <li>{{%badge%}}string_like{{%/badge%}}</li> <li>{{%badge%}}string_not_like{{%/badge%}}</li> </ul> </td> </tr> <tr> <td>{{%badge%}}source_ip{{%/badge%}}</td> <td>This JSON key will contain the value of only publicly listed IP addresses. The value needs to be provided as an array. It will help you in defining a permission that allows, or denies actions from a particular IP. This key will be used for the following operators: <ul> <li>{{%badge%}}ip_address{{%/badge%}}</li> <li>{{%badge%}}not_ip_address{{%/badge%}}</li> </ul> </td> </tr> <tr> <td>{{%badge%}}version{{%/badge%}}</td> <td> <ul> <li>States the version of the permission template, and will hold the current version value - {{%badge%}}v1{{%/badge%}}.</li> <li>We strongly urge that you do not change the value of this key.</li> </ul> </td> </tr> </tbody> </table> {{%note%}}{{%bold%}}Note:{{%/bold%}} Ensure that you are using the {{%bold%}}exact names for JSON keys{{%/bold%}} to define your permissions.{{%/note%}} ### Dynamic Variables You can use dynamic variables to define the object path while configuring permissions. During runtime, these variables will hold relevant values that define the path of the object. In Stratus, you can use the following dynamic variables to define your path: * {{%badge%}}**X_ZUID**{{%/badge%}}: Will hold actual {{%badge%}}UserIDs{{%/badge%}} during runtime. * {{%badge%}}**X_ORGID**{{%/badge%}}: Will hold actual {{%badge%}}OrgIDs{{%/badge%}} during runtime. {{%note%}}{{%bold%}}Note:{{%/bold%}} For dynamic variables to work, you will need to create your object path with either {{%badge%}}UserIDs{{%/badge%}} or {{%badge%}}OrgIDs{{%/badge%}}, as the dynamic variables will only hold those values.{{%/note%}} **Syntax to Create Dynamic Variables** You have to employ the syntax shown below to use dynamic variables: "paths": ["bucket_name::/${var:X_ZUID}/*"] "paths": ["bucket_name::/${var:X_ORGID}/*"] {{%note%}}{{%bold%}}Note:{{%/bold%}} * {{%badge%}}paths{{%/badge%}}: Will hold the value of the path of the object * {{%badge%}}bucket_name{{%/badge%}}: Will hold the value of the name of the bucket{{%/note%}} **Syntax to use Dynamic Variables** Let's look at the following example, where we define the path of the object using the {{%badge%}}X_ZUID{{%/badge%}} dynamic variable {{% panel_without_adjustment header="Define path using the X_ZUID dynamic variable" class="language-json line-numbers"%}}{ "version": "v1", "rules": [ { "rule_id": "Example rule to allow user to access the path which has their ZUID in the path", "condition": { "user": { "auth_type": "authenticated", "zuid": "*" } } } ], "effect": "allow", "allowed_actions": [ "GetObject" ], "paths": [ "bucketName::/${var:X_ZUID}" //Use the X_ORGID variable to define the path using OrgIDs ] } {{%/panel_without_adjustment%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} * It is best to use dynamic variables in buckets where the permission template is set as {{%badge%}}Authenticated{{%/badge%}} throughout. <!--* If you have enabled caching for a bucket where at least one object is configured to follow an authenticated permission template, then you need to sign the cached URLs and be authenticated to access the cached objects.-->{{%/note%}} ### Examples Illustrating Custom Permissions Now, let's go over a few examples of custom permission templates that can be created to define permissions for an object or objects in a bucket. **Example 1** {{% panel_without_adjustment header="Custom Permission Example" class="language-json line-numbers"%}}{ "version" : "v1", "rules" : [ { "rule_id" : "Example rule where all authenticated ZUID users can perform all actions on a particular object", "effect" : "allow", "allowed_actions" : ["GetObject", "PutObject", "DeleteObject"], "paths" : ["bucketName::/user/*", "bucketName::/document/readme.md"], "condition" : [ "user" : { "auth_type" : "authenticated", "zuid" : "*" } ] } ] } {{%/panel_without_adjustment%}} From the above snippet, we can understand that: * The permission is configured for an **authenticated permission template** bucket * The permissions will be defined to allow users to perform {{%badge%}}GetObject{{%/badge%}}, {{%badge%}}PutObject{{%/badge%}}, and {{%badge%}}DeleteObject{{%/badge%}} operations. * This permission is only applicable for all of the objects present in the {{%badge%}}user/{{%/badge%}} path and it is applicable only for the {{%badge%}}readme.md{{%/badge%}} object present in {{%badge%}}document/{{%/badge%}} path in the bucket. * The permission is relevant for all *ZUID* present. Putting all this together, we can understand that the above permission is defined for all authenticated users to perform all actions on the **readme.md** object present in the {{%badge%}}document/{{%/badge%}} path, and for all the objects present in the {{%badge%}}user/{{%/badge%}} path. **Example 2** {{% panel_without_adjustment header="Custom Permission Example" class="language-json line-numbers"%}}{ "version" : "v1", "rule" : [ { "rule_id" : "Example rule to allow user to access the path which has their ZUID in the path", "effect" : "allow", "allowed_actions" : ["GetObject"], "paths" : ["bucketName::/${var:X_Zuid}"], } ] } {{%/panel_without_adjustment%}} From the above snippet, we can understand that: * The path name of the object is defined based on the *ZUID*, whose value will be attained dynamically during runtime. * The particular objects in the path will be allowed to perform the {{%badge%}}GetObject{{%/badge%}} action on the object. Putting all this together, we can understand that the above permission is defined in a manner where a {{%badge%}}GetObject{{%/badge%}} action will on the object whose name has to match the *ZUID* value that will be attained dynamically. **Example 3** {{% panel_without_adjustment header="Custom Permission Example" class="language-json line-numbers"%}}{ "version" : "v1", "rule" : [ { "rule_id" : "Example rule to deny specific users from accessing all the objects present in a particular path", "effect" : "deny", "allowed_actions" : ["GetObject", "PutObject", "DeleteObject"], "paths" : ["bucketName::/denyPath/*"], "condition" : { "user" : { "auth_type" : "authenticated", "zuid" : ["123", "456", "789"] } } } ] } {{%/panel_without_adjustment%}} From the above snippet, we can understand that: * The permission applies to what particular authenticated users whose *ZUIDs* are listed as an array. * The particular users cannot perform {{%badge%}}GetObject{{%/badge%}}, {{%badge%}}PutObject{{%/badge%}}, or {{%badge%}}DeleteObject{{%/badge%}} actions on all objects present in the bucket. Putting all this together, we can understand that the above permission is defined for authenticated users with the mentioned *ZUIDs*. The mentioned users are not allowed to perform any actions on all objects present in the particular path. **Example 4** {{% panel_without_adjustment header="Custom Permission Example" class="language-json line-numbers"%}}{ "version" : "v1", "rule" : [ { "rule_id" : "Example rule employing specific action for specific public paths in the bucket", "effect" : "allow", "allowed_actions" : ["GetObject"], "paths" : ["bucketName::/publicPath/*", "bucketName::/otherPath/otherPublicPath/*"], "condition" : { "user" : { "auth_type" : "public", } } }, { "rule_id" : "Example rule where specifc actions can be performed on objects present in specific authenticated path, and these actions can be performed by all authenticated users", "effect" : "allow", "allowed_actions" : ["GetObject", "PutObject", "DeleteObject"], "paths" : ["bucketName::/authenticatedUser/*", "bucketPath::/otherProtectedPath/*"], "condition" : { "user" : { "auth_type" : "authenticated", "zuid" : "*" } } } ] } {{%/panel_without_adjustment%}} From the above snippet, we can understand that: * Two rules are being defined for this bucket. Specific paths in the bucket are listed as **public**, and specific paths in the bucket can only be accessed by **authenticated** users. * {{%badge%}}GetObject{{%/badge%}} is the only action that can be performed on objects that fall under **public path**. However, for the objects that are in the **authenticated path**, and can be accessed by only *authenticated users*, the actions that are allowed to be performed on the authenticated path are {{%badge%}}GetObject{{%/badge%}}, {{%badge%}}PutObject{{%/badge%}}, and {{%badge%}}DeleteObject{{%/badge%}}. Putting all this together, we can comprehend that the above permission is defined by two rules. The first rule defines a permission for a path, where all the objects present in the path can be accessed by anyone as it is *public*. {{%badge%}}GetObject{{%/badge%}} only action that can be performed on the objects in the public path. In the second rule, all *authenticated users* can perform {{%badge%}}GetObject{{%/badge%}}, {{%badge%}}PutObject{{%/badge%}}, and {{%badge%}}DeleteObject{{%/badge%}} actions on all objects listed in the *authenticated path*. **Example 5** {{% panel_without_adjustment header="Custom Permission Example" class="language-json line-numbers"%}}{ "version" : "v1", "rules" : [ { "rule_id" : "RuleNumber1", "effect" : "allow", "allowed_actions" : ["GetObject", "PutObject"], "paths" : ["bucketname::/protectedpath/*"], "condition" : { "user" : { "auth_type" : "authenticated", "zuid" : "*" }, "string_equal" : { "user_agent" : ["Mozilla/5.0"], "referrer" : ["https://www.example.com", "https://www.example.com/get_user/"] }, "ip_address" : { "source_ip" : ["121.67.8.1"] } } }, { "rule_id" : "RuleNumber2", "effect" : "deny", "allowed_actions" : ["GetObject"], "paths" : ["bucketname::/denypath/*"], "condition" : { "user" : { "auth_type" : "authenticated" }, "string_like" : { "user_agent" : ["PostmanRuntime/7.39.0"] } } }, { "rule_id" : "RuleNumber3", "effect" : "allow", "allowed_actions" : ["PutObject"], "paths" : ["bucketname::/uploadhere/*"], "condition" : { "user" : { "auth_type" : "authenticated", "org_details" : { "zaaid" : ["12096000001275047", "12096000001278879"] } }, "not_ip_address" : { "source_ip" : ["122.23.44.19"] } } } ] } {{%/panel_without_adjustment%}} From the above snippet, we can understand that four rules have been defined- {{%badge%}}RuleNumber1{{%/badge%}}, {{%badge%}}RuleNumber2{{%/badge%}}, and {{%badge%}}RuleNumber3{{%/badge%}}. - {{%badge%}}**RuleNumber1**{{%/badge%}} - Object access is only possible if the IP addresses of the system that are attempting access match the values listed in {{%badge%}}source_ip{{%/badge%}} in the {{%badge%}}ip_address{{%/badge%}} JSON. - Object access is only possible by users whose {{%badge%}}zaaid{{%/badge%}} (*User IDs*) matches the ones listed in the {{%badge%}}org_details{{%/badge%}} JSON. - Object access is only possible if the access attempt is made by a Mozilla browser from the web, and only if the access request originates from the mentioned {{%badge%}}referrers{{%/badge%}}. - The rule is defined for all **authenticated users**. - If the access request satisfies all the above mentioned conditions, then only {{%badge%}}GetObject{{%/badge%}} and {{%badge%}}PutObject{{%/badge%}} actions are permitted to occur in the defined path. - {{%badge%}}**RuleNumber2**{{%/badge%}} - The rule is defined for an authenticated user that attempts an access request with {{%badge%}}user_agent{{%/badge%}} is **Postman** (request was made using {{%link href="https://www.postman.com/" %}}Postman API platform{{%/link%}}). - In the defined path, such a user will be denied access to perform {{%badge%}}GetObject{{%/badge%}} operation. - {{%badge%}}**RuleNumber3**{{%/badge%}} - The rule is defined in a manner where it is applicable, if the request was made from any IP address except the one mentioned in {{%badge%}}source_ip{{%/badge%}} in the {{%badge%}}not_ip_address{{%/badge%}} JSON. - The rule is applicable for only **authenticated users** and specifically to the users whose {{%badge%}}zaaid{{%/badge%}} are defined in {{%badge%}}org_details{{%/badge%}} JSON. - If the user attempts an access request satisfying all the above mentioned conditions, then they are allowed to perform a {{%badge%}}PutObject{{%/badge%}} in the defined path. ### Configure Custom Permissions for Objects Stored in a Bucket To set custom permissions: 1. Select the required bucket from the list. <br /> 2. You will be directed to the *Bucket Permissions* tab. Click **Edit Permission**. <br /> 3. Edit the permissions according to your requirements, then click **Update** to confirm your changes. <br /> The permissions will be applied according to your configurations. {{%note%}}{{%bold%}}Note:{{%/bold%}} Refer to this {{%link href="/en/cloud-scale/help/stratus/stratus-permissions/#custom-permissions" %}}help documentation{{%/link%}} to learn more about custom permissions.{{%/note%}} ## Buckets -------------------------------------------------------------------------------- title: "Introduction" description: "Stratus is a robust cloud storage solution powered by Catalyst. You can store data of any format type in the form of buckets and objects." last_updated: "2026-03-18T07:41:08.536Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/stratus/buckets/name-bucket/" service: "Cloud Scale" related: - Create a Bucket (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/overview/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Buckets A **Bucket** is essentially the root container that you create to store your data. The data that is stored in buckets is called {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}**Objects**{{%/link%}}. You can create multiple {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}*paths*{{%/link%}} in the bucket and store an unlimited amount of objects. The navigation on these paths is quite similar to a conventional directory structure. {{%note%}}{{%bold%}}Note:{{%/bold%}} * You can create up to {{%bold%}}10 buckets{{%/bold%}} per Catalyst project. * While there is no limit to the size of the bucket, the maximum size of a single object that can be uploaded at one time is {{%bold%}}250GB{{%/bold%}}. You can store {{%bold%}}multiple objects of 250GB in a single bucket{{%/bold%}}.{{%/note%}} ### Ideal Practices to Name a Bucket The bucket's name will act as the {{%bold%}}domain name{{%/bold%}} in the {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/#bucket-url" %}}Bucket URL{{%/link%}}. Therefore, it is mandatory that you create a Bucket with a name that is globally unique with respect to your {{%link href="/en/api/introduction/multi-dc-support/#Multi-DCSupport" %}}DC{{%/link%}} and not only unique to your Catalyst projects or your account. {{%note%}}{{%bold%}}Note:{{%/bold%}} Ensure you read this document in its entirety. It is vital for you to comprehend this content thoroughly to successfully name and create your bucket.{{%/note%}} Here are a few naming practices to be mindful of while naming your bucket: * The bucket name should contain a minimum of **3** characters and a maximum of **50** characters. It can only consist of alphanumeric characters. No special characters apart from hyphen "{{%badge%}}**-**{{%/badge%}}" is allowed. * While the special character hyphen "{{%badge%}}**-**{{%/badge%}}" is permitted to be used to name your buckets, you cannot start or end your bucket name with a hyphen. * You cannot **end your bucket name** with the suffix **-development**. * You are **not permitted** to name your bucket **starting with the reserved keyword: {{%badge%}}x-zc-{{%/badge%}}**. However, this sequence of characters can be used in between to name your bucket. * Avoid using uppercase characters to name your bucket. * It is strongly urged that you do not use personally identifiable information, such as part of your name or ID number, to name your bucket. * It is strongly urged that you do not name your bucket with names or terms that are identifiable to popular brands with which you have no association or authorization to use. * Bucket name cannot contain any notations of IP addresses or in the dot-decimal, snake case formats. **Examples of Valid Bucket Names:** * xyz2-bucket * sto123rage-supreme * enterprise-trek -------------------------------------------------------------------------------- title: "Create a Bucket" description: "Stratus is a robust cloud storage solution powered by Catalyst. You can store data of any format type in the form of buckets and objects." last_updated: "2026-03-18T07:41:08.536Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/stratus/buckets/create-bucket/" service: "Cloud Scale" related: - Configure Custom Permissions (/en/cloud-scale/help/stratus/stratus-permissions/#custom-permissions) - Initiate Migration from Third-party Cloud Platform to Stratus (/en/cloud-scale/help/stratus/third-party-migration/introduction/) - Configure Bucket Settings (/en/cloud-scale/help/stratus/stratus-config/general-settings/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/overview/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create a Bucket Before you perform any upload or migration action, you need to create a bucket to store the objects. To create a bucket: 1. Navigate to **Stratus** under *STORAGE* in the Cloud Scale service's console, then click **Create Bucket**. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} If you are currently using third-party platform storage services like {{%bold%}}Amazon S3{{%/bold%}}, or {{%bold%}}GCP Cloud Storage{{%/bold%}}, you can migrate your data from there to Stratus using the {{%bold%}}Third-Party Migration option{{%/bold%}}. You can find detailed steps to successfully migrate your stored data from third-party platforms to Stratus in this {{%link href="/en/cloud-scale/help/stratus/third-party-migration/introduction/" %}}help documentation{{%/link%}}.{{%/note%}} 2. Provide a name for your bucket. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} The name of your bucket needs to be {{%bold%}}globally unique{{%/bold%}}. The methodology that needs to be followed while you name your bucket can be found in this {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}help documentation{{%/link%}}.{{%/note%}} 3. Select your required permission template. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} * Regardless of the permission template that you choose now, it can be edited to suit your requirement after bucket creation. * You can find out more about the default permission template in this {{%link href="/en/cloud-scale/help/stratus/stratus-permissions/#default-permission-template" %}}help section{{%/link%}}. * This selection is only to create a bucket with a {{%italics%}}default permission template{{%/italics%}}. You can find detailed instructions on providing custom permissions for individual objects or groups of objects in this {{%link href="/en/cloud-scale/help/stratus/stratus-permissions/#custom-permissions" %}}help section{{%/link%}}.{{%/note%}} 4. Enable the required settings according to your requirements. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} Information on each of the settings, and information on when and if they should be enabled, can be found in this {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/" %}}help section{{%/link%}}.{{%/note%}} 5. Once you've confirmed your choices, click **Create**. <br /> The **Bucket URL** will also be automatically generated by Catalyst and made available when you create the bucket. You can access the bucket securely using this URL. The *Bucket URL* of each bucket will always be available for copying by clicking the **Bucket URL** button. <br /> ### Bucket URL This is a unique URL that is generated by Catalyst when you create a Bucket. The URL will be in the following format: In {{%link href="/en/deployment-and-billing/environments/development-environment/" %}}development environment{{%/link%}}: **https://<bucket_name>-development.zohostratus.com/** In {{%link href="/en/deployment-and-billing/environments/production-environment/" %}}production environment{{%/link%}}: **https://<bucket_name>.zohostratus.com/** This URL will be globally unique, and access to the bucket via this URL will be permitted based on the permission template you configure for the bucket. *Bucket URLs* will also be generated based on their **DC**, and the following illustrates the Bucket URL structure for each of the DCs that are supported by Catalyst. <table class="content-table"> <thead> <tr> <th class="w10p">Supported DCs</th> <th class="w45p">Bucket URL Structure in Development Environment</th> <th class="w45p">Bucket URL Structure in Production Environment</th> </tr> </thead> <tbody> <tr> <td>US</td> <td>https://&lt;bucket_name&gt;-development.zohostratus.com</td> <td>https://&lt;bucket_name&gt;.zohostratus.com</td> </tr> <tr> <td>EU</td> <td>https://&lt;bucket_name&gt;-development.zohostratus.eu</td> <td>https://&lt;bucket_name&gt;.zohostratus.eu</td> </tr> <tr> <td>IN</td> <td>https://&lt;bucket_name&gt;-development.zohostratus.in</td> <td>https://&lt;bucket_name&gt;.zohostratus.in</td> </tr> <tr> <td>AU</td> <td>https://&lt;bucket_name&gt;-development.zohostratus.com.au</td> <td>https://&lt;bucket_name&gt;.zohostratus.com.au</td> </tr> <tr> <td>CA</td> <td>https://&lt;bucket_name&gt;-development.zohostratus.ca</td> <td>https://&lt;bucket_name&gt;.zohostratus.ca</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Delete a Bucket" description: "Stratus is a robust cloud storage solution powered by Catalyst. You can store data of any format type in the form of buckets and objects." last_updated: "2026-03-18T07:41:08.536Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/stratus/buckets/delete-bucket/" service: "Cloud Scale" related: - Create a Bucket (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/overview/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Delete a Bucket You can only delete one bucket at a time. If you delete a bucket, all the objects present in the bucket will be deleted permanently. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you delete a bucket, the name used for the bucket will become publicly available for use for all Catalyst users. You cannot immediately name another bucket with the same name of a bucket that is being deleted. The name will only be available after an indeterminate yet short time interval.{{%/note%}} To delete a bucket: 1. Select the required bucket from the bucket list, click the **ellipsis icon** corresponding to the selected bucket, then click **Delete**. <br /> 2. Enter the bucket name in the input field and click **Confirm**. <br /> The bucket will be deleted. ## Objects -------------------------------------------------------------------------------- title: "Objects & Its Associated Elements" description: "Stratus is a robust cloud storage solution powered by Catalyst. You can store data of any format type in the form of buckets and objects." last_updated: "2026-03-18T07:41:08.537Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/stratus/objects/introduction/" service: "Cloud Scale" related: - Create a Bucket (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Upload an Object (/en/cloud-scale/help/stratus/objects/upload-object/) - Object Versioning (/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/overview/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Objects Objects are the data you store in buckets. Objects can be of any format type, and each of them can be accessed using an **Object URL** generated by Stratus. <br /> <!--Once {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#caching" %}}Caching{{%/link%}} is enabled, a **Caching URL** will be generated when objects are uploaded to the bucket. Objects that are accessed using this URL will be cached.--> ### Object URL This is a unique URL generated by Stratus to uniquely identify and securely access the object you upload to a bucket. <br /> If you have enabled {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} for your bucket, then you can access each version of the object by using query params in the **Object URL** in a key value format. {{%badge%}}versionId{{%/badge%}} being the key and the value being the string value generated by Stratus when you upload version of the object. The Object URL will be in the following formats: * In {{%link href="/en/deployment-and-billing/environments/development-environment/" %}}development environment{{%/link%}}:<br /> **https://&lt;bucket-name&gt;-development.zohostratus.com/&lt;object-name&gt;** For example: **https<span></span>://mappedsample-development.zohostratus.com/Archive.zip** * In {{%link href="/en/deployment-and-billing/environments/production-environment/" %}}production environment{{%/link%}}:<br /> **https://&lt;bucket-name&gt;.zohostratus.com/&lt;object-name&gt;** For example: **https<span></span>://mappedsample.zohostratus.com/Archive.zip** * With **Versioning** enabled:<br /> **https://&lt;bucket-name&gt;-development.zohostratus.com/&lt;object-name&gt;?versionid={versionid}** For example: **https<span></span>://mappedsample-development.zohostratus.com/Archive.zip?versionid=1233487326** {{%note%}}{{%bold%}}Note:{{%/bold%}} Object URLs' structures are subject to change based on the {{%bold%}}DCs{{%/bold%}} they are created in a similar manner to {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/#bucket-url" %}}Bucket URLs{{%/link%}}.{{%/note%}} ### Path Path is the location of an object in the bucket. When you create a bucket and upload objects in it, their path is created in the standard directory format. <br /> For example, imagine you create a bucket named "**MyPictures**". You can either create sub-paths in the bucket and store the objects in them, or directly store the objects. In this example, there is a sub-path with the name "**puppies**", and this path has an object named "**border_collie.jpeg**". The object is stored in the following path:<br /> **MyPictures/puppies/border_collie.jpeg** {{%note%}}{{%bold%}}Note:{{%/bold%}} * A path can {{%bold%}}never be empty{{%/bold%}}. It will either contain further paths to hold objects, or objects itself. * The following characters including space are not supported when you create a path or an object: double quote, both angular brackets, hashtag, backward slash and pipe symbol. * The path name and the object name should not start with a space character or a special character.{{%/note%}} ### Metadata <br /> * You can provide custom information about the object in key value pair format using the Metadata option. * You can use alphanumeric, underscores, or whitespace characters, as well as hyphens, to write your metadata. No other special character is allowed other than the once mentioned. * You can fetch the metadata of an object using the {{%badge%}}**HEAD**{{%/badge%}} request method. In the response, the metadata will be listed in the key '{{%badge%}}x-user-meta{{%/badge%}}'. * The maximum size limit of characters allowed for the overall metadata is **2047** characters. The character count used to determine the size limit also includes the colon ":" special character used to define the key value pair. -------------------------------------------------------------------------------- title: "Upload an Object to a Bucket" description: "Stratus is a robust cloud storage solution powered by Catalyst. You can store data of any format type in the form of buckets and objects." last_updated: "2026-03-18T07:41:08.537Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/stratus/objects/upload-object/" service: "Cloud Scale" related: - Create a Bucket (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Object Versioning (/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/upload-object/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/upload-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/upload-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/upload-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/upload-object/) - Flutter SDK (/en/sdk/flutter/v1/cloud-scale/stratus/upload-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/upload-object/#UploadObject) -------------------------------------------------------------------------------- # Upload an Object to a Bucket An object can be data in any format. You can upload it directly from your local system using a directory structure customizable per your requirement. {{%note%}}{{%bold%}}Note:{{%/bold%}} When you upload an object, make sure its name is unique to its current path.{{%/note%}} {{%tabs%}} {{%tab "Using the Console" %}} To upload an object or a group of objects: 1. Click the **Upload** button and choose **Upload Folder** if you wish to upload an entire folder with all of its objects, or **Upload File** if you wish to upload a select group of objects or just one object. <br /> 2. If you choose to upload: {{%tabs%}} {{%tab"Folder" %}} Select the required folder from your local system and click **Upload**. <br /> The folder will be uploaded with all its contents. <br /> Click the uploaded directory to confirm it contains all the objects it contained in the local system. <br /> {{%/tab%}} {{%tab "File" %}} Select the file, or files from your local system to upload, and click **Open**. <br /> The files will be uploaded. <br /> {{%/tab%}} {{%/tabs%}} ### Upload Object Using Path You can also upload objects to the bucket using the **Create Path** option. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} The path option is best used when you wish to store one or more objects in a particular path in the bucket. You can find out more about the path from this {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}help documentation{{%/link%}}.{{%/note%}} 1. Click the **Create Path** button. <br /> 2. Provide your required path using the your required path using the forward slash '{{%badge%}}**/**{{%/badge%}}' special character as the directory separator. <br /> 3. Click the **upload-icon** and select the required object in your local system and click **Open** to upload. <br /> The entered path will be created and can be navigated in a manner you would a conventional directory. <br /> {{%/tab%}} {{%tab "Using SDK" %}} The following SDK method enables you to upload an object to the bucket: {{%tabs%}} {{%tab "Server SDK" %}} {{%tabs%}} {{%tab "Java SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/java/v1/cloud-scale/stratus/upload-object/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} **Ensure the following packages are imported:** {{%code class="language-java"%}} import com.zc.component.stratus.beans.ZCPutObjectOptions; import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.io.*; {{%/code%}} {{%code class="language-java"%}} InputStream file =new FileInputStream("filePath"); Boolean res = bucket.putObject("objectName", file); System.out.println(res); {{%/code%}} {{%/tab%}} {{%tab "Node.js SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} {{%code class="language-javascript"%}} // create a read stream for upload the object const file = fs.createReadStream("file_path"); // call the upload method const res = await bucket.putObject("object_name", file); console.log(res); {{%/code%}} {{%/tab%}} {{%tab "Python SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/python/v1/cloud-scale/stratus/upload-object/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} {{%code class="language-python"%}} file = open('file_path','rb') res = bucket.put_object('object_name',file) print(res) {{%/code%}} {{%/tab%}} {{%/tabs%}} {{%/tab%}} {{%tab "Client & Mobile SDK" %}} {{%tabs%}} {{%tab "Web SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/web/v4/cloud-scale/stratus/upload-object/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} {{%code class="language-javascript"%}} const putObject = stratus.putObject("{object_name}","{File}", "{options}", "{processCallback}"); const putObjectStart = putObject.start(); // to start the request const putObjectAbort = putObject.abort(); // to abort the request {{%/code%}} {{%/tab%}} {{%tab "iOS SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/upload-object/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} {{%code class="language-bash"%}} bucketInstance.upload( filePath : "{file_path}", fileName : "{file_name}", shouldCompress : true ) { error in if let error = error { print("Error : \( error )") return } print("Uploaded Successfully") } {{%/code%}} {{%/tab%}} {{%tab "Android SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/android/v2/cloud-scale/stratus/upload-object/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} {{%code class="language-bash line-numbers"%}} bucketIntance.uploadObject("/Desktop", "Helplinecard.jpeg", true, { println(" >> Object Upload Success -$it") }, { println(" >> Object Upload Failed -$it") }, progress = { bytesWritten, contentLength, percentage -> println("Percentage: $percentage") } ) {{%/code%}} {{%/tab%}} {{%tab "Flutter SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/flutter/v1/cloud-scale/stratus/upload-object/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} {{%code class="language-bash line-numbers"%}} try{ XFile? imageFile = await pickImage(ImageSource.gallery); var bucket = stratus.bucket("testing"); var response = await bucket.uploadObject(imageFile!.path); print("Upload Status: ${response.statusCode}"); } on ZCatalystException catch (ex) { print(ex.toString()); } {{%/code%}} {{%/tab%}} {{%/tab%}} {{%/tabs%}} {{%/tabs%}} {{%/tab%}} {{%/tabs%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Stratus constantly scans for malware in the background. When the scans encounter malware, the user, admin, super admin, and project owner will be notified of the malware, and the uploaded object is immediately and permanently deleted from the bucket.{{%/note%}} ### Handle Stored Objects -------------------------------------------------------------------------------- title: "Manage a Stored Object" description: "Stratus is a robust cloud storage solution powered by Catalyst. You can store data of any format type in the form of buckets and objects." last_updated: "2026-03-18T07:41:08.538Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/stratus/objects/manage-object/manage-stored-object/" service: "Cloud Scale" related: - Create a Bucket (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Upload an Object (/en/cloud-scale/help/stratus/objects/upload-object/) - Object Versioning (/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/overview/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Manage a Stored Object Click any of the stored objects in your bucket. <br /> You will be able to perform the following operations on the object: * View general details, such as the *name*, *size*, *modified time*, and *format* of the object. * You can access the object directly using the secure {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}}. This URL can be copied and used in your code to satisfy your requirement. <!--* You can enable {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#caching" %}}Caching{{%/link%}} for the bucket; a **Caching URL** will be generated by Stratus. This URL can also be copied. When you access objects using this URL, they will be cached. * You can click the **Purge Cache** button to purge the stored cache of the object.--> * If you have enabled {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}}, you can view all the versions of the object present in the bucket. * {{%link href="/en/cloud-scale/help/stratus/objects/manage-object/manage-stored-object/#provide-custom-meta-data-for-an-object" %}}Provide Custom Meta Data{{%/link%}} for the object. * {{%link href="/en/cloud-scale/help/stratus/objects/manage-object/download-object/" %}}Download the object{{%/link%}} * {{%link href="/en/cloud-scale/help/stratus/objects/manage-object/delete-object/" %}}Delete the Object{{%/link%}} ### Provide Custom Meta Data for an Object To provide meta data for your object: {{%note%}}{{%bold%}}Note:{{%/bold%}} The maximum size limit of characters allowed for the overall metadata is {{%bold%}}2047{{%/bold%}} characters. The character count used to determine the size limit also includes the colon “{{%badge%}}:{{%/badge%}}” special character used to define the key value pair.{{%/note%}} {{%tabs%}} {{%tab "Using the Console" %}} 1. Click the required object. <br /> 2. Click the **Add Meta** button. <br /> 3. The meta data you provide will be rendered and applied to the object in a **JSON key value format**. Click **Save** once you have completed adding the required data. <br /> Your custom meta data will be added to the object. <br /> {{%/tab%}} {{%tab "Using Catalyst SDK" %}} {{%tabs%}} {{%tab "Java SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/java/v1/cloud-scale/stratus/put-object-meta/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} **Ensure the following packages are imported:** {{%code class="language-java"%}} import org.json.simple.JSONObject; {{%/code%}} {{%code class="language-java"%}} HashMap&lt;String, String&gt; objectMeta = new HashMap&lt;&gt;(); objectMeta.put("key1", "value1"); objectMeta.put("key2", "value2"); JSONObject res = object.putMeta(objectMeta); System.out.println(res); {{%/code%}} {{%/tab%}} {{%tab "Node.js SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/put-object-meta/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} {{%code class="language-javascript"%}} const objectMeta = { "key1": "value1" , "key2": "value2" }; const objMeta = await objectIns.putMeta(objectMeta); console.log(objMeta); {{%/code%}} {{%/tab%}} {{%tab "Python SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/python/v1/cloud-scale/stratus/put-object-meta/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} {{%code class="language-python"%}} res = object_ins.put_meta({'author': 'Amelia Burrows'}) print(res) {{%/code%}} {{%/tab%}} {{%/tabs%}} {{%/tab%}} {{%/tabs%}} ### Edit Custom Meta Data To edit the custom meta data: 1. Click **Modify Meta**. <br /> 2. Make the required changes and click **Save**. <br /> The changes will be applied. <br /> -------------------------------------------------------------------------------- title: "Download an Object From Bucket" description: "Stratus is a robust cloud storage solution powered by Catalyst. You can store data of any format type in the form of buckets and objects." last_updated: "2026-03-18T07:41:08.538Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/stratus/objects/manage-object/download-object/" service: "Cloud Scale" related: - Create a Bucket (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Upload an Object (/en/cloud-scale/help/stratus/objects/upload-object/) - Object Caching (/en/cloud-scale/help/stratus/stratus-config/general-settings/#caching) - Object Versioning (/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/download-object/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/download-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/download-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/download-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/download-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/download-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/download-object/#DownloadObject) -------------------------------------------------------------------------------- # Download an Object From a Bucket To download an object from the bucket: {{%tabs%}} {{%tab "Using the Console" %}} 1. Click or select the required object. <br /> 2. Click **Download**. <br /> 3. Click **Save** in your system prompt. <br /> The object will be downloaded to your local system. You can also download the object using the **Download** button present in the object details view. <br /> {{%/tab%}} {{%tab "Using Catalyst SDK" %}} {{%tabs%}} {{%tab "Server SDKs" %}} {{%tabs%}} {{%tab "Java SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/java/v1/cloud-scale/stratus/download-object/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} **Ensure the following packages are imported** {{%code class="language-java"%}} import com.zc.component.stratus.beans.ZCGetObjectOptions; import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.io.*; {{%/code%}} {{%code class="language-java"%}} InputStream dataStream = bucket.getObject("objectName"); // download the object to your local machine Path path = Path.of("file_path"); // specify a path to store the downloaded object Files.copy(dataStream, path, StandardCopyOption.REPLACE_EXISTING); {{%/code%}} {{%/tab%}} {{%tab "Node.js SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} {{%code class="language-javascript"%}} const res = await bucket.getObject("objectName"); // download the object to local machine const files = fs.createWriteStream('filePath'); res.on('data', (data) => { files.write(data) }); {{%/code%}} {{%/tab%}} {{%tab "Python SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/python/v1/cloud-scale/stratus/download-object/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} {{%code class="language-python"%}} res = bucket.get_object('object_name') # download the object to local machine file = open('file_path','wb') file.write(res) {{%/code%}} {{%/tab%}} {{%/tabs%}} {{%/tab%}} {{%tab "Mobile SDKs" %}} {{%tabs%}} {{%tab "iOS SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/download-object/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} {{%code class="language-bash"%}} objectInstance.download(fromCache : true) { result in switch result { case.success(let url): do { let data = Data(contentsOf : url) DispatchQueue.main.sync { self.imageView.image = UIImage(date : data) } } catch { print("Error : \( error )") } case.error(let error): print("Error : \( error )") } } {{%/code%}} {{%/tab%}} {{%tab "Android SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/android/v2/cloud-scale/stratus/download-object/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} {{%code class="language-bash"%}} bucketInstance.getObject("SunSet.jpeg", "2823000000044005", //Replace this with your Folder ID and File ID { object->object.download({println("File download success ${it.available()}")}, {println("File download failed $it")}) {{%/code%}} {{%/tab%}} {{%tab "Flutter SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/download-object/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} {{%code class="language-bash line-numbers"%}} try { ZCatalystBucket bucket = stratus.bucket("testing"); var(response, object) = await bucket.getObject("SunSet.jpeg"); final downloadsDir = await getExternalStorageDirectory(); final filePath = downloadsDir !.absolute.path; var fileResponse = await object.download( pathToDownload : filePath, onProgress : (bytesWritten, contentLength, percentage) { print("Downloaded Percentage: $percentage"); }, ); print("Download Status: ${fileResponse.statusCode}"); OpenFile.open(filePath + '/SunSet.jpeg'); } on ZCatalystException catch (ex) { print(ex.toString()); } {{%/code%}} {{%/tab%}} {{%/tabs%}} {{%/tab%}} {{%/tabs%}} {{%/tab%}} {{%/tabs%}} -------------------------------------------------------------------------------- title: "Delete an Object From a Bucket" description: "Stratus is a robust cloud storage solution powered by Catalyst. You can store data of any format type in the form of buckets and objects." last_updated: "2026-03-18T07:41:08.538Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/stratus/objects/manage-object/delete-object/" service: "Cloud Scale" related: - Create a Bucket (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Upload an Object (/en/cloud-scale/help/stratus/objects/upload-object/) - Object Caching (/en/cloud-scale/help/stratus/stratus-config/general-settings/#caching) - Object Versioning (/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/delete-objects/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/delete-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/delete-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/delete-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/delete-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/delete-objects/#DeleteObject) -------------------------------------------------------------------------------- # Delete an Object From a Bucket To delete an object from the bucket: {{%tabs%}} {{%tab "Using the Console" %}} 1. Select the required object. <br /> 2. Click **Delete**. <br /> 3. Click **Delete** in the prompt as well. <br /> The delete action will be scheduled, and it will take a short while before the operation is rendered in the console. Delete operations can be performed on multiple objects and on multiple paths in the same manner. You can also use the **Delete** button present in the object details view to delete the object. <br /> {{%/tab%}} {{%tab "Using Catalyst SDK" %}} {{%tabs%}} {{%tab "Server SDKs" %}} {{%tabs%}} {{%tab "Java SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/java/v1/cloud-scale/stratus/delete-objects/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} **Ensure the following packages are imported:** {{%code class="language-java"%}} import org.json.simple.JSONObject; {{%/code%}} {{%code class="language-java"%}} int ttl = 200; JSONObject deleteRes = bucket.deleteObject("objectName", "versionId", ttl); System.out.println(deleteRes); {{%/code%}} {{%/tab%}} {{%tab "Node.js SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} {{%code class="language-javascript"%}} const res = await bucket.deleteObject("objectName"); console.log(res); {{%/code%}} {{%/tab%}} {{%tab "Python SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/python/v1/cloud-scale/stratus/delete-objects/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} {{%code class="language-python"%}}delete_res = bucket.delete_object('object_name') print(delete_res) {{%/code%}} {{%/tab%}} {{%/tabs%}} {{%/tab%}} {{%tab "Client & Mobile SDKs" %}} {{%tabs%}} {{%tab "Web SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/web/v4/cloud-scale/stratus/delete-object/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} {{%code class="language-javascript"%}} // Delete an object const deleteObject = await bucket.deleteObject("objectName"); {{%/code%}} {{%/tab%}} {{%tab "iOS SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/delete-object/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} {{%code class="language-bash"%}}objectInstance.delete() { error in if let error = error { print("Error : \\( error )") return } print("Deleted Successfully") }{{%/code%}} {{%/tab%}} {{%tab "Android SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/android/v2/cloud-scale/stratus/delete-object/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} {{%code class="language-bash"%}} bucketInstance.getObject("SunSet.jpeg", "2823000000044005", //Replace this with your Object Name and Object ID { object -> object.delete( { println("Object Deletion Success.") }, { println("Failed to delete the object. $it") } ) {{%/code%}} {{%/tab%}} {{%tab "Flutter SDK" %}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Visit this {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/delete-object/" %}}help document{{%/link%}} for more information on this SDK method.{{%/note%}} {{%code class="language-bash"%}} try { ZCatalystBucket bucket = stratus.bucket("testing"); var (response, objects, _) = await bucket.getObjects(maxKeys: 5, prefix: 'trip'); var response = await bucket.deleteObjects(objects); print("Delete Objects: ${response.statusCode}"); } on ZCatalystException catch (ex) { print(ex.toString()); } {{%/code%}} {{%/tab%}} {{%/tabs%}} {{%/tab%}} {{%/tabs%}} {{%/tab%}} {{%/tabs%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} When you perform a delete operation on an object, and if it is the {{%bold%}}only object{{%/bold%}} present in the particular path, then the {{%bold%}}entire path will be deleted{{%/bold%}}. An empty path cannot exist in a bucket.{{%/note%}} ## Stratus Configurations -------------------------------------------------------------------------------- title: "General Settings" description: "Stratus is a robust cloud storage solution powered by Catalyst. You can store data of any format type in the form of buckets and objects." last_updated: "2026-03-18T07:41:08.539Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/stratus/stratus-config/general-settings/" service: "Cloud Scale" related: - Create a Bucket (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Upload an Object (/en/cloud-scale/help/stratus/objects/upload-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/overview/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # General Settings While you are creating and after you {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/" %}}create a bucket{{%/link%}}, you can configure the following bucket settings: <br /> ### Versioning <br /> - This setting allows you to store multiple versions of any object in your bucket. - When you upload multiple version of the object, Catalyst will generate a unique {{%badge%}}versionId{{%/badge%}} for each of them upon upload. - Every latest version that you upload will become the default version of the object. The previous uploaded versions will need to be accessed using their unique {{%badge%}}versionId{{%/badge%}}. - Consider you disable Versioning after uploading versions of the object when Versioning was enabled. All the object versions that had been uploaded so far will exist. However, If you attempt to upload a version of the same object under this condition (Versioning is **disabled**), the following behavior is expected: - The original object will be permanently deleted and replaced with the object you are uploading (**latest object**). - You will only be able to access the latest object and the saved versions of the object (using their respective {{%badge%}}versionId{{%/badge%}}). - The diagrams below illustrate *Versioning* behavior: - When Versioning is **enabled**. <br /> Every new version of the object will be stored in the bucket and will be referred using its unique {{%badge%}}versionId{{%/badge%}} generated by Stratus. - When Versioning is **disabled**. <br /> The original object and its versions will be retained in the bucket. - When you **upload an object version** after **Versioning has been disabled**. <br /> The original object will be permanently deleted and replaced with the object you are uploading (**latest object**), and you will only be able to access the latest object using the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}}, and the saved versions (referred using their respective {{%badge%}}versionId{{%/badge%}}) of the object. <br /> <!--### Caching <br /> - This setting allows Catalyst to cache some of the objects that you access using the **Caching URL** to make object retrieval easier. - Once you enable caching, it will take up to **two minutes** for it to enable, and a **Caching URL** will be generated by Stratus. - If you have enabled Caching for an {{%link href="/en/cloud-scale/help/stratus/stratus-permissions/#default-permission-template" %}}*Authenticated bucket*{{%/link%}}, to access the cached objects using the **Caching URL**, you need to first **sign the Caching URL** using the **Sign Cached URL SDK**: {{%link href="/en/sdk/java/v1/cloud-scale/stratus/generate-cached-url/" %}}Java{{%/link%}}, {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/generate-cached-url/" %}}Node.js{{%/link%}}, and {{%link href="/en/sdk/python/v1/cloud-scale/stratus/generate-cached-url/" %}}Python{{%/link%}}. The signing of the Cached URL needs to be done **every one hour**, and it can only be done by your **Administrator** or **Super Administrator**. - If you decide to **purge** (delete your cache), you have the option to either purge the cache of all the objects, or just of specific objects. - The default permission template you used to create your bucket will also be applied to the cache of the objects in your bucket. For example, if the permission template used to create the bucket is *Public*, then the cache of the objects will also be in the *Public* permission template.--> ### Data Encryption - You can enable this bucket settings to encrypt the data present in the bucket. - Stratus follows both encryption at rest and encryption at flight protocols. - Stratus applies the Advanced Encryption Standard (AES-256) encryption technique to encrypt the data in the bucket. ### PII/ePHI - You need to enable this setting if the bucket is going to contain sensitive or personally identifiable data. Doing so, will ensure you are storing these types of sensitive data in compliance with {{%link href="/en/compliance/hipaa/" %}}HIPAA{{%/link%}} standards. - When this setting is enabled, the object's operational logs will be present in the {{%link href="/en/devops/help/logs/application-logs/" %}}Application Logs{{%/link%}} present in the {{%link href="/en/getting-started/set-up-a-catalyst-project/audit-logs/" %}}Audit Logs{{%/link%}} section. ### Enable a Bucket's Setting {{%note%}}{{%bold%}}Note:{{%/bold%}} By default, all these bucket settings will be disabled. Even when you migrate your bucket from a third-party platform to Stratus, these configurations will have to be re-configured.{{%/note%}} To enable one of the settings: 1. Click on the required bucket. <br /> 2. Click the **Configurations** tab. <br /> 3. Expand the **General Settings** section. <br /> 4. Click the ellipsis icon in the required setting's tile, then click **Enable**. <br /> 5. Click **Enable** in the prompt to confirm. <br /> The required setting will be enabled. <br /> ### Disable a Bucket's Setting To disable a required setting: 1. Click the ellipsis icon in the setting's tile, then click **Disable**. <br /> 2. Click **Disable** in the prompt to confirm. <br /> The required setting will be disabled. <br /> -------------------------------------------------------------------------------- title: "Event Listener Triggers" description: "Stratus is a robust cloud storage solution powered by Catalyst. You can store data of any format type in the form of buckets and objects." last_updated: "2026-03-18T07:41:08.539Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/stratus/stratus-config/event-triggers/" service: "Cloud Scale" related: - Create a Bucket (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Upload an Object (/en/cloud-scale/help/stratus/objects/upload-object/) - Event Listeners Help Documentation (/en/cloud-scale/help/event-listeners/introduction/) - Circuits Help Documentation (/en/serverless/help/circuits/introduction/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/overview/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Event Listener Triggers {{%link href="/en/cloud-scale/help/event-listeners/introduction/" %}}Event Listener{{%/link%}} is a powerful Catalyst *Cloud Scale* component that is essentially an event bus service that listens for the occurrences of pre-determined events and automatically executes associated {{%link href="/en/serverless/help/functions/event-functions/" %}}Event functions{{%/link%}}, or the targeted {{%link href="/en/serverless/help/circuits/introduction/" %}}Circuits{{%/link%}}. In Stratus, you can configure the required rule to trigger an *Event Listener* at the event of an: * Object Upload * Object Download * Object Update * Object Delete {{%note%}}{{%bold%}}Note:{{%/bold%}} Ensure that you go through the following help documentation to use this configuration effectively: * {{%bold%}}Event Listeners:{{%/bold%}} {{%link href="/en/cloud-scale/help/event-listeners/introduction/" %}}Help{{%/link%}} * {{%bold%}}Component Event Listeners:{{%/bold%}} {{%link href="/en/cloud-scale/help/event-listeners/component-event-listeners/" %}}Help{{%/link%}} * {{%bold%}}Create a Rule in the Component Event Listener:{{%/bold%}} {{%link href="/en/cloud-scale/help/event-listeners/component-event-listeners/#create-a-rule-in-the-component-event-listener" %}}Help{{%/link%}} * {{%bold%}}Circuits:{{%/bold%}} {{%link href="/en/serverless/help/circuits/introduction/" %}}Help{{%/link%}} * {{%bold%}}Event Functions:{{%/bold%}} {{%link href="/en/serverless/help/functions/event-functions/" %}}Help{{%/link%}}{{%/note%}} ### Create Event Listener Triggers in Buckets To create a rule for the event listener in Stratus: 1. Click on the required bucket. <br /> 2. Click the **Configurations** tab. <br /> 3. Expand the **Event Listener Trigger** section and click **Add Rule**. <br /> 4. Provide a name and description for the rule. <br /> 5. Select the action or actions that is supposed to trigger the event listener from the **Action** drop-down. <br /> 6. Choose your required **Target Point**. Based on this selection, either an *Event Function* or a *Circuit* will be triggered when the selected actions occur. {{%note%}}{{%bold%}}Note:{{%/bold%}} * Before you choose a target point, make sure the required target event function or target circuit is configured and deployed to the catalyst console. Only if you deploy the required {{%italics%}}Target Point{{%/italics%}} to the console will it be available in the {{%bold%}}Target Function{{%/bold%}} or {{%bold%}}Target Circuit{{%/bold%}} drop-down. * The {{%link href="/en/serverless/help/circuits/introduction/" %}}Circuits{{%/link%}} component is currently {{%bold%}}not available{{%/bold%}} to Catalyst users accessing from the {{%bold%}}EU{{%/bold%}}, {{%bold%}}AU{{%/bold%}}, {{%bold%}}IN{{%/bold%}}, or {{%bold%}}CA{{%/bold%}} data centers. Hence, users from these DCs will not be able to trigger Circuits using the Stratus component.{{%/note%}} {{%tabs%}} {{%tab "Event Function" %}} <br /> 7. Choose the required event function from the **Target Function** drop-down. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} * If you still have not coded and deployed the required {{%italics%}}Event Function{{%/italics%}}, click the {{%bold%}}Create Event Function{{%/bold%}} button. You will be directed to the {{%link href="/en/serverless/" %}}Serverless{{%/link%}} section of the console, and follow the steps listed in this {{%link href="/en/serverless/help/functions/implementation/#create-a-function" %}}help documentation{{%/link%}} to create an event function. * If you have {{%link href="/en/cli/v1/initialize-resources/initialize-functions/" %}}initialized the required function{{%/link%}} using the Catalyst CLI, ensure you {{%link href="/en/cli/v1/deploy-resources/deploy-options/" %}}deploy the function{{%/link%}} to the Catalyst console once you have coded your required business logic.{{%/note%}} 8. Click **Create**. <br /> The rule will be created, and the event listener trigger will be enabled. {{%/tab%}} {{%tab "Circuit" %}} <br /> 7. Choose the required circuit from the **Target Circuit** drop-down. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} If you have not yet coded and {{%link href="/en/cli/v1/deploy-resources/deploy-options/" %}}deployed the required functions{{%/link%}} for the {{%link href="/en/serverless/help/circuits/introduction/" %}}Circuit{{%/link%}} and created it, click the {{%bold%}}Create Circuit{{%/bold%}} button. You will be directed to the {{%link href="/en/serverless/" %}}Serverless section{{%/link%}} of the console, and follow the steps listed in this {{%link href="/en/serverless/help/circuits/implementation/#create-a-circuit" %}}help documentation{{%/link%}} to create a Circuit.{{%/note%}} 8. Click **Create**. <br /> The rule will be created, and the event listener trigger will be enabled. {{%/tab%}} {{%/tabs%}} <br /> ### Edit an Event Listener Trigger To edit an event listener trigger: 1. Click the ellipsis icon next to the rule, then click Edit. <br /> 2. Make the required edits and click **Update**. <br /> The changes will be applied. <br /> ### Disable an Event Listener Trigger To disable an event listener trigger: 1. Click the ellipsis icon next to the rule, then click **Disable**. <br /> 2. Click **Disable** in the prompt to confirm your action. <br /> The rule will be disabled. <br /> ### Delete an Event Listener Trigger To delete an event listener trigger: 1. Click the ellipsis icon next to the rule, then click **Delete**. <br /> 2. Click **Delete** in the prompt to confirm your action. <br /> The rule will be deleted. <br /> -------------------------------------------------------------------------------- title: "Bucket CORS" description: "Stratus is a robust cloud storage solution powered by Catalyst. You can store data of any format type in the form of buckets and objects." last_updated: "2026-03-18T07:41:08.540Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/stratus/stratus-config/bucket-cors/" service: "Cloud Scale" related: - Create a Bucket (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Upload an Object (/en/cloud-scale/help/stratus/objects/upload-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/get-bucket-cors/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/get-bucket-cors/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/get-bucket-cors/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Bucket CORS Cross-origin Resource Sharing (**CORS**), is a feature of Stratus that you can use to whitelist certain domains that require access to the objects stored in your bucket. You can authorize applications you have hosted using {{%link href="/en/serverless/help/appsail/introduction/" %}}Catalyst AppSail{{%/link%}}, or even applications you have hosted on third-party platforms to access objects stored in Stratus. <br /> You can authorize and whitelist the required domains directly in the console and approve the domains to access objects from your buckets. This operation can be performed in the {{%link href="/en/deployment-and-billing/environments/development-environment/" %}}development{{%/link%}} environment and your configurations can be migrated to the {{%link href="/en/deployment-and-billing/environments/production-environment/" %}}production{{%/link%}} environment. ### Whitelist Domains Using Bucket CORS To authorize a domain for CORS: Click on the required bucket. <br /> 2. Click the **Configurations** tab. <br /> 3. Expand the **Bucket CORS** section and click **Add Domain**. <br /> 4. Enter the complete URL of the domain you need to enable CORS for, with the required **Request Method** ({{%badge%}}GET{{%/badge%}}, {{%badge%}}POST{{%/badge%}}, {{%badge%}}PUT{{%/badge%}}, {{%badge%}}DELETE{{%/badge%}}, or {{%badge%}}HEAD{{%/badge%}}). <br /> 5. Click **Add** to whitelist the required domains. <br /> The required domain will be whitelisted and CORS will be enabled for the required domain. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} CORS of a bucket can be edited by any user that has or has been granted {{%badge%}}Write{{%/badge%}} permission for Stratus component in the project, using the {{%link href="/en/getting-started/set-up-a-catalyst-project/profiles-and-permissions/" %}}Profiles & Permissions{{%/link%}} section.{{%/note%}} ### Edit Bucket CORS To edit bucket CORS: 1. Click the ellipsis icon next to the domain and click **Edit**. <br /> 2. Make the required changes and click **Update**. <br /> The changes will be applied. <br /> ### Delete Bucket CORS To disable or remove a domain from the whitelist: 1. Click the ellipsis icon next to the domain and click **Delete**. <br /> 2. Click **Confirm** to delete the domain. <br /> The domain will be deleted, and will no longer be whitelisted. ## Third-Party Storage to Stratus Migration -------------------------------------------------------------------------------- title: "Introduction" description: "Stratus is a robust cloud storage solution powered by Catalyst. You can store data of any format type in the form of buckets and objects." last_updated: "2026-03-18T07:41:08.540Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/stratus/third-party-migration/introduction/" service: "Cloud Scale" related: - Create a Bucket (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Upload an Object (/en/cloud-scale/help/stratus/objects/upload-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/overview/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Migrate Data Stored with Third-party Providers to Catalyst's Stratus Catalyst allows you to migrate your storage from **Amazon S3**, and **Google Cloud Platform (GCP) Cloud Storage** to Stratus. Implement a few simple steps to configure the migration protocols in the Catalyst console, and you can migrate up to three buckets, irrespective of their size and data, in parallel from a single third-party platform at one time. This following help sections covers detailed steps you need to employ to successfully migrate your stored data from third-party platforms to **Catalyst's Stratus**. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} * You can perform migration of stored data from third-party platforms to Stratus in both {{%link href="/en/deployment-and-billing/environments/development-environment/" %}}development{{%/link%}} and {{%link href="/en/deployment-and-billing/environments/production-environment/" %}}production{{%/link%}} environments. * During your migration, if any of the objects do not comply with the naming conventions or any other mandatory rule of Stratus, the particular object will be skipped and not be migrated to Stratus. * During your migration, if you are going to migrate an object with a {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#metadata" %}}metadata{{%/link%}} greater than {{%bold%}}2047{{%/bold%}}, then only {{%bold%}}2047{{%/bold%}} characters of the object's metadata will be migrated along with the object. The rest will be automatically omitted.{{%/note%}} -------------------------------------------------------------------------------- title: "Amazon S3 to Stratus" description: "Stratus is a robust cloud storage solution powered by Catalyst. You can store data of any format type in the form of buckets and objects." last_updated: "2026-03-18T07:41:08.540Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/stratus/third-party-migration/migrate-s3/" service: "Cloud Scale" related: - Create a Bucket (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Upload an Object (/en/cloud-scale/help/stratus/objects/upload-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/overview/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Amazon S3 to Stratus In this section, we will go over every step you need to employ in both the AWS console and Catalyst console to successfully migrate your stored data from **Amazon S3** to **Stratus**. ### Prerequisites Before you start configuring for your migration requirement, make sure you satisfy the following prerequisites: * **Your AWS account must have IAM access**. To be able to initiate migration from AWS, your AWS account needs to have IAM access with {{%link href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies" %}}{{%badge%}}AdminstratorAccessPolicy{{%/badge%}}{{%/link%}}. However, you can also initiate migration if your account has {{%badge%}}AmazonS3FullAccess{{%/badge%}}, or at least {{%badge%}}AmazonS3ReadOnlyAccess{{%/badge%}} permissions. * Your AWS account needs to be active and functioning, and you need to be logged in for the period of time your buckets and objects are being migrated. While it is not mandatory, it may be easier for you to follow the upcoming steps once you familiarize yourself with AWS's documentation on {{%link href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html" %}}IAM accounts{{%/link%}} and {{%link href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies" %}}profile permissions{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} * When you migrate from Amazon S3, none of the bucket settings you configured in Amazon S3 will be applied in Stratus. You will need to **reconfigure your Stratus bucket settings**. * If you have enabled **versioning** for your objects in Amazon S3, be advised that even if {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}versioning{{%/link%}} is enabled for the destination bucket in Stratus, only the {{%bold%}}latest object{{%/bold%}} will be migrated.{{%/note%}} ### Create a User Account in AWS Console To be able to create a user account with relevant permissions, you either need to be a root user or, as mentioned in the [prerequisites](#prerequisites) section, logged in as an **IAM user**. To create a user account eligible for migration: 1. Open the AWS console, and navigate to **IAM**>**AccessManagement**>**Users**>**Create User** <br /> 2. Provide a name for the user account and click **Next**. <br /> 3. Select the **Attach policies directly** option in the *Set Permissions* page, then search for **S3** permissions in the search bar. <br /> 4. Select the {{%badge%}}**AmazonS3FullAccess**{{%/badge%}} permission and click **Next**. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} {{%badge%}}AmazonS3FullAccess{{%/badge%}} is the ideal permission required for migration. However, if you do not wish to create a user account with this permission, you have the option to create the user account with {{%badge%}}AmazonS3ReadOnlyAccess{{%/badge%}} permission.{{%/note%}} 5. Review your selections, then click **Create user**. <br /> In the *Users* section, your new user will be created and listed. <br /> ### Generate Access Keys With the user profile created, the next step is to generate the required access keys to authorize migration. To generate access keys: 1. Click your newly created user profile, then click the **Security credentials** tab. <br /> 2. Click the **Create access key** button in the *Access keys* section to generate the required keys. <br /> 3. Select **Other** as your requirement from the list of options, then click **Next**. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} For the purposes of this help documentation, the {{%bold%}}Other{{%/bold%}} option suits our requirements. Ensure you go through the descriptions of each option and make an appropriate choice to satisfy your requirement.{{%/note%}} 4. Provide an optional description tag if you require it, then click **Create access key**. <br /> 5. Copy or download the keys and store them in a safe place, then click **Done**. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} This key will only be generated {{%bold%}}once{{%/bold%}}, so ensure you copy and store it safely.{{%/note%}} ### Start Migration from Amazon S3 to Stratus in Catalyst Console This section covers the steps you need to perform in the {{%link href="https://console.catalyst.zoho.com/" %}}Catalyst console{{%/link%}} to trigger the migration from Amazon S3. {{%note%}}{{%bold%}}Note:{{%/bold%}} * During your migration, if any of the objects do not comply with the naming conventions or any other mandatory rule of Stratus, the particular object will be skipped and not be migrated to Stratus. * During your migration, if you are going to migrate an object with a {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#metadata" %}}metadata{{%/link%}} greater than {{%bold%}}2047{{%/bold%}}, then only {{%bold%}}2047{{%/bold%}} characters of the object's metadata will be migrated along with the object. The rest will be automatically omitted.{{%/note%}} 1. Navigate to **Stratus** under *Storage* in the *Cloud Scale* console, then click **Third-party Migration**. <br /> 2. Select the **Amazon Web Services** option and click **Next**. <br /> 3. Enter the access keys you generated in the *AWS console*, then click **Next**. <br /> 4. Use the first drop-down to select the region of your AWS bucket, use the second drop-down to select the destination bucket you created in Stratus to store the migrated objects, and finally click **Next** to initiate migration. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} - If you do not know the region of your AWS bucket, you can find it in the bucket list in the AWS Console. <br /> - If you have not created a destination bucket in Catalyst for your migrated objects, you can create one during configuration in the screen pictured below by clicking **Create Bucket**. <br /> - You can find the steps to create a bucket in this {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/" %}}help section{{%/link%}}. - You can migrate up to {{%bold%}}three buckets simultaneously{{%/bold%}}. If you wish to migrate from another bucket, click the "+ icon" and add the source and destination buckets' name.{{%/note%}} The migration will be scheduled. <br /> You will be notified through console notifications once the migration is complete. <br /> -------------------------------------------------------------------------------- title: "Google Cloud Platform (GCP) Cloud Storage to Stratus" description: "Stratus is a robust cloud storage solution powered by Catalyst. You can store data of any format type in the form of buckets and objects." last_updated: "2026-03-18T07:41:08.541Z" source: "https://docs.catalyst.zoho.com/en/cloud-scale/help/stratus/third-party-migration/gcp/" service: "Cloud Scale" related: - Create a Bucket (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Upload an Object (/en/cloud-scale/help/stratus/objects/upload-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/overview/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Google Cloud Platform Cloud Storage to Stratus In this section, we'll cover all the steps you need to employ in the Google console and Catalyst Console to successfully migrate your stored data from **Google Cloud Platform (GCP) Cloud Storage** to **Stratus**. ### Create a Suitable Service Account If you do not have a service account with all the necessary credentials and permissions, you need to first create one to be able to migrate your bucket securely from GCP Cloud Storage to Stratus. To create a service account: 1. Go to the *IAM & Admin* section in the Google console by clicking this {{%link href="https://console.cloud.google.com/iam-admin/iam" %}}link{{%/link%}}. <br /> 2. Navigate to the *Service* accounts section of the console, and click the **+CREATE SERVICE ACCOUNT** button. <br /> 3. Provide a name and a meaningful description for the service account. The **Service account ID** will be generated automatically. Click the **CREATE AND CONTINUE** button once this is done. <br /> 4. Using the **Role** drop-down, select **Storage Admin** as your role, then click the **DONE** button. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} The rest of the configuration is not mandatory for this migration. However, make sure you apply your required configuration to satisfy your requirement.{{%/note%}} You will be able to see your new service account listed. <br /> ### Generate Keys for the Service Account You need to create new keys for the service account you just created to authorize the migration. To generate keys: 1. Click your service account. You will be directed to the configurations and settings of the account. Click the **Keys** tab. <br /> 2. Click the **ADD KEY** button and select the **Create new key** option. <br /> 3. Select **JSON** as your key type, then click the **CREATE** button. <br /> The JSON key will be downloaded to your local system. Store it in a secure place. <br /> ### Start Migration from GCP Cloud Storage to Stratus in Catalyst Console This section covers the steps you need to perform in the Catalyst console to trigger the migration from GCP Cloud Storage. {{%note%}}{{%bold%}}Note:{{%/bold%}} * During your migration, if any of the objects do not comply with the naming conventions or any other mandatory rule of Stratus, the particular object will be skipped and not be migrated to Stratus. * During your migration, if you are going to migrate an object with a {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#metadata" %}}metadata{{%/link%}} greater than {{%bold%}}2047{{%/bold%}}, then only {{%bold%}}2047{{%/bold%}} characters of the object's metadata will be migrated along with the object. The rest will be automatically omitted.{{%/note%}} 1. Navigate to **Stratus** under *Storage* in the *Cloud Scale* console, then click **Third-party Migration**. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} You need to have a destination bucket created in Stratus to hold the objects migrating from GCP Cloud Storage. You can find the steps to create a bucket in this {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/" %}}help section{{%/link%}}.{{%/note%}} 2. Select the *Google Cloud Platform* tile and click **Next**. <br /> 3. Upload the *JSON key* you generated and downloaded in the GCP console, then click **Next**. <br /> 4. Enter the name of the source (GCP) bucket and the name of the destination (Stratus) bucket, then click **Next** to start migration. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} * You can migrate up to {{%bold%}}three buckets simultaneously{{%/bold%}}. If you wish to migrate from another bucket, click the "+ icon" and add the source and destination buckets' name. * If you have enabled versioning for your objects in in GCP, be advised that only if {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}versioning{{%/link%}} is enabled for the destination bucket in Stratus, will all the object's versions be migrated, else, only the latest version of the object wil be migrated.{{%/note%}} The migration will be scheduled. <br /> You will be notified through console notifications once the migration is complete. <br /> --- ## API Reference — Stratus -------------------------------------------------------------------------------- title: "Get All Buckets" description: "This API enables you to retrieve the details of all the buckets in Stratus along with the details of all the objets in it" last_updated: "2026-03-18T07:41:08.544Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/stratus/get-all-buckets/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/stratus/get-all-buckets/" id="GetAllBuckets" %}} {{%divtag class="LeftContent"%}} # Stratus {{%link href="/en/cloud-scale/help/stratus/introduction/" %}}Stratus{{%/link%}} is Catalyst's robust cloud storage solution. With a simple upload action, you can store your data of any type as {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}Objects{{%/link%}} in containers called {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}}. # Get All Buckets ### Description This API allows you to get all available details of all {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}buckets{{%/link%}} present in Stratus. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/baas/v1/project/{project_id}/bucket</p>{{%/request%}} {{%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.buckets.READ {{%/scope%}} ### Response Details The response will return the metadata and details of all the buckets including its {{%badge%}}bucket_name{{%/badge%}}, and the details of the user who created and last modified the bucket. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}} curl -X GET https://api.catalyst.zoho.com/baas/v1/project/10108000003823392/bucket -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": [ { "bucket_name": "fsbucket17", "project_details": { "project_name": "Project-Rainfall-4", "id": 2000000000075, "project_type": "Live" }, "created_by": { "zuid": 18599686, "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Amelia B", "last_name": "Fstest", "user_type": "Admin", "user_id": 2000000000055 }, "created_time": "Sep 27, 2023 05:01 PM", "modified_by": { "zuid": 18599686, "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Amelia B", "last_name": "Fstest", "user_type": "Admin", "user_id": 2000000000055 }, "modified_time": "Sep 27, 2023 05:01 PM", "bucket_meta": { "versioning": false, "caching": { "status": "Disabled" }, "encryption": false, "audit_consent": false }, "bucket_url": "https://fsbucket17-development.zohostratus.com" }, { "bucket_name": "fsbucket16", "project_details": { "project_name": "Project-Rainfall-4", "id": 2000000000075, "project_type": "Live" }, "created_by": { "zuid": 18599686, "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Amelia B", "last_name": "Fstest", "user_type": "Admin", "user_id": 2000000000055 }, "created_time": "Sep 27, 2023 04:58 PM", "modified_by": { "zuid": 18599686, "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Amelia B", "last_name": "Fstest", "user_type": "Admin", "user_id": 2000000000055 }, "modified_time": "Sep 27, 2023 04:58 PM", "bucket_meta": { "versioning": false, "caching": { "status": "Disabled" }, "encryption": true, "audit_consent": true }, "bucket_url": "https://fsbucket16-development.zohostratus.com" }, { "bucket_name": "fsbucket15", "project_details": { "project_name": "Project-Rainfall-4", "id": 2000000000075, "project_type": "Live" }, "created_by": { "zuid": 18599686, "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Amelia B", "last_name": "Fstest", "user_type": "Admin", "user_id": 2000000000055 }, "created_time": "Sep 27, 2023 04:57 PM", "modified_by": { "zuid": 18599686, "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Amelia B", "last_name": "Fstest", "user_type": "Admin", "user_id": 2000000000055 }, "modified_time": "Sep 27, 2023 04:57 PM", "bucket_meta": { "versioning": true, "caching": { "status": "In-Progress" }, "encryption": false, "audit_consent": false }, "bucket_url": "https://fsbucket15-development.zohostratus.com" } ] } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} * {{%link href="/en/sdk/java/v1/cloud-scale/stratus/list-buckets/"%}}Get Bucket - Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/list-buckets/"%}}Get Bucket - Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/stratus/list-buckets/"%}}Get Bucket - Python SDK{{%/link%}} * {{%link href="/en/sdk/web/v4/cloud-scale/stratus/overview/"%}}Stratus - Web SDK{{%/link%}} * {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/overview/"%}}Stratus - iOS SDK{{%/link%}} * {{%link href="/en/sdk/android/v2/cloud-scale/stratus/overview/"%}}Stratus - Android SDK{{%/link%}} * {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/overview/"%}}Stratus - Flutter SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Get Specific Bucket" description: "This API enables you to retrieve the details of a specific bucket in Stratus along with the details of all the objets in it" last_updated: "2026-03-18T07:41:08.544Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/stratus/get-bucket/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/stratus/get-bucket/" id="GetSpecificBucket" %}} {{%divtag class="LeftContent"%}} # Get Bucket ### Description This API allows you to get all available details of a bucket present in Stratus. The Bucket is referred by it {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique bucket name{{%/link%}}. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/baas/v1/project/{project_id}/bucket/{bucket_name}</p>{{%/request%}} {{%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="bucket_name" data="Alphanumerical" %}}The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket"%}}name of the bucket{{%/link%}}{{%/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.buckets.READ {{%/scope%}} ### Response Details The response will return the metadata and details of the particular bucket including its {{%badge%}}bucket_name{{%/badge%}}, and the details of the user who created and last modified the bucket. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}} curl -X GET https://api.catalyst.zoho.com/baas/v1/project/10108000003823392/bucket?bucket_name=mybucketname/ -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": [ { "bucket_name": "fsbucket17", "bucket_url": "https://fsbucket17-development.stratus.com", "objects_count": 21, "size_in_bytes": 145578, "project_details": { "project_name": "Project-Rainfall-4", "id": 2000000000075, "project_type": "Live" }, "created_by": { "zuid": 18599686, "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Amelia B", "last_name": "Fstest", "user_type": "Admin", "user_id": 2000000000055 }, "created_time": "Sep 27, 2023 05:01 PM", "modified_by": { "zuid": 18599686, "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Amelia B", "last_name": "Fstest", "user_type": "Admin", "user_id": 2000000000055 }, "modified_time": "Sep 27, 2023 05:01 PM", "bucket_meta": { "versioning": true, "caching": { "status": "Enabled" }, "encryption": true, "audit_consent": false } } ] } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} * {{%link href="/en/sdk/java/v1/cloud-scale/stratus/list-buckets/#get-a-particular-bucket"%}}Get a Particular Bucket - Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/list-buckets/#get-a-particular-bucket"%}}Get a Particular Bucket - Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/stratus/list-buckets/#get-a-particular-bucket"%}}Get a Particular Bucket - Python SDK{{%/link%}} * {{%link href="/en/sdk/web/v4/cloud-scale/stratus/overview/"%}}Stratus - Web SDK{{%/link%}} * {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/overview/"%}}Stratus - iOS SDK{{%/link%}} * {{%link href="/en/sdk/android/v2/cloud-scale/stratus/overview/"%}}Stratus - Android SDK{{%/link%}} * {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/overview/"%}}Stratus - Flutter SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Get All Objects" description: "This API enables you to get all the objects present in a bucket." last_updated: "2026-03-18T07:41:08.544Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/stratus/get-all-objects/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/stratus/get-all-objects/" id="GetAllObjects" %}} {{%divtag class="LeftContent"%}} # Get All Objects ### Description This API allows you to get all the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}objects{{%/link%}} stored in a bucket. The Bucket is referred by it {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique bucket name{{%/link%}}. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/baas/v1/project/{project_id}/bucket/objects</p>{{%/request%}} {{%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%}} #### Query Parameters {{% nested_fields children="open" border="yes" expandable="no" title="bucket_name" textformat="Alphanumeric" condition="mandatory" maxlength=" " %}}The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket"%}}name of the bucket{{%/link%}}{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="max_keys" textformat="Number" condition="Optional" maxlength=" " %}}Will contain the maximum limit of objects that can be listed by pagination.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="continuation_token" textformat="String" condition="optional" maxlength=" " %}}If you a sent a {{%badge%}}continuation_token{{%/badge%}} in the request, it will be shown in the response{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="prefix" textformat="String" condition="Optional" maxlength=" " %}}This optional value will get the objects that match the prefix value.{{% /nested_fields %}} #### 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.buckets.objects.READ {{%/scope%}} ### Response Details On successful execution, the response will contain a list of all the objects stored in the required bucket. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}} curl -X GET https://api.catalyst.zoho.com/baas/v1/project/10108000003823392/buckets/objects?bucket_name=mybucketname&max_keys=10&continuation_token=Sg43ou34rd2bih223oc8csc&prefix=myfolder/ -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": { "key_count": 5, "max_keys": 5, "truncated": true, "next_continuation_token": "n2BjzZo5FvrSQmx7z5LaJk7cvP2Yf2K6AJHw4Sg692TnfwHasUp8DJp8qL24A3TLAGPu8zyEysfjfQpjohEMaej", "contents": [ { "key_type": "file", "key": "server 96.zip", "version_id": "01hh9hnwxw8r88kzzfnkn67grr", "size": 3012536, "content_type": "application/zip", "etag": "e460808d4190b37c472985a1f1d85720", "last_modified": "Dec 10, 2023 03:12 PM" }, { "key_type": "file", "key": "oauthscopes.csv", "version_id": "01hh9hnhypzt63fwf5wyk2ef6f", "size": 19804, "content_type": "text/csv", "etag": "354266606189c30c80f336720102ead6", "last_modified": "Dec 10, 2023 03:11 PM" }, { "key_type": "folder", "key": "lib 3", "size": 0, "last_modified": "Dec 10, 2023 03:11 PM" }, { "key_type": "file", "key": "funcauthtest-Development (1).zip", "version_id": "01hh9hkv8xvetbxnrhx6c7444y", "size": 8485, "content_type": "application/zip", "etag": "5f868df044e91a4c7e26be26b6e93a64", "last_modified": "Dec 10, 2023 03:10 PM" }, { "key_type": "file", "key": "Automl_LZ (1).csv", "version_id": "01hh9hkfdf07y8pnpbwtkt8cf7", "size": 257, "content_type": "text/csv", "etag": "223a363af39a49d4b32f6cdf0c569755", "last_modified": "Dec 10, 2023 03:10 PM" } ] } } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} * {{%link href="/en/sdk/java/v1/cloud-scale/stratus/purge-cache/"%}}Purge Cache - Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/purge-cache/"%}}Purge Cache - Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/stratus/purge-cache/"%}}Purge Cache - Python SDK{{%/link%}} * {{%link href="/en/sdk/web/v4/cloud-scale/stratus/overview/"%}}Stratus - Web SDK{{%/link%}} * {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/overview/"%}}Stratus - iOS SDK{{%/link%}} * {{%link href="/en/sdk/android/v2/cloud-scale/stratus/overview/"%}}Stratus - Android SDK{{%/link%}} * {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/overview/"%}}Stratus - Flutter SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Get a Specific Object" description: "This API enables you to get all the objects present in a bucket." last_updated: "2026-03-18T07:41:08.544Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/stratus/get-object/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/stratus/get-object/" id="GetaSpecificObject" %}} {{%divtag class="LeftContent"%}} # Get a Specific Object ### Description This API allows you to get a specfic {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}object{{%/link%}} stored in a bucket. The Bucket is referred by it {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique bucket name{{%/link%}}, and the required object is referred using its name. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versionning{{%/link%}} is enabled, then the required object can also be referred to using its uniquye {{%badge%}}version ID{{%/badge%}}. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/baas/v1/project/{project_id}/bucket/object</p>{{%/request%}} {{%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%}} #### Query Parameters {{% nested_fields children="open" border="yes" expandable="no" title="bucket_name" textformat="Alphanumeric" condition="mandatory" maxlength=" " %}}The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket"%}}name of the bucket{{%/link%}}{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="object_key" textformat="String" condition="mandatory" maxlength=" " %}}Will contain the complete name of the object.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="version_id" textformat="String" condition="optional" maxlength=" " %}}This is an ID generated by Stratus when Versioning is enabled. You can use {{%badge%}}version_id{{%/badge%}} to refer to the required object.{{% /nested_fields %}} #### 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.buckets.objects.READ {{%/scope%}} ### Response Details On successful execution, the response will contain the details of the requested object. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}} curl -X GET https://api.catalyst.zoho.com/baas/v1/project/{projectID}/bucket/object?bucket_name={bucketName}&version_id={versionID}&object_key={objectPath} -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": { "key": "Automl_LZ (1).csv", "size": 257, "content_type": "text/csv", "last_modified": "Dec 10, 2023 03:10 PM", "meta_data": { "automl_metakey": "metavalue" }, "object_url": "https://gcpimport2-development.csezstratus.com/Automl_LZ%20(1).csv" } } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} * {{%link href="/en/sdk/java/v1/cloud-scale/stratus/object-details/#get-details-of-a-particular-version-of-the-object"%}}Get Object Details - Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/object-details/#get-details-of-a-particular-version-of-the-object"%}}Get Object Details - Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/stratus/object-details/#get-details-of-a-particular-version-of-the-object"%}}Get Object Details - Python SDK{{%/link%}} * {{%link href="/en/sdk/web/v4/cloud-scale/stratus/get-object/"%}}Get Object - Web SDK{{%/link%}} * {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/get-object/"%}}Get Object - iOS SDK{{%/link%}} * {{%link href="/en/sdk/android/v2/cloud-scale/stratus/get-object/"%}}Get Object - Android SDK{{%/link%}} * {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/get-object/"%}}Get Object - Flutter SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Get All Versions of an Object" description: "This API enables you to get all the versions of an object." last_updated: "2026-03-18T07:41:08.544Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/stratus/get-all-versions/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/stratus/get-all-versions/" id="GetAllVersionsofanObject" %}} {{%divtag class="LeftContent"%}} # Get All Versions of an Object ### Description This API allows you to get all the versions of the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}object{{%/link%}} stored in a bucket. The Bucket is referred by it {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique bucket name{{%/link%}}, and the required object is referred using its name. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/baas/v1/project/{project_id}/bucket/objects/versions</p>{{%/request%}} {{%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%}} #### Query Parameters {{% nested_fields children="open" border="yes" expandable="no" title="bucket_name" textformat="Alphanumeric" condition="mandatory" maxlength=" " %}}The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket"%}}name of the bucket{{%/link%}}{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="object_key" textformat="String" condition="mandatory" maxlength=" " %}}Will contain the complete name of the object.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="max_versions" textformat="Number" condition="optional" maxlength=" " %}}Will contain the maximum number of versions that can be listed in one paginated iteration.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="continuation_token" textformat="String" condition="optional" maxlength=" " %}}Will contain the token to check if next paginated iteration is required or not.{{% /nested_fields %}} #### 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.buckets.objects.READ {{%/scope%}} ### Response Details On successful execution, the response will contain the list of details of all the versions of the required object. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}} curl -X GET https://api.catalyst.zoho.com/baas/v1/project/10108000003823392/bucket/objects/versions?bucket_name=zylker-bucket&object_key=sampleimage&max_versions=10&continuation_token=Sg43ou34rd2bih223oc8csc/ -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": { "truncated": true, "key": "Automl_LZ (1).csv", "versions_count": 2, "max_versions": 2, "is_truncated": true, "next_continuation_token": "97tn3xP3te66VpfVwVJwtDAgouBKVNhGAV6jzGY6DMdX6hcJmwJKbFX3unakGdfKfJ", "version": [ { "latest": true, "version_id": "01hh9hkfdf07y8pnpbwtkt8cf7", "is_latest": true, "last_modified": "Dec 10, 2023 03:10 PM", "size": 257, "etag": "223a363af39a49d4b32f6cdf0c569755" }, { "latest": false, "version_id": "01hh9hjtge85k1fx2yp1kg8r2q", "is_latest": false, "last_modified": "Dec 10, 2023 03:10 PM", "size": 257, "etag": "223a363af39a49d4b32f6cdf0c569755" } ] } } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} * {{%link href="/en/sdk/java/v1/cloud-scale/stratus/get-object-versions/"%}}Get All Versions of an Object - Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/get-object-versions/"%}}Get All Versions of an Object - Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/stratus/get-object-versions/"%}}Get All Versions of an Object - Python SDK{{%/link%}} * {{%link href="/en/sdk/web/v4/cloud-scale/stratus/overview/"%}}Stratus - Web SDK{{%/link%}} * {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/overview/"%}}Stratus - iOS SDK{{%/link%}} * {{%link href="/en/sdk/android/v2/cloud-scale/stratus/overview/"%}}Stratus - Android SDK{{%/link%}} * {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/overview/"%}}Stratus - Flutter SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Check Bucket Availability" description: "This API enables you to check if a particular bucket is present or not." last_updated: "2026-03-18T07:41:08.544Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/stratus/head-bucket/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/stratus/head-bucket/" id="CheckBucketAvailability" %}} {{%divtag class="LeftContent"%}} # Check Bucket Availability ### Description This API allows you check the availability of a particular {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}bucket{{%/link%}} present in Stratus. The bucket will be referred using its unique {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}bucket name{{%/link%}} ### Request Details #### Request URL {{%request class="apiblue" req="HEAD" %}}<p>{api-domain}/baas/v1/project/{project_id}/bucket/{bucket_name}</p>{{%/request%}} {{%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="bucket_name" data="Alphanumerical" %}}The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket"%}}name of the bucket{{%/link%}}{{%/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.buckets.READ {{%/scope%}} ### Response Details The response can be any of the following status codes: * {{%badge%}}200{{%/badge%}}: If the bucket is available and if the user has the relevant permissions to access it. * {{%badge%}}403{{%/badge%}}: If the bucket exists, bu the user does not have the relevant permissions to access the bucket. * {{%badge%}}404{{%/badge%}}: If the bucket does not exist. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}} curl -X HEAD https://api.catalyst.zoho.com/baas/v1/project/10108000003823392/bucket?bucket_name=myBucketName/ -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" {{% /panel_without_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} * {{%link href="/en/sdk/java/v1/cloud-scale/stratus/check-bucket/"%}}Check Bucket Availability - Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/check-bucket/"%}}Check Bucket Availability - Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/stratus/check-bucket/"%}}Check Bucket Availability - Python SDK{{%/link%}} * {{%link href="/en/sdk/web/v4/cloud-scale/stratus/check-bucket/"%}}Check Bucket Availability - Web SDK{{%/link%}} * {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/overview/"%}}Stratus - iOS SDK{{%/link%}} * {{%link href="/en/sdk/android/v2/cloud-scale/stratus/overview/"%}}Stratus - Android SDK{{%/link%}} * {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/overview/"%}}Stratus - Flutter SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Check Object Availability" description: "This API enables you to check if a particular object is present in a bucket." last_updated: "2026-03-18T07:41:08.545Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/stratus/head-object/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/stratus/head-object/" id="CheckObjectAvailability" %}} {{%divtag class="LeftContent"%}} # Check Object Availability ### Description This API allows you to check if a particular {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}object{{%/link%}} is stored in a bucket. The Bucket is referred by it {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique bucket name{{%/link%}}, and the required object is referred using its name. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versionning{{%/link%}} is enabled, then the required object can also be referred to using its uniquye {{%badge%}}version ID{{%/badge%}}. ### Request Details #### Request URL {{%request class="apiblue" req="HEAD" %}}<p>{api-domain}/baas/v1/project/{project_id}/bucket/objects</p>{{%/request%}} {{%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%}} #### Query Parameters {{% nested_fields children="open" border="yes" expandable="no" title="bucket_name" textformat="Alphanumeric" condition="mandatory" maxlength=" " %}}The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket"%}}name of the bucket{{%/link%}}{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="object_key" textformat="String" condition="mandatory" maxlength=" " %}}Will contain the complete name of the object.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="version_id" textformat="String" condition="optional" maxlength=" " %}}This is an ID generated by Stratus when Versioning is enabled. You can use {{%badge%}}version_id{{%/badge%}} to refer to the required object.{{% /nested_fields %}} #### 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.buckets.objects.READ {{%/scope%}} ### Response Details On successful execution, the response will contain the **200** status code, to indicate the object is present in the bucket. If the object is incorrect or not present in the bucket, you will get a **404** status code as your response. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}} curl -X HEAD https://api.catalyst.zoho.com/baas/v1/project/10108000003823392/bucket/object?bucket_name=myBucketName&object_key=image.jpeg&version_id=dfd233fcds2wd223/ -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" {{% /panel_without_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} * {{%link href="/en/sdk/java/v1/cloud-scale/stratus/check-object-availability/"%}}Check Object Availability - Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/check-object-availability/"%}}Check Object Availability - Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/stratus/check-object-availability/"%}}Check Object Availability - Python SDK{{%/link%}} * {{%link href="/en/sdk/web/v4/cloud-scale/stratus/overview/"%}}Stratus - Web SDK{{%/link%}} * {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/overview/"%}}Stratus - iOS SDK{{%/link%}} * {{%link href="/en/sdk/android/v2/cloud-scale/stratus/overview/"%}}Stratus - Android SDK{{%/link%}} * {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/overview/"%}}Stratus - Flutter SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Download Object" description: "This API enables you to perform download operations on an object stored in Stratus." last_updated: "2026-03-18T07:41:08.545Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/stratus/download-object/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/stratus/download-object/" id="DownloadObject" %}} {{%divtag class="LeftContent"%}} # Download Object ### Description This API allows you to download the required {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}object{{%/link%}} stored in a bucket. The Bucket is referred by it {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique bucket name{{%/link%}}, and the required object is referred using its name. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{bucket_name}.zohostratus.com/{key}</p>{{%/request%}} The above domain name will change with respect to the data center: <table class="content-table"> <thead> <tr> <th class="w20p">DC</th> <th class="w40p">Domain Name</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}US{{%/badge%}}</td> <td>{{%bold%}}zohostratus.com{{%/bold%}}</td> </tr> <tr> <td>{{%badge%}}EU{{%/badge%}}</td> <td>{{%bold%}}zohostratus.eu{{%/bold%}}</td> </tr> <tr> <td>{{%badge%}}IN{{%/badge%}}</td> <td>{{%bold%}}zohostratus.in{{%/bold%}}</td> </tr> <tr> <td>{{%badge%}}AU{{%/badge%}}</td> <td>{{%bold%}}zohostratus.com.au{{%/bold%}}</td> </tr> <tr> <td>{{%badge%}}CA{{%/badge%}}</td> <td>{{%bold%}}zohostratus.ca{{%/bold%}}</td> </tr> <tr> <td>{{%badge%}}SA{{%/badge%}}</td> <td>{{%bold%}}zohostratus.sa{{%/bold%}}</td> </tr> <tr> <td>{{%badge%}}JP{{%/badge%}}</td> <td>{{%bold%}}zohostratus.jp{{%/bold%}}</td> </tr> </tbody> </table> {{%note%}}{{%bold%}}Note:{{%/bold%}} * If the API is used in the development environment, then the domain will be structured in this manner: https://<bucket_name>-development.zohostratus.com * It is advisable to collect the bucket URL from the console.{{%/note%}} #### Path Parameters {{%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="bucket_name" data="String" %}}The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket"%}}name of the bucket{{%/link%}}{{%/request_id%}} {{%request_id id="key" data="String" %}}The name of the object that needs to be downloaded{{%/request_id%}} #### Query Parameters {{% nested_fields children="open" border="yes" expandable="no" title="version_id" textformat="String" condition="optional" maxlength=" " %}}This is an ID generated by Stratus when Versioning is enabled. You can use {{%badge%}}version_id{{%/badge%}} to refer to the required object.{{% /nested_fields %}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%/scope%}} **Optional Headers** <br> {{%scope%}} **Range:** To download a specific byte range of an object {{%/scope%}} {{%scope%}} **retrieve-meta:** To retrieve the metadata of the object | Possible Values: {{%badge%}}**True/False**{{%/badge%}} | Default Value: {{%badge%}}**False**{{%/badge%}} {{%/scope%}} #### Scope {{%scope%}} Stratus.fileop.READ {{%/scope%}} #### Query Params to Override Responses The following query parameters can be added to modify responses and get the required response. These are all optional parameters. The override will only work if the request is successful. {{% nested_fields children="open" border="yes" expandable="no" title="responseContentType" textformat="String" condition="optional" %}}Sets the {{%badge%}}Content-Type{{%/badge%}} header of the response. Only standard {{%link href="https://www.iana.org/assignments/media-types/media-types.xhtml" %}}IANA defined{{%/link%}} content types can be used.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="responseContentLanguage" textformat="String" condition="optional" %}}Sets the {{%badge%}}Content-Language{{%/badge%}} header of the response{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="responseContentDisposition" textformat="String" condition="optional" %}}Sets the {{%badge%}}Content-Disposition{{%/badge%}} header of the response. The parameter value should be in this format:<br /> attachment; filename="name"<br />{{%bold%}}Example:{{%/bold%}} attachment; filename="logo.svg"{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="responseCacheControl" textformat="String" condition="optional" %}}Sets the {{%badge%}}Cache-Control{{%/badge%}} header of the response.<br />{{%bold%}}Example:{{%/bold%}} public,max-age=3600,no-transform{{% /nested_fields %}} ### Response Details On successful execution, the response will contain the object will be downloaded and the success message will be displayed. #### Possible Failure Responses **404** due to object/bucket not found: {{% panel_with_adjustment header="Failure Response" class="language-json line-numbers"%}} { "status": 404, "code": "key_not_found", "message": "no such key is associated with any object in the bucket" } {{% /panel_with_adjustment %}} **403** Unauthorzied. When you do not have the required permissions to perform the download operation {{% panel_with_adjustment header="Failure Response" class="language-json line-numbers"%}} { "status": 403, "code": "access_forbidden", "message": "request denied by resource access policy" } {{% /panel_with_adjustment %}} {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}} curl -X GET https://{bucket_name}.zohostratus.com/{key} -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" {{% /panel_without_adjustment %}} {{% panel_with_adjustment header="Sample Response" class="language-bash line-numbers"%}} 200 OK // Bytes of raw data {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} * {{%link href="/en/sdk/java/v1/cloud-scale/stratus/download-object/"%}}Download Object - Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/"%}}Download Object - Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/stratus/download-object/"%}}DownloadObject - Python SDK{{%/link%}} * {{%link href="/en/sdk/web/v4/cloud-scale/stratus/overview/"%}}Download - Web SDK{{%/link%}} * {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/download-object/"%}}Download - iOS SDK{{%/link%}} * {{%link href="/en/sdk/android/v2/cloud-scale/stratus/download-object/"%}}Download - Android SDK{{%/link%}} * {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/download-object/"%}}Download - Flutter SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Upload Object" description: "This API enables you to perform upload operations on an object stored in Stratus." last_updated: "2026-03-18T07:41:08.545Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/stratus/upload-object/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/stratus/upload-object/" id="UploadObject" %}} {{%divtag class="LeftContent"%}} # Upload Object ### Description This API allows you to upload the required {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}object{{%/link%}}to a bucket. The Bucket is referred by it {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique bucket name{{%/link%}}, and the required object is referred using its name. ### Request Details #### Request URL {{%request class="apired" req="PUT" %}}<p>{bucket_name}.zohostratus.com/{key}</p>{{%/request%}} The above domain name will change with respect to the data center: <table class="content-table"> <thead> <tr> <th class="w20p">DC</th> <th class="w40p">Domain Name</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}US{{%/badge%}}</td> <td>{{%bold%}}zohostratus.com{{%/bold%}}</td> </tr> <tr> <td>{{%badge%}}EU{{%/badge%}}</td> <td>{{%bold%}}zohostratus.eu{{%/bold%}}</td> </tr> <tr> <td>{{%badge%}}IN{{%/badge%}}</td> <td>{{%bold%}}zohostratus.in{{%/bold%}}</td> </tr> <tr> <td>{{%badge%}}AU{{%/badge%}}</td> <td>{{%bold%}}zohostratus.com.au{{%/bold%}}</td> </tr> <tr> <td>{{%badge%}}CA{{%/badge%}}</td> <td>{{%bold%}}zohostratus.ca{{%/bold%}}</td> </tr> <tr> <td>{{%badge%}}SA{{%/badge%}}</td> <td>{{%bold%}}zohostratus.sa{{%/bold%}}</td> </tr> <tr> <td>{{%badge%}}JP{{%/badge%}}</td> <td>{{%bold%}}zohostratus.jp{{%/bold%}}</td> </tr> </tbody> </table> {{%note%}}{{%bold%}}Note:{{%/bold%}} If the API is used in the development environment, then the domain will be structured in this manner: https://<bucket_name>-development.zohostratus.com{{%/note%}} #### Path Parameters {{%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="bucket_name" data="String" %}}The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket"%}}name of the bucket{{%/link%}}{{%/request_id%}} {{%request_id id="key" data="String" %}}The name of the object that needs to be uploaded{{%/request_id%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} The following points need to be kept in mind when providing value for {{%badge%}}key{{%/badge%}}: * Maximum length of the key (including path name and object name) should be supported to 255 characters only. * key cannot contain the following characters including space: double quote, both angular brackets, hashtag, backward slash and pipe symbol.{{%/note%}} #### Query Parameters {{% nested_fields children="open" border="yes" expandable="no" title="version_id" textformat="String" condition="optional" maxlength=" " %}}This is an ID generated by Stratus when Versioning is enabled. You can use {{%badge%}}version_id{{%/badge%}} to refer to the required object.{{% /nested_fields %}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%/scope%}} **Optional Headers** <br> {{%scope%}} **content-type:** application/json {{%/scope%}} {{%scope%}} **content-length:** Raw length of the object being uploaded in bytes. {{%/scope%}} {{%scope%}} **compress:** Whether to compress the object while storing. By default, compression is always done. {{%/scope%}} {{%scope%}} **cache-control:** Use this header to specify the browser caching policies. {{%/scope%}} {{%scope%}} **overwrite:** Specify whether you are required to overwrite a source. This is supported only for the objects of non-versioned buckets. {{%/scope%}} {{%scope%}} **expires-after:** This is an option you can use to set Time-to-Live (TTL) in seconds for an object. Value should be greater than or equal to 60 seconds. {{%/scope%}} {{%scope%}} **x-user-meta:{1stKey}={1stValue};{2ndKey}={2ndValue};..{NthKey}={NthValue};:** {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#metadata" %}}Metadata{{%/link%}} for the object. Each key-value pair is separated by semi-colons are provided as given in the previous column. **2047 characters** is the maximum permitted length for this header. {{%/scope%}} #### Scope {{%scope%}} Stratus.fileop.CREATE {{%/scope%}} ### Response Details On successful execution, the response will contain the success message, and the object will be uploaded. #### Possible Failure Responses **404** due to object/bucket not found: {{% panel_with_adjustment header="Failure Response" class="language-json line-numbers"%}} { "status": 404, "code": "bucket_not_found", "message": "no such bucket exists" } {{% /panel_with_adjustment %}} **403** Unauthorzied. When you do not have the required permissions to perform the upload operation {{% panel_with_adjustment header="Failure Response" class="language-json line-numbers"%}} { "status": 403, "code": "access_forbidden", "message": "request denied by resource access policy" } {{% /panel_with_adjustment %}} **400** Bad Request. Invalid Filename {{% panel_with_adjustment header="Failure Response" class="language-json line-numbers"%}} { "status": 400, "code": "key_name_invalid", "message": "key name does not support one or more character(s)" } {{% /panel_with_adjustment %}} **409** Conflict. An object with the same name already exists {{% panel_with_adjustment header="Failure Response" class="language-json line-numbers"%}} { "status": 409, "code": "key_already_exists", "message": "key is already associated with another object in the bucket" } {{% /panel_with_adjustment %}} {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}} curl -X PUT https://{bucket_name}.zohostratus.com/{key} -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" {{% /panel_without_adjustment %}} {{% panel_with_adjustment header="Sample Response" class="language-bash line-numbers"%}} 200 OK {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} * {{%link href="/en/sdk/java/v1/cloud-scale/stratus/upload-object/"%}}Upload Object - Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/"%}}Upload Object - Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/stratus/upload-object/"%}}UploadObject - Python SDK{{%/link%}} * {{%link href="/en/sdk/web/v4/cloud-scale/stratus/overview/"%}}Upload - Web SDK{{%/link%}} * {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/upload-object/"%}}Upload - iOS SDK{{%/link%}} * {{%link href="/en/sdk/android/v2/cloud-scale/stratus/upload-object/"%}}Upload - Android SDK{{%/link%}} * {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/upload-object/"%}}Upload - Flutter SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Copy Object" description: "This API enables you to perform copy operations on an object stored in Stratus." last_updated: "2026-03-18T07:41:08.545Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/stratus/copy-object/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/stratus/copy-object/" id="CopyObject" %}} {{%divtag class="LeftContent"%}} # Copy Object ### Description This API allows you to copy the required {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}object{{%/link%}} stored in a bucket. The Bucket is referred by it {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique bucket name{{%/link%}}, and the required object is referred using its name. ### Request Details #### Request URL {{%request class="apired" req="POST" %}}<p>{api-domain}/baas/v1/project/{project_id}/bucket/object/copy</p>{{%/request%}} {{%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%}} #### Query Parameters {{% nested_fields children="open" border="yes" expandable="no" title="bucket_name" textformat="Alphanumeric" condition="mandatory" maxlength=" " %}}The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket"%}}name of the bucket{{%/link%}}{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="object_key" textformat="String" condition="mandatory" maxlength=" " %}}Will contain the complete name of the required object.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="destination" textformat="String" condition="mandatory" maxlength=" " %}}Will contain the location of where the object has to be copied to.{{% /nested_fields %}} #### 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.buckets.objects.CREATE {{%/scope%}} ### Response Details On successful execution, the response will contain the name of the copied object, the location of where it is copied to, and the success message confirming the copy action. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}} curl -X POST https://api.catalyst.zoho.com/baas/v1/project/10108000003823392/bucket/object/copy?bucket_name=myBucketName&object_key=mappedsample/Archive.zip&destination=mappedsample/Unarchive/ -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": { "object_key": "image2.png", "copy_to": "folder2/", "message": "Copy successful" } } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} * {{%link href="/en/sdk/java/v1/cloud-scale/stratus/rename-move-object/#move-an-object"%}}Move an Object - Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/rename-move-object/#move-an-object"%}}Move an Object - Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/stratus/rename-move-object/#move-an-object"%}}Move an Object - Python SDK{{%/link%}} * {{%link href="/en/sdk/web/v4/cloud-scale/stratus/overview/"%}}Stratus - Web SDK{{%/link%}} * {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/overview/"%}}Stratus - iOS SDK{{%/link%}} * {{%link href="/en/sdk/android/v2/cloud-scale/stratus/overview/"%}}Stratus - Android SDK{{%/link%}} * {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/overview/"%}}Stratus - Flutter SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Rename Object" description: "This API enables you to rename your object." last_updated: "2026-03-18T07:41:08.545Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/stratus/rename-object/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/stratus/rename-object/" id="RenameObject" %}} {{%divtag class="LeftContent"%}} # Rename Object ### Description This API allows you to rename the required {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}object{{%/link%}} stored in a bucket. The Bucket is referred by it {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique bucket name{{%/link%}}, and the required object is referred using its name. {{%note%}}{{%bold%}}Note:{{%/bold%}} The following characters including space are not supported when you create a path or an object: double quote, both angular brackets, hashtag, backward slash and pipe symbol.{{%/note%}} ### Request Details #### Request URL {{%request class="apiyellow" req="PATCH" %}}<p>{api-domain}/baas/v1/project/{project_id}/bucket/object</p>{{%/request%}} {{%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%}} #### Query Parameters {{% nested_fields children="open" border="yes" expandable="no" title="bucket_name" textformat="Alphanumeric" condition="mandatory" maxlength=" " %}}The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket"%}}name of the bucket{{%/link%}}{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="current_key" textformat="String" condition="mandatory" maxlength=" " %}}Will contain the complete name of the required object.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="rename_to" textformat="String" condition="mandatory" maxlength=" " %}}Will contain the new name of the object.{{% /nested_fields %}} #### 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.buckets.objects.UPDATE {{%/scope%}} ### Response Details On successful execution, the response will contain the previous name, modified name, and the success message confirming the rename action. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}} curl -X PATCH https://api.catalyst.zoho.com/baas/v1/project/10108000003823392/bucket/object/?bucket_name=myBucketName&current_key=image2.png&rename_to=renamed.png/ -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": { "current_key": "image2.png", "rename_to": "renamed.png", "message": "Rename successful" } } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} * {{%link href="/en/sdk/java/v1/cloud-scale/stratus/rename-move-object/"%}}Rename Object - Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/rename-move-object/"%}}Rename Object - Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/stratus/rename-move-object/"%}}Rename Object - Python SDK{{%/link%}} * {{%link href="/en/sdk/web/v4/cloud-scale/stratus/overview/"%}}Stratus - Web SDK{{%/link%}} * {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/overview/"%}}Stratus - iOS SDK{{%/link%}} * {{%link href="/en/sdk/android/v2/cloud-scale/stratus/overview/"%}}Stratus - Android SDK{{%/link%}} * {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/overview/"%}}Stratus - Flutter SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Put Object Metadata" description: "This API enables you to create a signature for the bucket." last_updated: "2026-03-18T07:41:08.545Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/stratus/put-object-meta/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/stratus/put-object-meta/" id="PutObjectMetadata" %}} {{%divtag class="LeftContent"%}} # Put Object Metadata ### Description This API allows you to add metadata for the required {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}object{{%/link%}} stored in a bucket. The Bucket is referred by it {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique bucket name{{%/link%}}, and the required object is referred using its name. {{%note%}}{{%bold%}}Note:{{%/bold%}} * You can use alphanumeric, underscores, or whitespace characters, as well as hyphens, to write your metadata. No other special character is allowed other than the once mentioned. * You can fetch the metadata of an object using the {{%badge%}}**HEAD**{{%/badge%}} request method. In the response, the metadata will be listed in the key '{{%badge%}}x-user-meta{{%/badge%}}'. * The maximum size limit of characters allowed for the overall metadata is **2047** characters. The character count used to determine the size limit also includes the colon ":" special character used to define the key value pair.{{%/note%}} ### Request Details #### Request URL {{%request class="apired" req="POST" %}}<p>{api-domain}/baas/v1/project/{project_id}/bucket/object/metadata</p>{{%/request%}} {{%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 JSON You must send a JSON with its corresponding values as shown below. {{% panel_with_adjustment header="Sample Payload" class="language-json line-numbers"%}} { "meta_data": { "key1": "value1", "key2": "value2" } } {{% /panel_with_adjustment %}} You will feed this **Request JSON** to your **Request Body**, and you need to provide the value of: {{% nested_fields children="open" border="yes" expandable="no" title="meta_data" textformat=" " condition="mandatory" maxlength=" " %}} This JSON will contain the required {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#metadata" %}}meta data{{%/link%}} in the form of JSON key valkue pairs.{{% /nested_fields %}} #### Query Parameters {{% nested_fields children="open" border="yes" expandable="no" title="bucket_name" textformat="Alphanumeric" condition="mandatory" maxlength=" " %}}The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket"%}}name of the bucket{{%/link%}}{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="object_key" textformat="String" condition="mandatory" maxlength=" " %}}Will contain the complete name of the object.{{% /nested_fields %}} #### 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.buckets.objects.CREATE {{%/scope%}} ### Response Details On successful execution, the response will contain the success message indicating that the metada has been added to the required object. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}} curl -X PUT https://api.catalyst.zoho.com/baas/v1/project/10108000003823392/bucket/object/metadata?bucket_name=myBucketName&object_key=image2.png/ -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" -H “Content-Type:application/json” -\-data-raw $’{"{"meta_data" : {"key1" : "value1","key2" : "value2"}}"}' {{% /panel_without_adjustment %}} {{% panel_with_adjustment header="Sample Response" class="language-json line-numbers"%}} { "status": "success", "data": { "message": "Metadata added successfully" } } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} * {{%link href="/en/sdk/java/v1/cloud-scale/stratus/put-object-meta/"%}}Put Object Meta Data - Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/put-object-meta/"%}}Put Object Meta Data - Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/stratus/put-object-meta/"%}}Put Object Meta Data - Python SDK{{%/link%}} * {{%link href="/en/sdk/web/v4/cloud-scale/stratus/overview/"%}}Stratus - Web SDK{{%/link%}} * {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/overview/"%}}Stratus - iOS SDK{{%/link%}} * {{%link href="/en/sdk/android/v2/cloud-scale/stratus/overview/"%}}Stratus - Android SDK{{%/link%}} * {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/overview/"%}}Stratus - Flutter SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Extract Zipped Object" description: "This API enables you to extract a zipped object in Stratus." last_updated: "2026-03-18T07:41:08.546Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/stratus/extract-object/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/stratus/extract-object/" id="ExtractZippedObject" %}} {{%divtag class="LeftContent"%}} # Extract Zipped Object ### Description This API allows you to extract a zipped {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}object{{%/link%}} stored in a bucket. The Bucket is referred by it {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique bucket name{{%/link%}}, and the required object is referred using its name. ### Request Details #### Request URL {{%request class="apired" req="POST" %}}<p>{api-domain}/baas/v1/project/{project_id}/bucket/object/zip-extract</p>{{%/request%}} {{%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%}} #### Query Parameters {{% nested_fields children="open" border="yes" expandable="no" title="bucket_name" textformat="Alphanumeric" condition="mandatory" maxlength=" " %}}The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket"%}}name of the bucket{{%/link%}}{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="object_key" textformat="String" condition="mandatory" maxlength=" " %}}Will contain the complete name of the required zipped object.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="destination" textformat="String" condition="mandatory" maxlength=" " %}}Will contain the complete name of the destination path in the bucket where the extracted objects need to be stored.{{% /nested_fields %}} #### 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.buckets.objects.CREATE {{%/scope%}} ### Response Details On successful execution, the response will contain the name of the zipped object, the complete path name that has stored the extracted objects, and the success message confirming the extract action. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}} curl -X POST https://api.catalyst.zoho.com/baas/v1/project/10108000003823392/bucket/object/zip-extract?bucket_name=mybucketname&object_key=image2.png&destination=folder2/ -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": { "object_key": "image2.png", "destination": "folder2", "message": "Zip extract scheduled", "task_id": "hh2odww2334nsodno24" } } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} * {{%link href="/en/sdk/java/v1/cloud-scale/stratus/extract-zipped-object/"%}}Extract a Zipped Object - Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/extract-zipped-object/"%}}Extract a Zipped Object - Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/stratus/extract-zipped-object/"%}}Extract a Zipped Object - Python SDK{{%/link%}} * {{%link href="/en/sdk/web/v4/cloud-scale/stratus/overview/"%}}Stratus - Web SDK{{%/link%}} * {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/overview/"%}}Stratus - iOS SDK{{%/link%}} * {{%link href="/en/sdk/android/v2/cloud-scale/stratus/overview/"%}}Stratus - Android SDK{{%/link%}} * {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/overview/"%}}Stratus - Flutter SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Get Status of Zip Extract Operation" description: "This API enables you to get the status of an extract operation being performed on a zipped object in Stratus." last_updated: "2026-03-18T07:41:08.546Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/stratus/get-extract-status/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/stratus/get-extract-status/" id="GetStatusofZipExtractOperation" %}} {{%divtag class="LeftContent"%}} # Get Status of Zip Extract Operation ### Description This API allows you to get the status of an extract operation that is being performed on a zipped object stored in a bucket. The Bucket is referred by it {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique bucket name{{%/link%}}, and the required object is referred using its name. {{%note%}}{{%bold%}}Note:{{%/bold%}} Refer to the {{%link href="/en/api/code-reference/cloud-scale/stratus/extract-object#ExtractZippedObject" %}}Extract Zipped Object API{{%/link%}} to perfrom extract operation on a zipped object.{{%/note%}} ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/baas/v1/project/{project_id}/bucket/object/zip-extract/{taskId}</p>{{%/request%}} {{%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="task_Id" data="String" %}}The value will be returned in the response while executing the {{%link href="/en/api/code-reference/cloud-scale/stratus/extract-object#ExtractZippedObject" %}}Extract Zipped Object API{{%/link%}}. This id will allow you refer to the required extraction process.{{%/request_id%}} #### Query Parameters {{% nested_fields children="open" border="yes" expandable="no" title="bucket_name" textformat="Alphanumeric" condition="mandatory" maxlength=" " %}}The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket"%}}name of the bucket{{%/link%}}{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="object_key" textformat="String" condition="mandatory" maxlength=" " %}}Will contain the complete name of the required zipped object.{{% /nested_fields %}} #### 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.buckets.objects.READ {{%/scope%}} ### Response Details On successful execution, the response will contain the status of the required extraction process being performed on a zipped object in Stratus. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}} curl -X GET https://api.catalyst.zoho.com/baas/v1/project/10108000003823392/bucket/object/zip-extract/hh2odww2334nsodno24?bucket_name=mybucketname&object_key=image2.png/ -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": { "task_status": "PENDING | COMPLETED | FAILED" } } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} * {{%link href="/en/sdk/java/v1/cloud-scale/stratus/extract-zipped-object/#get-zip-extraction-status"%}}Get Zip Extraction Status - Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/extract-zipped-object/#get-zip-extraction-status"%}}Get Zip Extraction Status - Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/stratus/extract-zipped-object/#get-zip-extraction-status"%}}Get Zip Extraction Status - Python SDK{{%/link%}} * {{%link href="/en/sdk/web/v4/cloud-scale/stratus/overview/"%}}Stratus - Web SDK{{%/link%}} * {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/overview/"%}}Stratus - iOS SDK{{%/link%}} * {{%link href="/en/sdk/android/v2/cloud-scale/stratus/overview/"%}}Stratus - Android SDK{{%/link%}} * {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/overview/"%}}Stratus - Flutter SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Create Signature for Bucket" description: "This API enables you to create a signature for the bucket." last_updated: "2026-03-18T07:41:08.546Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/stratus/create-sign-bucket/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/stratus/create-sign-bucket/" id="CreateSignatureforBucket" %}} {{%divtag class="LeftContent"%}} # Create Signature for Bucket ### Description This API allows you to create a signature for the required bucket. The Bucket is referred by it {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique bucket name{{%/link%}}. ### Request Details #### Request URL {{%request class="apired" req="POST" %}}<p>{api-domain}/baas/v1/project/{project_id}/bucket/signature</p>{{%/request%}} {{%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%}} #### Query Parameters {{% nested_fields children="open" border="yes" expandable="no" title="bucket_name" textformat="Alphanumeric" condition="mandatory" maxlength=" " %}}The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket"%}}name of the bucket{{%/link%}}{{% /nested_fields %}} #### 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.buckets.objects.CREATE {{%/scope%}} ### Response Details On successful execution, the response will contain the required signature of the bucket along with its validity time period. {{%/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/bucket/signature?bucket_name=zylker-bucket\ -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": { "signature": "stsPolicy=eyJzaWduaW5ndGltZSI6MTcyMTk3NDc1NDQ1MiwiZXhwaXJhdGlvbiI6MzYwMCwiYWN0aW9uIjpbIkdldE9iamVjdCIsIlB1dE9iamVjdCJdLCJjcmVkZW50aWFscyI6IjY3MjUxNjQ0LTg1NDM1OTI2IiwicmVzb3VyY2UiOlsic3JuOjo6dGVzdGRzZHMtZGV2ZWxvcG1lbnQvKiJdLCJxdWVyeSI6W10sImhlYWRlcnMiOltdLCJib2R5Ijp7ImNvbnRlbnQtdHlwZSI6IioiLCJjb250ZW50LWxlbmd0aCI6bnVsbH19&stsSignature=Nyr29x7N-CzDSfFaTzzPnwWsL74ga9rIGZJIxWFdNtI", "expiry_time": 1786382487000 } } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} * {{%link href="/en/sdk/java/v1/cloud-scale/stratus/pre-signed-urls/"%}}Generate Presigned URL - Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/pre-signed-urls/"%}}Generate Presigned URL - Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/stratus/pre-signed-urls/"%}}Generate Presigned URL - Python SDK{{%/link%}} * {{%link href="/en/sdk/web/v4/cloud-scale/stratus/overview/"%}}Stratus - Web SDK{{%/link%}} * {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/overview/"%}}Stratus - iOS SDK{{%/link%}} * {{%link href="/en/sdk/android/v2/cloud-scale/stratus/overview/"%}}Stratus - Android SDK{{%/link%}} * {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/overview/"%}}Stratus - Flutter SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Get Presigned URL" description: "This API enables you to get presigned urls. You can share this URL to other users and they will be able to securely perform download and upload actions." last_updated: "2026-03-18T07:41:08.546Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/stratus/get-presigned-url/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/stratus/get-presigned-url/" id="GetPresignedURL" %}} {{%divtag class="LeftContent"%}} # Get Presigned URL ### Description This API allows you to get presigned urls. Presigned URLs are secure URLs that authenticated users can share to their non-authenticated users. This URL will provide non-authenticated users with temporary authorization to access objects. Once the link is expired, you need to the sign the required URL again using this API. {{%note%}}{{%bold%}}Note:{{%/bold%}} There are different request methods for upload action and download action.{{%/note%}} ### Request Details #### Request URL for Upload Action {{%request class="apired" req="PUT" %}}<p>{api-domain}/baas/v1/project/{project_id}/bucket/object/signed-url</p>{{%/request%}} #### Request URL for Download Action {{%request class="apigreen" req="GET" %}}<p>{api-domain}/baas/v1/project/{project_id}/bucket/object/signed-url</p>{{%/request%}} {{%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%}} #### Query Parameters {{% nested_fields children="open" border="yes" expandable="no" title="bucket_name" textformat="Alphanumeric" condition="mandatory" maxlength=" " %}}The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket"%}}name of the bucket{{%/link%}}{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="object_key" textformat="String" condition="mandatory" maxlength=" " %}}Will contain the complete name of the required object.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="expiry_in_seconds" textformat="Number" condition="optional" maxlength=" " %}}Will contain the timelimit in seconds. Once this limit has been reached the presigned url cannot be used. The dedault value is {{%badge%}}3600{{%/badge%}}{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="active_from" textformat="Timestamp" condition="optional" maxlength=" " %}}Will contain the timestamp of from when the presigned url is active onwards.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="version_id" textformat="String" condition="optional" maxlength=" " %}}This param can only be used for the {{%badge%}}{{%bold%}}GET{{%/bold%}}{{%/badge%}} request URL. Will contain the {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}version ID{{%/link%}}{{% /nested_fields %}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%/scope%}} **Optional Headers** <br> {{%scope%}} **CATALYST-ORG:** {org_id} {{%/scope%}} {{%scope%}} **Environment:** Development {{%/scope%}} #### Scope For Download {{%scope%}} ZohoCatalyst.buckets.objects.READ {{%/scope%}} #### Scope For Upload {{%scope%}} ZohoCatalyst.buckets.objects.CREATE {{%/scope%}} ### Response Details On successful execution, the response will contain presigned URL. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request For Download Action" class="language-bash" %}} curl -X GET https://api.catalyst.zoho.com/baas/v1/project/10108000003823392/bucket/object/signed-url?bucket_name=myBucketName&object_key=object.pdf&expiry_in_seconds=3600&active_from=1716382375000&version_id=bs22sb2923ey2hds929/ -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" {{% /panel_without_adjustment %}} {{% panel_without_adjustment header="Sample Request For Upload Action" class="language-bash" %}} curl -X PUT https://api.catalyst.zoho.com/baas/v1/project/10108000003823392/bucket/object/signed-url?bucket_name=myBucketName&object_key=object.pdf&expiry_in_seconds=3600&active_from=1716382375000/ -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": { "signature": "https://mybucket.nimbuspop.com/folder1/folder2/image.jpeg?expires=1642915027000&signature=MEYCIQCcJDTsmZQhfuvFu3l3tsVL02uVwIMhLdlSg~ARI3E1aAIhAJ-rzzjn2gPH9pB3EoU3X~v~qvg5Rdt9OBoldBpVz6xt&key-id=vMUWDURn5DGtokPG", "expires_in_seconds": 300, "active_from": 1716382487000 } } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} * {{%link href="/en/sdk/java/v1/cloud-scale/stratus/pre-signed-urls/"%}}Generate Presigned URL - Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/pre-signed-urls/"%}}Generate Presigned URL - Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/stratus/pre-signed-urls/"%}}Generate Presigned URL - Python SDK{{%/link%}} * {{%link href="/en/sdk/web/v4/cloud-scale/stratus/overview/"%}}Stratus - Web SDK{{%/link%}} * {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/overview/"%}}Stratus - iOS SDK{{%/link%}} * {{%link href="/en/sdk/android/v2/cloud-scale/stratus/overview/"%}}Stratus - Android SDK{{%/link%}} * {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/overview/"%}}Stratus - Flutter SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Delete Object" description: "This API enables you to perform delete operation on objects stored in Stratus." last_updated: "2026-03-18T07:41:08.546Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/stratus/delete-objects/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/stratus/delete-objects/" id="DeleteObject" %}} {{%divtag class="LeftContent"%}} # Delete Object ### Description This API allows you to delete the required {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}object{{%/link%}} stored in a bucket. The Bucket is referred by it {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique bucket name{{%/link%}}, and the required object is referred using its name. ### Request Details #### Request URL {{%request class="apired" req="PUT" %}}<p>{api-domain}/baas/v1/project/{project_id}/bucket/object/</p>{{%/request%}} {{%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%}} #### Query Parameters {{% nested_fields children="open" border="yes" expandable="no" title="bucket_name" textformat="Alphanumeric" condition="mandatory" maxlength=" " %}}The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket"%}}name of the bucket{{%/link%}}{{% /nested_fields %}} #### Request JSON You must send a JSON with its corresponding values as shown below. {{% panel_with_adjustment header="Sample Payload" class="language-json line-numbers"%}} { "objects": [ { "key": "file1.jpeg", "version_id": "{version_id}" }, { "key": "file2.jpeg" }, { "key": "file3.jpeg" } ], "ttl_in_seconds": 100 } {{% /panel_with_adjustment %}} You will feed this **Request JSON** to your **Request Body**, and you need to provide the value of: {{% nested_fields children="open" border="yes" expandable="no" title="key" textformat=" " condition="mandatory" maxlength=" " %}} This JSON key will contain the required object's name that needs to be deleted.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="ttl_in_seconds" textformat="Number" condition="optional" maxlength=" " %}} This JSON key will contain time in seconds. Once the {{%badge%}}ttl_in_seconds{{%/badge%}} is reached the delete operation will be carried out.{{% /nested_fields %}} #### 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.buckets.objects.DELETE {{%/scope%}} ### Response Details On successful execution, the response will contain the success message confirming the delete operation was successful. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}} curl -X PUT https://api.catalyst.zoho.com/baas/v1/project/10108000003823392/bucket/object?bucket_name=zylker-bucket/ -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" -H “Content-Type:application/json” -\-data-raw $’{“"status": "success","data":{"message": "Deletion successful"}"}' {{% /panel_without_adjustment %}} {{% panel_with_adjustment header="Sample Response" class="language-json line-numbers"%}} { "status": "success", "data": { "message": "Deletion successful" } } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} * {{%link href="/en/sdk/java/v1/cloud-scale/stratus/delete-objects/"%}}Delete Objects - Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/"%}}Delete Objects - Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/stratus/delete-objects/"%}}Delete Objects - Python SDK{{%/link%}} * {{%link href="/en/sdk/web/v4/cloud-scale/stratus/delete-object/"%}}Delete Objects - Web SDK{{%/link%}} * {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/delete-object/"%}}Delete Objects - iOS SDK{{%/link%}} * {{%link href="/en/sdk/android/v2/cloud-scale/stratus/delete-object/"%}}Delete Objects - Android SDK{{%/link%}} * {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/delete-object/"%}}Delete Objects - Flutter SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Delete Path" description: "This API enables you to perform delete operation on an entire path in Stratus." last_updated: "2026-03-18T07:41:08.546Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/cloud-scale/stratus/delete-path/" service: "Cloud Scale" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/cloud-scale/stratus/delete-path/" id="DeletePath" %}} {{%divtag class="LeftContent"%}} # Delete Path ### Description This API allows you to delete an entire path and every object stored in that path in a bucket. The Bucket is referred by it {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique bucket name{{%/link%}}. ### Request Details #### Request URL {{%request class="apired" req="DELETE" %}}<p>{api-domain}/baas/v1/project/{project_id}/bucket/object/prefix</p>{{%/request%}} {{%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%}} #### Query Parameters {{% nested_fields children="open" border="yes" expandable="no" title="bucket_name" textformat="Alphanumeric" condition="mandatory" maxlength=" " %}}The {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket"%}}name of the bucket{{%/link%}}{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="prefix" textformat="String" condition="mandatory" maxlength=" " %}}Will contain the prefix of the path that needs to be deleted.{{% /nested_fields %}} #### 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.buckets.objects.DELETE {{%/scope%}} ### Response Details On successful execution, the response will contain the success message confirming the delete operation was successful. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}} curl -X DELETE https://api.catalyst.zoho.com/baas/v1/project/10108000003823392/bucket/object/prefix?bucket_name=zylker-bucket&prefix=myfolder/ -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": { "prefix": "myfolder/", "message": "Deletion successful" } } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} * {{%link href="/en/sdk/java/v1/cloud-scale/stratus/delete-objects/#delete-a-path-in-the-bucket"%}}Delete Path - Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/#delete-a-path-in-the-bucket"%}}Delete Path - Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/cloud-scale/stratus/delete-objects/#delete-a-path-in-the-bucket"%}}Delete Path - Python SDK{{%/link%}} * {{%link href="/en/sdk/web/v4/cloud-scale/stratus/delete-object/"%}}Delete Objects - Web SDK{{%/link%}} * {{%link href="/en/sdk/ios/v2/cloud-scale/stratus/delete-path/"%}}Delete Path - iOS SDK{{%/link%}} * {{%link href="/en/sdk/android/v2/cloud-scale/stratus/delete-path/"%}}Delete Path - Android SDK{{%/link%}} * {{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/delete-path/"%}}Delete Path - Flutter SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} --- ## SDK — Android — Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page provides an overview of the mobile SDK methods required to perform Stratus operations." last_updated: "2026-03-18T07:41:08.551Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/stratus/overview/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/overview/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Overview Cloud Scale {{%link href="/en/cloud-scale/help/stratus/introduction" %}}Stratus{{%/link%}} is Catalyst's robust and powerful storage solution. You can store data of any format in the form of {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}Objects{{%/link%}} in containers called {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}}. Each Bucket and every individual object in the bucket has a secure {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} and {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/#bucket-url" %}}Bucket URL{{%/link%}}. You can perform upload and download operations on objects and even provide {{%link href="/en/cloud-scale/help/stratus/stratus-permissions/#custom-permissions" %}}custom permissions{{%/link%}} for each object. The following table contains the list of all the Catalyst SDKs that can be used to perform Stratus operations through code. <table class="content-table"> <thead> <tr> <th class="w30p">Category</th> <th class="w70p">SDK Method</th> </tr> </thead> <tbody> <tr> <td>General Stratus Operations</td> <td>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/" %}}Create Bucket Instance{{%/link%}}</td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/get-object/" %}}Get Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/get-object/#get-all-objects" %}}Get All Objects{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/download-object/" %}}Download an Object{{%/link%}}</li> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/upload-object/" %}}Upload Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/upload-object/#upload-an-object-using-file-path-and-name" %}}Upload an Object Using File Path and Name{{%/link%}}</li> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/upload-object/#upload-an-object-using-file-path" %}}Upload an Object Using File Path{{%/link%}}</li> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/upload-object/#upload-an-object-using-inputstream-and-file-name" %}}Upload an Object Using InputStream and File Name{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/delete-object/" %}}Delete Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/delete-object/#delete-a-single-object" %}}Delete a Single Object{{%/link%}}</li> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/delete-object/#delete-multiple-objects" %}}Delete Multiple Objects{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/android/v2/cloud-scale/stratus/delete-path/" %}}Delete Path{{%/link%}}</li> </ul> </td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Create Bucket Instance" description: "This page lists the Android SDK method to create a bucket instance." last_updated: "2026-03-18T07:41:08.552Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/#initialize-bucket-instance) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/initialize-stratus/#create-bucket-instance) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Bucket Instance To perform bucket level operations, you need to initialize a bucket instance. We will refer to this component instance in various code snippets of working with {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}} in Stratus. {{%code class="language-bash"%}}var bucket = ZCatalystStratus.getBucketInstance("{bucket_name}"){{%/code%}} -------------------------------------------------------------------------------- title: "Get Object" description: "This page lists the Android SDK method to get an object or objects from the bucket." last_updated: "2026-03-18T07:41:08.552Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/stratus/get-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/get-objects/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/get-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/get-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/get-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/get-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/get-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-objects/#GetAllObjects) -------------------------------------------------------------------------------- # Get Object This SDK method can be used to get an object from the bucket. The response will be in **blob** format. When {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for the bucket: * If you do not pass the {{%badge%}}versionId{{%/badge%}}, then only the **latest object** will be returned. * To retrieve a specific version, use the {{%badge%}}versionId{{%/badge%}} query parameter with a valid version as a value. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w30p">Parameter Name</th> <th class="w70p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}name{{%/badge%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the object name.</td> </tr> <tr> <td>{{%badge%}}versionId{{%/badge%}}</td> <td>An {{%bold%}}optional{{%/bold%}} parameter. Will hold the unique version ID of the required object's version.</td> </tr> </tbody> </table> {{%code class="language-bash"%}}bucketInstance.getObject("{object_name}", "{version_id}", { object -> println("The name of the object is : ${object.name}") }, { exception -> println("Get object failed! $exception") } ){{%/code%}} ### Get All Objects This SDK method can be used to get all the objects present in the bucket using pagination technique. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}prefix{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. This will get the objects that match the prefix value.</td> </tr> <tr> <td>{{%badge%}}max_keys{{%/badge%}}</td> <td>{{%bold%}}Number{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. Will contain the maximum limit of objects that can be listed by pagination.</td> </tr> <tr> <td>{{%badge%}}continuation_token{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If the response was truncated, the value of this key must be passed as {{%badge%}}continuation_token{{%/badge%}} to the same method for retrieving the next set of objects.</td> </tr> </tbody> </table> {{%code class="language-bash"%}}bucketInstance.getObjects({max_keys}, {continuation_token}, {prefix}, { objects -> for (obj in objects){ println("Object name: ${obj.name}") } }, { exception -> println("Get objects failed! $exception") } ){{%/code%}} -------------------------------------------------------------------------------- title: "Download Object" description: "This page lists the Android SDK methods to download an object to the bucket." last_updated: "2026-03-18T07:41:08.552Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/stratus/download-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Download an Object (/en/cloud-scale/help/stratus/objects/manage-object/download-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/range-download/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/range-download/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/range-download/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/range-download/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/download-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/download-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/upload-object/#DownloadObject) -------------------------------------------------------------------------------- # Download an Object This SDK method will allow you to download the object. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}versionId{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}optional{{%/bold%}} parameter. Will hold the unique version ID of the required object's version.</td> </tr> <tr> <td>{{%badge%}}fromCache{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To be used to specify whether this file has to be retrieved from the cache or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> </tbody> </table> {{%code class="language-bash"%}}bucketInstance.getObject("SunSet.jpeg", "2823000000044005", //Replace this with your Object Name and Object ID { object -> object.download( { println("File download success ${it.available()}") }, { println("File download failed $it") } ) }{{%/code%}} -------------------------------------------------------------------------------- title: "Upload Object" description: "This page lists the Android SDK methods to upload an object to the bucket." last_updated: "2026-03-18T07:41:08.552Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/stratus/upload-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Upload Object Help Documentation (/en/cloud-scale/help/stratus/objects/upload-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/upload-object/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/upload-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/upload-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/upload-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/upload-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/upload-object/#UploadObject) -------------------------------------------------------------------------------- # Upload Object The SDK method listed in this section will allow you to {{%link href="/en/cloud-scale/help/stratus/objects/upload-object/" %}}upload objects{{%/link%}} to the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}bucket{{%/link%}} If you do not have {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} enabled for your object, and if Stratus gets multiple write requests for the same object, the object will be continuously overwritten. The latest upload of the object will be the only object that is stored. However, with Versioning enabled, each upload will be considered a version of the object, and all of them will be stored in the bucket, each with a unique {{%badge%}}versionId{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} The following characters including space are not supported when you create a path or an object: double quote, both angular brackets, hashtag, backward slash and pipe symbol.{{%/note%}} ### Upload an Object Using File Path and Name This SDK can be used to upload an object to the bucket using its complete name and {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}filePath{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the complete path of the location from where the file needs to be uploaded from.</td> </tr> <tr> <td>{{%badge%}}fileName{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}mandatory{{%/bold%}} parameter. Will hold the complete name of the object.</li> <li>{{%bold%}}Default Value{{%/bold%}}: Will hold the value of the last path value that was used.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}shouldCompress{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}progress{{%/badge%}}</td> <td>{{%bold%}}Function{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. This is a callback function while uploading a file.</li> </ul> </td> </tr> </tbody> </table> {{%code class="language-bash"%}}bucketIntance.uploadObject("/Desktop", "Helplinecard.jpeg", true, { println(" >> Object Upload Success -$it") }, { println(" >> Object Upload Failed -$it") }, progress = { bytesWritten, contentLength, percentage -> println("Percentage: $percentage") } ){{%/code%}} ### Upload an Object Using File Path This SDK can be used to upload an object to the bucket using its complete {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}filePath{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the complete path of the location from where the file needs to be uploaded from.</td> </tr> <tr> <td>{{%badge%}}shouldCompress{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}progress{{%/badge%}}</td> <td>{{%bold%}}Function{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. This is a callback function while uploading a file.</li> </ul> </td> </tr> </tbody> </table> {{%code class="language-bash"%}}bucketIntance.uploadObject("/Desktop", "Helplinecard.jpeg", true, { println(" >> Object Upload Success -$it") }, { println(" >> Object Upload Failed -$it") }, progress = { bytesWritten, contentLength, percentage -> println("Percentage: $percentage") } ){{%/code%}} ### Upload an Object Using InputStream and File Name This SDK can be used to upload an object to the bucket using its file name and an input stream of the object to be uploaded. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}stream{{%/badge%}}</td> <td>{{%bold%}}InputStream{{%/bold%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the input stream of the object that needs to be uploaded.</td> </tr> <tr> <td>{{%badge%}}fileName{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}mandatory{{%/bold%}} parameter. Will hold the complete name of the object.</li> <li>{{%bold%}}Default Value{{%/bold%}}: Will hold the value of the last path value that was used.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}shouldCompress{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}progress{{%/badge%}}</td> <td>{{%bold%}}Function{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. This is a callback function while uploading a file.</li> </ul> </td> </tr> </tbody> </table> {{%code class="language-bash"%}}val file = File("/Desktop/HelplineCard.jpg") val inputStream: InputStream = FileInputStream(file) bucketIntance.uploadObject(inputSrream, "Helplinecard.jpeg", true, { println(" >> Object Upload Success -$it") }, { println(" >> Object Upload Failed -$it") }, progress = { bytesWritten, contentLength, percentage -> println("Percentage: $percentage") } ){{%/code%}} -------------------------------------------------------------------------------- title: "Delete Object" description: "This page lists the Android SDK methods to delete an object or objects from the bucket." last_updated: "2026-03-18T07:41:08.553Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/stratus/delete-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Delete an Object Help Documentation (/en/cloud-scale/help/stratus/objects/manage-object/delete-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/delete-objects/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/delete-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/delete-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/delete-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/delete-objects/#DeleteObject) -------------------------------------------------------------------------------- # Delete Object ### Delete a Single Object The following SDK method can be used to delete a single object from the bucket. {{%code class="language-bash"%}}bucketInstance.getObject("SunSet.jpeg", "2823000000044005", //Replace this with your Object Name and Object ID { object -> object.delete( { println("Object Deletion Success.") }, { println("Failed to delete the object. $it") } ){{%/code%}} ### Delete Multiple Objects The following SDK method can be used to delete multiple objects from the bucket. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w30p">Data Type</th> <th class="w50p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}objects{{%/badge%}}</td> <td>{{%bold%}}ArrayList&lt;ZCatalystObject&gt;{{%/bold%}}</td> <td>An array containing the list of objects (and version IDs, if {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for the bucket) that needs to be deleted.</td> </tr> </tbody> </table> {{%code class="language-bash"%}}bucketInstance.getObjects( success = { objects, resInfo -> bucketInstance.deleteObjects(objects, { println("DELETE BULK OBJECTS : SUCCESS"), }, { println("Delete Objects Failed: $it") } ){{%/code%}} -------------------------------------------------------------------------------- title: "Delete Path" description: "This page lists the Android SDK methods to delete an entire path along with its objects from the bucket." last_updated: "2026-03-18T07:41:08.553Z" source: "https://docs.catalyst.zoho.com/en/sdk/android/v2/cloud-scale/stratus/delete-path/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Delete an Object Help Documentation (/en/cloud-scale/help/stratus/objects/manage-object/delete-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/delete-objects/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/delete-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/delete-path/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/delete-path/) - REST API (/en/api/code-reference/cloud-scale/stratus/delete-path/#DeletePath) -------------------------------------------------------------------------------- # Delete Path The following SDK method can be used to delete all the objects present in the specified {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}path{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the complete path of where the file should be uploaded.</td> </tr> </tbody> </table> {{%code class="language-bash"%}}bucketInstance.deletePath("myFolder/", { println("Objects deleted successfully.") }, { println("Failed to delete the objects - $it") } ){{%/code%}} --- ## SDK — Flutter — Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page provides an overview of the mobile SDK methods required to perform Stratus operations." last_updated: "2026-03-18T07:41:08.554Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/stratus/overview/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/overview/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Overview Cloud Scale {{%link href="/en/cloud-scale/help/stratus/introduction" %}}Stratus{{%/link%}} is Catalyst's robust and powerful storage solution. You can store data of any format in the form of {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}Objects{{%/link%}} in containers called {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}}. Each Bucket and every individual object in the bucket has a secure {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} and {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/#bucket-url" %}}Bucket URL{{%/link%}}. You can perform upload and download operations on objects and even provide {{%link href="/en/cloud-scale/help/stratus/stratus-permissions/#custom-permissions" %}}custom permissions{{%/link%}} for each object. The following table contains the list of all the Catalyst SDKs that can be used to perform Stratus operations through code. <table class="content-table"> <thead> <tr> <th class="w30p">Category</th> <th class="w70p">SDK Method</th> </tr> </thead> <tbody> <tr> <td>General Stratus Operations</td> <td> <ul> <li>{{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/initialize-stratus/" %}}Initialize Stratus{{%/link%}} <ul> <li>{{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/initialize-stratus/#initialize-bucket-instance" %}}Initialize Bucket Instance{{%/link%}}</li> </ul> </li> </ul> </td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>{{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/get-object/" %}}Get Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/get-object/#get-all-objects" %}}Get All Objects{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/download-object/" %}}Download Object{{%/link%}}</li> <li>{{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/upload-object/" %}}Upload Object{{%/link%}}</li> <li>{{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/delete-object/" %}}Delete Object{{%/link%}}</li> <li>{{%link href="/en/sdk/flutter/v2/cloud-scale/stratus/delete-path/" %}}Delete Path{{%/link%}}</li> </ul> </td> </tr> </tbody> </table> {{%note%}}{{%bold%}}Note:{{%/bold%}} All the SDK methods in this section will return multiple data using Dart's new feature called {{%link href="https://dart.dev/language/records" %}}{{%bold%}}Records{{%/bold%}}{{%/link%}}. To use this feature, you need to have Dart {{%badge%}}v3.0{{%/badge%}} or above.{{%/note%}} -------------------------------------------------------------------------------- title: "Initialize Stratus" description: "This page lists the Flutter SDK method to create a bucket instance." last_updated: "2026-03-18T07:41:08.555Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/stratus/initialize-stratus/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/create-stratus-instance/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-stratus-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-stratus-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Initialize Stratus You can get the {{%badge%}}stratus{{%/badge%}} component reference as shown below. This will not fire a server-side call. We will refer to this component instance in various code snippets of working with Stratus. {{%code class="language-javascript"%}}ZCatalystStratus stratus = ZCatalystApp.getInstance().stratus{{%/code%}} ### Initialize Bucket Instance To perform bucket level operations, you need to initialize a bucket instance. We will refer to this component instance in various code snippets of working with {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}} in Stratus. {{%code class="language-javascript"%}}ZCatalystBucket bucket = stratus.bucket("{bucket_name}"){{%/code%}} -------------------------------------------------------------------------------- title: "Get Object" description: "This page lists the Flutter SDK method to get an object or objects from the bucket." last_updated: "2026-03-18T07:41:08.555Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/stratus/get-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/get-objects/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/get-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/get-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/get-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/get-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-objects/#GetAllObjects) -------------------------------------------------------------------------------- # Get Object This SDK method can be used to get an object from the bucket. The response will be in **blob** format. When {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for the bucket: * If you do not pass the {{%badge%}}versionId{{%/badge%}}, then only the **latest object** will be returned. * To retrieve a specific version, use the {{%badge%}}versionId{{%/badge%}} query parameter with a valid version as a value. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}name{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will hold the name of the object.</td> </tr> <tr> <td>{{%badge%}}versionId{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}optional{{%/bold%}} parameter. Will hold the unique version ID of the required object's version.</td> </tr> </tbody> </table> {{%code class="language-javascript"%}}try { ZCatalystBucket bucket = stratus.bucket("testing"); var (response, object) = await bucket.getObject("SunSet.jpeg", "01hter85pvexb8s2s2842rpswh"); print('Object Name : ${object.name}'); } on ZCatalystException catch (ex) { print(ex.toString()); }{{%/code%}} ### Get All Objects This SDK method can be used to get all the objects present in the bucket using pagination technique. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}prefix{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. This will get the objects that match the prefix value.</td> </tr> <tr> <td>{{%badge%}}maxKeys{{%/badge%}}</td> <td>{{%bold%}}Number{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. Will contain the maximum limit of objects that can be listed by pagination.</td> </tr> <tr> <td>{{%badge%}}continuationToken{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If the response was truncated, the value of this key must be passed as {{%badge%}}continuationToken{{%/badge%}} to the same method for retrieving the next set of objects.</td> </tr> </tbody> </table> {{%code class="language-javascript"%}}try { ZCatalystBucket bucket = app.stratus.bucket("testing"); var (response, objects, resInfo) = await bucket.getObjects(maxKeys: 5); for (var object in objects) { print('Object Name : ${object.name}'); } print('Res Info MaxKeys:${resInfo.maxKeys}'); print('\n\n'); } on ZCatalystException catch (ex) { print(ex.toString()); }{{%/code%}} -------------------------------------------------------------------------------- title: "Download Object" description: "This page lists the Flutter SDK methods to download an object to the bucket." last_updated: "2026-03-18T07:41:08.555Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/stratus/download-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Download an Object (/en/cloud-scale/help/stratus/objects/manage-object/download-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/range-download/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/range-download/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/range-download/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/range-download/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/download-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/download-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/upload-object/#DownloadObject) -------------------------------------------------------------------------------- # Download Object This SDK method will allow you to download the object. The operation will retuen an input stream. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}pathToDownload{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will hold the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}} where the object needs to be downloaded.</td> </tr> <tr> <td>{{%badge%}}newObjectName{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}optional{{%/bold%}} parameter. Will hold the name of the object that you provide while being downloaded. If you do not provide this value, then the object will be downloaded by its original name.</td> </tr> <tr> <td>{{%badge%}}versionId{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}optional{{%/bold%}} parameter. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for the bucket, it will hold the unique version ID of the required object's version.</td> </tr> <tr> <td>{{%badge%}}fromCache{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To be used to specify whether this file has to be retrieved from the cache or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}progress{{%/badge%}}</td> <td>{{%bold%}}Function(int, int, Double)?{{%/bold%}}</td> <td>A callback function that can provide progess information about the object download</td> </tr> </tbody> </table> {{%code class="language-javascript"%}}try { ZCatalystBucket bucket = stratus.bucket("testing"); var (response, object) = await bucket.getObject("SunSet.jpeg"); final downloadsDir = await getExternalStorageDirectory(); final filePath = downloadsDir!.absolute.path; var fileResponse = await object.download( pathToDownload: filePath, onProgress: (bytesWritten, contentLength, percentage) { print("Downloaded Percentage: $percentage"); }, ); print("Download Status: ${fileResponse.statusCode}"); OpenFile.open(filePath + '/SunSet.jpeg'); } on ZCatalystException catch (ex) { print(ex.toString()); }{{%/code%}} -------------------------------------------------------------------------------- title: "Upload Object" description: "This page lists the Flutter SDK methods to upload an object to the bucket." last_updated: "2026-03-18T07:41:08.555Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/stratus/upload-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Upload Object Help Documentation (/en/cloud-scale/help/stratus/objects/upload-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/upload-object/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/upload-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/upload-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/upload-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/upload-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/upload-object/#UploadObject) -------------------------------------------------------------------------------- # Upload Object The SDK method listed in this section will allow you to {{%link href="/en/cloud-scale/help/stratus/objects/upload-object/" %}}upload objects{{%/link%}} to the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}bucket{{%/link%}} If you do not have {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} enabled for your object, and if Stratus gets multiple write requests for the same object, the object will be continuously overwritten. The latest upload of the object will be the only object that is stored. However, with Versioning enabled, each upload will be considered a version of the object, and all of them will be stored in the bucket, each with a unique {{%badge%}}versionId{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} The following characters including space are not supported when you create a path or an object: double quote, both angular brackets, hashtag, backward slash and pipe symbol.{{%/note%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}filePath{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the complete path of the location from where the file needs to be uploaded from.</td> </tr> <tr> <td>{{%badge%}}shouldCompress{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> </tbody> </table> {{%code class="language-javascript"%}}try { XFile ? imageFile = await pickImage(ImageSource.gallery); var bucket = stratus.bucket("testing"); var response = await bucket.uploadObject(imageFile!.path); print("Upload Status: ${response.statusCode}"); } on ZCatalystException catch (ex) { print(ex.toString()); }{{%/code%}} -------------------------------------------------------------------------------- title: "Delete Object" description: "This page lists the Flutter SDK methods to delete an object or objects from the bucket." last_updated: "2026-03-18T07:41:08.556Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/stratus/delete-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Delete an Object Help Documentation (/en/cloud-scale/help/stratus/objects/manage-object/delete-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/delete-objects/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/delete-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/delete-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/delete-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/delete-objects/#DeleteObject) -------------------------------------------------------------------------------- # Delete Objects The following SDK method can be used to delete multiple objects from the bucket. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w30p">Data Type</th> <th class="w50p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}objects{{%/badge%}}</td> <td>{{%bold%}}ArrayList&lt;ZCatalystObject&gt;{{%/bold%}}</td> <td>An array containing the list of objects (and version IDs, if {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for the bucket) that needs to be deleted.</td> </tr> </tbody> </table> {{%note%}}{{%bold%}}Note:{{%/bold%}} If the SDK method is used without the {{%badge%}}objects{{%/badge%}} parameter, then all the objects in the bucket will be deleted.{{%/note%}} {{%code class="language-javascript"%}}try { ZCatalystBucket bucket = stratus.bucket("testing"); var (response, objects, _) = await bucket.getObjects(maxKeys: 5, prefix: 'trip'); var response = await bucket.deleteObjects(objects); print("Delete Objects: ${response.statusCode}"); } on ZCatalystException catch (ex) { print(ex.toString()); }{{%/code%}} -------------------------------------------------------------------------------- title: "Delete Path" description: "This page lists the Flutter SDK methods to delete an entire path along with its objects from the bucket." last_updated: "2026-03-18T07:41:08.556Z" source: "https://docs.catalyst.zoho.com/en/sdk/flutter/v2/cloud-scale/stratus/delete-path/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Delete an Object Help Documentation (/en/cloud-scale/help/stratus/objects/manage-object/delete-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/delete-objects/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/delete-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/delete-path/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/delete-path/) - REST API (/en/api/code-reference/cloud-scale/stratus/delete-path/#DeletePath) -------------------------------------------------------------------------------- # Delete Path The following SDK method can be used to delete all the objects present in the specified {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}path{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the complete path of where the file should be uploaded.</td> </tr> </tbody> </table> {{%code class="language-javascript"%}}try { ZCatalystBucket bucket = stratus.bucket("testing"); var response = await bucket.deletePath("photos"); print("Delete Objects: ${response.statusCode}"); } on ZCatalystException catch (ex) { print(ex.toString()); }{{%/code%}} --- ## SDK — iOS — Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page provides an overview of the mobile SDK methods required to perform Stratus operations." last_updated: "2026-03-18T07:41:08.557Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/stratus/overview/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/overview/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v1/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Overview Cloud Scale {{%link href="/en/cloud-scale/help/stratus/introduction" %}}Stratus{{%/link%}} is Catalyst's robust and powerful storage solution. You can store data of any format in the form of {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}Objects{{%/link%}} in containers called {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}}. Each Bucket and every individual object in the bucket has a secure {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} and {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/#bucket-url" %}}Bucket URL{{%/link%}}. You can perform upload and download operations on objects and even provide {{%link href="/en/cloud-scale/help/stratus/stratus-permissions/#custom-permissions" %}}custom permissions{{%/link%}} for each object. The following table contains the list of all the Catalyst SDKs that can be used to perform Stratus operations through code. <table class="content-table"> <thead> <tr> <th class="w30p">Category</th> <th class="w70p">SDK Method</th> </tr> </thead> <tbody> <tr> <td>General Stratus Operations</td> <td> <ul> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-instance/" %}}Create Bucket Instance{{%/link%}}</li> </ul> </td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/get-object/" %}}Get Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/get-object/#get-all-objects" %}}Get All Objects{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/download-object/" %}}Download Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/download-object/#download-an-object-completion-callback" %}}Download an Object (Completion Callback){{%/link%}}</li> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/download-object/#download-an-object-with-progress" %}}Download an Object (With Progress){{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/upload-object/" %}}Upload Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/upload-object/#upload-an-object-using-path-completion-callback" %}}Upload an Object Using Path (Completion Callback){{%/link%}}</li> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/upload-object/#upload-an-object-using-file-name-and-file-data-completion-callback" %}}Upload an Object Using File Name and File Data (Completion Callback){{%/link%}}</li> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/upload-object/#upload-an-object-using-path-with-progress" %}}Upload an Object Using Path (With Progress){{%/link%}}</li> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/upload-object/#upload-an-object-using-file-name-and-file-data-with-progress" %}}Upload an Object Using File Name and File Data (With Progress){{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/delete-object/" %}}Delete Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/delete-object/#delete-a-single-object" %}}Delete a Single Object{{%/link%}}</li> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/delete-object/#delete-multiple-objects" %}}Delete Multiple Objects{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/ios/v2/cloud-scale/stratus/delete-path/" %}}Delete Path{{%/link%}}</li> </ul> </td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Create Bucket Instance" description: "This page lists the iOS SDK method to create a bucket instance." last_updated: "2026-03-18T07:41:08.557Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-instance/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/#initialize-bucket-instance) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v1/cloud-scale/stratus/initialize-stratus/#create-bucket-instance) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Bucket Instance To perform bucket level operations, you need to initialize a bucket instance. We will refer to this component instance in various code snippets of working with {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}} in Stratus. {{%code class="language-bash"%}}let bucket = ZCatalystStratus.getBucketInstance( name : "{bucket_name}" ){{%/code%}} -------------------------------------------------------------------------------- title: "Get Object" description: "This page lists the iOS SDK method to get an object or objects from the bucket." last_updated: "2026-03-18T07:41:08.557Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/stratus/get-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/get-objects/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/get-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/get-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/get-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/get-object/) - Flutter SDK (/en/sdk/flutter/v1/cloud-scale/stratus/get-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-objects/#GetAllObjects) -------------------------------------------------------------------------------- # Get Object This SDK method can be used to get an object from the bucket. The response will be in **blob** format. When {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for the bucket: * If you do not pass the {{%badge%}}versionId{{%/badge%}}, then only the **latest object** will be returned. * To retrieve a specific version, use the {{%badge%}}versionId{{%/badge%}} query parameter with a valid version as a value. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w30p">Parameter Name</th> <th class="w70p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}objectKey{{%/badge%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the object name.</td> </tr> <tr> <td>{{%badge%}}versionId{{%/badge%}}</td> <td>An {{%bold%}}optional{{%/bold%}} parameter. Will hold the unique version ID of the required object's version.</td> </tr> </tbody> </table> {{%code class="language-bash"%}}bucketInstance.getObject( objectKey : "{object_name}", versionId : "{version_id}" ) { result in switch result { case .success( let object ) : print( "File Name : \( object.fileName )" ) case .error(let error) : print("Error : \( error )") } }{{%/code%}} The required object will be returned. **Possible Exception** * **404**: Object or Bucket Not Found ### Get All Objects This SDK method can be used to get all the objects present in the bucket using pagination technique. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}prefix{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. This will get the objects that match the prefix value.</td> </tr> <tr> <td>{{%badge%}}maxKeys{{%/badge%}}</td> <td>{{%bold%}}Number{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. Will contain the maximum limit of objects that can be listed by pagination.</td> </tr> <tr> <td>{{%badge%}}continuation_token{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If the response was truncated, the value of this key must be passed as {{%badge%}}continuation_token{{%/badge%}} to the same method for retrieving the next set of objects.</td> </tr> </tbody> </table> {{%code class="language-bash"%}}var params = ZCatalystQuery.ObjectParams() params.maxKeys = 10 params.continuationToken = "{continuation_token}" parmas.prefix = "{prefix}" bucketInstance.getObjects( withParams : params ) { result in switch result { case .success( let objects, let response ) : for object in objects { print("File Name : \( object.fileName )") } case .error( let error ) : print("Error : \( error )") } }{{%/code%}} The required object will be returned as an array in Blob format. **Possible Exception** * **404**: Object or Bucket Not Found -------------------------------------------------------------------------------- title: "Download Object" description: "This page lists the iOS SDK methods to download an object to the bucket." last_updated: "2026-03-18T07:41:08.558Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/stratus/download-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Download an Object (/en/cloud-scale/help/stratus/objects/manage-object/download-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/range-download/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/range-download/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/range-download/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/range-download/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/download-object/) - Flutter SDK (/en/sdk/flutter/v1/cloud-scale/stratus/download-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/download-object/#DownloadObject) -------------------------------------------------------------------------------- # Download Object The following SDK methods will allow you to download the object. ### Download an Object (Completion Callback) This SDK method will allow you to download the object, without any progress indicators. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w30p">Parameter Name</th> <th class="w70p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}fromCache{{%/badge%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To be used to specify whether this file has to be retrieved from the cache or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> </tbody> </table> {{%code class="language-bash"%}}objectInstance.download( fromCache : true ) { result in switch result { case .success( let url ) : do { let data = Data(contentsOf : url) DispatchQueue.main.sync { self.imageView.image = UIImage(date: data) } } catch { print("Error : \( error )") } case .error( let error ) : print("Error : \( error )") } }{{%/code%}} ### Download an Object (With Progress) This SDK method will allow you to download the object with progress indicators. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w30p">Parameter Name</th> <th class="w70p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}fromCache{{%/badge%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To be used to specify whether this file has to be retrieved from the cache or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}fileRefId{{%/badge%}}</td> <td>A unique ID to refer to the file that is being uploaded.</td> </tr> <tr> <td>{{%badge%}}fileUploadDelegate{{%/badge%}}</td> <td>This is a protocol that needs to be confirmed. the Upload delegate object is essential to track the status of the object upload.</td> </tr> </tbody> </table> {{%code class="language-bash"%}}objectInstance.download( fromCache : true, fileRefId : "{file_ref_id}", fileDownloadDelegate : self ){{%/code%}} -------------------------------------------------------------------------------- title: "Upload Object" description: "This page lists the iOS SDK methods to upload an object to the bucket." last_updated: "2026-03-18T07:41:08.558Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/stratus/upload-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Upload Object Help Documentation (/en/cloud-scale/help/stratus/objects/upload-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/upload-object/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/upload-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/upload-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/upload-object/) - Flutter SDK (/en/sdk/flutter/v1/cloud-scale/stratus/upload-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/upload-object/#UploadObject) -------------------------------------------------------------------------------- # Upload Object The SDK method listed in this section will allow you to {{%link href="/en/cloud-scale/help/stratus/objects/upload-object/" %}}upload objects{{%/link%}} to the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}bucket{{%/link%}} If you do not have {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} enabled for your object, and if Stratus gets multiple write requests for the same object, the object will be continuously overwritten. The latest upload of the object will be the only object that is stored. However, with Versioning enabled, each upload will be considered a version of the object, and all of them will be stored in the bucket, each with a unique {{%badge%}}versionId{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} The following characters including space are not supported when you create a path or an object: double quote, both angular brackets, hashtag, backward slash and pipe symbol.{{%/note%}} ### Upload an Object Using Path (Completion Callback) This SDK can be used to upload an object to the bucket using its {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w30p">Parameter Name</th> <th class="w70p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}filePath{{%/badge%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the complete path of the location from where the file needs to be uploaded from.</td> </tr> <tr> <td>{{%badge%}}fileName{{%/badge%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. Will hold the complete name of the object.</li> <li>{{%bold%}}Default Value{{%/bold%}}: Will hold the value of the last path value that was used.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}shouldCompress{{%/badge%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> </tbody> </table> {{%code class="language-bash"%}}bucketInstance.upload( filePath : "{file_path}", fileName : "{file_name}", shouldCompress : true ) { error in if let error = error { print("Error : \( error )") return } print("Uploaded Successfully") }{{%/code%}} ### Upload an Object Using File Name and File Data (Completion Callback) This SDK can be used to upload an object to the bucket using its name and in a data format. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w30p">Parameter Name</th> <th class="w70p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}fileName{{%/badge%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the complete name of the object that needs to be uploaded.</td> </tr> <tr> <td>{{%badge%}}data{{%/badge%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. The object that needs to be uploaded in data format.</td> </tr> <tr> <td>{{%badge%}}shouldCompress{{%/badge%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> </tbody> </table> {{%code class="language-bash"%}}bucketInstance.upload( fileName : "{file_name}", data : "{file_data}", shouldCompress : false ) { error in if let error = error { print("Error : \( error )") return } print("Uploaded Successfully") }{{%/code%}} ### Upload an Object Using Path (With Progress) This SDK can be used to upload an object to the bucket using its {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}. This SDK method will also provide upload progress indicators. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w30p">Parameter Name</th> <th class="w70p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}fileRefId{{%/badge%}}</td> <td>A unique ID to refer to the file that is being uploaded.</td> </tr> <tr> <td>{{%badge%}}filePath{{%/badge%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. Will contain the complete path of where the file should be uploaded.</td> </tr> <tr> <td>{{%badge%}}fileName{{%/badge%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. Will hold the complete name of the object.</li> <li>{{%bold%}}Default Value{{%/bold%}}: Will hold the value of the last path value that was used.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}shouldCompress{{%/badge%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}fileUploadDelegate{{%/badge%}}</td> <td>This is a protocol that needs to be confirmed. the Upload delegate object is essential to track the status of the object upload.</td> </tr> </tbody> </table> {{%code class="language-bash"%}}bucketInstance.upload( fileRefId : "{file_ref_id}", filePath : "{file_path}", fileName : "{file_name}", shouldCompress : true, fileUploadDelegate : self ){{%/code%}} ### Upload an Object Using File Name and File Data (With Progress) This SDK can be used to upload an object to the bucket using its name and in a data format. This SDK method will also provide upload progress indicators. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w30p">Parameter Name</th> <th class="w70p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}fileRefId{{%/badge%}}</td> <td>A unique ID to refer to the file that is being uploaded.</td> </tr> <tr> <td>{{%badge%}}data{{%/badge%}}</td> <td>A {{%bold%}}mandatory{{%/bold%}} parameter. The object that needs to be uploaded in data format.</td> </tr> <tr> <td>{{%badge%}}fileName{{%/badge%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. Will hold the complete name of the object.</li> <li>{{%bold%}}Default Value{{%/bold%}}: Will hold the value of the last path value that was used.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}shouldCompress{{%/badge%}}</td> <td> <ul> <li>An {{%bold%}}optional{{%/bold%}} parameter. To allow you to choose if the object needs to be compressed or not.</li> <li>{{%bold%}}Default Value{{%/bold%}}: false.</li> </ul> </td> </tr> <tr> <td>{{%badge%}}fileUploadDelegate{{%/badge%}}</td> <td>This is a protocol that needs to be confirmed. the Upload delegate object is essential to track the status of the object upload.</td> </tr> </tbody> </table> {{%code class="language-bash"%}}bucketInstance.upload( fileRefId : "{file_ref_id}", fileName : "{file_name}", data : "{file_data}", shouldCompress : true, fileUploadDelegate : self){{%/code%}} -------------------------------------------------------------------------------- title: "Delete Object" description: "This page lists the iOS SDK methods to delete an object or objects from the bucket." last_updated: "2026-03-18T07:41:08.558Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/stratus/delete-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Delete an Object Help Documentation (/en/cloud-scale/help/stratus/objects/manage-object/delete-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/delete-objects/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/delete-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/delete-object/) - Flutter SDK (/en/sdk/flutter/v1/cloud-scale/stratus/delete-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/delete-objects/#DeleteObject) -------------------------------------------------------------------------------- # Delete Object ### Delete a Single Object The following SDK method can be used to delete a single object from the bucket. {{%code class="language-bash"%}}objectInstance.delete() { error in if let error = error { print("Error : \( error )") return } print("Deleted Successfully") }{{%/code%}} ### Delete Multiple Objects The following SDK method can be used to delete multiple objects from the bucket. {{%code class="language-bash"%}}bucketInstance.deleteObjects( deletableObjectInstances ) { error in if let error = error { print("Error : \( error )") return } print("Deleted Successfully") }{{%/code%}} -------------------------------------------------------------------------------- title: "Delete Path" description: "This page lists the iOS SDK methods to delete an entire path along with its objects from the bucket." last_updated: "2026-03-18T07:41:08.558Z" source: "https://docs.catalyst.zoho.com/en/sdk/ios/v2/cloud-scale/stratus/delete-path/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Delete an Object Help Documentation (/en/cloud-scale/help/stratus/objects/manage-object/delete-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/delete-objects/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/delete-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/delete-path/) - Flutter SDK (/en/sdk/flutter/v1/cloud-scale/stratus/delete-path/) - REST API (/en/api/code-reference/cloud-scale/stratus/delete-path/#DeletePath) -------------------------------------------------------------------------------- # Delete Path The following SDK method can be used to delete all the objects present in the specified {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}. {{%code class="language-bash"%}}bucketInstance.deletePath("{path_to_be_deleted}") { error in if let error = error { print("Error : \( error )") return } print("Path Deleted Successfully") }{{%/code%}} --- ## SDK — Java — Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page lists all the Java SDK methods required to carry out Stratus operations through code." last_updated: "2026-03-18T07:41:08.560Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/overview/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Stratus ## Overview Cloud Scale {{%link href="/en/cloud-scale/help/stratus/introduction" %}}Stratus{{%/link%}} is Catalyst's robust and powerful storage solution. You can store data of any format in the form of {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}Objects{{%/link%}} in containers called {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}}. Each Bucket and every individual object in the bucket has a secure {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} and {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/#bucket-url" %}}Bucket URL{{%/link%}}. You can perform upload and download operations on objects and even provide {{%link href="/en/cloud-scale/help/stratus/stratus-permissions/#custom-permissions" %}}custom permissions{{%/link%}} for each object. The following table contains the list of all the Catalyst SDKs that can be used to perform Stratus operations through code. <table class="content-table"> <thead> <tr> <th class="w30p">Category</th> <th class="w70p">SDK Method</th> </tr> </thead> <tbody> <tr> <td>General Stratus Operations</td> <td> <ul> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-stratus-instance/" %}}Create Stratus Instance{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/check-bucket/" %}}Check Bucket Availability{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/list-buckets/" %}}List Buckets{{%/link%}}</li> </ul> </td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}Create Bucket Instance{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/get-bucket-details/" %}}Get a Bucket’s Details{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/get-bucket-cors/" %}}Get Bucket CORS{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/list-objects/" %}}List Objects in a Bucket{{%/link%}} <ul> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/list-objects/#list-all-objects-by-pagination" %}}List All Objects by Pagination{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/list-objects/#list-objects-through-iteration" %}}List Objects Through Iteration{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/check-object-availability/" %}}Check Object Availability{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/download-object/" %}}Download Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/download-object/#download-a-portion-of-the-object" %}}Download a Portion of the Object{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/download-object/#download-an-object-using-transfer-manager" %}}Download an Object Using Transfer Manager{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/download-object/#generate-presigned-url-to-download-an-object" %}}Generate Presigned URL to Download an Object{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/download-object/#generate-presigned-url-with-expiry-and-active-time" %}}Generate Presigned URL With Expiry and Active Time{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/upload-object/" %}}Upload Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/upload-object/#upload-object-as-a-stream" %}}Upload Object as a Stream{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/upload-object/#upload-object-as-a-string" %}}Upload Object as a String{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/upload-object/#upload-object-with-options" %}}Upload Object with Options{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/upload-object/#upload-an-object-using-multipart-operations" %}}Upload an Object Using Multipart Operations{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/upload-object/#upload-an-object-using-transfer-manager-technique" %}}Upload an Object Using Transfer Manager{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/upload-object/#generate-presigned-url-to-upload-an-object" %}}Generate Presigned URL to Upload an Object{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/upload-object/#generate-presigned-url-with-expiry-and-active-time" %}}Generate Presigned URL With Expiry and Active Time{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/extract-zipped-object/" %}}Extract a Zipped Object{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/copy-objects/" %}}Copy Object{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/rename-move-object/" %}}Rename and Move Operations on an Object{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/delete-objects/" %}}Delete Objects{{%/link%}} <ul> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/delete-objects/#delete-a-single-object" %}}Delete a Single Object{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/delete-objects/#delete-multiple-objects" %}}Delete Multiple Objects{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/delete-objects/#truncate-bucket" %}}Truncate Bucket{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/delete-objects/#delete-a-path-in-the-bucket" %}}Delete a Path in the Bucket{{%/link%}}</li> </ul> </li> </ul> </td> </tr> <tr> <td>Object Operations</td> <td> <ul> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-object-instance/" %}}Create Object Instance{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/list-object-versions/" %}}List Versions of an Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/list-object-versions/#list-all-versions-of-an-object" %}}List All Versions of an Object{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/list-object-versions/#list-all-versions-of-the-object-in-an-iterable-manner" %}}List All Versions of the Object in an Iterable Manner{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/object-details/" %}}Get Object Details{{%/link%}} <ul> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/object-details/#get-details-of-an-object" %}}Get Details of an Object{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/object-details/#get-details-of-a-particular-version-of-the-object" %}}Get Details of a Particular Version of the Object{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/java/v1/cloud-scale/stratus/put-object-meta/" %}}Put Object Meta Data{{%/link%}}</li> </ul> </td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Create Stratus Instance" description: "This page lists the Java SDK method to create a Stratus instance." last_updated: "2026-03-18T07:41:08.560Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/create-stratus-instance/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-stratus-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-stratus-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/initialize-stratus/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Stratus Instance You can get the {{%badge%}}stratus{{%/badge%}} component reference as shown below. This will not fire a server-side call. We will refer to this component instance in various code snippets of working with Stratus. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.ZCStratus;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCStratus stratus = ZCStratus.getInstance();{{%/code%}} -------------------------------------------------------------------------------- title: "Check Bucket Availability" description: "This page lists the Java SDK method to check if the bucket exists in your project." last_updated: "2026-03-18T07:41:08.560Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/check-bucket/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/check-bucket/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/check-bucket/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/check-bucket/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Check Bucket Availability Using the {{%badge%}}headBucket(){{%/badge%}} SDK method, you can check the existence of a bucket in Stratus, and further check if the user has the relevant permissions to access the objects present in the bucket. Possible responses when using this SDK: * If the bucket exists and if the user has the relevant permissions to access the bucket, the response '**true**' will be returned. * If the bucket does not exist, or if the user does not have permission to access the bucket, the response '**false**' will be returned. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}bucket_name{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique name of the bucket{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}throwErr{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If you set this parameter as "{{%bold%}}true{{%/bold%}}", then it will throw an error when the bucket is not found in the project. The default value is "{{%bold%}}false{{%/bold%}}"</td> </tr> </tbody> </table> {{%code class="language-java"%}}Boolean throwErr = false; Boolean res = stratus.headBucket("bucket_name", throwErr); System.out.println(res);{{%/code%}} #### Possible Errors {{%note%}}{{%bold%}}Note:{{%/bold%}} If you use the SDK with the {{%badge%}}throw_err{{%/badge%}} parameter, and the object does not exist, or if you do not have sufficient permissions then you may encounter any of the errors listed below.{{%/note%}} <table class="content-table"> <thead> <tr> <th class="w30p">Error Code</th> <th class="w70p">Meaning</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}{{%bold%}}404{{%/bold%}}{{%/badge%}}</td> <td>Not Found. Bucket Not found in Stratus.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}401{{%/bold%}}{{%/badge%}}</td> <td>Unauthorized/Access Denied - User doesn't have permission to perform the particular operation.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}403{{%/bold%}}{{%/badge%}}</td> <td>Permission Denied - User does not have permission to access the particular bucket.</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "List Buckets" description: "This page lists the Java SDK method to list buckets created in your project." last_updated: "2026-03-18T07:41:08.561Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/list-buckets/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/list-buckets/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/list-buckets/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # List Buckets The following SDK method will return all the buckets present in the project. The Stratus reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-stratus-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import java.util.List; import com.zc.component.stratus.ZCStratus; import com.zc.component.stratus.ZCBucket;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCStratus stratus = ZCStratus.getInstance(); List&lt;ZCBucket&gt; buckets = stratus.listBuckets(); // will return all the buckets in the organization {{%/code%}} -------------------------------------------------------------------------------- title: "Create Bucket Instance" description: "This page lists the Java SDK method to create a bucket instance." last_updated: "2026-03-18T07:41:08.561Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Create a Bucket Help Documentation (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Bucket Instance To perform bucket level operations, you need to create a bucket instance. We will refer to this component instance in various code snippets of working with {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}} in Stratus. The Stratus reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-stratus-instance/" %}}component instance{{%/link%}}. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.ZCBucket;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCBucket bucket = stratus.bucketInstance("bucketName");{{%/code%}} -------------------------------------------------------------------------------- title: "Get a Bucket's Details" description: "This page lists the Java SDK method to get a bucket's details." last_updated: "2026-03-18T07:41:08.561Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/get-bucket-details/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Create a Bucket Help Documentation (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Get a Bucket's Details We will use the {{%badge%}}getDetails(){{%/badge%}} SDK method to get a single bucket's details from the project. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.ZCBucket;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCBucket bucketDetails = bucket.getDetails(); // return the bucket details{{%/code%}} -------------------------------------------------------------------------------- title: "Get Bucket CORS" description: "This page lists the Java SDK method to get the current CORS configuration of the bucket." last_updated: "2026-03-18T07:41:08.561Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/get-bucket-cors/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Stratus Bucket CORS Help Documentation (/en/cloud-scale/help/stratus/stratus-config/bucket-cors/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/get-bucket-cors/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/get-bucket-cors/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Get Bucket CORS The {{%badge%}}getCors(){{%/badge%}} SDK method, will return the current CORS configuration of a specific bucket in Stratus. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} CORS of a bucket can be edited by any user that has or has been granted {{%badge%}}Write{{%/badge%}} permission for Stratus component in the project, using the {{%link href="/en/getting-started/set-up-a-catalyst-project/profiles-and-permissions/" %}}Profiles & Permissions{{%/link%}} section. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can find out more about Bucket CORS from this {{%link href="/en/cloud-scale/help/stratus/stratus-config/bucket-cors/" %}}help section{{%/link%}}.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.beans.ZCStratusCorsResponse; import java.util.List;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}List&lt;ZCStratusCorsResponse&gt; res = bucket.getCors(); for(ZCStratusCorsResponse cors: res){ System.out.println(cors.getDomain()); }{{%/code%}} -------------------------------------------------------------------------------- title: "List Objects in a Bucket" description: "This page lists the Java SDK method to get the objects stroed in a bucket." last_updated: "2026-03-18T07:41:08.562Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/list-objects/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/list-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/list-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/get-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/get-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/get-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # List Objects in a Bucket ### List All Objects by Pagination This SDK method will allow you to get all the objects present in a particular bucket by pagination. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} For each call, a limited number of objects will be returned, and the next call will be initiated only if a continuation token is returned. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}maxKey{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will contain the maximum limit of objects that can be listed by pagination.</td> </tr> <tr> <td>{{%badge%}}nextToken{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Mandatory{{%/bold%}} parameter. Will contain the token to get the next set of objects.</td> </tr> <tr> <td>{{%badge%}}prefix{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. To list objects that match the prefix value.</td> </tr> <tr> <td>{{%badge%}}orderBy{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. To list objects either in ascending or descending order. {{%bold%}}Default Value{{%/bold%}}: {{%badge%}}asc{{%/badge%}}</td> </tr> </tbody> </table> The response we get will contain the following properties of the bucket, which will be stored in {{%badge%}}moreOptions{{%/badge%}}: * {{%badge%}}key count{{%/badge%}}: Will contain the value of the number of objects that are being returned * {{%badge%}}max keys{{%/badge%}}: The maximum limit of objects that can be returned * {{%badge%}}Truncated{{%/badge%}}: Will contain the status to notify if a bucket is truncated or not. * {{%badge%}}contents{{%/badge%}}: List of object details * {{%badge%}}continuation_token{{%/badge%}}: If you a sent a {{%badge%}}continuation_token{{%/badge%}} in the request, it will be shown in the response. * {{%badge%}}next_continuation_token{{%/badge%}}: If the response was truncated, the value of this key must be passed as {{%badge%}}continuation_token{{%/badge%}} to the same method for retrieving the next set of objects. With each iteration, we will list the {{%badge%}}maxKey{{%/badge%}} number of objects and check if {{%badge%}}nextToken{{%/badge%}} has been created. Using {{%badge%}}nextToken{{%/badge%}} we will continue the iteration till all the objects have been listed. **Ensure the following packages are imported:** {{%code class="language-java"%}}import com.zc.component.stratus.ZCBucket; import com.zc.component.stratus.ZCStratus; import com.zc.component.stratus.beans.ZCListObjectOptions; import com.zc.component.stratus.beans.ZCPagedObjectResponse; import com.zc.component.stratus.ZCObject; {{%/code%}} {{%code class="language-java"%}}String nextToken = null; String maxKey = "10"; String prefix = "Sam"; do { ZCListObjectOptions options = new ZCListObjectOptions(); options.setMaxKey(maxKey); // Default: 1000 options.setContinuationToken(nextToken); // Fetch next page options.setFolderListing("true"); // Default: false options.setOrderBy("desc"); // Default: "asc" options.setPrefix(prefix); // Optional ZCPagedObjectResponse res = bucket.listPagedObjects(options); System.out.println("Object count: " + res.getKeyCount()); System.out.println("Max key: " + res.getMaxKey()); System.out.println("Is truncated: " + res.getTruncated()); for (ZCObject key : res.getContents()) { System.out.println("Object name: " + key.getKey()); System.out.println("Content type: " + key.getContentType()); System.out.println("Size: " + key.getSize()); System.out.println("Metadata: " + key.getMetaData()); System.out.println("Version ID: " + key.getVersionId()); System.out.println("ETag: " + key.getEtag()); System.out.println("Object type: " + key.getKeyType()); System.out.println("Cached URL: " + key.getCachedUrl()); } nextToken = res.getNextToken(); } while (nextToken != null); {{%/code%}} ### List Objects Through Iteration Using this SDK method, you can get all the objects present in a bucket in a single API call, using iteration technique. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **Ensure the following packages are imported:** {{%code class="language-java"%}}import java.util.Iterator; import com.zc.component.stratus.ZCObject; import com.zc.component.stratus.beans.ZCListObjectOptions; import java.util.List; {{%/code%}} {{%code class="language-java"%}}ZCListObjectOptions options = new ZCListObjectOptions(); options.setFolderListing("true"); // Default: false options.setMaxKey("2"); // Default: 1000 options.setOrderBy("desc"); // Default: "asc" // Get iterable object list Iterable&lt;List&lt;ZCObject&gt;&gt; paginationIterable = bucket.listIterableObjects(options); Iterator&lt;List&lt;ZCObject&gt;&gt; iterator = paginationIterable.iterator(); while (iterator.hasNext()) { List&lt;lZCObject&gt; objectList = iterator.next(); for (ZCObject obj : objectList) { System.out.println(obj.getKey()); } } {{%/code%}} -------------------------------------------------------------------------------- title: "Check Object Availability" description: "This page lists the Java SDK method to check if an object is present in a bucket." last_updated: "2026-03-18T07:41:08.562Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/check-object-availability/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Objects Help Documentation (/en/cloud-scale/help/stratus/objects/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/check-object-availability/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/check-object-availability/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Check Object Availability Using this SDK method, you can check if a particular object is present in the bucket, if the user has the required permissions to access the object. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} If you have enabled {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} for your bucket, then you need to pass the {{%badge%}}versionID{{%/badge%}} as the param, to check if a particular version of the object is available. When you use this SDK method, you will get either of the following responses: - {{%badge%}}**true**{{%/badge%}}: If the object is available, the specified version is available, and if the user has the relevant permissions to access the objects. - {{%badge%}}**false**{{%/badge%}}: - If the object or the particular version of the object is not available in the bucket. - If the user does not have the required permissions to access the object. - If the bucket does not exist. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object.</td> </tr> <tr> <td>{{%badge%}}versionId{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. Will hold the unique version ID of the object, if {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled.</td> </tr> <tr> <td>{{%badge%}}throwErr{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If you set this parameter as "{{%bold%}}true{{%/bold%}}", then it will throw an error when the object is not found in the project. The default value is "{{%bold%}}false{{%/bold%}}"</td> </tr> </tbody> </table> {{%code class="language-java"%}}Boolean throwErr = true; Boolean headObjectRes = bucket.headObject("sam/out/sample.txt", "versionId", throwErr); System.out.println(headObjectRes);{{%/code%}} **Possible Errors** {{%note%}}{{%bold%}}Note:{{%/bold%}} If you use the SDK with the {{%badge%}}throw_err{{%/badge%}} parameter, and the object does not exist, or if you do not have sufficient permissions then you may encounter any of the errors listed below.{{%/note%}} <table class="content-table"> <thead> <tr> <th class="w30p">Error Code</th> <th class="w70p">Meaning</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}{{%bold%}}404{{%/bold%}}{{%/badge%}}</td> <td>Not Found. Object Not found.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}401{{%/bold%}}{{%/badge%}}</td> <td>Unauthorized/Access Denied - User doesn't have permission to perform the particular operation.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}403{{%/bold%}}{{%/badge%}}</td> <td>Permission Denied - User does not have permission to access the particular object.</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Download Object" description: "This page lists the Java SDK method to download objects from a bucket." last_updated: "2026-03-18T07:41:08.562Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/download-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Download Object Help Documentation (/en/cloud-scale/help/stratus/objects/manage-object/download-object/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/download-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/download-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/download-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/download-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Download Object The SDKs present in the section will allow you to {{%link href="/en/cloud-scale/help/stratus/objects/manage-object/download-object/" %}}download a particular object{{%/link%}}, or version of the object. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. The first step of the download operation is a {{%badge%}}GET{{%/badge%}} operation that retrieves the required object from the bucket. To be able to download an object, the requester must have {{%badge%}}READ{{%/badge%}} access permissions. However, owners of the bucket do have the option to grant {{%badge%}}READ{{%/badge%}} access permissions to users, allowing them to download the object without using the required response headers. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for your bucket, you need to pass the {{%badge%}}versionId{{%/badge%}} to download the particular version of the object. If no {{%badge%}}versionId{{%/badge%}} is passed, then by default, the latest version of the object will be downloaded. If *Versioning* was enabled for a bucket, then disabled. By default, the principal first object will be downloaded. To ensure you download the latest version of this object, you need to pass the {{%badge%}}versionId{{%/badge%}} param with the value "{{%badge%}}topVersion{{%/badge%}}". #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.io.*;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}InputStream dataStream = bucket.getObject("sam/out/sample.txt"); // download the object to your local machine Path path = Path.of("file_path"); // specify a path to store the downloaded object Files.copy(dataStream, path, StandardCopyOption.REPLACE_EXISTING);{{%/code%}} ### Download a Portion of the Object The following SDK implements the {{%badge%}}setRange(){{%/badge%}} method. This method allows you to download a specific range of bytes of an object. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.beans.ZCGetObjectOptions; import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.io.*;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}// add download options ZCGetObjectOptions options = ZCGetObjectOptions.getInstance(); options.setVersionId("3yt5ehjbjghds3i28"); options.setRange("20-200"); // start and end range of the object in bytes InputStream dataStream = bucket.getObject("sam/out/sample.txt", options); // download the object to your local machine Path path = Path.of("file_path"); // specify a path to store the downloaded object Files.copy(dataStream, path, StandardCopyOption.REPLACE_EXISTING);{{%/code%}} ### Download an Object Using Transfer Manager In this section, we are going to go over SDK methods that will allow you to successfully download large objects from Stratus to your local system using **Transfer Manager** technique. Transfer Manager is an operation where the large object is split into multiple byte ranges using the start and end bytes range of the object. Each of the object's parts is then returned as a stream, and they are downloaded to your local system. #### Create Transfer Manager Instance #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.transfer.ZCTransferManager;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCTransferManager transferManager= ZCTransferManager.getInstance(bucket);{{%/code%}} #### Download Object as Iterable Part Streams #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import java.nio.file.StandardOpenOption; import java.nio.file.Files; import java.util.Iterator; import java.nio.file.Path; import java.io.*;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}Iterable &lt;InputStream&gt; Iterable = transferManager.getIterableObject("sam/out/sample.txt", 100 L); Path path = Path.of("file_path"); Iterator &lt;InputStream&gt; res = Iterable.iterator(); while (res.hasNext()) { InputStream data = res.next(); // get each part of the object as stream Files.copy(data, path, StandardCopyOption.REPLACE_EXISTING); // write the stream to local file path }{{%/code%}} #### Generate Object Parts for Download In this SDK method we will download a portion of the object that falls under the required start and end range of bytes. **Parameters Used** * {{%badge%}}PartSize{{%/badge%}}: It is the size of each part in Mb * {{%badge%}}key{{%/badge%}}: Will hold the name of the object #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import java.nio.file.StandardOpenOption; import java.nio.file.Files; import com.zc.component.stratus.beans.ZCStratusGetObject; import java.nio.file.Path; import java.io.*;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}Path path = Path.of("file_path"); // get the list of part functions List&lt;ZCStratusGetObject&gt; parts = transferManager.generatePartDownloaders("sam/out/sample.txt", 100L); // create a file to store the downloaded stream. Files.createFile(path); int partNumber = 1; // trigger the each function to download the object parts for (ZCStratusGetObject part : parts) { // get object part as stream InputStream inputStream = part.getPart(); System.out.println("Part "+ partNumber++ + " Downloaded"); // write the stream data to local machine Files.write(path, inputStream.readAllBytes(), StandardOpenOption.APPEND); }{{%/code%}} ### Generate Presigned URL to Download an Object Presigned URLs are secure URLs that authenticated users can share to their non-authenticated users. This URL will provide non-authenticated users with temporary authorization to access objects. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}URL_ACTION{{%/badge%}}</td> <td>{{%bold%}}Enum{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. This is the parameter that will allow you to generate a presigned URL for download action. <ul> <li>{{%badge%}}**URL_ACTION.GET**{{%/badge%}}: To download an object</li> </ul> </td> </tr> <tr> <td>{{%badge%}}expiry{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. The URL validity time in seconds. <ul> <li>Default value: {{%bold%}}3600 seconds{{%/bold%}}</li> <li>Minimum value: {{%bold%}}30 seconds{{%/bold%}}</li> <li>Maximum value: {{%bold%}}7 days{{%/bold%}}</li> </ul> </td> </tr> <tr> <td>{{%badge%}}activeFrom{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. This param will contain the time after which the URL is valid. Maximum value is {{%bold%}}7 days{{%/bold%}}. URLs are made active as soon as they are generated by default.</td> </tr> </tbody> </table> #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.enums.URL_ACTION; import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}JSONObject res = bucket.generatePreSignedUrl("sam/out/sample.txt",URL_ACTION.GET); System.out.println(res.get("signature"));{{%/code%}} ### Generate Presigned URL With Expiry and Active Time #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.enums.URL_ACTION; import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}JSONObject res = bucket.generatePreSignedUrl("object_name",URL_ACTION.GET, "expiry_in","active_from"); System.out.println(res.get("signature")); {{%/code%}} **Example Response for Generating a Presigned URL for Download** {{%code class="language-json" scroll="set-scroll" %}}{ signature: 'https://sadi-development.zoho stratus.com/_signed/text.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747896279887&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=3YBUX1HFSxNQzQJjFrln82AyJsEEuC5T9dsZwWxGyEE' } {{%/code%}} **Example Snippet Illustrating Usage of Presigned URL to Upload an Object** {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import okhttp3.ResponseBody; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}public class Download { public static void main(String[] args) throws IOException { // Create an OkHttpClient instance to handle the HTTP request OkHttpClient client = new OkHttpClient(); // Build the GET request with the pre-signed URL Request request1 = new Request.Builder() .url("https://sadi-development.zohostratus.com/_signed/sam.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747905744487&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=pCjV9xckDOqBCueE_gBeMbp12StddTghBK_8HUwU5k0") // Replace with your actual URL .build(); // Execute the request and handle the response try (Response response1 = client.newCall(request1).execute()) { // Check if the response was successful if (!response1.isSuccessful()) { throw new IOException("Unexpected code " + response1); } // Get the response body as an InputStream ResponseBody body = response1.body(); if (body != null) { // Create a stream to write the file to disk try (InputStream in = body.byteStream(); OutputStream out = new FileOutputStream("file_path")) { // Replace file_path with the actual path // Read the response data in chunks and write to the file byte[] buffer = new byte[8192]; int len; while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); } // Print confirmation after successful download System.out.println("Download complete."); } } } catch (IOException e) { // Print stack trace if an error occurs during the download e.printStackTrace(); } } } {{%/code%}} -------------------------------------------------------------------------------- title: "Upload Object" description: "This page lists the Java SDK method to upload objects to a bucket." last_updated: "2026-03-18T07:41:08.563Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/upload-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Upload Object Help Documentation (/en/cloud-scale/help/stratus/objects/upload-object/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/upload-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/upload-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/upload-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/upload-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/upload-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Upload Object The SDK methods listed in this section will allow you to {{%link href="/en/cloud-scale/help/stratus/objects/upload-object/" %}}upload objects{{%/link%}} to the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}bucket{{%/link%}} in various manners. You can upload objects as a **string** or as a **stream**. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. If you do not have {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} enabled for your object, and if Stratus gets multiple write requests for the same object, the object will be continuously overwritten. The latest upload of the object will be the only object that is stored. However, with Versioning enabled, each upload will be considered a version of the object, and all of them will be stored in the bucket, each with a unique {{%badge%}}versionId{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} The following characters including space are not supported when you create a path or an object: double quote, both angular brackets, hashtag, backward slash and pipe symbol.{{%/note%}} ### Upload Object as a Stream Using this SDK method, you can upload objects to a bucket as a stream. Store the stream in a variable and then pass that variable in the upload method. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.beans.ZCPutObjectOptions; import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.io.*;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}InputStream file =new FileInputStream("filePath"); Boolean res = bucket.putObject("sam/out/sample.txt", file); System.out.println(res);{{%/code%}} ### Upload Object as a String Using this SDK method, you can upload the object as a string. You will pass the object name, and the data to be stored in the object in string format in the upload method; {{%badge%}}putObject(){{%/badge%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.beans.ZCPutObjectOptions; import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.io.*;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}Boolean res = bucket.putObject("sam/out/sample.txt", "content of the file"); System.out.println(res);{{%/code%}} ### Upload Object with Options Using this SDK method, you can use the following options while you upload an object. * {{%badge%}}**setOverwrite()**{{%/badge%}}: This is an option you can use, if *Versioning* for your bucket is not enabled for your bucket. Without versioning, you need to use this option if you wish to overwrite a resource. The default value is '**false**'. * {{%badge%}}**setTTL()**{{%/badge%}}: This is an option you can use to set **Time-to-Live** (TTL) in seconds for an object. Value should be greater than or equal to **60 seconds**. * {{%badge%}}**setMetaData()**{{%/badge%}}: This is an option you can use to upload {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#metadata" %}}meta details{{%/link%}} of the object that is being uploaded. * {{%badge%}}**contentType**{{%/badge%}}: This is an option you can provide, if you need to set the MIME type of the object. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.beans.ZCPutObjectOptions; import java.nio.file.Path; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.util.Map; import java.io.*;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCPutObjectOptions options = ZCPutObjectOptions.getInstance(); options.setTTL("1000"); options.setOverwrite("true"); Map&lt;String, String&gt; metaData = new HashMap&lt;String, String&gt;(); metaData.put("author", "John"); options.setMetaData(metaData); InputStream file = new FileInputStream("filePath"); Boolean res = bucket.putObject("sam/out/sample.txt", file, options); System.out.println(res);{{%/code%}} ### Upload Object With Extract Option When you upload a zipped object using the {{%badge%}}putZipObject(){{%/badge%}} SDK method, the objects present in the zip will be extracted, and uploaded. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.ZCBucket; import com.zc.component.stratus.ZCStratus; import com.zc.component.stratus.beans.ZCPutObjectOptions;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCStratus stratus = ZCStratus.getInstance(); ZCBucket bucket = stratus.bucketInstance("sam1"); ZCPutObjectOptions options = ZCPutObjectOptions.getInstance(); options.setOverwrite("true"); InputStream stream = new FileInputStream("file_path"); JSONObject object = bucket.putZipObject("sam.zip", stream, options); {{%/code%}} This SDK method will return the value of a {{%badge%}}taskId{{%/badge%}}. You can use this value to find out the status of the extraction using this {{%link href="/en/sdk/java/v1/cloud-scale/stratus/extract-zipped-object/#get-zip-extraction-status" %}}SDK method{{%/link%}}. **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ 'task_id': '1234263749' }{{%/code%}} ### Upload an Object Using Multipart Operations When the Object that you need to upload is too large to upload, you can perform a multipart operation. The multipart operation will split the object into multiple parts and perform a quicker upload. In this SDK section, we are going to go over all the SDK methods that are available to perform multipart upload of objects in Stratus. #### Initiate Multipart Upload Using the following SDK method, we are going to return a {{%badge%}}uploadId{{%/badge%}}. This ID will allow us to upload multiple pats of the object. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.beans.ZCInitiateMultipartUpload;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCInitiateMultipartUpload multipart = bucket.initiateMultipartUpload("sam/out/sample.txt");{{%/code%}} #### Perform Multipart Upload for Parts of the Object In the following SDK method, we are going to perform uploads of the individual parts of the object. Each part will have a distinct {{%badge%}}part_number{{%/badge%}} ranging anywhere between **1 and 1000**. While this represents the ordering of the parts, these parts will not necessarily be uploaded in sequence. These parts will be combined in sequence once the upload of all the parts of the objects is complete. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the name of the object.</td> </tr> <tr> <td>{{%badge%}}uploadId{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. This value is returned in the Initiate Multipart Upload method.</td> </tr> <tr> <td>{{%badge%}}part{{%/badge%}}</td> <td>{{%bold%}}InputStream{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the data of the object part.</td> </tr> <tr> <td>{{%badge%}}partNumber{{%/badge%}}</td> <td>{{%bold%}}Int{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will have the ordering of the parts that are being uploaded.</td> </tr> </tbody> </table> #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import java.io.*;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}int partNumber = 1; InputStream part = new FileInputStream("filePath"); Boolean res = bucket.uploadPart("sam/out/sample.txt", "uploadId", part, partNumber); System.out.println(res);{{%/code%}} #### Get Multipart Upload Summary The following SDK method can be used to obtain an operational summary of all the uploaded parts. To view the summary, we pass the {{%badge%}}uploadId{{%/badge%}} to the {{%badge%}}getMultipartUploadSummary(){{%/badge%}} method. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.beans.ZCMultipartObjectSummary;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCMultipartObjectSummary summaryRes = bucket.getMultipartUploadSummary("sam/out/sample.txt", "uploadId"); // accessing uploaded parts System.out.println("Object Name:" + summaryRes.getKey()); System.out.println("Upload Id:" + summaryRes.getUploadId()); System.out.println("Status:" + summaryRes.getStatus()); System.out.println(summaryRes.getParts().get(0).getUploadedAt()); System.out.println(summaryRes.getParts().get(0).getPartNumber()); {{%/code%}} #### Complete Multipart Upload Operation The following method allows us to terminate the multipart process once all the parts have been successfully uploaded. To complete the process we will pass the {{%badge%}}uploadId{{%/badge%}} to the {{%badge%}}completeMultipartUpload(){{%/badge%}} method. {{%code class="language-java"%}}Boolean completeRes = bucket.completeMultipartUpload("sam/out/sample.txt", "uploadId"); System.out.println(completeRes);{{%/code%}} #### Example Snippet Illustring Implementation of Multipart Operations #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.logging.Logger; import java.util.logging.Level; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.catalyst.advanced.CatalystAdvancedIOHandler; import com.zc.component.stratus.ZCBucket; import com.zc.component.stratus.ZCStratus; import com.zc.component.stratus.beans.ZCInitiateMultipartUpload; import com.zc.exception.ZCServerException; import java.io.InputStream; import java.io.FileInputStream; import java.io.ByteArrayInputStream;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}public class MultipartUpload implements CatalystAdvancedIOHandler { private static final Logger LOGGER = Logger.getLogger(Sample.class.getName()); @Override public void runner(HttpServletRequest request, HttpServletResponse response) throws Exception { try { switch (request.getRequestURI()) { case "/": { ZCStratus stratus = ZCStratus.getInstance(); // get bucket instance ZCBucket bucket = stratus.bucketInstance("sample"); // multipart upload String key = "sample.mp4"; InputStream file = new FileInputStream( "/users/sam/sample.mp4"); ZCInitiateMultipartUpload initiateUploadResponse = bucket.initiateMultipartUpload(key); String uploadId = initiateUploadResponse.getUploadId(); System.out.println("Multipart upload initiated. Upload ID: " + uploadId); // File size and part size (50 MB minimum) int partSize = 50 * 1024 * 1024; // 50 MB long fileSize = file.available(); double result = (double) fileSize / partSize; int noOfParts = (int) Math.ceil(result); // Upload parts in parallel List&lt;CompletableFuture&lt;Void&gt;&gt; uploadedParts = new ArrayList&lt;&gt;(); ExecutorService executor = Executors.newFixedThreadPool(4); int partNumber = 1; while (noOfParts &gt;= partNumber) { int currentPartNumber = partNumber; byte[] buffer = new byte[partSize]; file.read(buffer); InputStream fileData = new ByteArrayInputStream(buffer); uploadedParts.add(CompletableFuture.runAsync(() -&gt; { try { bucket.uploadPart(key, uploadId, fileData, currentPartNumber); LOGGER.log(Level.INFO, "Part {0} Uploaded", currentPartNumber); } catch (Exception e) { throw new RuntimeException(e); } }, executor)); partNumber++; } CompletableFuture&lt;Void&gt; isUploaded = CompletableFuture .allOf(uploadedParts.toArray(new CompletableFuture[0])); try { isUploaded.get(); } catch (Exception e) { throw new ZCServerException("Error while uploading the object", e); } Boolean completeRes = bucket.completeMultipartUpload(key, uploadId); if (completeRes) { LOGGER.log(Level.INFO, "Upload Completed"); } } default: { response.setStatus(404); response.getWriter().write("You might find the page you are looking for at \"/\" path"); } } } catch (Exception e) { if (e instanceof ZCServerException) { int statusCode = ((ZCServerException) e).getStatus(); System.out.println("HTTP status code: " + statusCode); } LOGGER.log(Level.SEVERE, "Exception in Sample", e); } } }{{%/code%}} ### Upload an Object Using Transfer Manager #### Create Transfer Manager Instance #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.transfer.ZCTransferManager;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCTransferManager transferManager= ZCTransferManager.getInstance(bucket);{{%/code%}} #### Multipart Upload **Create Multipart Upload Instance** The following SDK method will create a multipart instance by initiating multipart upload. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.beans.ZCMultipartUpload;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCMultipartUpload multipart = transferManager.createMultipartInstance("sam/out/sample.txt");{{%/code%}} If you are required to create an instance for an already initialized multipart upload operation, then copy and use the code snippet given below {{%code class="language-java"%}}ZCMultipartUpload multipart = transferManager.createMultipartInstance("sam/out/sample.txt", "uploadId");{{%/code%}} #### Upload Part In the following SDK method we are going to be using the {{%badge%}}multipart{{%/badge%}} instance we initialized in the *Create Multipart Upload Instance* section. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import java.io.InputStream;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}int partNumber = 1; InputStream part = new FileInputStream("filePath"); Boolean uploadRes = multipart.uploadPart(part, partNumber); System.out.println(uploadRes);{{%/code%}} #### Upload Summary #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.beans.ZCMultipartObjectSummary;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCMultipartObjectSummary summaryRes = multipart.getUploadSummary(); // accessing uploaded parts System.out.println("Object Name:" + summaryRes.getKey()); System.out.println("Upload Id:" + summaryRes.getUploadId()); System.out.println("Status:" + summaryRes.getStatus()); System.out.println(summaryRes.getParts().get(0).getUploadedAt()); System.out.println(summaryRes.getParts().get(0).getPartNumber()); System.out.println(summaryRes.getParts().get(0).getSize());{{%/code%}} #### Complete Upload {{%code class="language-java"%}}Boolean completeRes = multipart.completeUpload(); System.out.println(completeRes);{{%/code%}} #### Upload Object Using Wrapper The following SDK method acts as a wrapper, where the entire multipart upload operation is carried out without employing multiple steps. Using this method, the object is split into multiple parts, uploaded to the bucket in multiple parts, and then combined once all the parts are uploaded. {{%code class="language-java"%}}import java.io.InputStream; import com.zc.component.stratus.beans.ZCMultipartObjectSummary;{{%/code%}} {{%code class="language-java"%}}InputStream file =new FileInputStream("filePath"); int partSize = 50; ZCMultipartObjectSummary res = transferManager.putObjectAsParts("objetName", file, partSize);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} For object's that are larger than {{%bold%}}2GB{{%/bold%}}, we would recommend that you use the individual SDK methods to carry out the multipart upload operation successfully.{{%/note%}} ### Generate Presigned URL to Upload an Object Presigned URLs are secure URLs that authenticated users can share to their non-authenticated users. This URL will provide non-authenticated users with temporary authorization to access objects. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}URL_ACTION{{%/badge%}}</td> <td>{{%bold%}}Enum{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. This is the parameter that will allow you to generate a presigned URL for an upload action. <ul> <li>{{%badge%}}**URL_ACTION.PUT**{{%/badge%}}: To upload an object</li> </ul> </td> </tr> <tr> <td>{{%badge%}}expiry{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. The URL validity time in seconds. <ul> <li>Default value: {{%bold%}}3600 seconds{{%/bold%}}</li> <li>Minimum value: {{%bold%}}30 seconds{{%/bold%}}</li> <li>Maximum value: {{%bold%}}7 days{{%/bold%}}</li> </ul> </td> </tr> <tr> <td>{{%badge%}}activeFrom{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. This param will contain the time after which the URL is valid. Maximum value is {{%bold%}}7 days{{%/bold%}}. URLs are made active as soon as they are generated by default.</td> </tr> </tbody> </table> #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.enums.URL_ACTION; import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}JSONObject res = bucket.generatePreSignedUrl("sam/out/sample.txt", URL_ACTION.PUT); System.out.println(res.get("signature")); {{%/code%}} ### Generate Presigned URL With Expiry and Active Time #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.enums.URL_ACTION; import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}JSONObject res = bucket.generatePreSignedUrl("object_name",URL_ACTION.GET, "expiry_in","active_from"); System.out.println(res.get("signature")); {{%/code%}} **Example Response for Generating a Presigned URL for Upload** {{%code class="language-json" scroll="set-scroll" %}}{ "signature": "https://sadi-development.zohostratus.com/_signed/sam.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747904989454&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=UPyH5A4AdAaCpw6S6jVhKFSxg3B0B0p619YN0cAIn4c", "expiry_in_seconds": "100", "active_from": "1726492859577" }{{%/code%}} **Example Snippet Illustrating Usage of Presigned URL to Upload an Object** {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import okhttp3.*; import java.io.File; import java.io.IOException;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}public class BinaryFileUpload { public static void main(String[] args) throws IOException { // Create an OkHttpClient instance for making HTTP requests OkHttpClient client = new OkHttpClient(); // Specify the file to upload. Replace "file_path" with actual file location File file = new File("file_path"); // Create the request body with binary content (octet-stream) RequestBody requestBody = RequestBody.create( MediaType.parse("application/octet-stream"), // Use a specific MIME type if known file ); // ️ Build the PUT request with the pre-signed URL Request request = new Request.Builder() .url("https://sadi-development.zohostratus.com/_signed/sam.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747904989454&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=UPyH5A4AdAaCpw6S6jVhKFSxg3B0B0p619YN0cAIn4c") // Replace with a actual URL .put(requestBody) // PUT request to upload file .build(); // Execute the request and handle the response try (Response response = client.newCall(request).execute()) { if (response.isSuccessful()) { System.out.println("Object uploaded successfully"); } else { // Print error if upload fails System.err.println("Error: " + response.code() + " - " + response.body().string()); } } } }{{%/code%}} -------------------------------------------------------------------------------- title: "Extract a Zipped Object" description: "This page lists the Java SDK method to extract a zipped object." last_updated: "2026-03-18T07:41:08.564Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/extract-zipped-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/extract-zipped-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/extract-zipped-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Extract a Zipped Object The following SDK method will allow you to extract a zip file inside Stratus, and every individual content present in the zip file will be considered as individual object and uploaded to Stratus in the same bucket. This entire process will happen *asynchronously*. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Since the extraction process occurs asynchronously, the time in which the entire process is completed is dependent on the size of the zip file that is being extracted.{{%/note%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will be the name of the zip file, you need to extract</td> </tr> <tr> <td>{{%badge%}}destination{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will contain the complete {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path information{{%/link%}} of the destination, where the extracted objects will be stored in the bucket.</td> </tr> </tbody> </table> #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.beans.ZCStratusZipExtractResponse;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCStratusZipExtractResponse res = bucket.unzipObject("sam/out/sample.zip","output/"); System.out.println(res.getObjectName()); System.out.println(res.getTaskId());{{%/code%}} ### Get Zip Extraction Status The zip extraction process occurs asynchronously, and the time it takes to complete the extraction process is highly contingent on the size of the zip file. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} Using the {{%badge%}}taskId{{%/badge%}} parameter, in the following SDK method, we can determine the status of the extraction. The {{%badge%}}taskId{{%/badge%}} is returned in the response of {{%badge%}}unzipObject(){{%/badge%}} method. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}JSONObject res = object.getUnzipStatus("sam/out/sample.zip","taskId"); System.out.println(res);{{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "task_id": "6963000000272049", "status": "SUCCESS" }{{%/code%}} -------------------------------------------------------------------------------- title: "Copy Object" description: "This page lists the Java SDK method to make a copy of an object within its own bucket." last_updated: "2026-03-18T07:41:08.564Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/copy-objects/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/copy-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/copy-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Copy Object Using this SDK method, you can copy an object and paste it within a bucket. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} The {{%badge%}}key{{%/badge%}} will be the object you are going to copy, and the {{%badge%}}destination{{%/badge%}}, will contain the new name of the copied object. To paste the copied object in a different path, you need to provide the complete path name as {{%badge%}}destination{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} * You need to provide the complete object name, along with the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}{{%bold%}}path{{%/bold%}}{{%/link%}} for both {{%badge%}}key{{%/badge%}} and {{%badge%}}destination{{%/badge%}} values. * For example, if you have file named "{{%badge%}}kitten.png{{%/badge%}}" in the path {{%badge%}}pictures/puppy{{%/badge%}}, and you need to copy the file to {{%badge%}}pictures/kitten{{%/badge%}} path, then: <br /> {{%badge%}}key{{%/badge%}} value will be '{{%badge%}}pictures/puppy/kitten.png{{%/badge%}}'<br /> {{%badge%}}destination{{%/badge%}} value will be '{{%badge%}}pictures/kitten/kitten.png{{%/badge%}}'{{%/note%}}<br /> #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}JSONObject copyRes = bucket.copyObject("sam/out/sample.txt", "output/sample.txt") System.out.println(copyRes);{{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "copy_to": "output/sample.txt", "object_key": "sam/out/sample.txt", "message": "Object copied successfully." }{{%/code%}} -------------------------------------------------------------------------------- title: "Rename and Move Operations on an Object" description: "This page lists the Java SDK method to perform rename and move operations on an object." last_updated: "2026-03-18T07:41:08.565Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/rename-move-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/rename-move-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/rename-move-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Rename and Move Operations on an Object To rename and to move an object, we will be using the same {{%badge%}}renameObject(){{%/badge%}} SDK method. ### Rename an Object Using the {{%badge%}}renameObject(){{%/badge%}} SDK method you can rename objects present in a bucket. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} The following characters including space are not supported when you create a path or an object: double quote, both angular brackets, hashtag, backward slash and pipe symbol.{{%/note%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>The original name of the object that you need to rename</td> </tr> <tr> <td>{{%badge%}}destination{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>The new name that you rename the object with</td> </tr> </tbody> </table> #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}JSONObject res = bucket.renameObject("sam/out/sample.txt", "sam/out/update_sample.txt"); System.out.println(res);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} You cannot rename objects in a bucket that has {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} enabled.{{%/note%}} ### Move an Object Using the {{%badge%}}renameObject(){{%/badge%}} SDK method, we can move the object from one path to another within a bucket. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>The complete name and {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}} of the object that you are required to move.</td> </tr> <tr> <td>{{%badge%}}destination{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>The complete name and new path of the object.</td> </tr> </tbody> </table> {{%note%}}{{%bold%}}Note:{{%/bold%}} * You need to provide the complete object name, along with the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}{{%bold%}}path{{%/bold%}}{{%/link%}} for both {{%badge%}}key{{%/badge%}} and {{%badge%}}destination{{%/badge%}} values. * For example, if you have file named "{{%badge%}}kitten.png{{%/badge%}}" in the path {{%badge%}}pictures/puppy{{%/badge%}}, and you need to move the file to {{%badge%}}pictures/kitten{{%/badge%}} path, then: <br /> {{%badge%}}key{{%/badge%}} value will be '{{%badge%}}pictures/puppy/kitten.png{{%/badge%}}'<br /> {{%badge%}}destination{{%/badge%}} value will be '{{%badge%}}pictures/kitten/kitten.png{{%/badge%}}'{{%/note%}}<br /> #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}JSONObject res = bucket.renameObject("sam/out/sample.txt", "output/sample.txt"); System.out.println(res);{{%/code%}}<br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} You cannot perform move operations in a bucket that has {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} enabled.{{%/note%}} -------------------------------------------------------------------------------- title: "Delete Objects" description: "This page lists the Java SDK method to delete objects stores in a bucket." last_updated: "2026-03-18T07:41:08.565Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/delete-objects/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Delete an Object Help Documentation (/en/cloud-scale/help/stratus/objects/manage-object/delete-object/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/delete-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/delete-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/delete-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/delete-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Delete Objects The following SDK methods will allow you to perform delete operations in Stratus. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}versionId{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for your bucket then, this param will help you refer to a particular version using its unique Version ID.</td> </tr> <tr> <td>{{%badge%}}ttl{{%/badge%}}</td> <td>{{%bold%}}int{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. It allows you to schedule your delete operations. For example, if you provide the value of {{%badge%}}ttl{{%/badge%}} as {{%bold%}}60{{%/bold%}}, the delete operation will only occur after 60 seconds. The value of {{%badge%}}ttl{{%/badge%}} has to be >= 60 seconds.</td> </tr> </tbody> </table> ### Delete a Single Object Using this SDK method, you can delete a particular object by passing the object name to the {{%badge%}}deleteObject(){{%/badge%}} method. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}int ttl = 200; //time to live in seconds JSONObject deleteRes = bucket.deleteObject("sam/out/sample.txt", "versionId", ttl); System.out.println(deleteRes); {{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled on the bucket and no specific {{%badge%}}versionId{{%/badge%}} is provided, deleting an object will {{%bold%}}remove all versions{{%/bold%}} of that object by default.{{%/note%}} ### Delete Multiple Objects Using this SDK method, you can delete multiple objects by passing the names of the objects that need to be deleted as an array. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} Ensure you provide the {{%badge%}}versionId{{%/badge%}} of the object if you enabled {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} for your bucket. You can also schedule your delete operation using the {{%badge%}}ttl{{%/badge%}} variable. For example, if you provide the value of {{%badge%}}ttl{{%/badge%}} as **60**, the delete operation will only occur after **60 seconds**. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.beans.ZCDeleteObjectRequest; import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCDeleteObjectRequest deleteRequest = ZCDeleteObjectRequest.getInstance(); deleteRequest.setObject("sam/out/sample.txt", "76dhe7yr738rud"); deleteRequest.setObject("sam/out/add.txt", "cjdhf73673g7yt7d"); deleteRequest.setTTL(70); JSONObject res = bucket.deleteObjects(deleteRequest); System.out.println(res);{{%/code%}} ### Truncate Bucket Using this SDK method you will be able to essentially every single object present in the bucket. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}JSONObject truncateRes = bucket.truncate(); System.out.println(truncateRes);{{%/code%}} ### Delete a Path in the Bucket Using this SDK, you will be able to delete all the objects present in a {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}. You need to pass the complete path to the {{%badge%}}deletePath(){{%/badge%}} method. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import org.json.simple.JSONObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}JSONObject res = bucket.deletePath("sam/"); System.out.println(res);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Ensure that you provide the exact path. If an incorrect path is provided, the delete action will get scheduled, but it will result in an error.{{%/note%}} -------------------------------------------------------------------------------- title: "Create Object Instance" description: "This page lists the Java SDK method to create an object instance." last_updated: "2026-03-18T07:41:08.565Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/create-object-instance/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-object-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-object-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Object Instance Use the following method to get an object instance to perform object-related operations. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.ZCObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCObject object = bucket.getObjectInstance("sam/out/sample.txt");{{%/code%}} -------------------------------------------------------------------------------- title: "List Versions of an Object" description: "This page lists the Java SDK method to get versions of an object." last_updated: "2026-03-18T07:41:08.592Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/list-object-versions/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Object Versioning Help Documentation (/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/get-object-versions/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/get-object-versions/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # List Versions of an Object ### List All Versions of an Object Enabling {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} in a bucket allows you to store multiple versions of the same object in the bucket. Each version of the object will have its own {{%badge%}}versionId{{%/badge%}}. This SDK method allows you to get all the existing versions of an object present in a bucket by pagination. The Object reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-object-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}nextToken{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>Will hold the value to determine the next set of versions.</td> </tr> <tr> <td>{{%badge%}}maxVersion{{%/badge%}}</td> <td>{{%bold%}}int{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. Will hold the value of the maximum number of versions of the object that can be listed per iteration.</td> </tr> </tbody> </table> #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.ZCBucket; import com.zc.component.stratus.ZCStratus; import com.zc.component.stratus.ZCPagedObjectResponse; import com.zc.component.stratus.ZCObject; import com.zc.component.stratus.beans.ZCObjectVersions; import com.zc.component.stratus.beans.ZCObjectVersions.ZCVersionDetail; import java.util.List;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}String nextToken = null; int maxVersion = 5; do { ZCObjectVersions res = object.listPagedVersions(maxVersion, nextToken); System.out.println(res.getVersion()); for(ZCVersionDetail version : res.getVersion()) { System.out.println("version id: "+version.getVersionId()); } nextToken = res.getNextToken(); } while(nextToken != null);{{%/code%}} ### List All Versions of the Object in an Iterable Manner You can use the following SDK method to list all available versions of the object in a single call. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import java.util.Iterator; import com.zc.component.stratus.beans.ZCObjectVersions; import com.zc.component.stratus.beans.ZCObjectVersions.ZCVersionDetail;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}int maxVersion = 10; Iterable&lt;List&lt;ZCVersionDetail&gt;&gt; paginationIterable=object.listIterableVersions(maxVersion); Iterator&lt;List&lt;ZCVersionDetail&gt;&gt; iterator = paginationIterable.iterator(); while(iterator.hasNext()) { List&lt;ZCVersionDetail&gt; objects= iterator.next(); for(ZCVersionDetail object: objects){ System.out.println(object.getVersionId()); } }{{%/code%}} -------------------------------------------------------------------------------- title: "Get Object Details" description: "This page lists the Java SDK method to get details of objects stored in a bucket." last_updated: "2026-03-18T07:41:08.593Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/object-details/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Objects Help Documentation (/en/cloud-scale/help/stratus/objects/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/object-details/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/object-details/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/cloud-scale/help/stratus/introduction) - Android SDK (/en/cloud-scale/help/stratus/introduction) - Flutter SDK (/en/cloud-scale/help/stratus/introduction) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Get Object Details ### Get Details of an Object Using this SDK method, you will be able to get all details of an object and all its versions. The Object reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-object-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.ZCObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCObject objectRes = object.getDetails(); System.out.println(objectRes);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled, then using this SDK method will only return the latest version's object details.{{%/note%}} ### Get Details of a Particular Version of the Object Using this SDK method, you will be able to get all details of a particular object's version. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}versionId{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for your bucket then, this param will help you refer to a particular version using its unique Version ID.</td> </tr> </tbody> </table> #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.stratus.ZCObject;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}ZCObject objectRes = object.getDetails("versionId"); System.out.println(objectRes);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} You can get the details of the latest version of the object by passing the parameter valuse as {{%badge%}}topVersion{{%/badge%}}.{{%/note%}} -------------------------------------------------------------------------------- title: "Put Object Meta Data" description: "This page lists the Java SDK method to add meta data for an object stored in the object." last_updated: "2026-03-18T07:41:08.593Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/cloud-scale/stratus/put-object-meta/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Object Metadata Help Documentation (/en/cloud-scale/help/stratus/objects/introduction/#metadata) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/put-object-meta/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/put-object-meta/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Put Object Meta Data Using the following SDK method, you can add {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#metadata" %}}meta details{{%/link%}} for a particular object stored in a bucket in Stratus. The Object reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-object-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} The meta details will be passed as JSON key value pairs. For example, {"meta_key" : "meta_value"} {{%note%}}{{%bold%}}Note:{{%/bold%}} * You can use alphanumeric, underscores, or whitespace characters, as well as hyphens, to write your metadata. No other special character is allowed other than the once mentioned. * You can fetch the metadata of an object using the {{%badge%}}**HEAD**{{%/badge%}} request method. In the response, the metadata will be listed in the key '{{%badge%}}x-user-meta{{%/badge%}}'. * The maximum size limit of characters allowed for the overall metadata is **2047** characters. The character count used to determine the size limit also includes the colon ":" special character used to define the key value pair.{{%/note%}} #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import org.json.simple.JSONObject; import java.util.HashMap;{{% /panel_without_adjustment %}} {{%code class="language-java"%}}HashMap&lt;String, String&gt; objectMeta = new HashMap&lt;&gt;(); objectMeta.put("key1", "value1"); objectMeta.put("key2", "value2"); JSONObject res = object.putMeta(objectMeta); System.out.println(res);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Using this method to pass new meta details without adding the existent details will delete the existing details and only put the new details. To avoid this, pass the new meta details along with the existing meta details.{{%/note%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "message": "Metadata added successfully" }{{%/code%}} --- ## SDK — Node JS — Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page lists all the Node.js SDK methods required to carry out Stratus operations through code." last_updated: "2026-03-18T07:41:08.595Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/overview/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Stratus ## Overview Cloud Scale {{%link href="/en/cloud-scale/help/stratus/introduction" %}}Stratus{{%/link%}} is Catalyst's robust and powerful storage solution. You can store data of any format in the form of {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}Objects{{%/link%}} in containers called {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}}. Each Bucket and every individual object in the bucket has a secure {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} and {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/#bucket-url" %}}Bucket URL{{%/link%}}. You can perform upload and download operations on objects and even provide {{%link href="/en/cloud-scale/help/stratus/stratus-permissions/#custom-permissions" %}}custom permissions{{%/link%}} for each object. The following table contains the list of all the Catalyst SDKs that can be used to perform Stratus operations through code. <table class="content-table"> <thead> <tr> <th class="w30p">Category</th> <th class="w70p">SDK Method</th> </tr> </thead> <tbody> <tr> <td>General Stratus Operations</td> <td> <ul> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-stratus-instance/" %}}Create Stratus Instance{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/check-bucket/" %}}Check Bucket Availability{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/list-buckets/" %}}List Buckets{{%/link%}}</li> </ul> </td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}Create Bucket Instance{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/get-bucket-details/" %}}Get Bucket Details{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/get-bucket-cors/" %}}Get Bucket CORS{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/list-objects/" %}}List Objects in a Bucket{{%/link%}} <ul> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/list-objects/#list-all-objects-by-pagination" %}}List all Objects by Pagination{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/list-objects/#list-objects-through-iteration" %}}List Objects Through Iteration{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/check-object-availability/" %}}Check Object Availability{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/" %}}Download Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/#download-an-object" %}}Download an Object{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/#download-a-portion-of-the-object" %}}Download a Portion of the Object{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/#download-an-object-using-transfer-manager" %}}Download an Object Using Transfer Manager{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/#generate-presigned-url-to-download-an-object" %}}Generate Presigned URL to Download an Object{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/" %}}Upload Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/#upload-object-as-a-stream" %}}Upload Object as a Stream{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/#upload-object-as-a-string" %}}Upload Object as a String{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/#upload-object-with-options" %}}Upload Object with Options{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/#upload-object-using-multipart" %}}Upload Object Using Multipart{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/#upload-an-object-using-transfer-manager" %}}Upload an Object Using Transfer Manager{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/#generate-presigned-url-to-upload-an-object" %}} Generate Presigned URL to Upload an Object{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/extract-zipped-object/" %}}Extract a Zipped Object In Stratus{{%/link%}} <ul> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/extract-zipped-object/#get-zip-extraction-status" %}}Get Zip Extraction Status{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/copy-objects/" %}}Copy Object{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/rename-move-object/" %}}Rename and Move Operations on an Object{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/" %}}Delete Objects{{%/link%}} <ul> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/#delete-a-single-object" %}}Delete a Single Object{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/#delete-a-specific-version-of-an-object-after-a-specific-time" %}}Delete a Specific Version of an Object after a Specific Time{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/#delete-multiple-objects" %}}Delete Multiple Objects{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/#truncate-bucket" %}}Truncate Bucket{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/#delete-a-path-in-the-bucket" %}}Delete a Path in the Bucket{{%/link%}}</li> </ul> </li> </ul> </td> </tr> <tr> <td>Object Operations</td> <td> <ul> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-object-instance/" %}}Create Object Instance{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/list-object-versions/" %}}List Object Versions{{%/link%}} <ul> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/list-object-versions/#list-all-versions-of-an-object-through-pagination" %}}List All Versions of an Object Through Pagination{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/list-object-versions/#list-all-versions-of-the-object-through-iteration" %}}List All Versions of the Object Through Iteration{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/object-details/" %}}Get Object Details{{%/link%}} <ul> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/object-details/#get-details-of-all-objects" %}}Get Details of All Objects{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/object-details/#get-details-of-a-particular-version-of-the-object" %}}Get Details of a Particular Version of the Object{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/put-object-meta/" %}}Put Object Meta Data{{%/link%}}</li> </ul> </td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Create Stratus Instance" description: "This page lists the Node.js SDK method to create a Stratus instance." last_updated: "2026-03-18T07:41:08.595Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/create-stratus-instance/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/create-stratus-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-stratus-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/initialize-stratus/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Stratus Instance You can get the {{%badge%}}stratus{{%/badge%}} component reference as shown below. This will not fire a server-side call. We will refer to this component instance in various code snippets of working with Stratus. {{%code class="language-javascript" scroll="set-scroll" %}}// Get a stratus instance const stratus = app.stratus();{{%/code%}} -------------------------------------------------------------------------------- title: "Check Bucket Availability" description: "This page lists the Node.js SDK method to check if the bucket exists in your project." last_updated: "2026-03-18T07:41:08.595Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/check-bucket/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/check-bucket/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/check-bucket/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/check-bucket/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Check Bucket Availability Using the {{%badge%}}headBucket(){{%/badge%}} SDK method, you can check the existence of a bucket in Stratus, and further check if the user has the relevant permissions to access the objects present in the bucket. The Stratus reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-stratus-instance/" %}}component instance{{%/link%}}. Possible responses when using this SDK: * If the bucket exists and if the user has the relevant permissions to access the bucket, the response '**true**' will be returned. * If the bucket does not exist, or if the user does not have permission to access the bucket, the response '**false**' will be returned. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}bucketName{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique name of the bucket{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}throwErr{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If you set this parameter as "{{%bold%}}true{{%/bold%}}", then it will throw an error when the bucket is not found in the project. The default value is "{{%bold%}}false{{%/bold%}}"</td> </tr> </tbody> </table> {{%code class="language-javascript" scroll="set-scroll" %}}const headBucketResponse = await stratus.headBucket('bucketName'); // check the bucket is available in stratus console.log(headBucketResponse);{{%/code%}} **Possible Errors** {{%note%}}{{%bold%}}Note:{{%/bold%}} If you use the SDK with the {{%badge%}}throw_err{{%/badge%}} parameter, and the bucket does not exist, or if you do not have sufficient permissions then you may encounter any of the errors listed below.{{%/note%}} <table class="content-table"> <thead> <tr> <th class="w30p">Error Code</th> <th class="w70p">Meaning</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}{{%bold%}}404{{%/bold%}}{{%/badge%}}</td> <td>Not Found. Bucket Not found in Stratus.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}401{{%/bold%}}{{%/badge%}}</td> <td>Unauthorized/Access Denied - User doesn't have permission to perform the particular operation.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}403{{%/bold%}}{{%/badge%}}</td> <td>Permission Denied - User does not have permission to access the particular bucket.</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "List Buckets" description: "This page lists the Node.js SDK method to list buckets created in your project." last_updated: "2026-03-18T07:41:08.595Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/list-buckets/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/list-buckets/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/list-buckets/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # List Buckets The following SDK method will return all the buckets present in the project. The Stratus reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-stratus-instance/" %}}component instance{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const responses= await stratus.listBuckets(); // return all the buckets console.log(responses);{{%/code%}} {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}[ { "bucket_name": "zcstratus122", "project_details": { "project_name": "Learn", "id": "6759000000014001", "project_type": "Live" }, "created_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "created_time": "Mar 26, 2024 12:44 PM", "modified_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "modified_time": "Mar 30, 2024 11:38 AM", "bucket_meta": { "versioning": "False", "caching": { "status": "Enabled", "delivery_point_id": "01ht6zj7k536c29ymsgfeky1mg" }, "encryption": "False", "audit_consent": "False" }, "bucket_url": "https://zcstratus122-development.zohostratus.com" }, { "bucket_name": "zcstratus12345", "project_details": { "project_name": "Learn", "id": "6759000000014001", "project_type": "Live" }, "created_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "created_time": "Mar 13, 2024 05:51 PM", "modified_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "modified_time": "Apr 18, 2024 12:44 PM", "bucket_meta": { "versioning": "True", "caching": { "status": "Enabled", "delivery_point_id": "01hrxy25tv1vex73qhm85g88bf" }, "encryption": "False", "audit_consent": "False" }, "bucket_url": "https://zcstratus12345-development.zohostratus.com" } ]{{%/code%}} -------------------------------------------------------------------------------- title: "Create Bucket Instance" description: "This page lists the Node.js SDK method to create a bucket instance." last_updated: "2026-03-18T07:41:08.595Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Create a Bucket Help Documentation (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Bucket Instance To perform bucket level operations, you need to create a bucket instance. We will refer to this component instance in various code snippets of working with {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}} in Stratus. {{%code class="language-javascript" scroll="set-scroll" %}}const bucket = stratus.bucket("bucketName");{{%/code%}} -------------------------------------------------------------------------------- title: "Get Bucket Details" description: "This page lists the Node.js SDK method to get all possible details of a bucket." last_updated: "2026-03-18T07:41:08.596Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/get-bucket-details/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Create a Bucket Help Documentation (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Get Bucket Details The following SDK method will allow you to get all available details of a particular bucket. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const buckets = await bucket.getDetails(); // get details of a given bucket console.log(buckets);{{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "bucket_name": "zcstratus122", "project_details": { "project_name": "Learn", "id": "6759000000014001", "project_type": "Live" }, "created_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "created_time": "Mar 26, 2024 12:44 PM", "modified_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "modified_time": "Mar 30, 2024 11:38 AM", "bucket_meta": { "versioning": "False", "caching": { "status": "Enabled", "delivery_point_id": "01ht6zj7k536c29ymsgfeky1mg" }, "encryption": "False", "audit_consent": "False" }, "bucket_url": "https://zcstratus122-development.zohostratus.com", "caching_url": "https://zcstratus122-development.nimbuslocaledge.com", "objects_count": "74", "size_in_bytes": "925906411" }{{%/code%}} -------------------------------------------------------------------------------- title: "Get Bucket CORS" description: "This page lists the Node.js SDK method to get the current CORS configuration of the bucket." last_updated: "2026-03-18T07:41:08.596Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/get-bucket-cors/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Stratus Bucket CORS Help Documentation (/en/cloud-scale/help/stratus/stratus-config/bucket-cors/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/get-bucket-cors/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/get-bucket-cors/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Get Bucket CORS The {{%badge%}}getCors(){{%/badge%}} SDK method, will return the current CORS configuration of a specific bucket in Stratus. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} CORS of a bucket can be edited by any user that has or has been granted {{%badge%}}Write{{%/badge%}} permission for Stratus component in the project, using the {{%link href="/en/getting-started/set-up-a-catalyst-project/profiles-and-permissions/" %}}Profiles & Permissions{{%/link%}} section. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can find out more about Bucket CORS from this {{%link href="/en/cloud-scale/help/stratus/stratus-config/bucket-cors/" %}}help section{{%/link%}}.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}const cors = await bucket.getCors(); console.log(cors);{{%/code%}} -------------------------------------------------------------------------------- title: "List Objects in a Bucket" description: "This page lists the Node.js SDK method to list the objects stroed in a bucket." last_updated: "2026-03-18T07:41:08.596Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/list-objects/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/list-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/list-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/get-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/get-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/get-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # List Objects in a Bucket ### List all Objects by Pagination This SDK method will allow you to get a list of all the objects present in a particular bucket by pagination. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} For each call, a limited number of objects will be returned, and the next call will be initiated only if a continuation token is returned. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}maxKey{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will contain the maximum limit of objects that can be listed by pagination.</td> </tr> <tr> <td>{{%badge%}}nextToken{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Mandatory{{%/bold%}} parameter. Will contain the token to get the next set of objects.</td> </tr> <tr> <td>{{%badge%}}prefix{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. To list objects that match the prefix value.</td> </tr> <tr> <td>{{%badge%}}orderBy{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. To list objects either in ascending or descending order. {{%bold%}}Default Value{{%/bold%}}: {{%badge%}}asc{{%/badge%}}</td> </tr> <tr> <td>{{%badge%}}folderListing{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. To choose to list either just the root-level objects in the bucket or list all the objects present in all the paths of the bucket. {{%bold%}}Default Value{{%/bold%}}: {{%badge%}}false{{%/badge%}}<br />For instance, if you set value as {{%badge%}}true{{%/badge%}}; the root-level objects alone will be listed. If you set the value as {{%badge%}}false{{%/badge%}}; all the objects present in all the paths of the bucket will be listed </td> </tr> </tbody> </table> In the following SDK method, a maximum value of pagination is set using {{%badge%}}maxKey{{%/badge%}}. Using prefix, you can list objects that only match the {{%badge%}}prefix{{%/badge%}}. The response we get will contain the following properties of the bucket, which will be stored in {{%badge%}}moreOptions{{%/badge%}}: * {{%badge%}}key count{{%/badge%}}: Will contain the value of the number of objects that are being returned * {{%badge%}}max keys{{%/badge%}}: The maximum limit of objects that can be returned * {{%badge%}}Truncated{{%/badge%}}: Will contain the status to notify if a bucket is truncated or not. * {{%badge%}}contents{{%/badge%}}: List of object details * {{%badge%}}continuation_token{{%/badge%}}: If you a sent a {{%badge%}}continuation_token{{%/badge%}} in the request, it will be shown in the response. * {{%badge%}}next_continuation_token{{%/badge%}}: If the response was truncated, the value of this key must be passed as {{%badge%}}continuation_token{{%/badge%}} to the same method for retrieving the next set of objects. With each iteration, we will list the {{%badge%}}maxKey{{%/badge%}} number of objects and check if {{%badge%}}nextToken{{%/badge%}} has been created. Using {{%badge%}}nextToken{{%/badge%}} we will continue the iteration till all the objects have been listed. {{%code class="language-javascript" scroll="set-scroll" %}}async function listMyPaginatedObjects(maxKeys = null, prefix = null, nextToken = null) { const options = { // Maximum number of keys to return in one call maxKeys, // Token to fetch the next page of objects continuationToken: nextToken, // Order in which objects are listed: 'asc' or 'desc' // orderBy: 'desc', // Whether to list objects in a folder-like structure (true) or flat structure (false) // folderListing: 'true', // Only list objects with this prefix prefix }; // Retrieve a page of objects const objects = await bucket.listPagedObjects(options); console.log("response:", objects.contents); // If more objects are available, recursively fetch the next set if (objects.truncated) { listMyPaginatedObjects(maxKeys, prefix, objects.next_continuation_token); } } // Initial call to list objects with a maximum of 2 keys per page and prefix "sam" await listMyPaginatedObjects(5, "sam");{{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "prefix": "sam", "key_count": "5", "max_keys": "5", "truncated": "True", "next_continuation_token": "47VrqTzR9ukMF9gr8YcziVVzdRP5GCjq1NfM5fMBpMfvw5qcXFRSueuqCTRUCzNd9dHfquXHi2afDanLH6MbyJo6", "contents": [ { "key_type": "file", "key": "sam1s2ww.mp4", "size": "427160684", "content_type": "video/mp4", "etag": "78c2b173b56cd944e9c79abd601f6073", "last_modified": "May 21, 2024 01:00 PM" }, { "key_type": "file", "key": "samdm.txt", "size": "23", "content_type": "text/plain; charset=utf-8", "etag": "c0122754f465e42eb97b5af174663c29", "last_modified": "May 14, 2024 01:30 PM" }, { "key_type": "file", "key": "samplvbse1.json", "size": "8", "content_type": "application/json", "etag": "499e7dbaee453352a9c17407a676dbda", "last_modified": "May 13, 2024 10:05 AM" }, { "key_type": "file", "key": "samplse1.json", "size": "8", "content_type": "application/json", "etag": "499e7dbaee453352a9c17407a676dbda", "last_modified": "May 13, 2024 09:20 AM" }, { "key_type": "file", "key": "sampjkhdldbed.mp4", "size": "0", "content_type": "video/mp4", "etag": "d41d8cd98f00b204e9800998ecf8427e", "last_modified": "May 12, 2024 10:54 PM" } ] } {{%/code%}} <br> ### List Objects Through Iteration Using this SDK method, you can list all the objects present in a bucket in a single API call, using iteration technique. Using the {{%badge%}}maxKey{{%/badge%}} variable, you can access the required number of objects. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-javascript" scroll="set-scroll" %}}const options = { // Maximum number of objects returned per request maxKeys: 5, // Order in which objects are listed: 'asc' or 'desc' // orderBy: 'desc', // Whether to list objects in a folder-like structure (true) or flat structure (false) // folderListing: 'true', // Only list objects that begin with the specified prefix prefix: 's' }; // List iterable files from the bucket const files = bucket.listIterableObjects(options); for await (const file of files) { console.log('file:', file); }{{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "key_type": "file", "key": "ssdgs.mp4", "size": "3145728", "content_type": "video/mp4", "etag": "9685b8d5b8b719274bac854b897d95ec", "last_modified": "May 21, 2024 03:49 PM" } { "key_type": "file", "key": "Sasss.mp4", "size": "2674", "content_type": "video/mp4", "etag": "24c1122087e9be930ff1e957e83f5224", "last_modified": "May 21, 2024 02:55 PM" } { "key_type": "file", "key": "Samfplessss.mp4", "size": "2674", "content_type": "video/mp4", "etag": "24c1122087e9be930ff1e957e83f5224", "last_modified": "May 21, 2024 02:52 PM" } { "key_type": "file", "key": "demo.mp4", "size": "3400", "content_type": "video/mp4", "etag": "24e957e83f5224c1122087e9be930ff1", "last_modified": "May 21, 2024 02:52 PM" } { "key_type": "file", "key": "performance.mp4", "size": "1454", "content_type": "video/mp4", "etag": "087e9be930ff124c1122e957e83f5224", "last_modified": "May 21, 2024 02:52 PM" } {{%/code%}} -------------------------------------------------------------------------------- title: "Check Object Availability" description: "This page lists the Node.js SDK method to check if an object is present in a bucket." last_updated: "2026-03-18T07:41:08.596Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/check-object-availability/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/check-object-availability/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/check-object-availability/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Check Object Availability Using this SDK method, you can check if a particular object is present in the bucket, if the user has the required permissions to access the object. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. If you have enabled {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} for your bucket, then you need to pass the {{%badge%}}versionID{{%/badge%}} as the param, to check if a particular version of the object is available. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} When you use this SDK method, you will get either of the following responses: - {{%badge%}}**true**{{%/badge%}}: If the object is available, the specified version is available, and if the user has the relevant permissions to access the objects. - {{%badge%}}**false**{{%/badge%}}: - If the object or the particular version of the object is not available in the bucket. - If the user does not have the required permissions to access the object. - If the bucket does not exist. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}objectName{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object.</td> </tr> <tr> <td>{{%badge%}}versionId{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. Will hold the unique version ID of the object, if {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled.</td> </tr> <tr> <td>{{%badge%}}throwErr{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If you set this parameter as "{{%bold%}}true{{%/bold%}}", then it will throw an error when the bucket is not found in the project. The default value is "{{%bold%}}false{{%/bold%}}"</td> </tr> </tbody> </table> {{%code class="language-javascript" scroll="set-scroll" %}}const options = { versionId: 'djkfhdiufy762', throwErr: false }; const headObjectRes = await bucket.headObject("sam/out/sample.txt", options); console.log(headObjectRes);{{%/code%}} **Possible Errors** {{%note%}}{{%bold%}}Note:{{%/bold%}} If you use the SDK with the {{%badge%}}throwErr{{%/badge%}} parameter, and the object does not exist, or if you do not have sufficient permissions then you may encounter any of the errors listed below.{{%/note%}} <table class="content-table"> <thead> <tr> <th class="w30p">Error Code</th> <th class="w70p">Meaning</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}{{%bold%}}404{{%/bold%}}{{%/badge%}}</td> <td>Not Found. Object Not found.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}401{{%/bold%}}{{%/badge%}}</td> <td>Unauthorized/Access Denied - User doesn't have permission to perform the particular operation.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}403{{%/bold%}}{{%/badge%}}</td> <td>Permission Denied - User does not have permission to access the particular object.</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Download Object" description: "This page lists the Node.js SDK method to download objects from a bucket." last_updated: "2026-03-18T07:41:08.597Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Download Object Help Documentation (/en/cloud-scale/help/stratus/objects/manage-object/download-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/download-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/download-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/download-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/download-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/download-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Download Object ### Download an Object The SDKs present in the section will allow you to {{%link href="/en/cloud-scale/help/stratus/objects/manage-object/download-object/" %}}download a particular object{{%/link%}}, multiple objects, or version of the object. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. The first step of the download operation is a {{%badge%}}GET{{%/badge%}} operation that retrieves the required object from the bucket. To be able to download an object, the requester must have {{%badge%}}READ{{%/badge%}} access permissions. However, owners of the bucket do have the option to grant {{%badge%}}READ{{%/badge%}} access permissions to users, allowing them to download the object without using the required response headers. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for your bucket, you need to pass the {{%badge%}}versionId{{%/badge%}} to download the particular version of the object. If no {{%badge%}}versionId{{%/badge%}} is passed, then by default, the latest version of the object will be downloaded. If *Versioning* was enabled for a bucket, then disabled. By default, the principal first object will be downloaded. To ensure you download the latest version of this object, you need to pass the {{%badge%}}versionId{{%/badge%}} param with the value "{{%badge%}}topVersion{{%/badge%}}". {{%code class="language-javascript" scroll="set-scroll" %}}const res = await bucket.getObject("sam/out/sample.txt"); // download the object to local machine const files = fs.createWriteStream('filePath'); res.on('data', (data) => { files.write(data) });{{%/code%}} ### Download a Portion of the Object The following SDK method is used with the {{%badge%}}range{{%/badge%}} parameter. The range parameter allows you to download a specific {{%badge%}}range{{%/badge%}} of bytes of an object. {{%code class="language-javascript" scroll="set-scroll" %}}const options = { 'versionId': 'djkshr8374yiuhf48', // download the object with given versionId 'range': '0-2000' // start and end range of the object in bytes } const res = await bucket.getObject("sam/out/sample.txt", options); // download the object to your local machine const files = fs.createWriteStream('filePath'); res.on('data', (data) => { files.write(data) });{{%/code%}} ### Download an Object Using Transfer Manager In this section, we are going to go over SDK methods that will allow you to successfully download large objects from Stratus to your local system using **Transfer Manager** technique. Transfer Manager is an operation where the large object is split into multiple byte ranges using the start and end bytes range of the object. Each of the object's parts is then returned as a stream, and they are downloaded to your local system. **Ensure the following packages are imported** {{%code class="language-javascript" scroll="set-scroll" %}}const { TransferManager } = require('zcatalyst-sdk-node/lib/stratus');{{%/code%}} #### Create Transfer Manager Instance {{%code class="language-javascript" scroll="set-scroll" %}} const transferManager = new TransferManager(bucket); // create transfer manager instance{{%/code%}} #### Download Object as Iterable Part Streams {{%code class="language-javascript" scroll="set-scroll" %}}const partSize=50; const getObjectRes = await transferManager.getIterableObject("sam/out/sample.txt",partSize); // download the object to local machine const file = fs.createWriteStream('filePath'); // create a file write stream for await (const chunk of getObjectRes) { file.write(chunk); }{{%/code%}} #### Generate Object Parts for Download In this SDK method we will download a portion of the object that falls under the required start and end range of bytes. {{%code class="language-javascript" scroll="set-scroll" %}}const file = fs.createWriteStream("filePath"); const partSize = 50; const downloadRes = await transferManager.generatePartDownloaders("sam/out/sample.txt", partSize); let partNum = 0; while (partNum < downloadRes.length) { const objectPart = downloadRes[partNum++]; const buffer = await objectPart(); // return the object part as stream // process the stream }{{%/code%}} ### Generate Presigned URL to Download an Object Presigned URLs are secure URLs that authenticated users can share to their non-authenticated users. This URL will provide non-authenticated users with temporary authorization to access objects. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}urlAction{{%/badge%}}</td> <td>{{%bold%}}Request Method{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. This is the parameter that will allow you to generate a presigned URL for either a download(GET) action. <ul> <li>{{%badge%}}**GET**{{%/badge%}}: To download an object</li> </ul> </td> </tr> <tr> <td>{{%badge%}}expiry{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. The URL validity time in seconds. <ul> <li>Default value: {{%bold%}}3600 seconds{{%/bold%}}</li> <li>Minimum value: {{%bold%}}30 seconds{{%/bold%}}</li> <li>Maximum value: {{%bold%}}7 days{{%/bold%}}</li> </ul> </td> </tr> <tr> <td>{{%badge%}}activeFrom{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. This param will contain the time after which the URL is valid. Maximum value is {{%bold%}}7 days{{%/bold%}}. URLs are made active as soon as they are generated by default.</td> </tr> </tbody> </table> {{%code class="language-javascript" scroll="set-scroll" %}}const signedURLRes = await bucket.generatePreSignedUrl("sam/out/sample.txt", 'GET', { 'expiryIn': 100, // expiry time in seconds 'activeFrom':'12334454327', // activate the url in the given date 'versionId': '746398diij94839' }); console.log(signedURLRes);{{%/code%}} **Example Response for Generating a Presigned URL for Download** {{%code class="language-json" scroll="set-scroll" %}}{ "signature": "https://sadi-development.zohostratus.com/_signed/text.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747898364894&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=SFdW4woI5nXPCSCghrymsv06hM0cimwZpkFwHWngtto", "expiry_in_seconds": "100", "active_from": "12334454327" }{{%/code%}} **Example Snippet Illustrating Usage of Presigned URL to Download an Object** {{%info%}}{{%bold%}}Info:{{%/bold%}} This example is shown using {{%bold%}}Axios{{%/bold%}} request handler package.{{%/info%}} {{%code class="language-javascript" scroll="set-scroll" %}}const axios = require('axios'); const fs = require('fs'); // Replace with the actual pre-signed URL for your file. const url = 'https://sadi-development.zohostratus.com/_signed/text.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747898364894&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=SFdW4woI5nXPCSCghrymsv06hM0cimwZpkFwHWngtto'; (async () => { try { // Send GET request to download file as a stream const response = await axios.get(url, { responseType: 'stream' }); // Create a writable stream to save the file locally const file = fs.createWriteStream('file_path'); // Replace with desired output path // Pipe the response stream to the file stream response.data.pipe(file); // Notify when the file has been downloaded file.on('finish', () => { console.log('File downloaded successfully'); }); // Handle any errors during writing file.on('error', (err) => { console.error('Error writing file:', err); }); } catch (err) { console.error('Error downloading file:', err); } })();{{%/code%}} -------------------------------------------------------------------------------- title: "Upload Object" description: "This page lists the Node.js SDK method to upload objects to a bucket." last_updated: "2026-03-18T07:41:08.597Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Upload Object Help Documentation (/en/cloud-scale/help/stratus/objects/upload-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/upload-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/upload-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/upload-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/upload-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/upload-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/upload-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Upload Object The SDK methods listed in this section will allow you to {{%link href="/en/cloud-scale/help/stratus/objects/upload-object/" %}}upload objects{{%/link%}} to the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}bucket{{%/link%}} in various manners. You can upload objects as a **string** or as a **stream**. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. If you do not have {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} enabled for your object, and if Stratus gets multiple write requests for the same object, the object will be continuously overwritten. The latest upload of the object will be the only object that is stored. However, with Versioning enabled, each upload will be considered a version of the object, and all of them will be stored in the bucket, each with a unique {{%badge%}}versionId{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} The following characters including space are not supported when you create a path or an object: double quote, both angular brackets, hashtag, backward slash and pipe symbol.{{%/note%}} ### Upload Object as a Stream Using this SDK method, you can upload objects to a bucket as a stream. Store the stream in a variable and then pass that variable in the upload method; {{%badge%}}putObject(){{%/badge%}} {{%code class="language-javascript" scroll="set-scroll" %}}// create a read stream for upload the object const file = fs.createReadStream("file_path"); // call the upload method const res = await bucket.putObject("sam/out/sample.txt", file); console.log(res);{{%/code%}} ### Upload Object as a String Using this SDK method, you can upload the object as a string. You will pass the object name, and the data to be stored in the object in string format in the upload method; {{%badge%}}putObject(){{%/badge%}} {{%code class="language-javascript" scroll="set-scroll" %}}//Upload object as a string const res = await bucket.putObject("sam/out/sample.txt", "Content of the file"); console.log(res);{{%/code%}} ### Upload Object with Options Using this SDK method, you can use the following options while you upload an object. * {{%badge%}}**overwrite**{{%/badge%}}: This is an option you can use, if *Versioning* for your bucket is not enabled for your bucket. Without versioning, you need to use this option if you wish to overwrite a resource. The default value is '**false**'. * {{%badge%}}**ttl**{{%/badge%}}: This is an option you can use to set **Time-to-Live** (TTL) in seconds for an object. Value should be greater than or equal to **60 seconds**. * {{%badge%}}**metaData**{{%/badge%}}: This is an option you can use to upload {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#metadata" %}}meta details{{%/link%}} of the object that is being uploaded. * {{%badge%}}**contentType**{{%/badge%}}: This is an option you can provide, if you need to set the MIME type of the object. {{%code class="language-javascript" scroll="set-scroll" %}}const options = { 'overwrite': true, //This will overwrite your existing object 'ttl': '300', //time to live in seconds 'metaData': { 'author': 'John' } }; const file = fs.createReadStream("filePath"); const uploadRes = await bucket.putObject("sam/out/sample.txt", file, options); console.log(uploadRes);{{%/code%}} ### Upload Object With Extract Option When you upload a zipped object using this SDK method, the objects present in the zip will be extracted, and uploaded. {{%code class="language-java"%}}const options = { 'ttl': '300', //time to live in seconds 'metaData': { 'author': 'John' }, // Extract the contents of the given ZIP file and upload each file as a separate object to the bucket 'extractUpload': true }; const file = fs.createReadStream("filePath"); const uploadRes = await bucket.putObject("sam/out/sample.zip", file, options); console.log(uploadRes);{{%/code%}} This SDK method will return the value of a {{%badge%}}taskId{{%/badge%}}. You can use this value to find out the status of the extraction using this {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/extract-zipped-object/#get-zip-extraction-status" %}}SDK method{{%/link%}}. **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ 'task_id': '1234263749' }{{%/code%}} ### Upload Object Using Multipart In this section we are going to go over the SDK methods that will allow you to successfully upload a large object to a bucket in Stratus. The multipart upload feature will upload a large file to the bucket in multiple HTTPS requests. All of these requests will be combined into a single object once all the individual parts have been uploaded. {{%note%}}{{%bold%}}Note:{{%/bold%}} It is recommended that you consider {{%bold%}}Multipart Upload{{%/bold%}} as the preferred method to upload objects that are {{%bold%}}100 MB or larger{{%/bold%}}.{{%/note%}} #### Initiate Upload To perform multipart operations, you need to get a multipart object instance. We will refer to this component instance in various code snippets where we work with multipart operations being performed on objects stored in a bucket in Stratus. **Parameter Used** {{%badge%}}bucket{{%/badge%}}: This is the bucket instance you need to have initialized earlier using this {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}SDK method{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const initRes = await bucket.initiateMultipartUpload("sam/out/sample.txt"); console.log(initRes);{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "bucket": "zcstratus123-development", "key": "sam/out/sample.txt", "upload_id": "01j7xbm4vm5750zbedxqgc4q6m", "status": "PENDING" }{{%/code%}} #### Upload Parts of the Object In the following SDK method, we are going to perform uploads of the individual parts of the object. Each part will have a distinct partNumber ranging anywhere between 1 and 1000. While this represents the ordering of the parts, these parts will not necessarily be uploaded in sequence. These parts will be combined in sequence once the upload of all the parts of the objects is complete. {{%code class="language-javascript" scroll="set-scroll" %}}let partNumber = 1; const file = fs.createReadStream("filePath"); const uploadPartRes = await bucket.uploadPart("sam/out/sample.txt", "uploadId", file, partNumber); console.log(uploadPartRes);{{%/code%}} #### Get Multipart Upload Summary The following SDK method can be used to obtain an operational summary of all the uploaded parts. To view the summary, we will use the {{%badge%}}getMultipartUploadSummary(){{%/badge%}} method. {{%code class="language-javascript" scroll="set-scroll" %}}const uploadSummaryRes = await bucket.getMultipartUploadSummary("sam/out/sample.txt", "upload_id"); console.log(uploadSummaryRes);{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "bucket": "zcstratus12345-development", "key": "sam/out/sample.txt", "upload_id": "01hyfyeazrrstmt7k5fa7ej726", "status": "PENDING", "parts": [ { "part_number": 1, "size": 0, "uploaded_at": 1716374678999 }, { "part_number": 2, "size": 2797094, "uploaded_at": 1716374678576 }, { "part_number": 4, "size": 0, "uploaded_at": 1716374679136 } ] }{{%/code%}} #### Complete Multipart Upload of the Object The following method allows us to terminate the multipart process once all the parts have been successfully uploaded. To complete the process we will pass the uploadId to the {{%badge%}}completeMultipartUpload(){{%/badge%}} method. {{%code class="language-javascript" scroll="set-scroll" %}}const completeUploadRes = await bucket.completeMultipartUpload("sam/out/sample.txt", "uploadId"); console.log(completeUploadRes);{{%/code%}} **Example SDK Implementation** {{%code class="language-javascript" scroll="set-scroll" %}}const catalyst = require('zcatalyst-sdk-node'); const fs = require('fs'); module.exports = async (req, res) => { url = req.url; switch (url) { case '/': const app = catalyst.initialize(req); const stratus = app.stratus(); // create a bucket instance const bucket = stratus.bucket("bucket_name"); // Multipart upload const key = 'sample.mp4'; // initiate multipart upload const initRes = await bucket.initiateMultipartUpload(key); // get upload Id from initiate upload response. const uploadId = initRes['upload_id']; const filePath = '/Users/Aliza//sam.mp4'; const partSize = 50 * 1024 * 1024; // in Mb const fileStream = fs.createReadStream( filePath, { highWaterMark: partSize } ); let partNumber = 1; const uploadPromises = []; fileStream.on('data', async (partData) => { // Push each part upload to the promises array for parallel upload const partUploadPromise = bucket.uploadPart( key, uploadId, partData, partNumber ); uploadPromises.push(partUploadPromise); console.log('Part Number: ', partNumber); partNumber++; }); // Wait for all parts to be uploaded in parallel fileStream.on('end', async () => { await Promise.all(uploadPromises); // Complete the multipart upload await bucket.completeMultipartUpload(key, uploadId); console.log('Successfully Uploaded'); }); res.end(); break; default: res.writeHead(404); res.write('You might find the page you are looking for at "/" path'); break; } }{{%/code%}} ### Upload an Object Using Transfer Manager **Ensure the following packages are imported** {{%code class="language-javascript" scroll="set-scroll" %}}const { TransferManager } = require('zcatalyst-sdk-node/lib/stratus');{{%/code%}} #### Create Transfer Manager Instance {{%code class="language-javascript" scroll="set-scroll" %}} const transferManager = new TransferManager(bucket); // create transfer manager instance{{%/code%}} #### Multipart Upload **Create Multipart Upload Instance** The following SDK method will create a multipart instance by initiating multipart upload. {{%code class="language-javascript" scroll="set-scroll" %}}const multipart = await transferManager.createMultipartInstance("sam/out/sample.txt"); // create multipart instance{{%/code%}} If you are required to create an instance for an already initialized multipart upload operation, then copy and use the code snippet given below {{%code class="language-javascript" scroll="set-scroll" %}}const multipart = await transferManager.createMultipartInstance("sam/out/sample.txt", "uploadId");{{%/code%}} #### Upload Part In the following SDK method we are going to be using the {{%badge%}}multipart{{%/badge%}} instance we initialized in the *Create Multipart Upload Instance* section. {{%code class="language-javascript" scroll="set-scroll" %}}const uploadRes = await multipart.uploadPart(fs.createReadStream("filePath"), partNumber); console.log(uploadRes);{{%/code%}} #### Upload Summary {{%code class="language-javascript" scroll="set-scroll" %}}const summaryRes = await multipart.getUploadSummary(); console.log(summaryRes);{{%/code%}} #### Complete Upload {{%code class="language-javascript" scroll="set-scroll" %}}const completeRes = await multipart.completeUpload(); console.log(completeRes);{{%/code%}} #### Upload Object Using Wrapper The following SDK method acts as a wrapper, where the entire multipart upload operation is carried out without employing multiple steps. Using this method, the object is split into multiple parts, uploaded to the bucket in multiple parts, and then combined once all the parts are uploaded. {{%code class="language-javascript" scroll="set-scroll" %}}const file = fs.createReadStream("filePath"); const partSize = 50 // in MB const objectPartUploadRes = await transferManager.putObjectAsParts("sam/out/sample.txt",file, partSize); console.log(objectPartUploadRes);{{%/code%}} ### Generate Presigned URL to Upload an Object Presigned URLs are secure URLs that authenticated users can share to their non-authenticated users. This URL will provide non-authenticated users with temporary authorization to access objects. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}urlAction{{%/badge%}}</td> <td>{{%bold%}}Request Method{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. This is the parameter that will allow you to generate a presigned URL for an upload(PUT) action. <ul> <li>{{%badge%}}**PUT**{{%/badge%}}: To upload an object</li> </ul> </td> </tr> <tr> <td>{{%badge%}}expiry{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. The URL validity time in seconds. <ul> <li>Default value: {{%bold%}}3600 seconds{{%/bold%}}</li> <li>Minimum value: {{%bold%}}30 seconds{{%/bold%}}</li> <li>Maximum value: {{%bold%}}7 days{{%/bold%}}</li> </ul> </td> </tr> <tr> <td>{{%badge%}}activeFrom{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. This param will contain the time after which the URL is valid. Maximum value is {{%bold%}}7 days{{%/bold%}}. URLs are made active as soon as they are generated by default.</td> </tr> </tbody> </table> {{%code class="language-javascript" scroll="set-scroll" %}}const signedURLRes = await bucket.generatePreSignedUrl("sam/out/sample.txt", 'PUT', { 'expiryIn': 100, // expiry time in seconds 'activeFrom':'12334454327', // activate the url in the given date }); console.log(signedURLRes);{{%/code%}} **Example Response for Generating a Presigned URL for Upload** {{%code class="language-json" scroll="set-scroll" %}}{ signature: "https://sadi-development.zohostratus.com/_signed/text.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747896279887&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=3YBUX1HFSxNQzQJjFrln82AyJsEEuC5T9dsZwWxGyEE" }{{%/code%}} **Example Snippet Illustrating Usage of Presigned URL to Upload an Object** {{%info%}}{{%bold%}}Info:{{%/bold%}} This example is shown using {{%bold%}}Axios{{%/bold%}} request handler package.{{%/info%}} {{%code class="language-javascript" scroll="set-scroll" %}}const axios = require('axios'); const fs = require('fs'); // Replace this with the actual pre-signed URL generated for your upload. const url = 'https://sadi-development.zohostratus.com/_signed/text.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747911331272&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=K9vuqC7JaATLeM3TX4xXWx0OHcSflbYQ2jCrbKSAAIE'; // Replace 'file_path' with your actual file path const data = fs.createReadStream('/Users/ranjitha-18338/Documents/NODE-SDK/Stratus/sam.py'); // Optional headers; content type may vary depending on the file type const headers = { // 'Content-Type': 'application/json', // adjust if uploading non-JSON files (e.g., 'text/plain' or 'application/octet-stream') // 'overwrite': 'true', // optional header }; (async () => { try { const response = await axios.put(url, data, { headers }); if (response.status === 200) { console.log('Object uploaded successfully'); } else { console.log('⚠️ Error uploading object:', response.data); } } catch (error) { console.error('Upload failed:', error.response?.data || error.message); } })();{{%/code%}} -------------------------------------------------------------------------------- title: "Extract a Zipped Object" description: "This page lists the Node.js SDK method to extract a zipped object." last_updated: "2026-03-18T07:41:08.597Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/extract-zipped-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/extract-zipped-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/extract-zipped-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Extract a Zipped Object In Stratus The following SDK method will allow you to extract a zip file inside Stratus, and every individual content present in the zip file will be considered as individual object and uploaded to Stratus in the same bucket. This entire process will happen *asynchronously*. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Since the extraction process occurs asynchronously, the time in which the entire process is completed is dependent on the size of the zip file that is being extracted.{{%/note%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will be the name of the zip file, you need to extract</td> </tr> <tr> <td>{{%badge%}}destPath{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will contain the complete {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path information{{%/link%}} of the destination, where the extracted objects will be stored in the bucket.</td> </tr> </tbody> </table> {{%code class="language-javascript" scroll="set-scroll" %}}const res = await bucket.unzipObject("sample.zip","output/"); console.log(res);{{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "key": "sample.zip", "destination": "output/", "task_id": "6963000000272049", "message": "Zip extract scheduled" }{{%/code%}} ### Get Zip Extraction Status The zip extraction process occurs asynchronously, and the time it takes to complete the extraction process is highly contingent on the size of the zip file. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} Using the {{%badge%}}taskId{{%/badge%}} parameter, in the following SDK method, we can determine the status of the extraction. The {{%badge%}}taskId{{%/badge%}} is returned in the response of {{%badge%}}unzipObject(){{%/badge%}} method. {{%code class="language-javascript" scroll="set-scroll" %}}const statusRes = await bucket.getUnzipStatus("sample.zip", 'taskId'); console.log(statusRes);{{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "task_id": "6963000000272049", "status": "SUCCESS" }{{%/code%}} -------------------------------------------------------------------------------- title: "Copy Object" description: "This page lists the Node.js SDK method to make a copy of an object within its own bucket." last_updated: "2026-03-18T07:41:08.597Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/copy-objects/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/copy-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/copy-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Copy Object Using this SDK method, you can copy an object and paste it within a bucket. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} The {{%badge%}}key{{%/badge%}} will be the object you are going to copy, and the {{%badge%}}destination{{%/badge%}}, will contain the new name of the copied object. To paste the copied object in a different path, you need to provide the complete path name as {{%badge%}}destination{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} * You need to provide the complete object name, along with the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}{{%bold%}}path{{%/bold%}}{{%/link%}} for both {{%badge%}}key{{%/badge%}} and {{%badge%}}destination{{%/badge%}} values. * For example, if you have file named "{{%badge%}}kitten.png{{%/badge%}}" in the path {{%badge%}}pictures/puppy{{%/badge%}}, and you need to copy the file to {{%badge%}}pictures/kitten{{%/badge%}} path, then: <br /> {{%badge%}}source_object{{%/badge%}} value will be '{{%badge%}}pictures/puppy/kitten.png{{%/badge%}}'<br /> {{%badge%}}dest_object{{%/badge%}} value will be '{{%badge%}}pictures/kitten/kitten.png{{%/badge%}}'{{%/note%}}<br /> {{%code class="language-javascript" scroll="set-scroll" %}}const res = await bucket.copyObject('sam/out/sample.txt', "out/sam/sample.txt"); console.log(res);{{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "copy_to": "sam/out/sample.txt", "key": "out/sam/sample.txt", "message": "Object copied successfully." }{{%/code%}} -------------------------------------------------------------------------------- title: "Rename and Move Operations on an Object" description: "This page lists the Node.js SDK method to perform rename and move operations on an object." last_updated: "2026-03-18T07:41:08.598Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/rename-move-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/rename-move-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/rename-move-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Rename and Move Operations on an Object To rename and to move an object, we will be using the same {{%badge%}}renameObject(){{%/badge%}} SDK method. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>The original name of the object that you need to rename</td> </tr> <tr> <td>{{%badge%}}destination{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>The new name that you rename the object with</td> </tr> </tbody> </table> {{%note%}}{{%bold%}}Note:{{%/bold%}} * You need to provide the complete object name, along with the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}{{%bold%}}path{{%/bold%}}{{%/link%}} for both {{%badge%}}key{{%/badge%}} and {{%badge%}}destination{{%/badge%}} values. * For example, if you have file named "{{%badge%}}kitten.png{{%/badge%}}" in the path {{%badge%}}pictures/puppy{{%/badge%}}, and you need to rename or move the file to {{%badge%}}pictures/kitten{{%/badge%}} path, then: <br /> {{%badge%}}key{{%/badge%}} value will be '{{%badge%}}pictures/puppy/kitten.png{{%/badge%}}'<br /> {{%badge%}}destination{{%/badge%}} value will be '{{%badge%}}pictures/kitten/kitten.png{{%/badge%}}'{{%/note%}}<br /> ### Rename an Object Using the {{%badge%}}renameObject(){{%/badge%}} SDK method you can rename objects present in a bucket. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} * You cannot rename objects in a bucket that has {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} enabled. * The following characters including space are not supported when you create a path or an object: double quote, both angular brackets, hashtag, backward slash and pipe symbol. {{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}const res = await bucket.renameObject("sam/out/sample.txt", "sam/out/update_sample.txt"); console.log(res);{{%/code%}} ### Move an Object Using the {{%badge%}}renameObject(){{%/badge%}} SDK method, we can move the object from one path to another within a bucket. {{%code class="language-javascript" scroll="set-scroll" %}}const moveRes = await bucket.renameObject("sam/out/sample.txt", "out/sample.txt"); console.log(moveRes);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} You cannot perform move operations in a bucket that has {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} enabled.{{%/note%}} #### Example Response for Rename and Move Operations {{%code class="language-json" scroll="set-scroll" %}}{ "current_key": "sam/out/sample.txt", "message": "Rename successful", "rename_to": "sam/out/update_sample.txt" }{{%/code%}} -------------------------------------------------------------------------------- title: "Delete Objects" description: "This page lists the Node.js SDK method to delete objects stores in a bucket." last_updated: "2026-03-18T07:41:08.598Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Delete an Object Help Documentation (/en/cloud-scale/help/stratus/objects/manage-object/delete-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/delete-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/delete-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/delete-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/delete-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/delete-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Delete Objects The following SDK methods will allow you to perform delete operations in Stratus. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}versionId{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for your bucket then, this param will help you refer to a particular version using its unique Version ID.</td> </tr> <tr> <td>{{%badge%}}ttl{{%/badge%}}</td> <td>{{%bold%}}int{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. It allows you to schedule your delete operations. For example, if you provide the value of {{%badge%}}ttl{{%/badge%}} as {{%bold%}}60{{%/bold%}}, the delete operation will only occur after 60 seconds. The value of {{%badge%}}ttl{{%/badge%}} has to be >= 60 seconds.</td> </tr> </tbody> </table> ### Delete a Single Object Using this SDK method, you can delete a particular object by passing the object name to the {{%badge%}}deleteObject(){{%/badge%}} method. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-javascript" scroll="set-scroll" %}}const res = await bucket.deleteObject( "sam/out/sample.txt"); console.log(res);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled on the bucket and no specific {{%badge%}}versionId{{%/badge%}} is provided, deleting an object will {{%bold%}}remove all versions{{%/bold%}} of that object by default.{{%/note%}} ### Delete a Specific Version of an Object after a Specific Time Ensure you provide the {{%badge%}}versionId{{%/badge%}} of the object if you enabled {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} for your bucket. You can also schedule your delete operation using the {{%badge%}}ttl{{%/badge%}} variable. For example, if you provide the value of {{%badge%}}ttl{{%/badge%}} as **100**, the delete operation will only occur after **100 seconds**. Always ensure that the value of {{%badge%}}ttl{{%/badge%}} is greater than equal to **60 seconds**. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-javascript" scroll="set-scroll" %}}const options = { versionId: "01hthq82gwxtfyz6d9j8eg6k2f", // delete the object with given versionId ttl: 100 // Time to live in number of seconds }; const res= await bucket.deleteObject( "sam/out/sample.txt", options); console.log(res);{{%/code%}} ### Delete Multiple Objects Using this SDK method, you can delete multiple objects by passing the names of the objects that need to be deleted as an array. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} Ensure you provide the {{%badge%}}versionId{{%/badge%}} of the object if you enabled {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} for your bucket. You can also schedule your delete operation using the {{%badge%}}ttl{{%/badge%}} variable. For example, if you provide the value of {{%badge%}}ttl{{%/badge%}} as **100**, the delete operation will only occur after **100 seconds**. Always ensure that the value of {{%badge%}}ttl{{%/badge%}} is greater than equal to **60 seconds**. {{%code class="language-javascript" scroll="set-scroll" %}}const objectDel = await bucket.deleteObjects( [ { key: "sam/out/sample.txt", versionId: "01hhch20nfkx9hw9ebqy2jnz9d" } ], 100); console.log(objectDel);{{%/code%}} #### Example Response for Delete Operation {{%code class="language-json" scroll="set-scroll" %}}{"message": "Object Deletion successful."}{{%/code%}} ### Truncate Bucket Using this SDK method you will be able to essentially every single object present in the bucket. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-javascript" scroll="set-scroll" %}}const truncateRes = await bucket.truncate(); console.log(truncateRes);{{%/code%}} ### Delete a Path in the Bucket Using this SDK, you will be able to delete all the objects present in a {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}. You need to pass the complete path to the {{%badge%}}deletePath(){{%/badge%}} method. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-javascript" scroll="set-scroll" %}}// To delete an entire path const res = await bucket.deletePath("sam/out/"); console.log(res);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Ensure that you provide the exact path. If an incorrect path is provided, the delete action will get scheduled, but it will result in an error.{{%/note%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "path": "sam/", "message": "Path deletion scheduled" }{{%/code%}} -------------------------------------------------------------------------------- title: "Create Object Instance" description: "This page lists the Node.js SDK method to create an object instance." last_updated: "2026-03-18T07:41:08.604Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/create-object-instance/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/create-object-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-object-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Object Instance Use the following method to get an object instance to perform object-related operations. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const objectIns = bucket.object("sam/out/sample.txt");{{%/code%}} -------------------------------------------------------------------------------- title: "List Object Versions" description: "This page lists the Node.js SDK method to get versions of an object." last_updated: "2026-03-18T07:41:08.604Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/list-object-versions/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Object Versioning Help Documentation (/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/get-object-versions/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/get-object-versions/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # List Object Versions ### List All Versions of an Object Through Pagination Enabling {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} in a bucket allows you to store multiple versions of the same object in the bucket. Each version of the object will have its own {{%badge%}}versionId{{%/badge%}}. This SDK method allows you to get all the existing versions of an object present in a bucket by pagination. The Object reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-object-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}nextToken{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>Will hold the value to determine the next set of versions.</td> </tr> <tr> <td>{{%badge%}}maxVersions{{%/badge%}}</td> <td>{{%bold%}}int{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. Will hold the value of the maximum number of versions of the object that can be listed per iteration.</td> </tr> </tbody> </table> {{%code class="language-javascript" scroll="set-scroll" %}}async function listMyPaginatedVersions(maxVersion = undefined, nextToken = undefined) { const response = await objectIns.listPagedVersions({ maxVersion, nextToken}); console.log(response.version); if(response.is_truncated) { listMyPaginatedVersions(maxVersion,nextToken) } } await listMyPaginatedVersions(10);{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "key": "sam/out/sample.txt", "versions_count": 2, "max_versions": "2", "is_truncated": "False", "next_continuation_token": "4YpUdkktt2UeWp6MwEK1LZXELnuVhunHLnGgX29uvszwtJEQE2gVDJYyRiLdUmhNst", "version": [ { "version_id": "01hyfh12njtpyvzwq6p1fd2d8s", "is_latest": "True", "last_modified": "May 22, 2024 12:20 PM", "size": 1, "etag": "9af7c117d9de9a06fba7a5f1ea5fcc2d" }, { "version_id": "01hyfh0xkvwkxxsjfceef201xa", "is_latest": "False", "last_modified": "May 22, 2024 12:20 PM", "size": "1", "etag": "9af7c117d9de9a06fba7a5f1ea5fcc2d" } ] }{{%/code%}} ### List All Versions of the Object Through Iteration You can use the following SDK method to get all available versions of the object in a single call. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-javascript" scroll="set-scroll" %}}const versions = objectIns.listIterableVersions(); for await( const version of versions) { console.log(version); }{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "versionId": "01hyfh12njtpyvzwq6p1fd2d8s", "is_latest": "True", "last_modified": "May 22,2024 12:20 PM", "size": "1", "etag": "9af7c117d9de9a06fba7a5f1ea5fcc2d" } { "versionId": "01hyfh0xkvwkxxsjfceef201xa", "is_latest": "False", "last_modified": "May 22, 2024 12:20 PM", "size": "1", "etag": "9af7c117d9de9a06fba7a5f1ea5fcc2d" }{{%/code%}} -------------------------------------------------------------------------------- title: "Get Object Details" description: "This page lists the Node.js SDK method to get details of objects stored in a bucket." last_updated: "2026-03-18T07:41:08.604Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/object-details/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Objects Help Documentation (/en/cloud-scale/help/stratus/objects/introduction/) - Versioning Help Documentation (/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/object-details/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/check-object-availability/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Get Object Details ### Get Details of All Objects Use the following SDK method to get details of all the objects stored in the bucket. The Object reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-object-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-javascript" scroll="set-scroll" %}}const objectRes = await objectIns.getDetails(); console.log(objectRes);{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled, then using this SDK method will only return the latest version's object details.{{%/note%}} ### Get Details of a Particular Version of the Object To get the details of a particular version of the object, you need to pass the versionId of the object to {{%badge%}}getDetails(){{%/badge%}} SDK method. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}versionId{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for your bucket then, this param will help you refer to a particular version using its unique Version ID.</td> </tr> </tbody> </table> {{%note%}}{{%bold%}}Note{{%/bold%}}: * You need to have enabled {{%bold%}}Versioning{{%/bold%}} for your objects at least once to use this method. * You can find out more about Versioning from this {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}help documentation{{%/link%}}.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}const objectRes = await objectIns.getDetails("versionId"); console.log(objectRes);{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "key": "sam/out/sample.txt", "size": 1, "content_type": "text/plain", "last_modified": "May 22, 2024 12:25 PM", "meta_data": { "author": "John" }, "object_url": "https://zcstratus12345-development.zohostratus.com/sam/out/sample.txt", "cached_object_url": "https://zcstratus12345-development.nimbuslocaledge.com/sam/out/sample.txt" }{{%/code%}} -------------------------------------------------------------------------------- title: "Put Object Meta Data" description: "This page lists the Node.js SDK method to add meta data for an object stored in the object." last_updated: "2026-03-18T07:41:08.605Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/cloud-scale/stratus/put-object-meta/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Object Metadata Help Documentation (/en/cloud-scale/help/stratus/objects/introduction/#metadata) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/put-object-meta/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/put-object-meta/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Put Object Meta Data Using the following SDK method, you can add {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#metadata" %}}meta details{{%/link%}} for a particular object stored in a bucket in Stratus. The Object reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-object-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} The meta details will be passed as JSON key value pairs. For example, {"meta_key" : "meta_value"} {{%note%}}{{%bold%}}Note:{{%/bold%}} * Using the following method to pass new meta details without adding the existent details will delete the existing details and only put the new details. To avoid this, pass the new meta details along with the existing meta details. * You can use alphanumeric, underscores, or whitespace characters, as well as hyphens, to write your metadata. No other special character is allowed other than the once mentioned. * You can fetch the metadata of an object using the {{%badge%}}**HEAD**{{%/badge%}} request method. In the response, the metadata will be listed in the key '{{%badge%}}x-user-meta{{%/badge%}}'. * The maximum size limit of characters allowed for the overall metadata is **2047** characters. The character count used to determine the size limit also includes the colon ":" special character used to define the key value pair.{{%/note%}} {{%code class="language-javascript" scroll="set-scroll" %}}const objectMeta = { "key1": "value1" , "key2": "value2" }; const objMeta = await objectIns.putMeta(objectMeta); console.log(objMeta);{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "message": "Metadata added successfully" }{{%/code%}} --- ## SDK — Python — Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page lists all the Python SDK methods required to carry out Stratus operations through code." last_updated: "2026-03-18T07:41:08.613Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/overview/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/overview/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Stratus ## Overview Cloud Scale {{%link href="/en/cloud-scale/help/stratus/introduction" %}}Stratus{{%/link%}} is Catalyst's robust and powerful storage solution. You can store data of any format in the form of {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}Objects{{%/link%}} in containers called {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}}. Each Bucket and every individual object in the bucket has a secure {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} and {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/#bucket-url" %}}Bucket URL{{%/link%}}. You can perform upload and download operations on objects and even provide {{%link href="/en/cloud-scale/help/stratus/stratus-permissions/#custom-permissions" %}}custom permissions{{%/link%}} for each object. The following table contains the list of all the Catalyst SDKs that can be used to perform Stratus operations through code. <table class="content-table"> <thead> <tr> <th class="w30p">Category</th> <th class="w70p">SDK Method</th> </tr> </thead> <tbody> <tr> <td>General Stratus Operations</td> <td> <ul> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-stratus-instance/" %}}Create Stratus Instance{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/check-bucket/" %}}Check Bucket Availability{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/list-buckets/" %}}List All Buckets{{%/link%}}</li> </ul> </td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}Create Bucket Instance{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/get-bucket-details/" %}}Get Bucket Details{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/get-bucket-cors/" %}}Get Bucket CORS{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/list-objects/" %}}List Objects in a Bucket{{%/link%}} <ul> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/list-objects/#list-all-objects-by-pagination" %}}List all Objects by Pagination{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/list-objects/#list-objects-through-iteration" %}}List Objects Through Iteration{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/check-object-availability/" %}}Check Object Availability{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/download-object/" %}}Download Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/download-object/#download-an-object" %}}Download an Object{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/download-object/#download-a-portion-of-the-object" %}}Download a Portion of the Object{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/download-object/#download-an-object-using-transfer-manager" %}}Download an Object Using Transfer Manager{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/download-object/#generate-presigned-url-to-download-an-object" %}}Generate Presigned URL to Download an Object{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/upload-object/" %}}Upload Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/upload-object/#upload-object-as-a-stream" %}}Upload Object as a Stream{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/upload-object/#upload-object-as-a-string" %}}Upload Object as a String{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/upload-object/#upload-object-with-options" %}}Upload Object with Options{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/upload-object/#upload-object-using-multipart" %}}Upload Object Using Multipart{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/upload-object/#upload-an-object-using-transfer-manager" %}}Upload an Object Using Transfer Manager{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/upload-object/#generate-presigned-url-to-upload-an-object" %}}Generate Presigned URL to Upload an Object{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/extract-zipped-object/" %}}Extract a Zipped Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/extract-zipped-object/#get-zip-extraction-status" %}}Get Zip Extraction Status{{%/link%}} </ul> </li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/copy-objects/" %}}Copy Object{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/rename-move-object/" %}}Rename and Move Operations on an Object{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/delete-objects/" %}}Delete Objects{{%/link%}} <ul> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/delete-objects/#delete-a-single-object" %}}Delete a Single Object{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/delete-objects/#delete-a-specific-version-of-an-object-after-a-specific-time"%}}Delete a Specific Version of an Object after a Specific Time{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/delete-objects/#delete-multiple-objects" %}}Delete Multiple Objects{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/delete-objects/#truncate-bucket" %}}Truncate Bucket{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/delete-objects/#delete-a-path-in-the-bucket" %}}Delete a Path in the Bucket{{%/link%}}</li> </ul> </li> </td> </tr> <tr> <td>Object Operations</td> <td> <ul> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-object-instance/" %}}Create Object Instance{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/list-object-versions/" %}}List Object Versions{{%/link%}} <ul> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/list-object-versions/#list-all-versions-of-an-object-through-pagination" %}}List All Versions of an Object Through Pagination{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/list-object-versions/#list-all-versions-of-the-object-through-iteration" %}}List All Versions of the Object Through Iteration{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/object-details/" %}}Get Object Details{{%/link%}} <ul> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/object-details/#get-details-of-all-objects" %}}Get Details of All Objects{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/object-details/#get-details-of-a-particular-version-of-the-object" %}}Get Details of a Particular Version of the Object{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/python/v1/cloud-scale/stratus/put-object-meta/" %}}Put Object Meta Data{{%/link%}}</li> </ul> </td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Create Stratus Instance" description: "This page lists the Python SDK method to create a Stratus instance." last_updated: "2026-03-18T07:41:08.613Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/create-stratus-instance/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/create-stratus-instance/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-stratus-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/initialize-stratus/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Stratus Instance You can get the {{%badge%}}stratus{{%/badge%}} component reference as shown below. This will not fire a server-side call. We will refer to this component instance in various code snippets of working with Stratus. The {{%badge%}}app{{%/badge%}} reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/setup/#initializing-the-sdk" %}}catalyst instance{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}stratus = app.stratus(){{%/code%}} -------------------------------------------------------------------------------- title: "Check Bucket Availability" description: "This page lists the Python SDK method to check if the bucket exists in your project." last_updated: "2026-03-18T07:41:08.613Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/check-bucket/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/check-bucket/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/check-bucket/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/check-bucket/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Check Bucket Availability Using the {{%badge%}}head_bucket(){{%/badge%}} SDK method, you can check the existence of a bucket in Stratus, and further check if the user has the relevant permissions to access the objects present in the bucket. The {{%badge%}}stratus{{%/badge%}} reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-stratus-instance/" %}}component instance{{%/link%}}. Possible responses when using this SDK: * If the bucket exists and if the user has the relevant permissions to access the bucket, the response '**true**' will be returned. * If the bucket does not exist, or if the user does not have permission to access the bucket, the response '**false**' will be returned. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}bucket_name{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/#ideal-practices-to-name-a-bucket" %}}unique name of the bucket{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}throw_err{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If you set this parameter as "{{%bold%}}true{{%/bold%}}", then it will throw an error when the bucket is not found in the project. The default value is "{{%bold%}}false{{%/bold%}}"</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}bucket_res = stratus.head_bucket('bucket_name', throw_err=False) print(bucket_res) {{%/code%}} #### Possible Errors {{%note%}}{{%bold%}}Note:{{%/bold%}} If you use the SDK with the {{%badge%}}throw_err{{%/badge%}} parameter, and the bucket does not exist, or if you do not have sufficient permissions then you may encounter any of the errors listed below.{{%/note%}} <table class="content-table"> <thead> <tr> <th class="w30p">Error Code</th> <th class="w70p">Meaning</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}{{%bold%}}404{{%/bold%}}{{%/badge%}}</td> <td>Not Found. Bucket Not found in Stratus.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}401{{%/bold%}}{{%/badge%}}</td> <td>Unauthorized/Access Denied - User doesn't have permission to perform the particular operation.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}403{{%/bold%}}{{%/badge%}}</td> <td>Permission Denied - User does not have permission to access the particular bucket.</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "List All Buckets" description: "This page lists the Python SDK method to list buckets created in your project." last_updated: "2026-03-18T07:41:08.613Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/list-buckets/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/list-buckets/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/list-buckets/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # List All Buckets The following SDK method will return all the buckets present in the project. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} The {{%badge%}}stratus{{%/badge%}} reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-stratus-instance/" %}}component instance{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}buckets = stratus.list_buckets() # return all the buckets and it's details print(buckets){{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}[ { "bucket_name": "zcstratus122", "project_details": { "project_name": "Learn", "id": "6759000000014001", "project_type": "Live" }, "created_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "created_time": "Mar 26, 2024 12:44 PM", "modified_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "modified_time": "Mar 30, 2024 11:38 AM", "bucket_meta": { "versioning": "False", "caching": { "status": "Enabled", "delivery_point_id": "01ht6zj7k536c29ymsgfeky1mg" }, "encryption": "False", "audit_consent": "False" }, "bucket_url": "https://zcstratus122-development.zohostratus.com" }, { "bucket_name": "zcstratus12345", "project_details": { "project_name": "Learn", "id": "6759000000014001", "project_type": "Live" }, "created_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "created_time": "Mar 13, 2024 05:51 PM", "modified_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "modified_time": "Apr 18, 2024 12:44 PM", "bucket_meta": { "versioning": "True", "caching": { "status": "Enabled", "delivery_point_id": "01hrxy25tv1vex73qhm85g88bf" }, "encryption": "False", "audit_consent": "False" }, "bucket_url": "https://zcstratus12345-development.zohostratus.com" } ] {{%/code%}} -------------------------------------------------------------------------------- title: "Create Bucket Instance" description: "This page lists the Python SDK method to create a bucket instance." last_updated: "2026-03-18T07:41:08.613Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Create a Bucket Help Documentation (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Bucket Instance To perform bucket level operations, you need to create a bucket instance. We will refer to this component instance in various code snippets of working with {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}} in Stratus. The {{%badge%}}stratus{{%/badge%}} reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-stratus-instance/" %}}component instance{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}bucket = stratus.bucket('bucket_name'){{%/code%}} -------------------------------------------------------------------------------- title: "Get Bucket Details" description: "This page lists the Python SDK method to get the details of a bucket." last_updated: "2026-03-18T07:41:08.613Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/get-bucket-details/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Create a Bucket Help Documentation (/en/cloud-scale/help/stratus/buckets/create-bucket/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/create-bucket-instance/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Get Bucket Details The following SDK method will allow you to get all available details of a particular bucket. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}bucket_details = bucket.get_details() print(bucket_details) {{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "bucket_name": "zcstratus122", "project_details": { "project_name": "Learn", "id": "6759000000014001", "project_type": "Live" }, "created_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "created_time": "Mar 26, 2024 12:44 PM", "modified_by": { "zuid": "74660608", "is_confirmed": "False", "email_id": "emmy@zylker.com", "first_name": "Amelia Burrows", "last_name": "C", "user_type": "Admin", "user_id": "6759000000009004" }, "modified_time": "Mar 30, 2024 11:38 AM", "bucket_meta": { "versioning": "False", "caching": { "status": "Enabled", "delivery_point_id": "01ht6zj7k536c29ymsgfeky1mg" }, "encryption": "False", "audit_consent": "False" }, "bucket_url": "https://zcstratus122-development.lzstratus.com", "caching_url": "https://zcstratus122-development.nimbuslocaledge.com", "objects_count": "74", "size_in_bytes": "925906411" } {{%/code%}} -------------------------------------------------------------------------------- title: "Get Bucket CORS" description: "This page lists the Python SDK method to get the current CORS configuration of the bucket." last_updated: "2026-03-18T07:41:08.614Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/get-bucket-cors/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Stratus Bucket CORS Help Documentation (/en/cloud-scale/help/stratus/stratus-config/bucket-cors/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/get-bucket-cors/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/get-bucket-cors/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Get Bucket CORS The {{%badge%}}get_cors(){{%/badge%}} SDK method, will return the current CORS configuration of a specific bucket in Stratus. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} CORS of a bucket can be edited by any user that has or has been granted {{%badge%}}Write{{%/badge%}} permission for Stratus component in the project, using the {{%link href="/en/getting-started/set-up-a-catalyst-project/profiles-and-permissions/" %}}Profiles & Permissions{{%/link%}} section. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can find out more about Bucket CORS from this {{%link href="/en/cloud-scale/help/stratus/stratus-config/bucket-cors/" %}}help section{{%/link%}}.{{%/note%}} {{%code class="language-python" scroll="set-scroll" %}}res = bucket.get_cors() print(res){{%/code%}} -------------------------------------------------------------------------------- title: "List Objects in a Bucket" description: "This page lists the Python SDK method to list all the objects stroed in a bucket." last_updated: "2026-03-18T07:41:08.614Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/list-objects/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/list-objects/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/list-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # List Objects in a Bucket ### List all Objects by Pagination This SDK method will allow you to get all the objects present in a particular bucket by pagination. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} For each call, a limited number of objects will be returned, and the next call will be initiated only if a continuation token is returned. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}max_keys{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will contain the maximum limit of objects that can be listed by pagination.</td> </tr> <tr> <td>{{%badge%}}continuation_token{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Mandatory{{%/bold%}} parameter. Will contain the token to get the next set of objects.</td> </tr> <tr> <td>{{%badge%}}prefix{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. To list objects that match the prefix value.</td> </tr> <tr> <td>{{%badge%}}order_by{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. To list objects either in ascending or descending order. {{%bold%}}Default Value{{%/bold%}}: {{%badge%}}asc{{%/badge%}}</td> </tr> <tr> <td>{{%badge%}}folder_listing{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. To choose to list either just the root-level objects in the bucket or list all the objects present in all the paths of the bucket. {{%bold%}}Default Value{{%/bold%}}: {{%badge%}}false{{%/badge%}}<br />For instance, if you set value as {{%badge%}}true{{%/badge%}}; the root-level objects alone will be listed. If you set the value as {{%badge%}}false{{%/badge%}}; all the objects present in all the paths of the bucket will be listed </td> </tr> </tbody> </table> In the following SDK method, a maximum value of pagination is set using {{%badge%}}max_keys{{%/badge%}}. Using prefix, you can list objects that only match the {{%badge%}}prefix:{{%/badge%}}. The response we get will contain the following properties of the bucket, which will be stored in {{%badge%}}moreOptions{{%/badge%}}: * {{%badge%}}key count{{%/badge%}}: Will contain the value of the number of objects that are being returned * {{%badge%}}max_key{{%/badge%}}: The maximum limit of objects that can be returned * {{%badge%}}Truncated{{%/badge%}}: Will contain the status to notify if a bucket is truncated or not. * {{%badge%}}contents{{%/badge%}}: List of object details * {{%badge%}}next_token{{%/badge%}}: If the response was truncated, the value of this key must be passed as {{%badge%}}next_token{{%/badge%}} to the same method for retrieving the next set of objects. With each iteration, we will list the {{%badge%}}max_keys{{%/badge%}} number of objects and check if {{%badge%}}next_token{{%/badge%}} has been created. Using {{%badge%}}next_token{{%/badge%}} we will continue the iteration till all the objects have been listed. {{%code class="language-python" scroll="set-scroll" %}}# Define a recursive function to list objects from the bucket using pagination def list_my_paged_objects(max_keys=None, prefix=None, next_token=None): # Fetch a paged list of objects from the bucket with specified options data = bucket.list_paged_objects( max_keys, # Maximum number of objects to retrieve in this call prefix, # Filter objects that start with this prefix next_token, # Continuation token to fetch the next page of results folder_listing=True, # List objects in a folder-like structure order_by='desc' # Sort objects in descending order (most recent first) ) # Print the list of retrieved objects print(data['contents']) # Check if more objects are available (pagination is not yet complete) if data['truncated']: # Recursively call the function to fetch the next page of objects list_my_paged_objects(max_keys, prefix, data['next_continuation_token']) #Start listing objects with a page size of 2 list_my_paged_objects(2, 'sam') {{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "prefix": "sam", "key_count": "5", "max_keys": "5", "truncated": "True", "next_continuation_token": "47VrqTzR9ukMF9gr8YcziVVzdRP5GCjq1NfM5fMBpMfvw5qcXFRSueuqCTRUCzNd9dHfquXHi2afDanLH6MbyJo6", "contents": [ { "key_type": "file", "key": "sam1s2ww.mp4", "size": "427160684", "content_type": "video/mp4", "etag": "78c2b173b56cd944e9c79abd601f6073", "last_modified": "May 21, 2024 01:00 PM" }, { "key_type": "file", "key": "samdm.txt", "size": "23", "content_type": "text/plain; charset=utf-8", "etag": "c0122754f465e42eb97b5af174663c29", "last_modified": "May 14, 2024 01:30 PM" }, { "key_type": "file", "key": "samplvbse1.json", "size": "8", "content_type": "application/json", "etag": "499e7dbaee453352a9c17407a676dbda", "last_modified": "May 13, 2024 10:05 AM" }, { "key_type": "file", "key": "samplse1.json", "size": "8", "content_type": "application/json", "etag": "499e7dbaee453352a9c17407a676dbda", "last_modified": "May 13, 2024 09:20 AM" }, { "key_type": "file", "key": "sampjkhdldbed.mp4", "size": "0", "content_type": "video/mp4", "etag": "d41d8cd98f00b204e9800998ecf8427e", "last_modified": "May 12, 2024 10:54 PM" } ] } {{%/code%}} ### List Objects Through Iteration Using this SDK method, you can get all the objects present in a bucket in a single API call, using iteration technique. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-python" scroll="set-scroll" %}}# List objects from the bucket using iterable pagination with specified options objects = bucket.list_iterable_objects( max_keys=5, # Maximum number of objects to retrieve per batch (default is 1000) prefix='sam', # Filter objects that start with this prefix folder_listing=True, # List objects in a folder-like structure (default is False) order_by='desc' # Sort objects in descending order (default is 'asc') ) #Iterate over and print each object key for key in objects: print(key){{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "key_type": "file", "key": "ssdgs.mp4", "size": "3145728", "content_type": "video/mp4", "etag": "9685b8d5b8b719274bac854b897d95ec", "last_modified": "May 21, 2024 03:49 PM" } { "key_type": "file", "key": "Sasss.mp4", "size": "2674", "content_type": "video/mp4", "etag": "24c1122087e9be930ff1e957e83f5224", "last_modified": "May 21, 2024 02:55 PM" } { "key_type": "file", "key": "Samfplessss.mp4", "size": "2674", "content_type": "video/mp4", "etag": "24c1122087e9be930ff1e957e83f5224", "last_modified": "May 21, 2024 02:52 PM" } { "key_type": "file", "key": "demo.mp4", "size": "3400", "content_type": "video/mp4", "etag": "24e957e83f5224c1122087e9be930ff1", "last_modified": "May 21, 2024 02:52 PM" } { "key_type": "file", "key": "performance.mp4", "size": "1454", "content_type": "video/mp4", "etag": "087e9be930ff124c1122e957e83f5224", "last_modified": "May 21, 2024 02:52 PM" } {{%/code%}} -------------------------------------------------------------------------------- title: "Check Object Availability" description: "This page lists the Python SDK method to check if an object is present in a bucket." last_updated: "2026-03-18T07:41:08.614Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/check-object-availability/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/check-object-availability/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/check-object-availability/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Check Object Availability Using this SDK method, you can check if a particular object is present in the bucket, if the user has the required permissions to access the object. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. If you have enabled {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} for your bucket, then you need to pass the {{%badge%}}version_id {{%/badge%}} as the param, to check if a particular version of the object is available. When you use this SDK method, you will get either of the following responses: - {{%badge%}}**true**{{%/badge%}}: If the object is available, the specified version is available, and if the user has the relevant permissions to access the objects. - {{%badge%}}**false**{{%/badge%}}: - If the object or the particular version of the object is not available in the bucket. - If the user does not have the required permissions to access the object. - If the bucket does not exist. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object.</td> </tr> <tr> <td>{{%badge%}}version_id{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. Will hold the unique version ID of the object, if {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled.</td> </tr> <tr> <td>{{%badge%}}throw_err{{%/badge%}}</td> <td>{{%bold%}}Boolean{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If you set this parameter as "{{%bold%}}true{{%/bold%}}", then it will throw an error when the bucket is not found in the project. The default value is "{{%bold%}}false{{%/bold%}}"</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}head_object_res = bucket.head_object( "sam/out/sample.txt", 'version_id', throw_err=False) print(head_object_res){{%/code%}} #### Possible Errors {{%note%}}{{%bold%}}Note:{{%/bold%}} If you use the SDK with the {{%badge%}}throw_err{{%/badge%}} parameter, and the object does not exist, or if you do not have sufficient permissions then you may encounter any of the errors listed below.{{%/note%}} <table class="content-table"> <thead> <tr> <th class="w30p">Error Code</th> <th class="w70p">Meaning</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}{{%bold%}}404{{%/bold%}}{{%/badge%}}</td> <td>Not Found. Object Not found in Stratus.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}401{{%/bold%}}{{%/badge%}}</td> <td>Unauthorized/Access Denied - User doesn't have permission to perform the particular operation.</td> </tr> <tr> <td>{{%badge%}}{{%bold%}}403{{%/bold%}}{{%/badge%}}</td> <td>Permission Denied - User does not have permission to access the particular object.</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Download Object" description: "This page lists the Python SDK method to download objects from a bucket." last_updated: "2026-03-18T07:41:08.614Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/download-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/download-object/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/download-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/download-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/download-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/download-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Download Object ### Download an Object The SDKs present in the section will allow you to {{%link href="/en/cloud-scale/help/stratus/objects/manage-object/download-object/" %}}download a particular object{{%/link%}}, multiple objects, or version of the object. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. The first step of the download operation is a {{%badge%}}GET{{%/badge%}} operation that retrieves the required object from the bucket. To be able to download an object, the requester must have {{%badge%}}READ{{%/badge%}} access permissions. However, owners of the bucket do have the option to grant {{%badge%}}READ{{%/badge%}} access permissions to users, allowing them to download the object without using the required response headers. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for your bucket, you need to pass the {{%badge%}}versionId{{%/badge%}} to download the particular version of the object. If no {{%badge%}}versionId{{%/badge%}} is passed, then by default, the latest version of the object will be downloaded. If *Versioning* was enabled for a bucket, then disabled. By default, the principal first object will be downloaded. To ensure you download the latest version of this object, you need to pass the {{%badge%}}versionId{{%/badge%}} param with the value "{{%badge%}}topVersion{{%/badge%}}". {{%code class="language-python" scroll="set-scroll" %}}res = bucket.get_object("sam/out/sample.txt") # download the object to local machine file = open('file_path','wb') file.write(res){{%/code%}} ### Download a Portion of the Object The following SDK method is used with the {{%badge%}}range{{%/badge%}} parameter. The range parameter allows you to download a specific {{%badge%}}range{{%/badge%}} of bytes of an object. {{%code class="language-python" scroll="set-scroll" %}}options = { 'version_id': '01hx66f1383jm48w9sa4z20kve', # download the object with given version Id 'range': '0-200' # start and end range of an object } res = bucket.get_object('"sam/out/sample.txt", options) # download the object to local machine file = open('file_path','wb') file.write(res){{%/code%}} ### Download an Object Using Transfer Manager In this section, we are going to go over SDK methods that will allow you to successfully download large objects from Stratus to your local system using **Transfer Manager** technique. Transfer Manager is an operation where the large object is split into multiple byte ranges using the start and end bytes range of the object. Each of the object's parts is then returned as a stream, and they are downloaded to your local system. #### Get Transfer Manager Instance To perform transfer manager operations, you need to get a transfer manager object instance. We will refer to this component instance in various code snippets where we work with transfer manager operations being performed on objects stored in a bucket in Stratus. **Parameter Used** {{%badge%}}bucket{{%/badge%}}: This is the bucket instance you need to have initialized earlier using this {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}SDK method{{%/link%}}. **Ensure the following packages are imported** {{%code class="language-python" scroll="set-scroll" %}}from zcatalyst_sdk.stratus.transfer_manager import TransferManager {{%/code%}} {{%code class="language-python" scroll="set-scroll" %}}transfer_manager = TranferManager(bucket){{%/code%}} #### Get Iterable Object It return the iterable object parts. User can write these parts to our local machine using iterator. {{%note%}}{{%bold%}}Note:{{%/bold%}} Use single file to write because it return iterable parts not whole object. If you write in individual files, you need to combine them in to one.{{%/note%}} {{%info%}}{{%bold%}}Info:{{%/bold%}} Ensure you provide {{%badge%}}part_size{{%/badge%}} in {{%bold%}}Mb{{%/bold%}}.{{%/info%}} {{%code class="language-python" scroll="set-scroll" %}}res = transfer_manager.get_iterable_object("sam/out/sample.txt", 20) file = open('file_path','wb') # store the object to local machine for chunk in res: file.write(chunk) {{%/code%}} #### Generate Object Part Downloaders When a user needs to download a large file (example: 10 GB file), using the {{%badge%}}get_object(){{%/badge%}} method is not practical. Instead, the user can opt for this SDK method. By calling the {{%badge%}}generate_part_downloaders(){{%/badge%}} method with the parameters {{%badge%}}key(str){{%/badge%}} and {{%badge%}}part_size(Long){{%/badge%}}, the user can obtain transfer manager functions. These functions, returned in ascending order, each download a specific part of the object. The parts are determined based on the specified part size. {{%code class="language-python" scroll="set-scroll" %}}res = transfer_manager.generate_part_downloaders("sam/out/sample.txt",20) file = open('file_path','wb') for part in res: file.write(part()){{%/code%}} {{%info%}}{{%bold%}}Info:{{%/bold%}} The file must be uploaded via the API or SDK to enable partial downloads. The part_size should be greater than 5 MB and less than 100 MB.{{%/info%}} ### Generate Presigned URL to Download an Object Presigned URLs are secure URLs that authenticated users can share to their non-authenticated users. This URL will provide non-authenticated users with temporary authorization to access objects. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}url_action{{%/badge%}}</td> <td>{{%bold%}}Request Method{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. This is the parameter that will allow you to generate a presigned URL for a download(GET) action. <ul> <li>{{%badge%}}**GET**{{%/badge%}}: To download an object</li> </ul> </td> </tr> <tr> <td>{{%badge%}}expiry{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. The URL validity time in seconds. <ul> <li>Default value: {{%bold%}}3600 seconds{{%/bold%}}</li> <li>Minimum value: {{%bold%}}30 seconds{{%/bold%}}</li> <li>Maximum value: {{%bold%}}7 days{{%/bold%}}</li> </ul> </td> </tr> <tr> <td>{{%badge%}}active_from{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. This param will contain the time after which the URL is valid. Maximum value is {{%bold%}}7 days{{%/bold%}}. URLs are made active as soon as they are generated by default.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}pre_signed_url_res = bucket.generate_presigned_url("sam/out/sample.txt",url_action='GET',expiry_in_sec='300', active_from='1023453725828', version_id='jdery748tfge78') print(pre_signed_url_res){{%/code%}} **Example Response for Generating a Presigned URL for Download** {{%code class="language-json" scroll="set-scroll" %}}{ "signature": "https://zcstratus123-development.zohostratus.com/_signed/sam/out/sample.txt?organizationId=83963316&stsCredential=74660608-83963316&stsDate=1726492859577&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=_G8mnq-03vKgPlnJPmqBvzEnT3Hk-SnECuG-cgURyDs", "expiry_in_seconds": "300", "active_from": "1726492859577" }{{%/code%}} **Example Snippet Illustrating Usage of Presigned URL to Download an Object** {{%code class="language-python" scroll="set-scroll" %}}import requests #Pre-signed URL to download the file url = "https://sadi-development.zohostratus.com/_signed/code.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747899927592&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=-l10AlSsbZzkq6t8HHgDfNkEiiDWFaaU9M3-hPBz0M8" #Path where the downloaded file will be saved locally file_path = "file_path" # Replace with actual file path #Send a GET request to download the file response = requests.get(url, stream=True) #Check if the request was successful if response.status_code == 200: #Open the destination file in binary write mode with open(file_path, "wb") as f: #Write data in chunks to handle large files for chunk in response.iter_content(chunk_size=8192): if chunk: f.write(chunk) print("Download completed successfully.") else: print("Object download failed. Status code:", response.status_code) {{%/code%}} -------------------------------------------------------------------------------- title: "Upload Object" description: "This page lists the Python SDK method to upload objects to a bucket." last_updated: "2026-03-18T07:41:08.615Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/upload-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Upload an Object Help Documentation (/en/cloud-scale/help/stratus/objects/upload-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/upload-object/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/upload-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/upload-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/upload-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/upload-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Upload Object The SDK methods listed in this section will allow you to {{%link href="/en/cloud-scale/help/stratus/objects/upload-object/" %}}upload objects{{%/link%}} to the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}bucket{{%/link%}} in various manners. You can upload objects as a **string** or as a **stream**. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. If you do not have {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} enabled for your object, and if Stratus gets multiple write requests for the same object, the object will be continuously overwritten. The latest upload of the object will be the only object that is stored. However, with Versioning enabled, each upload will be considered a version of the object, and all of them will be stored in the bucket, each with a unique {{%badge%}}version_id{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} The following characters including space are not supported when you create a path or an object: double quote, both angular brackets, hashtag, backward slash and pipe symbol.{{%/note%}} ### Upload Object as a Stream Using this SDK method, you can upload objects to a bucket as a stream. Store the stream in a variable and then pass that variable in the upload method. {{%code class="language-python" scroll="set-scroll" %}}file = open('file_path','rb') res = bucket.put_object("sam/out/sample.txt",file) print(res){{%/code%}} ### Upload Object as a String Using this SDK method, you can upload the object as a string. You will pass the object name, and the data to be stored in the object in string format in the upload method; {{%badge%}}put_object(){{%/badge%}} {{%code class="language-python" scroll="set-scroll" %}}res = bucket.put_object("sam/out/sample.txt",'content of the file') print(res){{%/code%}} ### Upload Object with Options Using this SDK method, you can use the following options while you upload an object. * {{%badge%}}**overwrite**{{%/badge%}}: This is an option you can use, if *Versioning* for your bucket is not enabled for your bucket. Without versioning, you need to use this option if you wish to overwrite a resource. The default value is '**false**'. * {{%badge%}}**ttl**{{%/badge%}}: This is an option you can use to set **Time-to-Live** (TTL) in seconds for an object. Value should be greater than or equal to **60 seconds**. * {{%badge%}}**meta_data**{{%/badge%}}: This is an option you can use to upload {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#metadata" %}}meta details{{%/link%}} of the object that is being uploaded. * {{%badge%}}**content_type**{{%/badge%}}: This is an option you can provide, if you need to set the MIME type of the object. {{%code class="language-python" scroll="set-scroll" %}}options = { 'overwrite': 'true', 'ttl': '300', #provide time to live in seconds 'meta_data': { 'author': 'John' } } file = open('file_path','rb') res = bucket.put_object("sam/out/sample.txt",file, options) print(res){{%/code%}} ### Upload Object With Extract Option When you upload a zip file using the following method, the zip file will be extracted, and the objects will be uploaded to the bucket. {{%code class="language-python" scroll="set-scroll" %}}# Define upload options including extract_upload options = { # Overwrite the object if it already exists 'overwrite': 'true', # Time-to-live in seconds after which the object will expire 'ttl': '300', # Automatically extract contents of ZIP file 'extract_upload': 'true', # MIME type of the object 'content-type': 'application/zip', # Custom metadata associated with the object 'meta_data': { 'author': 'Sam' } } #Open the file in binary mode file = open('sam.zip', 'rb') #Upload and extract ZIP contents res = bucket.put_object('sam/sample.zip', file, options){{%/code%}} This SDK method will return a {{%badge%}}task_id{{%/badge%}}. You can use this {{%badge%}}task_id{{%/badge%}} in this {{%link href="/en/sdk/python/v1/cloud-scale/stratus/extract-zipped-object/#get-zip-extraction-status" %}}SDK method{{%/link%}} to find out the status of the extraction. **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ 'task_id': '1234263749' }{{%/code%}} ### Upload Object Using Multipart In this section we are going to go over the SDK methods that will allow you to successfully upload a large object to a bucket in Stratus. The multipart upload feature will upload a large file to the bucket in multiple HTTPS requests. All of these requests will be combined into a single object once all the individual parts have been uploaded. {{%note%}}{{%bold%}}Note:{{%/bold%}} It is recommended that you consider {{%bold%}}Multipart Upload{{%/bold%}} as the preferred method to upload objects that are {{%bold%}}100 MB or larger{{%/bold%}}.{{%/note%}} #### Initiate Multipart Upload To perform multipart operations, you need to get a multipart object instance. We will refer to this component instance in various code snippets where we work with multipart operations being performed on objects stored in a bucket in Stratus. **Parameter Used** {{%badge%}}bucket{{%/badge%}}: This is the bucket instance you need to have initialized earlier using this {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}SDK method{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}init_res = bucket.initiate_multipart_upload(key="") print(init_res){{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ bucket: 'zcstratus123-development', key: 'objectName.txt', upload_id: '01j7xbm4vm5750zbedxqgc4q6m', status: 'PENDING' }{{%/code%}} #### Upload Parts of the Object In the following SDK method, we are going to perform uploads of the individual parts of the object. Each part will have a distinct partNumber ranging anywhere between 1 and 1000. While this represents the ordering of the parts, these parts will not necessarily be uploaded in sequence. These parts will be combined in sequence once the upload of all the parts of the objects is complete. {{%code class="language-python" scroll="set-scroll" %}}upload_res = bucket.upload_part(key="",upload_id="", part_number=3, body=open('file_path','rb')) print(upload_res){{%/code%}} #### Get Multipart Upload Summary The following SDK method can be used to obtain an operational summary of all the uploaded parts. To view the summary, we will use the {{%badge%}}get_multipart_upload_summary(){{%/badge%}} method. {{%code class="language-python" scroll="set-scroll" %}}summary_res = bucket.get_multipart_upload_summary(key="", upload_id="") print(summary_res){{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "bucket": "zcstratus12345-development", "key": "sasm.txt", "upload_id": "01hyfyeazrrstmt7k5fa7ej726", "status": "PENDING", "parts": [ { "part_number": 1, "size": 0, "uploaded_at": 1716374678999 }, { "part_number": 2, "size": 2797094, "uploaded_at": 1716374678576 }, { "part_number": 4, "size": 0, "uploaded_at": 1716374679136 } ] }{{%/code%}} #### Complete Multipart Upload of the Object The following method allows us to terminate the multipart process once all the parts have been successfully uploaded. To complete the process we will pass the uploadId to the {{%badge%}}complete_multipart_upload(){{%/badge%}} method. {{%code class="language-python" scroll="set-scroll" %}}complete_res = bucket.complete_multipart_upload(key="", upload_id="") print(complete_res){{%/code%}} **Example SDK Implementation** {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}from concurrent.futures import ThreadPoolExecutor import zcatalyst_sdk{{% /panel_without_adjustment %}} {{%code class="language-python" scroll="set-scroll" %}}def handler(request: Request): app = zcatalyst_sdk.initialize() if request.path == "/": # stratus instance stratus = app.stratus() # bucket instance bucket = stratus.bucket('bucket_name') # multipart upload key = "sam/out/sample.txt" file_path = '/sam/smple.mp4' initiate_res = bucket.initiate_multipart_upload(key) part_number = 1 part_size = 50 * 1024 * 1024 futures = [] try: with open(file_path, 'rb') as file: with ThreadPoolExecutor(max_workers=3) as executor: while True: chunk = file.read(part_size) if not chunk: break futures.append(executor.submit( bucket.upload_part, key, initiate_res['upload_id'], chunk, part_number ) ) part_number += 1 for future in futures: future.result() except Exception as err: raise err multipart_upload_res = bucket.complete_multipart_upload(key, initiate_res['upload_id']) return multipart_upload_res else: response = make_response('Unknown path') response.status_code = 400 return response{{%/code%}} ### Upload an Object Using Transfer Manager When the Object that you need to upload is too large to upload, you can perform a transfer manager operation. The transfer manager operation will split the object into multiple parts and perform a quicker upload. In this SDK section, we are going to go over all the SDK methods that are available to perform upload objects in Stratus using Transfer Manager. #### Get Transfer Manager Instance To perform transfer manager operations, you need to get a transfer manager object instance. We will refer to this component instance in various code snippets where we work with transfer manager operations being performed on objects stored in a bucket in Stratus. **Parameter Used** {{%badge%}}bucket{{%/badge%}}: This is the bucket instance you need to have initialized earlier using this {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/create-bucket-instance/" %}}SDK method{{%/link%}}. **Ensure the following packages are imported** {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}from zcatalyst_sdk.stratus.transfer_manager import TransferManager{{% /panel_without_adjustment %}} {{%code class="language-python" scroll="set-scroll" %}}transfer_manager = TranferManager(bucket){{%/code%}} #### Upload an Object Using Transfer Manager In this section we are going to go over the SDK methods that will allow you to successfully upload a large object to a bucket in Stratus. The multipart upload feature will upload a large file to the bucket in multiple HTTPS requests. All of these requests will be combined into a single object once all the individual parts have been uploaded. {{%note%}}{{%bold%}}Note:{{%/bold%}} It is recommended that you consider {{%bold%}}Multipart Upload{{%/bold%}} as the preferred method to upload objects that are {{%bold%}}100 MB or larger{{%/bold%}}.{{%/note%}} #### Create Multipart Instance Using the following SDK method, we are going to generate a {{%badge%}}upload_id{{%/badge%}}. Using this ID we are going to create and return an instance that allows you to perform multipart operations on the object. {{%code class="language-python" scroll="set-scroll" %}}init_ins = transfer_manager.create_multipart_instance(key=""){{%/code%}} If you are required to create an instance for an already initialized multipart upload operation, then copy and use the code snippet given below. {{%code class="language-python" scroll="set-scroll" %}}init_ins = transfer_manager.create_multipart_instance(key="", upload_id=""){{%/code%}} #### Perform Multipart Upload for Parts of the Object In the following SDK method, we are going to perform uploads of the individual parts of the object. Each part will have a distinct {{%badge%}}part_number{{%/badge%}} ranging anywhere between **1 and 1000**. While this represents the ordering of the parts, these parts will not necessarily be uploaded in sequence. These parts will be combined in sequence once the upload of all the parts of the objects is complete. **Parameters Used** * {{%badge%}}part_number{{%/badge%}}: Will have the ordering of the parts that are being uploaded. * {{%badge%}}body{{%/badge%}}: Will contain the data/content of the object. {{%code class="language-python" scroll="set-scroll" %}}upload_res = init_ins.upload_part(body=open('file_path','rb'), part_number=3) print(upload_res){{%/code%}} #### Get Multipart Upload Summary The following SDK method can be used to obtain an operational summary of all the uploaded parts. To view the summary, we will use the {{%badge%}}get_upload_summary(){{%/badge%}} method. {{%code class="language-python" scroll="set-scroll" %}}summary_res = init_ins.get_upload_summary() print(summary_res){{%/code%}} #### Complete Multipart Upload of the Object The following method allows us to terminate the multipart process once all the parts have been successfully uploaded. To complete the process we will pass the {{%badge%}}upload_id{{%/badge%}} to the {{%badge%}}complete_upload(){{%/badge%}} method. {{%code class="language-python" scroll="set-scroll" %}}complete_res = init_ins.complete_upload() print(complete_res){{%/code%}} #### Upload an Object Wrapping all the Transfer Manager Functionality The following SDK method acts as a wrapper, where the entire transfer manager upload operation is carried out without employing multiple steps. Using this method, the object is split into multiple parts, uploaded to the bucket in multiple parts, and then combined once all the parts are uploaded. {{%note%}}{{%bold%}}Note:{{%/bold%}} For object's that are {{%bold%}}larger than 2GB{{%/bold%}}, we would recommend that you use the {{%bold%}}individual SDK methods{{%/bold%}} to carry out the multipart upload operation successfully.{{%/note%}}<br /> {{%code class="language-python" scroll="set-scroll" %}}upload_res = transfer_res.put_object_as_parts(key='', body=open('file_path', 'rb'), part_size=50) print(upload_res) {{%/code%}} ### Generate Presigned URL to Upload an Object Presigned URLs are secure URLs that authenticated users can share to their non-authenticated users. This URL will provide non-authenticated users with temporary authorization to access objects. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}url_action{{%/badge%}}</td> <td>{{%bold%}}Request Method{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. This is the parameter that will allow you to generate a presigned URL for an upload(PUT) action. <ul> <li>{{%badge%}}**PUT**{{%/badge%}}: To upload an object</li> </ul> </td> </tr> <tr> <td>{{%badge%}}expiry{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. The URL validity time in seconds. <ul> <li>Default value: {{%bold%}}3600 seconds{{%/bold%}}</li> <li>Minimum value: {{%bold%}}30 seconds{{%/bold%}}</li> <li>Maximum value: {{%bold%}}7 days{{%/bold%}}</li> </ul> </td> </tr> <tr> <td>{{%badge%}}active_from{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>This is an {{%bold%}}Optional{{%/bold%}} parameter. This param will contain the time after which the URL is valid. Maximum value is {{%bold%}}7 days{{%/bold%}}. URLs are made active as soon as they are generated by default.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}pre_signed_url_res = bucket.generate_presigned_url("sam/out/sample.txt",url_action='PUT',expiry_in_sec='300', active_from='1023453725828') print(pre_signed_url_res){{%/code%}} **Example Response for Generating a Presigned URL for Upload** {{%code class="language-json" scroll="set-scroll" %}}{ "signature": "https://sadi-development.zohostratus.com/_signed/code.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747899245773&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=YBPoNE9txCIUWWX3ntdgVd95VTt1jGFlSuvnTRFbCMQ" file_path = "/Users/ranjitha-18338/Documents/Pyhton-SDK/filestore2.0/output.txt", "expiry_in_seconds": "300", "active_from": "1726492859577" }{{%/code%}} **Example Snippet Illustrating Usage of Presigned URL to Upload an Object** {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import requests{{% /panel_without_adjustment %}} {{%code class="language-python" scroll="set-scroll" %}}#Replace this with your actual pre-signed URL url = "https://sadi-development.zohostratus.com/_signed/code.txt?organizationId=96862383&stsCredential=96858154-96862383&stsDate=1747899245773&stsExpiresAfter=300&stsSignedHeaders=host&stsSignature=YBPoNE9txCIUWWX3ntdgVd95VTt1jGFlSuvnTRFbCMQ" #Path to the local file that you want to upload file_path = "file_path" #Set required headers headers = { # 'Content-Type': 'text/plain', # Specify content type of the file # 'overwrite': 'true', # Optional custom header to indicate overwrite (if required by server) } #Open the file in binary read mode and send a PUT request to upload it with open(file_path, 'rb') as f: files = {'file': f} #Create a file payload response = requests.put(url, headers=headers, files=files) #Check the response status if response.status == 200: print('Object uploaded successfully') else: print('Object upload failed') {{%/code%}} -------------------------------------------------------------------------------- title: "Extract a Zipped Object" description: "This page lists the Python SDK method to extract a zipped object." last_updated: "2026-03-18T07:41:08.615Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/extract-zipped-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/extract-zipped-object/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/extract-zipped-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Extract a Zipped Object The following SDK method will allow you to extract a zip file inside Stratus, and every individual content present in the zip file will be considered as individual object and uploaded to Stratus in the same bucket. This entire process will happen *asynchronously*. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Since the extraction process occurs asynchronously, the time in which the entire process is completed is dependent on the size of the zip file that is being extracted.{{%/note%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will be the name of the zip file, you need to extract</td> </tr> <tr> <td>{{%badge%}}destination{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will contain the complete {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path information{{%/link%}} of the destination, where the extracted objects will be stored in the bucket.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}unzip_res = bucket.unzip_object("sam/out/sample.zip","output/") print(unzip_res){{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "key": "sam/out/sample.zip", "destination": "output/", "task_id": "6963000000272049", "message": "Zip extract scheduled" }{{%/code%}} ### Get Zip Extraction Status The zip extraction process occurs asynchronously, and the time it takes to complete the extraction process is highly contingent on the size of the zip file. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} Using the {{%badge%}}task_id{{%/badge%}} parameter, in the following SDK method, we can determine the status of the extraction. The {{%badge%}}task_id{{%/badge%}} is returned in the response of {{%badge%}}unzip_object(){{%/badge%}} method. {{%code class="language-python" scroll="set-scroll" %}}res = bucket.get_unzip_status("sam/out/sample.zip", 'task_id') print(res){{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "task_id": "6963000000272049", "status": "SUCCESS" }{{%/code%}} -------------------------------------------------------------------------------- title: "Copy Object" description: "This page lists the Python SDK method to make a copy of an object within its own bucket." last_updated: "2026-03-18T07:41:08.616Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/copy-objects/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/copy-objects/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/copy-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Copy Object Using this SDK method, you can copy an object and paste it within a bucket. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} The {{%badge%}}key{{%/badge%}} will be the object you are going to copy, and the {{%badge%}}destination{{%/badge%}}, will contain the new name of the copied object. To paste the copied object in a different path, you need to provide the complete path name as {{%badge%}}dest_object{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} * You need to provide the complete object name, along with the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}{{%bold%}}path{{%/bold%}}{{%/link%}} for both {{%badge%}}key{{%/badge%}} and {{%badge%}}destination{{%/badge%}} values. * For example, if you have file named "{{%badge%}}kitten.png{{%/badge%}}" in the path {{%badge%}}pictures/puppy{{%/badge%}}, and you need to copy the file to {{%badge%}}pictures/kitten{{%/badge%}} path, then: <br /> {{%badge%}}key{{%/badge%}} value will be '{{%badge%}}pictures/puppy/kitten.png{{%/badge%}}'<br /> {{%badge%}}destination{{%/badge%}} value will be '{{%badge%}}pictures/kitten/kitten.png{{%/badge%}}'{{%/note%}}<br /> {{%code class="language-python" scroll="set-scroll" %}}res = bucket.copy_object("sam/out/sample.txt","output/sample.txt") print(res){{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "copy_to": "output/sample.txt", "object_key": "sam/out/sample.txt", "message": "Object copied successfully." }{{%/code%}} -------------------------------------------------------------------------------- title: "Rename and Move Operations on an Object" description: "This page lists the Python SDK method to perform rename and move operations on an object." last_updated: "2026-03-18T07:41:08.616Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/rename-move-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/rename-move-object/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/rename-move-object/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Rename and Move Operations on an Object To rename and to move an object, we will be using the same {{%badge%}}rename_object(){{%/badge%}} SDK method. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>The original name of the object that you need to rename</td> </tr> <tr> <td>{{%badge%}}destination{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>The new name that you rename the object with</td> </tr> </tbody> </table> {{%note%}}{{%bold%}}Note:{{%/bold%}} * You need to provide the complete object name, along with the {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}{{%bold%}}path{{%/bold%}}{{%/link%}} for both {{%badge%}}sourceObject{{%/badge%}} and {{%badge%}}destObject{{%/badge%}} values. * For example, if you have file named "{{%badge%}}kitten.png{{%/badge%}}" in the path {{%badge%}}pictures/puppy{{%/badge%}}, and you need to move or rename the file to {{%badge%}}pictures/kitten{{%/badge%}} path, then: <br /> {{%badge%}}key{{%/badge%}} value will be '{{%badge%}}pictures/puppy/kitten.png{{%/badge%}}'<br /> {{%badge%}}destination{{%/badge%}} value will be '{{%badge%}}pictures/kitten/kitten.png{{%/badge%}}'{{%/note%}}<br /> ### Rename an Object Using the {{%badge%}}rename_object(){{%/badge%}} SDK method you can rename objects present in a bucket. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} * You cannot rename objects in a bucket that has {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} enabled. * The following characters including space are not supported when you create a path or an object: double quote, both angular brackets, hashtag, backward slash and pipe symbol.{{%/note%}} {{%code class="language-python" scroll="set-scroll" %}}rename_res = bucket.rename_object("sam/out/sample.txt","sam/out/update_sample.txt") print(rename_res){{%/code%}}<br /> #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "current_key": "sam/out/sample.txt", "message": "Rename successful", "rename_to": "sam/out/update_sample.txt" }{{%/code%}} ### Move an Object Using the {{%badge%}}rename_object(){{%/badge%}} SDK method, we can move the object from one path to another within a bucket. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-python" scroll="set-scroll" %}}rename_res = bucket.rename_object("sam/out/sample.txt","output/sample.txt") print(rename_res){{%/code%}}<br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} You cannot perform move operations in a bucket that has {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} enabled.{{%/note%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "current_key": "sam/out/sample.txt", "message": "Rename successful", "rename_to": "sutput/sample.txt" }{{%/code%}} -------------------------------------------------------------------------------- title: "Delete Objects" description: "This page lists the Python SDK method to delete objects stores in a bucket." last_updated: "2026-03-18T07:41:08.616Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/delete-objects/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/delete-objects/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/delete-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/delete-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/delete-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/delete-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Delete Objects The following SDK methods will allow you to perform delete operations in Stratus. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}version_id{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for your bucket then, this param will help you refer to a particular version using its unique Version ID.</td> </tr> <tr> <td>{{%badge%}}ttl{{%/badge%}}</td> <td>{{%bold%}}int{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. It allows you to schedule your delete operations. For example, if you provide the value of {{%badge%}}ttl{{%/badge%}} as {{%bold%}}60{{%/bold%}}, the delete operation will only occur after 60 seconds. The value of {{%badge%}}ttl{{%/badge%}} has to be >= 60 seconds.</td> </tr> </tbody> </table> ### Delete a Single Object Using this SDK method, you can delete a particular object by passing the object name to the {{%badge%}}delete_object(){{%/badge%}} method. {{%code class="language-python" scroll="set-scroll" %}}delete_res = bucket.delete_object("sam/out/sample.txt") print(delete_res){{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled on the bucket and no specific {{%badge%}}version_id{{%/badge%}} is provided, deleting an object will {{%bold%}}remove all versions{{%/bold%}} of that object by default.{{%/note%}} ### Delete a Specific Version of an Object after a Specific Time Ensure you provide the {{%badge%}}versionId{{%/badge%}} of the object if you enabled {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} for your bucket. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} You can also schedule your delete operation using the {{%badge%}}ttl{{%/badge%}} variable. For example, if you provide the value of {{%badge%}}ttl{{%/badge%}} as **100**, the delete operation will only occur after **100 seconds**. Always ensure that the value of {{%badge%}}ttl{{%/badge%}} is greater than equal to **60 seconds**. {{%code class="language-python" scroll="set-scroll" %}}delete_res = bucket.delete_object("sam/out/sample.txt", 'version_id', ttl=300) print(delete_res){{%/code%}} ### Delete Multiple Objects Using this SDK method, you can delete multiple objects by passing the names of the objects that need to be deleted as an array. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} Ensure you provide the {{%badge%}}versionId{{%/badge%}} of the object if you enabled {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} for your bucket. You can also schedule your delete operation using the {{%badge%}}ttl{{%/badge%}} variable. For example, if you provide the value of {{%badge%}}ttl{{%/badge%}} as **100**, the delete operation will only occur after **100 seconds**. Always ensure that the value of {{%badge%}}ttl{{%/badge%}} is greater than equal to **60 seconds**. {{%code class="language-python" scroll="set-scroll" %}} delete_objects_res = bucket.delete_objects([ { 'key' : "sam/out/sample.txt", 'version_id':'01hj6ackcxpha9151n7mj0cq6g' }, { 'key' :"sam/out/sample1.txt", 'version_id':'01hj68v1tmb33wa7zchb1vtbjn' }],ttl=300) print(delete_objects_res) {{%/code%}} #### Example Response for Delete Operation {{%code class="language-json" scroll="set-scroll" %}}{'message': 'Object Deletion successful.'}{{%/code%}} ### Truncate Bucket Using this SDK method you will be able to essentially every single object present in the bucket. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-python" scroll="set-scroll" %}}# delete all the objects in the bucket truncate_res = bucket.truncate() print(truncate_res) {{%/code%}} ### Delete a Path in the Bucket Using this SDK, you will be able to delete all the objects present in a {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} You need to pass the complete path to the {{%badge%}}delete_path(){{%/badge%}} method. {{%code class="language-python" scroll="set-scroll" %}}path_res = bucket.delete_path("sam/") print(path_res){{%/code%}}<br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} Ensure that you provide the exact path. If an incorrect path is provided, the delete action will get scheduled, but it will result in an error.{{%/note%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "path": "sam/", "message": "Path deletion scheduled" }{{%/code%}} -------------------------------------------------------------------------------- title: "Create Object Instance" description: "This page lists the Python SDK method to create an object instance." last_updated: "2026-03-18T07:41:08.616Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/create-object-instance/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/create-object-instance/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-object-instance/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Object Instance Use the following method to get an object instance to perform object-related operations. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-bucket-instance/" %}}component instance{{%/link%}}. {{%code class="language-python" scroll="set-scroll" %}}object_ins = bucket.object("sam/out/sample.txt"){{%/code%}} -------------------------------------------------------------------------------- title: "List Object Versions" description: "This page lists the Python SDK method to get versions of an object." last_updated: "2026-03-18T07:41:08.616Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/list-object-versions/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/get-object-versions/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/get-object-versions/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # List Object Versions ### List All Versions of an Object Through Pagination Enabling {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} in a bucket allows you to store multiple versions of the same object in the bucket. Each version of the object will have its own {{%badge%}}versionId{{%/badge%}}. This SDK method allows you to get all the existing versions of an object present in a bucket by pagination. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}next_token{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>Will hold the value to determine the next set of versions.</td> </tr> <tr> <td>{{%badge%}}max_versions{{%/badge%}}</td> <td>{{%bold%}}int{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. Will hold the value of the maximum number of versions of the object that can be listed per iteration.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}def list_my_paged_versions(max_versions = None, next_token= None): res = object_ins.list_paged_versions(max_versions, next_token) print(res) if not res['is_truncated']: # return 'true' if more versions are available for the object. Return 'false' no more versions available for the object return list_my_paged_versions(max_versions, next_token) list_my_paged_versions(2){{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "key": "downloaded_file.json", "versions_count": 2, "max_versions": "2", "is_truncated": "False", "next_continuation_token": "4YpUdkktt2UeWp6MwEK1LZXELnuVhunHLnGgX29uvszwtJEQE2gVDJYyRiLdUmhNst", "version": [ { "version_id": "01hyfh12njtpyvzwq6p1fd2d8s", "is_latest": "True", "last_modified": "May 22, 2024 12:20 PM", "size": 1, "etag": "9af7c117d9de9a06fba7a5f1ea5fcc2d" }, { "version_id": "01hyfh0xkvwkxxsjfceef201xa", "is_latest": "False", "last_modified": "May 22, 2024 12:20 PM", "size": "1", "etag": "9af7c117d9de9a06fba7a5f1ea5fcc2d" } ] }{{%/code%}} ### List All Versions of the Object Through Iteration You can use the following SDK method to get all available versions of the object in a single call. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-python" scroll="set-scroll" %}}versions = object_ins.list_iterable_versions(2) for key in versions: print(key){{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}} { "version_id": "01hyfh12njtpyvzwq6p1fd2d8s", "is_latest": "True", "last_modified": "May 22,2024 12:20 PM", "size": "1", "etag": "9af7c117d9de9a06fba7a5f1ea5fcc2d" } { "version_id": "01hyfh0xkvwkxxsjfceef201xa", "is_latest": "False", "last_modified": "May 22, 2024 12:20 PM", "size": "1", "etag": "9af7c117d9de9a06fba7a5f1ea5fcc2d" }{{%/code%}} -------------------------------------------------------------------------------- title: "Get Object Details" description: "This page lists the Python SDK method to get details of objects stored in a bucket." last_updated: "2026-03-18T07:41:08.617Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/object-details/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/object-details/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/object-details/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Get Object Details ### Get Details of an Object Use the following SDK method to get details of an object stored in the bucket. The Object reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-object-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-python" scroll="set-scroll" %}}res = object_ins.get_details() print(res){{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled, then using this SDK method will only return the latest version's object details.{{%/note%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "key": "sam/out/sample.txt", "size": 1, "content_type": "text/plain", "last_modified": "May 22, 2024 12:25 PM", "meta_data": { "author": "John" }, "object_url": "https://zcstratus12345-development.zohostratus.com/sam/out/sample.txt", "cached_object_url": "https://zcstratus12345-development.nimbuslocaledge.com/sam/out/sample.txt" }{{%/code%}} ### Get Details of a Particular Version of the Object Using this SDK method, you will be able to get all details of a particular object's version. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}version_id{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for your bucket then, this param will help you refer to a particular version using its unique Version ID.</td> </tr> </tbody> </table> {{%note%}}{{%bold%}}Note{{%/bold%}}: * You need to have enabled {{%bold%}}Versioning{{%/bold%}} for your objects at least once to use this method. * You can find out more about Versioning from this {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}help documentation{{%/link%}}.{{%/note%}} {{%code class="language-python" scroll="set-scroll" %}}res = object_ins.get_details('version_id') print(res){{%/code%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}}{ "key": "sample.txt", "version_id": "01j7xgnmv5dhpk45kn3pctkasp", "size": 16, "content_type": "text/plain", "etag": "ad6affccd08876ad9ae5f60b7848b2c7", "last_modified": "Sep 16, 2024 07:04 PM", "object_url": "https://zcstratus123-development.zohostratus.com/sample.txt", "cached_object_url": "https://zcstratus123-development.nimbuslocaledge.com/sample.txt", }{{%/code%}} -------------------------------------------------------------------------------- title: "Put Object Meta Data" description: "This page lists the Python SDK method to add meta data for an object stored in the object." last_updated: "2026-03-18T07:41:08.617Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/cloud-scale/stratus/put-object-meta/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/put-object-meta/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/put-object-meta/) - Web SDK (/en/sdk/web/v4/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Put Object Meta Data Using the following SDK method, you can add {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#metadata" %}}meta details{{%/link%}} for a particular object stored in a bucket in Stratus. The Object reference used in the below code snippet is the {{%link href="/en/sdk/python/v1/cloud-scale/stratus/create-object-instance/" %}}component instance{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} The meta details will be passed as JSON key value pairs. For example, {"meta_key" : "meta_value"} {{%code class="language-python" scroll="set-scroll" %}}res = object_ins.put_meta({'author': 'Amelia Burrows'}) print(res){{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} * Using this method to pass new meta details without adding the existent details will delete the existing details and only put the new details. To avoid this, pass the new meta details along with the existing meta details. * You can use alphanumeric, underscores, or whitespace characters, as well as hyphens, to write your metadata. No other special character is allowed other than the once mentioned. * You can fetch the metadata of an object using the {{%badge%}}**HEAD**{{%/badge%}} request method. In the response, the metadata will be listed in the key '{{%badge%}}x-user-meta{{%/badge%}}'. * The maximum size limit of characters allowed for the overall metadata is **2047** characters. The character count used to determine the size limit also includes the colon ":" special character used to define the key value pair.{{%/note%}} #### Example Response {{%code class="language-json" scroll="set-scroll" %}} { "message": "Metadata added successfully" }{{%/code%}} --- ## SDK — Web — Stratus -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the web SDK method to perform operations in Stratus." last_updated: "2026-03-18T07:41:08.618Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/stratus/overview/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/overview/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/overview/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/overview/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Overview Cloud Scale {{%link href="/en/cloud-scale/help/stratus/introduction" %}}Stratus{{%/link%}} is Catalyst's robust and powerful storage solution. You can store data of any format in the form of {{%link href="/en/cloud-scale/help/stratus/objects/introduction/" %}}Objects{{%/link%}} in containers called {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}}. Each Bucket and every individual object in the bucket has a secure {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#object-url" %}}Object URL{{%/link%}} and {{%link href="/en/cloud-scale/help/stratus/buckets/create-bucket/#bucket-url" %}}Bucket URL{{%/link%}}. You can perform upload and download operations on objects and even provide {{%link href="/en/cloud-scale/help/stratus/stratus-permissions/#custom-permissions" %}}custom permissions{{%/link%}} for each object. {{%note%}}{{%bold%}}Note:{{%/bold%}} * It is advised you {{%link href="/en/cloud-scale/help/stratus/stratus-config/bucket-cors/" %}}enable CORS{{%/link%}} to whitelist your required application or AppSail service domain and use the following SDKs. * To use the Stratus SDK methods, you need to ensure you upgrade your {{%bold%}}Web SDK{{%/bold%}} to {{%link href="https://static.zohocdn.com/catalyst/sdk/js/4.5.0-beta/catalystWebSDK.js" %}}{{%badge%}}v4.5.0-beta{{%/badge%}}{{%/link%}}. * You also need to upgrade the {{%link href="/en/cli/v1/cli-command-reference/" %}}Catalyst CLI{{%/link%}} to {{%badge%}}v1.18.0-beta.5{{%/badge%}}{{%/note%}} The following table contains the list of all the Catalyst SDKs that can be used to perform Stratus operations through code. <table class="content-table"> <thead> <tr> <th class="w30p">Category</th> <th class="w70p">SDK Method</th> </tr> </thead> <tbody> <tr> <td>General Stratus Operations</td> <td> <ul> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/" %}}Create Stratus Instance{{%/link%}} <ul> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/#initialize-bucket-instance" %}}Initialize Bucket Instance{{%/link%}}</li> </ul> </li> </ul> </td> </tr> <tr> <td>Bucket Operations</td> <td> <ul> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/check-object/" %}}Check Object Availability{{%/link%}} <ul> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/check-object/#check-object-availability-without-versionid" %}}Check Object Availability Without VersionID{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/check-object/#check-object-availability-with-versionid" %}}Check Object Availability With VersionID{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/" %}}Download Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/#download-object-using-object-name" %}}Download Object Using Object Name{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/#download-a-particular-version-of-the-object" %}}Download a Particular Version of the Object{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/#download-object-with-process-callback" %}}Download Object With Process Callback{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/#download-a-particular-part-of-the-object" %}}Download a Particular Part of the Object{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/#download-object-using-a-signed-url" %}}Download Object Using a Signed URL{{%/link%}} <ul> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/#using-asynchronous-functions" %}}Using Asynchronous Functions{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/#using-promises" %}}Using Promises{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/#using-signedurl-with-options" %}}Using SignedURL with Options{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/download-object/#download-a-cached-object-using-cached-url" %}}Download a Cached Object Using Cached URL{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/upload-object/" %}}Upload Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/upload-object/#upload-object-as-file" %}}Upload Object as File{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/upload-object/#upload-object-as-string" %}}Upload Object as String{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/upload-object/#upload-object-with-options" %}}Upload Object With Options{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/upload-object/#upload-object-with-process-callback" %}}Upload Object With Process Callback{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/upload-object/#upload-object-with-its-meta-details" %}}Upload Object With Its Meta Details{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/upload-object/#mutlipart-upload" %}}Mutlipart Upload{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/upload-object/#upload-an-object-wrapping-all-the-multipart-functionality" %}}Upload an Object Wrapping all the Multipart Functionality{{%/link%}}</li> </ul> </li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/delete-object/" %}}Delete Object{{%/link%}} <ul> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/delete-object/#delete-object-with-object-name" %}}Delete Object With Object Name{{%/link%}}</li> <li>{{%link href="/en/sdk/web/v4/cloud-scale/stratus/delete-object/#delete-object-with-object-name-and-versionid" %}}Delete Object With Object Name and VersionID{{%/link%}}</li> </ul> </li> </ul> </td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Create Stratus Instance" description: "This page describes the web SDK method to initialize Stratus instance." last_updated: "2026-03-18T07:41:08.619Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/create-stratus-instance/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/create-stratus-instance/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/create-stratus-instance/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/create-bucket-instance/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/create-bucket-instance/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/initialize-stratus/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Create Stratus Instance You can get the {{%badge%}}stratus{{%/badge%}} component reference as shown below. This will not fire a server-side call. We will refer to this component instance in various code snippets of working with Stratus. {{%code class="language-javascript" scroll="set-scroll" %}}const stratus = catalyst.stratus{{%/code%}} ### Initialize Bucket Instance To perform bucket level operations, you need to initialize a bucket instance. We will refer to this component instance in various code snippets of working with {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}Buckets{{%/link%}} in Stratus. {{%code class="language-javascript" scroll="set-scroll" %}}const bucket = stratus.bucket("bucketName"){{%/code%}} -------------------------------------------------------------------------------- title: "Check Object Availability" description: "This page describes the web SDK method to check if an object is present in a bucket." last_updated: "2026-03-18T07:41:08.619Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/stratus/check-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/check-bucket/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/check-bucket/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/check-bucket/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/overview/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/overview/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/overview/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Check Object Availability Using the {{%badge%}}headObject(){{%/badge%}} SDK method, you can check the existence of an object in a bucket, and further check if the user has the relevant permissions to access the objects present in the bucket. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/#initialize-bucket-instance" %}}component instance{{%/link%}}. Possible responses when using this SDK: * If the bucket exists and if the user has the relevant permissions to access the objects in it, the response '**true**' will be returned. * If the bucket does not exist, or if the user does not have permission to access the objects in it, the response '**false**' will be returned. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}options{{%/badge%}}</td> <td>{{%bold%}}JSON Object{{%/bold%}}</td> <td>An {{%bold%}}Optional{{%/bold%}} parameter to hold the following parameters: <ul> <li>{{%badge%}}{{%bold%}}versionId{{%/bold%}}{{%/badge%}}: <ul> <li>An optional {{%bold%}}String{{%/bold%}} parameter.</li> <li>If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for your bucket then, this param will help you refer to a particular version using its unique Version ID.</li> </ul> </li> <li>{{%badge%}}{{%bold%}}throwErr{{%/bold%}}{{%/badge%}}: <ul> <li>An optional {{%bold%}}Boolean{{%/bold%}} parameter.</li> <li>If you set this parameter as "{{%bold%}}true{{%/bold%}}", then it will throw an error when the bucket is not found in the project.</li> <li>The default value is "{{%bold%}}false{{%/bold%}}"</li> </ul> </li> </ul> </td> </tr> </tbody> </table> ### Check Object Availability Without VersionID The following SDK method will provide you with the {{%badge%}}topVersion{{%/badge%}} (latest version) of the object in the bucket. {{%code class="language-javascript" scroll="set-scroll" %}}// Check if an object is available const checkObjectAvailability = await bucket.headObject("key"){{%/code%}} ### Check Object Availability With VersionID The following SDK method will check the availability of a specific version of the object. the required version will be reffered by its unique {{%badge%}}versionId{{%/badge%}}. {{%code class="language-javascript" scroll="set-scroll" %}}// Check if certain version of an object is Available const options = { versionId: 'djkfhdiufy762', throwErr: false }; const checkObjectAvailability = await bucket.headObject("key", options){{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "status": 200, "content": true | false, "message": "OK" }{{%/code%}} -------------------------------------------------------------------------------- title: "Download Object" description: "This page describes the web SDK method to retreive an object from Stratus." last_updated: "2026-03-18T07:41:08.619Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/stratus/download-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/download-object/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/download-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/download-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/download-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/download-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/download-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Download Object This SDK method can be used to download an object from the bucket. The response will be in **blob** format. The Stratus reference used in the below code snippet is the {{%link href="/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/" %}}component instance{{%/link%}}. Expected responses with respect to {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} status of the bucket: * If you do not pass the {{%badge%}}versionId{{%/badge%}}, then you will get the **latest object**, along with the key you mention in the request. * If Versioning was enabled for a bucket, then disabled. By default, the principal first object will be returned. To ensure you download the latest version of this object, you need to pass the {{%badge%}}versionId{{%/badge%}} param with the value "{{%badge%}}topVersion{{%/badge%}}". * To retrieve a specific version, use the {{%badge%}}versionId{{%/badge%}} query parameter with a valid version as a value. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>Will hold the name of the object</td> </tr> <tr> <td>{{%badge%}}options{{%/badge%}}</td> <td>{{%bold%}}JSON Object{{%/bold%}}</td> <td> <ul> <li>{{%badge%}}{{%bold%}}versionId{{%/bold%}}{{%/badge%}}: This is an optional {{%bold%}}String{{%/bold%}} parameter. Will hold the unique {{%badge%}}version ID{{%/badge%}} of the required object's version. </li> <li>{{%badge%}}{{%bold%}}range{{%/bold%}}{{%/badge%}}: This is an optional {{%bold%}}String{{%/bold%}} parameter. The byte range of the required object. Will be used to get a specific part of the object.</li> <li>{{%badge%}}{{%bold%}}cached{{%/bold%}}{{%/badge%}}: This is an optional {{%bold%}}Boolean{{%/bold%}} parameter. <ul> <li>Will be used to get cached version of the object</li> <li>Will only accept two values: "{{%badge%}}true{{%/badge%}}" or "{{%badge%}}false{{%/badge%}}"</li> <li>{{%badge%}}false{{%/badge%}} will be the value, if this param is not used</li> <li>{{%badge%}}true{{%/badge%}} will be the value, if {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#caching" %}}Caching{{%/link%}} is enabled for your bucket and you pass this param. In this case, the object will be retrieved from the cached domain.</li> </ul> </li> <li>{{%badge%}}{{%bold%}}signed{{%/bold%}}{{%/badge%}}: This is an optional {{%bold%}}Boolean{{%/bold%}} parameter. The default value is "{{%badge%}}false{{%/badge%}}". Will make an api call to get a signed url. </li> <li>{{%badge%}}{{%bold%}}signedUrlFn{{%/bold%}}{{%/badge%}}: <ul> <li>This is an optional {{%bold%}}Function{{%/bold%}} parameter.</li> <li>This is a Callback function that will return a {{%bold%}}signedurl api respone{{%/bold%}} given in server SDK ({{%link href="/en/sdk/java/v1/cloud-scale/stratus/pre-signed-urls/" %}}Java{{%/link%}}, {{%link href="/en/sdk/nodejs/v2/cloud-scale/stratus/pre-signed-urls/" %}}Node.js{{%/link%}}, and {{%link href="/en/sdk/python/v1/cloud-scale/stratus/pre-signed-urls/" %}}Python{{%/link%}}) to download a file.</li> <li>This function will only accept asynchronous functions and promises.</li> <li>When this function is used, Catalyst will pass the cached url and expiry time to it as parameters which can be used to generate a signed url.</li> </ul> </li> </ul> </td> </tr> <tr> <td>{{%badge%}}processCallback{{%/badge%}}</td> <td>{{%bold%}}Function{{%/bold%}}</td> <td>Callback function while downloading file</td> </tr> </tbody> </table> ### Download Object Using Object Name The following SDK snippet will allow you to download an object from a bucket in Stratus using its {{%badge%}}key{{%/badge%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const getObject = await bucket.getObject("key"); const getObjectStart = getObject.start(); // to start the request const getObjectAbort = getObject.abort(); // to abort the request{{%/code%}} ### Download a Particular Version of the Object The following SDK snippet will allow you to download a particular version of the object from a bucket in Stratus using its {{%badge%}}key{{%/badge%}}, and {{%badge%}}versionId{{%/badge%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const options = { 'versionId': 'djkshr8374yiuhf48', // download a specific version of an object } const getObject = await bucket.getObject("key", options); const getObjectStart = getObject.start(); // to start the request const getObjectAbort = getObject.abort(); // to abort the request{{%/code%}} ### Download Object With Process Callback The following SDK snippet will allow you to download a particular object from a bucket in Stratus with process callback options. This SDK is best used when you wish to perform an additional function like logging, rendering load/buffer screens, etc. alongside the download operation. {{%code class="language-javascript" scroll="set-scroll" %}}// process callback while an object is being downloaded const processCallback = () => { // Function to execute while the object is being fetched console.log("Downloading Object"); } const options = { 'versionId': 'djkshr8374yiuhf48' } const getObject = await bucket.getObject("key", options, processCallback); const getObjectStart = getObject.start(); // to start the request const getObjectAbort = getObject.abort(); // to abort the request{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "status": 200, "content": {Blob Data}, "message": "OK" }{{%/code%}} **Possible Exceptions** * **404**: Object or Bucket Not Found * **416**: Requested range not satisfiable ### Download a Particular Part of the Object In this section, we are going to go over an SDK method that will allow you to successfully download a required byte range of the object from Stratus to your local system. The Stratus reference used in the below code snippet is the {{%link href="/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/" %}}component instance{{%/link%}}. This method functions in a manner where the object is split into multiple byte ranges using the start and end bytes range of the object. {{%code class="language-javascript" scroll="set-scroll" %}}const processCallback = () => { // Function to execute while the object is being fetched console.log("Downloading Object"); } const options = { 'range': '0-2000' // start and end range of the object in bytes } const getObject = await stratus.getObject("key", options, processCallback); const getObjectStart = getObject.start(); // to start the request const getObjectAbort = getObject.abort(); // to abort the request{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "status": 206, "content": {Blob Data}, "message": "PARTIAL_CONTENT" }{{%/code%}} ### Download Object Using a Signed URL #### Using Asynchronous Functions {{%code class="language-javascript" scroll="set-scroll" %}}// Download Object Using Signed Url // Using Asynchronous Function const processCallback = () => { // Function to execute while the object is being fetched console.log("Downloading Object"); } const options = { 'range': '0-2000' // start and end range of the object in bytes, 'signed': true, // to declare we will be using signed url to getObject from bucket. 'signedUrlFn' : async (functionData) => { console.log("Data : " + functionData); // Function Logic return { "signed_url": "" //signed url } } } const getObject = await stratus.getObject("key", options, processCallback); const getObjectStart = getObject.start(); // to start the request const getObjectAbort = getObject.abort(); // to abort the request{{%/code%}} #### Using Promises {{%code class="language-javascript" scroll="set-scroll" %}}// Using Promises const processCallback = () => { // Function to execute while the object is being fetched console.log("Downloading Object"); } const options = { 'range': '0-2000' // start and end range of the object in bytes, 'signed': true, // to declare we will be using signed url to getObject from bucket. 'signedUrlFn' : (functionData) => { return new Promise((resolve, reject) => { console.log("Data : " + functionData); // Function Logic resolve({ "signed_url" : "" }) }) } } const getObject = await stratus.getObject("key", options, processCallback); const getObjectStart = getObject.start(); // to start the request const getObjectAbort = getObject.abort(); // to abort the request{{%/code%}} #### Using SignedURL with Options The following SDK method will allow you download an object using a signed URL, and to set an **expiry time** for the signed URL. {{%code class="language-javascript" scroll="set-scroll" %}}// Download Object Using Signed Url and Expiry Time const processCallback = () => { // Function to execute while the object is being fetched console.log("Downloading Object"); } const options = { 'range': '0-2000' // start and end range of the object in bytes, 'signed': true, // to declare we will be using signed url to getObject from bucket. 'signedUrlFn' : async (functionData) => { console.log("Data : " + functionData); // Function Logic return { "signed_url": "" // Signed Url } }, "expiryInSeconds" : 3000 // In Seconds } const getObject = await stratus.getObject("key", options, processCallback); const getObjectStart = getObject.start(); // to start the request const getObjectAbort = getObject.abort(); // to abort the request{{%/code%}} ### Download a Cached Object Using Cached URL The following SDK method will allow you to download a cached object using the {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#caching" %}}Cached URL{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}// Cached URL const processCallback = () => { // Function to execute while the object is being fetched console.log("Downloading Object"); } const options = { 'range': '0-2000' // start and end range of the object in bytes, 'cached': true, // to declare we will be using cached url to getObject from bucket. } const getObject = await stratus.getObject("key", options, processCallback); const getObjectStart = getObject.start(); // to start the request const getObjectAbort = getObject.abort(); // to abort the request{{%/code%}} -------------------------------------------------------------------------------- title: "Upload Object" description: "This page describes the web SDK method to upload an object to a bucket." last_updated: "2026-03-18T07:41:08.620Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/stratus/upload-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Upload Object Help Documentation (/en/cloud-scale/help/stratus/objects/upload-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/upload-object/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/upload-object/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/upload-object/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/upload-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/upload-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/upload-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Upload Object The SDK method listed in this section will allow you to {{%link href="/en/cloud-scale/help/stratus/objects/upload-object/" %}}upload objects{{%/link%}} to the {{%link href="/en/cloud-scale/help/stratus/buckets/name-bucket/" %}}bucket{{%/link%}}. The Stratus reference used in the below code snippet is the {{%link href="/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/" %}}component instance{{%/link%}}. If you do not have {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} enabled for your object, and if Stratus gets multiple write requests for the same object, the object will be continuously overwritten. The latest upload of the object will be the only object that is stored. However, with Versioning enabled, each upload will be considered a version of the object, and all of them will be stored in the bucket, each with a unique {{%badge%}}versionId{{%/badge%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} The following characters including space are not supported when you create a path or an object: double quote, both angular brackets, hashtag, backward slash and pipe symbol.{{%/note%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}File{{%/badge%}}</td> <td>{{%bold%}}File | String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. The object that needs to be uploaded.</td> </tr> <tr> <td>{{%badge%}}options{{%/badge%}} <td>{{%bold%}}JSON Object{{%/bold%}}</td> <td> <ul> <li>{{%badge%}}{{%bold%}}overwrite{{%/bold%}}{{%/badge%}}: This is an optional {{%bold%}}String{{%/bold%}} parameter. <ul> <li>If {{%italics%}}Versioning{{%/italics%}} for your bucket is not enabled, then you need to use this option if you wish to overwrite a resource.</li> <li>Default value: {{%badge%}}false{{%/badge%}}</li> </ul> </li> <li>{{%badge%}}{{%bold%}}ttl{{%/bold%}}{{%/badge%}}: This is an optional {{%bold%}}String | Number{{%/bold%}} parameter. <ul> <li>You can set {{%bold%}}Time-to-Live{{%/bold%}} (ttl) in seconds for an object.</li> <li>The value should be greater than or equal to {{%bold%}}60 seconds{{%/bold%}}.</li> </ul> </li> <li>{{%badge%}}{{%bold%}}type{{%/bold%}}{{%/badge%}}: This is an optional {{%bold%}}String{{%/bold%}} parameter. <ul> <li>This paramater can be used to overwrite the {{%badge%}}content-type{{%/badge%}} of the object.</li> <li>If you do not pass this parameter, then by default the value of {{%badge%}}type{{%/badge%}} will be {{%badge%}}{{%bold%}}application/octet-stream{{%/bold%}}{{%/badge%}}</li> </ul> </li> <li>{{%badge%}}{{%bold%}}meta{{%/bold%}}{{%/badge%}}: This is an optional {{%bold%}}JSON Object{{%/bold%}} parameter. It is used to add the meta details of an object that is being uploaded to a bucket. Default value is an empty JSON object </li> </ul> </td> <tr> <td>{{%badge%}}processCallback{{%/badge%}}</td> <td>{{%bold%}}Function{{%/bold%}}</td> <td>Callback function while downloading file</td> </tr> </tbody> </table> ### Upload Object as File The following SDk method will allow you to upload an object file to a bucket in Stratus. {{%code class="language-javascript" scroll="set-scroll" %}}// Upload Object as File const file = document.getElementById("uploadedFiles").files[0] const putObject = await bucket.putObject("key", file); const putObjectStart = putObject.start(); // to start the request const putObjectAbort = putObject.abort(); // to abort the request {{%/code%}} ### Upload Object as String The following SDk method will allow you to upload a string object to a bucket in Stratus. {{%code class="language-javascript" scroll="set-scroll" %}}// Upload Object as String const putObject = await bucket.putObject("key", "Content of the file"); const putObjectStart = putObject.start(); // to start the request const putObjectAbort = putObject.abort(); // to abort the request{{%/code%}} ### Upload Object With Options The following SDK method will allow you to upload any object to a bucket in Stratus. Using this SDK method you can implement the {{%badge%}}options{{%/badge%}} parameter to provide {{%badge%}}type{{%/badge%}}, {{%badge%}}overwrite{{%/badge%}}, and {{%badge%}}ttl{{%/badge%}} instructions. {{%code class="language-javascript" scroll="set-scroll" %}}// Upload Object with options const options = { "overwrite": true, //To overwrite an existing object "ttl": 300, //After 300 seconds the object will be deleted from the bucket "type": "text/plain" // File type of the object being uploaded } const putObject = await bucket.putObject("key", "Content of the file", options); const putObjectStart = putObject.start(); // to start the request const putObjectAbort = putObject.abort(); // to abort the request{{%/code%}} ### Upload Object With Process Callback The following SDK snippet will allow you to upload a particular object to a bucket in Stratus with process callback options. This SDK is best used when you wish to perform an additional function like logging, rendering load/buffer screens, etc. alongside the upload operation. {{%code class="language-javascript" scroll="set-scroll" %}}// Execute a function while object being uploaded const processCallback = () => { // Function to execute while the object is being uploaded console.log("Uploading Object"); } const options = { "overwrite": true, "ttl": 300, "type": "text/plain" } const putObject = await bucket.putObject("key", "Content of the file", options, processCallback); const putObjectStart = putObject.start(); // to start the request const putObjectAbort = putObject.abort(); // to abort the request{{%/code%}} ### Upload Object With Its Meta Details The following SDK snippet will allow you to upload a particular object along with its {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#metadata" %}}metadata{{%/link%}} to a bucket in Stratus. {{%code class="language-javascript" scroll="set-scroll" %}}// Upload Object with meta const options = { "overwrite": true, "ttl": 300, "type": "text/plain" // File type of the uploading object "meta": { "object_meta_key" : "object_meta_value" } } const putObject = await bucket.putObject("key", "Content of the file", options); const putObjectStart = putObject.start(); // to start the request const putObjectAbort = putObject.abort(); // to abort the request{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "status": 200, "content": true | false, //true: successfully uploaded and false: upload failure "message": "OK" }{{%/code%}} ### Mutlipart Upload When the Object that you need to upload is too large to upload, you can perform a multipart operation. The multipart operation will split the object into multiple parts and perform a quicker upload. In this SDK section, we are going to go over all the SDK methods that are available to perform multipart upload of objects in Stratus. #### Create Multipart Instance To perform multipart operations, you need to get a multipart object instance. We will refer to this component instance in various code snippets where we work with multipart operations being performed on objects stored in a bucket in Stratus. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/#initialize-bucket-instance" %}}component instance{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const multipart = bucket.getMultipartInstance("key");{{%/code%}} #### Initiate Multipart Upload **Initiate Multipart Upload Without Options** Using the following SDK method, Stratus will return an {{%badge%}}uploadId{{%/badge%}}. This ID will allow us to upload multiple pats of the object. {{%code class="language-javascript" scroll="set-scroll" %}}// initiate upload const initiateUpload = await multipart.initiateUpload();{{%/code%}} **Initiate Multipart Upload With Options** Using the following SDK method, Stratus will return an {{%badge%}}uploadId{{%/badge%}}. This ID will allow us to upload multiple pats of the object. Additionally, using this SDK method you can implement the {{%badge%}}options{{%/badge%}} parameter to provide {{%badge%}}type{{%/badge%}} instructions. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}type{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td> <ul> <li>This parameter is a key in the {{%badge%}}options{{%/badge%}} {{%bold%}}JSON Object{{%/bold%}} parameter. <li>This paramater can be used to overwrite the {{%badge%}}content-type{{%/badge%}} of the object.</li> <li>If you do not pass this parameter, then by default the value of {{%badge%}}type{{%/badge%}} will be {{%badge%}}{{%bold%}}application/octet-stream{{%/bold%}}{{%/badge%}}</li> </ul> </td> </tr> </tbody> </table> {{%code class="language-javascript" scroll="set-scroll" %}}// initiate upload with options const options = { type: "application/json" } const initiateUpload = await multipart.initiateUpload(options);{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "status": 200, "content": { "bucket": "llm-development", "key": "a/cv", "upload_id": "01hyj639a9zfbg8j7q86nsrj6r" }, "message": "OK" }{{%/code%}} #### Upload a Part of the Object In the following SDK method, we are going to perform uploads of the individual parts of the object. Each part will have a distinct {{%badge%}}part{{%/badge%}} ranging anywhere between **1 and 1000**. While this represents the ordering of the parts, these parts will not necessarily be uploaded in sequence. These parts will be combined in sequence once the upload of all the parts of the objects is complete. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}file{{%/badge%}}</td> <td>{{%bold%}}File{{%/bold%}}</td> <td>The object that needs to be uploaded.</td> </tr> <tr> <td>{{%badge%}}part{{%/badge%}}</td> <td>{{%bold%}}Number{{%/bold%}}</td> <td>Will contain the ordering of the parts that are being uploaded.</td> </tr> </tbody> </table> {{%code class="language-javascript" scroll="set-scroll" %}}const partNumber = 1; const file = document.getElementById("uploadedFiles").files[0] const uploadPart = await multipart.uploadPart(file, partNumber) const uploadPartStart = uploadPart.start(); // to start the request const uploadPartAbort = uploadPart.abort(); // to abort the request{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "status": 200, "content": true | false, //true: successfully uploaded and false: upload failure "message": "OK" }{{%/code%}} #### Complete Multipart Upload The following method allows us to terminate the multipart process once all the parts have been successfully uploaded. {{%code class="language-javascript" scroll="set-scroll" %}}const completeUpload = await multipart.completeUpload(){{%/code%}} **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}options{{%/badge%}}</td> <td>{{%bold%}}JSON Object{{%/bold%}}</td> <td>{{%badge%}}{{%bold%}}meta{{%/bold%}}{{%/badge%}}: This is an optional {{%bold%}}JSON Object{{%/bold%}} parameter. It is used to add the meta details of an object that is being uploaded to a bucket. Default value is an empty JSON object</td> </tr> </tbody> </table> **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "status": 200, "content": true | false, //true: successfully uploaded and false: upload failure "message": "OK" }{{%/code%}} #### Get Upload Summary The following SDK method can be used to obtain an operational summary of all the uploaded parts. To view the summary, we will use the {{%badge%}}getUploadSummary(){{%/badge%}} method. {{%code class="language-javascript" scroll="set-scroll" %}}const getUploadSummary = await multipart.getUploadSummary();{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "bucket": "zcstratus12345-development", "key": "sasm.txt", "upload_id": "01hyfyeazrrstmt7k5fa7ej726", "status": "PENDING", "parts": [ { "part_number": 1, "size": 0, "uploaded_at": 1716374678999 }, { "part_number": 2, "size": 2797094, "uploaded_at": 1716374678576 }, { "part_number": 4, "size": 0, "uploaded_at": 1716374679136 } ] }{{%/code%}} ### Upload an Object Wrapping all the Multipart Functionality The following SDK method acts as a wrapper, where the entire multipart upload operation is carried out without employing multiple steps. Using this method, the object is split into multiple parts, uploaded to the bucket in multiple parts, and then combined once all the parts are uploaded. However, the following method is only recommended to be used in the following conditions: * The {{%badge%}}max_part_size{{%/badge%}} of the object can be the entire file size. However, to ensure a quicker upload, we urge you to keep the {{%badge%}}max_part_size{{%/badge%}} **100MB** or less. * The {{%badge%}}min_part_size{{%/badge%}} of the object should be **5MB** or more. * The entire object's size should be **10GB** or less. {{%note%}}{{%bold%}}Note:{{%/bold%}} For object's that are {{%bold%}}larger than 10GB{{%/bold%}}, we would recommend that you use the {{%bold%}}individual SDK methods{{%/bold%}} to carry out the multipart upload operation successfully.{{%/note%}}<br /> **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}file{{%/badge%}}</td> <td>{{%bold%}}File{{%/bold%}}</td> <td>The object that needs to be uploaded.</td> </tr> <tr> <td>{{%badge%}}partSize{{%/badge%}}</td> <td>{{%bold%}}Number{{%/bold%}}</td> <td>Will contain the size of each part of the object that is being uploaded.</td> </tr> <tr> <td>{{%badge%}}options{{%/badge%}}</td> <td>{{%bold%}}JSON Object{{%/bold%}}</td> <td> {{%badge%}}{{%bold%}}type{{%/bold%}}{{%/badge%}}: This parameter is a key in this JSON object. <ul> <li>It is a {{%bold%}}String{{%/bold%}} parameter.</li> This paramater can be used to overwrite the {{%badge%}}content-type{{%/badge%}} of the object.</li> <li>If you do not pass this parameter, then the type of the file will be taken by default. If the file itself does not have a type, then by default the value of {{%badge%}}type{{%/badge%}} will be {{%badge%}}{{%bold%}}application/octet-stream{{%/bold%}}{{%/badge%}}</li> <li>{{%badge%}}{{%bold%}}meta{{%/bold%}}{{%/badge%}}: This is an optional {{%bold%}}JSON Object{{%/bold%}} parameter. It is used to add the meta details of an object that is being uploaded to a bucket. Default value is an empty JSON object </li> </ul> </td> </tr> </tbody> </table> **Upload an Object Wrapping all the Multipart Functionality Without Options** {{%code class="language-javascript" scroll="set-scroll" %}}// upload object const partSize = 10; // in MB const file = document.getElementById("uploadedFiles").files[0] const uploadObject = await multipart.uploadObject(file, partSize);{{%/code%}} **Upload an Object Wrapping all the Multipart Functionality With Options** {{%code class="language-javascript" scroll="set-scroll" %}}// upload object with options const partSize = 10; // in MB const file = document.getElementById("uploadedFiles").files[0] const options = { type: "application/json" // content type of the object to overwrite } const uploadObject = await multipart.uploadObject(file, partSize, options);{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "status": 200, "content": true | false, //true: successfully uploaded and false: upload failure "message": "OK" }{{%/code%}} -------------------------------------------------------------------------------- title: "Delete Object" description: "This page describes the web SDK method to delete an object." last_updated: "2026-03-18T07:41:08.644Z" source: "https://docs.catalyst.zoho.com/en/sdk/web/v4/cloud-scale/stratus/delete-object/" service: "Cloud Scale" related: - Stratus Component Help Documentation (/en/cloud-scale/help/stratus/introduction) - Delete an Object Help Documentation (/en/cloud-scale/help/stratus/objects/manage-object/delete-object/) - Java SDK (/en/sdk/java/v1/cloud-scale/stratus/delete-objects/) - Node.js SDK (/en/sdk/nodejs/v2/cloud-scale/stratus/delete-objects/) - Python SDK (/en/sdk/python/v1/cloud-scale/stratus/delete-objects/) - iOS SDK (/en/sdk/ios/v2/cloud-scale/stratus/delete-object/) - Android SDK (/en/sdk/android/v2/cloud-scale/stratus/delete-object/) - Flutter SDK (/en/sdk/flutter/v2/cloud-scale/stratus/delete-object/) - REST API (/en/api/code-reference/cloud-scale/stratus/get-all-buckets/#GetAllBuckets) -------------------------------------------------------------------------------- # Delete Object Using this SDK method, you can delete a particular object by passing the complete name of the object to the {{%badge%}}deleteObject(){{%/badge%}} method. The Bucket reference used in the below code snippet is the {{%link href="/en/sdk/web/v4/cloud-scale/stratus/initialize-stratus-instance/#initialize-bucket-instance" %}}component instance{{%/link%}}. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}key{{%/badge%}}</td> <td>{{%bold%}}String{{%/bold%}}</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will hold the complete name of the object along with it's {{%link href="/en/cloud-scale/help/stratus/objects/introduction/#path" %}}path{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}options{{%/badge%}}</td> <td>{{%bold%}}JSON Object{{%/bold%}}</td> <td> <ul> <li>{{%badge%}}{{%bold%}}versionId{{%/bold%}}{{%/badge%}}: An optional {{%bold%}}String{{%/bold%}} parameter. If {{%link href="/en/cloud-scale/help/stratus/stratus-config/general-settings/#versioning" %}}Versioning{{%/link%}} is enabled for your bucket then, this param will help you refer to a particular version using its unique Version ID. </li> <li>{{%badge%}}{{%bold%}}ttl{{%/bold%}}{{%/badge%}}: An optional {{%bold%}}String | Number{{%/bold%}} parameter. You can set {{%bold%}}Time-to-Live{{%/bold%}} (TTL) in seconds for an object. The value should be greater than or equal to {{%bold%}}60 seconds{{%/bold%}}. </li> </ul> </td> </tr> </tbody> </table> ### Delete Object With Object Name Using the following SDK method will delete the required object and all of its versions from the bucket. {{%code class="language-javascript" scroll="set-scroll" %}}// Delete an object const deleteObject = await bucket.deleteObject("key");{{%/code%}} ### Delete Object With Object Name and VersionID Using the following SDK method will delete a specific version of the object. {{%code class="language-javascript" scroll="set-scroll" %}}// Delete a specific version of an object after ttl time const options = { versionId: "01hthq82gwxtfyz6d9j8eg6k2f", // Delete an object with the given versionId ttl: 100 // Time to live in seconds }; const deleteObject = await bucket.deleteObject("key", options);{{%/code%}} **Example Response** {{%code class="language-json" scroll="set-scroll" %}}{ "status": 200, "content": {}, "message": "Object deleted successfully." }{{%/code%}} **Possible Exception** * **404**: Object or Bucket Not Found