Rook · Capability

Rook Ceph Object Storage API — Objects

Rook Ceph Object Storage API — Objects. 5 operations. Lead operation: List Objects in a Bucket. Self-contained Naftiko capability covering one Rook business surface.

Run with Naftiko RookObjects

What You Can Do

GET
Listobjects — List Objects in a Bucket
/v1/{bucket}
PUT
Putobject — Upload an Object
/v1/{bucket}/{key}
GET
Getobject — Download an Object
/v1/{bucket}/{key}
HEAD
Headobject — Get Object Metadata
/v1/{bucket}/{key}
DELETE
Deleteobject — Delete an Object
/v1/{bucket}/{key}

MCP Tools

list-objects-bucket

List Objects in a Bucket

read-only idempotent
upload-object

Upload an Object

idempotent
download-object

Download an Object

read-only idempotent
get-object-metadata

Get Object Metadata

delete-object

Delete an Object

idempotent

Capability Spec

ceph-object-storage-objects.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Rook Ceph Object Storage API — Objects
  description: 'Rook Ceph Object Storage API — Objects. 5 operations. Lead operation: List Objects in a Bucket. Self-contained
    Naftiko capability covering one Rook business surface.'
  tags:
  - Rook
  - Objects
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    ROOK_API_KEY: ROOK_API_KEY
capability:
  consumes:
  - type: http
    namespace: ceph-object-storage-objects
    baseUri: http://{rgw-host}:{port}
    description: Rook Ceph Object Storage API — Objects business capability. Self-contained, no shared references.
    resources:
    - name: bucket
      path: /{bucket}
      operations:
      - name: listobjects
        method: GET
        description: List Objects in a Bucket
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: list-type
          in: query
          type: integer
          description: Set to 2 to use the newer List Objects V2 API which uses continuation tokens instead of markers for
            pagination.
        - name: prefix
          in: query
          type: string
          description: Limits the response to keys beginning with the specified prefix. Used to organize objects into virtual
            directories.
        - name: delimiter
          in: query
          type: string
          description: Character used to group keys. All keys that contain the delimiter between the prefix and the first
            occurrence of the delimiter are grouped into a single CommonP
        - name: max-keys
          in: query
          type: integer
          description: Maximum number of keys to return in a single response. Defaults to 1000, maximum is 1000.
        - name: continuation-token
          in: query
          type: string
          description: Token from a previous List Objects V2 response used to continue listing from where the previous call
            left off.
        - name: marker
          in: query
          type: string
          description: Key after which listing should begin, used for pagination in List Objects V1 API.
    - name: bucket-key
      path: /{bucket}/{key}
      operations:
      - name: putobject
        method: PUT
        description: Upload an Object
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
      - name: getobject
        method: GET
        description: Download an Object
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: Range
          in: header
          type: string
          description: HTTP range header for partial content requests, e.g. bytes=0-1023 to retrieve the first 1024 bytes.
        - name: If-Match
          in: header
          type: string
          description: Returns the object only if the ETag matches the specified value, otherwise returns HTTP 412.
        - name: If-None-Match
          in: header
          type: string
          description: Returns the object only if the ETag does not match the specified value, used for cache validation.
      - name: headobject
        method: HEAD
        description: Get Object Metadata
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: deleteobject
        method: DELETE
        description: Delete an Object
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    authentication:
      type: apikey
      key: Authorization
      value: '{{env.ROOK_API_KEY}}'
      placement: header
  exposes:
  - type: rest
    namespace: ceph-object-storage-objects-rest
    port: 8080
    description: REST adapter for Rook Ceph Object Storage API — Objects. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/{bucket}
      name: bucket
      description: REST surface for bucket.
      operations:
      - method: GET
        name: listobjects
        description: List Objects in a Bucket
        call: ceph-object-storage-objects.listobjects
        with:
          list-type: rest.list-type
          prefix: rest.prefix
          delimiter: rest.delimiter
          max-keys: rest.max-keys
          continuation-token: rest.continuation-token
          marker: rest.marker
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/{bucket}/{key}
      name: bucket-key
      description: REST surface for bucket-key.
      operations:
      - method: PUT
        name: putobject
        description: Upload an Object
        call: ceph-object-storage-objects.putobject
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: GET
        name: getobject
        description: Download an Object
        call: ceph-object-storage-objects.getobject
        with:
          Range: rest.Range
          If-Match: rest.If-Match
          If-None-Match: rest.If-None-Match
        outputParameters:
        - type: object
          mapping: $.
      - method: HEAD
        name: headobject
        description: Get Object Metadata
        call: ceph-object-storage-objects.headobject
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: deleteobject
        description: Delete an Object
        call: ceph-object-storage-objects.deleteobject
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: ceph-object-storage-objects-mcp
    port: 9090
    transport: http
    description: MCP adapter for Rook Ceph Object Storage API — Objects. One tool per consumed operation, routed inline through
      this capability's consumes block.
    tools:
    - name: list-objects-bucket
      description: List Objects in a Bucket
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: ceph-object-storage-objects.listobjects
      with:
        list-type: tools.list-type
        prefix: tools.prefix
        delimiter: tools.delimiter
        max-keys: tools.max-keys
        continuation-token: tools.continuation-token
        marker: tools.marker
      outputParameters:
      - type: object
        mapping: $.
    - name: upload-object
      description: Upload an Object
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: ceph-object-storage-objects.putobject
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: download-object
      description: Download an Object
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: ceph-object-storage-objects.getobject
      with:
        Range: tools.Range
        If-Match: tools.If-Match
        If-None-Match: tools.If-None-Match
      outputParameters:
      - type: object
        mapping: $.
    - name: get-object-metadata
      description: Get Object Metadata
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: ceph-object-storage-objects.headobject
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-object
      description: Delete an Object
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: ceph-object-storage-objects.deleteobject
      outputParameters:
      - type: object
        mapping: $.