# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Service Object Storage API version: 1.0.0 extends: openapi/oracle-cloud-object-storage-api-openapi.yml actions: - target: $.info update: x-apievangelist-phrasing: method: generated generated: '2026-10-02' generator: build-phrasing.py label: Generated by API Evangelist operations: 61 - target: $.paths['/n/'].get update: x-apievangelist-phrasing: intent: Look up my tenancy's Object Storage namespace name effect: read questions: - What is the Object Storage namespace string assigned to my Oracle Cloud tenancy? - Where do I find the system-generated namespace name I need for bucket URLs? instructions: - text: Tell me the Object Storage namespace name for my tenancy. - text: Get the namespace name for the tenancy that owns compartment {compartmentId}. slots: compartmentId: query.compartmentId method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}'].get update: x-apievangelist-phrasing: intent: View the default S3 and Swift compartments of a namespace effect: read questions: - Which compartment do buckets created through the S3 compatibility API land in by default? - Can I see the defaultSwiftCompartmentId currently set on my namespace? instructions: - text: Show the metadata for namespace {namespaceName}, including its default S3 and Swift compartments. slots: namespaceName: path.namespaceName - text: Read which compartments namespace {namespaceName} uses for S3 and Swift bucket creation. slots: namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}'].put update: x-apievangelist-phrasing: intent: Change the default compartments for S3 and Swift buckets effect: write questions: - How do I stop S3-compatible buckets from being created in the root compartment? - Can I change where Swift API buckets get created by default? instructions: - text: Set the default S3 compartment of namespace {namespaceName} to {defaultS3CompartmentId}. slots: namespaceName: path.namespaceName defaultS3CompartmentId: requestBody.defaultS3CompartmentId - text: Make {defaultSwiftCompartmentId} the default compartment for Swift buckets in namespace {namespaceName}. slots: defaultSwiftCompartmentId: requestBody.defaultSwiftCompartmentId namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/'].get update: x-apievangelist-phrasing: intent: List the buckets in a compartment effect: read questions: - Which Object Storage buckets exist in a given compartment? - Does the bucket list include user-defined metadata, or only summary fields? instructions: - text: List all buckets in compartment {compartmentId} of namespace {namespaceName}. slots: compartmentId: query.compartmentId namespaceName: path.namespaceName - text: Show the first {limit} buckets in compartment {compartmentId} under namespace {namespaceName}. slots: limit: query.limit compartmentId: query.compartmentId namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/'].post update: x-apievangelist-phrasing: intent: Create a new Object Storage bucket effect: write questions: - How do I create a bucket in Oracle Cloud Object Storage? - Can I turn on versioning and auto-tiering when I first create a bucket? - Is it possible to make a new bucket publicly readable from the start? instructions: - text: Create a bucket named {name} in compartment {compartmentId} of namespace {namespaceName}. slots: name: requestBody.name compartmentId: requestBody.compartmentId namespaceName: path.namespaceName - text: Create a bucket {name} in compartment {compartmentId}, namespace {namespaceName}, with storage tier {storageTier}. slots: name: requestBody.name compartmentId: requestBody.compartmentId namespaceName: path.namespaceName storageTier: requestBody.storageTier - text: Create bucket {name} in compartment {compartmentId} under {namespaceName} encrypted with KMS key {kmsKeyId}. slots: name: requestBody.name compartmentId: requestBody.compartmentId namespaceName: path.namespaceName kmsKeyId: requestBody.kmsKeyId method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/'].get update: x-apievangelist-phrasing: intent: Get the full details of a bucket effect: read questions: - What settings, tags and metadata does one specific bucket have? - Can I check a bucket's approximate size and object count? instructions: - text: Show the full configuration of bucket {bucketName} in namespace {namespaceName}. slots: bucketName: path.bucketName namespaceName: path.namespaceName - text: Get bucket {bucketName} in {namespaceName} including the fields {fields}. slots: bucketName: path.bucketName namespaceName: path.namespaceName fields: query.fields method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/'].post update: x-apievangelist-phrasing: intent: Update a bucket's settings or move it to another compartment effect: write questions: - How do I move an existing bucket to a different compartment? - Can I change the public access setting on a bucket I already created? instructions: - text: Move bucket {bucketName} in namespace {namespaceName} to compartment {compartmentId}. slots: bucketName: path.bucketName namespaceName: path.namespaceName compartmentId: requestBody.compartmentId - text: Change the public access type of existing bucket {bucketName} in {namespaceName} to {publicAccessType}. slots: bucketName: path.bucketName namespaceName: path.namespaceName publicAccessType: requestBody.publicAccessType - text: Turn versioning to {versioning} on the existing bucket {bucketName} in {namespaceName}. slots: versioning: requestBody.versioning bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/'].delete update: x-apievangelist-phrasing: intent: Delete an empty bucket effect: destructive questions: - Why can't I delete a bucket that still has objects in it? - What do I need to remove before an Object Storage bucket can be deleted? instructions: - text: Delete the empty bucket {bucketName} from namespace {namespaceName}. slots: bucketName: path.bucketName namespaceName: path.namespaceName - text: Remove bucket {bucketName} in {namespaceName} now that it has no objects left. slots: bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/'].head update: x-apievangelist-phrasing: intent: Check whether a bucket exists and get its ETag effect: read questions: - Is there a quick way to test if a bucket exists without fetching all its details? - What is the current ETag of a bucket? instructions: - text: Check whether bucket {bucketName} exists in namespace {namespaceName}. slots: bucketName: path.bucketName namespaceName: path.namespaceName - text: Get just the ETag for bucket {bucketName} in {namespaceName}. slots: bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/actions/batchDeleteObjects'].post update: x-apievangelist-phrasing: intent: Delete many objects from a bucket at once effect: destructive questions: - Can I delete a whole batch of objects in one request instead of one by one? - Is there a bulk delete for objects in a bucket? instructions: - text: Delete these objects {objects} from bucket {bucketName} in namespace {namespaceName} in one batch. slots: objects: requestBody.objects bucketName: path.bucketName namespaceName: path.namespaceName - text: Bulk-remove objects {objects} from {bucketName} in {namespaceName} and skip listing the deleted results. slots: objects: requestBody.objects bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/actions/copyObject'].post update: x-apievangelist-phrasing: intent: Copy an object to another bucket or region effect: write questions: - How do I copy an object from one bucket into a bucket in another region? - Can I copy a specific older version of an object? instructions: - text: Copy {sourceObjectName} from {bucketName} ({namespaceName}) to {destinationBucket} in {destinationRegion} as {destinationObjectName}. slots: sourceObjectName: requestBody.sourceObjectName bucketName: path.bucketName namespaceName: path.namespaceName destinationBucket: requestBody.destinationBucket destinationRegion: requestBody.destinationRegion destinationObjectName: requestBody.destinationObjectName - text: Copy {sourceObjectName} in {bucketName}, namespace {namespaceName}, into namespace {destinationNamespace} bucket {destinationBucket}. slots: sourceObjectName: requestBody.sourceObjectName bucketName: path.bucketName namespaceName: path.namespaceName destinationNamespace: requestBody.destinationNamespace destinationBucket: requestBody.destinationBucket method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/actions/makeBucketWritable'].post update: x-apievangelist-phrasing: intent: Stop replication into a destination bucket effect: destructive questions: - My replication target bucket is read-only; how do I make it writable again? - What happens to the replication policy when I make a destination bucket writable? instructions: - text: Stop replication into destination bucket {bucketName} in {namespaceName} and make it writable. slots: bucketName: path.bucketName namespaceName: path.namespaceName - text: Remove the replication policy targeting bucket {bucketName} in namespace {namespaceName} so I can write to it. slots: bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/actions/reencrypt'].post update: x-apievangelist-phrasing: intent: Re-encrypt a bucket's data keys with the latest master key effect: write questions: - After rotating my master encryption key, how do I re-encrypt the data keys for a whole bucket? - Can I re-encrypt only the bucket key and not every object? instructions: - text: Re-encrypt all data encryption keys in bucket {bucketName} ({namespaceName}) with the current master key version. slots: bucketName: path.bucketName namespaceName: path.namespaceName - text: Re-encrypt only the bucket key of {bucketName} in {namespaceName}, setting bucket-key-only to {isReencryptBucketKeyOnly}. slots: bucketName: path.bucketName namespaceName: path.namespaceName isReencryptBucketKeyOnly: query.isReencryptBucketKeyOnly method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/actions/reencrypt/{objectName}'].post update: x-apievangelist-phrasing: intent: Re-encrypt a single object's data encryption keys effect: write questions: - Can I re-encrypt one object with a different KMS key without touching the rest of the bucket? - Which key options exist for re-encrypting an individual object, like a customer-provided SSE key? instructions: - text: Re-encrypt object {objectName} in bucket {bucketName} ({namespaceName}) using KMS key {kmsKeyId}. slots: objectName: path.objectName bucketName: path.bucketName namespaceName: path.namespaceName kmsKeyId: requestBody.kmsKeyId - text: Re-encrypt version {versionId} of object {objectName} in {bucketName}, namespace {namespaceName}. slots: versionId: query.versionId objectName: path.objectName bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/actions/renameObject'].post update: x-apievangelist-phrasing: intent: Rename an object in a bucket effect: write questions: - Is there a way to rename an object without downloading and re-uploading it? - Can a rename be made conditional on the source object's ETag? instructions: - text: Rename object {sourceName} to {newName} in bucket {bucketName} of namespace {namespaceName}. slots: sourceName: requestBody.sourceName newName: requestBody.newName bucketName: path.bucketName namespaceName: path.namespaceName - text: In {bucketName} ({namespaceName}), rename {sourceName} to {newName} only if the source ETag is {srcObjIfMatchETag}. slots: bucketName: path.bucketName namespaceName: path.namespaceName sourceName: requestBody.sourceName newName: requestBody.newName srcObjIfMatchETag: requestBody.srcObjIfMatchETag method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/actions/restoreObjects'].post update: x-apievangelist-phrasing: intent: Restore an archived object for download effect: write questions: - How do I bring an object back from Archive storage so I can read it? - How long does a restored archived object stay available, and can I extend it? instructions: - text: Restore archived object {objectName} in bucket {bucketName} ({namespaceName}). slots: objectName: requestBody.objectName bucketName: path.bucketName namespaceName: path.namespaceName - text: Restore {objectName} from archive in {bucketName}, namespace {namespaceName}, for {hours} hours. slots: objectName: requestBody.objectName bucketName: path.bucketName namespaceName: path.namespaceName hours: requestBody.hours method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/actions/updateObjectStorageTier'].post update: x-apievangelist-phrasing: intent: Move an object to a different storage tier effect: write questions: - Can I move a single object to Infrequent Access or Archive to save money? - What storage tiers can an individual object be switched to? instructions: - text: Change the storage tier of object {objectName} in {bucketName} ({namespaceName}) to {storageTier}. slots: objectName: requestBody.objectName bucketName: path.bucketName namespaceName: path.namespaceName storageTier: requestBody.storageTier - text: Move version {versionId} of {objectName} in bucket {bucketName}, namespace {namespaceName}, into the {storageTier} tier. slots: versionId: requestBody.versionId objectName: requestBody.objectName bucketName: path.bucketName namespaceName: path.namespaceName storageTier: requestBody.storageTier method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/l'].get update: x-apievangelist-phrasing: intent: View a bucket's object lifecycle policy effect: read questions: - What lifecycle rules are currently set to archive or delete objects in my bucket? - Does this bucket have an object lifecycle policy at all? instructions: - text: Show the object lifecycle policy for bucket {bucketName} in {namespaceName}. slots: bucketName: path.bucketName namespaceName: path.namespaceName - text: Read the lifecycle rules configured on {bucketName} in namespace {namespaceName}. slots: bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/l'].put update: x-apievangelist-phrasing: intent: Create or replace a bucket's lifecycle policy effect: write questions: - How do I set up rules that automatically archive or delete old objects in a bucket? - Does saving a new lifecycle policy replace the existing rules entirely? instructions: - text: 'Set the lifecycle policy on bucket {bucketName} in {namespaceName} to these rules: {items}.' slots: bucketName: path.bucketName namespaceName: path.namespaceName items: requestBody.items - text: Replace the object lifecycle rules of {bucketName} ({namespaceName}) with {items}. slots: bucketName: path.bucketName namespaceName: path.namespaceName items: requestBody.items method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/l'].delete update: x-apievangelist-phrasing: intent: Remove a bucket's object lifecycle policy effect: destructive questions: - How can I turn off all automatic archiving and deletion rules on a bucket? - Can I drop a bucket's lifecycle policy completely? instructions: - text: Delete the object lifecycle policy from bucket {bucketName} in {namespaceName}. slots: bucketName: path.bucketName namespaceName: path.namespaceName - text: Remove all lifecycle rules on {bucketName}, namespace {namespaceName}. slots: bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/o'].get update: x-apievangelist-phrasing: intent: List the objects in a bucket effect: read questions: - What files are stored in my bucket? - Can I list only objects whose names start with a certain prefix, like a folder? - Which extra fields, such as size or time created, can the object listing include? instructions: - text: List the objects in bucket {bucketName} of namespace {namespaceName}. slots: bucketName: path.bucketName namespaceName: path.namespaceName - text: List objects under prefix {prefix} in bucket {bucketName} ({namespaceName}) using delimiter {delimiter}. slots: prefix: query.prefix bucketName: path.bucketName namespaceName: path.namespaceName delimiter: query.delimiter - text: Show objects in {bucketName}, namespace {namespaceName}, with the fields {fields}. slots: bucketName: path.bucketName namespaceName: path.namespaceName fields: query.fields method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/o/{objectName}'].get update: x-apievangelist-phrasing: intent: Download an object's contents effect: read questions: - How do I download a file from an Oracle Cloud bucket? - Can I fetch just a byte range of a large object? instructions: - text: Download object {objectName} from bucket {bucketName} in namespace {namespaceName}. slots: objectName: path.objectName bucketName: path.bucketName namespaceName: path.namespaceName - text: Fetch bytes {range} of {objectName} in {bucketName} ({namespaceName}). slots: range: header.range objectName: path.objectName bucketName: path.bucketName namespaceName: path.namespaceName - text: Download version {versionId} of {objectName} from {bucketName}, namespace {namespaceName}. slots: versionId: query.versionId objectName: path.objectName bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/o/{objectName}'].put update: x-apievangelist-phrasing: intent: Upload or overwrite an object in a bucket effect: write questions: - What's the biggest file I can upload in a single PutObject request? - Will uploading a file with the same name overwrite the existing object? instructions: - text: Upload a {Content-Length}-byte file as object {objectName} to bucket {bucketName} in {namespaceName}. slots: Content-Length: header.Content-Length objectName: path.objectName bucketName: path.bucketName namespaceName: path.namespaceName - text: Put object {objectName} ({Content-Length} bytes) into {bucketName}, namespace {namespaceName}, in storage tier {storage-tier}. slots: objectName: path.objectName Content-Length: header.Content-Length bucketName: path.bucketName namespaceName: path.namespaceName storage-tier: header.storage-tier method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/o/{objectName}'].delete update: x-apievangelist-phrasing: intent: Delete a single object from a bucket effect: destructive questions: - How do I delete one file from a bucket? - Can I delete a specific version of an object instead of the latest one? instructions: - text: Delete object {objectName} from bucket {bucketName} in namespace {namespaceName}. slots: objectName: path.objectName bucketName: path.bucketName namespaceName: path.namespaceName - text: Delete version {versionId} of {objectName} in {bucketName} ({namespaceName}). slots: versionId: query.versionId objectName: path.objectName bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/o/{objectName}'].head update: x-apievangelist-phrasing: intent: Get an object's metadata and ETag without the body effect: read questions: - Can I read an object's user-defined metadata without downloading the file? - Is there a cheap way to check if an object exists and get its ETag? instructions: - text: Get the metadata and ETag of object {objectName} in bucket {bucketName} ({namespaceName}) without downloading it. slots: objectName: path.objectName bucketName: path.bucketName namespaceName: path.namespaceName - text: Check that {objectName} exists in {bucketName}, namespace {namespaceName}. slots: objectName: path.objectName bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/objectversions'].get update: x-apievangelist-phrasing: intent: List all versions of objects in a bucket effect: read questions: - In a versioned bucket, how can I see every previous version of my objects? - How many object versions come back per page, and how do I get the rest? instructions: - text: List all object versions in bucket {bucketName} of namespace {namespaceName}. slots: bucketName: path.bucketName namespaceName: path.namespaceName - text: Show every version of objects with prefix {prefix} in {bucketName} ({namespaceName}). slots: prefix: query.prefix bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/p/'].get update: x-apievangelist-phrasing: intent: List a bucket's pre-authenticated requests effect: read questions: - Which pre-authenticated request links are currently active on my bucket? - Can I filter pre-authenticated requests by object name prefix? instructions: - text: List the pre-authenticated requests on bucket {bucketName} in {namespaceName}. slots: bucketName: path.bucketName namespaceName: path.namespaceName - text: Show PARs in {bucketName} ({namespaceName}) for objects starting with {objectNamePrefix}. slots: bucketName: path.bucketName namespaceName: path.namespaceName objectNamePrefix: query.objectNamePrefix method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/p/'].post update: x-apievangelist-phrasing: intent: Create a pre-authenticated link to a bucket or object effect: write questions: - How do I share a file from a private bucket with someone who has no Oracle Cloud account? - Can a pre-authenticated request allow uploads as well as reads, and when does it expire? instructions: - text: Create a pre-authenticated request named {name} for object {objectName} in {bucketName} ({namespaceName}) with access {accessType}, expiring {timeExpires}. slots: name: requestBody.name objectName: requestBody.objectName bucketName: path.bucketName namespaceName: path.namespaceName accessType: requestBody.accessType timeExpires: requestBody.timeExpires - text: Make a shareable upload link {name} for bucket {bucketName} in {namespaceName} with access type {accessType} that expires at {timeExpires}. slots: name: requestBody.name bucketName: path.bucketName namespaceName: path.namespaceName accessType: requestBody.accessType timeExpires: requestBody.timeExpires method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/p/{parId}'].get update: x-apievangelist-phrasing: intent: Get the details of one pre-authenticated request effect: read questions: - When does a particular pre-authenticated request expire and what access does it grant? - Which object does a given PAR point to? instructions: - text: Show pre-authenticated request {parId} on bucket {bucketName} in {namespaceName}. slots: parId: path.parId bucketName: path.bucketName namespaceName: path.namespaceName - text: Get the access type and expiry of PAR {parId} in {bucketName}, namespace {namespaceName}. slots: parId: path.parId bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/p/{parId}'].delete update: x-apievangelist-phrasing: intent: Revoke a pre-authenticated request effect: destructive questions: - How do I revoke a shared link to my bucket before it expires? - Can I kill a pre-authenticated request that was shared by mistake? instructions: - text: Delete pre-authenticated request {parId} from bucket {bucketName} in {namespaceName}. slots: parId: path.parId bucketName: path.bucketName namespaceName: path.namespaceName - text: Revoke the shared PAR link {parId} on {bucketName}, namespace {namespaceName}. slots: parId: path.parId bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/replicationPolicies'].get update: x-apievangelist-phrasing: intent: List a source bucket's replication policies effect: read questions: - Which replication policies are copying objects out of my bucket? - Where is this bucket replicating its data to? instructions: - text: List the replication policies on source bucket {bucketName} in {namespaceName}. slots: bucketName: path.bucketName namespaceName: path.namespaceName - text: Show outgoing replication policies for {bucketName}, namespace {namespaceName}, {limit} per page. slots: bucketName: path.bucketName namespaceName: path.namespaceName limit: query.limit method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/replicationPolicies'].post update: x-apievangelist-phrasing: intent: Replicate a bucket to a bucket in another region effect: write questions: - How do I set up cross-region replication for an Object Storage bucket? - Can I automatically copy new objects from one bucket into a bucket in another region? instructions: - text: Create replication policy {name} copying bucket {bucketName} ({namespaceName}) to {destinationBucketName} in region {destinationRegionName}. slots: name: requestBody.name bucketName: path.bucketName namespaceName: path.namespaceName destinationBucketName: requestBody.destinationBucketName destinationRegionName: requestBody.destinationRegionName - text: Start replicating {bucketName} in {namespaceName} into {destinationBucketName} in {destinationRegionName}, naming the policy {name}. slots: bucketName: path.bucketName namespaceName: path.namespaceName destinationBucketName: requestBody.destinationBucketName destinationRegionName: requestBody.destinationRegionName name: requestBody.name method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/replicationPolicies/{replicationId}'].get update: x-apievangelist-phrasing: intent: Get one replication policy on a bucket effect: read questions: - What destination bucket and region does a specific replication policy target? - Can I check the status of one replication policy? instructions: - text: Show replication policy {replicationId} on bucket {bucketName} in {namespaceName}. slots: replicationId: path.replicationId bucketName: path.bucketName namespaceName: path.namespaceName - text: Get the destination and status of replication {replicationId} for {bucketName}, namespace {namespaceName}. slots: replicationId: path.replicationId bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/replicationPolicies/{replicationId}'].delete update: x-apievangelist-phrasing: intent: Delete a replication policy from a source bucket effect: destructive questions: - How do I stop a source bucket from replicating to another region? - Can I remove a replication policy from the source side? instructions: - text: Delete replication policy {replicationId} from source bucket {bucketName} in {namespaceName}. slots: replicationId: path.replicationId bucketName: path.bucketName namespaceName: path.namespaceName - text: Remove replication {replicationId} on {bucketName}, namespace {namespaceName}. slots: replicationId: path.replicationId bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/replicationSources'].get update: x-apievangelist-phrasing: intent: List the buckets replicating into a destination bucket effect: read questions: - Which source buckets are replicating into this destination bucket? - Why is my bucket read-only, and which bucket is replicating into it? instructions: - text: List the replication sources feeding destination bucket {bucketName} in {namespaceName}. slots: bucketName: path.bucketName namespaceName: path.namespaceName - text: Show which buckets replicate into {bucketName}, namespace {namespaceName}. slots: bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/retentionRules'].get update: x-apievangelist-phrasing: intent: List a bucket's retention rules effect: read questions: - What retention rules are preventing objects in my bucket from being deleted? - In what order are a bucket's retention rules returned? instructions: - text: List the retention rules on bucket {bucketName} in {namespaceName}. slots: bucketName: path.bucketName namespaceName: path.namespaceName - text: Show all retention rules for {bucketName}, namespace {namespaceName}, newest first. slots: bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/retentionRules'].post update: x-apievangelist-phrasing: intent: Add a retention rule to a bucket effect: write questions: - How do I stop objects in a bucket from being modified or deleted for a set period? - What's the maximum number of retention rules a bucket can have? - Can I lock a retention rule so it can't be changed later? instructions: - text: Add a retention rule {displayName} to bucket {bucketName} in {namespaceName} with duration {duration}. slots: displayName: requestBody.displayName bucketName: path.bucketName namespaceName: path.namespaceName duration: requestBody.duration - text: Create a retention rule on {bucketName} ({namespaceName}) for {duration} and lock it at {timeRuleLocked}. slots: bucketName: path.bucketName namespaceName: path.namespaceName duration: requestBody.duration timeRuleLocked: requestBody.timeRuleLocked method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/retentionRules/{retentionRuleId}'].get update: x-apievangelist-phrasing: intent: Get one retention rule on a bucket effect: read questions: - How long does a particular retention rule keep objects protected? - Is a specific retention rule already locked? instructions: - text: Show retention rule {retentionRuleId} on bucket {bucketName} in {namespaceName}. slots: retentionRuleId: path.retentionRuleId bucketName: path.bucketName namespaceName: path.namespaceName - text: Get the duration and lock time of retention rule {retentionRuleId} in {bucketName}, namespace {namespaceName}. slots: retentionRuleId: path.retentionRuleId bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/retentionRules/{retentionRuleId}'].put update: x-apievangelist-phrasing: intent: Change an existing retention rule effect: write questions: - Can I extend the duration of a retention rule I already created? - How quickly do changes to a retention rule take effect? instructions: - text: Change the duration of retention rule {retentionRuleId} on {bucketName} ({namespaceName}) to {duration}. slots: retentionRuleId: path.retentionRuleId bucketName: path.bucketName namespaceName: path.namespaceName duration: requestBody.duration - text: Rename existing retention rule {retentionRuleId} in {bucketName}, namespace {namespaceName}, to {displayName}. slots: retentionRuleId: path.retentionRuleId bucketName: path.bucketName namespaceName: path.namespaceName displayName: requestBody.displayName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/retentionRules/{retentionRuleId}'].delete update: x-apievangelist-phrasing: intent: Remove a retention rule from a bucket effect: destructive questions: - How do I delete a retention rule so objects can be removed again? - Once I delete a retention rule, how soon does it stop applying? instructions: - text: Delete retention rule {retentionRuleId} from bucket {bucketName} in {namespaceName}. slots: retentionRuleId: path.retentionRuleId bucketName: path.bucketName namespaceName: path.namespaceName - text: Remove the retention rule {retentionRuleId} on {bucketName}, namespace {namespaceName}. slots: retentionRuleId: path.retentionRuleId bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/u'].get update: x-apievangelist-phrasing: intent: List in-progress multipart uploads in a bucket effect: read questions: - Are there any unfinished multipart uploads sitting in my bucket? - Which large-file uploads to this bucket are still in progress? instructions: - text: List the in-progress multipart uploads in bucket {bucketName} of {namespaceName}. slots: bucketName: path.bucketName namespaceName: path.namespaceName - text: Show unfinished multipart uploads in {bucketName}, namespace {namespaceName}, {limit} at a time. slots: bucketName: path.bucketName namespaceName: path.namespaceName limit: query.limit method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/u'].post update: x-apievangelist-phrasing: intent: Start a multipart upload for a large object effect: write questions: - How do I begin uploading a very large file in parts? - Can I set the content type and storage tier when starting a multipart upload? instructions: - text: Start a multipart upload for object {object} in bucket {bucketName} ({namespaceName}). slots: object: requestBody.object bucketName: path.bucketName namespaceName: path.namespaceName - text: Begin a multipart upload of {object} to {bucketName}, namespace {namespaceName}, with content type {contentType}. slots: object: requestBody.object bucketName: path.bucketName namespaceName: path.namespaceName contentType: requestBody.contentType method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/u/{objectName}'].get update: x-apievangelist-phrasing: intent: List the parts uploaded so far in a multipart upload effect: read questions: - Which parts of my multipart upload have already been received? - Can I get the ETags of uploaded parts before committing? instructions: - text: List the parts of multipart upload {uploadId} for {objectName} in {bucketName} ({namespaceName}). slots: uploadId: query.uploadId objectName: path.objectName bucketName: path.bucketName namespaceName: path.namespaceName - text: Show uploaded part numbers and ETags for upload {uploadId} of {objectName}, bucket {bucketName}, namespace {namespaceName}. slots: uploadId: query.uploadId objectName: path.objectName bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/u/{objectName}'].put update: x-apievangelist-phrasing: intent: Upload one part of a multipart upload effect: write questions: - How do I send an individual chunk of a large file in a multipart upload? - Does each part need a part number and content length? instructions: - text: Upload part {uploadPartNum} ({Content-Length} bytes) of upload {uploadId} for {objectName} in {bucketName} ({namespaceName}). slots: uploadPartNum: query.uploadPartNum Content-Length: header.Content-Length uploadId: query.uploadId objectName: path.objectName bucketName: path.bucketName namespaceName: path.namespaceName - text: Send chunk number {uploadPartNum} of {objectName} to multipart upload {uploadId} in bucket {bucketName}, namespace {namespaceName}, size {Content-Length}. slots: uploadPartNum: query.uploadPartNum objectName: path.objectName uploadId: query.uploadId bucketName: path.bucketName namespaceName: path.namespaceName Content-Length: header.Content-Length method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/u/{objectName}'].post update: x-apievangelist-phrasing: intent: Finish a multipart upload into a single object effect: write questions: - All my parts are uploaded; how do I assemble them into the final object? - Can I leave out some uploaded parts when completing a multipart upload? instructions: - text: Commit multipart upload {uploadId} for {objectName} in {bucketName} ({namespaceName}) using parts {partsToCommit}. slots: uploadId: query.uploadId objectName: path.objectName bucketName: path.bucketName namespaceName: path.namespaceName partsToCommit: requestBody.partsToCommit - text: Complete upload {uploadId} of {objectName} in bucket {bucketName}, namespace {namespaceName}, with {partsToCommit} and excluding {partsToExclude}. slots: uploadId: query.uploadId objectName: path.objectName bucketName: path.bucketName namespaceName: path.namespaceName partsToCommit: requestBody.partsToCommit partsToExclude: requestBody.partsToExclude method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/b/{bucketName}/u/{objectName}'].delete update: x-apievangelist-phrasing: intent: Cancel a multipart upload and discard its parts effect: destructive questions: - How can I cancel a stuck multipart upload and clean up its parts? - Are uploaded parts deleted when a multipart upload is aborted? instructions: - text: Abort multipart upload {uploadId} for {objectName} in {bucketName} ({namespaceName}). slots: uploadId: query.uploadId objectName: path.objectName bucketName: path.bucketName namespaceName: path.namespaceName - text: Cancel upload {uploadId} of {objectName} in bucket {bucketName}, namespace {namespaceName}, and delete its parts. slots: uploadId: query.uploadId objectName: path.objectName bucketName: path.bucketName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/inventoryRules'].get update: x-apievangelist-phrasing: intent: List a namespace's inventory rules effect: read questions: - Which inventory report rules are defined in my Object Storage namespace? - Do I have any inventory rules set up already? instructions: - text: List the inventory rules in namespace {namespaceName}. slots: namespaceName: path.namespaceName - text: Show up to {limit} inventory rules for namespace {namespaceName}. slots: limit: query.limit namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/inventoryRules'].post update: x-apievangelist-phrasing: intent: Create an inventory report rule effect: write questions: - How do I get a recurring inventory report of the objects in my namespace? - Can an inventory rule run on a schedule and filter which buckets it covers? instructions: - text: Create inventory rule {ruleName} in namespace {namespaceName} with filter {filter} and report settings {report}. slots: ruleName: requestBody.ruleName namespaceName: path.namespaceName filter: requestBody.filter report: requestBody.report - text: Set up a recurring inventory report {ruleName} in {namespaceName} using filter {filter}, report {report} and recurrence {reportRecurrences}. slots: ruleName: requestBody.ruleName namespaceName: path.namespaceName filter: requestBody.filter report: requestBody.report reportRecurrences: requestBody.reportRecurrences method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/inventoryRules/{inventoryRuleId}'].get update: x-apievangelist-phrasing: intent: Get one inventory rule effect: read questions: - What filter and report settings does a specific inventory rule use? - Is a given inventory rule enabled? instructions: - text: Show inventory rule {inventoryRuleId} in namespace {namespaceName}. slots: inventoryRuleId: path.inventoryRuleId namespaceName: path.namespaceName - text: Get the filter and schedule of inventory rule {inventoryRuleId} in {namespaceName}. slots: inventoryRuleId: path.inventoryRuleId namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/inventoryRules/{inventoryRuleId}'].put update: x-apievangelist-phrasing: intent: Change an existing inventory rule effect: write questions: - Can I change the filter on an inventory rule I already set up? - How do I disable an existing inventory rule without deleting it? instructions: - text: 'Update inventory rule {inventoryRuleId} in {namespaceName}: name {ruleName}, filter {filter}, report {report}.' slots: inventoryRuleId: path.inventoryRuleId namespaceName: path.namespaceName ruleName: requestBody.ruleName filter: requestBody.filter report: requestBody.report - text: Set enabled to {isEnabled} on existing inventory rule {inventoryRuleId} in {namespaceName}, filter {filter}, report {report}. slots: isEnabled: requestBody.isEnabled inventoryRuleId: path.inventoryRuleId namespaceName: path.namespaceName filter: requestBody.filter report: requestBody.report method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/inventoryRules/{inventoryRuleId}'].delete update: x-apievangelist-phrasing: intent: Delete an inventory rule effect: destructive questions: - How do I stop an inventory report from being generated permanently? - Can I delete an inventory rule I no longer need? instructions: - text: Delete inventory rule {inventoryRuleId} from namespace {namespaceName}. slots: inventoryRuleId: path.inventoryRuleId namespaceName: path.namespaceName - text: Remove the inventory report rule {inventoryRuleId} in {namespaceName}. slots: inventoryRuleId: path.inventoryRuleId namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/pe/'].get update: x-apievangelist-phrasing: intent: List Object Storage private endpoints in a compartment effect: read questions: - Which Object Storage private endpoints exist in a compartment? - Can I list only private endpoints in a particular lifecycle state? instructions: - text: List the Object Storage private endpoints in compartment {compartmentId} for namespace {namespaceName}. slots: compartmentId: query.compartmentId namespaceName: path.namespaceName - text: Show {lifecycleState} private endpoints in compartment {compartmentId}, namespace {namespaceName}. slots: lifecycleState: query.lifecycleState compartmentId: query.compartmentId namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/pe/'].post update: x-apievangelist-phrasing: intent: Create a private endpoint for Object Storage effect: write questions: - How do I reach Object Storage from my VCN subnet without going over the public internet? - What do I need to specify to create an Object Storage private endpoint? instructions: - text: Create private endpoint {name} in {namespaceName}, compartment {compartmentId}, subnet {subnetId}, prefix {prefix}, targets {accessTargets}. slots: name: requestBody.name namespaceName: path.namespaceName compartmentId: requestBody.compartmentId subnetId: requestBody.subnetId prefix: requestBody.prefix accessTargets: requestBody.accessTargets - text: Set up a private endpoint {name} on subnet {subnetId} for {namespaceName} in compartment {compartmentId}, DNS prefix {prefix}, targets {accessTargets}. slots: name: requestBody.name subnetId: requestBody.subnetId namespaceName: path.namespaceName compartmentId: requestBody.compartmentId prefix: requestBody.prefix accessTargets: requestBody.accessTargets method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/pe/{peName}/'].get update: x-apievangelist-phrasing: intent: Get the details of an Object Storage private endpoint effect: read questions: - What subnet and access targets does a particular private endpoint have? - Is my Object Storage private endpoint active yet? instructions: - text: Show private endpoint {peName} in namespace {namespaceName}. slots: peName: path.peName namespaceName: path.namespaceName - text: Get the state and access targets of private endpoint {peName} in {namespaceName}. slots: peName: path.peName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/pe/{peName}/'].post update: x-apievangelist-phrasing: intent: Update an Object Storage private endpoint effect: write questions: - Can I change which buckets an existing private endpoint gives access to? - Can I rename or re-tag an existing private endpoint? instructions: - text: Change the access targets of private endpoint {peName} in {namespaceName} to {accessTargets}. slots: peName: path.peName namespaceName: path.namespaceName accessTargets: requestBody.accessTargets - text: Rename existing private endpoint {peName} in namespace {namespaceName} to {name}. slots: peName: path.peName namespaceName: path.namespaceName name: requestBody.name method: generated generated: '2026-10-02' - target: $.paths['/n/{namespaceName}/pe/{peName}/'].delete update: x-apievangelist-phrasing: intent: Delete an Object Storage private endpoint effect: destructive questions: - How do I remove a private endpoint I no longer use for Object Storage? - What happens if I delete a private endpoint that doesn't exist? instructions: - text: Delete private endpoint {peName} from namespace {namespaceName}. slots: peName: path.peName namespaceName: path.namespaceName - text: Tear down the Object Storage private endpoint {peName} in {namespaceName}. slots: peName: path.peName namespaceName: path.namespaceName method: generated generated: '2026-10-02' - target: $.paths['/workRequests'].get update: x-apievangelist-phrasing: intent: List Object Storage work requests in a compartment effect: read questions: - Which long-running Object Storage jobs, like copies or re-encryptions, are running in my compartment? - Can I see work requests tied to a particular private endpoint? instructions: - text: List the Object Storage work requests in compartment {compartmentId}. slots: compartmentId: query.compartmentId - text: Show work requests in compartment {compartmentId} for private endpoint {privateEndpointName}. slots: compartmentId: query.compartmentId privateEndpointName: query.privateEndpointName method: generated generated: '2026-10-02' - target: $.paths['/workRequests/{workRequestId}'].get update: x-apievangelist-phrasing: intent: Check the status of a work request effect: read questions: - Has my object copy work request finished yet? - What percentage complete is a given work request? instructions: - text: Get the status of work request {workRequestId}. slots: workRequestId: path.workRequestId - text: Tell me whether work request {workRequestId} has completed. slots: workRequestId: path.workRequestId method: generated generated: '2026-10-02' - target: $.paths['/workRequests/{workRequestId}'].delete update: x-apievangelist-phrasing: intent: Cancel a running work request effect: destructive questions: - Can I stop a copy or re-encryption job that's still running? - How do I cancel an Object Storage work request? instructions: - text: Cancel work request {workRequestId}. slots: workRequestId: path.workRequestId - text: Stop the running Object Storage job with work request id {workRequestId}. slots: workRequestId: path.workRequestId method: generated generated: '2026-10-02' - target: $.paths['/workRequests/{workRequestId}/errors'].get update: x-apievangelist-phrasing: intent: List the errors from a work request effect: read questions: - Why did my Object Storage work request fail? - What errors were recorded for a particular work request? instructions: - text: List the errors for work request {workRequestId}. slots: workRequestId: path.workRequestId - text: Show why work request {workRequestId} failed. slots: workRequestId: path.workRequestId method: generated generated: '2026-10-02' - target: $.paths['/workRequests/{workRequestId}/logs'].get update: x-apievangelist-phrasing: intent: List the log messages of a work request effect: read questions: - Can I read the progress log messages of a work request? - What steps has a long-running Object Storage job logged so far? instructions: - text: List the log entries for work request {workRequestId}. slots: workRequestId: path.workRequestId - text: Show the latest {limit} log messages from work request {workRequestId}. slots: limit: query.limit workRequestId: path.workRequestId method: generated generated: '2026-10-02'