{"openapi":"3.1.0","info":{"title":"RootCrak API","description":"RootCrak Support and platform HTTP API.\n\n## Versioning policy\n- **Stable prefix:** `/api/v1/*` (preferred for new integrations).\n- **Legacy alias:** `/api/*` remains supported with the same handlers (no silent breaks).\n- **OpenAPI:** `GET /api/openapi.json` and `GET /api/v1/openapi.json`.\n- **Breaking changes:** shipped under a new major prefix (e.g. `/api/v2/*`), not by changing v1 behavior in place.\n- **Deprecation:** documented in this description and on https://rootcrak.com/developers; target ≥90 days notice before removing a documented v1 behavior. Deprecation/Sunset headers may appear on doomed operations.\n\n## Rate limits\nDefault public policy: 30 requests / 60 seconds / client IP (some endpoints are stricter). Responses include `RateLimit-Limit`, `RateLimit-Remaining`, `RateLimit-Reset` (seconds). HTTP 429 includes `Retry-After`.\n\nHuman overview: https://rootcrak.com/developers · Product docs: https://rootcrak.com/docs","version":"1.0.0","x-api-versioning":{"style":"url-path","current":"v1","stable_prefix":"/api/v1","legacy_prefix":"/api","policy":"Additive dual-prefix; breaking changes require a new major prefix."}},"paths":{"/api/referral/config":{"get":{"tags":["referral"],"summary":"Config","operationId":"config_api_referral_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/referral/example":{"get":{"tags":["referral"],"summary":"Example","operationId":"example_api_referral_example_get","parameters":[{"name":"plan","in":"query","required":false,"schema":{"type":"string","default":"starter","title":"Plan"}},{"name":"months","in":"query","required":false,"schema":{"type":"integer","default":12,"title":"Months"}},{"name":"tier","in":"query","required":false,"schema":{"type":"string","default":"standard","title":"Tier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/referral/track":{"post":{"tags":["referral"],"summary":"Track","operationId":"track_api_referral_track_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/referral/me":{"get":{"tags":["referral"],"summary":"Me","operationId":"me_api_referral_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/referral/attribute":{"post":{"tags":["referral"],"summary":"Attribute","operationId":"attribute_api_referral_attribute_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttributeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/referral/code/check":{"get":{"tags":["referral"],"summary":"Code Check","operationId":"code_check_api_referral_code_check_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/referral/code/change":{"post":{"tags":["referral"],"summary":"Code Change","operationId":"code_change_api_referral_code_change_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/referral/payout/request":{"post":{"tags":["referral"],"summary":"Payout Request","operationId":"payout_request_api_referral_payout_request_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayoutBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/referral/partner/consume":{"post":{"tags":["referral"],"summary":"Partner Consume","operationId":"partner_consume_api_referral_partner_consume_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerConsumeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/referral/partner/apply":{"post":{"tags":["referral"],"summary":"Partner Apply","operationId":"partner_apply_api_referral_partner_apply_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerApplyBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/referral/admin/overview":{"get":{"tags":["referral"],"summary":"Admin Overview","operationId":"admin_overview_api_referral_admin_overview_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/referral/admin/tokens":{"post":{"tags":["referral"],"summary":"Admin Create Token","operationId":"admin_create_token_api_referral_admin_tokens_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenCreateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/referral/admin/tokens/revoke":{"post":{"tags":["referral"],"summary":"Admin Revoke Token","operationId":"admin_revoke_token_api_referral_admin_tokens_revoke_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenRevokeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/referral/admin/fraud/action":{"post":{"tags":["referral"],"summary":"Admin Fraud","operationId":"admin_fraud_api_referral_admin_fraud_action_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudActionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/referral/admin/payout/action":{"post":{"tags":["referral"],"summary":"Admin Payout","operationId":"admin_payout_api_referral_admin_payout_action_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayoutActionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/referral/admin/release-holds":{"post":{"tags":["referral"],"summary":"Admin Release Holds","operationId":"admin_release_holds_api_referral_admin_release_holds_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/support/chat":{"post":{"summary":"Chat","operationId":"chat_api_support_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/support/email":{"post":{"summary":"Send Email","description":"Send an email to info@rootcrak.com from the support chat","operationId":"send_email_api_support_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/support/health":{"get":{"summary":"Health","operationId":"health_api_support_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/pool/status":{"get":{"summary":"Pool Status","description":"Sandbox pool status — admin only (hides Daytona IDs / capacity details).","operationId":"pool_status_api_pool_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/pricing/contact":{"post":{"summary":"Pricing Contact","description":"Contact form: notify team + save to Firestore + AI-powered reply to user","operationId":"pricing_contact_api_pricing_contact_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Req"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/domains/usage":{"get":{"summary":"Domain Usage","description":"Check user's current usage vs limits.","operationId":"domain_usage_api_domains_usage_get","parameters":[{"name":"userId","in":"query","required":true,"schema":{"type":"string","title":"Userid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/domains/add":{"post":{"summary":"Add Domain","description":"Add a domain with plan enforcement. Free users: max 3 domains, 1 scan each.","operationId":"add_domain_api_domains_add_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddDomainRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/domains/delete":{"post":{"summary":"Delete Domain","description":"Delete a domain with authorization check.","operationId":"delete_domain_api_domains_delete_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/profile":{"post":{"summary":"Update Profile","description":"Save user profile data to Firestore.","operationId":"update_profile_api_user_profile_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Get Profile","description":"Get user profile data from Firestore.","operationId":"get_profile_api_user_profile_get","parameters":[{"name":"userId","in":"query","required":true,"schema":{"type":"string","title":"Userid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/notifications":{"post":{"summary":"Update Notification Prefs","description":"Save notification preferences. SMS critical alerts are paid-only at send time.","operationId":"update_notification_prefs_api_user_notifications_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPrefsUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/telegram/link":{"post":{"summary":"Telegram Create Link","description":"Create a Telegram deep-link code for the current user.","operationId":"telegram_create_link_api_user_telegram_link_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/telegram/unlink":{"post":{"summary":"Telegram Unlink","description":"Disconnect Telegram from the user account.","operationId":"telegram_unlink_api_user_telegram_unlink_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/telegram/webhook":{"post":{"summary":"Telegram Webhook","description":"Telegram Bot API webhook receiver.","operationId":"telegram_webhook_api_telegram_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/telegram/setup-webhook":{"post":{"summary":"Telegram Setup Webhook","description":"Admin helper: register webhook URL with Telegram.","operationId":"telegram_setup_webhook_api_telegram_setup_webhook_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/check":{"get":{"summary":"Admin Check","description":"Check if the authenticated user has admin access.","operationId":"admin_check_api_admin_check_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/stats":{"get":{"summary":"Admin Stats","description":"Get admin dashboard statistics.","operationId":"admin_stats_api_admin_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/users":{"get":{"summary":"Admin Users","description":"List users with pagination. Returns real Firestore total (not page size).","operationId":"admin_users_api_admin_users_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":500,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/{user_id}/plan":{"patch":{"summary":"Admin Update Plan","description":"Update a user's plan. Body: {plan: 'free'|'starter'|'pro'|'business'|'enterprise'}","operationId":"admin_update_plan_api_admin_users__user_id__plan_patch","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/track/pageview":{"post":{"summary":"Track Pageview","description":"Log a page view to Firestore with rate limiting. Accepts text/plain or application/json.","operationId":"track_pageview_api_track_pageview_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/pageviews":{"get":{"summary":"Admin Pageviews","description":"Get page view analytics. Admin only.","operationId":"admin_pageviews_api_admin_pageviews_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"7d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/track/activity":{"post":{"summary":"Track Activity","description":"Log user activity to Firestore and update user doc. Rate limited. Accepts text/plain or application/json.","operationId":"track_activity_api_track_activity_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/activity":{"get":{"summary":"Admin Activity","description":"Get user activity analytics. Admin only.","operationId":"admin_activity_api_admin_activity_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/subscriptions":{"get":{"summary":"Admin Subscriptions","description":"Get Stripe subscription data for all users. Admin only.","operationId":"admin_subscriptions_api_admin_subscriptions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/subscriptions/{stripe_sub_id}/cancel":{"patch":{"summary":"Admin Cancel Subscription","description":"Cancel a Stripe subscription. Admin only.","operationId":"admin_cancel_subscription_api_admin_subscriptions__stripe_sub_id__cancel_patch","parameters":[{"name":"stripe_sub_id","in":"path","required":true,"schema":{"type":"string","title":"Stripe Sub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/{user_id_detail}":{"get":{"summary":"Admin User Detail","description":"Get full user detail with activity. Admin only.","operationId":"admin_user_detail_api_admin_users__user_id_detail__get","parameters":[{"name":"user_id_detail","in":"path","required":true,"schema":{"type":"string","title":"User Id Detail"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/payments/create-checkout":{"post":{"summary":"Create Checkout","description":"Create a Stripe Checkout Session for domain or Shield subscription.","operationId":"create_checkout_api_payments_create_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/payments/create-portal":{"post":{"summary":"Create Portal","description":"Create a Stripe Customer Portal session.","operationId":"create_portal_api_payments_create_portal_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortalRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/payments/webhook":{"post":{"summary":"Stripe Webhook","description":"Handle Stripe webhook events.","operationId":"stripe_webhook_api_payments_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/payments/subscription":{"get":{"summary":"Get Subscription","description":"Get caller's domain + Shield subscription status (Bearer required).","operationId":"get_subscription_api_payments_subscription_get","parameters":[{"name":"userId","in":"query","required":false,"schema":{"type":"string","default":"","title":"Userid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/payments/invoices":{"get":{"summary":"Get Invoices","description":"Fetch invoice history from Stripe for the authenticated user.","operationId":"get_invoices_api_payments_invoices_get","parameters":[{"name":"userId","in":"query","required":false,"schema":{"type":"string","default":"","title":"Userid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stripe-audit/connect":{"post":{"summary":"Stripe Audit Connect","description":"Connect a Stripe account for audit. Stores the read-only API key.","operationId":"stripe_audit_connect_api_stripe_audit_connect_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stripe-audit/check":{"get":{"summary":"Stripe Audit Check","description":"Run a fresh audit on a connected Stripe account.","operationId":"stripe_audit_check_api_stripe_audit_check_get","parameters":[{"name":"userId","in":"query","required":true,"schema":{"type":"string","title":"Userid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stripe-audit/status":{"get":{"summary":"Stripe Audit Status","description":"Get current audit status and findings for a connected account.","operationId":"stripe_audit_status_api_stripe_audit_status_get","parameters":[{"name":"userId","in":"query","required":true,"schema":{"type":"string","title":"Userid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stripe-audit/history":{"get":{"summary":"Stripe Audit History","description":"Get audit history for a connected account.","operationId":"stripe_audit_history_api_stripe_audit_history_get","parameters":[{"name":"userId","in":"query","required":true,"schema":{"type":"string","title":"Userid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stripe-audit/disconnect":{"delete":{"summary":"Stripe Audit Disconnect","description":"Disconnect a Stripe account and remove stored API key.","operationId":"stripe_audit_disconnect_api_stripe_audit_disconnect_delete","parameters":[{"name":"userId","in":"query","required":true,"schema":{"type":"string","title":"Userid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clamav/register":{"post":{"summary":"Register Agent","operationId":"register_agent_api_clamav_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clamav/enroll":{"post":{"summary":"Enroll Agent","operationId":"enroll_agent_api_clamav_enroll_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrollmentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clamav/agents/{agent_id}/enrollment":{"post":{"summary":"Create Enrollment","operationId":"create_enrollment_api_clamav_agents__agent_id__enrollment_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clamav/agents/{agent_id}/control":{"post":{"summary":"Control Agent","operationId":"control_agent_api_clamav_agents__agent_id__control_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardControlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clamav/control/poll":{"post":{"summary":"Poll Control","operationId":"poll_control_api_clamav_control_poll_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentControlRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clamav/control/ack":{"post":{"summary":"Acknowledge Control","operationId":"acknowledge_control_api_clamav_control_ack_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentControlAckRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clamav/scan-start":{"post":{"summary":"Scan Start","operationId":"scan_start_api_clamav_scan_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResultRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clamav/scan-progress":{"post":{"summary":"Scan Progress","operationId":"scan_progress_api_clamav_scan_progress_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentProgressRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clamav/result":{"post":{"summary":"Scan Result","operationId":"scan_result_api_clamav_result_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResultRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clamav/agents":{"get":{"summary":"List Agents","operationId":"list_agents_api_clamav_agents_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/clamav/scans":{"get":{"summary":"List Scans","operationId":"list_scans_api_clamav_scans_get","parameters":[{"name":"agentId","in":"query","required":true,"schema":{"type":"string","title":"Agentid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clamav/agents/{agent_id}":{"delete":{"summary":"Delete Agent","operationId":"delete_agent_api_clamav_agents__agent_id__delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/verify/regenerate":{"post":{"summary":"Regenerate Verify","description":"Regenerate the public verify page for a domain.","operationId":"regenerate_verify_api_verify_regenerate_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/snapshot/stats":{"get":{"summary":"Snapshot Stats","description":"Return $ROOT Solana snapshot metadata.","operationId":"snapshot_stats_api_snapshot_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/snapshot/{wallet}":{"get":{"summary":"Snapshot Lookup","description":"Check if a Solana wallet is in the $ROOT snapshot.","operationId":"snapshot_lookup_api_snapshot__wallet__get","parameters":[{"name":"wallet","in":"path","required":true,"schema":{"type":"string","title":"Wallet"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/snapshot":{"get":{"summary":"Snapshot All","description":"Return all snapshot holders (paginated). Use ?limit=N&page=token","operationId":"snapshot_all_api_snapshot_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/scan/drainer":{"post":{"summary":"Drainer Scan Endpoint","description":"Run a drainer scan on a domain/URL.\n\nBody: {\"domain\": \"example.com\"}\nReturns the full drainer orchestrator verdict as JSON.","operationId":"drainer_scan_endpoint_api_scan_drainer_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/platform-stats":{"get":{"summary":"Platform Stats","description":"Public live aggregate for Threat Pulse (websites + drainer scans).","operationId":"platform_stats_api_platform_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/scan/drainer/usage":{"get":{"summary":"Drainer Scan Usage","description":"Return current drainer scanner usage metrics.","operationId":"drainer_scan_usage_api_scan_drainer_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/agent-authorize":{"post":{"summary":"Agent Authorize","description":"Create a Bland.ai Web Agent session token for browser-based voice calls.\n\nThe client sends { \"agentId\": \"...\" } and we proxy to Bland's admin API\nto create a session, returning a token that the browser SDK can use\nto connect directly to Bland via WebSocket/WebRTC.\n\nPublic homepage widget only — rate-limited (5/IP/hour) and agent allowlisted.","operationId":"agent_authorize_api_agent_authorize_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/phone/call":{"post":{"summary":"Phone Call","description":"Initiate an outbound voice call via Bland.ai.\n\nAccepts a phone number, calls it from the RootCrak line using Bland.ai,\nand returns the call_id so the frontend can track status.","operationId":"phone_call_api_phone_call_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneCallRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/token/live":{"get":{"summary":"Token Live","description":"Return live $ROOT token data from DexScreener.\n\nUses a 30-second in-memory cache to avoid rate limiting.\nNo auth required — internal endpoint for Bland / dashboard use.","operationId":"token_live_api_token_live_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/referral/config":{"get":{"tags":["referral"],"summary":"Config","operationId":"config_api_referral_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/referral/example":{"get":{"tags":["referral"],"summary":"Example","operationId":"example_api_referral_example_get","parameters":[{"name":"plan","in":"query","required":false,"schema":{"type":"string","default":"starter","title":"Plan"}},{"name":"months","in":"query","required":false,"schema":{"type":"integer","default":12,"title":"Months"}},{"name":"tier","in":"query","required":false,"schema":{"type":"string","default":"standard","title":"Tier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/referral/track":{"post":{"tags":["referral"],"summary":"Track","operationId":"track_api_referral_track_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/referral/me":{"get":{"tags":["referral"],"summary":"Me","operationId":"me_api_referral_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/referral/attribute":{"post":{"tags":["referral"],"summary":"Attribute","operationId":"attribute_api_referral_attribute_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttributeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/referral/code/check":{"get":{"tags":["referral"],"summary":"Code Check","operationId":"code_check_api_referral_code_check_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/referral/code/change":{"post":{"tags":["referral"],"summary":"Code Change","operationId":"code_change_api_referral_code_change_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/referral/payout/request":{"post":{"tags":["referral"],"summary":"Payout Request","operationId":"payout_request_api_referral_payout_request_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayoutBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/referral/partner/consume":{"post":{"tags":["referral"],"summary":"Partner Consume","operationId":"partner_consume_api_referral_partner_consume_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerConsumeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/referral/partner/apply":{"post":{"tags":["referral"],"summary":"Partner Apply","operationId":"partner_apply_api_referral_partner_apply_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerApplyBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/referral/admin/overview":{"get":{"tags":["referral"],"summary":"Admin Overview","operationId":"admin_overview_api_referral_admin_overview_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/referral/admin/tokens":{"post":{"tags":["referral"],"summary":"Admin Create Token","operationId":"admin_create_token_api_referral_admin_tokens_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenCreateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/referral/admin/tokens/revoke":{"post":{"tags":["referral"],"summary":"Admin Revoke Token","operationId":"admin_revoke_token_api_referral_admin_tokens_revoke_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenRevokeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/referral/admin/fraud/action":{"post":{"tags":["referral"],"summary":"Admin Fraud","operationId":"admin_fraud_api_referral_admin_fraud_action_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudActionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/referral/admin/payout/action":{"post":{"tags":["referral"],"summary":"Admin Payout","operationId":"admin_payout_api_referral_admin_payout_action_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayoutActionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/referral/admin/release-holds":{"post":{"tags":["referral"],"summary":"Admin Release Holds","operationId":"admin_release_holds_api_referral_admin_release_holds_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/support/chat":{"post":{"summary":"Chat","operationId":"chat_api_support_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/support/email":{"post":{"summary":"Send Email","description":"Send an email to info@rootcrak.com from the support chat","operationId":"send_email_api_support_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/support/health":{"get":{"summary":"Health","operationId":"health_api_support_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/pool/status":{"get":{"summary":"Pool Status","description":"Sandbox pool status — admin only (hides Daytona IDs / capacity details).","operationId":"pool_status_api_pool_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/pricing/contact":{"post":{"summary":"Pricing Contact","description":"Contact form: notify team + save to Firestore + AI-powered reply to user","operationId":"pricing_contact_api_pricing_contact_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Req"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/domains/usage":{"get":{"summary":"Domain Usage","description":"Check user's current usage vs limits.","operationId":"domain_usage_api_domains_usage_get","parameters":[{"name":"userId","in":"query","required":true,"schema":{"type":"string","title":"Userid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/domains/add":{"post":{"summary":"Add Domain","description":"Add a domain with plan enforcement. Free users: max 3 domains, 1 scan each.","operationId":"add_domain_api_domains_add_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddDomainRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/domains/delete":{"post":{"summary":"Delete Domain","description":"Delete a domain with authorization check.","operationId":"delete_domain_api_domains_delete_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/user/profile":{"post":{"summary":"Update Profile","description":"Save user profile data to Firestore.","operationId":"update_profile_api_user_profile_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Get Profile","description":"Get user profile data from Firestore.","operationId":"get_profile_api_user_profile_get","parameters":[{"name":"userId","in":"query","required":true,"schema":{"type":"string","title":"Userid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/user/notifications":{"post":{"summary":"Update Notification Prefs","description":"Save notification preferences. SMS critical alerts are paid-only at send time.","operationId":"update_notification_prefs_api_user_notifications_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPrefsUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/user/telegram/link":{"post":{"summary":"Telegram Create Link","description":"Create a Telegram deep-link code for the current user.","operationId":"telegram_create_link_api_user_telegram_link_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/user/telegram/unlink":{"post":{"summary":"Telegram Unlink","description":"Disconnect Telegram from the user account.","operationId":"telegram_unlink_api_user_telegram_unlink_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/telegram/webhook":{"post":{"summary":"Telegram Webhook","description":"Telegram Bot API webhook receiver.","operationId":"telegram_webhook_api_telegram_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/telegram/setup-webhook":{"post":{"summary":"Telegram Setup Webhook","description":"Admin helper: register webhook URL with Telegram.","operationId":"telegram_setup_webhook_api_telegram_setup_webhook_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/check":{"get":{"summary":"Admin Check","description":"Check if the authenticated user has admin access.","operationId":"admin_check_api_admin_check_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/stats":{"get":{"summary":"Admin Stats","description":"Get admin dashboard statistics.","operationId":"admin_stats_api_admin_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/users":{"get":{"summary":"Admin Users","description":"List users with pagination. Returns real Firestore total (not page size).","operationId":"admin_users_api_admin_users_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":500,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/users/{user_id}/plan":{"patch":{"summary":"Admin Update Plan","description":"Update a user's plan. Body: {plan: 'free'|'starter'|'pro'|'business'|'enterprise'}","operationId":"admin_update_plan_api_admin_users__user_id__plan_patch","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/track/pageview":{"post":{"summary":"Track Pageview","description":"Log a page view to Firestore with rate limiting. Accepts text/plain or application/json.","operationId":"track_pageview_api_track_pageview_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/pageviews":{"get":{"summary":"Admin Pageviews","description":"Get page view analytics. Admin only.","operationId":"admin_pageviews_api_admin_pageviews_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"7d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/track/activity":{"post":{"summary":"Track Activity","description":"Log user activity to Firestore and update user doc. Rate limited. Accepts text/plain or application/json.","operationId":"track_activity_api_track_activity_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/activity":{"get":{"summary":"Admin Activity","description":"Get user activity analytics. Admin only.","operationId":"admin_activity_api_admin_activity_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/subscriptions":{"get":{"summary":"Admin Subscriptions","description":"Get Stripe subscription data for all users. Admin only.","operationId":"admin_subscriptions_api_admin_subscriptions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/subscriptions/{stripe_sub_id}/cancel":{"patch":{"summary":"Admin Cancel Subscription","description":"Cancel a Stripe subscription. Admin only.","operationId":"admin_cancel_subscription_api_admin_subscriptions__stripe_sub_id__cancel_patch","parameters":[{"name":"stripe_sub_id","in":"path","required":true,"schema":{"type":"string","title":"Stripe Sub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/users/{user_id_detail}":{"get":{"summary":"Admin User Detail","description":"Get full user detail with activity. Admin only.","operationId":"admin_user_detail_api_admin_users__user_id_detail__get","parameters":[{"name":"user_id_detail","in":"path","required":true,"schema":{"type":"string","title":"User Id Detail"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/create-checkout":{"post":{"summary":"Create Checkout","description":"Create a Stripe Checkout Session for domain or Shield subscription.","operationId":"create_checkout_api_payments_create_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/create-portal":{"post":{"summary":"Create Portal","description":"Create a Stripe Customer Portal session.","operationId":"create_portal_api_payments_create_portal_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortalRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/webhook":{"post":{"summary":"Stripe Webhook","description":"Handle Stripe webhook events.","operationId":"stripe_webhook_api_payments_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/payments/subscription":{"get":{"summary":"Get Subscription","description":"Get caller's domain + Shield subscription status (Bearer required).","operationId":"get_subscription_api_payments_subscription_get","parameters":[{"name":"userId","in":"query","required":false,"schema":{"type":"string","default":"","title":"Userid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/invoices":{"get":{"summary":"Get Invoices","description":"Fetch invoice history from Stripe for the authenticated user.","operationId":"get_invoices_api_payments_invoices_get","parameters":[{"name":"userId","in":"query","required":false,"schema":{"type":"string","default":"","title":"Userid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stripe-audit/connect":{"post":{"summary":"Stripe Audit Connect","description":"Connect a Stripe account for audit. Stores the read-only API key.","operationId":"stripe_audit_connect_api_stripe_audit_connect_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stripe-audit/check":{"get":{"summary":"Stripe Audit Check","description":"Run a fresh audit on a connected Stripe account.","operationId":"stripe_audit_check_api_stripe_audit_check_get","parameters":[{"name":"userId","in":"query","required":true,"schema":{"type":"string","title":"Userid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stripe-audit/status":{"get":{"summary":"Stripe Audit Status","description":"Get current audit status and findings for a connected account.","operationId":"stripe_audit_status_api_stripe_audit_status_get","parameters":[{"name":"userId","in":"query","required":true,"schema":{"type":"string","title":"Userid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stripe-audit/history":{"get":{"summary":"Stripe Audit History","description":"Get audit history for a connected account.","operationId":"stripe_audit_history_api_stripe_audit_history_get","parameters":[{"name":"userId","in":"query","required":true,"schema":{"type":"string","title":"Userid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stripe-audit/disconnect":{"delete":{"summary":"Stripe Audit Disconnect","description":"Disconnect a Stripe account and remove stored API key.","operationId":"stripe_audit_disconnect_api_stripe_audit_disconnect_delete","parameters":[{"name":"userId","in":"query","required":true,"schema":{"type":"string","title":"Userid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/clamav/register":{"post":{"summary":"Register Agent","operationId":"register_agent_api_clamav_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/clamav/enroll":{"post":{"summary":"Enroll Agent","operationId":"enroll_agent_api_clamav_enroll_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrollmentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/clamav/agents/{agent_id}/enrollment":{"post":{"summary":"Create Enrollment","operationId":"create_enrollment_api_clamav_agents__agent_id__enrollment_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/clamav/agents/{agent_id}/control":{"post":{"summary":"Control Agent","operationId":"control_agent_api_clamav_agents__agent_id__control_post","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardControlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/clamav/control/poll":{"post":{"summary":"Poll Control","operationId":"poll_control_api_clamav_control_poll_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentControlRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/clamav/control/ack":{"post":{"summary":"Acknowledge Control","operationId":"acknowledge_control_api_clamav_control_ack_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentControlAckRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/clamav/scan-start":{"post":{"summary":"Scan Start","operationId":"scan_start_api_clamav_scan_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResultRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/clamav/scan-progress":{"post":{"summary":"Scan Progress","operationId":"scan_progress_api_clamav_scan_progress_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentProgressRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/clamav/result":{"post":{"summary":"Scan Result","operationId":"scan_result_api_clamav_result_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResultRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/clamav/agents":{"get":{"summary":"List Agents","operationId":"list_agents_api_clamav_agents_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/clamav/scans":{"get":{"summary":"List Scans","operationId":"list_scans_api_clamav_scans_get","parameters":[{"name":"agentId","in":"query","required":true,"schema":{"type":"string","title":"Agentid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/clamav/agents/{agent_id}":{"delete":{"summary":"Delete Agent","operationId":"delete_agent_api_clamav_agents__agent_id__delete","parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/verify/regenerate":{"post":{"summary":"Regenerate Verify","description":"Regenerate the public verify page for a domain.","operationId":"regenerate_verify_api_verify_regenerate_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/snapshot/stats":{"get":{"summary":"Snapshot Stats","description":"Return $ROOT Solana snapshot metadata.","operationId":"snapshot_stats_api_snapshot_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/snapshot/{wallet}":{"get":{"summary":"Snapshot Lookup","description":"Check if a Solana wallet is in the $ROOT snapshot.","operationId":"snapshot_lookup_api_snapshot__wallet__get","parameters":[{"name":"wallet","in":"path","required":true,"schema":{"type":"string","title":"Wallet"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/snapshot":{"get":{"summary":"Snapshot All","description":"Return all snapshot holders (paginated). Use ?limit=N&page=token","operationId":"snapshot_all_api_snapshot_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/scan/drainer":{"post":{"summary":"Drainer Scan Endpoint","description":"Run a drainer scan on a domain/URL.\n\nBody: {\"domain\": \"example.com\"}\nReturns the full drainer orchestrator verdict as JSON.","operationId":"drainer_scan_endpoint_api_scan_drainer_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/platform-stats":{"get":{"summary":"Platform Stats","description":"Public live aggregate for Threat Pulse (websites + drainer scans).","operationId":"platform_stats_api_platform_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/scan/drainer/usage":{"get":{"summary":"Drainer Scan Usage","description":"Return current drainer scanner usage metrics.","operationId":"drainer_scan_usage_api_scan_drainer_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/agent-authorize":{"post":{"summary":"Agent Authorize","description":"Create a Bland.ai Web Agent session token for browser-based voice calls.\n\nThe client sends { \"agentId\": \"...\" } and we proxy to Bland's admin API\nto create a session, returning a token that the browser SDK can use\nto connect directly to Bland via WebSocket/WebRTC.\n\nPublic homepage widget only — rate-limited (5/IP/hour) and agent allowlisted.","operationId":"agent_authorize_api_agent_authorize_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/phone/call":{"post":{"summary":"Phone Call","description":"Initiate an outbound voice call via Bland.ai.\n\nAccepts a phone number, calls it from the RootCrak line using Bland.ai,\nand returns the call_id so the frontend can track status.","operationId":"phone_call_api_phone_call_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneCallRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/token/live":{"get":{"summary":"Token Live","description":"Return live $ROOT token data from DexScreener.\n\nUses a 30-second in-memory cache to avoid rate limiting.\nNo auth required — internal endpoint for Bland / dashboard use.","operationId":"token_live_api_token_live_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AddDomainRequest":{"properties":{"userId":{"type":"string","title":"Userid"},"domain":{"type":"string","title":"Domain"},"frequency":{"type":"string","title":"Frequency","default":"weekly"}},"type":"object","required":["userId","domain"],"title":"AddDomainRequest"},"AgentControlAckRequest":{"properties":{"agentId":{"type":"string","title":"Agentid"},"token":{"type":"string","title":"Token"},"action":{"type":"string","title":"Action"},"requestId":{"type":"string","title":"Requestid"}},"type":"object","required":["agentId","token","action","requestId"],"title":"AgentControlAckRequest"},"AgentControlRequest":{"properties":{"agentId":{"type":"string","title":"Agentid"},"token":{"type":"string","title":"Token"},"agentVersion":{"type":"string","title":"Agentversion","default":""},"os":{"type":"string","title":"Os","default":""},"scanning":{"type":"boolean","title":"Scanning","default":false}},"type":"object","required":["agentId","token"],"title":"AgentControlRequest"},"AgentProgressRequest":{"properties":{"agentId":{"type":"string","title":"Agentid"},"token":{"type":"string","title":"Token"},"scanId":{"type":"string","title":"Scanid"},"filesScanned":{"type":"integer","title":"Filesscanned","default":0},"totalFiles":{"type":"integer","title":"Totalfiles","default":0},"infected":{"type":"integer","title":"Infected","default":0},"errors":{"type":"integer","title":"Errors","default":0},"currentFile":{"type":"string","title":"Currentfile","default":""},"path":{"type":"string","title":"Path","default":""}},"type":"object","required":["agentId","token","scanId"],"title":"AgentProgressRequest"},"AgentResultRequest":{"properties":{"agentId":{"type":"string","title":"Agentid"},"token":{"type":"string","title":"Token"},"scanId":{"type":"string","title":"Scanid"},"findings":{"items":{},"type":"array","title":"Findings","default":[]},"stats":{"additionalProperties":true,"type":"object","title":"Stats","default":{}},"completedAt":{"type":"string","title":"Completedat","default":""},"agentVersion":{"type":"string","title":"Agentversion","default":""},"os":{"type":"string","title":"Os","default":""},"status":{"type":"string","title":"Status","default":""}},"type":"object","required":["agentId","token","scanId"],"title":"AgentResultRequest"},"AttributeBody":{"properties":{"code":{"type":"string","title":"Code"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","required":["code"],"title":"AttributeBody"},"ChatRequest":{"properties":{"userId":{"type":"string","title":"Userid"},"message":{"type":"string","title":"Message"},"sessionId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sessionid"}},"type":"object","required":["userId","message"],"title":"ChatRequest"},"ChatResponse":{"properties":{"reply":{"type":"string","title":"Reply"},"sessionId":{"type":"string","title":"Sessionid"},"canEmail":{"type":"boolean","title":"Canemail","default":false},"emailSuggested":{"type":"boolean","title":"Emailsuggested","default":false}},"type":"object","required":["reply","sessionId"],"title":"ChatResponse"},"CheckoutRequest":{"properties":{"userId":{"type":"string","title":"Userid"},"email":{"type":"string","title":"Email"},"planId":{"type":"string","title":"Planid"},"successUrl":{"type":"string","title":"Successurl","default":""},"cancelUrl":{"type":"string","title":"Cancelurl","default":""},"quantity":{"type":"integer","title":"Quantity","default":1}},"type":"object","required":["userId","email","planId"],"title":"CheckoutRequest"},"CodeBody":{"properties":{"code":{"type":"string","title":"Code"}},"type":"object","required":["code"],"title":"CodeBody"},"DashboardControlRequest":{"properties":{"action":{"type":"string","title":"Action"}},"type":"object","required":["action"],"title":"DashboardControlRequest"},"EmailRequest":{"properties":{"userId":{"type":"string","title":"Userid"},"sessionId":{"type":"string","title":"Sessionid"},"subject":{"type":"string","title":"Subject"},"body":{"type":"string","title":"Body"}},"type":"object","required":["userId","sessionId","subject","body"],"title":"EmailRequest"},"EnrollmentRequest":{"properties":{"agentId":{"type":"string","title":"Agentid"},"enrollmentToken":{"type":"string","title":"Enrollmenttoken"}},"type":"object","required":["agentId","enrollmentToken"],"title":"EnrollmentRequest"},"FraudActionBody":{"properties":{"id":{"type":"string","title":"Id"},"action":{"type":"string","title":"Action"}},"type":"object","required":["id","action"],"title":"FraudActionBody"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"NotificationPrefsUpdate":{"properties":{"userId":{"type":"string","title":"Userid"},"criticalAlerts":{"type":"boolean","title":"Criticalalerts","default":true},"highAlerts":{"type":"boolean","title":"Highalerts","default":true},"weeklyReport":{"type":"boolean","title":"Weeklyreport","default":true},"monthlyReport":{"type":"boolean","title":"Monthlyreport","default":false},"loginActivity":{"type":"boolean","title":"Loginactivity","default":true},"aiUpdates":{"type":"boolean","title":"Aiupdates","default":false},"smsCriticalAlerts":{"type":"boolean","title":"Smscriticalalerts","default":false},"telegramCriticalAlerts":{"type":"boolean","title":"Telegramcriticalalerts","default":false}},"type":"object","required":["userId"],"title":"NotificationPrefsUpdate"},"PartnerApplyBody":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"website":{"type":"string","title":"Website","default":""},"youtube":{"type":"string","title":"Youtube","default":""},"x":{"type":"string","title":"X","default":""},"kick":{"type":"string","title":"Kick","default":""},"twitch":{"type":"string","title":"Twitch","default":""},"other":{"type":"string","title":"Other","default":""},"notes":{"type":"string","title":"Notes","default":""}},"type":"object","required":["name","email"],"title":"PartnerApplyBody"},"PartnerConsumeBody":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"PartnerConsumeBody"},"PayoutActionBody":{"properties":{"id":{"type":"string","title":"Id"},"action":{"type":"string","title":"Action"}},"type":"object","required":["id","action"],"title":"PayoutActionBody"},"PayoutBody":{"properties":{"amountEur":{"type":"number","title":"Amounteur"},"method":{"type":"string","title":"Method"},"destination":{"type":"string","title":"Destination"},"accountHolderName":{"type":"string","title":"Accountholdername","default":""}},"type":"object","required":["amountEur","method","destination"],"title":"PayoutBody"},"PhoneCallRequest":{"properties":{"phone_number":{"type":"string","title":"Phone Number"}},"type":"object","required":["phone_number"],"title":"PhoneCallRequest"},"PortalRequest":{"properties":{"userId":{"type":"string","title":"Userid"},"returnUrl":{"type":"string","title":"Returnurl","default":""}},"type":"object","required":["userId"],"title":"PortalRequest"},"ProfileUpdate":{"properties":{"userId":{"type":"string","title":"Userid"},"name":{"type":"string","title":"Name","default":""},"company":{"type":"string","title":"Company","default":""},"address":{"type":"string","title":"Address","default":""},"phone":{"type":"string","title":"Phone","default":""}},"type":"object","required":["userId"],"title":"ProfileUpdate"},"RegisterRequest":{"properties":{"name":{"type":"string","title":"Name","default":"Malware Scanner"},"path":{"type":"string","title":"Path","default":""},"mode":{"type":"string","title":"Mode","default":"manual"}},"type":"object","title":"RegisterRequest"},"TokenCreateBody":{"properties":{"label":{"type":"string","title":"Label","default":""},"notes":{"type":"string","title":"Notes","default":""},"code":{"type":"string","title":"Code","default":""},"expiresDays":{"type":"integer","title":"Expiresdays","default":30}},"type":"object","title":"TokenCreateBody"},"TokenRevokeBody":{"properties":{"tokenId":{"type":"string","title":"Tokenid"}},"type":"object","required":["tokenId"],"title":"TokenRevokeBody"},"TrackBody":{"properties":{"code":{"type":"string","title":"Code"}},"type":"object","required":["code"],"title":"TrackBody"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}