init commit
This commit is contained in:
633
templates/openapi/schemas.yaml
Normal file
633
templates/openapi/schemas.yaml
Normal file
@@ -0,0 +1,633 @@
|
||||
# S3 API Schemas
|
||||
|
||||
S3Error:
|
||||
type: object
|
||||
xml:
|
||||
name: Error
|
||||
properties:
|
||||
Code:
|
||||
type: string
|
||||
example: "NoSuchBucket"
|
||||
Message:
|
||||
type: string
|
||||
example: "The specified bucket does not exist"
|
||||
Resource:
|
||||
type: string
|
||||
example: "/mybucket"
|
||||
RequestId:
|
||||
type: string
|
||||
example: "4442587FB7D0A2F9"
|
||||
|
||||
ListAllMyBucketsResult:
|
||||
type: object
|
||||
xml:
|
||||
name: ListAllMyBucketsResult
|
||||
namespace: http://s3.amazonaws.com/doc/2006-03-01/
|
||||
properties:
|
||||
Buckets:
|
||||
type: object
|
||||
properties:
|
||||
Bucket:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/Bucket'
|
||||
|
||||
Bucket:
|
||||
type: object
|
||||
properties:
|
||||
Name:
|
||||
type: string
|
||||
example: "my-bucket"
|
||||
CreationDate:
|
||||
type: string
|
||||
format: date-time
|
||||
example: "2023-01-15T10:30:00.000Z"
|
||||
|
||||
ListBucketResult:
|
||||
type: object
|
||||
xml:
|
||||
name: ListBucketResult
|
||||
namespace: http://s3.amazonaws.com/doc/2006-03-01/
|
||||
properties:
|
||||
Name:
|
||||
type: string
|
||||
example: "my-bucket"
|
||||
Prefix:
|
||||
type: string
|
||||
example: "photos/"
|
||||
Marker:
|
||||
type: string
|
||||
example: "photos/2023/"
|
||||
MaxKeys:
|
||||
type: integer
|
||||
example: 1000
|
||||
IsTruncated:
|
||||
type: boolean
|
||||
example: false
|
||||
Contents:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/ObjectSummary'
|
||||
|
||||
ObjectSummary:
|
||||
type: object
|
||||
properties:
|
||||
Key:
|
||||
type: string
|
||||
example: "photos/2023/vacation.jpg"
|
||||
LastModified:
|
||||
type: string
|
||||
format: date-time
|
||||
example: "2023-01-15T10:30:00.000Z"
|
||||
ETag:
|
||||
type: string
|
||||
example: "\"9bb58f26192e4ba00f01e2e7b136bbd8\""
|
||||
Size:
|
||||
type: integer
|
||||
example: 1024000
|
||||
StorageClass:
|
||||
type: string
|
||||
example: "STANDARD"
|
||||
|
||||
InitiateMultipartUploadResult:
|
||||
type: object
|
||||
xml:
|
||||
name: InitiateMultipartUploadResult
|
||||
namespace: http://s3.amazonaws.com/doc/2006-03-01/
|
||||
properties:
|
||||
Bucket:
|
||||
type: string
|
||||
example: "my-bucket"
|
||||
Key:
|
||||
type: string
|
||||
example: "large-file.zip"
|
||||
UploadId:
|
||||
type: string
|
||||
example: "upload_12345_abcdef"
|
||||
|
||||
CompleteMultipartUpload:
|
||||
type: object
|
||||
xml:
|
||||
name: CompleteMultipartUpload
|
||||
properties:
|
||||
Part:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
properties:
|
||||
PartNumber:
|
||||
type: integer
|
||||
example: 1
|
||||
ETag:
|
||||
type: string
|
||||
example: "\"9bb58f26192e4ba00f01e2e7b136bbd8\""
|
||||
|
||||
CompleteMultipartUploadResult:
|
||||
type: object
|
||||
xml:
|
||||
name: CompleteMultipartUploadResult
|
||||
namespace: http://s3.amazonaws.com/doc/2006-03-01/
|
||||
properties:
|
||||
Location:
|
||||
type: string
|
||||
example: "/my-bucket/large-file.zip"
|
||||
Bucket:
|
||||
type: string
|
||||
example: "my-bucket"
|
||||
Key:
|
||||
type: string
|
||||
example: "large-file.zip"
|
||||
ETag:
|
||||
type: string
|
||||
example: "\"9bb58f26192e4ba00f01e2e7b136bbd8-5\""
|
||||
|
||||
ListPartsResult:
|
||||
type: object
|
||||
xml:
|
||||
name: ListPartsResult
|
||||
namespace: http://s3.amazonaws.com/doc/2006-03-01/
|
||||
properties:
|
||||
Bucket:
|
||||
type: string
|
||||
example: "my-bucket"
|
||||
Key:
|
||||
type: string
|
||||
example: "large-file.zip"
|
||||
UploadId:
|
||||
type: string
|
||||
example: "upload_12345_abcdef"
|
||||
StorageClass:
|
||||
type: string
|
||||
example: "STANDARD"
|
||||
PartNumberMarker:
|
||||
type: integer
|
||||
example: 0
|
||||
NextPartNumberMarker:
|
||||
type: integer
|
||||
example: 5
|
||||
MaxParts:
|
||||
type: integer
|
||||
example: 1000
|
||||
IsTruncated:
|
||||
type: boolean
|
||||
example: false
|
||||
Part:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/Part'
|
||||
|
||||
Part:
|
||||
type: object
|
||||
properties:
|
||||
PartNumber:
|
||||
type: integer
|
||||
example: 1
|
||||
LastModified:
|
||||
type: string
|
||||
format: date-time
|
||||
example: "2023-01-15T10:30:00.000Z"
|
||||
ETag:
|
||||
type: string
|
||||
example: "\"9bb58f26192e4ba00f01e2e7b136bbd8\""
|
||||
Size:
|
||||
type: integer
|
||||
example: 5242880
|
||||
|
||||
ListMultipartUploadsResult:
|
||||
type: object
|
||||
xml:
|
||||
name: ListMultipartUploadsResult
|
||||
namespace: http://s3.amazonaws.com/doc/2006-03-01/
|
||||
properties:
|
||||
Bucket:
|
||||
type: string
|
||||
example: "my-bucket"
|
||||
KeyMarker:
|
||||
type: string
|
||||
example: ""
|
||||
UploadIdMarker:
|
||||
type: string
|
||||
example: ""
|
||||
NextKeyMarker:
|
||||
type: string
|
||||
example: ""
|
||||
NextUploadIdMarker:
|
||||
type: string
|
||||
example: ""
|
||||
MaxUploads:
|
||||
type: integer
|
||||
example: 1000
|
||||
IsTruncated:
|
||||
type: boolean
|
||||
example: false
|
||||
Upload:
|
||||
type: array
|
||||
|
||||
MultipartUpload:
|
||||
type: object
|
||||
properties:
|
||||
Key:
|
||||
type: string
|
||||
example: "large-file.zip"
|
||||
UploadId:
|
||||
type: string
|
||||
example: "upload_12345_abcdef"
|
||||
Initiated:
|
||||
type: string
|
||||
format: date-time
|
||||
example: "2023-01-15T10:30:00.000Z"
|
||||
StorageClass:
|
||||
type: string
|
||||
example: "STANDARD"
|
||||
|
||||
# Management API Schemas
|
||||
|
||||
ApiError:
|
||||
type: object
|
||||
properties:
|
||||
error:
|
||||
type: string
|
||||
example: "Resource not found"
|
||||
code:
|
||||
type: string
|
||||
example: "NOT_FOUND"
|
||||
message:
|
||||
type: string
|
||||
example: "The requested resource could not be found"
|
||||
|
||||
ApiResponse:
|
||||
type: object
|
||||
properties:
|
||||
message:
|
||||
type: string
|
||||
example: "Operation completed successfully"
|
||||
|
||||
SystemStats:
|
||||
type: object
|
||||
properties:
|
||||
credentials:
|
||||
type: integer
|
||||
example: 5
|
||||
description: Total number of access credentials
|
||||
buckets:
|
||||
type: integer
|
||||
example: 12
|
||||
description: Total number of buckets
|
||||
objects:
|
||||
type: integer
|
||||
example: 1250
|
||||
description: Total number of objects
|
||||
total_storage:
|
||||
type: integer
|
||||
example: 1073741824
|
||||
description: Total storage used in bytes
|
||||
total_storage_human:
|
||||
type: string
|
||||
example: "1.0 GB"
|
||||
description: Human-readable storage size
|
||||
active_multipart_uploads:
|
||||
type: integer
|
||||
example: 3
|
||||
description: Number of active multipart uploads
|
||||
active_presigned_urls:
|
||||
type: integer
|
||||
example: 15
|
||||
description: Number of active presigned URLs
|
||||
|
||||
Credential:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
example: 1
|
||||
access_key:
|
||||
type: string
|
||||
example: "AKIAIOSFODNN7EXAMPLE"
|
||||
secret_key:
|
||||
type: string
|
||||
example: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
|
||||
description: Only returned when creating credential
|
||||
user_name:
|
||||
type: string
|
||||
example: "john-doe"
|
||||
nullable: true
|
||||
is_active:
|
||||
type: boolean
|
||||
example: true
|
||||
created_at:
|
||||
type: string
|
||||
format: date-time
|
||||
example: "2023-01-15T10:30:00Z"
|
||||
|
||||
CredentialSummary:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
example: 1
|
||||
access_key:
|
||||
type: string
|
||||
example: "AKIAIOSFODNN7EXAMPLE"
|
||||
user_name:
|
||||
type: string
|
||||
example: "john-doe"
|
||||
nullable: true
|
||||
is_active:
|
||||
type: boolean
|
||||
example: true
|
||||
created_at:
|
||||
type: string
|
||||
format: date-time
|
||||
example: "2023-01-15T10:30:00Z"
|
||||
bucket_count:
|
||||
type: integer
|
||||
example: 3
|
||||
|
||||
CredentialDetail:
|
||||
allOf:
|
||||
- $ref: '#/CredentialSummary'
|
||||
- type: object
|
||||
properties:
|
||||
buckets:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/BucketSummary'
|
||||
|
||||
CredentialsList:
|
||||
type: object
|
||||
properties:
|
||||
credentials:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/CredentialSummary'
|
||||
|
||||
CreateCredentialRequest:
|
||||
type: object
|
||||
properties:
|
||||
user_name:
|
||||
type: string
|
||||
example: "john-doe"
|
||||
description: Optional user name
|
||||
access_key:
|
||||
type: string
|
||||
example: "AKIAIOSFODNN7EXAMPLE"
|
||||
description: Optional custom access key (auto-generated if not provided)
|
||||
secret_key:
|
||||
type: string
|
||||
example: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
|
||||
description: Optional custom secret key (auto-generated if not provided)
|
||||
|
||||
UpdateCredentialRequest:
|
||||
type: object
|
||||
properties:
|
||||
user_name:
|
||||
type: string
|
||||
example: "john-doe"
|
||||
is_active:
|
||||
type: boolean
|
||||
example: true
|
||||
|
||||
BucketSummary:
|
||||
type: object
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
example: "my-bucket"
|
||||
region:
|
||||
type: string
|
||||
example: "us-east-1"
|
||||
owner:
|
||||
type: string
|
||||
example: "john-doe"
|
||||
created_at:
|
||||
type: string
|
||||
format: date-time
|
||||
example: "2023-01-15T10:30:00Z"
|
||||
object_count:
|
||||
type: integer
|
||||
example: 150
|
||||
total_size:
|
||||
type: integer
|
||||
example: 1073741824
|
||||
total_size_human:
|
||||
type: string
|
||||
example: "1.0 GB"
|
||||
|
||||
BucketDetail:
|
||||
allOf:
|
||||
- $ref: '#/BucketSummary'
|
||||
- type: object
|
||||
properties:
|
||||
objects:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/ObjectInfo'
|
||||
|
||||
BucketsList:
|
||||
type: object
|
||||
properties:
|
||||
buckets:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/BucketSummary'
|
||||
|
||||
CreateBucketRequest:
|
||||
type: object
|
||||
required:
|
||||
- name
|
||||
- owner_id
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
example: "my-new-bucket"
|
||||
pattern: '^[a-z0-9\-\.]+$'
|
||||
owner_id:
|
||||
type: integer
|
||||
example: 1
|
||||
region:
|
||||
type: string
|
||||
example: "us-east-1"
|
||||
default: "us-east-1"
|
||||
|
||||
ObjectInfo:
|
||||
type: object
|
||||
properties:
|
||||
key:
|
||||
type: string
|
||||
example: "photos/vacation.jpg"
|
||||
size:
|
||||
type: integer
|
||||
example: 1024000
|
||||
size_human:
|
||||
type: string
|
||||
example: "1.0 MB"
|
||||
content_type:
|
||||
type: string
|
||||
example: "image/jpeg"
|
||||
etag:
|
||||
type: string
|
||||
example: "9bb58f26192e4ba00f01e2e7b136bbd8"
|
||||
is_multipart:
|
||||
type: boolean
|
||||
example: false
|
||||
created_at:
|
||||
type: string
|
||||
format: date-time
|
||||
example: "2023-01-15T10:30:00Z"
|
||||
|
||||
ObjectDetail:
|
||||
allOf:
|
||||
- $ref: '#/ObjectInfo'
|
||||
- type: object
|
||||
properties:
|
||||
part_count:
|
||||
type: integer
|
||||
example: 0
|
||||
metadata:
|
||||
type: object
|
||||
additionalProperties:
|
||||
type: string
|
||||
example:
|
||||
user-id: "12345"
|
||||
category: "photos"
|
||||
storage_path:
|
||||
type: string
|
||||
example: "my-bucket/objects/ab/cd/abcdef123456..."
|
||||
updated_at:
|
||||
type: string
|
||||
format: date-time
|
||||
example: "2023-01-15T10:30:00Z"
|
||||
|
||||
ObjectsList:
|
||||
type: object
|
||||
properties:
|
||||
objects:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/ObjectInfo'
|
||||
|
||||
DeleteObjectsRequest:
|
||||
type: object
|
||||
required:
|
||||
- keys
|
||||
properties:
|
||||
keys:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
example: ["file1.txt", "file2.txt", "folder/file3.txt"]
|
||||
|
||||
DeleteObjectsResponse:
|
||||
type: object
|
||||
properties:
|
||||
deleted:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
example: ["file1.txt", "file2.txt"]
|
||||
|
||||
MultipartUploadInfo:
|
||||
type: object
|
||||
properties:
|
||||
upload_id:
|
||||
type: string
|
||||
example: "upload_12345_abcdef"
|
||||
object_key:
|
||||
type: string
|
||||
example: "large-file.zip"
|
||||
initiated_by:
|
||||
type: string
|
||||
example: "john-doe"
|
||||
content_type:
|
||||
type: string
|
||||
example: "application/zip"
|
||||
initiated_at:
|
||||
type: string
|
||||
format: date-time
|
||||
example: "2023-01-15T10:30:00Z"
|
||||
part_count:
|
||||
type: integer
|
||||
example: 5
|
||||
total_size:
|
||||
type: integer
|
||||
example: 26214400
|
||||
total_size_human:
|
||||
type: string
|
||||
example: "25.0 MB"
|
||||
|
||||
MultipartUploadsList:
|
||||
type: object
|
||||
properties:
|
||||
uploads:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/MultipartUploadInfo'
|
||||
|
||||
PresignedUrlInfo:
|
||||
type: object
|
||||
properties:
|
||||
bucket_name:
|
||||
type: string
|
||||
example: "my-bucket"
|
||||
object_key:
|
||||
type: string
|
||||
example: "file.txt"
|
||||
method:
|
||||
type: string
|
||||
enum: [GET, PUT, POST, DELETE]
|
||||
example: "GET"
|
||||
access_key:
|
||||
type: string
|
||||
example: "AKIAIOSFODNN7EXAMPLE"
|
||||
expires_at:
|
||||
type: string
|
||||
format: date-time
|
||||
example: "2023-01-15T11:30:00Z"
|
||||
created_at:
|
||||
type: string
|
||||
format: date-time
|
||||
example: "2023-01-15T10:30:00Z"
|
||||
|
||||
PresignedUrlsList:
|
||||
type: object
|
||||
properties:
|
||||
urls:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/PresignedUrlInfo'
|
||||
|
||||
CreatePresignedUrlRequest:
|
||||
type: object
|
||||
required:
|
||||
- bucket_name
|
||||
- object_key
|
||||
- access_key
|
||||
properties:
|
||||
bucket_name:
|
||||
type: string
|
||||
example: "my-bucket"
|
||||
object_key:
|
||||
type: string
|
||||
example: "file.txt"
|
||||
method:
|
||||
type: string
|
||||
enum: [GET, PUT, POST, DELETE]
|
||||
default: "GET"
|
||||
example: "GET"
|
||||
expires_in:
|
||||
type: integer
|
||||
minimum: 1
|
||||
maximum: 604800
|
||||
default: 3600
|
||||
example: 3600
|
||||
description: Expiration time in seconds (max 7 days)
|
||||
access_key:
|
||||
type: string
|
||||
example: "AKIAIOSFODNN7EXAMPLE"
|
||||
|
||||
CreatePresignedUrlResponse:
|
||||
type: object
|
||||
properties:
|
||||
url:
|
||||
type: string
|
||||
example: "/my-bucket/file.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIOSFODNN7EXAMPLE%2F20230115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230115T103000Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=abc123&hash=def456"
|
||||
Reference in New Issue
Block a user