warehouse/openapi/openapi.yml
2024-11-12 22:12:41 +01:00

252 lines
7.1 KiB
YAML

openapi: 3.0.3
info:
title: Object Storage API
description: API for managing objects in an object storage service.
version: 1.0.0
contact:
name: API Support
email: support@example.com
servers:
- url: https://api.example.com/v1
paths:
/buckets:
get:
summary: List all buckets
description: Retrieve a paginated list of all buckets in the object storage.
parameters:
- name: limit
in: query
schema:
type: integer
default: 10
description: The maximum number of items to return
- name: offset
in: query
schema:
type: integer
default: 0
description: The number of items to skip before starting to collect the result set
responses:
'200':
description: A paginated list of buckets.
content:
application/json:
schema:
type: object
properties:
total:
type: integer
description: Total number of buckets available
limit:
type: integer
description: Maximum number of items returned in the response
offset:
type: integer
description: Number of items skipped before starting the response
items:
type: array
items:
$ref: '#/components/schemas/Bucket'
'500':
description: Server error
post:
summary: Create a new bucket
description: Create a new bucket to store objects.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Name of the bucket to be created
example: my-new-bucket
responses:
'201':
description: Bucket created successfully
'400':
description: Bad request
'409':
description: Bucket already exists
/buckets/{bucketName}:
delete:
summary: Delete a bucket
description: Delete a bucket and all its objects.
parameters:
- name: bucketName
in: path
required: true
schema:
type: string
description: The name of the bucket to delete
responses:
'204':
description: Bucket deleted successfully
'404':
description: Bucket not found
'500':
description: Server error
/buckets/{bucketName}/objects:
get:
summary: List objects in a bucket
description: Retrieve a paginated list of objects within a specified bucket.
parameters:
- name: bucketName
in: path
required: true
schema:
type: string
description: The name of the bucket
- name: limit
in: query
schema:
type: integer
default: 10
description: The maximum number of items to return
- name: offset
in: query
schema:
type: integer
default: 0
description: The number of items to skip before starting to collect the result set
responses:
'200':
description: A paginated list of objects in the bucket.
content:
application/json:
schema:
type: object
properties:
total:
type: integer
description: Total number of objects available in the bucket
limit:
type: integer
description: Maximum number of items returned in the response
offset:
type: integer
description: Number of items skipped before starting the response
items:
type: array
items:
$ref: '#/components/schemas/Object'
'404':
description: Bucket not found
/buckets/{bucketName}/objects/{objectKey}:
get:
summary: Get object
description: Retrieve an object from the specified bucket.
parameters:
- name: bucketName
in: path
required: true
schema:
type: string
description: The name of the bucket
- name: objectKey
in: path
required: true
schema:
type: string
description: The key (identifier) of the object
responses:
'200':
description: The requested object data
content:
application/octet-stream:
schema:
type: string
format: binary
'404':
description: Bucket or object not found
put:
summary: Upload an object
description: Upload a new object or overwrite an existing one in the specified bucket.
parameters:
- name: bucketName
in: path
required: true
schema:
type: string
description: The name of the bucket
- name: objectKey
in: path
required: true
schema:
type: string
description: The key (identifier) for the object
requestBody:
required: true
content:
application/octet-stream:
schema:
type: string
format: binary
responses:
'201':
description: Object uploaded successfully
'400':
description: Invalid object data
'500':
description: Server error
delete:
summary: Delete an object
description: Delete an object from the specified bucket.
parameters:
- name: bucketName
in: path
required: true
schema:
type: string
description: The name of the bucket
- name: objectKey
in: path
required: true
schema:
type: string
description: The key (identifier) of the object
responses:
'204':
description: Object deleted successfully
'404':
description: Bucket or object not found
'500':
description: Server error
components:
schemas:
Bucket:
type: object
properties:
name:
type: string
description: The name of the bucket
created_at:
type: string
format: date-time
description: Creation timestamp of the bucket
Object:
type: object
properties:
key:
type: string
description: The key (identifier) of the object
size:
type: integer
description: The size of the object in bytes
last_modified:
type: string
format: date-time
description: The last modified timestamp of the object