{"openapi":"3.1.0","info":{"title":"Picem API","description":"Pic 'em! Upload, process and deliver media.","version":"0.1.0"},"paths":{"/auth/login":{"post":{"tags":["Console"],"summary":"Login","operationId":"login_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Login"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/logout":{"post":{"tags":["Console"],"summary":"Logout","operationId":"logout_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/auth/session":{"get":{"tags":["Console"],"summary":"Session","operationId":"session_auth_session_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/health/live":{"get":{"tags":["Health"],"summary":"Live","operationId":"live_health_live_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/ready":{"get":{"tags":["Health"],"summary":"Ready","operationId":"ready_health_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/capabilities":{"get":{"tags":["Assets"],"summary":"Capabilities","operationId":"capabilities_v1_capabilities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/assets":{"post":{"tags":["Assets"],"summary":"Upload","operationId":"upload_v1_assets_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"idempotency-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_v1_assets_post"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Assets"],"summary":"Assets","operationId":"assets_v1_assets_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App Id"}},{"name":"owner_ref","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Ref"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/upload-sessions":{"post":{"tags":["Uploads"],"summary":"New Upload","operationId":"new_upload_v1_upload_sessions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"idempotency-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/upload-sessions/{upload_id}":{"get":{"tags":["Uploads"],"summary":"Get Upload","operationId":"get_upload_v1_upload_sessions__upload_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"upload_id","in":"path","required":true,"schema":{"type":"string","title":"Upload Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Uploads"],"summary":"Cancel","operationId":"cancel_v1_upload_sessions__upload_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"upload_id","in":"path","required":true,"schema":{"type":"string","title":"Upload Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/upload-sessions/{upload_id}/complete":{"post":{"tags":["Uploads"],"summary":"Complete","operationId":"complete_v1_upload_sessions__upload_id__complete_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"upload_id","in":"path","required":true,"schema":{"type":"string","title":"Upload Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/assets/{asset_id}":{"get":{"tags":["Assets"],"summary":"Get Asset","operationId":"get_asset_v1_assets__asset_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","title":"Asset Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Assets"],"summary":"Rename","operationId":"rename_v1_assets__asset_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","title":"Asset Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Rename"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Assets"],"summary":"Delete","operationId":"delete_v1_assets__asset_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","title":"Asset Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/assets/{asset_id}/access":{"post":{"tags":["Assets"],"summary":"Access","operationId":"access_v1_assets__asset_id__access_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","title":"Asset Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Access"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/assets/{asset_id}/retry":{"post":{"tags":["Assets"],"summary":"Retry","operationId":"retry_v1_assets__asset_id__retry_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","title":"Asset Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}":{"get":{"tags":["Jobs"],"summary":"Job","operationId":"job_v1_jobs__job_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/usage":{"get":{"tags":["Apps"],"summary":"Usage","operationId":"usage_v1_usage_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/legacy/{legacy_hash}":{"get":{"tags":["Migration"],"summary":"Legacy","operationId":"legacy_v1_legacy__legacy_hash__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"legacy_hash","in":"path","required":true,"schema":{"type":"string","title":"Legacy Hash"}},{"name":"app_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/apps":{"get":{"tags":["Admin"],"summary":"List Apps","operationId":"list_apps_v1_admin_apps_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["Admin"],"summary":"Create App","operationId":"create_app_v1_admin_apps_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/admin/apps/{app_id}":{"patch":{"tags":["Admin"],"summary":"Edit App","operationId":"edit_app_v1_admin_apps__app_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppEdit"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/apps/{app_id}/keys":{"post":{"tags":["Admin"],"summary":"Create Key","operationId":"create_key_v1_admin_apps__app_id__keys_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"List Keys","operationId":"list_keys_v1_admin_apps__app_id__keys_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/apps/{app_id}/keys/{key_id}":{"delete":{"tags":["Admin"],"summary":"Revoke","operationId":"revoke_v1_admin_apps__app_id__keys__key_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}},{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/jobs":{"get":{"tags":["Admin"],"summary":"Jobs","operationId":"jobs_v1_admin_jobs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/admin/audit-events":{"get":{"tags":["Admin"],"summary":"Events","operationId":"events_v1_admin_audit_events_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}}},"components":{"schemas":{"Access":{"properties":{"variant":{"type":"string","maxLength":40,"title":"Variant","default":"original"},"expires_in":{"type":"integer","maximum":900.0,"minimum":30.0,"title":"Expires In","default":300}},"type":"object","title":"Access"},"AppCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"quota_bytes":{"type":"integer","maximum":1000000000000.0,"exclusiveMinimum":0.0,"title":"Quota Bytes","default":10000000000}},"type":"object","required":["name"],"title":"AppCreate"},"AppEdit":{"properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"quota_bytes":{"anyOf":[{"type":"integer","maximum":1000000000000.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Quota Bytes"}},"type":"object","title":"AppEdit"},"Body_upload_v1_assets_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"purpose":{"type":"string","enum":["avatar","image","attachment","video"],"title":"Purpose","default":"image"},"visibility":{"type":"string","enum":["public","private"],"title":"Visibility","default":"private"},"owner_ref":{"type":"string","maxLength":160,"title":"Owner Ref","default":""},"app_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App Id"}},"type":"object","required":["file"],"title":"Body_upload_v1_assets_post"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"KeyCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","default":"App integration"},"scopes":{"items":{"type":"string","enum":["upload","read","access","delete","write"]},"type":"array","title":"Scopes","default":["upload","read","access"]}},"type":"object","title":"KeyCreate"},"Login":{"properties":{"password":{"type":"string","maxLength":200,"title":"Password"}},"type":"object","required":["password"],"title":"Login"},"Rename":{"properties":{"name":{"type":"string","maxLength":250,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"Rename"},"UploadRequest":{"properties":{"app_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App Id"},"name":{"type":"string","maxLength":250,"minLength":1,"title":"Name"},"size_bytes":{"type":"integer","maximum":1000000000.0,"exclusiveMinimum":0.0,"title":"Size Bytes"},"purpose":{"type":"string","enum":["avatar","image","attachment","video"],"title":"Purpose","default":"image"},"visibility":{"type":"string","enum":["private","public"],"title":"Visibility","default":"private"},"owner_ref":{"type":"string","maxLength":160,"title":"Owner Ref","default":""}},"type":"object","required":["name","size_bytes"],"title":"UploadRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}