{"openapi":"3.1.0","info":{"title":"Upesi API","version":"1.32.0","description":"API for managing Upesi static mini-apps."},"servers":[{"url":"https://api.upesi.dev/api/v1"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}}},"security":[{"bearerAuth":[]}],"paths":{"/users/me":{"get":{"summary":"Current user","responses":{"200":{"description":"Current authenticated user"}}}},"/apps":{"get":{"summary":"List apps","responses":{"200":{"description":"Apps owned by current user"}}},"post":{"summary":"Create app","responses":{"201":{"description":"Created app"}}}},"/apps/{uuid}":{"get":{"summary":"Show app","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"App details with statistics"}}},"delete":{"summary":"Delete app","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted app"}}}},"/apps/{uuid}/spa":{"post":{"summary":"Enable SPA mode","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"SPA mode enabled"}}},"delete":{"summary":"Disable SPA mode","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"SPA mode disabled"}}}},"/apps/{uuid}/files":{"get":{"summary":"List files","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Files in app"}}},"post":{"summary":"Upload or update file","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated file"},"201":{"description":"Created file"}}}},"/apps/{uuid}/domains":{"get":{"summary":"List custom domains","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Custom domains"}}},"post":{"summary":"Add custom domain","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created custom domain"}}}},"/apps/{uuid}/domains/{id}/status":{"get":{"summary":"Check custom domain DNS status","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Domain DNS verification status"}}}},"/apps/{uuid}/variables":{"get":{"summary":"List environment variables","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Variable metadata. Values are never returned."}}}},"/apps/{uuid}/variables/{name}":{"put":{"summary":"Create or update environment variable","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated variable metadata"},"201":{"description":"Created variable metadata"}}},"delete":{"summary":"Delete environment variable","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted variable"}}}},"/apps/{uuid}/proxy-routes":{"get":{"summary":"List app-specific proxy routes","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Proxy routes for the app"}}},"post":{"summary":"Create or update app-specific proxy route","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated proxy route"},"201":{"description":"Created proxy route"}}}},"/apps/{uuid}/proxy-routes/by-path/{path}":{"delete":{"summary":"Delete app-specific proxy route by path","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}},{"name":"path","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted proxy route"}}}},"/apps/{uuid}/db/status":{"get":{"summary":"Show UpesiDB status","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Database collections and counts"}}}},"/apps/{uuid}/db/collections/{collection}":{"get":{"summary":"Query UpesiDB documents","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}},{"name":"collection","in":"path","required":true,"schema":{"type":"string"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated document result"}}},"post":{"summary":"Create UpesiDB document","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}},{"name":"collection","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created document"}}}},"/apps/{uuid}/db/collections/{collection}/count":{"get":{"summary":"Count UpesiDB documents","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}},{"name":"collection","in":"path","required":true,"schema":{"type":"string"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Document count"}}}},"/apps/{uuid}/db/collections/{collection}/{id}":{"get":{"summary":"Read UpesiDB document","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}},{"name":"collection","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Document"}}},"patch":{"summary":"Merge fields into UpesiDB document","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}},{"name":"collection","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated document"}}},"put":{"summary":"Replace UpesiDB document","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}},{"name":"collection","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Replaced document"}}},"delete":{"summary":"Delete UpesiDB document","parameters":[{"name":"uuid","in":"path","required":true,"schema":{"type":"string"}},{"name":"collection","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Delete confirmation"}}}}}}