{"docs":{"name":"Password Pusher","info":"\n\u003cp\u003eThe Password Pusher JSON API.\u003c/p\u003e\n\n\u003cp\u003eThis API allows for both anonymous and authenticated access.\u003c/p\u003e\n\n\u003cp\u003eFor more information including language-specific examples to copy, see: \u003ca href=\"https://docs.pwpush.com/docs/json-api\"\u003edocs.pwpush.com/docs/json-api\u003c/a\u003e/\u003c/p\u003e\n\n\u003cspan id=\"label-Authentication\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"authentication\"\u003e\u003ca href=\"#authentication\"\u003eAuthentication\u003c/a\u003e\u003c/h2\u003e\n\n\u003cp\u003eTo authenticate, get your API token from \u003ca href=\"/api_tokens\"\u003ethe API token page\u003c/a\u003e and then apply it in your API calls as request headers:\u003c/p\u003e\n\n\u003cpre\u003e\u0026#39;Authorization\u0026#39;: \u0026quot;Bearer \u0026lt;token\u0026gt;\u0026quot;\u003c/pre\u003e\n\n\u003cspan id=\"label-Examples\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"examples\"\u003e\u003ca href=\"#examples\"\u003eExamples\u003c/a\u003e\u003c/h2\u003e\n\n\u003cp\u003eCurl\u003c/p\u003e\n\n\u003cpre\u003ecurl -X POST -H \u0026quot;Authorization: Bearer YOUR_API_TOKEN\u0026quot; --data \u0026quot;password[payload]=mypassword\u0026quot; https://pwpush.com/p.json\u003c/pre\u003e\n\n\u003cp\u003eFor more information including language-specific examples to copy, see: \u003ca href=\"https://docs.pwpush.com/docs/json-api\"\u003edocs.pwpush.com/docs/json-api\u003c/a\u003e/\u003c/p\u003e\n\n\u003cspan id=\"label-February+2025+Update+-28v1.4-29\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"february-2025-update-v14\"\u003e\u003ca href=\"#february-2025-update-v14\"\u003eFebruary 2025 Update (v1.4)\u003c/a\u003e\u003c/h2\u003e\n\n\u003cp\u003eAdded a new version endpoint to get the current application version, API version, and edition information.  This will be expanded soon to include more information.\u003c/p\u003e\n\n\u003cspan id=\"label-February+2025+Update+-28v1.3-29\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"february-2025-update-v13\"\u003e\u003ca href=\"#february-2025-update-v13\"\u003eFebruary 2025 Update (v1.3)\u003c/a\u003e\u003c/h2\u003e\n\n\u003cp\u003eThe API has been updated to use Bearer tokens for authentication and a general cleanup of the API.\u003c/p\u003e\n\n\u003cp\u003eThe X-User-Email and X-User-Token headers are deprecated although they will probably still be supported indefinitely for v1 of the API (and not carried into the eventual APIv2).\u003c/p\u003e\n\n\u003cp\u003eSome clients may need minor updates if they were relying on non-standard behavior.\u003c/p\u003e\n\n\u003cp\u003eIf something has broken recently, please see this \u003ca href=\"https://github.com/pglombardo/PasswordPusher/pull/3068\"\u003epull request\u003c/a\u003e for more details.\u003c/p\u003e\n\n\u003cspan id=\"label-May+2024+Update\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"may-2024-update\"\u003e\u003ca href=\"#may-2024-update\"\u003eMay 2024 Update\u003c/a\u003e\u003c/h2\u003e\n\n\u003cp\u003e/f and /r paths are now merged into /p.  Please use /p/* \u0026amp; /p.json for all new API calls.\u003c/p\u003e\n","copyright":"\u0026copy; 2011-Present Peter Giacomo Lombardo","doc_url":"/api/1.5","api_url":"","resources":{"accounts":{"doc_url":"/api/1.5/accounts","id":"accounts","api_url":"","name":"Account","short_description":"Manage your user account.","full_description":"","version":"1.5","formats":null,"metadata":null,"methods":[{"doc_url":"/api/1.5/accounts/register","name":"register","apis":[{"api_url":"/api/v1/account/register.json","http_method":"POST","short_description":"Register a new account.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eCreates a new user account. Returns the user profile with API token. Respects the disable_signups and enable_logins settings.\u003c/p\u003e\n","errors":[{"code":403,"description":"Signups are disabled.","metadata":null},{"code":404,"description":"User registration is not enabled.","metadata":null},{"code":422,"description":"Validation failed.","metadata":null}],"params":[{"name":"email","full_name":"email","description":"\n\u003cp\u003eEmail address for the new account.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"password","full_name":"password","description":"\n\u003cp\u003ePassword (minimum 8 characters).\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"password_confirmation","full_name":"password_confirmation","description":"\n\u003cp\u003ePassword confirmation.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/accounts/show","name":"show","apis":[{"api_url":"/api/v1/account.json","http_method":"GET","short_description":"Get your account profile.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eReturns the authenticated user’s account information including email, admin status, 2FA status, and API token.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null}],"params":[],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/accounts/update","name":"update","apis":[{"api_url":"/api/v1/account.json","http_method":"PATCH","short_description":"Update your account.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eUpdates the authenticated user’s account information.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":422,"description":"Validation failed.","metadata":null}],"params":[{"name":"email","full_name":"email","description":"\n\u003cp\u003eNew email address.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"preferred_language","full_name":"preferred_language","description":"\n\u003cp\u003ePreferred language code (e.g. ‘en’, ‘fr’).\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/accounts/change_password","name":"change_password","apis":[{"api_url":"/api/v1/account/password.json","http_method":"PATCH","short_description":"Change your password.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eChanges the authenticated user’s password. Requires current password.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":422,"description":"Invalid current password or validation failed.","metadata":null}],"params":[{"name":"current_password","full_name":"current_password","description":"\n\u003cp\u003eYour current password.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"password","full_name":"password","description":"\n\u003cp\u003eNew password.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"password_confirmation","full_name":"password_confirmation","description":"\n\u003cp\u003eNew password confirmation.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/accounts/destroy","name":"destroy","apis":[{"api_url":"/api/v1/account.json","http_method":"DELETE","short_description":"Delete your account.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003ePermanently deletes the authenticated user’s account and all associated data. Requires password confirmation.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":422,"description":"Invalid password.","metadata":null}],"params":[{"name":"password","full_name":"password","description":"\n\u003cp\u003eYour current password for confirmation.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/accounts/regenerate_token","name":"regenerate_token","apis":[{"api_url":"/api/v1/account/token.json","http_method":"POST","short_description":"Regenerate your API token.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eGenerates a new API token, invalidating the previous one. The new token is returned in the response.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null}],"params":[],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true}],"headers":[],"deprecated":false},"audit_logs":{"doc_url":"/api/1.5/audit_logs","id":"audit_logs","api_url":"","name":"Audit Logs","short_description":"Query audit logs for your pushes.","full_description":"","version":"1.5","formats":null,"metadata":null,"methods":[{"doc_url":"/api/1.5/audit_logs/index","name":"index","apis":[{"api_url":"/api/v1/audit_logs.json","http_method":"GET","short_description":"List audit logs for your pushes.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eReturns audit log entries for all pushes owned by the authenticated user, ordered by creation date descending. Supports filtering by kind, IP address, and push token. Paginated at 50 entries per page.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Audit dashboard feature is not enabled.","metadata":null}],"params":[{"name":"kind","full_name":"kind","description":"\n\u003cp\u003eFilter by audit log kind (e.g. creation, view, expire, failed_passphrase).\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"ip","full_name":"ip","description":"\n\u003cp\u003eFilter by IP address.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"push_token","full_name":"push_token","description":"\n\u003cp\u003eFilter by push URL token.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"page","full_name":"page","description":"\n\u003cp\u003ePage number for pagination (50 per page).\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true}],"headers":[],"deprecated":false},"csp_tenants":{"doc_url":"/api/1.5/csp_tenants","id":"csp_tenants","api_url":"","name":"CSP Tenants","short_description":"Manage CSP client tenants discovered via CIPP.","full_description":"","version":"1.5","formats":null,"metadata":null,"methods":[{"doc_url":"/api/1.5/csp_tenants/index","name":"index","apis":[{"api_url":"/api/v1/csp_tenants.json","http_method":"GET","short_description":"List all CSP tenants.","deprecated":null}],"formats":["JSON"],"full_description":"","errors":[{"code":401,"description":"Unauthorized.","metadata":null},{"code":403,"description":"Admin access required.","metadata":null}],"params":[],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/csp_tenants/show","name":"show","apis":[{"api_url":"/api/v1/csp_tenants/:id.json","http_method":"GET","short_description":"Show a CSP tenant.","deprecated":null}],"formats":["JSON"],"full_description":"","errors":[{"code":401,"description":"Unauthorized.","metadata":null},{"code":404,"description":"Tenant not found.","metadata":null}],"params":[{"name":"id","full_name":"id","description":"\n\u003cp\u003eTenant record ID.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/csp_tenants/update","name":"update","apis":[{"api_url":"/api/v1/csp_tenants/:id.json","http_method":"PATCH","short_description":"Update a CSP tenant.","deprecated":null}],"formats":["JSON"],"full_description":"","errors":[{"code":401,"description":"Unauthorized.","metadata":null},{"code":422,"description":"Validation failed.","metadata":null}],"params":[{"name":"id","full_name":"id","description":"\n\u003cp\u003eTenant record ID.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"csp_tenant","full_name":"csp_tenant","description":"\n\u003cp\u003eTenant attributes.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a Hash","expected_type":"hash","metadata":null,"show":true,"validations":[],"deprecated":false,"params":[{"name":"contact_email","full_name":"csp_tenant[contact_email]","description":"\n\u003cp\u003eContact email.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"sso_enabled","full_name":"csp_tenant[sso_enabled]","description":"\n\u003cp\u003eEnable SSO for this tenant.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false}]}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/csp_tenants/destroy","name":"destroy","apis":[{"api_url":"/api/v1/csp_tenants/:id.json","http_method":"DELETE","short_description":"Delete a CSP tenant.","deprecated":null}],"formats":["JSON"],"full_description":"","errors":[{"code":401,"description":"Unauthorized.","metadata":null},{"code":404,"description":"Tenant not found.","metadata":null}],"params":[{"name":"id","full_name":"id","description":"\n\u003cp\u003eTenant record ID.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/csp_tenants/sync","name":"sync","apis":[{"api_url":"/api/v1/csp_tenants/sync.json","http_method":"POST","short_description":"Sync tenants from CIPP API.","deprecated":null}],"formats":["JSON"],"full_description":"","errors":[{"code":401,"description":"Unauthorized.","metadata":null}],"params":[],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/csp_tenants/onboard","name":"onboard","apis":[{"api_url":"/api/v1/csp_tenants/:id/onboard.json","http_method":"POST","short_description":"Send onboarding email to tenant.","deprecated":null}],"formats":["JSON"],"full_description":"","errors":[{"code":401,"description":"Unauthorized.","metadata":null},{"code":422,"description":"No contact email set.","metadata":null}],"params":[{"name":"id","full_name":"id","description":"\n\u003cp\u003eTenant record ID.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/csp_tenants/toggle_sso","name":"toggle_sso","apis":[{"api_url":"/api/v1/csp_tenants/:id/toggle_sso.json","http_method":"POST","short_description":"Toggle SSO for a tenant.","deprecated":null}],"formats":["JSON"],"full_description":"","errors":[{"code":401,"description":"Unauthorized.","metadata":null}],"params":[{"name":"id","full_name":"id","description":"\n\u003cp\u003eTenant record ID.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true}],"headers":[],"deprecated":false},"notification_preferences":{"doc_url":"/api/1.5/notification_preferences","id":"notification_preferences","api_url":"","name":"Notification Preferences","short_description":"Manage push notification email preferences.","full_description":"","version":"1.5","formats":null,"metadata":null,"methods":[{"doc_url":"/api/1.5/notification_preferences/show","name":"show","apis":[{"api_url":"/api/v1/account/notifications.json","http_method":"GET","short_description":"Get notification preferences.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eReturns the current user’s email notification preferences for push events.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Push notifications feature is not enabled.","metadata":null}],"params":[],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/notification_preferences/update","name":"update","apis":[{"api_url":"/api/v1/account/notifications.json","http_method":"PATCH","short_description":"Update notification preferences.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eUpdates the current user’s email notification preferences. Only the provided fields will be updated.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Push notifications feature is not enabled.","metadata":null},{"code":422,"description":"Validation failed.","metadata":null}],"params":[{"name":"notify_on_view","full_name":"notify_on_view","description":"\n\u003cp\u003eEmail when a push is viewed.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"notify_on_expire","full_name":"notify_on_expire","description":"\n\u003cp\u003eEmail when a push expires.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"notify_on_expiring_soon","full_name":"notify_on_expiring_soon","description":"\n\u003cp\u003eEmail when a push is about to expire.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true}],"headers":[],"deprecated":false},"push_templates":{"doc_url":"/api/1.5/push_templates","id":"push_templates","api_url":"","name":"Push Templates","short_description":"Manage reusable push setting presets.","full_description":"","version":"1.5","formats":null,"metadata":null,"methods":[{"doc_url":"/api/1.5/push_templates/index","name":"index","apis":[{"api_url":"/api/v1/push_templates.json","http_method":"GET","short_description":"List all push templates.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eReturns all push templates available to the authenticated user, including team-shared templates.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null}],"params":[],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/push_templates/show","name":"show","apis":[{"api_url":"/api/v1/push_templates/:id.json","http_method":"GET","short_description":"Show a push template.","deprecated":null}],"formats":["JSON"],"full_description":"","errors":[{"code":401,"description":"Unauthorized.","metadata":null},{"code":404,"description":"Template not found.","metadata":null}],"params":[{"name":"id","full_name":"id","description":"\n\u003cp\u003eTemplate ID.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/push_templates/create","name":"create","apis":[{"api_url":"/api/v1/push_templates.json","http_method":"POST","short_description":"Create a push template.","deprecated":null}],"formats":["JSON"],"full_description":"","errors":[{"code":401,"description":"Unauthorized.","metadata":null},{"code":422,"description":"Validation failed.","metadata":null}],"params":[{"name":"push_template","full_name":"push_template","description":"\n\u003cp\u003eTemplate attributes.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a Hash","expected_type":"hash","metadata":null,"show":true,"validations":[],"deprecated":false,"params":[{"name":"name","full_name":"push_template[name]","description":"\n\u003cp\u003eTemplate name.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"kind","full_name":"push_template[kind]","description":"\n\u003cp\u003ePush kind.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etext\u003c/code\u003e, \u003ccode\u003efile\u003c/code\u003e, \u003ccode\u003eurl\u003c/code\u003e, \u003ccode\u003eqr\u003c/code\u003e.","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"expire_after_days","full_name":"push_template[expire_after_days]","description":"\n\u003cp\u003eDays until expiration.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"expire_after_views","full_name":"push_template[expire_after_views]","description":"\n\u003cp\u003eViews until expiration.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"retrieval_step","full_name":"push_template[retrieval_step]","description":"\n\u003cp\u003eEnable 1-click retrieval step.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"deletable_by_viewer","full_name":"push_template[deletable_by_viewer]","description":"\n\u003cp\u003eAllow viewer deletion.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"passphrase","full_name":"push_template[passphrase]","description":"\n\u003cp\u003eDefault passphrase.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"team_id","full_name":"push_template[team_id]","description":"\n\u003cp\u003eShare with team (optional).\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false}]}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/push_templates/update","name":"update","apis":[{"api_url":"/api/v1/push_templates/:id.json","http_method":"PATCH","short_description":"Update a push template.","deprecated":null}],"formats":["JSON"],"full_description":"","errors":[{"code":401,"description":"Unauthorized.","metadata":null},{"code":404,"description":"Template not found.","metadata":null},{"code":422,"description":"Validation failed.","metadata":null}],"params":[{"name":"id","full_name":"id","description":"\n\u003cp\u003eTemplate ID.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"push_template","full_name":"push_template","description":"\n\u003cp\u003eTemplate attributes.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a Hash","expected_type":"hash","metadata":null,"show":true,"validations":[],"deprecated":false,"params":[{"name":"name","full_name":"push_template[name]","description":"\n\u003cp\u003eTemplate name.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"expire_after_days","full_name":"push_template[expire_after_days]","description":"\n\u003cp\u003eDays until expiration.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"expire_after_views","full_name":"push_template[expire_after_views]","description":"\n\u003cp\u003eViews until expiration.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"retrieval_step","full_name":"push_template[retrieval_step]","description":"\n\u003cp\u003eEnable 1-click retrieval step.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"deletable_by_viewer","full_name":"push_template[deletable_by_viewer]","description":"\n\u003cp\u003eAllow viewer deletion.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"passphrase","full_name":"push_template[passphrase]","description":"\n\u003cp\u003eDefault passphrase.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"team_id","full_name":"push_template[team_id]","description":"\n\u003cp\u003eShare with team (optional).\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false}]}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/push_templates/destroy","name":"destroy","apis":[{"api_url":"/api/v1/push_templates/:id.json","http_method":"DELETE","short_description":"Delete a push template.","deprecated":null}],"formats":["JSON"],"full_description":"","errors":[{"code":401,"description":"Unauthorized.","metadata":null},{"code":404,"description":"Template not found.","metadata":null}],"params":[{"name":"id","full_name":"id","description":"\n\u003cp\u003eTemplate ID.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true}],"headers":[],"deprecated":false},"pushes":{"doc_url":"/api/1.5/pushes","id":"pushes","api_url":"","name":"Pushes","short_description":"Interact directly with pushes.","full_description":"","version":"1.5","formats":null,"metadata":null,"methods":[{"doc_url":"/api/1.5/pushes/show","name":"show","apis":[{"api_url":"/p/:url_token.json","http_method":"GET","short_description":"Retrieve a push.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cspan id=\"label-Retrieving+a+Push\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"retrieving-a-push\"\u003e\u003ca href=\"#retrieving-a-push\"\u003eRetrieving a Push\u003c/a\u003e\u003c/h2\u003e\n\n\u003cp\u003eRetrieves a push and its payload. If the push is active, this request will count as a view and be logged in the audit log.\u003c/p\u003e\n\n\u003cspan id=\"label-Security+Features\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch3 id=\"security-features\"\u003e\u003ca href=\"#security-features\"\u003eSecurity Features\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\u003cli\u003e\n\u003cp\u003ePassphrase protection - Requires a passphrase to view.\u003c/p\u003e\n\n\u003cp\u003eProvide the passphrase as a GET parameter: ?passphrase=xxx\u003c/p\u003e\n\u003c/li\u003e\u003c/ul\u003e\n\n\u003cspan id=\"label-Language+Specific+Examples\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"language-specific-examples\"\u003e\u003ca href=\"#language-specific-examples\"\u003eLanguage Specific Examples\u003c/a\u003e\u003c/h2\u003e\n\n\u003cp\u003eFor language-specific examples and detailed API documentation, see: \u003ca href=\"https://docs.pwpush.com/docs/json-api\"\u003edocs.pwpush.com/docs/json-api\u003c/a\u003e/\u003c/p\u003e\n","errors":[],"params":[{"name":"url_token","full_name":"url_token","description":"\n\u003cp\u003eSecret URL token of a previously created push.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/pushes/create","name":"create","apis":[{"api_url":"/p.json","http_method":"POST","short_description":"Create a new push.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cspan id=\"label-Creating+a+New+Push\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"creating-a-new-push\"\u003e\u003ca href=\"#creating-a-new-push\"\u003eCreating a New Push\u003c/a\u003e\u003c/h2\u003e\n\n\u003cp\u003eCreates a new push (secret URL) containing the provided payload. The payload can be:\u003c/p\u003e\n\u003cul\u003e\u003cli\u003e\n\u003cp\u003eText/password (default)\u003c/p\u003e\n\u003c/li\u003e\u003cli\u003e\n\u003cp\u003eFile attachments (requires authentication \u0026amp; subscription)\u003c/p\u003e\n\u003c/li\u003e\u003cli\u003e\n\u003cp\u003eURLs\u003c/p\u003e\n\u003c/li\u003e\u003cli\u003e\n\u003cp\u003eQR codes\u003c/p\u003e\n\u003c/li\u003e\u003c/ul\u003e\n\n\u003cspan id=\"label-Required+Parameters\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch3 id=\"required-parameters\"\u003e\u003ca href=\"#required-parameters\"\u003eRequired Parameters\u003c/a\u003e\u003c/h3\u003e\n\n\u003cp\u003eThe push must be created with a payload parameter containing the secret content. All other parameters are optional and will use system defaults if not specified.\u003c/p\u003e\n\n\u003cspan id=\"label-Expiration+Settings\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch3 id=\"expiration-settings\"\u003e\u003ca href=\"#expiration-settings\"\u003eExpiration Settings\u003c/a\u003e\u003c/h3\u003e\n\n\u003cp\u003ePushes can be configured to expire after:\u003c/p\u003e\n\u003cul\u003e\u003cli\u003e\n\u003cp\u003eA number of views (expire_after_views)\u003c/p\u003e\n\u003c/li\u003e\u003cli\u003e\n\u003cp\u003eA number of days (expire_after_days)\u003c/p\u003e\n\u003c/li\u003e\u003cli\u003e\n\u003cp\u003eBoth views and days (first trigger wins)\u003c/p\u003e\n\u003c/li\u003e\u003c/ul\u003e\n\n\u003cspan id=\"label-Security+Options\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch3 id=\"security-options\"\u003e\u003ca href=\"#security-options\"\u003eSecurity Options\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\u003cli\u003e\n\u003cp\u003ePassphrase protection requires viewers to enter a secret phrase\u003c/p\u003e\n\u003c/li\u003e\u003cli\u003e\n\u003cp\u003eRetrieval step helps prevent automated URL scanners from burning views\u003c/p\u003e\n\u003c/li\u003e\u003cli\u003e\n\u003cp\u003eDeletable by viewer allows recipients to manually expire the push\u003c/p\u003e\n\u003c/li\u003e\u003c/ul\u003e\n\n\u003cspan id=\"label-Language+Specific+Examples\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"language-specific-examples\"\u003e\u003ca href=\"#language-specific-examples\"\u003eLanguage Specific Examples\u003c/a\u003e\u003c/h2\u003e\n\n\u003cp\u003eSee language specific examples in the docs: \u003ca href=\"https://docs.pwpush.com/docs/json-api\"\u003edocs.pwpush.com/docs/json-api\u003c/a\u003e/\u003c/p\u003e\n\n\u003cspan id=\"label-Example+Request\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"example-request\"\u003e\u003ca href=\"#example-request\"\u003eExample Request\u003c/a\u003e\u003c/h2\u003e\n\n\u003cpre\u003ecurl -X POST \\\n  -H \u0026quot;X-User-Email: user@example.com\u0026quot; \\\n  -H \u0026quot;X-User-Token: MyAPIToken\u0026quot; \\\n  -H \u0026quot;Content-Type: application/json\u0026quot; \\\n  -d \u0026#39;{\u0026quot;password\u0026quot;: {\u0026quot;payload\u0026quot;: \u0026quot;secret_text\u0026quot;}}\u0026#39; \\\n  https://pwpush.com/p.json\u003c/pre\u003e\n\n\u003cspan id=\"label-Example+Response\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"example-response\"\u003e\u003ca href=\"#example-response\"\u003eExample Response\u003c/a\u003e\u003c/h2\u003e\n\n\u003cpre class=\"ruby\"\u003e{\n  \u003cspan class=\"ruby-value\"\u003e\u0026quot;url_token\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-string\"\u003e\u0026quot;fkwjfvhall92\u0026quot;\u003c/span\u003e,\n  \u003cspan class=\"ruby-value\"\u003e\u0026quot;html_url\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-string\"\u003e\u0026quot;https://pwpush.com/p/fkwjfvhall92\u0026quot;\u003c/span\u003e,\n  \u003cspan class=\"ruby-value\"\u003e\u0026quot;json_url\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-string\"\u003e\u0026quot;https://pwpush.com/p/fkwjfvhall92.json\u0026quot;\u003c/span\u003e,\n  \u003cspan class=\"ruby-value\"\u003e\u0026quot;created_at\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-string\"\u003e\u0026quot;2023-10-20T15:32:01Z\u0026quot;\u003c/span\u003e,\n  \u003cspan class=\"ruby-value\"\u003e\u0026quot;expires_at\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-string\"\u003e\u0026quot;2023-10-20T15:32:01Z\u0026quot;\u003c/span\u003e,\n  \u003cspan class=\"ruby-value\"\u003e\u0026quot;views_remaining\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-value\"\u003e10\u003c/span\u003e,\n  \u003cspan class=\"ruby-value\"\u003e\u0026quot;views_total\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-value\"\u003e10\u003c/span\u003e,\n  \u003cspan class=\"ruby-value\"\u003e\u0026quot;files\u0026quot;:\u003c/span\u003e [],\n  \u003cspan class=\"ruby-value\"\u003e\u0026quot;passphrase\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-identifier\"\u003enull\u003c/span\u003e,\n  \u003cspan class=\"ruby-value\"\u003e\u0026quot;name\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-identifier\"\u003enull\u003c/span\u003e,\n  \u003cspan class=\"ruby-value\"\u003e\u0026quot;note\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-identifier\"\u003enull\u003c/span\u003e,\n  \u003cspan class=\"ruby-value\"\u003e\u0026quot;expire_after_days\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-identifier\"\u003enull\u003c/span\u003e,\n}\n\u003c/pre\u003e\n","errors":[],"params":[{"name":"password","full_name":"password","description":"\n\u003cp\u003ePush details\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a Hash","expected_type":"hash","metadata":null,"show":true,"validations":[],"deprecated":false,"params":[{"name":"payload","full_name":"password[payload]","description":"\n\u003cp\u003eThe URL encoded password or secret text to share.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"files","full_name":"password[files]","description":"\n\u003cp\u003eFile(s) to upload and attach to the push.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be an array of any type","expected_type":"array","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"passphrase","full_name":"password[passphrase]","description":"\n\u003cp\u003eRequire recipients to enter this passphrase to view the created push.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"name","full_name":"password[name]","description":"\n\u003cp\u003eA name shown in the dashboard, notifications and emails.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":true,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"note","full_name":"password[note]","description":"\n\u003cp\u003eIf authenticated, the URL encoded note for this push.  Visible only to the push creator.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":true,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"expire_after_days","full_name":"password[expire_after_days]","description":"\n\u003cp\u003eExpire secret link and delete after this many days.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"expire_after_views","full_name":"password[expire_after_views]","description":"\n\u003cp\u003eExpire secret link and delete after this many views.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"deletable_by_viewer","full_name":"password[deletable_by_viewer]","description":"\n\u003cp\u003eAllow users to delete passwords once retrieved.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e.","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"retrieval_step","full_name":"password[retrieval_step]","description":"\n\u003cp\u003eHelps to avoid chat systems and URL scanners from eating up views.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e.","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"kind","full_name":"password[kind]","description":"\n\u003cp\u003eThe kind of push to create. Defaults to ‘text’.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etext\u003c/code\u003e, \u003ccode\u003efile\u003c/code\u003e, \u003ccode\u003eurl\u003c/code\u003e, \u003ccode\u003eqr\u003c/code\u003e.","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}]}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/pushes/bulk_create","name":"bulk_create","apis":[{"api_url":"/p/bulk.json","http_method":"POST","short_description":"Create multiple pushes in a single request.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eCreates up to 50 pushes in a single API call. Each push object uses the same parameters as the single create endpoint. Returns an array of results.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized.","metadata":null},{"code":422,"description":"Validation failed.","metadata":null}],"params":[{"name":"pushes","full_name":"pushes","description":"\n\u003cp\u003eArray of push objects (max 50).\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be an array of any type","expected_type":"array","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/pushes/preview","name":"preview","apis":[{"api_url":"/p/:url_token/preview.json","http_method":"GET","short_description":"Helper endpoint to retrieve the fully qualified secret URL of a push.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cspan id=\"label-Preview+a+Push\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"preview-a-push\"\u003e\u003ca href=\"#preview-a-push\"\u003ePreview a Push\u003c/a\u003e\u003c/h2\u003e\n\n\u003cp\u003eThis method retrieves the preview URL of a push.  This is useful for getting the fully qualified URL of a push before sharing it with others.\u003c/p\u003e\n\n\u003cspan id=\"label-Language+Specific+Examples\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"language-specific-examples\"\u003e\u003ca href=\"#language-specific-examples\"\u003eLanguage Specific Examples\u003c/a\u003e\u003c/h2\u003e\n\n\u003cp\u003eFor language-specific examples and detailed API documentation, see: \u003ca href=\"https://docs.pwpush.com/docs/json-api\"\u003edocs.pwpush.com/docs/json-api\u003c/a\u003e/\u003c/p\u003e\n","errors":[],"params":[{"name":"url_token","full_name":"url_token","description":"\n\u003cp\u003eSecret URL token of a previously created push.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/pushes/audit","name":"audit","apis":[{"api_url":"/p/:url_token/audit.json","http_method":"GET","short_description":"Retrieve the audit log for a push.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cspan id=\"label-Push+Audit+Log+Retrieval\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"push-audit-log-retrieval\"\u003e\u003ca href=\"#push-audit-log-retrieval\"\u003ePush Audit Log Retrieval\u003c/a\u003e\u003c/h2\u003e\n\n\u003cp\u003eReturns the audit log for a push, containing an array of view events with metadata including:\u003c/p\u003e\n\u003cul\u003e\u003cli\u003e\n\u003cp\u003eIP address of viewer\u003c/p\u003e\n\u003c/li\u003e\u003cli\u003e\n\u003cp\u003eUser agent\u003c/p\u003e\n\u003c/li\u003e\u003cli\u003e\n\u003cp\u003eReferrer URL\u003c/p\u003e\n\u003c/li\u003e\u003cli\u003e\n\u003cp\u003eTimestamp\u003c/p\u003e\n\u003c/li\u003e\u003cli\u003e\n\u003cp\u003eEvent type (view, failed_view, expire, etc)\u003c/p\u003e\n\u003c/li\u003e\u003c/ul\u003e\n\n\u003cp\u003eResults are paginated with a maximum of 50 audit log entries per page and 200 pages total.\u003c/p\u003e\n\n\u003cp\u003eAuthentication is required. Only the owner of the push can retrieve its audit log. Requests for pushes not owned by the authenticated user will receive a 403 Forbidden response.\u003c/p\u003e\n\n\u003cspan id=\"label-Parameters\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"parameters\"\u003e\u003ca href=\"#parameters\"\u003eParameters\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epage\u003c/code\u003e - Page number (default: 1)\u003c/p\u003e\n\u003c/li\u003e\u003c/ul\u003e\n\n\u003cspan id=\"label-Example+Request\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"example-request\"\u003e\u003ca href=\"#example-request\"\u003eExample Request\u003c/a\u003e\u003c/h2\u003e\n\n\u003cpre\u003ecurl -X GET \\\n  -H \u0026quot;X-User-Email: user@example.com\u0026quot; \\\n  -H \u0026quot;X-User-Token: MyAPIToken\u0026quot; \\\n  https://pwpush.com/p/fk27vnslkd/audit.json?page=1\u003c/pre\u003e\n\n\u003cspan id=\"label-Example+Response\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"example-response\"\u003e\u003ca href=\"#example-response\"\u003eExample Response\u003c/a\u003e\u003c/h2\u003e\n\n\u003cpre class=\"ruby\"\u003e{\n  \u003cspan class=\"ruby-value\"\u003e\u0026quot;views\u0026quot;:\u003c/span\u003e [\n    {\n      \u003cspan class=\"ruby-value\"\u003e\u0026quot;ip\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-string\"\u003e\u0026quot;x.x.x.x\u0026quot;\u003c/span\u003e,\n      \u003cspan class=\"ruby-value\"\u003e\u0026quot;user_agent\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-string\"\u003e\u0026quot;Mozilla/5.0...\u0026quot;\u003c/span\u003e,\n      \u003cspan class=\"ruby-value\"\u003e\u0026quot;referrer\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-string\"\u003e\u0026quot;https://example.com\u0026quot;\u003c/span\u003e,\n      \u003cspan class=\"ruby-value\"\u003e\u0026quot;created_at\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-string\"\u003e\u0026quot;2023-10-20T15:32:01Z\u0026quot;\u003c/span\u003e,\n      \u003cspan class=\"ruby-value\"\u003e\u0026quot;kind\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-string\"\u003e\u0026quot;view\u0026quot;\u003c/span\u003e\n    }\n  ]\n}\n\u003c/pre\u003e\n\n\u003cspan id=\"label-Language+Specific+Examples\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"language-specific-examples\"\u003e\u003ca href=\"#language-specific-examples\"\u003eLanguage Specific Examples\u003c/a\u003e\u003c/h2\u003e\n\n\u003cp\u003eFor language-specific examples and detailed API documentation, see: \u003ca href=\"https://docs.pwpush.com/docs/json-api\"\u003edocs.pwpush.com/docs/json-api\u003c/a\u003e/\u003c/p\u003e\n","errors":[],"params":[{"name":"url_token","full_name":"url_token","description":"\n\u003cp\u003eSecret URL token of a previously created push.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/pushes/destroy","name":"destroy","apis":[{"api_url":"/p/:url_token.json","http_method":"DELETE","short_description":"Expire a push: delete the payload and expire the secret URL.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cspan id=\"label-Push+Expiration\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"push-expiration\"\u003e\u003ca href=\"#push-expiration\"\u003ePush Expiration\u003c/a\u003e\u003c/h2\u003e\n\n\u003cp\u003eExpires a push immediately.  Must be authenticated \u0026amp; owner of the push \u003cem\u003eor\u003c/em\u003e the push must have been created with \u003cem\u003edeleteable_by_viewer\u003c/em\u003e.\u003c/p\u003e\n\n\u003cspan id=\"label-Example+Request\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"example-request\"\u003e\u003ca href=\"#example-request\"\u003eExample Request\u003c/a\u003e\u003c/h2\u003e\n\n\u003cpre\u003ecurl -X DELETE \\\n  -H \u0026quot;X-User-Email: user@example.com\u0026quot; \\\n  -H \u0026quot;X-User-Token: MyAPIToken\u0026quot; \\\n  https://pwpush.com/p/fkwjfvhall92.json\u003c/pre\u003e\n\n\u003cspan id=\"label-Example+Response\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"example-response\"\u003e\u003ca href=\"#example-response\"\u003eExample Response\u003c/a\u003e\u003c/h2\u003e\n\n\u003cpre class=\"ruby\"\u003e{\n  \u003cspan class=\"ruby-value\"\u003e\u0026quot;expired\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-keyword\"\u003etrue\u003c/span\u003e,\n  \u003cspan class=\"ruby-value\"\u003e\u0026quot;expired_on\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-string\"\u003e\u0026quot;2023-10-20T15:32:01Z\u0026quot;\u003c/span\u003e\n}\n\u003c/pre\u003e\n\n\u003cspan id=\"label-Language+Specific+Examples\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"language-specific-examples\"\u003e\u003ca href=\"#language-specific-examples\"\u003eLanguage Specific Examples\u003c/a\u003e\u003c/h2\u003e\n\n\u003cp\u003eFor language-specific examples and detailed API documentation, see: \u003ca href=\"https://docs.pwpush.com/docs/json-api\"\u003edocs.pwpush.com/docs/json-api\u003c/a\u003e/\u003c/p\u003e\n","errors":[],"params":[{"name":"url_token","full_name":"url_token","description":"\n\u003cp\u003eSecret URL token of a previously created push.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/pushes/active","name":"active","apis":[{"api_url":"/p/active.json","http_method":"GET","short_description":"Retrieve your active pushes.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cspan id=\"label-Active+Pushes+Retrieval\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"active-pushes-retrieval\"\u003e\u003ca href=\"#active-pushes-retrieval\"\u003eActive Pushes Retrieval\u003c/a\u003e\u003c/h2\u003e\n\n\u003cp\u003eReturns the list of pushes that are still active. Results are paginated with a maximum of 50 pushes per page and 200 pages total.\u003c/p\u003e\n\n\u003cspan id=\"label-Parameters\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"parameters\"\u003e\u003ca href=\"#parameters\"\u003eParameters\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epage\u003c/code\u003e - Page number (default: 1)\u003c/p\u003e\n\u003c/li\u003e\u003c/ul\u003e\n\n\u003cspan id=\"label-Example+Request\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"example-request\"\u003e\u003ca href=\"#example-request\"\u003eExample Request\u003c/a\u003e\u003c/h2\u003e\n\n\u003cpre\u003ecurl -X GET \\\n  -H \u0026quot;X-User-Email: user@example.com\u0026quot; \\\n  -H \u0026quot;X-User-Token: MyAPIToken\u0026quot; \\\n  https://pwpush.com/p/active.json\u003c/pre\u003e\n\n\u003cspan id=\"label-Example+Response\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"example-response\"\u003e\u003ca href=\"#example-response\"\u003eExample Response\u003c/a\u003e\u003c/h2\u003e\n\n\u003cpre\u003e[\n  {\n    \u0026quot;url_token\u0026quot;: \u0026quot;fkwjfvhall92\u0026quot;,\n    \u0026quot;html_url\u0026quot;: \u0026quot;https://pwpush.com/p/fkwjfvhall92\u0026quot;,\n    \u0026quot;json_url\u0026quot;: \u0026quot;https://pwpush.com/p/fkwjfvhall92.json\u0026quot;,\n    \u0026quot;created_at\u0026quot;: \u0026quot;2023-10-20T15:32:01Z\u0026quot;,\n    \u0026quot;expires_at\u0026quot;: \u0026quot;2023-10-20T15:32:01Z\u0026quot;,\n    ...\n  },\n  ...\n]\u003c/pre\u003e\n\n\u003cspan id=\"label-Language+Specific+Examples\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"language-specific-examples\"\u003e\u003ca href=\"#language-specific-examples\"\u003eLanguage Specific Examples\u003c/a\u003e\u003c/h2\u003e\n\n\u003cp\u003eFor language-specific examples and detailed API documentation, see: \u003ca href=\"https://docs.pwpush.com/docs/json-api\"\u003edocs.pwpush.com/docs/json-api\u003c/a\u003e/\u003c/p\u003e\n","errors":[],"params":[],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/pushes/expired","name":"expired","apis":[{"api_url":"/p/expired.json","http_method":"GET","short_description":"Retrieve your expired pushes.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cspan id=\"label-Expired+Pushes+Retrieval\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"expired-pushes-retrieval\"\u003e\u003ca href=\"#expired-pushes-retrieval\"\u003eExpired Pushes Retrieval\u003c/a\u003e\u003c/h2\u003e\n\n\u003cp\u003eReturns the list of pushes that have expired. Results are paginated with a maximum of 50 pushes per page and 200 pages total.\u003c/p\u003e\n\n\u003cspan id=\"label-Parameters\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"parameters\"\u003e\u003ca href=\"#parameters\"\u003eParameters\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epage\u003c/code\u003e - Page number (default: 1)\u003c/p\u003e\n\u003c/li\u003e\u003c/ul\u003e\n\n\u003cspan id=\"label-Example+Request\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"example-request\"\u003e\u003ca href=\"#example-request\"\u003eExample Request\u003c/a\u003e\u003c/h2\u003e\n\n\u003cpre\u003ecurl -X GET \\\n  -H \u0026quot;X-User-Email: user@example.com\u0026quot; \\\n  -H \u0026quot;X-User-Token: MyAPIToken\u0026quot; \\\n  https://pwpush.com/p/expired.json\u003c/pre\u003e\n\n\u003cspan id=\"label-Example+Response\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"example-response\"\u003e\u003ca href=\"#example-response\"\u003eExample Response\u003c/a\u003e\u003c/h2\u003e\n\n\u003cpre\u003e[\n  {\n    \u0026quot;url_token\u0026quot;: \u0026quot;fkwjfvhall92\u0026quot;,\n    \u0026quot;html_url\u0026quot;: \u0026quot;https://pwpush.com/p/fkwjfvhall92\u0026quot;,\n    \u0026quot;json_url\u0026quot;: \u0026quot;https://pwpush.com/p/fkwjfvhall92.json\u0026quot;,\n    \u0026quot;created_at\u0026quot;: \u0026quot;2023-10-20T15:32:01Z\u0026quot;,\n    \u0026quot;expires_at\u0026quot;: \u0026quot;2023-10-20T15:32:01Z\u0026quot;,\n    ...\n  },\n  ...\n]\u003c/pre\u003e\n\n\u003cspan id=\"label-Language+Specific+Examples\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"language-specific-examples\"\u003e\u003ca href=\"#language-specific-examples\"\u003eLanguage Specific Examples\u003c/a\u003e\u003c/h2\u003e\n\n\u003cp\u003eFor language-specific examples and detailed API documentation, see: \u003ca href=\"https://docs.pwpush.com/docs/json-api\"\u003edocs.pwpush.com/docs/json-api\u003c/a\u003e/\u003c/p\u003e\n","errors":[],"params":[],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true}],"headers":[],"deprecated":false},"reports":{"doc_url":"/api/1.5/reports","id":"reports","api_url":"","name":"Reports","short_description":"Usage and compliance reporting.","full_description":"","version":"1.5","formats":null,"metadata":null,"methods":[{"doc_url":"/api/1.5/reports/index","name":"index","apis":[{"api_url":"/api/v1/reports.json","http_method":"GET","short_description":"Get usage and compliance statistics.","deprecated":null}],"formats":["JSON"],"full_description":"","errors":[{"code":401,"description":"Unauthorized.","metadata":null},{"code":403,"description":"Admin access required.","metadata":null}],"params":[{"name":"period","full_name":"period","description":"\n\u003cp\u003eNumber of days to report on (default: 30).\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true}],"headers":[],"deprecated":false},"requests":{"doc_url":"/api/1.5/requests","id":"requests","api_url":"","name":"Requests","short_description":"Manage intake request forms.","full_description":"","version":"1.5","formats":null,"metadata":null,"methods":[{"doc_url":"/api/1.5/requests/index","name":"index","apis":[{"api_url":"/api/v1/requests.json","http_method":"GET","short_description":"List your requests.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eReturns all intake request forms owned by the authenticated user, ordered by most recently created.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Requests feature is not enabled.","metadata":null}],"params":[],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/requests/show","name":"show","apis":[{"api_url":"/api/v1/requests/:url_token.json","http_method":"GET","short_description":"Get request details.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eRetrieves detailed information about a specific intake request, including configuration and submission counts.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Request not found or requests feature is not enabled.","metadata":null}],"params":[{"name":"url_token","full_name":"url_token","description":"\n\u003cp\u003eThe unique URL token of the request.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/requests/create","name":"create","apis":[{"api_url":"/api/v1/requests.json","http_method":"POST","short_description":"Create a request.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eCreates a new intake request form. Submitters can use the form’s URL to securely send passwords, files, or URLs to the form owner.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Requests feature is not enabled.","metadata":null},{"code":422,"description":"Validation failed.","metadata":null}],"params":[{"name":"request","full_name":"request","description":"\n\u003cp\u003eRequest attributes.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a Hash","expected_type":"hash","metadata":null,"show":true,"validations":[],"deprecated":false,"params":[{"name":"name","full_name":"request[name]","description":"\n\u003cp\u003eA descriptive name for the request form.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"description","full_name":"request[description]","description":"\n\u003cp\u003eInstructions displayed to submitters.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"allow_text","full_name":"request[allow_text]","description":"\n\u003cp\u003eAllow text/password submissions.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"allow_files","full_name":"request[allow_files]","description":"\n\u003cp\u003eAllow file uploads.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"allow_url","full_name":"request[allow_url]","description":"\n\u003cp\u003eAllow URL submissions.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"max_submissions","full_name":"request[max_submissions]","description":"\n\u003cp\u003eMaximum number of submissions before auto-expiry.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"expire_after_days","full_name":"request[expire_after_days]","description":"\n\u003cp\u003eExpire the request form after this many days.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"push_expire_after_days","full_name":"request[push_expire_after_days]","description":"\n\u003cp\u003eDefault expiration days for submitted pushes.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"push_expire_after_views","full_name":"request[push_expire_after_views]","description":"\n\u003cp\u003eDefault expiration views for submitted pushes.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false}]}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/requests/update","name":"update","apis":[{"api_url":"/api/v1/requests/:url_token.json","http_method":"PUT","short_description":"Update a request.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eUpdates an existing intake request form. Only the request owner can update it.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Request not found or requests feature is not enabled.","metadata":null},{"code":422,"description":"Validation failed.","metadata":null}],"params":[{"name":"url_token","full_name":"url_token","description":"\n\u003cp\u003eThe unique URL token of the request.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"request","full_name":"request","description":"\n\u003cp\u003eRequest attributes to update.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a Hash","expected_type":"hash","metadata":null,"show":true,"validations":[],"deprecated":false,"params":[{"name":"name","full_name":"request[name]","description":"\n\u003cp\u003eA descriptive name for the request form.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"description","full_name":"request[description]","description":"\n\u003cp\u003eInstructions displayed to submitters.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"allow_text","full_name":"request[allow_text]","description":"\n\u003cp\u003eAllow text/password submissions.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"allow_files","full_name":"request[allow_files]","description":"\n\u003cp\u003eAllow file uploads.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"allow_url","full_name":"request[allow_url]","description":"\n\u003cp\u003eAllow URL submissions.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"max_submissions","full_name":"request[max_submissions]","description":"\n\u003cp\u003eMaximum number of submissions before auto-expiry.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"expire_after_days","full_name":"request[expire_after_days]","description":"\n\u003cp\u003eExpire the request form after this many days.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"push_expire_after_days","full_name":"request[push_expire_after_days]","description":"\n\u003cp\u003eDefault expiration days for submitted pushes.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"push_expire_after_views","full_name":"request[push_expire_after_views]","description":"\n\u003cp\u003eDefault expiration views for submitted pushes.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false}]}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/requests/destroy","name":"destroy","apis":[{"api_url":"/api/v1/requests/:url_token.json","http_method":"DELETE","short_description":"Expire a request.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eExpires an intake request form. The form will no longer accept new submissions. Previously submitted pushes are not affected.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Request not found or requests feature is not enabled.","metadata":null}],"params":[{"name":"url_token","full_name":"url_token","description":"\n\u003cp\u003eThe unique URL token of the request.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true}],"headers":[],"deprecated":false},"team_invitations":{"doc_url":"/api/1.5/team_invitations","id":"team_invitations","api_url":"","name":"Team Invitations","short_description":"Manage team invitations.","full_description":"","version":"1.5","formats":null,"metadata":null,"methods":[{"doc_url":"/api/1.5/team_invitations/index","name":"index","apis":[{"api_url":"/api/v1/teams/:team_slug/invitations.json","http_method":"GET","short_description":"List pending invitations.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eReturns all pending invitations for the specified team, ordered by most recent. Any team member can view pending invitations.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Team not found or teams feature is not enabled.","metadata":null}],"params":[{"name":"team_slug","full_name":"team_slug","description":"\n\u003cp\u003eThe slug of the team.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/team_invitations/create","name":"create","apis":[{"api_url":"/api/v1/teams/:team_slug/invitations.json","http_method":"POST","short_description":"Send an invitation.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eSends an invitation to join the team. Only team admins and owners can send invitations. The invitee will receive an email with instructions.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":403,"description":"Forbidden - you must be a team admin.","metadata":null},{"code":404,"description":"Team not found or teams feature is not enabled.","metadata":null},{"code":422,"description":"Validation failed (e.g. duplicate invitation, invalid email).","metadata":null}],"params":[{"name":"team_slug","full_name":"team_slug","description":"\n\u003cp\u003eThe slug of the team.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"email","full_name":"email","description":"\n\u003cp\u003eEmail address of the person to invite.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"role","full_name":"role","description":"\n\u003cp\u003eRole for the invitee. Defaults to ‘member’.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003emember\u003c/code\u003e, \u003ccode\u003eadmin\u003c/code\u003e.","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/team_invitations/destroy","name":"destroy","apis":[{"api_url":"/api/v1/teams/:team_slug/invitations/:id.json","http_method":"DELETE","short_description":"Revoke an invitation.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eRevokes a pending invitation. Only team admins and owners can revoke invitations. The invitation link will no longer be valid.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":403,"description":"Forbidden - you must be a team admin.","metadata":null},{"code":404,"description":"Team or invitation not found.","metadata":null}],"params":[{"name":"team_slug","full_name":"team_slug","description":"\n\u003cp\u003eThe slug of the team.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"id","full_name":"id","description":"\n\u003cp\u003eThe ID of the invitation to revoke.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/team_invitations/accept","name":"accept","apis":[{"api_url":"/api/v1/teams/invitations/:token/accept.json","http_method":"POST","short_description":"Accept a team invitation.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eAccepts a team invitation using the invitation token. The authenticated user will be added to the team with the role specified in the invitation.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Invitation not found or teams feature not enabled.","metadata":null},{"code":422,"description":"Already a team member, invitation expired, or already accepted.","metadata":null}],"params":[{"name":"token","full_name":"token","description":"\n\u003cp\u003eThe invitation token.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true}],"headers":[],"deprecated":false},"team_members":{"doc_url":"/api/1.5/team_members","id":"team_members","api_url":"","name":"Team Members","short_description":"Manage team memberships.","full_description":"","version":"1.5","formats":null,"metadata":null,"methods":[{"doc_url":"/api/1.5/team_members/index","name":"index","apis":[{"api_url":"/api/v1/teams/:team_slug/members.json","http_method":"GET","short_description":"List team members.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eReturns all members of the specified team with their roles and join dates. Any team member can list the membership roster.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Team not found or teams feature is not enabled.","metadata":null}],"params":[{"name":"team_slug","full_name":"team_slug","description":"\n\u003cp\u003eThe slug of the team.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/team_members/create","name":"create","apis":[{"api_url":"/api/v1/teams/:team_slug/members.json","http_method":"POST","short_description":"Add a team member.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eAdds an existing user to the team by email address. Only team admins and owners can add members. The user must already have an account.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":403,"description":"Forbidden - you must be a team admin.","metadata":null},{"code":404,"description":"User not found with that email, or team not found.","metadata":null},{"code":422,"description":"User is already a member or validation failed.","metadata":null}],"params":[{"name":"team_slug","full_name":"team_slug","description":"\n\u003cp\u003eThe slug of the team.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"email","full_name":"email","description":"\n\u003cp\u003eEmail address of the user to add.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"role","full_name":"role","description":"\n\u003cp\u003eRole for the new member. Defaults to ‘member’.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003emember\u003c/code\u003e, \u003ccode\u003eadmin\u003c/code\u003e.","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/team_members/update","name":"update","apis":[{"api_url":"/api/v1/teams/:team_slug/members/:id.json","http_method":"PATCH","short_description":"Update a team member's role.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eUpdates a team member’s role. Only team admins and owners can change roles. The owner role cannot be changed.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":403,"description":"Forbidden - you must be a team admin.","metadata":null},{"code":404,"description":"Team or membership not found.","metadata":null},{"code":422,"description":"Cannot change owner role.","metadata":null}],"params":[{"name":"team_slug","full_name":"team_slug","description":"\n\u003cp\u003eThe slug of the team.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"id","full_name":"id","description":"\n\u003cp\u003eThe membership ID.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"role","full_name":"role","description":"\n\u003cp\u003eNew role for the member.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003emember\u003c/code\u003e, \u003ccode\u003eadmin\u003c/code\u003e.","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/team_members/destroy","name":"destroy","apis":[{"api_url":"/api/v1/teams/:team_slug/members/:id.json","http_method":"DELETE","short_description":"Remove a team member.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eRemoves a member from the team. Only admins and owners can remove members, subject to role hierarchy restrictions.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":403,"description":"Forbidden - cannot remove this member.","metadata":null},{"code":404,"description":"Team or membership not found.","metadata":null}],"params":[{"name":"team_slug","full_name":"team_slug","description":"\n\u003cp\u003eThe slug of the team.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"id","full_name":"id","description":"\n\u003cp\u003eThe membership ID of the member to remove.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true}],"headers":[],"deprecated":false},"team_policies":{"doc_url":"/api/1.5/team_policies","id":"team_policies","api_url":"","name":"Team Policies","short_description":"View and manage team push policies.","full_description":"","version":"1.5","formats":null,"metadata":null,"methods":[{"doc_url":"/api/1.5/team_policies/show","name":"show","apis":[{"api_url":"/api/v1/teams/:team_id/policy.json","http_method":"GET","short_description":"Get the team push policy.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eReturns the full push policy for a team, including defaults, forced settings, hidden features, and limits per push kind. Only team admins and owners can access this endpoint.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":403,"description":"Forbidden - you must be a team admin.","metadata":null},{"code":404,"description":"Team not found or teams feature is not enabled.","metadata":null}],"params":[{"name":"team_id","full_name":"team_id","description":"\n\u003cp\u003eThe team slug.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/team_policies/update","name":"update","apis":[{"api_url":"/api/v1/teams/:team_id/policy.json","http_method":"PUT","short_description":"Update the team push policy.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eReplaces the team push policy with the provided JSON hash. The policy controls defaults, forced settings, hidden features, and limits for each push kind. Only team admins and owners can update the policy.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":403,"description":"Forbidden - you must be a team admin.","metadata":null},{"code":404,"description":"Team not found or teams feature is not enabled.","metadata":null},{"code":422,"description":"Validation failed.","metadata":null}],"params":[{"name":"team_id","full_name":"team_id","description":"\n\u003cp\u003eThe team slug.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"policy","full_name":"policy","description":"\n\u003cp\u003eThe policy JSON hash.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a Hash","expected_type":"hash","metadata":null,"show":true,"validations":[],"deprecated":false,"params":[{"name":"defaults","full_name":"policy[defaults]","description":"\n\u003cp\u003eDefault values per push kind (pw, url, file, qr).\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Hash","expected_type":"hash","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"forced","full_name":"policy[forced]","description":"\n\u003cp\u003eForced (locked) settings per push kind.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Hash","expected_type":"hash","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"hidden_features","full_name":"policy[hidden_features]","description":"\n\u003cp\u003eFeatures hidden from team members.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Hash","expected_type":"hash","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"limits","full_name":"policy[limits]","description":"\n\u003cp\u003eMaximum values per push kind.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Hash","expected_type":"hash","metadata":null,"show":true,"validations":[],"deprecated":false}]}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true}],"headers":[],"deprecated":false},"team_two_factor":{"doc_url":"/api/1.5/team_two_factor","id":"team_two_factor","api_url":"","name":"Team Two-Factor","short_description":"Manage team 2FA enforcement.","full_description":"","version":"1.5","formats":null,"metadata":null,"methods":[{"doc_url":"/api/1.5/team_two_factor/show","name":"show","apis":[{"api_url":"/api/v1/teams/:team_slug/two_factor.json","http_method":"GET","short_description":"Get team 2FA compliance status.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eReturns the team’s 2FA enforcement status, compliance percentage, and list of non-compliant members.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Team not found or features not enabled.","metadata":null}],"params":[{"name":"team_slug","full_name":"team_slug","description":"\n\u003cp\u003eThe slug of the team.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/team_two_factor/update","name":"update","apis":[{"api_url":"/api/v1/teams/:team_slug/two_factor.json","http_method":"PATCH","short_description":"Toggle team 2FA enforcement.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eEnables or disables mandatory two-factor authentication for all team members. Only team admins and owners can change this setting.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":403,"description":"Forbidden - must be team admin.","metadata":null},{"code":404,"description":"Team not found or features not enabled.","metadata":null}],"params":[{"name":"team_slug","full_name":"team_slug","description":"\n\u003cp\u003eThe slug of the team.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"require_two_factor","full_name":"require_two_factor","description":"\n\u003cp\u003eWhether to require 2FA for all members.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/team_two_factor/remind","name":"remind","apis":[{"api_url":"/api/v1/teams/:team_slug/two_factor/remind.json","http_method":"POST","short_description":"Send 2FA reminder to non-compliant members.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eQueues reminder emails to team members who haven’t enabled 2FA. Only team admins and owners can send reminders.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":403,"description":"Forbidden - must be team admin.","metadata":null},{"code":404,"description":"Team not found or features not enabled.","metadata":null}],"params":[{"name":"team_slug","full_name":"team_slug","description":"\n\u003cp\u003eThe slug of the team.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true}],"headers":[],"deprecated":false},"teams":{"doc_url":"/api/1.5/teams","id":"teams","api_url":"","name":"Teams","short_description":"Manage teams and collaboration.","full_description":"","version":"1.5","formats":null,"metadata":null,"methods":[{"doc_url":"/api/1.5/teams/index","name":"index","apis":[{"api_url":"/api/v1/teams.json","http_method":"GET","short_description":"List your teams.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eReturns all teams the authenticated user belongs to, ordered by name. Requires authentication via API token.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Teams feature is not enabled.","metadata":null}],"params":[],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/teams/show","name":"show","apis":[{"api_url":"/api/v1/teams/:slug.json","http_method":"GET","short_description":"Get team details.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eRetrieves detailed information about a specific team, including owner and settings. The authenticated user must be a member of the team.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Team not found or teams feature is not enabled.","metadata":null}],"params":[{"name":"slug","full_name":"slug","description":"\n\u003cp\u003eThe unique slug identifier for the team.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/teams/create","name":"create","apis":[{"api_url":"/api/v1/teams.json","http_method":"POST","short_description":"Create a team.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eCreates a new team owned by the authenticated user. The slug is used as the unique URL identifier for the team.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Teams feature is not enabled.","metadata":null},{"code":422,"description":"Validation failed (e.g. name blank, slug taken).","metadata":null}],"params":[{"name":"team","full_name":"team","description":"\n\u003cp\u003eTeam attributes.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a Hash","expected_type":"hash","metadata":null,"show":true,"validations":[],"deprecated":false,"params":[{"name":"name","full_name":"team[name]","description":"\n\u003cp\u003eThe display name for the team.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"slug","full_name":"team[slug]","description":"\n\u003cp\u003eURL-friendly identifier. Must be unique.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"description","full_name":"team[description]","description":"\n\u003cp\u003eA short description of the team.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}]}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/teams/update","name":"update","apis":[{"api_url":"/api/v1/teams/:slug.json","http_method":"PUT","short_description":"Update a team.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eUpdates an existing team. Only team admins and owners can perform this action.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":403,"description":"Forbidden - you must be a team admin.","metadata":null},{"code":404,"description":"Team not found or teams feature is not enabled.","metadata":null},{"code":422,"description":"Validation failed.","metadata":null}],"params":[{"name":"slug","full_name":"slug","description":"\n\u003cp\u003eThe unique slug identifier for the team.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"team","full_name":"team","description":"\n\u003cp\u003eTeam attributes to update.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a Hash","expected_type":"hash","metadata":null,"show":true,"validations":[],"deprecated":false,"params":[{"name":"name","full_name":"team[name]","description":"\n\u003cp\u003eThe display name for the team.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"slug","full_name":"team[slug]","description":"\n\u003cp\u003eURL-friendly identifier. Must be unique.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"description","full_name":"team[description]","description":"\n\u003cp\u003eA short description of the team.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}]}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/teams/destroy","name":"destroy","apis":[{"api_url":"/api/v1/teams/:slug.json","http_method":"DELETE","short_description":"Delete a team.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003ePermanently deletes a team. Only the team owner can perform this action. All memberships and invitations are removed.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":403,"description":"Forbidden - only the team owner can delete.","metadata":null},{"code":404,"description":"Team not found or teams feature is not enabled.","metadata":null}],"params":[{"name":"slug","full_name":"slug","description":"\n\u003cp\u003eThe unique slug identifier for the team.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true}],"headers":[],"deprecated":false},"two_factor":{"doc_url":"/api/1.5/two_factor","id":"two_factor","api_url":"","name":"Two-Factor Authentication","short_description":"Manage 2FA for your account.","full_description":"","version":"1.5","formats":null,"metadata":null,"methods":[{"doc_url":"/api/1.5/two_factor/setup","name":"setup","apis":[{"api_url":"/api/v1/account/two_factor/setup.json","http_method":"POST","short_description":"Start 2FA setup.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eGenerates a new TOTP secret and returns the provisioning URI and QR code SVG for scanning with an authenticator app.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Two-factor authentication feature is not enabled.","metadata":null}],"params":[],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/two_factor/enable","name":"enable","apis":[{"api_url":"/api/v1/account/two_factor/enable.json","http_method":"POST","short_description":"Enable 2FA.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eVerifies the TOTP code and enables 2FA. Returns backup codes that should be stored securely for account recovery.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Two-factor authentication feature is not enabled.","metadata":null},{"code":422,"description":"Invalid OTP code.","metadata":null}],"params":[{"name":"otp_code","full_name":"otp_code","description":"\n\u003cp\u003eTOTP code from authenticator app.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/two_factor/disable","name":"disable","apis":[{"api_url":"/api/v1/account/two_factor.json","http_method":"DELETE","short_description":"Disable 2FA.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eDisables two-factor authentication. Requires password confirmation.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Two-factor authentication feature is not enabled.","metadata":null},{"code":422,"description":"Invalid password.","metadata":null}],"params":[{"name":"password","full_name":"password","description":"\n\u003cp\u003eYour current password for confirmation.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/two_factor/regenerate_backup_codes","name":"regenerate_backup_codes","apis":[{"api_url":"/api/v1/account/two_factor/backup_codes.json","http_method":"POST","short_description":"Regenerate backup codes.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eGenerates a new set of backup codes, invalidating all previous ones. Requires 2FA to be enabled.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Two-factor authentication feature is not enabled.","metadata":null},{"code":422,"description":"2FA not enabled on account.","metadata":null}],"params":[],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true}],"headers":[],"deprecated":false},"user_brandings":{"doc_url":"/api/1.5/user_brandings","id":"user_brandings","api_url":"","name":"User Branding","short_description":"Manage per-user branding settings.","full_description":"","version":"1.5","formats":null,"metadata":null,"methods":[{"doc_url":"/api/1.5/user_brandings/show","name":"show","apis":[{"api_url":"/api/v1/user_branding.json","http_method":"GET","short_description":"Get your branding settings.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eRetrieves the branding settings for the authenticated user. Returns default values if no branding has been configured yet.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"User branding feature is not enabled.","metadata":null}],"params":[],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/user_brandings/update","name":"update","apis":[{"api_url":"/api/v1/user_branding.json","http_method":"PUT","short_description":"Update your branding settings.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eUpdates branding settings for the authenticated user. These settings customize the appearance of push delivery pages for your recipients.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"User branding feature is not enabled.","metadata":null},{"code":422,"description":"Validation failed.","metadata":null}],"params":[{"name":"user_branding","full_name":"user_branding","description":"\n\u003cp\u003eBranding attributes.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a Hash","expected_type":"hash","metadata":null,"show":true,"validations":[],"deprecated":false,"params":[{"name":"brand_title","full_name":"user_branding[brand_title]","description":"\n\u003cp\u003eCustom title displayed on push delivery pages.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"brand_tagline","full_name":"user_branding[brand_tagline]","description":"\n\u003cp\u003eCustom tagline displayed below the title.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"primary_color","full_name":"user_branding[primary_color]","description":"\n\u003cp\u003ePrimary color hex code (e.g. ‘#3B82F6’).\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"background_color","full_name":"user_branding[background_color]","description":"\n\u003cp\u003eBackground color hex code.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"delivery_heading","full_name":"user_branding[delivery_heading]","description":"\n\u003cp\u003eCustom heading on the push delivery page.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"delivery_message","full_name":"user_branding[delivery_message]","description":"\n\u003cp\u003eCustom message body on delivery pages.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"delivery_footer","full_name":"user_branding[delivery_footer]","description":"\n\u003cp\u003eCustom footer text on delivery pages.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"white_label","full_name":"user_branding[white_label]","description":"\n\u003cp\u003eRemove PasswordPusher branding when true.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false}]}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true}],"headers":[],"deprecated":false},"user_policies":{"doc_url":"/api/1.5/user_policies","id":"user_policies","api_url":"","name":"User_policies","short_description":null,"full_description":"","version":"1.5","formats":null,"metadata":null,"methods":[{"doc_url":"/api/1.5/user_policies/show","name":"show","apis":[{"api_url":"/api/v1/user_policy.json","http_method":"GET","short_description":"Retrieve your push defaults","deprecated":null}],"formats":["json"],"full_description":"\n\u003cp\u003eReturns the current user’s personal push default settings.\u003c/p\u003e\n","errors":[],"params":[],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/user_policies/update","name":"update","apis":[{"api_url":"/api/v1/user_policy.json","http_method":"PUT","short_description":"Update your push defaults","deprecated":null}],"formats":["json"],"full_description":"\n\u003cp\u003eUpdate the current user’s personal push default settings. Only provided fields are updated.\u003c/p\u003e\n","errors":[],"params":[{"name":"user_policy","full_name":"user_policy","description":"\n\u003cp\u003eUser policy attributes\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a Hash","expected_type":"hash","metadata":null,"show":true,"validations":[],"deprecated":false,"params":[{"name":"pw_expire_after_days","full_name":"user_policy[pw_expire_after_days]","description":"\n\u003cp\u003eDefault days for password pushes\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"pw_expire_after_views","full_name":"user_policy[pw_expire_after_views]","description":"\n\u003cp\u003eDefault views for password pushes\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"pw_retrieval_step","full_name":"user_policy[pw_retrieval_step]","description":"\n\u003cp\u003eDefault retrieval step for password pushes\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"pw_deletable_by_viewer","full_name":"user_policy[pw_deletable_by_viewer]","description":"\n\u003cp\u003eDefault deletable for password pushes\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"url_expire_after_days","full_name":"user_policy[url_expire_after_days]","description":"\n\u003cp\u003eDefault days for URL pushes\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"url_expire_after_views","full_name":"user_policy[url_expire_after_views]","description":"\n\u003cp\u003eDefault views for URL pushes\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"url_retrieval_step","full_name":"user_policy[url_retrieval_step]","description":"\n\u003cp\u003eDefault retrieval step for URL pushes\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"file_expire_after_days","full_name":"user_policy[file_expire_after_days]","description":"\n\u003cp\u003eDefault days for file pushes\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"file_expire_after_views","full_name":"user_policy[file_expire_after_views]","description":"\n\u003cp\u003eDefault views for file pushes\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"file_retrieval_step","full_name":"user_policy[file_retrieval_step]","description":"\n\u003cp\u003eDefault retrieval step for file pushes\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"file_deletable_by_viewer","full_name":"user_policy[file_deletable_by_viewer]","description":"\n\u003cp\u003eDefault deletable for file pushes\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"qr_expire_after_days","full_name":"user_policy[qr_expire_after_days]","description":"\n\u003cp\u003eDefault days for QR pushes\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"qr_expire_after_views","full_name":"user_policy[qr_expire_after_views]","description":"\n\u003cp\u003eDefault views for QR pushes\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a Integer","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"qr_retrieval_step","full_name":"user_policy[qr_retrieval_step]","description":"\n\u003cp\u003eDefault retrieval step for QR pushes\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"qr_deletable_by_viewer","full_name":"user_policy[qr_deletable_by_viewer]","description":"\n\u003cp\u003eDefault deletable for QR pushes\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false}]}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true}],"headers":null,"deprecated":null},"version":{"doc_url":"/api/1.5/version","id":"version","api_url":"","name":"Version","short_description":null,"full_description":"","version":"1.5","formats":null,"metadata":null,"methods":[{"doc_url":"/api/1.5/version/show","name":"show","apis":[{"api_url":"/api/v1/version.json","http_method":"GET","short_description":"Get the version details of the application and the API.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cspan id=\"label-Version+Information\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch2 id=\"version-information\"\u003e\u003ca href=\"#version-information\"\u003eVersion Information\u003c/a\u003e\u003c/h2\u003e\n\n\u003cp\u003eRetrieves the current application version, API version, edition and other information.\u003c/p\u003e\n\n\u003cspan id=\"label-Example+Request\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch3 id=\"example-request\"\u003e\u003ca href=\"#example-request\"\u003eExample Request\u003c/a\u003e\u003c/h3\u003e\n\n\u003cpre\u003ecurl -X GET \\\n  -H \u0026quot;Authorization: Bearer MyAPIToken\u0026quot; \\\n  https://pwpush.com/api/v1/version.json\u003c/pre\u003e\n\n\u003cspan id=\"label-Example+Response\" class=\"legacy-anchor\"\u003e\u003c/span\u003e\n\u003ch3 id=\"example-response\"\u003e\u003ca href=\"#example-response\"\u003eExample Response\u003c/a\u003e\u003c/h3\u003e\n\n\u003cpre class=\"ruby\"\u003e{\n  \u003cspan class=\"ruby-value\"\u003e\u0026quot;application_version\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-string\"\u003e\u0026quot;2.1.0\u0026quot;\u003c/span\u003e,\n  \u003cspan class=\"ruby-value\"\u003e\u0026quot;api_version\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-string\"\u003e\u0026quot;1\u0026quot;\u003c/span\u003e,\n  \u003cspan class=\"ruby-value\"\u003e\u0026quot;edition\u0026quot;:\u003c/span\u003e \u003cspan class=\"ruby-string\"\u003e\u0026quot;oss\u0026quot;\u003c/span\u003e\n}\n\u003c/pre\u003e\n","errors":[],"params":[],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true}],"headers":null,"deprecated":null},"webhooks":{"doc_url":"/api/1.5/webhooks","id":"webhooks","api_url":"","name":"Webhooks","short_description":"Manage webhook endpoints for push event notifications.","full_description":"","version":"1.5","formats":null,"metadata":null,"methods":[{"doc_url":"/api/1.5/webhooks/index","name":"index","apis":[{"api_url":"/api/v1/webhooks.json","http_method":"GET","short_description":"List your webhooks.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eReturns all webhooks belonging to the authenticated user, ordered by creation date descending. Requires authentication via API token.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Webhooks feature is not enabled.","metadata":null}],"params":[],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/webhooks/show","name":"show","apis":[{"api_url":"/api/v1/webhooks/:id.json","http_method":"GET","short_description":"Get webhook details with recent deliveries.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eRetrieves a specific webhook with its 20 most recent delivery attempts. The authenticated user must own the webhook.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Webhook not found or webhooks feature is not enabled.","metadata":null}],"params":[{"name":"id","full_name":"id","description":"\n\u003cp\u003eThe webhook ID.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/webhooks/create","name":"create","apis":[{"api_url":"/api/v1/webhooks.json","http_method":"POST","short_description":"Create a webhook.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eCreates a new webhook for the authenticated user. A signing secret is auto-generated. The number of webhooks per user is limited.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Webhooks feature is not enabled.","metadata":null},{"code":422,"description":"Validation failed or max webhook limit reached.","metadata":null}],"params":[{"name":"webhook","full_name":"webhook","description":"\n\u003cp\u003eWebhook attributes.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a Hash","expected_type":"hash","metadata":null,"show":true,"validations":[],"deprecated":false,"params":[{"name":"url","full_name":"webhook[url]","description":"\n\u003cp\u003eThe HTTP(S) URL to receive POST notifications.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"enabled","full_name":"webhook[enabled]","description":"\n\u003cp\u003eWhether the webhook is active. Defaults to true.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"events","full_name":"webhook[events]","description":"\n\u003cp\u003eArray of event types to subscribe to (e.g. push.created, push.viewed).\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be an array of String","expected_type":"array","metadata":null,"show":true,"validations":[],"deprecated":false}]}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/webhooks/update","name":"update","apis":[{"api_url":"/api/v1/webhooks/:id.json","http_method":"PUT","short_description":"Update a webhook.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eUpdates an existing webhook. Only the webhook owner can perform this action.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Webhook not found or webhooks feature is not enabled.","metadata":null},{"code":422,"description":"Validation failed.","metadata":null}],"params":[{"name":"id","full_name":"id","description":"\n\u003cp\u003eThe webhook ID.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"webhook","full_name":"webhook","description":"\n\u003cp\u003eWebhook attributes to update.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a Hash","expected_type":"hash","metadata":null,"show":true,"validations":[],"deprecated":false,"params":[{"name":"url","full_name":"webhook[url]","description":"\n\u003cp\u003eThe HTTP(S) URL to receive POST notifications.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be a String","expected_type":"string","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"enabled","full_name":"webhook[enabled]","description":"\n\u003cp\u003eWhether the webhook is active.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be one of: \u003ccode\u003etrue\u003c/code\u003e, \u003ccode\u003efalse\u003c/code\u003e, \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e0\u003c/code\u003e.","expected_type":"boolean","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"events","full_name":"webhook[events]","description":"\n\u003cp\u003eArray of event types to subscribe to.\u003c/p\u003e\n","required":false,"allow_nil":false,"allow_blank":false,"validator":"Must be an array of String","expected_type":"array","metadata":null,"show":true,"validations":[],"deprecated":false}]}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/webhooks/destroy","name":"destroy","apis":[{"api_url":"/api/v1/webhooks/:id.json","http_method":"DELETE","short_description":"Delete a webhook.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003ePermanently deletes a webhook and all its delivery history. Only the webhook owner can perform this action.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":404,"description":"Webhook not found or webhooks feature is not enabled.","metadata":null}],"params":[{"name":"id","full_name":"id","description":"\n\u003cp\u003eThe webhook ID.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/webhooks/mark_delivery_read","name":"mark_delivery_read","apis":[{"api_url":"/api/v1/webhooks/:id/deliveries/:delivery_id/read.json","http_method":"POST","short_description":"Mark a webhook delivery as read.","deprecated":null}],"formats":["JSON"],"full_description":"","errors":[{"code":401,"description":"Unauthorized.","metadata":null},{"code":404,"description":"Not found.","metadata":null}],"params":[{"name":"id","full_name":"id","description":"\n\u003cp\u003eWebhook ID.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false},{"name":"delivery_id","full_name":"delivery_id","description":"\n\u003cp\u003eDelivery ID.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a number.","expected_type":"numeric","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true}],"headers":[],"deprecated":false},"settings":{"doc_url":"/api/1.5/settings","id":"settings","api_url":"","name":"Admin Settings","short_description":"View and modify global application settings.","full_description":"","version":"1.5","formats":null,"metadata":null,"methods":[{"doc_url":"/api/1.5/settings/index","name":"index","apis":[{"api_url":"/api/v1/admin/settings.json","http_method":"GET","short_description":"List all application settings.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eReturns all application settings with their current effective values, default values, and any active overrides. Admin access required.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":403,"description":"Forbidden - admin access required.","metadata":null}],"params":[],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true},{"doc_url":"/api/1.5/settings/update","name":"update","apis":[{"api_url":"/api/v1/admin/settings.json","http_method":"PATCH","short_description":"Bulk update application settings.","deprecated":null}],"formats":["JSON"],"full_description":"\n\u003cp\u003eUpdates one or more application settings. Each key should use dot notation matching the settings hierarchy (e.g. “pw.expire_after_days_default”). Changes take effect immediately. Admin access required.\u003c/p\u003e\n","errors":[{"code":401,"description":"Unauthorized - invalid or missing API token.","metadata":null},{"code":403,"description":"Forbidden - admin access required.","metadata":null}],"params":[{"name":"settings","full_name":"settings","description":"\n\u003cp\u003eHash of setting keys to new values.\u003c/p\u003e\n","required":true,"allow_nil":false,"allow_blank":false,"validator":"Must be a Hash","expected_type":"hash","metadata":null,"show":true,"validations":[],"deprecated":false}],"returns":[],"examples":[],"metadata":null,"see":[],"headers":[],"show":true}],"headers":[],"deprecated":false}}}}