Wherobots storage API
The storage API from Wherobots — 12 operation(s) for storage.
The storage API from Wherobots — 12 operation(s) for storage.
openapi: 3.1.0
info:
title: Wherobots Cloud apikey storage API
description: "Wherobots Cloud API OpenAPI specification.\n\n These are the API docs for the Wherobots API. You can use this to test out the API and see what it does.\n The underlying OPENAPI spec can be found at /openapi.json. This can be used to generate clients for the API.\n\n The Authorize button below will allow you to input an access token to authenticate to our API.\n Then all of the requests on the page should work.\n "
version: 0.0.1
servers:
- url: https://api.cloud.wherobots.com
description: Wherobots Cloud API
tags:
- name: storage
paths:
/storage:
get:
tags:
- storage
summary: List storage integrations
operationId: listIntegration
responses:
'200':
description: Successful Response
content:
application/json:
schema:
items:
$ref: '#/components/schemas/StorageSource'
type: array
title: Response Listintegration
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
security:
- bearerToken: []
- wherobotsApiKey: []
x-excluded: true
post:
tags:
- storage
summary: Create a storage integration
operationId: createIntegration
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateStorageIntegrationAPIPayload'
required: true
responses:
'201':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/StorageSource'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
security:
- bearerToken: []
- wherobotsApiKey: []
x-excluded: true
/storage/{integration_id}:
delete:
tags:
- storage
summary: Delete a storage integration
operationId: deleteIntegration
security:
- bearerToken: []
- wherobotsApiKey: []
parameters:
- name: integration_id
in: path
required: true
schema:
type: string
title: Integration Id
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
x-excluded: true
get:
tags:
- storage
summary: Get a storage integration
operationId: getIntegration
security:
- bearerToken: []
- wherobotsApiKey: []
parameters:
- name: integration_id
in: path
required: true
schema:
type: string
title: Integration Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/StorageSource'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
x-excluded: true
/storage/trust-relationship:
get:
tags:
- storage
summary: Get IAM trust relationship
operationId: getTrustRelationship
security:
- bearerToken: []
- wherobotsApiKey: []
parameters:
- name: trustedAccountIds
in: query
required: false
schema:
anyOf:
- type: array
items:
type: string
- type: 'null'
title: Trustedaccountids
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
x-excluded: true
/storage/s3-access-type:
get:
tags:
- storage
summary: Check S3 bucket access type
operationId: getS3AccessType
security:
- bearerToken: []
- wherobotsApiKey: []
parameters:
- name: s3_path
in: query
required: true
schema:
type: string
title: S3 Path
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/S3AccessApiResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
x-excluded: true
/storage/{integration_id}/sample-policy:
get:
tags:
- storage
summary: Get sample IAM policy
operationId: getSamplePolicy
security:
- bearerToken: []
- wherobotsApiKey: []
parameters:
- name: integration_id
in: path
required: true
schema:
type: string
title: Integration Id
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
x-excluded: true
/storage/credentials:
post:
tags:
- storage
summary: Get Storage Credentials
description: 'Return temporary AWS credentials scoped to the requested S3 path.
Resolution order:
1. Managed storage (org file store bucket)
2. WherobotsDB releases bucket (if the org has the feature)
3. User-defined storage integrations (prefix match)
`payload.access_mode` controls whether returned credentials are read-only
or include write permissions.
Returns empty credentials for public buckets (no role_arn).'
operationId: getStorageCredentials
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StorageCredentialsRequest'
required: true
responses:
'200':
description: Temporary credentials scoped to the requested path with read or read/write access
content:
application/json:
schema:
$ref: '#/components/schemas/TemporaryAwsCredentials'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'404':
description: No storage source matches the requested path
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
security:
- bearerToken: []
- wherobotsApiKey: []
x-excluded: true
/storage/{integration_id}/access:
post:
tags:
- storage
summary: Verify storage integration access
operationId: verifyIntegrationAccess
security:
- bearerToken: []
- wherobotsApiKey: []
parameters:
- name: integration_id
in: path
required: true
schema:
type: string
title: Integration Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/StorageIntegrationAccess'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
x-excluded: true
/storage/{integration_id}/abacaccess:
post:
tags:
- storage
summary: Verify ABAC storage access
operationId: verifyAbacAccess
security:
- bearerToken: []
- wherobotsApiKey: []
parameters:
- name: integration_id
in: path
required: true
schema:
type: string
title: Integration Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/StorageIntegrationAccess'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
x-exclude-from-cli: true
x-excluded: true
/storage/{storage_id}/file-upload-url/{path}:
post:
tags:
- storage
summary: Create a presigned file upload URL
operationId: createFileUploadUrl
security:
- bearerToken: []
- wherobotsApiKey: []
parameters:
- name: storage_id
in: path
required: true
schema:
type: string
title: Storage Id
- name: path
in: path
required: true
schema:
type: string
title: Path
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/src__routers__storageintegration__UploadUrlResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
x-excluded: false
/storage/{storage_id}/file-rename/{path}:
post:
tags:
- storage
summary: Rename a file in storage
operationId: renameFileInStorage
security:
- bearerToken: []
- wherobotsApiKey: []
parameters:
- name: storage_id
in: path
required: true
schema:
type: string
title: Storage Id
- name: path
in: path
required: true
schema:
type: string
title: Path
- name: new_name
in: query
required: true
schema:
type: string
title: New Name
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
x-excluded: true
/storage/{storage_id}/files/{path}:
get:
tags:
- storage
summary: Download a file from storage
operationId: downloadFileFromStorage
security:
- bearerToken: []
- wherobotsApiKey: []
parameters:
- name: storage_id
in: path
required: true
schema:
type: string
title: Storage Id
- name: path
in: path
required: true
schema:
type: string
title: Path
responses:
'200':
description: File downloaded successfully
content:
application/json:
schema: {}
application/octet-stream:
schema:
type: string
format: binary
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
x-excluded: true
delete:
tags:
- storage
summary: Delete a file from storage
operationId: deleteFileFromStorage
security:
- bearerToken: []
- wherobotsApiKey: []
parameters:
- name: storage_id
in: path
required: true
schema:
type: string
title: Storage Id
- name: path
in: path
required: true
schema:
type: string
title: Path
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
x-excluded: true
/storage/{storage_id}/directories/{path}:
delete:
tags:
- storage
summary: Delete a directory from storage
operationId: deleteDirectory
security:
- bearerToken: []
- wherobotsApiKey: []
parameters:
- name: storage_id
in: path
required: true
schema:
type: string
title: Storage Id
- name: path
in: path
required: true
schema:
type: string
title: Path
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
x-excluded: true
get:
tags:
- storage
summary: List directory contents
operationId: listDirectoryContents
security:
- bearerToken: []
- wherobotsApiKey: []
parameters:
- name: storage_id
in: path
required: true
schema:
type: string
title: Storage Id
- name: path
in: path
required: true
schema:
type: string
title: Path
- name: cursor
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Cursor
- name: limit
in: query
required: false
schema:
type: integer
default: 0
title: Limit
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DirectoryListingResult'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
x-excluded: true
put:
tags:
- storage
summary: Create a directory in storage
operationId: createDirectory
security:
- bearerToken: []
- wherobotsApiKey: []
parameters:
- name: storage_id
in: path
required: true
schema:
type: string
title: Storage Id
- name: path
in: path
required: true
schema:
type: string
title: Path
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
'404':
description: Not Found
# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/wherobots/refs/heads/main/openapi/wherobots-storage-api-openapi.yml