naftiko: 1.0.0-alpha2 info: label: Google Cloud Storage JSON API — Buckets description: 'Google Cloud Storage JSON API — Buckets. 10 operations. Lead operation: Google Cloud Storage List Buckets. Self-contained Naftiko capability covering one Gcp Cloud Storage business surface.' tags: - Gcp Cloud Storage - Buckets 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-buckets baseUri: https://storage.googleapis.com/storage/v1 description: Google Cloud Storage JSON API — Buckets business capability. Self-contained, no shared references. resources: - name: b path: /b operations: - name: listbuckets method: GET description: Google Cloud Storage List Buckets outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: project in: query type: string description: The project ID or project number to list buckets for. required: true - name: maxResults in: query type: integer description: Maximum number of buckets to return in a single response. The service uses this value or 1,000 items, whichever is smaller. - name: pageToken in: query type: string description: A previously-returned page token representing part of the larger set of results to view. The pageToken is an encoded field that marks the name and generation of - name: prefix in: query type: string description: Filter results to buckets whose names begin with this prefix. - name: projection in: query type: string description: Set of properties to return. Defaults to noAcl. - name: insertbucket method: POST description: Google Cloud Storage Create a Bucket outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: project in: query type: string description: The project ID or project number to create the bucket in. required: true - name: predefinedAcl in: query type: string description: Apply a predefined set of access controls to the bucket. - name: predefinedDefaultObjectAcl in: query type: string description: Apply a predefined set of default object access controls to the bucket. - name: projection in: query type: string description: Set of properties to return. Defaults to noAcl. - name: enableObjectRetention in: query type: boolean description: When set to true, object retention is enabled for this bucket. - name: body in: body type: object description: Request body (JSON). required: true - name: b-bucket path: /b/{bucket} operations: - name: getbucket method: GET description: Google Cloud Storage Get a Bucket outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: ifMetagenerationMatch in: query type: integer description: Makes the return of the bucket metadata conditional on whether the bucket's current metageneration matches the given value. - name: ifMetagenerationNotMatch in: query type: integer description: Makes the return of the bucket metadata conditional on whether the bucket'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: updatebucket method: PUT description: Google Cloud Storage Update a Bucket outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: ifMetagenerationMatch in: query type: integer description: Makes the update conditional on whether the bucket's current metageneration matches the given value. - name: ifMetagenerationNotMatch in: query type: integer description: Makes the update conditional on whether the bucket'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 bucket. - name: predefinedDefaultObjectAcl in: query type: string description: Apply a predefined set of default object access controls. - 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: patchbucket method: PATCH description: Google Cloud Storage Patch a Bucket outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: ifMetagenerationMatch in: query type: integer description: Makes the patch conditional on whether the bucket's current metageneration matches the given value. - name: ifMetagenerationNotMatch in: query type: integer description: Makes the patch conditional on whether the bucket'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 bucket. - name: predefinedDefaultObjectAcl in: query type: string description: Apply a predefined set of default object access controls. - 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: deletebucket method: DELETE description: Google Cloud Storage Delete a Bucket outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: ifMetagenerationMatch in: query type: integer description: Makes the deletion conditional on whether the bucket's current metageneration matches the given value. - name: ifMetagenerationNotMatch in: query type: integer description: Makes the deletion conditional on whether the bucket's current metageneration does not match the given value. - name: b-bucket-iam path: /b/{bucket}/iam operations: - name: getbucketiampolicy method: GET description: Google Cloud Storage Get Bucket Iam Policy outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: optionsRequestedPolicyVersion in: query type: integer description: The IAM policy format version to be returned. Valid values are 1 and 3. Requests specifying an invalid value will be rejected. Defaults to 1. - name: setbucketiampolicy method: PUT description: Google Cloud Storage Set Bucket Iam Policy outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: b-bucket-iam-testPermissions path: /b/{bucket}/iam/testPermissions operations: - name: testbucketiampermissions method: GET description: Google Cloud Storage Test Bucket Iam Permissions outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: permissions in: query type: array description: Permissions to test. required: true - name: b-bucket-lockRetentionPolicy path: /b/{bucket}/lockRetentionPolicy operations: - name: lockbucketretentionpolicy method: POST description: Google Cloud Storage Lock Retention Policy outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: ifMetagenerationMatch in: query type: integer description: Makes the operation conditional on whether the bucket's current metageneration matches the given value. required: true authentication: type: bearer token: '{{env.GCP_CLOUD_STORAGE_API_KEY}}' exposes: - type: rest namespace: json-buckets-rest port: 8080 description: REST adapter for Google Cloud Storage JSON API — Buckets. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/b name: b description: REST surface for b. operations: - method: GET name: listbuckets description: Google Cloud Storage List Buckets call: json-buckets.listbuckets with: project: rest.project maxResults: rest.maxResults pageToken: rest.pageToken prefix: rest.prefix projection: rest.projection outputParameters: - type: object mapping: $. - method: POST name: insertbucket description: Google Cloud Storage Create a Bucket call: json-buckets.insertbucket with: project: rest.project predefinedAcl: rest.predefinedAcl predefinedDefaultObjectAcl: rest.predefinedDefaultObjectAcl projection: rest.projection enableObjectRetention: rest.enableObjectRetention body: rest.body outputParameters: - type: object mapping: $. - path: /v1/b/{bucket} name: b-bucket description: REST surface for b-bucket. operations: - method: GET name: getbucket description: Google Cloud Storage Get a Bucket call: json-buckets.getbucket with: ifMetagenerationMatch: rest.ifMetagenerationMatch ifMetagenerationNotMatch: rest.ifMetagenerationNotMatch projection: rest.projection outputParameters: - type: object mapping: $. - method: PUT name: updatebucket description: Google Cloud Storage Update a Bucket call: json-buckets.updatebucket with: ifMetagenerationMatch: rest.ifMetagenerationMatch ifMetagenerationNotMatch: rest.ifMetagenerationNotMatch predefinedAcl: rest.predefinedAcl predefinedDefaultObjectAcl: rest.predefinedDefaultObjectAcl projection: rest.projection body: rest.body outputParameters: - type: object mapping: $. - method: PATCH name: patchbucket description: Google Cloud Storage Patch a Bucket call: json-buckets.patchbucket with: ifMetagenerationMatch: rest.ifMetagenerationMatch ifMetagenerationNotMatch: rest.ifMetagenerationNotMatch predefinedAcl: rest.predefinedAcl predefinedDefaultObjectAcl: rest.predefinedDefaultObjectAcl projection: rest.projection body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deletebucket description: Google Cloud Storage Delete a Bucket call: json-buckets.deletebucket with: ifMetagenerationMatch: rest.ifMetagenerationMatch ifMetagenerationNotMatch: rest.ifMetagenerationNotMatch outputParameters: - type: object mapping: $. - path: /v1/b/{bucket}/iam name: b-bucket-iam description: REST surface for b-bucket-iam. operations: - method: GET name: getbucketiampolicy description: Google Cloud Storage Get Bucket Iam Policy call: json-buckets.getbucketiampolicy with: optionsRequestedPolicyVersion: rest.optionsRequestedPolicyVersion outputParameters: - type: object mapping: $. - method: PUT name: setbucketiampolicy description: Google Cloud Storage Set Bucket Iam Policy call: json-buckets.setbucketiampolicy with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/b/{bucket}/iam/testpermissions name: b-bucket-iam-testpermissions description: REST surface for b-bucket-iam-testPermissions. operations: - method: GET name: testbucketiampermissions description: Google Cloud Storage Test Bucket Iam Permissions call: json-buckets.testbucketiampermissions with: permissions: rest.permissions outputParameters: - type: object mapping: $. - path: /v1/b/{bucket}/lockretentionpolicy name: b-bucket-lockretentionpolicy description: REST surface for b-bucket-lockRetentionPolicy. operations: - method: POST name: lockbucketretentionpolicy description: Google Cloud Storage Lock Retention Policy call: json-buckets.lockbucketretentionpolicy with: ifMetagenerationMatch: rest.ifMetagenerationMatch outputParameters: - type: object mapping: $. - type: mcp namespace: json-buckets-mcp port: 9090 transport: http description: MCP adapter for Google Cloud Storage JSON API — Buckets. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: google-cloud-storage-list-buckets description: Google Cloud Storage List Buckets hints: readOnly: true destructive: false idempotent: true call: json-buckets.listbuckets with: project: tools.project maxResults: tools.maxResults pageToken: tools.pageToken prefix: tools.prefix projection: tools.projection outputParameters: - type: object mapping: $. - name: google-cloud-storage-create-bucket description: Google Cloud Storage Create a Bucket hints: readOnly: false destructive: false idempotent: false call: json-buckets.insertbucket with: project: tools.project predefinedAcl: tools.predefinedAcl predefinedDefaultObjectAcl: tools.predefinedDefaultObjectAcl projection: tools.projection enableObjectRetention: tools.enableObjectRetention body: tools.body outputParameters: - type: object mapping: $. - name: google-cloud-storage-get-bucket description: Google Cloud Storage Get a Bucket hints: readOnly: true destructive: false idempotent: true call: json-buckets.getbucket with: ifMetagenerationMatch: tools.ifMetagenerationMatch ifMetagenerationNotMatch: tools.ifMetagenerationNotMatch projection: tools.projection outputParameters: - type: object mapping: $. - name: google-cloud-storage-update-bucket description: Google Cloud Storage Update a Bucket hints: readOnly: false destructive: false idempotent: true call: json-buckets.updatebucket with: ifMetagenerationMatch: tools.ifMetagenerationMatch ifMetagenerationNotMatch: tools.ifMetagenerationNotMatch predefinedAcl: tools.predefinedAcl predefinedDefaultObjectAcl: tools.predefinedDefaultObjectAcl projection: tools.projection body: tools.body outputParameters: - type: object mapping: $. - name: google-cloud-storage-patch-bucket description: Google Cloud Storage Patch a Bucket hints: readOnly: false destructive: false idempotent: true call: json-buckets.patchbucket with: ifMetagenerationMatch: tools.ifMetagenerationMatch ifMetagenerationNotMatch: tools.ifMetagenerationNotMatch predefinedAcl: tools.predefinedAcl predefinedDefaultObjectAcl: tools.predefinedDefaultObjectAcl projection: tools.projection body: tools.body outputParameters: - type: object mapping: $. - name: google-cloud-storage-delete-bucket description: Google Cloud Storage Delete a Bucket hints: readOnly: false destructive: true idempotent: true call: json-buckets.deletebucket with: ifMetagenerationMatch: tools.ifMetagenerationMatch ifMetagenerationNotMatch: tools.ifMetagenerationNotMatch outputParameters: - type: object mapping: $. - name: google-cloud-storage-get-bucket-2 description: Google Cloud Storage Get Bucket Iam Policy hints: readOnly: true destructive: false idempotent: true call: json-buckets.getbucketiampolicy with: optionsRequestedPolicyVersion: tools.optionsRequestedPolicyVersion outputParameters: - type: object mapping: $. - name: google-cloud-storage-set-bucket description: Google Cloud Storage Set Bucket Iam Policy hints: readOnly: false destructive: false idempotent: true call: json-buckets.setbucketiampolicy with: body: tools.body outputParameters: - type: object mapping: $. - name: google-cloud-storage-test-bucket description: Google Cloud Storage Test Bucket Iam Permissions hints: readOnly: true destructive: false idempotent: true call: json-buckets.testbucketiampermissions with: permissions: tools.permissions outputParameters: - type: object mapping: $. - name: google-cloud-storage-lock-retention description: Google Cloud Storage Lock Retention Policy hints: readOnly: false destructive: false idempotent: false call: json-buckets.lockbucketretentionpolicy with: ifMetagenerationMatch: tools.ifMetagenerationMatch outputParameters: - type: object mapping: $.