openapi: 3.0.3 info: title: Filebase S3-Compatible API description: >- The Filebase S3-Compatible API provides standard AWS S3 protocol support for bucket and object management. Developers can use any existing S3 SDK, CLI tool, or framework with endpoint s3.filebase.io and region us-east-1. Authentication uses AWS Signature Version 4 (AWS4-HMAC-SHA256) with Filebase access key and secret key pairs. Supported operations include bucket creation and deletion, object upload (including multipart), copy, delete, and listing. Objects stored in IPFS-backed buckets are automatically pinned with 3x geo-redundant replication. version: "2006-03-01" contact: name: Filebase Support url: https://filebase.com/ email: support@filebase.com termsOfService: https://filebase.com/terms/ license: name: Proprietary url: https://filebase.com/terms/ externalDocs: description: Filebase S3-Compatible API Documentation url: https://filebase.com/docs/ servers: - url: https://s3.filebase.io description: Filebase S3-Compatible Endpoint - url: https://{bucket}.s3.filebase.io description: Filebase S3 Virtual-Hosted-Style Endpoint variables: bucket: default: my-bucket description: Bucket name security: - AWS4Auth: [] paths: /: get: operationId: listBuckets summary: List all buckets description: >- Returns a list of all buckets owned by the authenticated user. Equivalent to AWS S3 ListBuckets. tags: - Buckets responses: "200": description: Successfully listed buckets content: application/xml: schema: $ref: "#/components/schemas/ListAllMyBucketsResult" "403": $ref: "#/components/responses/Forbidden" /{bucket}: parameters: - $ref: "#/components/parameters/bucket" put: operationId: createBucket summary: Create a bucket description: >- Creates a new S3-compatible bucket. Bucket names must be unique across all Filebase accounts. IPFS-backed buckets automatically pin all objects with 3x geo-redundant replication. tags: - Buckets responses: "200": description: Bucket created successfully "400": $ref: "#/components/responses/BadRequest" "403": $ref: "#/components/responses/Forbidden" "409": $ref: "#/components/responses/Conflict" delete: operationId: deleteBucket summary: Delete a bucket description: >- Deletes an empty bucket. The bucket must be empty before it can be deleted. tags: - Buckets responses: "204": description: Bucket deleted successfully "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "409": $ref: "#/components/responses/Conflict" head: operationId: headBucket summary: Check bucket existence and access description: >- Returns metadata about the bucket without returning the bucket's contents. tags: - Buckets responses: "200": description: Bucket exists and is accessible "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" get: operationId: listObjects summary: List objects in a bucket description: >- Returns some or all (up to 1,000) of the objects in a bucket. Use list-type=2 for ListObjectsV2. tags: - Objects parameters: - name: prefix in: query description: Limits the response to keys that begin with the specified prefix schema: type: string - name: delimiter in: query description: A delimiter is a character you use to group keys schema: type: string - name: marker in: query description: Specifies the key to start with when listing objects schema: type: string - name: max-keys in: query description: Sets the maximum number of keys returned (default 1000) schema: type: integer maximum: 1000 default: 1000 - name: list-type in: query description: Version 2 of list objects request (set to 2) schema: type: integer enum: [2] - name: continuation-token in: query description: Indicates Amazon S3 that the list is being continued with a token (V2) schema: type: string responses: "200": description: Successfully listed objects content: application/xml: schema: $ref: "#/components/schemas/ListBucketResult" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /{bucket}/{key}: parameters: - $ref: "#/components/parameters/bucket" - $ref: "#/components/parameters/key" put: operationId: putObject summary: Upload an object description: >- Adds an object to a bucket. Objects are automatically pinned to IPFS for IPFS-backed buckets and receive 3x geo-redundant replication. The CID is returned in the x-amz-meta-cid response header. tags: - Objects parameters: - name: x-amz-meta-cid in: header description: IPFS CID of the uploaded object (response header) schema: type: string requestBody: required: true content: application/octet-stream: schema: type: string format: binary responses: "200": description: Object uploaded successfully headers: ETag: description: Entity tag (MD5 hash) of the uploaded object schema: type: string x-amz-meta-cid: description: IPFS CID of the uploaded object schema: type: string "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" get: operationId: getObject summary: Download an object description: >- Retrieves an object from Filebase. Returns the object data. tags: - Objects parameters: - name: Range in: header description: Downloads the specified range bytes of an object schema: type: string responses: "200": description: Object content content: application/octet-stream: schema: type: string format: binary headers: Content-Type: schema: type: string ETag: schema: type: string x-amz-meta-cid: description: IPFS CID of the object schema: type: string "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" head: operationId: headObject summary: Get object metadata description: >- Retrieves metadata from an object without returning the object itself. tags: - Objects responses: "200": description: Object metadata headers: Content-Type: schema: type: string Content-Length: schema: type: integer ETag: schema: type: string x-amz-meta-cid: description: IPFS CID of the object schema: type: string "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" delete: operationId: deleteObject summary: Delete an object description: >- Removes an object from a bucket. tags: - Objects responses: "204": description: Object deleted successfully "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" copy: operationId: copyObject summary: Copy an object description: >- Creates a copy of an object that is already stored in Filebase. tags: - Objects parameters: - name: x-amz-copy-source in: header required: true description: Specifies the source bucket and key name (bucket/key) schema: type: string responses: "200": description: Object copied successfully content: application/xml: schema: $ref: "#/components/schemas/CopyObjectResult" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" /{bucket}/{key}?uploads: parameters: - $ref: "#/components/parameters/bucket" - $ref: "#/components/parameters/key" post: operationId: createMultipartUpload summary: Initiate multipart upload description: >- Initiates a multipart upload and returns an upload ID. Use for large file uploads by splitting them into parts. tags: - Multipart Upload responses: "200": description: Multipart upload initiated content: application/xml: schema: $ref: "#/components/schemas/InitiateMultipartUploadResult" "403": $ref: "#/components/responses/Forbidden" components: securitySchemes: AWS4Auth: type: apiKey in: header name: Authorization description: >- AWS Signature Version 4 (AWS4-HMAC-SHA256) with Filebase access key and secret key. Use endpoint s3.filebase.io and region us-east-1. parameters: bucket: name: bucket in: path required: true description: Name of the bucket schema: type: string key: name: key in: path required: true description: Object key (file path within the bucket) schema: type: string schemas: ListAllMyBucketsResult: type: object xml: name: ListAllMyBucketsResult properties: Owner: type: object properties: ID: type: string DisplayName: type: string Buckets: type: array items: type: object properties: Name: type: string CreationDate: type: string format: date-time ListBucketResult: type: object xml: name: ListBucketResult properties: Name: type: string description: Bucket name Prefix: type: string description: Limits the response to keys beginning with the specified prefix MaxKeys: type: integer description: Maximum number of keys returned IsTruncated: type: boolean description: Whether the results are truncated Contents: type: array items: type: object properties: Key: type: string LastModified: type: string format: date-time ETag: type: string Size: type: integer format: int64 StorageClass: type: string CopyObjectResult: type: object xml: name: CopyObjectResult properties: LastModified: type: string format: date-time ETag: type: string InitiateMultipartUploadResult: type: object xml: name: InitiateMultipartUploadResult properties: Bucket: type: string Key: type: string UploadId: type: string Error: type: object xml: name: Error properties: Code: type: string Message: type: string Resource: type: string RequestId: type: string responses: BadRequest: description: Bad request content: application/xml: schema: $ref: "#/components/schemas/Error" Forbidden: description: Access denied content: application/xml: schema: $ref: "#/components/schemas/Error" NotFound: description: Resource not found content: application/xml: schema: $ref: "#/components/schemas/Error" Conflict: description: Conflict (bucket already exists or not empty) content: application/xml: schema: $ref: "#/components/schemas/Error" tags: - name: Buckets description: Bucket creation, deletion, and listing - name: Objects description: Object upload, download, copy, delete, and metadata - name: Multipart Upload description: Large file multipart upload operations