{ "openapi": "3.0.3", "info": { "title": "Supabase Storage API", "description": "API documentation for Supabase Storage", "version": "0.0.1" }, "components": { "schemas": { "def-0": { "type": "object", "properties": { "authorization": { "type": "string", "examples": [ "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs" ] } }, "required": ["authorization"], "title": "authSchema" }, "def-1": { "type": "object", "properties": { "statusCode": { "type": "string" }, "error": { "type": "string" }, "message": { "type": "string" } }, "required": ["statusCode", "error", "message"], "title": "errorSchema" } } }, "paths": { "/metrics": { "get": { "responses": { "200": { "description": "Default Response" } } } }, "/upload/resumable/": { "post": { "summary": "Handle POST request for TUS Resumable uploads", "tags": ["object"], "responses": { "200": { "description": "Default Response" } } }, "options": { "summary": "Handle OPTIONS request for TUS Resumable uploads", "tags": ["object"], "description": "Handle OPTIONS request for TUS Resumable uploads", "responses": { "200": { "description": "Default Response" } } } }, "/upload/resumable/{wildcard}": { "post": { "summary": "Handle POST request for TUS Resumable uploads", "tags": ["object"], "responses": { "200": { "description": "Default Response" } } }, "put": { "summary": "Handle PUT request for TUS Resumable uploads", "tags": ["object"], "responses": { "200": { "description": "Default Response" } } }, "patch": { "summary": "Handle PATCH request for TUS Resumable uploads", "tags": ["object"], "responses": { "200": { "description": "Default Response" } } }, "options": { "summary": "Handle OPTIONS request for TUS Resumable uploads", "tags": ["object"], "description": "Handle OPTIONS request for TUS Resumable uploads", "responses": { "200": { "description": "Default Response" } } } }, "/bucket/": { "post": { "summary": "Create a bucket", "tags": ["bucket"], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "examples": ["avatars"] }, "id": { "type": "string", "examples": ["avatars"] }, "public": { "type": "boolean", "examples": [false] }, "file_size_limit": { "anyOf": [ { "type": "integer", "examples": [1000], "nullable": true, "minimum": 0 }, { "type": "string", "examples": ["100MB"], "nullable": true } ] }, "allowed_mime_types": { "type": "array", "nullable": true, "examples": [["image/png", "image/jpg"]], "items": { "type": "string" } } }, "required": ["name"] } } }, "required": true }, "parameters": [ { "schema": { "type": "string" }, "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs", "in": "header", "name": "authorization", "required": true } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "description": "Successful response", "type": "object", "properties": { "name": { "type": "string", "examples": ["avatars"] } }, "required": ["name"] } } } }, "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "description": "Error response", "$ref": "#/components/schemas/def-1" } } } } } }, "get": { "summary": "Gets all buckets", "tags": ["bucket"], "parameters": [ { "schema": { "type": "string" }, "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs", "in": "header", "name": "authorization", "required": true } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "description": "Successful response", "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "string" }, "public": { "type": "boolean" }, "file_size_limit": { "type": ["null", "integer"] }, "allowed_mime_types": { "type": ["null", "array"], "items": { "type": "string" } }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "required": ["id", "name"], "additionalProperties": false, "examples": [ { "id": "bucket2", "name": "bucket2", "public": false, "file_size_limit": 1000000, "allowed_mime_types": ["image/png", "image/jpeg"], "owner": "4d56e902-f0a0-4662-8448-a4d9e643c142", "created_at": "2021-02-17T04:43:32.770206+00:00", "updated_at": "2021-02-17T04:43:32.770206+00:00" } ], "title": "bucketSchema" } }, "example": [ { "id": "avatars", "name": "avatars", "owner": "4d56e902-f0a0-4662-8448-a4d9e643c142", "public": false, "file_size_limit": 1000000, "allowed_mime_types": ["image/png", "image/jpeg"], "created_at": "2021-02-17T04:43:32.770206+00:00", "updated_at": "2021-02-17T04:43:32.770206+00:00" } ] } } }, "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "description": "Error response", "$ref": "#/components/schemas/def-1" } } } } } } }, "/bucket/{bucketId}/empty": { "post": { "summary": "Empty a bucket", "tags": ["bucket"], "parameters": [ { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketId", "required": true }, { "schema": { "type": "string" }, "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs", "in": "header", "name": "authorization", "required": true } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "description": "Successful response", "type": "object", "properties": { "message": { "type": "string", "examples": ["Successfully emptied"] } } } } } }, "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "description": "Error response", "$ref": "#/components/schemas/def-1" } } } } } } }, "/bucket/{bucketId}": { "get": { "summary": "Get details of a bucket", "tags": ["bucket"], "parameters": [ { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketId", "required": true }, { "schema": { "type": "string" }, "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs", "in": "header", "name": "authorization", "required": true } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "description": "Successful response", "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "string" }, "public": { "type": "boolean" }, "file_size_limit": { "type": ["null", "integer"] }, "allowed_mime_types": { "type": ["null", "array"], "items": { "type": "string" } }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "required": ["id", "name"], "additionalProperties": false }, "example": { "id": "bucket2", "name": "bucket2", "public": false, "file_size_limit": 1000000, "allowed_mime_types": ["image/png", "image/jpeg"], "owner": "4d56e902-f0a0-4662-8448-a4d9e643c142", "created_at": "2021-02-17T04:43:32.770206+00:00", "updated_at": "2021-02-17T04:43:32.770206+00:00" } } } }, "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "description": "Error response", "$ref": "#/components/schemas/def-1" } } } } } }, "put": { "summary": "Update properties of a bucket", "tags": ["bucket"], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "public": { "type": "boolean", "examples": [false] }, "file_size_limit": { "anyOf": [ { "type": "integer", "examples": [1000], "nullable": true, "minimum": 0 }, { "type": "string", "examples": ["100MB"], "nullable": true } ] }, "allowed_mime_types": { "type": "array", "nullable": true, "items": { "type": "string", "examples": [["image/png", "image/jpg"]] } } } } } } }, "parameters": [ { "schema": { "type": "string" }, "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs", "in": "header", "name": "authorization", "required": true } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "description": "Successful response", "type": "object", "properties": { "message": { "type": "string", "examples": ["Successfully updated"] } }, "required": ["message"] } } } }, "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "description": "Error response", "$ref": "#/components/schemas/def-1" } } } } } }, "delete": { "summary": "Delete a bucket", "tags": ["bucket"], "parameters": [ { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketId", "required": true }, { "schema": { "type": "string" }, "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs", "in": "header", "name": "authorization", "required": true } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "description": "Successful response", "type": "object", "properties": { "message": { "type": "string", "examples": ["Successfully deleted"] } } } } } }, "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "description": "Error response", "$ref": "#/components/schemas/def-1" } } } } } } }, "/object/{bucketName}/{wildcard}": { "delete": { "summary": "Delete an object", "tags": ["object"], "parameters": [ { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketName", "required": true }, { "schema": { "type": "string" }, "example": "folder/cat.png", "in": "path", "name": "*", "required": true }, { "schema": { "type": "string" }, "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs", "in": "header", "name": "authorization", "required": true } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "description": "Successful response", "type": "object", "properties": { "message": { "type": "string", "examples": ["Successfully deleted"] } } } } } }, "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "description": "Error response", "$ref": "#/components/schemas/def-1" } } } } } }, "get": { "summary": "Get object", "tags": ["deprecated"], "description": "use GET /object/authenticated/{bucketName} instead", "parameters": [ { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketName", "required": true }, { "schema": { "type": "string" }, "example": "folder/cat.png", "in": "path", "name": "*", "required": true }, { "schema": { "type": "string" }, "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs", "in": "header", "name": "authorization", "required": true } ], "responses": { "4XX": { "description": "Default Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/def-1" } } } } } }, "put": { "summary": "Update the object at an existing key", "tags": ["object"], "parameters": [ { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketName", "required": true }, { "schema": { "type": "string" }, "example": "folder/cat.png", "in": "path", "name": "*", "required": true }, { "schema": { "type": "string" }, "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs", "in": "header", "name": "authorization", "required": true } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "description": "Successful response", "type": "object", "properties": { "Id": { "type": "string" }, "Key": { "type": "string", "examples": ["avatars/folder/cat.png"] } }, "required": ["Key"] } } } }, "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "description": "Error response", "$ref": "#/components/schemas/def-1" } } } } } }, "post": { "summary": "Upload a new object", "tags": ["object"], "parameters": [ { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketName", "required": true }, { "schema": { "type": "string" }, "example": "folder/cat.png", "in": "path", "name": "*", "required": true }, { "schema": { "type": "string" }, "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs", "in": "header", "name": "authorization", "required": true } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "description": "Successful response", "type": "object", "properties": { "Id": { "type": "string" }, "Key": { "type": "string", "examples": ["avatars/folder/cat.png"] } }, "required": ["Key"] } } } }, "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "description": "Error response", "$ref": "#/components/schemas/def-1" } } } } } } }, "/object/{bucketName}": { "delete": { "summary": "Delete multiple objects", "tags": ["object"], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "prefixes": { "type": "array", "items": { "type": "string" }, "minItems": 1, "examples": [["folder/cat.png", "folder/morecats.png"]] } }, "required": ["prefixes"] } } }, "required": true }, "parameters": [ { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketName", "required": true }, { "schema": { "type": "string" }, "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs", "in": "header", "name": "authorization", "required": true } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "description": "Successful response", "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "bucket_id": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "version": { "type": "string" }, "id": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "updated_at": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "created_at": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "last_accessed_at": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "metadata": { "anyOf": [ { "type": "object", "additionalProperties": true }, { "type": "null" } ] }, "buckets": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "string" }, "public": { "type": "boolean" }, "file_size_limit": { "type": ["null", "integer"] }, "allowed_mime_types": { "type": ["null", "array"], "items": { "type": "string" } }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "required": ["id", "name"], "additionalProperties": false, "examples": [ { "id": "bucket2", "name": "bucket2", "public": false, "file_size_limit": 1000000, "allowed_mime_types": ["image/png", "image/jpeg"], "owner": "4d56e902-f0a0-4662-8448-a4d9e643c142", "created_at": "2021-02-17T04:43:32.770206+00:00", "updated_at": "2021-02-17T04:43:32.770206+00:00" } ] } }, "required": ["name"], "additionalProperties": false, "examples": [ { "name": "folder/cat.png", "bucket_id": "avatars", "owner": "317eadce-631a-4429-a0bb-f19a7a517b4a", "id": "eaa8bdb5-2e00-4767-b5a9-d2502efe2196", "updated_at": "2021-04-06T16:30:35.394674+00:00", "created_at": "2021-04-06T16:30:35.394674+00:00", "last_accessed_at": "2021-04-06T16:30:35.394674+00:00", "metadata": { "size": 1234 } } ], "title": "objectSchema" } } } } }, "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "description": "Error response", "$ref": "#/components/schemas/def-1" } } } } } } }, "/object/authenticated/{bucketName}/{wildcard}": { "get": { "summary": "Retrieve an object", "tags": ["object"], "parameters": [ { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketName", "required": true }, { "schema": { "type": "string" }, "example": "folder/cat.png", "in": "path", "name": "*", "required": true }, { "schema": { "type": "string" }, "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs", "in": "header", "name": "authorization", "required": true } ], "responses": { "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/def-1", "description": "Error response" } } } } } } }, "/object/upload/sign/{bucketName}/{wildcard}": { "post": { "summary": "Generate a presigned url to upload an object", "tags": ["object"], "parameters": [ { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketName", "required": true }, { "schema": { "type": "string" }, "example": "folder/cat.png", "in": "path", "name": "*", "required": true }, { "schema": { "type": "string" }, "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs", "in": "header", "name": "authorization", "required": true } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "description": "Successful response", "type": "object", "properties": { "url": { "type": "string", "examples": [ "/object/sign/upload/avatars/folder/cat.png?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJhdmF0YXJzL2ZvbGRlci9jYXQucG5nIiwiaWF0IjoxNjE3NzI2MjczLCJleHAiOjE2MTc3MjcyNzN9.s7Gt8ME80iREVxPhH01ZNv8oUn4XtaWsmiQ5csiUHn4" ] } }, "required": ["url"] } } } }, "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "description": "Error response", "$ref": "#/components/schemas/def-1" } } } } } }, "put": { "summary": "Uploads an object via a presigned URL", "tags": ["object"], "parameters": [ { "schema": { "type": "string" }, "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJidWNrZXQyL3B1YmxpYy9zYWRjYXQtdXBsb2FkMjMucG5nIiwiaWF0IjoxNjE3NzI2MjczLCJleHAiOjE2MTc3MjcyNzN9.uBQcXzuvXxfw-9WgzWMBfE_nR3VOgpvfZe032sfLSSk", "in": "query", "name": "token", "required": true }, { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketName", "required": true }, { "schema": { "type": "string" }, "example": "folder/cat.png", "in": "path", "name": "*", "required": true } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "description": "Successful response", "type": "object", "properties": { "Key": { "type": "string", "examples": ["avatars/folder/cat.png"] } }, "required": ["Key"] } } } }, "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/def-1", "description": "Error response" } } } } } } }, "/object/sign/{bucketName}/{wildcard}": { "post": { "summary": "Generate a presigned url to retrieve an object", "tags": ["object"], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "expiresIn": { "type": "integer", "minimum": 1, "examples": [60000] }, "transform": { "type": "object", "properties": { "height": { "type": "integer", "examples": [100], "minimum": 0 }, "width": { "type": "integer", "examples": [100], "minimum": 0 }, "resize": { "type": "string", "enum": ["cover", "contain", "fill"] }, "format": { "type": "string", "enum": ["origin", "avif"] }, "quality": { "type": "integer", "minimum": 20, "maximum": 100 } } } }, "required": ["expiresIn"] } } }, "required": true }, "parameters": [ { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketName", "required": true }, { "schema": { "type": "string" }, "example": "folder/cat.png", "in": "path", "name": "*", "required": true }, { "schema": { "type": "string" }, "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs", "in": "header", "name": "authorization", "required": true } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "description": "Successful response", "type": "object", "properties": { "signedURL": { "type": "string", "examples": [ "/object/sign/avatars/folder/cat.png?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJhdmF0YXJzL2ZvbGRlci9jYXQucG5nIiwiaWF0IjoxNjE3NzI2MjczLCJleHAiOjE2MTc3MjcyNzN9.s7Gt8ME80iREVxPhH01ZNv8oUn4XtaWsmiQ5csiUHn4" ] } }, "required": ["signedURL"] } } } }, "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "description": "Error response", "$ref": "#/components/schemas/def-1" } } } } } }, "get": { "summary": "Retrieve an object via a presigned URL", "tags": ["object"], "parameters": [ { "schema": { "type": "string" }, "examples": { "filename.jpg": { "value": "filename.jpg" }, "example2": { "value": null } }, "in": "query", "name": "download", "required": false }, { "schema": { "type": "string" }, "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJidWNrZXQyL3B1YmxpYy9zYWRjYXQtdXBsb2FkMjMucG5nIiwiaWF0IjoxNjE3NzI2MjczLCJleHAiOjE2MTc3MjcyNzN9.uBQcXzuvXxfw-9WgzWMBfE_nR3VOgpvfZe032sfLSSk", "in": "query", "name": "token", "required": true }, { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketName", "required": true }, { "schema": { "type": "string" }, "example": "folder/cat.png", "in": "path", "name": "*", "required": true } ], "responses": { "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/def-1", "description": "Error response" } } } } } } }, "/object/sign/{bucketName}": { "post": { "summary": "Generate presigned urls to retrieve objects", "tags": ["object"], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "expiresIn": { "type": "integer", "minimum": 1, "examples": [60000] }, "paths": { "type": "array", "items": { "type": "string" }, "minItems": 1, "examples": [["folder/cat.png", "folder/morecats.png"]] } }, "required": ["expiresIn", "paths"] } } }, "required": true }, "parameters": [ { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketName", "required": true }, { "schema": { "type": "string" }, "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs", "in": "header", "name": "authorization", "required": true } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "description": "Successful response", "type": "array", "items": { "type": "object", "properties": { "error": { "error": ["string", "null"], "examples": [ "Either the object does not exist or you do not have access to it" ] }, "path": { "type": "string", "examples": ["folder/cat.png"] }, "signedURL": { "type": ["null", "string"], "examples": [ "/object/sign/avatars/folder/cat.png?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJhdmF0YXJzL2ZvbGRlci9jYXQucG5nIiwiaWF0IjoxNjE3NzI2MjczLCJleHAiOjE2MTc3MjcyNzN9.s7Gt8ME80iREVxPhH01ZNv8oUn4XtaWsmiQ5csiUHn4" ] } }, "required": ["error", "path", "signedURL"] } } } } }, "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "description": "Error response", "$ref": "#/components/schemas/def-1" } } } } } } }, "/object/move": { "post": { "summary": "Moves an object", "tags": ["object"], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "bucketId": { "type": "string", "examples": ["avatars"] }, "sourceKey": { "type": "string", "examples": ["folder/cat.png"] }, "destinationKey": { "type": "string", "examples": ["folder/newcat.png"] } }, "required": ["bucketId", "sourceKey", "destinationKey"] } } }, "required": true }, "parameters": [ { "schema": { "type": "string" }, "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs", "in": "header", "name": "authorization", "required": true } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "description": "Successful response", "type": "object", "properties": { "message": { "type": "string", "examples": ["Successfully moved"] } }, "required": ["message"] } } } }, "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "description": "Error response", "$ref": "#/components/schemas/def-1" } } } } } } }, "/object/list/{bucketName}": { "post": { "summary": "Search for objects under a prefix", "tags": ["object"], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "prefix": { "type": "string", "examples": ["folder/subfolder"] }, "limit": { "type": "integer", "minimum": 1, "examples": [10] }, "offset": { "type": "integer", "minimum": 0, "examples": [0] }, "sortBy": { "type": "object", "properties": { "column": { "type": "string", "enum": ["name", "updated_at", "created_at", "last_accessed_at"] }, "order": { "type": "string", "enum": ["asc", "desc"] } }, "required": ["column"] }, "search": { "type": "string" } }, "required": ["prefix"] } } }, "required": true }, "parameters": [ { "schema": { "type": "string" }, "in": "path", "name": "bucketName", "required": true }, { "schema": { "type": "string" }, "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs", "in": "header", "name": "authorization", "required": true } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "description": "Successful response", "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "bucket_id": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "version": { "type": "string" }, "id": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "updated_at": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "created_at": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "last_accessed_at": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "metadata": { "anyOf": [ { "type": "object", "additionalProperties": true }, { "type": "null" } ] }, "buckets": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "string" }, "public": { "type": "boolean" }, "file_size_limit": { "type": ["null", "integer"] }, "allowed_mime_types": { "type": ["null", "array"], "items": { "type": "string" } }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "required": ["id", "name"], "additionalProperties": false, "examples": [ { "id": "bucket2", "name": "bucket2", "public": false, "file_size_limit": 1000000, "allowed_mime_types": ["image/png", "image/jpeg"], "owner": "4d56e902-f0a0-4662-8448-a4d9e643c142", "created_at": "2021-02-17T04:43:32.770206+00:00", "updated_at": "2021-02-17T04:43:32.770206+00:00" } ] } }, "required": ["name"], "additionalProperties": false, "examples": [ { "name": "folder/cat.png", "bucket_id": "avatars", "owner": "317eadce-631a-4429-a0bb-f19a7a517b4a", "id": "eaa8bdb5-2e00-4767-b5a9-d2502efe2196", "updated_at": "2021-04-06T16:30:35.394674+00:00", "created_at": "2021-04-06T16:30:35.394674+00:00", "last_accessed_at": "2021-04-06T16:30:35.394674+00:00", "metadata": { "size": 1234 } } ] } } } } }, "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "description": "Error response", "$ref": "#/components/schemas/def-1" } } } } } } }, "/object/info/authenticated/{bucketName}/{wildcard}": { "get": { "summary": "Retrieve object info", "tags": ["object"], "parameters": [ { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketName", "required": true }, { "schema": { "type": "string" }, "example": "folder/cat.png", "in": "path", "name": "*", "required": true }, { "schema": { "type": "string" }, "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs", "in": "header", "name": "authorization", "required": true } ], "responses": { "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/def-1", "description": "Error response" } } } } } } }, "/object/info/{bucketName}/{wildcard}": { "get": { "summary": "Retrieve object info", "tags": ["deprecated"], "description": "use HEAD /object/authenticated/{bucketName} instead", "parameters": [ { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketName", "required": true }, { "schema": { "type": "string" }, "example": "folder/cat.png", "in": "path", "name": "*", "required": true }, { "schema": { "type": "string" }, "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs", "in": "header", "name": "authorization", "required": true } ], "responses": { "4XX": { "description": "Default Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/def-1" } } } } } } }, "/object/copy": { "post": { "summary": "Copies an object", "tags": ["object"], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "sourceKey": { "type": "string", "examples": ["folder/source.png"] }, "bucketId": { "type": "string", "examples": ["avatars"] }, "destinationKey": { "type": "string", "examples": ["folder/destination.png"] } }, "required": ["sourceKey", "bucketId", "destinationKey"] } } }, "required": true }, "parameters": [ { "schema": { "type": "string" }, "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24ifQ.625_WdcF3KHqz5amU0x2X5WWHP-OEs_4qj0ssLNHzTs", "in": "header", "name": "authorization", "required": true } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "description": "Successful response", "type": "object", "properties": { "Key": { "type": "string", "examples": ["folder/destination.png"] } }, "required": ["Key"] } } } }, "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "description": "Error response", "$ref": "#/components/schemas/def-1" } } } } } } }, "/object/public/{bucketName}/{wildcard}": { "get": { "summary": "Retrieve an object from a public bucket", "tags": ["object"], "parameters": [ { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketName", "required": true }, { "schema": { "type": "string" }, "example": "folder/cat.png", "in": "path", "name": "*", "required": true } ], "responses": { "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/def-1", "description": "Error response" } } } } } } }, "/object/info/public/{bucketName}/{wildcard}": { "get": { "summary": "Get object info", "tags": ["object"], "description": "returns object info", "parameters": [ { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketName", "required": true }, { "schema": { "type": "string" }, "example": "folder/cat.png", "in": "path", "name": "*", "required": true } ], "responses": { "4XX": { "description": "Default Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/def-1" } } } } } } }, "/render/image/authenticated/{bucketName}/{wildcard}": { "get": { "summary": "Render an authenticated image with the given transformations", "tags": ["object"], "parameters": [ { "schema": { "type": "integer", "minimum": 0 }, "example": 100, "in": "query", "name": "height", "required": false }, { "schema": { "type": "integer", "minimum": 0 }, "example": 100, "in": "query", "name": "width", "required": false }, { "schema": { "type": "string", "enum": ["cover", "contain", "fill"] }, "in": "query", "name": "resize", "required": false }, { "schema": { "type": "string", "enum": ["origin", "avif"] }, "in": "query", "name": "format", "required": false }, { "schema": { "type": "integer", "minimum": 20, "maximum": 100 }, "in": "query", "name": "quality", "required": false }, { "schema": { "type": "string" }, "example": "filename.png", "in": "query", "name": "download", "required": false }, { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketName", "required": true }, { "schema": { "type": "string" }, "example": "folder/cat.png", "in": "path", "name": "*", "required": true } ], "responses": { "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/def-1", "description": "Error response" } } } } } } }, "/render/image/sign/{bucketName}/{wildcard}": { "get": { "summary": "Render an authenticated image with the given transformations", "tags": ["object"], "parameters": [ { "schema": { "type": "string" }, "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJidWNrZXQyL3B1YmxpYy9zYWRjYXQtdXBsb2FkMjMucG5nIiwiaWF0IjoxNjE3NzI2MjczLCJleHAiOjE2MTc3MjcyNzN9.uBQcXzuvXxfw-9WgzWMBfE_nR3VOgpvfZe032sfLSSk", "in": "query", "name": "token", "required": true }, { "schema": { "type": "string" }, "example": "filename.png", "in": "query", "name": "download", "required": false }, { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketName", "required": true }, { "schema": { "type": "string" }, "example": "folder/cat.png", "in": "path", "name": "*", "required": true } ], "responses": { "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/def-1", "description": "Error response" } } } } } } }, "/render/image/public/{bucketName}/{wildcard}": { "get": { "summary": "Render a public image with the given transformations", "tags": ["object"], "parameters": [ { "schema": { "type": "integer", "minimum": 0 }, "example": 100, "in": "query", "name": "height", "required": false }, { "schema": { "type": "integer", "minimum": 0 }, "example": 100, "in": "query", "name": "width", "required": false }, { "schema": { "type": "string", "enum": ["cover", "contain", "fill"] }, "in": "query", "name": "resize", "required": false }, { "schema": { "type": "string", "enum": ["origin", "avif"] }, "in": "query", "name": "format", "required": false }, { "schema": { "type": "integer", "minimum": 20, "maximum": 100 }, "in": "query", "name": "quality", "required": false }, { "schema": { "type": "string" }, "example": "filename.png", "in": "query", "name": "download", "required": false }, { "schema": { "type": "string" }, "example": "avatars", "in": "path", "name": "bucketName", "required": true }, { "schema": { "type": "string" }, "example": "folder/cat.png", "in": "path", "name": "*", "required": true } ], "responses": { "4XX": { "description": "Error response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/def-1", "description": "Error response" } } } } } } } }, "tags": [ { "name": "object", "description": "Object end-points" }, { "name": "bucket", "description": "Bucket end-points" }, { "name": "deprecated", "description": "Deprecated end-points" } ] }