Google Cloud Storage · Capability

Google Cloud Storage JSON API — Objects

Google Cloud Storage JSON API — Objects. 10 operations. Lead operation: Google Cloud Storage List Objects. Self-contained Naftiko capability covering one Gcp Cloud Storage business surface.

Run with Naftiko Gcp Cloud StorageObjects

What You Can Do

GET
Listobjects — Google Cloud Storage List Objects
/v1/b/{bucket}/o
POST
Watchallobjects — Google Cloud Storage Watch for Object Changes
/v1/b/{bucket}/o/watchall
GET
Getobject — Google Cloud Storage Get an Object
/v1/b/{bucket}/o/{object}
PUT
Updateobject — Google Cloud Storage Update an Object
/v1/b/{bucket}/o/{object}
PATCH
Patchobject — Google Cloud Storage Patch an Object
/v1/b/{bucket}/o/{object}
DELETE
Deleteobject — Google Cloud Storage Delete an Object
/v1/b/{bucket}/o/{object}
POST
Composeobject — Google Cloud Storage Compose Objects
/v1/b/{bucket}/o/{object}/compose
POST
Copyobject — Google Cloud Storage Copy an Object
/v1/b/{bucket}/o/{object}/copyto/b/{destinationbucket}/o/{destinationobject}
POST
Rewriteobject — Google Cloud Storage Rewrite an Object
/v1/b/{bucket}/o/{object}/rewriteto/b/{destinationbucket}/o/{destinationobject}
POST
Stopchannel — Google Cloud Storage Stop a Notification Channel
/v1/channels/stop

MCP Tools

google-cloud-storage-list-objects

Google Cloud Storage List Objects

read-only idempotent
google-cloud-storage-watch-object

Google Cloud Storage Watch for Object Changes

google-cloud-storage-get-object

Google Cloud Storage Get an Object

read-only idempotent
google-cloud-storage-update-object

Google Cloud Storage Update an Object

idempotent
google-cloud-storage-patch-object

Google Cloud Storage Patch an Object

idempotent
google-cloud-storage-delete-object

Google Cloud Storage Delete an Object

idempotent
google-cloud-storage-compose-objects

Google Cloud Storage Compose Objects

google-cloud-storage-copy-object

Google Cloud Storage Copy an Object

google-cloud-storage-rewrite-object

Google Cloud Storage Rewrite an Object

google-cloud-storage-stop-notification

Google Cloud Storage Stop a Notification Channel

Capability Spec

json-objects.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Google Cloud Storage JSON API — Objects
  description: 'Google Cloud Storage JSON API — Objects. 10 operations. Lead operation: Google Cloud Storage List Objects.
    Self-contained Naftiko capability covering one Gcp Cloud Storage business surface.'
  tags:
  - Gcp Cloud Storage
  - Objects
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    GCP_CLOUD_STORAGE_API_KEY: GCP_CLOUD_STORAGE_API_KEY
capability:
  consumes:
  - type: http
    namespace: json-objects
    baseUri: https://storage.googleapis.com/storage/v1
    description: Google Cloud Storage JSON API — Objects business capability. Self-contained, no shared references.
    resources:
    - name: b-bucket-o
      path: /b/{bucket}/o
      operations:
      - name: listobjects
        method: GET
        description: Google Cloud Storage List Objects
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: delimiter
          in: query
          type: string
          description: Returns results in a directory-like mode. Items will contain only objects whose names, aside from the
            prefix, do not contain delimiter. Objects whose names, asi
        - name: endOffset
          in: query
          type: string
          description: Filter results to objects whose names are lexicographically before endOffset. If startOffset is also
            set, the objects listed have names between startOffset (inc
        - name: includeFoldersAsPrefixes
          in: query
          type: boolean
          description: Only applicable if delimiter is set to /. If true, will also include folders and managed folders (besides
            objects) in the returned prefixes.
        - name: includeTrailingDelimiter
          in: query
          type: boolean
          description: If true, objects that end in exactly one instance of delimiter will have their metadata included in
            items in addition to prefixes.
        - name: matchGlob
          in: query
          type: string
          description: Filter results to objects and prefixes that match this glob pattern. Supports *, **, ?, and [...] character
            classes.
        - name: maxResults
          in: query
          type: integer
          description: Maximum number of items plus prefixes to return in a single page of responses. The service may return
            fewer than this value.
        - name: pageToken
          in: query
          type: string
          description: A previously-returned page token representing part of the larger set of results to view.
        - name: prefix
          in: query
          type: string
          description: Filter results to objects whose names begin with this prefix.
        - name: projection
          in: query
          type: string
          description: Set of properties to return. Defaults to noAcl.
        - name: softDeleted
          in: query
          type: boolean
          description: If true, only lists soft-deleted object versions.
        - name: startOffset
          in: query
          type: string
          description: Filter results to objects whose names are lexicographically equal to or after startOffset.
        - name: versions
          in: query
          type: boolean
          description: If true, lists all versions of an object as distinct results. The default is false.
    - name: b-bucket-o-watchAll
      path: /b/{bucket}/o/watchAll
      operations:
      - name: watchallobjects
        method: POST
        description: Google Cloud Storage Watch for Object Changes
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: prefix
          in: query
          type: string
          description: Limits notifications to objects with names beginning with this prefix.
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: b-bucket-o-object
      path: /b/{bucket}/o/{object}
      operations:
      - name: getobject
        method: GET
        description: Google Cloud Storage Get an Object
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: alt
          in: query
          type: string
          description: Data format for the response. Use json for metadata or media to download the object data.
        - name: generation
          in: query
          type: integer
          description: If present, selects a specific revision of this object.
        - name: ifGenerationMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the object's current generation matches the given value.
            Setting to 0 makes the operation succeed only if there are n
        - name: ifGenerationNotMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the object's current generation does not match the given
            value.
        - name: ifMetagenerationMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the object's current metageneration matches the given value.
        - name: ifMetagenerationNotMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the object's current metageneration does not match the given
            value.
        - name: projection
          in: query
          type: string
          description: Set of properties to return. Defaults to noAcl.
        - name: softDeleted
          in: query
          type: boolean
          description: If true, retrieves the soft-deleted version of the object.
      - name: updateobject
        method: PUT
        description: Google Cloud Storage Update an Object
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: generation
          in: query
          type: integer
          description: If present, selects a specific revision of this object.
        - name: ifGenerationMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the object's current generation matches the given value.
        - name: ifGenerationNotMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the object's current generation does not match the given
            value.
        - name: ifMetagenerationMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the object's current metageneration matches the given value.
        - name: ifMetagenerationNotMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the object's current metageneration does not match the given
            value.
        - name: predefinedAcl
          in: query
          type: string
          description: Apply a predefined set of access controls to the object.
        - name: projection
          in: query
          type: string
          description: Set of properties to return. Defaults to full.
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
      - name: patchobject
        method: PATCH
        description: Google Cloud Storage Patch an Object
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: generation
          in: query
          type: integer
          description: If present, selects a specific revision of this object.
        - name: ifGenerationMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the object's current generation matches the given value.
        - name: ifGenerationNotMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the object's current generation does not match the given
            value.
        - name: ifMetagenerationMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the object's current metageneration matches the given value.
        - name: ifMetagenerationNotMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the object's current metageneration does not match the given
            value.
        - name: predefinedAcl
          in: query
          type: string
          description: Apply a predefined set of access controls to the object.
        - name: projection
          in: query
          type: string
          description: Set of properties to return. Defaults to full.
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
      - name: deleteobject
        method: DELETE
        description: Google Cloud Storage Delete an Object
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: generation
          in: query
          type: integer
          description: If present, permanently deletes a specific revision of this object.
        - name: ifGenerationMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the object's current generation matches the given value.
        - name: ifGenerationNotMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the object's current generation does not match the given
            value.
        - name: ifMetagenerationMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the object's current metageneration matches the given value.
        - name: ifMetagenerationNotMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the object's current metageneration does not match the given
            value.
    - name: b-bucket-o-object-compose
      path: /b/{bucket}/o/{object}/compose
      operations:
      - name: composeobject
        method: POST
        description: Google Cloud Storage Compose Objects
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: object
          in: path
          type: string
          description: Name of the destination object.
          required: true
        - name: ifGenerationMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the destination object's current generation matches the
            given value.
        - name: ifMetagenerationMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the destination object's current metageneration matches
            the given value.
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: b-bucket-o-object-copyTo-b-destinationBucket-o-destinationObject
      path: /b/{bucket}/o/{object}/copyTo/b/{destinationBucket}/o/{destinationObject}
      operations:
      - name: copyobject
        method: POST
        description: Google Cloud Storage Copy an Object
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: bucket
          in: path
          type: string
          description: Name of the source bucket.
          required: true
        - name: object
          in: path
          type: string
          description: Name of the source object. For information about how to URL-encode object names, see Encoding URI path
            parts.
          required: true
        - name: destinationBucket
          in: path
          type: string
          description: Name of the destination bucket.
          required: true
        - name: destinationObject
          in: path
          type: string
          description: Name of the destination object.
          required: true
        - name: destinationPredefinedAcl
          in: query
          type: string
          description: Apply a predefined set of access controls to the destination object.
        - name: ifGenerationMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the destination object's current generation matches the
            given value.
        - name: ifGenerationNotMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the destination object's current generation does not match
            the given value.
        - name: ifMetagenerationMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the destination object's current metageneration matches
            the given value.
        - name: ifMetagenerationNotMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the destination object's current metageneration does not
            match the given value.
        - name: ifSourceGenerationMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the source object's current generation matches the given
            value.
        - name: ifSourceGenerationNotMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the source object's current generation does not match the
            given value.
        - name: ifSourceMetagenerationMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the source object's current metageneration matches the given
            value.
        - name: ifSourceMetagenerationNotMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the source object's current metageneration does not match
            the given value.
        - name: projection
          in: query
          type: string
          description: Set of properties to return. Defaults to noAcl.
        - name: sourceGeneration
          in: query
          type: integer
          description: If present, selects a specific revision of the source object.
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: b-bucket-o-object-rewriteTo-b-destinationBucket-o-destinationObject
      path: /b/{bucket}/o/{object}/rewriteTo/b/{destinationBucket}/o/{destinationObject}
      operations:
      - name: rewriteobject
        method: POST
        description: Google Cloud Storage Rewrite an Object
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: bucket
          in: path
          type: string
          description: Name of the source bucket.
          required: true
        - name: object
          in: path
          type: string
          description: Name of the source object.
          required: true
        - name: destinationBucket
          in: path
          type: string
          description: Name of the destination bucket.
          required: true
        - name: destinationObject
          in: path
          type: string
          description: Name of the destination object.
          required: true
        - name: destinationKmsKeyName
          in: query
          type: string
          description: Resource name of the Cloud KMS key that will be used to encrypt the destination object.
        - name: destinationPredefinedAcl
          in: query
          type: string
          description: Apply a predefined set of access controls to the destination object.
        - name: ifGenerationMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the destination object's current generation matches the
            given value.
        - name: ifGenerationNotMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the destination object's current generation does not match
            the given value.
        - name: ifMetagenerationMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the destination object's current metageneration matches
            the given value.
        - name: ifMetagenerationNotMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the destination object's current metageneration does not
            match the given value.
        - name: ifSourceGenerationMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the source object's current generation matches the given
            value.
        - name: ifSourceGenerationNotMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the source object's current generation does not match the
            given value.
        - name: ifSourceMetagenerationMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the source object's current metageneration matches the given
            value.
        - name: ifSourceMetagenerationNotMatch
          in: query
          type: integer
          description: Makes the operation conditional on whether the source object's current metageneration does not match
            the given value.
        - name: maxBytesRewrittenPerCall
          in: query
          type: integer
          description: The maximum number of bytes that will be rewritten per rewrite request. Allows throttling of large
            copies.
        - name: projection
          in: query
          type: string
          description: Set of properties to return. Defaults to noAcl.
        - name: rewriteToken
          in: query
          type: string
          description: Include this field only if the previous rewrite response included a rewriteToken. Provides a token
            for resuming a previously started rewrite operation.
        - name: sourceGeneration
          in: query
          type: integer
          description: If present, selects a specific revision of the source object.
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: channels-stop
      path: /channels/stop
      operations:
      - name: stopchannel
        method: POST
        description: Google Cloud Storage Stop a Notification Channel
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    authentication:
      type: bearer
      token: '{{env.GCP_CLOUD_STORAGE_API_KEY}}'
  exposes:
  - type: rest
    namespace: json-objects-rest
    port: 8080
    description: REST adapter for Google Cloud Storage JSON API — Objects. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/b/{bucket}/o
      name: b-bucket-o
      description: REST surface for b-bucket-o.
      operations:
      - method: GET
        name: listobjects
        description: Google Cloud Storage List Objects
        call: json-objects.listobjects
        with:
          delimiter: rest.delimiter
          endOffset: rest.endOffset
          includeFoldersAsPrefixes: rest.includeFoldersAsPrefixes
          includeTrailingDelimiter: rest.includeTrailingDelimiter
          matchGlob: rest.matchGlob
          maxResults: rest.maxResults
          pageToken: rest.pageToken
          prefix: rest.prefix
          projection: rest.projection
          softDeleted: rest.softDeleted
          startOffset: rest.startOffset
          versions: rest.versions
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/b/{bucket}/o/watchall
      name: b-bucket-o-watchall
      description: REST surface for b-bucket-o-watchAll.
      operations:
      - method: POST
        name: watchallobjects
        description: Google Cloud Storage Watch for Object Changes
        call: json-objects.watchallobjects
        with:
          prefix: rest.prefix
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/b/{bucket}/o/{object}
      name: b-bucket-o-object
      description: REST surface for b-bucket-o-object.
      operations:
      - method: GET
        name: getobject
        description: Google Cloud Storage Get an Object
        call: json-objects.getobject
        with:
          alt: rest.alt
          generation: rest.generation
          ifGenerationMatch: rest.ifGenerationMatch
          ifGenerationNotMatch: rest.ifGenerationNotMatch
          ifMetagenerationMatch: rest.ifMetagenerationMatch
          ifMetagenerationNotMatch: rest.ifMetagenerationNotMatch
          projection: rest.projection
          softDeleted: rest.softDeleted
        outputParameters:
        - type: object
          mapping: $.
      - method: PUT
        name: updateobject
        description: Google Cloud Storage Update an Object
        call: json-objects.updateobject
        with:
          generation: rest.generation
          ifGenerationMatch: rest.ifGenerationMatch
          ifGenerationNotMatch: rest.ifGenerationNotMatch
          ifMetagenerationMatch: rest.ifMetagenerationMatch
          ifMetagenerationNotMatch: rest.ifMetagenerationNotMatch
          predefinedAcl: rest.predefinedAcl
          projection: rest.projection
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: PATCH
        name: patchobject
        description: Google Cloud Storage Patch an Object
        call: json-objects.patchobject
        with:
          generation: rest.generation
          ifGenerationMatch: rest.ifGenerationMatch
          ifGenerationNotMatch: rest.ifGenerationNotMatch
          ifMetagenerationMatch: rest.ifMetagenerationMatch
          ifMetagenerationNotMatch: rest.ifMetagenerationNotMatch
          predefinedAcl: rest.predefinedAcl
          projection: rest.projection
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: deleteobject
        description: Google Cloud Storage Delete an Object
        call: json-objects.deleteobject
        with:
          generation: rest.generation
          ifGenerationMatch: rest.ifGenerationMatch
          ifGenerationNotMatch: rest.ifGenerationNotMatch
          ifMetagenerationMatch: rest.ifMetagenerationMatch
          ifMetagenerationNotMatch: rest.ifMetagenerationNotMatch
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/b/{bucket}/o/{object}/compose
      name: b-bucket-o-object-compose
      description: REST surface for b-bucket-o-object-compose.
      operations:
      - method: POST
        name: composeobject
        description: Google Cloud Storage Compose Objects
        call: json-objects.composeobject
        with:
          object: rest.object
          ifGenerationMatch: rest.ifGenerationMatch
          ifMetagenerationMatch: rest.ifMetagenerationMatch
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/b/{bucket}/o/{object}/copyto/b/{destinationbucket}/o/{destinationobject}
      name: b-bucket-o-object-copyto-b-destinationbucket-o-destinationobject
      description: REST surface for b-bucket-o-object-copyTo-b-destinationBucket-o-destinationObject.
      operations:
      - method: POST
        name: copyobject
        description: Google Cloud Storage Copy an Object
        call: json-objects.copyobject
        with:
          bucket: rest.bucket
          object: rest.object
          destinationBucket: rest.destinationBucket
          destinationObject: rest.destinationObject
          destinationPredefinedAcl: rest.destinationPredefinedAcl
          ifGenerationMatch: rest.ifGenerationMatch
          ifGenerationNotMatch: rest.ifGenerationNotMatch
          ifMetagenerationMatch: rest.ifMetagenerationMatch
          ifMetagenerationNotMatch: rest.ifMetagenerationNotMatch
          ifSourceGenerationMatch: rest.ifSourceGenerationMatch
          ifSourceGenerationNotMatch: rest.ifSourceGenerationNotMatch
          ifSourceMetagenerationMatch: rest.ifSourceMetagenerationMatch
          ifSourceMetagenerationNotMatch: rest.ifSourceMetagenerationNotMatch
          projection: rest.projection
          sourceGeneration: rest.sourceGeneration
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/b/{bucket}/o/{object}/rewriteto/b/{destinationbucket}/o/{destinationobject}
      name: b-bucket-o-object-rewriteto-b-destinationbucket-o-destinationobject
      description: REST surface for b-bucket-o-object-rewriteTo-b-destinationBucket-o-destinationObject.
      operations:
      - method: POST
        name: rewriteobject
        description: Google Cloud Storage Rewrite an Object
        call: json-objects.rewriteobject
        with:
          bucket: rest.bucket
          object: rest.object
          destinationBucket: rest.destinationBucket
          destinationObject: rest.destinationObject
          destinationKmsKeyName: rest.destinationKmsKeyName
          destinationPredefinedAcl: rest.destinationPredefinedAcl
          ifGenerationMatch: rest.ifGenerationMatch
          ifGenerationNotMatch: rest.ifGenerationNotMatch
          ifMetagenerationMatch: rest.ifMetagenerationMatch
          ifMetagenerationNotMatch: rest.ifMetagenerationNotMatch
          ifSourceGenerationMatch: rest.ifSourceGenerationMatch
          ifSourceGenerationNotMatch: rest.ifSourceGenerationNotMatch
          ifSourceMetagenerationMatch: rest.ifSourceMetagenerationMatch
          ifSourceMetagenerationNotMatch: rest.ifSourceMetagenerationNotMatch
          maxBytesRewrittenPerCall: rest.maxBytesRewrittenPerCall
          projection: rest.projection
          rewriteToken: rest.rewriteToken
          sourceGeneration: rest.sourceGeneration
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/channels/stop
      name: channels-stop
      description: REST surface for channels-stop.
      operations:
      - method: POST
        name: stopchannel
        description: Google Cloud Storage Stop a Notification Channel
        call: json-objects.stopchannel
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: json-objects-mcp
    port: 9090
    transport: http
    description: MCP adapter for Google Cloud Storage JSON API — Objects. One tool per consumed operation, routed inline through
      this capability's consumes block.
    tools:
    - name: google-cloud-storage-list-objects
      description: Google Cloud Storage List Objects
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: json-objects.listobjects
      with:
        delimiter: tools.delimiter
        endOffset: tools.endOffset
        includeFoldersAsPrefixes: tools.includeFoldersAsPrefixes
        includeTrailingDelimiter: tools.includeTrailingDelimiter
        matchGlob: tools.matchGlob
        maxResults: tools.maxResults
        pageToken: tools.pageToken
        prefix: tools.prefix
        projection: tools.projection
        softDeleted: tools.softDeleted
        startOffset: tools.startOffset
        versions: tools.versions
      outputParameters:
      - type: object
        mapping: $.
    - name: google-cloud-storage-watch-object
      description: Google Cloud Storage Watch for Object Changes
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: json-objects.watchallobjects
      with:
        prefix: tools.prefix
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: google-cloud-storage-get-object
      description: Google Cloud Storage Get an Object
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: json-objects.getobject
      with:
        alt: tools.alt
        generation: tools.generation
        ifGenerationMatch: tools.ifGenerationMatch
        ifGenerationNotMatch: tools.ifGenerationNotMatch
        ifMetagenerationMatch: tools.ifMetagenerationMatch
        ifMetagenerationNotMatch: tools.ifMetagenerationNotMatch
        projection: tools.projection
        softDeleted: tools.softDeleted
      outputParameters:
      - type: object
        mapping: $.
    - name: google-cloud-storage-update-object
      description: Google Cloud Storage Update an Object
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: json-objects.updateobject
      with:
        generation: tools.generation
        ifGenerationMatch: tools.ifGenerationMatch
        ifGenerationNotMatch: tools.ifGenerationNotMatch
        ifMetagenerationMatch: tools.ifMetagenerationMatch
        ifMetagenerationNotMatch: tools.ifMetagenerationNotMatch
        predefinedAcl: tools.predefinedAcl
        projection: tools.projection
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: google-cloud-storage-patch-object
      description: Google Cloud Storage Patch an Object
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: json-objects.patchobject
      with:
        generation: tools.generation
        ifGenerationMatch: tools.ifGenerationMatch
        ifGenerationNotMatch: tools.ifGenerationNotMatch
        ifMetagenerationMatch: tools.ifMetagenerationMatch
        ifMetagenerationNotMatch: tools.ifMetagenerationNotMatch
        predefinedAcl: tools.predefinedAcl
        projection: tools.projection
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: google-cloud-storage-delete-object
      description: Google Cloud Storage Delete an Object
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: json-objects.deleteobject
      with:
        generation: tools.generation
        ifGenerationMatch: tools.ifGenerationMatch
        ifGenerationNotMatch: tools.ifGenerationNotMatch
        ifMetagenerationMatch: tools.ifMetagenerationMatch
        ifMetagenerationNotMatch: tools.ifMetagenerationNotMatch
      outputParameters:
      - type: object
        mapping: $.
    - name: google-cloud-storage-compose-objects
      description: Google Cloud Storage Compose Objects
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: json-objects.composeobject
      with:
        object: tools.object
        ifGenerationMatch: tools.ifGenerationMatch
        ifMetagenerationMatch: tools.ifMetagenerationMatch
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: google-cloud-storage-copy-object
      description: Google Cloud Storage Copy an Object
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: json-

# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/gcp-cloud-storage/refs/heads/main/capabilities/json-objects.yaml