633 lines
13 KiB
YAML
633 lines
13 KiB
YAML
|
|
# 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"
|