Files
e2b-dev--e2b/spec/openapi-volumecontent.yml
2026-07-13 12:47:58 +08:00

330 lines
8.1 KiB
YAML

openapi: 3.0.0
info:
version: 0.1.0
title: E2B API
security:
- VolumeJWT: []
components:
securitySchemes:
VolumeJWT:
type: http
scheme: bearer
bearerFormat: JWT
parameters:
volumeID:
name: volumeID
in: path
required: true
schema:
type: string
path:
name: path
in: query
required: true
schema:
type: string
responses:
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Authentication error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Server error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Error:
required:
- code
- message
properties:
code:
type: string
description: Error code
message:
type: string
description: Error message
VolumeEntryStat:
type: object
properties:
name:
type: string
type:
type: string
enum: [unknown, file, directory, symlink]
path:
type: string
size:
type: integer
format: int64
mode:
type: integer
format: uint32
uid:
type: integer
format: uint32
gid:
type: integer
format: uint32
atime:
type: string
format: date-time
mtime:
type: string
format: date-time
ctime:
type: string
format: date-time
target:
type: string
required:
- name
- type
- path
- size
- mode
- uid
- gid
- atime
- mtime
- ctime
VolumeDirectoryListing:
type: array
items:
$ref: '#/components/schemas/VolumeEntryStat'
paths:
/volumecontent/{volumeID}/path:
get:
description: Get path information
tags: [volumes]
parameters:
- $ref: '#/components/parameters/volumeID'
- $ref: '#/components/parameters/path'
responses:
'200':
description: Successfully retrieved path information
content:
application/json:
schema:
$ref: '#/components/schemas/VolumeEntryStat'
'404':
$ref: '#/components/responses/404'
patch:
description: Update path metadata
tags: [volumes]
parameters:
- $ref: '#/components/parameters/volumeID'
- $ref: '#/components/parameters/path'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
uid:
type: integer
format: uint32
gid:
type: integer
format: uint32
mode:
type: integer
format: uint32
responses:
'200':
description: "Successfully updated a file's metadata"
content:
application/json:
schema:
$ref: '#/components/schemas/VolumeEntryStat'
'400':
description: 'Invalid metadata provided'
'404':
description: 'path not found'
'500':
description: 'Internal server error'
delete:
description: Delete a path
tags: [volumes]
parameters:
- $ref: '#/components/parameters/volumeID'
- $ref: '#/components/parameters/path'
responses:
'204':
description: Successfully deleted a path
'404':
$ref: '#/components/responses/404'
/volumecontent/{volumeID}/dir:
get:
description: List directory contents
tags: [volumes]
parameters:
- $ref: '#/components/parameters/volumeID'
- $ref: '#/components/parameters/path'
- name: depth
in: query
description: Number of layers deep to recurse into the directory
schema:
type: integer
format: uint32
default: 1
responses:
'200':
description: 'Successfully retrieved a directory listing'
content:
application/json:
schema:
$ref: '#/components/schemas/VolumeDirectoryListing'
'400':
description: 'Invalid path provided'
'404':
description: 'path not found'
'500':
$ref: '#/components/responses/500'
post:
description: 'Create a directory'
tags: [volumes]
parameters:
- $ref: '#/components/parameters/volumeID'
- $ref: '#/components/parameters/path'
- name: uid
in: query
description: User ID of the created directory
schema:
type: integer
format: uint32
- name: gid
in: query
description: Group ID of the created directory
schema:
type: integer
format: uint32
- name: mode
in: query
description: Mode of the created directory
schema:
type: integer
format: uint32
- name: force
in: query
description: Create the parents of a directory if they don't exist
schema:
type: boolean
responses:
'201':
description: 'Successfully created a directory'
content:
application/json:
schema:
$ref: '#/components/schemas/VolumeEntryStat'
'404':
description: 'path not found'
'500':
$ref: '#/components/responses/500'
/volumecontent/{volumeID}/file:
get:
description: Download file
tags: [volumes]
parameters:
- $ref: '#/components/parameters/volumeID'
- $ref: '#/components/parameters/path'
responses:
'200':
description: 'Successfully downloaded a file'
content:
application/octet-stream:
schema:
type: string
format: binary
'404':
description: 'path not found'
'500':
$ref: '#/components/responses/500'
put:
description: Upload file
tags: [volumes]
parameters:
- $ref: '#/components/parameters/volumeID'
- $ref: '#/components/parameters/path'
- name: uid
in: query
description: User ID of the uploaded file
schema:
type: integer
format: uint32
- name: gid
in: query
description: Group ID of the uploaded file
schema:
type: integer
format: uint32
- name: mode
in: query
description: Mode of the uploaded file
schema:
type: integer
format: uint32
- name: force
in: query
description: Force overwrite of an existing file
schema:
type: boolean
requestBody:
content:
application/octet-stream:
schema:
type: string
format: binary
responses:
'201':
description: 'Successfully created a file'
content:
application/json:
schema:
$ref: '#/components/schemas/VolumeEntryStat'
'404':
description: 'path not found'
'500':
$ref: '#/components/responses/500'