{"name":"EnvVault API","version":"1.0.0","base_path":"/api/v1","description":"EnvVault manages encrypted variables, passwords, API keys, browser session tokens, short-lived AI session tokens, users, and browser-extension actions.","auth":{"headers":["Authorization: Bearer <token>","X-API-Key: <token>"],"roles":{"read":"List and retrieve data allowed by the token.","write":"Read plus create, update, and delete variables, cookies, and actions.","admin":"Write plus API key and session-token management for the account.","site_admin":"Admin plus user approval and management."},"token_types":{"api_key":"Long-lived account key.","session_token":"Short-lived token, optionally scoped to applications.","web_session":"Dashboard login token created by password or SSO login."}},"capabilities":["AI Setup","API Keys","Actions","Applications","Authentication","Cookies","Personal API Keys","SSO","Sessions","System","Users","Variables"],"endpoints":[{"id":"health.get","group":"System","method":"GET","path":"/api/v1/health","auth":"none","summary":"Health check.","query_params":[],"body":null},{"id":"variables.list","group":"Variables","method":"GET","path":"/api/v1/variables/","auth":"read","summary":"List variable metadata. Values are not returned.","query_params":["application","environment","type"],"body":null},{"id":"variables.get","group":"Variables","method":"GET","path":"/api/v1/variables/{name}","auth":"read","summary":"Retrieve one decrypted variable value.","query_params":["application","environment"],"body":null},{"id":"variables.create","group":"Variables","method":"POST","path":"/api/v1/variables/","auth":"write","summary":"Create or upsert a variable.","query_params":[],"body":{"required":["name","value"],"optional":["application","environment","description","type","expires_at","metadata"]}},{"id":"variables.update","group":"Variables","method":"PATCH","path":"/api/v1/variables/{name}","auth":"write","summary":"Update value, description, type, expiry, metadata, name, application, or environment.","query_params":["application","environment"],"body":{"optional":["value","description","type","expires_at","metadata","new_name","new_application","environment"]}},{"id":"variables.bulk","group":"Variables","method":"POST","path":"/api/v1/variables/bulk","auth":"read","summary":"Retrieve multiple decrypted variable values by name.","query_params":[],"body":{"required":["names"],"optional":["application","environment"]}},{"id":"variables.delete","group":"Variables","method":"DELETE","path":"/api/v1/variables/{name}","auth":"write","summary":"Delete one variable.","query_params":["application","environment"],"body":null},{"id":"applications.list","group":"Applications","method":"GET","path":"/api/v1/applications/","auth":"read","summary":"List applications plus APP_DESCRIPTION and GITHUB_URL metadata when present.","query_params":[],"body":null},{"id":"cookies.sync","group":"Cookies","method":"POST","path":"/api/v1/cookies/sync","auth":"write","summary":"Bulk upsert browser cookies as session_token variables for an application.","query_params":[],"body":{"required":["application","cookies"],"optional":[]}},{"id":"cookies.get","group":"Cookies","method":"GET","path":"/api/v1/cookies/{application}","auth":"read","summary":"Get decrypted session_token cookies for an application.","query_params":[],"body":null},{"id":"cookies.delete","group":"Cookies","method":"DELETE","path":"/api/v1/cookies/{application}","auth":"write","summary":"Delete all session_token cookies for an application.","query_params":[],"body":null},{"id":"actions.create","group":"Actions","method":"POST","path":"/api/v1/actions/","auth":"write","summary":"Create an action for the browser extension to execute.","query_params":[],"body":{"required":["application","action_type","payload"],"optional":["expires_at"]}},{"id":"actions.pending","group":"Actions","method":"GET","path":"/api/v1/actions/pending","auth":"read","summary":"List pending extension actions.","query_params":["application"],"body":null},{"id":"actions.get","group":"Actions","method":"GET","path":"/api/v1/actions/{id}","auth":"read","summary":"Get one extension action.","query_params":[],"body":null},{"id":"actions.complete","group":"Actions","method":"POST","path":"/api/v1/actions/{id}/complete","auth":"write","summary":"Mark an action completed or failed.","query_params":[],"body":{"required":[],"optional":["success","result"]}},{"id":"actions.list","group":"Actions","method":"GET","path":"/api/v1/actions/","auth":"read","summary":"List actions with optional filters.","query_params":["application","status","limit"],"body":null},{"id":"api_keys.list","group":"API Keys","method":"GET","path":"/api/v1/api-keys/","auth":"admin","summary":"List account API keys. Application-scoped session tokens are blocked.","query_params":[],"body":null},{"id":"api_keys.create","group":"API Keys","method":"POST","path":"/api/v1/api-keys/","auth":"admin","summary":"Create a new API key. Raw key is shown once. Application-scoped session tokens are blocked.","query_params":[],"body":{"required":["name"],"optional":["role"]}},{"id":"api_keys.revoke","group":"API Keys","method":"DELETE","path":"/api/v1/api-keys/{id}","auth":"admin","summary":"Revoke an API key. Application-scoped session tokens are blocked.","query_params":[],"body":null},{"id":"sessions.create","group":"Sessions","method":"POST","path":"/api/v1/sessions/","auth":"admin","summary":"Create or initiate creation of a short-lived session token.","query_params":[],"body":{"required":[],"optional":["ttl_seconds","role","applications","description","skip_2fa"]}},{"id":"sessions.verify","group":"Sessions","method":"POST","path":"/api/v1/sessions/verify","auth":"none","summary":"Verify an emailed code and return the raw session token.","query_params":[],"body":{"required":["verification_id","code"],"optional":[]}},{"id":"sessions.list","group":"Sessions","method":"GET","path":"/api/v1/sessions/","auth":"read","summary":"List current user's session tokens.","query_params":["include_expired"],"body":null},{"id":"sessions.revoke","group":"Sessions","method":"DELETE","path":"/api/v1/sessions/{id}","auth":"read","summary":"Revoke one session token.","query_params":[],"body":null},{"id":"sessions.revoke_all","group":"Sessions","method":"DELETE","path":"/api/v1/sessions/all","auth":"read","summary":"Revoke all active session tokens for the current user.","query_params":[],"body":null},{"id":"auth.login","group":"Authentication","method":"POST","path":"/api/v1/auth/login","auth":"none","summary":"Password login. Returns a web session token.","query_params":[],"body":{"required":["username","password"],"optional":[]}},{"id":"auth.logout","group":"Authentication","method":"POST","path":"/api/v1/auth/logout","auth":"read","summary":"Revoke current web session or session token.","query_params":[],"body":null},{"id":"auth.change_password","group":"Authentication","method":"POST","path":"/api/v1/auth/change-password","auth":"read","summary":"Change current user's password.","query_params":[],"body":{"required":["new_password"],"optional":["current_password"]}},{"id":"auth.forgot_password","group":"Authentication","method":"POST","path":"/api/v1/auth/forgot-password","auth":"none","summary":"Request a password reset code by email.","query_params":[],"body":{"required":["email"],"optional":[]}},{"id":"auth.reset_password","group":"Authentication","method":"POST","path":"/api/v1/auth/reset-password","auth":"none","summary":"Reset password with email verification code.","query_params":[],"body":{"required":["email","code","new_password"],"optional":[]}},{"id":"users.create","group":"Users","method":"POST","path":"/api/v1/users/","auth":"none or site_admin","summary":"Register a user or admin-create one.","query_params":[],"body":{"required":["username"],"optional":["email","password","default_role","is_admin"]}},{"id":"users.me","group":"Users","method":"GET","path":"/api/v1/users/me","auth":"read","summary":"Get current user and current token metadata.","query_params":[],"body":null},{"id":"users.list","group":"Users","method":"GET","path":"/api/v1/users/","auth":"site_admin","summary":"List all users.","query_params":[],"body":null},{"id":"users.pending","group":"Users","method":"GET","path":"/api/v1/users/pending","auth":"site_admin","summary":"List pending user registrations.","query_params":[],"body":null},{"id":"users.approve","group":"Users","method":"POST","path":"/api/v1/users/{id}/approve","auth":"site_admin","summary":"Approve a pending user and create their first API key.","query_params":[],"body":{"required":[],"optional":["role"]}},{"id":"users.reject","group":"Users","method":"POST","path":"/api/v1/users/{id}/reject","auth":"site_admin","summary":"Reject a pending user.","query_params":[],"body":null},{"id":"users.delete","group":"Users","method":"DELETE","path":"/api/v1/users/{id}","auth":"site_admin","summary":"Delete a user and owned data.","query_params":[],"body":null},{"id":"users.reset_password","group":"Users","method":"POST","path":"/api/v1/users/{id}/reset-password","auth":"site_admin","summary":"Send or create a password reset for a user.","query_params":[],"body":null},{"id":"users.api_keys.list","group":"Personal API Keys","method":"GET","path":"/api/v1/users/me/api-keys","auth":"api_key or web_session","summary":"List current user's API keys.","query_params":[],"body":null},{"id":"users.api_keys.create","group":"Personal API Keys","method":"POST","path":"/api/v1/users/me/api-keys","auth":"api_key or web_session","summary":"Create a personal API key. Raw key is shown once.","query_params":[],"body":{"required":[],"optional":["name","role"]}},{"id":"users.api_keys.revoke","group":"Personal API Keys","method":"DELETE","path":"/api/v1/users/me/api-keys/{id}","auth":"api_key or web_session","summary":"Revoke one personal API key.","query_params":[],"body":null},{"id":"users.api_keys.rotate","group":"Personal API Keys","method":"POST","path":"/api/v1/users/me/api-keys/rotate","auth":"api_key or web_session","summary":"Revoke current API keys and create a replacement.","query_params":[],"body":null},{"id":"ai_setup.create","group":"AI Setup","method":"POST","path":"/api/v1/ai-setup","auth":"admin","summary":"Create a one-time 10-minute AI setup link with an embedded session token.","query_params":[],"body":null},{"id":"ai_setup.get","group":"AI Setup","method":"GET","path":"/ai-setup/{id}","auth":"none","summary":"Consume a one-time AI setup link and return Markdown setup instructions.","query_params":[],"body":null},{"id":"sso.login","group":"SSO","method":"GET","path":"/auth/login","auth":"none","summary":"Start Authentik OAuth login when SSO is configured.","query_params":[],"body":null},{"id":"sso.callback","group":"SSO","method":"GET","path":"/auth/callback","auth":"none","summary":"OAuth callback for Authentik.","query_params":["code","state"],"body":null},{"id":"sso.logout","group":"SSO","method":"GET","path":"/auth/logout","auth":"none","summary":"Clear local session and redirect through Authentik logout when configured.","query_params":[],"body":null}]}
