{"openapi":"3.1.0","info":{"title":"Lead Generator Pro API","version":"0.1.0"},"paths":{"/api/auth/signup":{"post":{"tags":["auth"],"summary":"Sign Up","description":"Retired: see LEGACY_PASSWORD_AUTH_GONE.","operationId":"sign_up_api_auth_signup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignUpRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/signin":{"post":{"tags":["auth"],"summary":"Sign In","description":"Retired: see LEGACY_PASSWORD_AUTH_GONE.","operationId":"sign_in_api_auth_signin_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignInRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/me":{"get":{"tags":["auth"],"summary":"Get Current User","description":"Get current user profile","operationId":"get_current_user_api_auth_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/activate":{"post":{"tags":["auth"],"summary":"Activate Account","description":"Activate user account with code","operationId":"activate_account_api_auth_activate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/auth_endpoints__ActivateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/user/claim-leads":{"post":{"tags":["auth"],"summary":"Claim Free Leads","description":"Allow user to claim 1000 free leads (one-time)","operationId":"claim_free_leads_api_auth_user_claim_leads_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/profile":{"put":{"tags":["auth"],"summary":"Update Profile","description":"Update user profile","operationId":"update_profile_api_auth_profile_put","parameters":[{"name":"full_name","in":"query","required":true,"schema":{"type":"string","title":"Full Name"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/admin/users/{user_id}":{"put":{"tags":["auth"],"summary":"Update User","description":"Update user (admin only)","operationId":"update_user_api_auth_admin_users__user_id__put","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["auth"],"summary":"Delete User","description":"Delete user (admin only)","operationId":"delete_user_api_auth_admin_users__user_id__delete","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/admin/codes":{"post":{"tags":["auth"],"summary":"Create Activation Code","description":"Create activation code (admin only)","operationId":"create_activation_code_api_auth_admin_codes_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCodeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["auth"],"summary":"Get Activation Codes","description":"Get all activation codes (admin only)","operationId":"get_activation_codes_api_auth_admin_codes_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/change-password":{"post":{"tags":["auth"],"summary":"Change Password","description":"Change password for the authenticated user (works for OAuth users too).","operationId":"change_password_api_auth_change_password_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/admin/codes/{code_id}":{"delete":{"tags":["auth"],"summary":"Delete Activation Code","description":"Delete/deactivate activation code (admin only)","operationId":"delete_activation_code_api_auth_admin_codes__code_id__delete","parameters":[{"name":"code_id","in":"path","required":true,"schema":{"type":"string","title":"Code Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/save-profile":{"post":{"tags":["auth"],"summary":"Save Profile","description":"Save/update user profile and phone. Called after OTP registration.","operationId":"save_profile_api_auth_save_profile_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveProfileRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rewards/ladder":{"get":{"tags":["rewards"],"summary":"Get Ladder","operationId":"get_ladder_api_rewards_ladder_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rewards/ladder/claim":{"post":{"tags":["rewards"],"summary":"Post Claim","operationId":"post_claim_api_rewards_ladder_claim_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/reward_ladder__ClaimRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/rewards/ladder":{"get":{"tags":["rewards"],"summary":"Admin List","operationId":"admin_list_api_admin_rewards_ladder_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/rewards/ladder/{claim_id}/approve":{"post":{"tags":["rewards"],"summary":"Admin Approve","operationId":"admin_approve_api_admin_rewards_ladder__claim_id__approve_post","parameters":[{"name":"claim_id","in":"path","required":true,"schema":{"type":"integer","title":"Claim Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/rewards/ladder/{claim_id}/reject":{"post":{"tags":["rewards"],"summary":"Admin Reject","operationId":"admin_reject_api_admin_rewards_ladder__claim_id__reject_post","parameters":[{"name":"claim_id","in":"path","required":true,"schema":{"type":"integer","title":"Claim Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/create-checkout-session":{"post":{"summary":"Create Checkout Session","description":"Create a Stripe Checkout Session for the authenticated user.","operationId":"create_checkout_session_api_create_checkout_session_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutSessionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/checkout/upsell-intent":{"post":{"summary":"Create Upsell Intent","description":"Creates a PaymentIntent for 1-Click Apple/Google Pay Upsells via ExpressCheckoutElement.","operationId":"create_upsell_intent_api_checkout_upsell_intent_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsellIntentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/warmup/pool-member/toggle":{"post":{"tags":["warmup"],"summary":"Toggle Pool Member","description":"Opt a mailbox in/out of the shared warmup pool.\nPool members receive warmup emails from other users and auto-reply.\nThey do NOT need warmup_enabled — they just contribute to the network.","operationId":"toggle_pool_member_api_warmup_pool_member_toggle_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PoolMemberToggleRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/warmup/stats/{config_id}":{"get":{"tags":["warmup"],"summary":"Get Warmup Stats","description":"Get warmup stats for a specific email config","operationId":"get_warmup_stats_api_warmup_stats__config_id__get","parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"integer","title":"Config Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/warmup/toggle":{"post":{"tags":["warmup"],"summary":"Toggle Warmup","description":"Enable or Disable warmup for a config","operationId":"toggle_warmup_api_warmup_toggle_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WarmupToggleRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/warmup/diagnostic/{config_id}":{"get":{"tags":["warmup"],"summary":"Warmup Diagnostic","description":"Return why warmup is / isn't running for a config","operationId":"warmup_diagnostic_api_warmup_diagnostic__config_id__get","parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"integer","title":"Config Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/warmup/history/{config_id}":{"get":{"tags":["warmup"],"summary":"Get Warmup History","description":"Get daily warmup history for graph","operationId":"get_warmup_history_api_warmup_history__config_id__get","parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"integer","title":"Config Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/warmup/score-history/{config_id}":{"get":{"tags":["warmup"],"summary":"Get Score History","description":"Return daily reputation score history for trend chart (max 90 days).","operationId":"get_score_history_api_warmup_score_history__config_id__get","parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"integer","title":"Config Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":90,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/warmup/claim-beta":{"post":{"tags":["warmup"],"summary":"Claim Beta Access","description":"Allow beta eligible users to activate the addon for free","operationId":"claim_beta_access_api_warmup_claim_beta_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/warmup/dns-check/{domain}":{"get":{"tags":["warmup"],"summary":"Dns Check","description":"Check SPF, DKIM, DMARC for a domain before enabling warmup.\nReturns a preflight report with issues and recommendations.","operationId":"dns_check_api_warmup_dns_check__domain__get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/warmup/admin/grant-access":{"post":{"tags":["warmup"],"summary":"Admin Grant Warmup Access","description":"Admin-only: Grant warmup access to a user by email","operationId":"admin_grant_warmup_access_api_warmup_admin_grant_access_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrantAccessRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/warmup/admin/revoke-access":{"post":{"tags":["warmup"],"summary":"Admin Revoke Warmup Access","description":"Admin-only: Revoke warmup access from a user","operationId":"admin_revoke_warmup_access_api_warmup_admin_revoke_access_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrantAccessRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/warmup/admin/access-list":{"get":{"tags":["warmup"],"summary":"Admin Get Access List","description":"Admin-only: Get list of users with warmup access","operationId":"admin_get_access_list_api_warmup_admin_access_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/warmup/admin/refresh-pool":{"post":{"tags":["warmup"],"summary":"Admin Refresh Pool","description":"Admin: Disable warmup on configs with >50% failure rate in last 7 days,\nthen seed new active configs into pool.","operationId":"admin_refresh_pool_api_warmup_admin_refresh_pool_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/warmup/admin/pool-health":{"get":{"tags":["warmup"],"summary":"Admin Pool Health","description":"Admin: Pool health — per-config failure rates last 7 days.","operationId":"admin_pool_health_api_warmup_admin_pool_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/warmup/inbound":{"post":{"tags":["warmup"],"summary":"Warmup Inbound","description":"Resend inbound webhook endpoint.\nVerifies Svix signature if RESEND_WEBHOOK_SECRET is set.","operationId":"warmup_inbound_api_warmup_inbound_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/segments":{"get":{"tags":["admin"],"summary":"Get Segments","operationId":"get_segments_api_admin_segments_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/campaigns":{"get":{"tags":["admin"],"summary":"List Campaigns","operationId":"list_campaigns_api_admin_campaigns_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["admin"],"summary":"Create Campaign","operationId":"create_campaign_api_admin_campaigns_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCampaignRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/campaigns/{campaign_id}/stats":{"get":{"tags":["admin"],"summary":"Get Campaign Stats","operationId":"get_campaign_stats_api_admin_campaigns__campaign_id__stats_get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/broadcast/preview":{"get":{"tags":["admin"],"summary":"Preview Broadcast Recipients","description":"Preview recipient count before sending broadcast","operationId":"preview_broadcast_recipients_api_admin_broadcast_preview_get","parameters":[{"name":"plan","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Plan"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Status"}},{"name":"activity","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Activity"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/campaigns/test":{"post":{"tags":["admin"],"summary":"Send Test Email","description":"Send a test email for broadcast campaign","operationId":"send_test_email_api_admin_campaigns_test_post","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Request"}}},"required":true},"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":{"put":{"tags":["admin"],"summary":"Update User Plan","description":"Update a user's plan (Admin only) — syncs plan column, metadata, and subscriptions table","operationId":"update_user_plan_api_admin_users__user_id__plan_put","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserPlanRequest"}}}},"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}/b2b-unlimited":{"put":{"tags":["admin"],"summary":"Toggle B2B Unlimited","description":"Toggle unlimited B2B database scrape for a specific user (Admin only)","operationId":"toggle_b2b_unlimited_api_admin_users__user_id__b2b_unlimited_put","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/warmup/stats":{"get":{"tags":["admin"],"summary":"Get Warmup Global Stats","description":"Get global warmup statistics","operationId":"get_warmup_global_stats_api_admin_warmup_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/keys":{"get":{"tags":["admin"],"summary":"List Admin Keys","description":"List all admin serper keys","operationId":"list_admin_keys_api_admin_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["admin"],"summary":"Add Admin Key","description":"Add a new admin serper key","operationId":"add_admin_key_api_admin_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/keys/{key_id}/toggle":{"post":{"tags":["admin"],"summary":"Toggle Admin Key","description":"Activate/Deactivate an admin key","operationId":"toggle_admin_key_api_admin_keys__key_id__toggle_post","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}},{"name":"active","in":"query","required":true,"schema":{"type":"boolean","title":"Active"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/keys/{key_id}/set-main":{"post":{"tags":["admin"],"summary":"Set Main Admin Key","description":"Set an admin key as the MAIN key","operationId":"set_main_admin_key_api_admin_keys__key_id__set_main_post","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/keys/{key_id}":{"delete":{"tags":["admin"],"summary":"Delete Admin Key","description":"Delete an admin key","operationId":"delete_admin_key_api_admin_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/disputes":{"get":{"tags":["admin"],"summary":"List Disputes","description":"List all disputes from database with evidence scoring","operationId":"list_disputes_api_admin_disputes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/disputes/{stripe_dispute_id}/link-user":{"post":{"tags":["admin"],"summary":"Link User To Dispute","description":"Manually link a user to a dispute by email lookup","operationId":"link_user_to_dispute_api_admin_disputes__stripe_dispute_id__link_user_post","parameters":[{"name":"stripe_dispute_id","in":"path","required":true,"schema":{"type":"string","title":"Stripe Dispute Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkUserRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/disputes/{stripe_dispute_id}/manual-evidence":{"post":{"tags":["admin"],"summary":"Create Manual Evidence","description":"Create manual evidence for disputes where user cannot be auto-identified","operationId":"create_manual_evidence_api_admin_disputes__stripe_dispute_id__manual_evidence_post","parameters":[{"name":"stripe_dispute_id","in":"path","required":true,"schema":{"type":"string","title":"Stripe Dispute Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualEvidenceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/disputes/{stripe_dispute_id}/regenerate":{"post":{"tags":["admin"],"summary":"Regenerate Dispute Evidence","description":"Regenerate evidence PDF and update score (does NOT upload to Stripe)","operationId":"regenerate_dispute_evidence_api_admin_disputes__stripe_dispute_id__regenerate_post","parameters":[{"name":"stripe_dispute_id","in":"path","required":true,"schema":{"type":"string","title":"Stripe Dispute Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/disputes/{stripe_dispute_id}/evidence-preview":{"get":{"tags":["admin"],"summary":"Preview Dispute Evidence","description":"Return the evidence package JSON and score for admin preview","operationId":"preview_dispute_evidence_api_admin_disputes__stripe_dispute_id__evidence_preview_get","parameters":[{"name":"stripe_dispute_id","in":"path","required":true,"schema":{"type":"string","title":"Stripe Dispute Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/disputes/{stripe_dispute_id}/approve":{"post":{"tags":["admin"],"summary":"Approve And Upload Evidence","description":"Build fresh evidence, upload PDF to Stripe as draft (does NOT submit)","operationId":"approve_and_upload_evidence_api_admin_disputes__stripe_dispute_id__approve_post","parameters":[{"name":"stripe_dispute_id","in":"path","required":true,"schema":{"type":"string","title":"Stripe Dispute Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/disputes/{stripe_dispute_id}/submit":{"post":{"tags":["admin"],"summary":"Submit Dispute Evidence","description":"Finalize and submit evidence to Stripe (irreversible)","operationId":"submit_dispute_evidence_api_admin_disputes__stripe_dispute_id__submit_post","parameters":[{"name":"stripe_dispute_id","in":"path","required":true,"schema":{"type":"string","title":"Stripe Dispute Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/disputes/{stripe_dispute_id}/reject":{"post":{"tags":["admin"],"summary":"Reject Dispute","description":"Mark dispute as rejected (won't contest, handle manually if needed)","operationId":"reject_dispute_api_admin_disputes__stripe_dispute_id__reject_post","parameters":[{"name":"stripe_dispute_id","in":"path","required":true,"schema":{"type":"string","title":"Stripe Dispute Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/disputes/sync":{"post":{"tags":["admin"],"summary":"Sync Disputes From Stripe","description":"Fetch recent disputes from Stripe and sync to DB","operationId":"sync_disputes_from_stripe_api_admin_disputes_sync_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/disputes/account-risk":{"get":{"tags":["admin"],"summary":"Get Account Risk","description":"Account-risk dashboard (§20): dispute/refund/EFW ratios + risk band.","operationId":"get_account_risk_api_admin_disputes_account_risk_get","parameters":[{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Window Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/disputes/{stripe_dispute_id}/analysis":{"get":{"tags":["admin"],"summary":"Dispute Analysis","description":"Full review payload (§22): evidence score, exhibits, offer-claim compliance,\ndecision recommendation, evidence integrity. Read-only — no Stripe calls.","operationId":"dispute_analysis_api_admin_disputes__stripe_dispute_id__analysis_get","parameters":[{"name":"stripe_dispute_id","in":"path","required":true,"schema":{"type":"string","title":"Stripe Dispute Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/disputes/{stripe_dispute_id}/ai-draft":{"post":{"tags":["admin"],"summary":"Dispute Ai Draft","description":"Generate an AI rebuttal draft and run the factuality verifier (§23). Persists\ndraft + verifier verdict. submission_blocked=True when any claim is\nUNSUPPORTED/CONTRADICTED — such a draft must be rewritten before submission.","operationId":"dispute_ai_draft_api_admin_disputes__stripe_dispute_id__ai_draft_post","parameters":[{"name":"stripe_dispute_id","in":"path","required":true,"schema":{"type":"string","title":"Stripe Dispute Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/disputes/{stripe_dispute_id}/decision":{"post":{"tags":["admin"],"summary":"Dispute Set Decision","description":"Compute + persist the contest/accept recommendation (§19).","operationId":"dispute_set_decision_api_admin_disputes__stripe_dispute_id__decision_post","parameters":[{"name":"stripe_dispute_id","in":"path","required":true,"schema":{"type":"string","title":"Stripe Dispute Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/offer-versions":{"get":{"tags":["admin"],"summary":"List Offer Versions","operationId":"list_offer_versions_api_admin_offer_versions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["admin"],"summary":"Create Offer Version","description":"Archive + claim-scan a landing/checkout version (§26 compliance gate).","operationId":"create_offer_version_api_admin_offer_versions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferVersionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/offer-versions/scan":{"post":{"tags":["admin"],"summary":"Scan Offer Text","description":"Dry-run claim scan without archiving (§26).","operationId":"scan_offer_text_api_admin_offer_versions_scan_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferVersionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/fix-user-onboarding":{"post":{"tags":["admin"],"summary":"Fix User Onboarding","description":"Manually complete onboarding for a stuck user:\n- Creates a placeholder list in the DB so the dashboard doesn't redirect them\n- Optionally sends them a support email via Resend","operationId":"fix_user_onboarding_api_admin_fix_user_onboarding_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FixOnboardingRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/send-single-email":{"post":{"tags":["admin"],"summary":"Admin Send Single Email","description":"Send a single email from a specific mailbox config (admin only)","operationId":"admin_send_single_email_api_admin_send_single_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendSingleEmailRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/grant-premium-templates":{"post":{"tags":["admin"],"summary":"Grant Premium Templates","description":"Grant has_premium_templates to a user by email (admin only)","operationId":"grant_premium_templates_api_admin_grant_premium_templates_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrantPremiumTemplatesRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/finance":{"get":{"tags":["admin"],"summary":"Get Finance","operationId":"get_finance_api_admin_finance_get","parameters":[{"name":"fresh","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Fresh"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/finance/costs":{"post":{"tags":["admin"],"summary":"Create Finance Cost","operationId":"create_finance_cost_api_admin_finance_costs_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinanceCostIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/finance/costs/{cost_id}":{"patch":{"tags":["admin"],"summary":"Update Finance Cost","operationId":"update_finance_cost_api_admin_finance_costs__cost_id__patch","parameters":[{"name":"cost_id","in":"path","required":true,"schema":{"type":"integer","title":"Cost Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinanceCostIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/deep-search/analyze":{"post":{"tags":["Deep Search"],"summary":"Analyze Company","description":"Enrich a lead with LinkedIn profiles and company data.\nRequires at least one of: url, full_name, company.","operationId":"analyze_company_api_deep_search_analyze_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyzeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/deep-search/bulk-analyze":{"post":{"tags":["Deep Search"],"summary":"Bulk Analyze","description":"Bulk enrich multiple leads.","operationId":"bulk_analyze_api_deep_search_bulk_analyze_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkAnalyzeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/campaigns/queue":{"post":{"summary":"Queue Campaign","description":"Queue an email campaign for the background worker.","operationId":"queue_campaign_api_campaigns_queue_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/main__SendEmailRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/campaigns":{"get":{"summary":"Get Campaigns","description":"Get all campaigns for current user","operationId":"get_campaigns_api_campaigns_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/campaigns/{campaign_id}":{"get":{"summary":"Get Campaign","description":"Get campaign details with stats","operationId":"get_campaign_api_campaigns__campaign_id__get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Campaign","description":"Delete a campaign","operationId":"delete_campaign_api_campaigns__campaign_id__delete","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"Update Campaign","description":"Update a campaign's subject and/or body while it is running. Changes apply to remaining unsent leads.","operationId":"update_campaign_api_campaigns__campaign_id__patch","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/campaigns/{campaign_id}/stats":{"get":{"summary":"Get Campaign Stats","description":"Get campaign statistics","operationId":"get_campaign_stats_api_campaigns__campaign_id__stats_get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/campaigns/{campaign_id}/pause":{"post":{"summary":"Pause Campaign","description":"Pause a running campaign (owner only)","operationId":"pause_campaign_api_campaigns__campaign_id__pause_post","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/campaigns/{campaign_id}/resume":{"post":{"summary":"Resume Campaign","description":"Resume a paused campaign (owner only)","operationId":"resume_campaign_api_campaigns__campaign_id__resume_post","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/campaigns/{campaign_id}/stop":{"post":{"summary":"Stop Campaign","description":"Stop a campaign permanently (owner only)","operationId":"stop_campaign_api_campaigns__campaign_id__stop_post","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/campaigns/{campaign_id}/inbox-stats":{"get":{"summary":"Get Inbox Stats","description":"Per-mailbox KPIs: sent, opens, replies, open_rate, reply_rate.","operationId":"get_inbox_stats_api_campaigns__campaign_id__inbox_stats_get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/campaigns/{campaign_id}/duplicate-data":{"get":{"summary":"Get Campaign Duplicate Data","description":"Return all settings needed to pre-fill the new-campaign wizard for duplication.\nDoes NOT create any new DB record — the wizard creates the real campaign on submit.","operationId":"get_campaign_duplicate_data_api_campaigns__campaign_id__duplicate_data_get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/campaigns/{campaign_id}/analytics":{"get":{"summary":"Get Campaign Analytics","description":"Get detailed analytics for a campaign\nIncludes: opens, clicks, replies, rates, timeline, etc.","operationId":"get_campaign_analytics_api_campaigns__campaign_id__analytics_get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams":{"get":{"tags":["teams"],"summary":"Get My Team","description":"Get current user's team status (either as owner or member)","operationId":"get_my_team_api_teams_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/invite":{"post":{"tags":["teams"],"summary":"Invite Member","description":"Invite a member to your team","operationId":"invite_member_api_teams_invite_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteMemberSchema"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/members/{member_id}":{"delete":{"tags":["teams"],"summary":"Remove Member","operationId":"remove_member_api_teams_members__member_id__delete","parameters":[{"name":"member_id","in":"path","required":true,"schema":{"type":"string","title":"Member Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/lists":{"get":{"tags":["teams"],"summary":"Get Team Lists","description":"Return all lists shared with the user's team (including by other members).\n\nFail-soft: herhangi bir DB/şema hatasında 500 yerine boş liste döner. 500 yanıtı\nStarlette'te CORS header'sız döndüğü için tarayıcıda yanıltıcı CORS hatası\ngörünüyordu — burada yakalayıp 200 dönerek hem sayfayı açık tutuyoruz hem de\ngerçek traceback'i log'a basıyoruz (kök sebep için).","operationId":"get_team_lists_api_teams_lists_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/lists/{list_id}/share":{"post":{"tags":["teams"],"summary":"Share List With Team","description":"Share one of your lists with your team.","operationId":"share_list_with_team_api_teams_lists__list_id__share_post","parameters":[{"name":"list_id","in":"path","required":true,"schema":{"type":"integer","title":"List Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["teams"],"summary":"Unshare List","description":"Stop sharing a list with your team.","operationId":"unshare_list_api_teams_lists__list_id__share_delete","parameters":[{"name":"list_id","in":"path","required":true,"schema":{"type":"integer","title":"List Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/contact-check/{email}":{"get":{"tags":["teams"],"summary":"Check Team Contact","description":"Check if any team member has already contacted this email recently (14 days).\nUsed in campaign creation to warn of double-contact.","operationId":"check_team_contact_api_teams_contact_check__email__get","parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string","title":"Email"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/verification/proxy-health":{"get":{"summary":"Verification Proxy Health","description":"Check if the OVH/Hetzner SMTP verification proxy is reachable.","operationId":"verification_proxy_health_api_verification_proxy_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/verification/list/{list_id}":{"post":{"summary":"Trigger Verification","description":"Start a verification job for a list. Returns immediately.","operationId":"trigger_verification_api_verification_list__list_id__post","parameters":[{"name":"list_id","in":"path","required":true,"schema":{"type":"integer","title":"List Id"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/verification_routes__VerifyRequest","default":{"mode":"auto"}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/verification/list/{list_id}/status":{"get":{"summary":"Get Verification Status","description":"Returns the current verification state.\nBackward-compatible: always includes `stats.valid` etc.","operationId":"get_verification_status_api_verification_list__list_id__status_get","parameters":[{"name":"list_id","in":"path","required":true,"schema":{"type":"integer","title":"List Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/verification/list/{list_id}/stream":{"get":{"summary":"Stream Verification","description":"Server-Sent Events stream for real-time verification progress.\n\nEvents:\n  data: { status, mode, job_id, stats: { total, completed, valid, invalid,\n          catchall, disposable, unknown, percent, emails_per_second, eta_seconds } }\n\nThe stream closes automatically when status is 'done' or 'failed'.\nA keepalive comment is sent every 15 s to prevent proxy/Railway timeouts.","operationId":"stream_verification_api_verification_list__list_id__stream_get","parameters":[{"name":"list_id","in":"path","required":true,"schema":{"type":"integer","title":"List Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/getlead-api/checkout":{"post":{"summary":"Create Api Checkout Session","description":"Creates a Stripe Checkout Session for a Getlead API plan or PAYG pack.\nEmbeds product_type=getlead_api + user_id + optional ref_code in metadata.","operationId":"create_api_checkout_session_api_getlead_api_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiCheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/getlead-api/me":{"get":{"summary":"Dashboard Me","description":"Returns API key dashboard data for the authenticated frontend user.","operationId":"dashboard_me_api_getlead_api_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/getlead-api/me/reveal-key":{"get":{"summary":"Dashboard Reveal Key","description":"Returns the full (unmasked) API key for the authenticated user.","operationId":"dashboard_reveal_key_api_getlead_api_me_reveal_key_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/getlead-api/me/rotate-key":{"post":{"summary":"Dashboard Rotate Key","description":"Rotates the user's API key. Returns the new key (shown once).","operationId":"dashboard_rotate_key_api_getlead_api_me_rotate_key_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/getlead-api/affiliate/register":{"post":{"summary":"Dashboard Affiliate Register","description":"Register the current user as an affiliate.","operationId":"dashboard_affiliate_register_api_getlead_api_affiliate_register_post","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Body"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/getlead-api/affiliate/me":{"get":{"summary":"Dashboard Affiliate Me","description":"Returns affiliate dashboard stats for the current user.","operationId":"dashboard_affiliate_me_api_getlead_api_affiliate_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/getlead-api/affiliate/commissions":{"get":{"summary":"Dashboard Affiliate Commissions","description":"Returns paginated commission history for the current user's affiliate account.","operationId":"dashboard_affiliate_commissions_api_getlead_api_affiliate_commissions_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/api-users/grant":{"post":{"summary":"Admin Grant Api Access","description":"Grant API access to a user by email (no Stripe required).\nLooks up OR auto-creates the Supabase auth user, then provisions a new key.\nIf the user doesn't exist in Supabase yet (e.g. they only have a Firebase account),\na confirmed Supabase account is created so they can log in via magic link.\nBody: { \"email\": \"...\", \"plan\": \"starter\"|\"growth\"|\"agency\", \"payg_credits\": 0 }\nReturns the new API key (shown once).","operationId":"admin_grant_api_access_api_admin_api_users_grant_post","requestBody":{"content":{"application/json":{"schema":{"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/admin/api-users":{"get":{"summary":"Admin List Api Users","description":"List all Getlead API users with plan, credits, and usage summary.\nJoins getlead_api_keys with Supabase auth users (email).","operationId":"admin_list_api_users_api_admin_api_users_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/api-users/{user_id}/add-credits":{"post":{"summary":"Admin Add Api Credits","description":"Add PAYG credits to a user's active API key.\nBody: { \"credits\": <int> }","operationId":"admin_add_api_credits_api_admin_api_users__user_id__add_credits_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"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/api-users/{user_id}/plan":{"put":{"summary":"Admin Change Api Plan","description":"Change a user's API plan.\nBody: { \"plan\": \"starter\" | \"growth\" | \"agency\" }","operationId":"admin_change_api_plan_api_admin_api_users__user_id__plan_put","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"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/api-users/{user_id}/reset-credits":{"post":{"summary":"Admin Reset Api Credits","description":"Reset a user's monthly credits_used back to 0 (manual billing-cycle reset).","operationId":"admin_reset_api_credits_api_admin_api_users__user_id__reset_credits_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/funnel/spin-session":{"post":{"summary":"Start Spin Session","description":"Store server-side spin timer. Called when spin wheel page loads.","operationId":"start_spin_session_api_funnel_spin_session_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpinSessionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/funnel/validate-offer":{"post":{"summary":"Validate Offer","description":"Check if spin offer timer (10 min) is still valid.","operationId":"validate_offer_api_funnel_validate_offer_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateOfferRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/funnel/track":{"post":{"summary":"Track Funnel Event","operationId":"track_funnel_event_api_funnel_track_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackEventRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/funnel/save-meta":{"post":{"summary":"Save Meta Cookies","description":"Store Meta fbc/fbp cookies for CAPI enrichment. Called pre-signup.","operationId":"save_meta_cookies_api_funnel_save_meta_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveMetaRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/funnel-stats":{"get":{"summary":"Get Funnel Stats","description":"Admin only: funnel, A/B and Stripe MRR numbers are private.","operationId":"get_funnel_stats_api_admin_funnel_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/funnel/create-setup-intent":{"post":{"summary":"Create Setup Intent","description":"Create Stripe Customer + SetupIntent.\nReturns client_secret for PaymentElement (card, Apple Pay, Google Pay, Link).","operationId":"create_setup_intent_api_funnel_create_setup_intent_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSetupIntentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/funnel/create-lifetime-intent":{"post":{"summary":"Create Lifetime Intent","description":"One-time PaymentIntent for the lifetime offer (amount-based, no price ID needed).\nAccess is granted in the Stripe webhook (payment_intent.succeeded, type='lifetime').","operationId":"create_lifetime_intent_api_funnel_create_lifetime_intent_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLifetimeIntentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/funnel/update-lifetime-billing":{"post":{"summary":"Update Lifetime Billing","description":"Attach contact/company billing to the PaymentIntent + Customer before confirm so\nStripe emails an itemized receipt (with company + VAT + address when provided).\nBest-effort: never blocks the payment — returns ok even if parts fail.","operationId":"update_lifetime_billing_api_funnel_update_lifetime_billing_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLifetimeBillingRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/funnel/track-initiate-checkout":{"post":{"summary":"Funnel Track Initiate Checkout","description":"Server-side (CAPI) InitiateCheckout for cold /lp \"Buy Now\" clicks → Stripe links.\nUnauthenticated by design (no user yet). Dedupes with the browser fbq event via event_id.","operationId":"funnel_track_initiate_checkout_api_funnel_track_initiate_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunnelInitiateCheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/funnel/create-vcdb-intent":{"post":{"summary":"Create Vcdb Intent","operationId":"create_vcdb_intent_api_funnel_create_vcdb_intent_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVcdbIntentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/funnel/confirm-vcdb":{"post":{"summary":"Confirm Vcdb","description":"Success page: verify the PI, fulfill once (payments row + email), return links.","operationId":"confirm_vcdb_api_funnel_confirm_vcdb_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmVcdbRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/funnel/confirm-lifetime":{"post":{"summary":"Confirm Lifetime","description":"After the lifetime PaymentIntent succeeds, create/activate the Supabase user\n(auto-login via temp_password) and grant lifetime access + any order bumps.\nIdempotent. Mirrors confirm-subscription so the post-checkout flow → onboarding.","operationId":"confirm_lifetime_api_funnel_confirm_lifetime_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmLifetimeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/funnel/login-code":{"post":{"summary":"Funnel Login Code","description":"Issue a 6-digit login code, but only to an email that already has an account\n(i.e. someone who has purchased). Emails it via Resend. Fast and self-serve.","operationId":"funnel_login_code_api_funnel_login_code_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginCodeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/funnel/verify-login-code":{"post":{"summary":"Funnel Verify Login Code","description":"Verify the code and mint a real Supabase session, returned as tokens the\nfrontend sets via supabase.auth.setSession(). No Supabase Auth email involved.","operationId":"funnel_verify_login_code_api_funnel_verify_login_code_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyLoginCodeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/funnel/confirm-subscription":{"post":{"summary":"Confirm Subscription","description":"Called after SetupIntent confirmed on frontend.\nCreates Stripe subscription + Supabase user + sends magic link.","operationId":"confirm_subscription_api_funnel_confirm_subscription_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmSubscriptionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/funnel/setup-stripe":{"post":{"summary":"Setup Stripe Products","description":"One-time admin endpoint. Creates Stripe price + coupon + promo code.\nCall once after deployment. Protected by admin secret header.","operationId":"setup_stripe_products_api_funnel_setup_stripe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/funnel/analyze-website":{"post":{"summary":"Funnel Analyze Website","description":"Analyse a company website and return ICP data.\nNo auth required — called from the pre-signup quiz funnel.\nReuses same Gemini logic as /api/onboarding/analyze-website.","operationId":"funnel_analyze_website_api_funnel_analyze_website_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunnelAnalyzeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/affiliate/validate":{"get":{"summary":"Validate Ref Code","description":"Public check used by the checkout page to decide whether to show the\npartner discount. Invalid/unknown codes are a soft {valid: false}.","operationId":"validate_ref_code_api_affiliate_validate_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"type":"string","default":"","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/affiliate/click":{"post":{"summary":"Record Click","description":"Record a referral-link click (fire-and-forget from the frontend tracker).\nUnknown codes are ignored silently — no signal for probing.","operationId":"record_click_api_affiliate_click_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClickRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/affiliate/register":{"post":{"summary":"Register Affiliate","operationId":"register_affiliate_api_affiliate_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/affiliate/me":{"get":{"summary":"Affiliate Me","description":"Standalone affiliate dashboard payload (stats + recent commissions).","operationId":"affiliate_me_api_affiliate_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/mailboxes/inventory":{"get":{"summary":"Mailbox Inventory","operationId":"mailbox_inventory_api_mailboxes_inventory_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/mailboxes/order/{token}":{"get":{"summary":"Mailbox Order","operationId":"mailbox_order_api_mailboxes_order__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mailboxes/order/{token}/otp":{"post":{"summary":"Mailbox Order Otp","operationId":"mailbox_order_otp_api_mailboxes_order__token__otp_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtpBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/zapmail/webhook":{"post":{"summary":"Zapmail Webhook","description":"Zapmail pushes mailbox and subscription changes here. The tick already\npolls, so an event only runs it sooner, it never carries state we trust.","operationId":"zapmail_webhook_api_zapmail_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/funnel/capture-lead":{"post":{"summary":"Capture Lead","description":"Called when user submits email on quiz result screen.","operationId":"capture_lead_api_funnel_capture_lead_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureLeadRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/funnel/mark-converted":{"post":{"summary":"Mark Converted","description":"Stop abandonment sequence when user converts. Called alongside confirm-subscription.","operationId":"mark_converted_api_funnel_mark_converted_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureLeadRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/funnel/unsub":{"get":{"summary":"Unsubscribe","description":"Unsubscribe link from email. Returns simple HTML confirmation.","operationId":"unsubscribe_api_funnel_unsub_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"e","in":"query","required":false,"schema":{"type":"string","default":"","title":"E"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gtm/apply":{"post":{"summary":"Gtm Apply","description":"Public: GTM workflow service application from getle.ad/apply.","operationId":"gtm_apply_api_gtm_apply_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GtmApplyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gtm/lead":{"post":{"summary":"Gtm Lead","description":"Fire a Meta CAPI Lead when a qualified visitor submits contact info.\nDeduped with the browser fbq Lead via event_id.","operationId":"gtm_lead_api_gtm_lead_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GtmLeadRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gtm/book/slots":{"get":{"summary":"Get Slots","description":"Return available booking slots (UTC) for the founder's calendar.","operationId":"get_slots_api_gtm_book_slots_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/gtm/book":{"post":{"summary":"Book Call","description":"Create a booking for a qualified lead.","operationId":"book_call_api_gtm_book_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gtm/admin/bookings":{"get":{"summary":"Admin List Bookings","description":"All /quiz-gtm bookings, newest first, for the admin dashboard.","operationId":"admin_list_bookings_api_gtm_admin_bookings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/gtm/admin/funnel-stats":{"get":{"summary":"Admin Gtm Funnel Stats","description":"Aggregate /quiz-gtm funnel events: step drop-off + abandoned sessions\n(with whatever partial answers and contact info they left behind).","operationId":"admin_gtm_funnel_stats_api_gtm_admin_funnel_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/deliverability/dns-check":{"get":{"tags":["deliverability"],"summary":"Dns Check","operationId":"dns_check_api_deliverability_dns_check_get","parameters":[{"name":"domain","in":"query","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/deliverability/content-check":{"post":{"tags":["deliverability"],"summary":"Content Check","operationId":"content_check_api_deliverability_content_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentCheckRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outreach/stats":{"get":{"tags":["outreach"],"summary":"Get Outreach Stats","description":"Total stats across all user campaigns: sent, opens, clicks, replies, opportunities.","operationId":"get_outreach_stats_api_outreach_stats_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outreach/timeline":{"get":{"tags":["outreach"],"summary":"Get Outreach Timeline","description":"Daily breakdown of events for the chart.","operationId":"get_outreach_timeline_api_outreach_timeline_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":90,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outreach/inbox":{"get":{"tags":["outreach"],"summary":"Get Inbox","description":"Lead list for the inbox/sent view.\nfolder=inbox → leads who replied + external inbound (per mailbox).\nfolder=sent  → every lead we emailed (per mailbox). External never appears in Sent,\nand external mail is never classified as opportunity.","operationId":"get_inbox_api_outreach_inbox_get","parameters":[{"name":"filter","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Filter"}},{"name":"folder","in":"query","required":false,"schema":{"type":"string","default":"inbox","title":"Folder"}},{"name":"mailbox","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Mailbox"}},{"name":"campaign_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Campaign Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outreach/thread/{email}":{"get":{"tags":["outreach"],"summary":"Get Thread","description":"Full thread for one lead: sent emails + tracking events + replies.","operationId":"get_thread_api_outreach_thread__email__get","parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string","title":"Email"}},{"name":"campaign_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Campaign Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outreach/reply":{"post":{"tags":["outreach"],"summary":"Send Reply","description":"Reply from the mailbox that owns the conversation, threaded onto it.","operationId":"send_reply_api_outreach_reply_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplyIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outreach/ai-draft":{"post":{"tags":["outreach"],"summary":"Ai Draft Reply","description":"Draft a reply to this lead's thread with OpenAI. Returns plain text.","operationId":"ai_draft_reply_api_outreach_ai_draft_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiDraftIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outreach/sequences":{"get":{"tags":["outreach"],"summary":"List Sequences","operationId":"list_sequences_api_outreach_sequences_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["outreach"],"summary":"Create Sequence Route","operationId":"create_sequence_route_api_outreach_sequences_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SequenceIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outreach/sequences/enroll":{"post":{"tags":["outreach"],"summary":"Enroll Route","operationId":"enroll_route_api_outreach_sequences_enroll_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrollIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outreach/sequences/{sequence_id}/steps":{"get":{"tags":["outreach"],"summary":"Get Steps","operationId":"get_steps_api_outreach_sequences__sequence_id__steps_get","parameters":[{"name":"sequence_id","in":"path","required":true,"schema":{"type":"integer","title":"Sequence Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outreach/opportunities":{"get":{"tags":["outreach"],"summary":"Get Opportunities","operationId":"get_opportunities_api_outreach_opportunities_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outreach/opportunities/{opp_id}":{"patch":{"tags":["outreach"],"summary":"Update Opportunity","operationId":"update_opportunity_api_outreach_opportunities__opp_id__patch","parameters":[{"name":"opp_id","in":"path","required":true,"schema":{"type":"integer","title":"Opp Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpportunityUpdateIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outreach/unread":{"get":{"tags":["outreach"],"summary":"Get Unread Count","operationId":"get_unread_count_api_outreach_unread_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outreach/inbox-stats":{"get":{"tags":["outreach"],"summary":"Get Inbox Stats","description":"Per-mailbox stats: sent, replies, reply_rate, opportunities, warmup score.","operationId":"get_inbox_stats_api_outreach_inbox_stats_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outreach/opportunity-settings":{"get":{"tags":["outreach"],"summary":"Get Opportunity Settings","operationId":"get_opportunity_settings_api_outreach_opportunity_settings_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["outreach"],"summary":"Save Opportunity Settings","operationId":"save_opportunity_settings_api_outreach_opportunity_settings_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpportunitySettingsIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outreach/unified-inbox":{"get":{"tags":["outreach"],"summary":"Get Unified Inbox","description":"Returns all incoming emails across all of the user's email configs,\nordered by received_at DESC. Excludes warmup noise.","operationId":"get_unified_inbox_api_outreach_unified_inbox_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Filter"}},{"name":"config_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Config Id"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outreach/unified-inbox/{message_id}/read":{"post":{"tags":["outreach"],"summary":"Mark Unified Message Read","description":"Mark a unified inbox message as read.","operationId":"mark_unified_message_read_api_outreach_unified_inbox__message_id__read_post","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"integer","title":"Message Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outreach/unified-inbox/mark-all-read":{"post":{"tags":["outreach"],"summary":"Mark All Unified Read","description":"Mark all unified inbox messages as read for this user.","operationId":"mark_all_unified_read_api_outreach_unified_inbox_mark_all_read_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/features":{"get":{"tags":["features"],"summary":"List Features","operationId":"list_features_api_features_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["features"],"summary":"Create Feature","operationId":"create_feature_api_features_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFeatureRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/features/{feature_id}/vote":{"post":{"tags":["features"],"summary":"Toggle Vote","operationId":"toggle_vote_api_features__feature_id__vote_post","parameters":[{"name":"feature_id","in":"path","required":true,"schema":{"type":"integer","title":"Feature Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/features/{feature_id}":{"patch":{"tags":["features"],"summary":"Update Status","operationId":"update_status_api_features__feature_id__patch","parameters":[{"name":"feature_id","in":"path","required":true,"schema":{"type":"integer","title":"Feature Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateStatusRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/support/tickets":{"post":{"tags":["support"],"summary":"Create Ticket","operationId":"create_ticket_api_support_tickets_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTicketRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["support"],"summary":"List My Tickets","operationId":"list_my_tickets_api_support_tickets_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","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/tickets/{ticket_id}":{"get":{"tags":["support"],"summary":"Get Ticket","operationId":"get_ticket_api_support_tickets__ticket_id__get","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","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/tickets/{ticket_id}/reply":{"post":{"tags":["support"],"summary":"Reply To Ticket","operationId":"reply_to_ticket_api_support_tickets__ticket_id__reply_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/support/tickets/{ticket_id}/attachments/{att_id}":{"get":{"tags":["support"],"summary":"Get Attachment","operationId":"get_attachment_api_support_tickets__ticket_id__attachments__att_id__get","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"att_id","in":"path","required":true,"schema":{"type":"integer","title":"Att Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","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/refund-hold":{"get":{"tags":["support"],"summary":"Refund Hold","description":"Efe's one-click link from the refund notification: the written decline is not posted.","operationId":"refund_hold_api_support_refund_hold_get","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"integer","title":"Id"}},{"name":"t","in":"query","required":true,"schema":{"type":"string","title":"T"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/support/admin/tickets":{"get":{"tags":["support"],"summary":"Admin List Tickets","operationId":"admin_list_tickets_api_support_admin_tickets_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/support/admin/tickets/{ticket_id}":{"get":{"tags":["support"],"summary":"Admin Get Ticket","operationId":"admin_get_ticket_api_support_admin_tickets__ticket_id__get","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["support"],"summary":"Admin Update Ticket","operationId":"admin_update_ticket_api_support_admin_tickets__ticket_id__patch","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/support/contact":{"post":{"tags":["support"],"summary":"Submit Contact Form","operationId":"submit_contact_form_api_support_contact_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactRequest"}}},"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/admin/tickets/{ticket_id}/attachments/{att_id}":{"get":{"tags":["support"],"summary":"Admin Get Attachment","operationId":"admin_get_attachment_api_support_admin_tickets__ticket_id__attachments__att_id__get","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}},{"name":"att_id","in":"path","required":true,"schema":{"type":"integer","title":"Att Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/agent/knowledge":{"get":{"tags":["internal-agent"],"summary":"Get Knowledge","operationId":"get_knowledge_api_internal_agent_knowledge_get","parameters":[{"name":"x-agent-brain-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Agent-Brain-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/agent/account":{"get":{"tags":["internal-agent"],"summary":"Get Account","operationId":"get_account_api_internal_agent_account_get","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}},{"name":"x-agent-brain-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Agent-Brain-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/agent/refund-review":{"post":{"tags":["internal-agent"],"summary":"Refund Review","operationId":"refund_review_api_internal_agent_refund_review_post","parameters":[{"name":"x-agent-brain-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Agent-Brain-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefundReviewBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/agent/guard":{"post":{"tags":["internal-agent"],"summary":"Check Reply","operationId":"check_reply_api_internal_agent_guard_post","parameters":[{"name":"x-agent-brain-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Agent-Brain-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuardBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/agent/action":{"post":{"tags":["internal-agent"],"summary":"Run Action","operationId":"run_action_api_internal_agent_action_post","parameters":[{"name":"x-agent-brain-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Agent-Brain-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/gtm/brief":{"post":{"tags":["v2-gtm"],"summary":"Create Brief","description":"Start a run from a description instead of a website.","operationId":"create_brief_api_v2_gtm_brief_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/gtm/company":{"post":{"tags":["v2-gtm"],"summary":"Research Company","operationId":"research_company_api_v2_gtm_company_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/gtm/competitors":{"post":{"tags":["v2-gtm"],"summary":"Explore Competitors","operationId":"explore_competitors_api_v2_gtm_competitors_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompetitorRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/gtm/campaigns":{"post":{"tags":["v2-gtm"],"summary":"Define Campaigns","operationId":"define_campaigns_api_v2_gtm_campaigns_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/gtm/companies":{"post":{"tags":["v2-gtm"],"summary":"Find Companies","operationId":"find_companies_api_v2_gtm_companies_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SegmentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/gtm/people":{"post":{"tags":["v2-gtm"],"summary":"Find People","description":"The people who run the companies step 4 just showed.\n\nReads the same pool step 4 read, in the same order, so row i here is the\ndecision maker of row i there. It used to run its own query against a\ndifferent table filtered only by industry and employee band, and hardcoded to\nthe United States, which produced people who worked at companies the visitor\nhad never been shown - measured at exactly zero overlap - on domains that\nwere 61% dead.","operationId":"find_people_api_v2_gtm_people_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SegmentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/gtm/email":{"post":{"tags":["v2-gtm"],"summary":"Write Email","operationId":"write_email_api_v2_gtm_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/v2/gtm/subscribe":{"post":{"tags":["v2-gtm"],"summary":"Subscribe Unlimited","operationId":"subscribe_unlimited_api_v2_gtm_subscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnlimitedSubscribeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/gtm/deposit/options":{"get":{"tags":["v2-gtm"],"summary":"Deposit Options","description":"The slider's bounds, steps and bonus tiers, from the one module that owns\nthem. The browser draws the control from this rather than from constants of\nits own, so the amount it offers and the amount we are willing to charge\ncannot drift apart.","operationId":"deposit_options_api_v2_gtm_deposit_options_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/gtm/deposit/preview":{"get":{"tags":["v2-gtm"],"summary":"Deposit Preview","description":"What one position on the slider buys. Clamped, so any integer is safe.","operationId":"deposit_preview_api_v2_gtm_deposit_preview_get","parameters":[{"name":"cents","in":"query","required":false,"schema":{"type":"integer","default":7500,"title":"Cents"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/gtm/claim":{"post":{"tags":["v2-gtm"],"summary":"Claim Credits","description":"Create (or reuse) the Stripe customer and hand back an intent to confirm.\n\nWith deposits on that is a PaymentIntent for the chosen amount; with them\noff it is the old SetupIntent, which charges nothing. Either way the browser\ngets a client secret and confirms it, and /api/v2/app/activate reads the\nresult back from Stripe rather than trusting what the browser reports.","operationId":"claim_credits_api_v2_gtm_claim_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2_gtm_routes__ClaimRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/session":{"post":{"tags":["v2-app"],"summary":"Restore Session","description":"Exchange a verified Getlead identity for its AutoGTM workspaces.","operationId":"restore_session_api_v2_app_session_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/activate":{"post":{"tags":["v2-app"],"summary":"Activate","description":"Turn a confirmed intent into a workspace with a credit balance.\n\nThe intent is re-read from Stripe rather than trusted from the client: the\nid travels back through the browser in the return URL, so anyone could post\none. Only `succeeded` intents carrying our own metadata are accepted, and\nthe amount credited is the amount Stripe says it actually received, never a\nnumber the browser supplied.","operationId":"activate_api_v2_app_activate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2_app_routes__ActivateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/activate-subscription":{"post":{"tags":["v2-app"],"summary":"Activate Subscription","description":"Turn a paid Checkout Session for the Unlimited plan into a seeded workspace.\n\nThe session is re-read from Stripe rather than trusted from the client, the\nsame way /activate treats an intent. Only a paid subscription session for\nthe Unlimited plan is accepted. The webhook activates the plan on the user\nrow on its own schedule; this endpoint writes the same facts first so the\nworkspace is never opened as a credit account in the seconds before the\nwebhook lands (the sender caches that answer for five minutes).","operationId":"activate_subscription_api_v2_app_activate_subscription_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivateSubscriptionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/activate-test":{"post":{"tags":["v2-app"],"summary":"Activate Test","description":"Same as /activate, without Stripe. Only for emails in V2_TEST_BYPASS_EMAILS.","operationId":"activate_test_api_v2_app_activate_test_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestActivateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/add-site":{"post":{"tags":["v2-app"],"summary":"Add Site","description":"Open a second workspace for an existing, paying customer.\n\n\"Add another website\" used to run the signed-in customer through the public\nfunnel and drop them on the card-entry paywall at the end, because the only\nno-card path was a test allowlist nobody real is on. Their card is already\nstored and their balance is already funded, so there was nothing to collect:\nit was asking a paying customer to pay again to use a page inside the\nproduct they had paid for.\n\nNo second signup credit. The $30 is a per-card, per-website grant for\nstrangers, and a second workspace on the same card is not a second stranger.","operationId":"add_site_api_v2_app_add_site_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddSiteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/overview":{"get":{"tags":["v2-app"],"summary":"Overview","operationId":"overview_api_v2_app_overview_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/campaign/toggle":{"post":{"tags":["v2-app"],"summary":"Toggle Campaign","operationId":"toggle_campaign_api_v2_app_campaign_toggle_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToggleRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/topup":{"post":{"tags":["v2-app"],"summary":"Manual Topup","operationId":"manual_topup_api_v2_app_topup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2_app_routes__TopupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/topup/confirm":{"post":{"tags":["v2-app"],"summary":"Manual Topup Confirm","description":"Finish a top-up the browser had to interrupt for a 3-D Secure challenge.\n\nThe PaymentIntent is re-read from Stripe rather than trusted from the\nclient, and it has to be one we created for this account: the id travels\nthrough the browser, so posting somebody else's would otherwise credit this\nworkspace with their money.","operationId":"manual_topup_confirm_api_v2_app_topup_confirm_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupConfirmRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/refund":{"get":{"tags":["v2-app"],"summary":"Refund Quote","description":"What could be handed back right now, for the button to state before it is pressed.","operationId":"refund_quote_api_v2_app_refund_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["v2-app"],"summary":"Refund Deposit","description":"Hand back every unspent deposit still inside the window.\n\nOrder matters and is deliberate: the ledger is debited first, through\n`_charge`, which takes the wallet lock and refuses to push the balance\nnegative. Only then is Stripe asked for the money. Doing it the other way\nround would leave a customer who double-clicked with two real refunds and\none ledger line.\n\nEach deposit is refunded at most once: the ledger ref is the PaymentIntent's\nown id with a suffix, so a retry hits the unique index instead of Stripe.","operationId":"refund_deposit_api_v2_app_refund_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefundRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/card/setup":{"post":{"tags":["v2-app"],"summary":"Card Setup","description":"Hand the browser a SetupIntent so it can collect a card for this account.","operationId":"card_setup_api_v2_app_card_setup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardSetupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/card/save":{"post":{"tags":["v2-app"],"summary":"Card Save","description":"Read back what the browser confirmed and put the card on the account.\n\nThe intent is re-read from Stripe rather than trusted from the client, and\nit has to belong to this account: the id travels through the browser, so\nposting somebody else's would otherwise attach their card here.","operationId":"card_save_api_v2_app_card_save_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CardSaveRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/ledger":{"get":{"tags":["v2-app"],"summary":"Ledger","operationId":"ledger_api_v2_app_ledger_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/send/tick":{"post":{"tags":["v2-app"],"summary":"Send Tick","description":"Drive one slice of sending. Guarded by a shared secret rather than a user\nsession: this is a cron target, and a public tick would let anyone burn an\naccount's credit.","operationId":"send_tick_api_v2_app_send_tick_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TickRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/autopilot/tick":{"post":{"tags":["v2-app"],"summary":"Autopilot Tick","description":"Review every opted-in account's campaigns and act on the results.\n\nSame shared-secret guard as /send/tick, and the same reason: this is a cron\ntarget, not something a browser session calls, and a public one would let\nanyone pause or rebalance an account's campaigns.\n\nThis route existing does not by itself mean it runs on a schedule - it has\nto be wired to an actual scheduler (a Railway cron hitting this endpoint, or\nequivalent) as a separate deploy step. Calling it directly runs one real\nreview pass right now, which is how it was tested.","operationId":"autopilot_tick_api_v2_app_autopilot_tick_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutopilotTickRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/autopilot/run":{"post":{"tags":["v2-app"],"summary":"Autopilot Run Now","description":"One review pass for the calling account, right now - the 'Run now' a customer can click.","operationId":"autopilot_run_now_api_v2_app_autopilot_run_post","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/sending":{"get":{"tags":["v2-app"],"summary":"Sending Status","description":"What the account can send today, and what it has sent.","operationId":"sending_status_api_v2_app_sending_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/budget":{"post":{"tags":["v2-app"],"summary":"Set Budget","description":"Move the daily budget. Clamped server-side; the slider is only a hint.","operationId":"set_budget_api_v2_app_budget_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BudgetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/budget/suggestion":{"post":{"tags":["v2-app"],"summary":"Answer Budget Suggestion","description":"Accept or dismiss a raise Autopilot proposed.\n\nThe amount comes from the stored row, never from the caller, so answering a\nsuggestion cannot be turned into a way to set an arbitrary budget. It is\nstill clamped on the way in, because the ceiling may have moved since the\nsuggestion was written.","operationId":"answer_budget_suggestion_api_v2_app_budget_suggestion_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BudgetSuggestionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/budget/preview":{"get":{"tags":["v2-app"],"summary":"Budget Preview","description":"Forecast for a budget the visitor has not committed to yet (funnel use).","operationId":"budget_preview_api_v2_app_budget_preview_get","parameters":[{"name":"daily_cents","in":"query","required":false,"schema":{"type":"integer","default":1500,"title":"Daily Cents"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/leads":{"get":{"tags":["v2-app"],"summary":"List Leads","operationId":"list_leads_api_v2_app_leads_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"campaign","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Campaign"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"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/v2/app/inbox":{"get":{"tags":["v2-app"],"summary":"Inbox","operationId":"inbox_api_v2_app_inbox_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/inbox/draft":{"post":{"tags":["v2-app"],"summary":"Draft Reply","description":"Write a reply for the customer to approve. Grounded in the facts they gave us\nat setup, because a confident answer about pricing we invented is worse than\nno answer at all.","operationId":"draft_reply_api_v2_app_inbox_draft_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/inbox/send":{"post":{"tags":["v2-app"],"summary":"Send Reply","description":"Put the approved answer on the wire, then mark the thread answered.\n\nIn that order, and only in that order. Marking first and sending after would\nlet a delivery failure leave a thread the customer believes was answered,\nwhich is the worst outcome available here: the prospect is waiting, the\ninbox is empty, and nothing in the product says otherwise.","operationId":"send_reply_api_v2_app_inbox_send_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendReplyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/unsubscribe":{"post":{"tags":["v2-app"],"summary":"Unsubscribe One Click","description":"RFC 8058 one-click: the recipient pressed Unsubscribe in their mail client\nand their provider POSTs here on their behalf. Same consequence as replying\n\"unsubscribe\": the address and its company stop hearing from this account.","operationId":"unsubscribe_one_click_api_v2_app_unsubscribe_post","parameters":[{"name":"t","in":"query","required":true,"schema":{"type":"string","title":"T"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["v2-app"],"summary":"Unsubscribe Confirm","description":"The link a human follows. Deliberately does NOT unsubscribe on GET: link\nscanners in corporate mail security follow every URL in a message, and a\nGET that mutates would let a scanner opt out every recipient it protects.\nThe page it returns is one button that POSTs.","operationId":"unsubscribe_confirm_api_v2_app_unsubscribe_get","parameters":[{"name":"t","in":"query","required":true,"schema":{"type":"string","title":"T"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/funnel":{"get":{"tags":["v2-app"],"summary":"Read Funnel","description":"Every stage between \"queued\" and \"hot lead\", per account and per campaign.\n\nThe one question this answers is WHERE the number died: an account under\nthe hot-lead floor is failing at exactly one of capture, placement,\naudience or copy, and until these stages were measured separately the only\ndiagnosis available was rereading a dashboard that shows totals.","operationId":"read_funnel_api_v2_app_funnel_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":14,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/schedule":{"get":{"tags":["v2-app"],"summary":"Read Schedule","description":"The sending window per country, in the recipient's own time.\n\nReturns the countries the account actually has queued alongside whatever it\nhas configured, so the screen shows the places mail is really going rather\nthan a list someone has to assemble by hand.","operationId":"read_schedule_api_v2_app_schedule_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["v2-app"],"summary":"Write Schedule","description":"Replace the schedule. Absent countries fall back to the '*' row.","operationId":"write_schedule_api_v2_app_schedule_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/settings":{"get":{"tags":["v2-app"],"summary":"Get Settings","operationId":"get_settings_api_v2_app_settings_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["v2-app"],"summary":"Update Settings","operationId":"update_settings_api_v2_app_settings_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/suppress":{"post":{"tags":["v2-app"],"summary":"Add Suppression","description":"Never email these. One list for the whole account, applied to every campaign.","operationId":"add_suppression_api_v2_app_suppress_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuppressRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/suppress/remove":{"post":{"tags":["v2-app"],"summary":"Remove Suppression","operationId":"remove_suppression_api_v2_app_suppress_remove_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnsuppressRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/onboarding":{"post":{"tags":["v2-app"],"summary":"Finish Onboarding","description":"Save the five answers, then hand the account to the planning agent.\n\nThe agent runs in the background because it reads a website, probes BigQuery\nand calls a model a few times. Holding the request open for that would time\nout on mobile, so the client polls /agent instead and watches it work.","operationId":"finish_onboarding_api_v2_app_onboarding_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/onboarding/auto":{"post":{"tags":["v2-app"],"summary":"Auto Onboarding","description":"Onboard the account from its own /ai-gtm run, without asking anything.\n\nThe five questions were all answered on screen during the run, so they are\ndrafted from it and the plan starts at once. The customer reads them over\nfrom a banner on the dashboard whenever they like, never as a gate in front\nof it. Only an account with no run to draft from is told so (`no_run`), and\nthe dashboard then offers the questions instead.","operationId":"auto_onboarding_api_v2_app_onboarding_auto_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoOnboardingRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/agent":{"get":{"tags":["v2-app"],"summary":"Agent Status","description":"What the agent is doing right now, in the words the customer reads.","operationId":"agent_status_api_v2_app_agent_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/agent/replan":{"post":{"tags":["v2-app"],"summary":"Replan","description":"Rebuild the plan, either from the answers on file or from the original run.","operationId":"replan_api_v2_app_agent_replan_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplanRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/onboarding/suggest":{"get":{"tags":["v2-app"],"summary":"Suggest Onboarding","description":"The onboarding answers, drafted from the run. See `_draft_answers`.","operationId":"suggest_onboarding_api_v2_app_onboarding_suggest_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/campaign/{campaign_id}":{"get":{"tags":["v2-app"],"summary":"Campaign Detail","description":"Everything one campaign is: who is in it, what it says, how it is doing.","operationId":"campaign_detail_api_v2_app_campaign__campaign_id__get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}},{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/campaign/edit":{"post":{"tags":["v2-app"],"summary":"Edit Campaign","description":"The customer owns the words. Edits apply to everything not sent yet.","operationId":"edit_campaign_api_v2_app_campaign_edit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2_app_routes__TemplateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/campaign/{campaign_id}/agent":{"get":{"tags":["v2-app"],"summary":"Campaign Agent Workspace","description":"Persistent, grounded operator conversation for one campaign.","operationId":"campaign_agent_workspace_api_v2_app_campaign__campaign_id__agent_get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}},{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["v2-app"],"summary":"Campaign Agent Message","description":"Let the campaign agent inspect or mutate state through bounded tools.","operationId":"campaign_agent_message_api_v2_app_campaign__campaign_id__agent_post","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignAgentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/inbox/booked":{"post":{"tags":["v2-app"],"summary":"Mark Booked","description":"Mark that a reply turned into a meeting.\n\nThere is no calendar integration, and pretending otherwise would put a number\non the dashboard nobody could trust. One tap from the person who took the\ncall is both honest and enough.","operationId":"mark_booked_api_v2_app_inbox_booked_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeetingRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/inbox/reclassify":{"post":{"tags":["v2-app"],"summary":"Reclassify","description":"The customer overrules the classifier.\n\nA \"sure, send it over\" was once filed as not interested, which suppressed\nthe whole company and told nobody. The classifier is fixed, but the\ncustomer reads their own replies and must be able to correct the next one\nwithout waiting for engineering. Correcting to interested reverses the\nsuppression, drafts the answer and sends the notification that was missed.","operationId":"reclassify_api_v2_app_inbox_reclassify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReclassifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/sent":{"get":{"tags":["v2-app"],"summary":"Sent Mail","description":"Every email that left, newest first. The proof that the money did something.","operationId":"sent_mail_api_v2_app_sent_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"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/v2/app/logo":{"get":{"tags":["v2-app"],"summary":"Company Logo","operationId":"company_logo_api_v2_app_logo_get","parameters":[{"name":"d","in":"query","required":false,"schema":{"type":"string","default":"","title":"D"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/activity":{"get":{"tags":["v2-app"],"summary":"Activity","description":"What has happened, newest first, with enough of the person attached to render.\n\nPolled on the dashboard: this is the surface that proves the money is doing\nsomething, so it carries the company and the name rather than a bare event.\n\n`pending` is the one genuinely unfinished thing: a lead the sender has picked\nup, or the next one in line. A log whose newest row is always already\nfinished reads as a report, so the real in-flight row is worth the extra\nquery.","operationId":"activity_api_v2_app_activity_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":40,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/targeting/facets":{"get":{"tags":["v2-studio"],"summary":"Targeting Facets","description":"What the targeting screen can offer: the countries actually indexed, plus the\nvocabularies its dropdowns are built from.\n\nCountries come from the filesystem rather than a list, so a market appears in\nthe product the moment it is indexed and nobody has to remember to add it\nhere as well.","operationId":"targeting_facets_api_v2_app_targeting_facets_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/targeting/count":{"post":{"tags":["v2-studio"],"summary":"Targeting Count","description":"How many people this definition reaches. Drives the live counter.","operationId":"targeting_count_api_v2_app_targeting_count_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ICPRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/targeting/preview":{"post":{"tags":["v2-studio"],"summary":"Targeting Preview","description":"A sample of who matches, so the definition can be judged on real people.","operationId":"targeting_preview_api_v2_app_targeting_preview_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ICPRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/targeting/rules":{"get":{"tags":["v2-studio"],"summary":"Targeting Rules","description":"The account's rules and what they currently do to each campaign.","operationId":"targeting_rules_api_v2_app_targeting_rules_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["v2-studio"],"summary":"Save Targeting Rules","description":"Save the account-wide rules, and decide what happens to what already exists.\n\nEnforcement itself lives in `build_pool()`, which every path to the\nwarehouse goes through, so saving is enough to bind every future build and\nevery Autopilot refill. `apply` only decides how far back the rules reach.","operationId":"save_targeting_rules_api_v2_app_targeting_rules_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/targeting/rules/preview":{"post":{"tags":["v2-studio"],"summary":"Targeting Rules Preview","description":"The same report for rules that have not been saved yet.","operationId":"targeting_rules_preview_api_v2_app_targeting_rules_preview_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RulesPreviewRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/campaign/autocreate":{"post":{"tags":["v2-studio"],"summary":"Campaign Autocreate","description":"Turn a campaign name into a built, review-ready campaign.\n\nEverything past the name already existed and already worked - proposing a\ngrounded ICP, saving it, filling the pool - it was only ever reachable from\nthe automatic onboarding run, once, at signup. A customer who wanted a\nsecond campaign had no way to run that sequence again: the only INSERT INTO\nv2_campaigns anywhere in the backend was the one-time seed at account\ncreation, gated to refuse running twice. This is that same sequence, made\nreachable on demand.","operationId":"campaign_autocreate_api_v2_app_campaign_autocreate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignAutoCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/campaign/import":{"post":{"tags":["v2-studio"],"summary":"Campaign Import","description":"A campaign built from a list the customer already has, rather than one this\nproduct finds. The dedupe against v2_suppression is the same check\nbuild_pool()'s own leads pass, so an imported list respects a customer's\ndo-not-contact list exactly as strictly as a generated one does.","operationId":"campaign_import_api_v2_app_campaign_import_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignImportRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/campaign/{campaign_id}/readiness":{"get":{"tags":["v2-studio"],"summary":"Campaign Readiness","operationId":"campaign_readiness_api_v2_app_campaign__campaign_id__readiness_get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}},{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/campaign/icp":{"post":{"tags":["v2-studio"],"summary":"Campaign Set Icp","operationId":"campaign_set_icp_api_v2_app_campaign_icp_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignICPRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/campaign/brief":{"post":{"tags":["v2-studio"],"summary":"Campaign Set Brief","description":"What this campaign sells and who it is for, as the customer edited it.\n\nThe words here are the ones the writer builds each email around, so an edit\nhas to reach the people who have not been written to yet: the save drops\ntheir cached drafts, which are re-written at send time under the new brief.\nNothing already sent is touched.","operationId":"campaign_set_brief_api_v2_app_campaign_brief_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignBriefRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/campaign/state":{"post":{"tags":["v2-studio"],"summary":"Campaign Set State","operationId":"campaign_set_state_api_v2_app_campaign_state_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignStateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/campaign/hold":{"post":{"tags":["v2-studio"],"summary":"Campaign Hold","description":"Cancel a campaign's auto-start without pausing it.\n\n\"Don't start this on your own\" and \"stop this campaign\" are different\nanswers, and folding the first into the second would leave the customer with\na paused campaign they have to remember to unpause. This keeps it in review,\nreviewable, and waiting for them instead of for a clock.","operationId":"campaign_hold_api_v2_app_campaign_hold_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignHoldRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/campaign/budget":{"post":{"tags":["v2-studio"],"summary":"Campaign Set Budget","operationId":"campaign_set_budget_api_v2_app_campaign_budget_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignBudgetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/campaigns/budgets":{"get":{"tags":["v2-studio"],"summary":"Campaign Budgets","description":"How the day's budget currently divides, for the campaigns table.\n\nLives under `/campaigns/` rather than `/campaign/` on purpose: `v2_app_routes`\nalready owns `/campaign/{campaign_id}` and is registered first, so a literal\nsegment there is parsed as an id and rejected as an integer.","operationId":"campaign_budgets_api_v2_app_campaigns_budgets_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/campaign/build":{"post":{"tags":["v2-studio"],"summary":"Campaign Build","description":"Fill a campaign's pool from its target definition.\n\nRuns in the background and moves the campaign through `building` to `review`,\nbecause assembling a pool means a DuckDB scan, a DNS sweep and a CrUX lookup,\nand holding an HTTP request open for that would time out on a phone.","operationId":"campaign_build_api_v2_app_campaign_build_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignBuildRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/instructions":{"get":{"tags":["v2-studio"],"summary":"Read Instructions","operationId":"read_instructions_api_v2_app_instructions_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["v2-studio"],"summary":"Write Instructions","operationId":"write_instructions_api_v2_app_instructions_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstructionsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/preview":{"get":{"tags":["v2-studio"],"summary":"Preview Emails","description":"What real people in this workspace will actually receive.\n\nReal leads out of the real pool, written by the same function the sender\ncalls, so the screen cannot show something nicer than what goes out. Three\nare offered because one example reads as a template and three make the\nper-recipient difference visible at a glance.","operationId":"preview_emails_api_v2_app_preview_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"stage","in":"query","required":false,"schema":{"type":"string","default":"first","title":"Stage"}},{"name":"lead_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Lead Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/templates":{"get":{"tags":["v2-studio"],"summary":"List Templates","description":"Every campaign's copy in one place, which is how a customer edits tone.","operationId":"list_templates_api_v2_app_templates_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["v2-studio"],"summary":"Save Template","operationId":"save_template_api_v2_app_templates_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/v2_studio_routes__TemplateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/docs":{"get":{"tags":["v2-studio"],"summary":"Read Docs","description":"What the agent knows about this business.\n\nEvery part of it feeds something concrete: the description and the audience\ndrive targeting and copy, the fact cards ground reply drafting so it cannot\ninvent a price, and the postal address is what US commercial mail is\nsupposed to carry in the footer.","operationId":"read_docs_api_v2_app_docs_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/docs/company":{"post":{"tags":["v2-studio"],"summary":"Write Docs Company","operationId":"write_docs_company_api_v2_app_docs_company_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocsCompanyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/docs/fact":{"post":{"tags":["v2-studio"],"summary":"Write Docs Fact","description":"Save one card, always as the customer's own.\n\nA card saved here can never be overwritten by a later rebuild, which is the\nonly promise that makes an AI-filled screen safe to correct.","operationId":"write_docs_fact_api_v2_app_docs_fact_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocsFactRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/docs/fact/delete":{"post":{"tags":["v2-studio"],"summary":"Remove Docs Fact","operationId":"remove_docs_fact_api_v2_app_docs_fact_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocsKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/docs/fact/suggest":{"post":{"tags":["v2-studio"],"summary":"Suggest Docs Fact","description":"Draft one card without saving it.\n\nNot saved on purpose: this is what the `+ Add pricing` button calls, and a\nprice the customer has not read yet has no business being quotable in a\nreply.","operationId":"suggest_docs_fact_api_v2_app_docs_fact_suggest_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocsKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/docs/generate":{"post":{"tags":["v2-studio"],"summary":"Build Docs","description":"Rebuild the brief from the website, the funnel run and the replies the\ncustomer has already sent. Synchronous: it is one model call behind a button\nthe customer just pressed, and a spinner that resolves beats a screen that\nsilently changes later.","operationId":"build_docs_api_v2_app_docs_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocsBuildRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/integrations":{"get":{"tags":["v2-studio"],"summary":"Integrations","description":"What this workspace is connected to, and what each connection is actually for.\n\nReported from live state rather than a static list, so a mailbox that stops\nworking shows as disconnected here instead of the customer discovering it\nthrough a silent drop in sending.","operationId":"integrations_api_v2_app_integrations_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/breakdown":{"get":{"tags":["v2-studio"],"summary":"Breakdown","description":"Day by day: what went out, what came back, and what it cost.\n\nThe columns are the ones a customer checks a spend against. Reply rate alone\nflatters a campaign that collects out-of-office bounces, so hot leads and\ncost per lead sit beside it, and `engaged` counts the ones that turned into\nan actual conversation rather than a single reply nobody answered.","operationId":"breakdown_api_v2_app_breakdown_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"range","in":"query","required":false,"schema":{"type":"string","default":"7d","title":"Range"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/agent/reflect":{"post":{"tags":["v2-studio"],"summary":"Agent Reflect","description":"Look at what the campaigns actually produced and act on it.\n\nCompares on hot leads per thousand emails rather than reply rate: reply rate\nrewards a campaign that collects out-of-office bounces, and hot leads are the\nthing being bought. Refuses to judge a campaign on fewer than a hundred sends,\nbecause pausing a good one for noise is worse than waiting.","operationId":"agent_reflect_api_v2_app_agent_reflect_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReflectRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/agent/vocabulary":{"get":{"tags":["v2-studio"],"summary":"Agent Vocabulary","description":"The industries and technologies that actually occur in the indexed data.\n\nFeeds the targeting screen's suggestions, and is the same sample the planner\nis grounded in - so what a customer can pick and what the agent can propose\nare the same vocabulary rather than two lists that drift apart.","operationId":"agent_vocabulary_api_v2_app_agent_vocabulary_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"countries","in":"query","required":false,"schema":{"type":"string","default":"","title":"Countries"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/billing":{"get":{"tags":["v2-account"],"summary":"Billing","description":"What this workspace has spent, and what it is about to.\n\nSpend is counted from mail that actually left, not from the budget. A\ncustomer opening this screen is reconciling a charge, and the budget is what\nthey asked for rather than what happened.","operationId":"billing_api_v2_app_billing_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/billing/portal":{"get":{"tags":["v2-account"],"summary":"Billing Portal","description":"A link into Stripe's own portal.\n\nCard details are never handled here. Stripe owns them, which is the only way\nto stay out of PCI scope, and the portal is also where a customer can remove\na card and stop being charged - so it is offered rather than buried.","operationId":"billing_portal_api_v2_app_billing_portal_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/notifications":{"get":{"tags":["v2-account"],"summary":"Read Notifications","operationId":"read_notifications_api_v2_app_notifications_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["v2-account"],"summary":"Write Notifications","operationId":"write_notifications_api_v2_app_notifications_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/referrals":{"get":{"tags":["v2-account"],"summary":"Referrals","operationId":"referrals_api_v2_app_referrals_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/keys":{"get":{"tags":["v2-account"],"summary":"List Keys","description":"The keys this workspace holds, by prefix only.\n\nThe full value is never stored, so it cannot be shown again. That is the\npoint: a database dump gives up nothing that can call the API.","operationId":"list_keys_api_v2_app_keys_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["v2-account"],"summary":"Create Key","description":"Mint a key. The full value is in this response and nowhere else, ever.","operationId":"create_key_api_v2_app_keys_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/keys/revoke":{"post":{"tags":["v2-account"],"summary":"Revoke Key","operationId":"revoke_key_api_v2_app_keys_revoke_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyDeleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/team":{"get":{"tags":["v2-account"],"summary":"Team","operationId":"team_api_v2_app_team_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/team/invite":{"post":{"tags":["v2-account"],"summary":"Invite","description":"Invite a teammate.\n\nRefuses an address that is already on the team rather than silently\nre-inviting, because a second invite to someone who already joined reads as\nthe first one having failed.","operationId":"invite_api_v2_app_team_invite_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/app/team/remove":{"post":{"tags":["v2-account"],"summary":"Remove Member","operationId":"remove_member_api_v2_app_team_remove_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/admin/overview":{"get":{"tags":["v2-admin"],"summary":"Overview","description":"Every number worth waking up to, in one call.","operationId":"overview_api_v2_admin_overview_get","parameters":[{"name":"fresh","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Fresh"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Overview Api V2 Admin Overview Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/admin/accounts":{"get":{"tags":["v2-admin"],"summary":"Accounts","description":"One row per workspace, newest first, with what it has actually done.","operationId":"accounts_api_v2_admin_accounts_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Accounts Api V2 Admin Accounts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/admin/mailboxes":{"get":{"tags":["v2-admin"],"summary":"Mailboxes","description":"The pool, and the warmup history behind each mailbox.\n\nGrouped by domain in the client, because reputation is a domain-level fact:\nwhen one address starts landing in spam its neighbours usually are too.","operationId":"mailboxes_api_v2_admin_mailboxes_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Mailboxes Api V2 Admin Mailboxes Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/admin/activity":{"get":{"tags":["v2-admin"],"summary":"Activity","description":"The newest events across every workspace, not just one.","operationId":"activity_api_v2_admin_activity_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":60,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Activity Api V2 Admin Activity Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/admin/hot-leads":{"get":{"tags":["v2-admin"],"summary":"Hot Leads","description":"Every workspace's hot replies, newest first: who answered, for whom, what\nthey said, and whether the customer has answered back.\n\nHot is the digest's definition (positive, question, referral). A yes the\ncustomer leaves sitting in \"new\" is the most expensive thing on this page,\nso unanswered ones carry their age.","operationId":"hot_leads_api_v2_admin_hot_leads_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":90,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Hot Leads Api V2 Admin Hot Leads Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/admin/impersonate/{account_id}":{"post":{"tags":["v2-admin"],"summary":"Impersonate","description":"A workspace session for the operator, seeing exactly what the customer sees.\n\nSupport has been reconstructing customer screens from raw tables: \"queued\nlooks low\" arrives as a screenshot, and answering it meant six SQL queries\nto rebuild a dashboard the product already renders. The app adopts a\n`?token=` once and wipes it from the URL, so the cheapest honest view is\nthe customer's own: mint the same capability token their login mints, open\ntheir workspace with it.\n\nThe mint is written to the audit trail. The kind is not in the customer's\nactivity whitelist, so the operator's visit does not appear in their feed -\nbut it is in the database, attributable, with the admin's identity on it.","operationId":"impersonate_api_v2_admin_impersonate__account_id__post","parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Impersonate Api V2 Admin Impersonate  Account Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/admin/health/mailboxes":{"get":{"tags":["v2-admin"],"summary":"Mailbox Health","description":"Yesterday's physical and today's, for every box, plus a fortnight of score\nhistory so a slide reads as a slide rather than as one bad morning.","operationId":"mailbox_health_api_v2_admin_health_mailboxes_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Mailbox Health Api V2 Admin Health Mailboxes Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/admin/health/mailbox/{mailbox_id}/hold":{"post":{"tags":["v2-admin"],"summary":"Hold Mailbox","description":"Take one box off cold outreach by hand and leave it there.\n\nA hold set here is marked manual, which is the difference that matters: the\ndaily sweep may not lift it, however good tomorrow's score looks. Warmup,\nthe poller and replies from the box all carry on.","operationId":"hold_mailbox_api_v2_admin_health_mailbox__mailbox_id__hold_post","parameters":[{"name":"mailbox_id","in":"path","required":true,"schema":{"type":"integer","title":"Mailbox Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Hold Mailbox Api V2 Admin Health Mailbox  Mailbox Id  Hold Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/admin/health/mailbox/{mailbox_id}/release":{"post":{"tags":["v2-admin"],"summary":"Release Mailbox","description":"Put one box back in the sending pool, whatever put it in quarantine.","operationId":"release_mailbox_api_v2_admin_health_mailbox__mailbox_id__release_post","parameters":[{"name":"mailbox_id","in":"path","required":true,"schema":{"type":"integer","title":"Mailbox Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Release Mailbox Api V2 Admin Health Mailbox  Mailbox Id  Release Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/admin/health/run":{"post":{"tags":["v2-admin"],"summary":"Run Health Check","description":"A sweep now, without waiting for the daily clock. Runs in the background -\nfifty SMTP handshakes and a round of probes take minutes, not a request.","operationId":"run_health_check_api_v2_admin_health_run_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Run Health Check Api V2 Admin Health Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/admin/trials":{"get":{"tags":["v2-admin"],"summary":"Trials","description":"Everyone who asked for the free trial on the homepage, whatever the guard\ndecided, with what they did with the leads and whether they went on to pay.\n\nTrial accounts sit on the free plan (usage.DIRECT_MAP folds\n`unlimited_trial` into it), so no other screen can tell them apart from an\nordinary free signup. The claim events are the record of who came through\nthis door; the pack row says how much of it they spent.","operationId":"trials_api_v2_admin_trials_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Trials Api V2 Admin Trials Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/admin/trials/{event_id}/release":{"post":{"tags":["v2-admin"],"summary":"Trial Release","description":"Fill a held trial's pack. Same path as the release link in the hold email.","operationId":"trial_release_api_v2_admin_trials__event_id__release_post","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"integer","title":"Event Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Trial Release Api V2 Admin Trials  Event Id  Release Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/admin/trials/{event_id}/deny":{"post":{"tags":["v2-admin"],"summary":"Trial Deny","description":"Keep the pack empty and ban every signal the signup touched.","operationId":"trial_deny_api_v2_admin_trials__event_id__deny_post","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"integer","title":"Event Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Trial Deny Api V2 Admin Trials  Event Id  Deny Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/mailboxes/groups":{"get":{"tags":["v2-ext-mailboxes"],"summary":"Groups","description":"Every fleet this identity may see, one line each.","operationId":"groups_api_v2_mailboxes_groups_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Groups Api V2 Mailboxes Groups Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/mailboxes/list":{"get":{"tags":["v2-ext-mailboxes"],"summary":"List Mailboxes","description":"Every box this identity may see, with its latest verdict, worst first.","operationId":"list_mailboxes_api_v2_mailboxes_list_get","parameters":[{"name":"group","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Mailboxes Api V2 Mailboxes List Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/mailboxes/{mailbox_id}":{"get":{"tags":["v2-ext-mailboxes"],"summary":"Mailbox Detail","description":"One box, opened up: the fortnight, the peers, the DNS, the last error.","operationId":"mailbox_detail_api_v2_mailboxes__mailbox_id__get","parameters":[{"name":"mailbox_id","in":"path","required":true,"schema":{"type":"integer","title":"Mailbox Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Mailbox Detail Api V2 Mailboxes  Mailbox Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["v2-ext-mailboxes"],"summary":"Remove","description":"Forget a box and its history, credentials included.","operationId":"remove_api_v2_mailboxes__mailbox_id__delete","parameters":[{"name":"mailbox_id","in":"path","required":true,"schema":{"type":"integer","title":"Mailbox Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Remove Api V2 Mailboxes  Mailbox Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/mailboxes/import":{"post":{"tags":["v2-ext-mailboxes"],"summary":"Import Mailboxes","description":"Register a fleet from a pasted credential sheet.\n\nEach row is proved against the mail server before it earns a row in the\ntable, so the list can never fill up with entries whose only possible\nreport is \"cannot sign in\". The reply says ok or why not, per row, and\nnever repeats the password back.","operationId":"import_mailboxes_api_v2_mailboxes_import_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Import Mailboxes Api V2 Mailboxes Import Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/mailboxes/scan":{"post":{"tags":["v2-ext-mailboxes"],"summary":"Scan Now","description":"Kick a sweep instead of waiting for the clock. Returns as it starts.\n\nA customer may refresh their own fleet, because \"the number is from two\nhours ago\" is the first thing anyone says to a health screen. The sweep is\nstill read-only, and their ids are narrowed to fleets they hold rather\nthan trusted as sent.","operationId":"scan_now_api_v2_mailboxes_scan_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ScanRequest"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Scan Now Api V2 Mailboxes Scan Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/mailboxes/{mailbox_id}/toggle":{"post":{"tags":["v2-ext-mailboxes"],"summary":"Toggle","description":"Pause or resume scanning one box. The history stays either way.","operationId":"toggle_api_v2_mailboxes__mailbox_id__toggle_post","parameters":[{"name":"mailbox_id","in":"path","required":true,"schema":{"type":"integer","title":"Mailbox Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Toggle Api V2 Mailboxes  Mailbox Id  Toggle Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/mailboxes/access/list":{"get":{"tags":["v2-ext-mailboxes"],"summary":"List Access","description":"Who, besides the operator, can see which fleet.","operationId":"list_access_api_v2_mailboxes_access_list_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Access Api V2 Mailboxes Access List Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/mailboxes/access":{"post":{"tags":["v2-ext-mailboxes"],"summary":"Add Access","description":"Let one customer read one fleet. Read is all it grants.","operationId":"add_access_api_v2_mailboxes_access_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Add Access Api V2 Mailboxes Access Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/mailboxes/access/revoke":{"post":{"tags":["v2-ext-mailboxes"],"summary":"Drop Access","description":"Take the fleet back off somebody's screen.","operationId":"drop_access_api_v2_mailboxes_access_revoke_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Drop Access Api V2 Mailboxes Access Revoke Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/data/vocabulary":{"get":{"tags":["v2-data-api"],"summary":"Vocabulary","description":"Every filter the API accepts and every value the clustered columns will\nmatch. Published because a filter surface a client has to guess at is a\nfilter surface that gets guessed wrong: a mistyped seniority is not an\nerror, it is an audience of zero with no explanation.","operationId":"vocabulary_api_v2_data_vocabulary_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/v2/data/search/count":{"post":{"tags":["v2-data-api"],"summary":"Search Count","description":"Free, and meant to be called often.","operationId":"search_count_api_v2_data_search_count_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/v2_data_api__SearchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/data/search/preview":{"post":{"tags":["v2-data-api"],"summary":"Search Preview","description":"Free, capped at 25 rows, addresses masked.\n\nThe shape of the audience is what a preview is for. The addresses are the\nproduct, and handing them over unmetered twenty-five at a time is a way to\nexport the warehouse in pages.","operationId":"search_preview_api_v2_data_search_preview_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/v2_data_api__SearchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/data/search/deliver":{"post":{"tags":["v2-data-api"],"summary":"Deliver","description":"Draw, probe, and hand over only what answered.\n\nReturns immediately with a job. The probing runs on the relay at about\ntwenty-three addresses a second and a full job is minutes rather than\nseconds, so holding the request open would only convert a working job into\na client timeout.","operationId":"deliver_api_v2_data_search_deliver_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/DeliverRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/data/companies/deliver":{"post":{"tags":["v2-data-api"],"summary":"Deliver Companies","description":"Company records, synchronously. Nothing here needs a probe, so nothing here\nneeds a job: a company row is either in the warehouse or it is not.","operationId":"deliver_companies_api_v2_data_companies_deliver_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/DeliverRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/data/companies/count":{"post":{"tags":["v2-data-api"],"summary":"Count Companies","description":"Free. The same predicate as the delivery, counted instead of returned.","operationId":"count_companies_api_v2_data_companies_count_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/v2_data_api__SearchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/data/verify":{"post":{"tags":["v2-data-api"],"summary":"Verify List","description":"Probe addresses the customer brought with them. Charged on attempts, because\nan attempt is what costs: a probe that comes back invalid did the same work\nas one that came back valid, and it is the answer they are buying.","operationId":"verify_list_api_v2_data_verify_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/v2_data_api__VerifyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/data/enrich/linkedin":{"post":{"tags":["v2-data-api"],"summary":"Enrich Linkedin","description":"Live profile reads, off by default.\n\nThe plumbing is v2_linkedin's, unchanged. What is missing is not code: the\nApify account this runs on sits on a monthly spend limit below any volume\nworth contracting, and an endpoint that answers 403 halfway through a\ncustomer's run is worse than one that says no.","operationId":"enrich_linkedin_api_v2_data_enrich_linkedin_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/EnrichRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/data/jobs/{job_id}":{"get":{"tags":["v2-data-api"],"summary":"Job Status","operationId":"job_status_api_v2_data_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":1000,"title":"Limit"}},{"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/v2/data/jobs/{job_id}/csv":{"get":{"tags":["v2-data-api"],"summary":"Job Csv","operationId":"job_csv_api_v2_data_jobs__job_id__csv_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"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/v2/data/jobs":{"get":{"tags":["v2-data-api"],"summary":"List Jobs","operationId":"list_jobs_api_v2_data_jobs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"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/v2/data/usage":{"get":{"tags":["v2-data-api"],"summary":"Usage Route","operationId":"usage_route_api_v2_data_usage_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/v2/data/app/overview":{"get":{"tags":["v2-data-api"],"summary":"App Overview","description":"What the /v2/app screen reads. Session token rather than API key, because a\ncustomer looking at their own usage has not necessarily minted a key yet,\nand the screen that explains the API is the screen they arrive on first.","operationId":"app_overview_api_v2_data_app_overview_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/verify-email":{"post":{"tags":["tools"],"summary":"Free Verify Email","operationId":"free_verify_email_api_tools_verify_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEmailRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/check-deliverability":{"post":{"tags":["tools"],"summary":"Free Check Deliverability","operationId":"free_check_deliverability_api_tools_check_deliverability_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeliverabilityRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/find-email":{"post":{"tags":["tools"],"summary":"Free Find Email","operationId":"free_find_email_api_tools_find_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindEmailRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/find-email-multi":{"post":{"tags":["tools"],"summary":"Free Find Email Multi","description":"Birden çok aday domain'i tek çağrıda dener (1 rate-limit hakkı). Extension\nşirket adından Clearbit + heuristik varyantlar üretip buraya yollar; hangi\ndomain gerçekse SMTP onu doğrular. Bulunan tüm email'leri döndürür.","operationId":"free_find_email_multi_api_tools_find_email_multi_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindEmailMultiRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/verify-license":{"post":{"tags":["tools"],"summary":"Verify License","description":"Extension hesap panelinden lisans key'i doğrular → premium (limitsiz) açılır.","operationId":"verify_license_api_tools_verify_license_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyLicenseRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/company-domain":{"get":{"tags":["tools"],"summary":"Company Domain Suggest","operationId":"company_domain_suggest_api_tools_company_domain_get","parameters":[{"name":"name","in":"query","required":false,"schema":{"type":"string","default":"","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/spam-test/start":{"post":{"tags":["tools"],"summary":"Spam Test Start","operationId":"spam_test_start_api_tools_spam_test_start_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/tools/spam-test/result":{"post":{"tags":["tools"],"summary":"Spam Test Result","operationId":"spam_test_result_api_tools_spam_test_result_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpamTestResultRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/spam-test/inbound":{"post":{"tags":["tools"],"summary":"Spam Test Inbound","description":"Resend email.received webhook'u. Origin guard YOK (Resend sunucusundan gelir),\ndoğrulama svix imzasıyla yapılır.","operationId":"spam_test_inbound_api_tools_spam_test_inbound_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/tools/extract-emails":{"post":{"tags":["tools"],"summary":"Free Extract Emails","operationId":"free_extract_emails_api_tools_extract_emails_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtractEmailsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/check-spf":{"post":{"tags":["tools"],"summary":"Free Check Spf","operationId":"free_check_spf_api_tools_check_spf_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpfCheckRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/check-blacklist":{"post":{"tags":["tools"],"summary":"Free Check Blacklist","operationId":"free_check_blacklist_api_tools_check_blacklist_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlacklistCheckRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tools/reverse-lookup":{"post":{"tags":["tools"],"summary":"Free Reverse Lookup","operationId":"free_reverse_lookup_api_tools_reverse_lookup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReverseLookupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/plans":{"get":{"tags":["billing"],"summary":"Get Plans","description":"Plan catalog for the pricing cards. Public, cacheable, no auth.","operationId":"get_plans_api_billing_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/billing/checkout":{"post":{"tags":["billing"],"summary":"Create Checkout Session","description":"Start a subscription. Works signed in or anonymous.\n\nSigned-in callers get their existing Stripe customer reused so upgrades land\non the same customer record; anonymous callers (marketing pages) enter their\nemail at Checkout and are linked by the webhook afterwards.","operationId":"create_checkout_session_api_billing_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/billing/subscription":{"get":{"tags":["billing"],"summary":"Get Subscription","description":"Current billing state for the account screen: plan, renewal date, whether\nit is set to cancel, and whether a renewal payment is failing.","operationId":"get_subscription_api_billing_subscription_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/cancel":{"post":{"tags":["billing"],"summary":"Cancel Subscription","description":"Cancel at period end. Access continues until the paid period runs out;\nthe webhook downgrades the account when Stripe finally deletes it.","operationId":"cancel_subscription_api_billing_cancel_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/resume":{"post":{"tags":["billing"],"summary":"Resume Subscription","description":"Undo a pending cancellation while the period is still running.","operationId":"resume_subscription_api_billing_resume_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/confirm-session":{"post":{"tags":["billing"],"summary":"Confirm Checkout Session","description":"Activate the account behind a completed Checkout Session.\n\nThe webhook is the authority on entitlement, but it is asynchronous — the\ncustomer lands on the success page before it has necessarily arrived. This\nendpoint does the same provisioning work synchronously and idempotently, so\nthe customer can sign straight in instead of staring at a spinner. Whichever\nof the two runs second is a no-op.\n\nOnly a Checkout Session Stripe reports as paid can activate anything, so a\nguessed session id grants nothing.","operationId":"confirm_checkout_session_api_billing_confirm_session_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmSessionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/suppression/stats":{"get":{"tags":["suppression"],"summary":"Get Suppression Stats","description":"Returns Bounce Shield summary for the dashboard card.\ntotal, by_reason breakdown, top bouncing domains, weekly growth.","operationId":"get_suppression_stats_api_suppression_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/suppression/list":{"get":{"tags":["suppression"],"summary":"Get Suppression List","description":"Paginated suppression list. Supports filtering by reason.","operationId":"get_suppression_list_api_suppression_list_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"reason","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/suppression/{email}":{"delete":{"tags":["suppression"],"summary":"Remove From Suppression","description":"Manually remove an email from the suppression list.","operationId":"remove_from_suppression_api_suppression__email__delete","parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/templates":{"get":{"tags":["templates"],"summary":"List Templates","description":"List user's saved templates (summary — no body).","operationId":"list_templates_api_templates_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["templates"],"summary":"Create Template","description":"Create a new saved template.","operationId":"create_template_api_templates_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/templates/export":{"get":{"tags":["templates"],"summary":"Export Templates","description":"Export all templates as plain text.\nIntentionally plain — not formatted for Instantly/Smartlead/Apollo\nso rebuilding elsewhere requires manual work.","operationId":"export_templates_api_templates_export_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/templates/{template_id}":{"get":{"tags":["templates"],"summary":"Get Template","description":"Get full template including body and follow_ups.","operationId":"get_template_api_templates__template_id__get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"integer","title":"Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["templates"],"summary":"Update Template","description":"Update an existing template.","operationId":"update_template_api_templates__template_id__put","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"integer","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["templates"],"summary":"Delete Template","description":"Delete a saved template.","operationId":"delete_template_api_templates__template_id__delete","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"integer","title":"Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/templates/{template_id}/use":{"post":{"tags":["templates"],"summary":"Use Template","description":"Increment use_count and return full template data.\nCalled when user clicks 'Use in Campaign'.","operationId":"use_template_api_templates__template_id__use_post","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"integer","title":"Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/hubspot/status":{"get":{"tags":["hubspot"],"summary":"Hubspot Status","description":"Return connection status and sync stats.","operationId":"hubspot_status_api_integrations_hubspot_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/integrations/hubspot/connect":{"post":{"tags":["hubspot"],"summary":"Hubspot Connect","description":"Connect HubSpot account. Tests connection then saves credentials.","operationId":"hubspot_connect_api_integrations_hubspot_connect_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HubSpotConnectRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/hubspot":{"delete":{"tags":["hubspot"],"summary":"Hubspot Disconnect","description":"Disconnect HubSpot integration (keeps sync history on leads).","operationId":"hubspot_disconnect_api_integrations_hubspot_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/integrations/hubspot/sync":{"post":{"tags":["hubspot"],"summary":"Hubspot Manual Sync","description":"Trigger a manual full sync.","operationId":"hubspot_manual_sync_api_integrations_hubspot_sync_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/integrations/hubspot/webhook":{"post":{"tags":["hubspot"],"summary":"Hubspot Webhook","description":"Inbound webhook from HubSpot.\nReceives deal stage updates and syncs back to GetLead CRM.\nConfigure in HubSpot: Settings > Integrations > Webhooks > deal.propertyChange (dealstage)","operationId":"hubspot_webhook_api_integrations_hubspot_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/people/facets":{"get":{"tags":["people"],"summary":"Facets","operationId":"facets_api_people_facets_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/people/count":{"post":{"tags":["people"],"summary":"Count People","operationId":"count_people_api_people_count_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FilterRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/people/search":{"post":{"tags":["people"],"summary":"Search People","operationId":"search_people_api_people_search_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/b2b_people__SearchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/people/reveal":{"post":{"tags":["people"],"summary":"Reveal","description":"Hand over the selected rows. One credit per address handed over.\n\nInstant by default: the address comes straight from the contact projection\nwith the grade the warehouse gave it, and verification is a separate free\nstep. With `verify` on, the address is probed first and only the ones that\nanswer are charged. The charge is all or nothing under a row lock, so two\nreveals racing for the last credits cannot both pass, and an address the\naccount already holds, under any person key, costs nothing.","operationId":"reveal_api_people_reveal_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevealRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/people/verify":{"post":{"tags":["people"],"summary":"Verify Held","description":"Probe addresses the customer already holds. Free, no credit moves.\n\nRuns as a job in a thread of this process, chunk by chunk, so the screen\ncan poll for live counts the way the Lists page shows a list verifying.\nA job left behind by a restart is picked up by the reveal tick.","operationId":"verify_held_api_people_verify_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/b2b_people__VerifyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/people/verify/upload":{"post":{"tags":["people"],"summary":"Verify Upload","description":"Verify a list the customer brought with them.\n\nA CSV in, a verification job out, running through the same relay and the\nsame chunking as a verification of rows they revealed here. The column is\nfound rather than configured: an address is the only thing in a spreadsheet\nshaped like an address, and asking somebody to name the column is a step\nthat exists only because the parser was lazy.\n\nVerdicts are written to the delivery ledger by address hash, exactly as the\nother path does, so an address the account already holds picks up the new\nverdict too rather than keeping a stale one.","operationId":"verify_upload_api_people_verify_upload_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_verify_upload_api_people_verify_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/people/verify/jobs/{job_id}":{"get":{"tags":["people"],"summary":"Verify Job","operationId":"verify_job_api_people_verify_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/people/verify/jobs":{"get":{"tags":["people"],"summary":"Verify Jobs","description":"Recent verification jobs, for the Exports screen. Newest first.","operationId":"verify_jobs_api_people_verify_jobs_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/people/reveal/bulk":{"post":{"tags":["people"],"summary":"Reveal Bulk","operationId":"reveal_bulk_api_people_reveal_bulk_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/people/reveal/jobs":{"get":{"tags":["people"],"summary":"Reveal Jobs","operationId":"reveal_jobs_api_people_reveal_jobs_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/people/reveal/jobs/{job_id}":{"get":{"tags":["people"],"summary":"Reveal Job","operationId":"reveal_job_api_people_reveal_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/people/reveal/jobs/{job_id}/csv":{"get":{"tags":["people"],"summary":"Reveal Job Csv","operationId":"reveal_job_csv_api_people_reveal_jobs__job_id__csv_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"full","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Full"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/people/lists/{list_id}/add":{"post":{"tags":["people"],"summary":"Add To List","description":"Only delivered rows reach a list: what the customer paid for, verdict attached.","operationId":"add_to_list_api_people_lists__list_id__add_post","parameters":[{"name":"list_id","in":"path","required":true,"schema":{"type":"integer","title":"List Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAddRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/people/export":{"post":{"tags":["people"],"summary":"Export Held","description":"Revealed rows as CSV, from the ledger, so a selection spanning pages exports whole.","operationId":"export_held_api_people_export_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/people/credits":{"get":{"tags":["people"],"summary":"Credits","operationId":"credits_api_people_credits_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/people/company":{"get":{"tags":["people"],"summary":"Company Detail","description":"One company, by domain. The table is clustered on domain, so this is a few MB.","operationId":"company_detail_api_people_company_get","parameters":[{"name":"domain","in":"query","required":false,"schema":{"type":"string","default":"","title":"Domain"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/topup/packs":{"get":{"tags":["billing-topup"],"summary":"List Packs","operationId":"list_packs_api_billing_topup_packs_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/topup/checkout":{"post":{"tags":["billing-topup"],"summary":"Topup Checkout","description":"Start a one-off Stripe Checkout for a credit pack. Signed-in, paid plans only.","operationId":"topup_checkout_api_billing_topup_checkout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/b2b_topup__TopupRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/topup/confirm":{"post":{"tags":["billing-topup"],"summary":"Topup Confirm","description":"Apply a pack the moment Stripe sends the buyer back, without waiting on the\nwebhook. Only the account that started the checkout can confirm it.","operationId":"topup_confirm_api_billing_topup_confirm_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/onboarding/state":{"get":{"tags":["onboarding"],"summary":"State","description":"What the dashboard and the onboarding page both read before deciding\nanything. One call, server truth, no localStorage in the decision.","operationId":"state_api_onboarding_state_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/onboarding/complete":{"post":{"tags":["onboarding"],"summary":"Complete","operationId":"complete_api_onboarding_complete_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/onboarding/segments":{"post":{"tags":["onboarding"],"summary":"Segments","description":"The six audiences the run found, as People filters, with a real count each.\n\nReads the stored /ai-gtm run for the domain. When the run is missing the\ntwo steps this needs (company, campaigns) they are produced here, so a\ncustomer who typed a site the funnel never saw still gets audiences.","operationId":"segments_api_onboarding_segments_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SegmentsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/onboarding/build":{"post":{"tags":["onboarding"],"summary":"Build","description":"One list and one probed bulk order per chosen audience, the found people\ninto the first list, the emails written in the background. Nothing here\nclaims a result: the job counters are the result.","operationId":"build_api_onboarding_build_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BuildRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/onboarding/build/{run_id}":{"get":{"tags":["onboarding"],"summary":"Build Status","description":"Live counters straight from the reveal jobs, lists filled the moment a\njob finishes, and a verdict for the run once every job has one.","operationId":"build_status_api_onboarding_build__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/people/saved":{"get":{"tags":["people"],"summary":"List Saved","operationId":"list_saved_api_people_saved_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["people"],"summary":"Create Saved","operationId":"create_saved_api_people_saved_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/people/saved/{saved_id}":{"delete":{"tags":["people"],"summary":"Delete Saved","operationId":"delete_saved_api_people_saved__saved_id__delete","parameters":[{"name":"saved_id","in":"path","required":true,"schema":{"type":"string","title":"Saved Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/unlimited/start":{"post":{"tags":["unlimited"],"summary":"Start","description":"Send a sign-in code, whether or not the address has an account yet.\n\nDeliberately different from the funnel's own login-code route, which answers\n404 for an unknown address because it only ever signs existing customers\nback in. This one is a signup, so an unknown address is the normal case and\nthe answer is the same either way: no caller can learn from the response\nwhether an account exists.","operationId":"start_api_unlimited_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/unlimited/verify-code":{"post":{"tags":["unlimited"],"summary":"Verify Code","description":"Spend the code, open the account and the workspace, hand over the trial.","operationId":"verify_code_api_unlimited_verify_code_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/unlimited_routes__VerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/unlimited/me":{"get":{"tags":["unlimited"],"summary":"Me","description":"Plan, trial balance and the fair-use ceilings, for the workspace header.","operationId":"me_api_unlimited_me_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/unlimited/upgrade":{"post":{"tags":["unlimited"],"summary":"Upgrade","description":"Start the $697 subscription.\n\nA thin wrapper over the one checkout path the whole product uses, rather\nthan a second one: everything that makes a Getlead checkout work - the\naffiliate coupon, the ad attribution, the Terms checkbox, the guard against\nselling a second subscription to the same customer - lives in\nbilling_routes and would have to be rebuilt here otherwise.","operationId":"upgrade_api_unlimited_upgrade_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpgradeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/unlimited/fields":{"get":{"tags":["unlimited"],"summary":"Fields","description":"Every column a delivered lead carries, grouped.\n\nServed from the same module the CSV writer reads, so the number the page\nshows and the number of columns in the file are one number.","operationId":"fields_api_unlimited_fields_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/unlimited/sample":{"post":{"tags":["unlimited"],"summary":"Request Sample","description":"Record who asked, then let them download. Returns the URL to fetch.","operationId":"request_sample_api_unlimited_sample_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SampleRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/unlimited/sample.csv":{"get":{"tags":["unlimited"],"summary":"Sample Csv","description":"A real sample: real companies, real business addresses, verified before\nthey went into the pool, direct phone numbers masked.\n\nDrawn at random per download, so no two visitors get the same file and the\npage is never handing out one fixed list that ends up mirrored somewhere.","operationId":"sample_csv_api_unlimited_sample_csv_get","parameters":[{"name":"email","in":"query","required":false,"schema":{"type":"string","default":"","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/unlimited/review":{"get":{"tags":["unlimited"],"summary":"Review","description":"The one-click link from the hold email. Signed, expiring, single use.","operationId":"review_api_unlimited_review_get","parameters":[{"name":"e","in":"query","required":true,"schema":{"type":"integer","title":"E"}},{"name":"a","in":"query","required":true,"schema":{"type":"string","title":"A"}},{"name":"x","in":"query","required":true,"schema":{"type":"integer","title":"X"}},{"name":"s","in":"query","required":true,"schema":{"type":"string","title":"S"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/unlimited/admin/trials":{"get":{"tags":["unlimited"],"summary":"Admin Trials","description":"Trials by outcome: held, granted, released, denied, blocked, repeat.","operationId":"admin_trials_api_unlimited_admin_trials_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"held","title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/unlimited/admin/trials/{event_id}/release":{"post":{"tags":["unlimited"],"summary":"Admin Release","operationId":"admin_release_api_unlimited_admin_trials__event_id__release_post","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"integer","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/unlimited/admin/trials/{event_id}/deny":{"post":{"tags":["unlimited"],"summary":"Admin Deny","operationId":"admin_deny_api_unlimited_admin_trials__event_id__deny_post","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"integer","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mcp":{"get":{"tags":["mcp"],"summary":"Mcp Method Not Allowed","description":"2026-07-28 removed the GET stream and DELETE session teardown. Older clients\nthat still try them get the documented 405.","operationId":"mcp_method_not_allowed_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["mcp"],"summary":"Mcp Endpoint","operationId":"mcp_endpoint_mcp_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"delete":{"tags":["mcp"],"summary":"Mcp Method Not Allowed","description":"2026-07-28 removed the GET stream and DELETE session teardown. Older clients\nthat still try them get the documented 405.","operationId":"mcp_method_not_allowed_mcp_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/mcp/health":{"get":{"tags":["mcp"],"summary":"Mcp Health","operationId":"mcp_health_mcp_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/oauth-protected-resource/mcp":{"get":{"tags":["mcp-oauth"],"summary":"Protected Resource Metadata","operationId":"protected_resource_metadata__well_known_oauth_protected_resource_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/oauth-protected-resource":{"get":{"tags":["mcp-oauth"],"summary":"Protected Resource Metadata","operationId":"protected_resource_metadata__well_known_oauth_protected_resource_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/oauth-authorization-server/mcp":{"get":{"tags":["mcp-oauth"],"summary":"Authorization Server Metadata","operationId":"authorization_server_metadata__well_known_oauth_authorization_server_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/oauth-authorization-server":{"get":{"tags":["mcp-oauth"],"summary":"Authorization Server Metadata","operationId":"authorization_server_metadata__well_known_oauth_authorization_server_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/openid-configuration":{"get":{"tags":["mcp-oauth"],"summary":"Openid Configuration","operationId":"openid_configuration__well_known_openid_configuration_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/mcp/oauth/register":{"post":{"tags":["mcp-oauth"],"summary":"Register Client","operationId":"register_client_mcp_oauth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mcp/oauth/authorize":{"get":{"tags":["mcp-oauth"],"summary":"Authorize","description":"Hand the user to the Getlead consent screen. Every parameter is validated\nhere so the frontend only has to render and post back.","operationId":"authorize_mcp_oauth_authorize_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/mcp/oauth/approve":{"post":{"tags":["mcp-oauth"],"summary":"Approve","description":"Called by the consent page with the user's Supabase session token. Mints a\nsingle-use authorization code and returns the URL to redirect back to.","operationId":"approve_mcp_oauth_approve_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mcp/oauth/deny":{"post":{"tags":["mcp-oauth"],"summary":"Deny","operationId":"deny_mcp_oauth_deny_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mcp/oauth/token":{"post":{"tags":["mcp-oauth"],"summary":"Token","operationId":"token_mcp_oauth_token_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/mcp/oauth/revoke":{"post":{"tags":["mcp-oauth"],"summary":"Revoke","description":"RFC 7009. Always 200, even for an unknown token.","operationId":"revoke_mcp_oauth_revoke_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/mcp/status":{"get":{"tags":["mcp-management"],"summary":"Mcp Status","description":"Everything the settings page renders on first paint.","operationId":"mcp_status_api_mcp_status_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp/keys":{"post":{"tags":["mcp-management"],"summary":"Create Key","description":"Mint a key. The raw value is in this response and nowhere else.","operationId":"create_key_api_mcp_keys_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp/keys/{key_id}":{"delete":{"tags":["mcp-management"],"summary":"Delete Key","operationId":"delete_key_api_mcp_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp/usage":{"get":{"tags":["mcp-management"],"summary":"Mcp Usage","operationId":"mcp_usage_api_mcp_usage_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp/clients":{"get":{"tags":["mcp-management"],"summary":"Mcp Clients","description":"OAuth connections the user has approved (Claude, ChatGPT and friends).","operationId":"mcp_clients_api_mcp_clients_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp/clients/{token_id}":{"delete":{"tags":["mcp-management"],"summary":"Disconnect Client","operationId":"disconnect_client_api_mcp_clients__token_id__delete","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"integer","title":"Token Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mcp/audit":{"get":{"tags":["mcp-management"],"summary":"Mcp Audit","description":"Recent tool calls, so a user can see exactly what their agent did.","operationId":"mcp_audit_api_mcp_audit_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/icp/insights":{"get":{"summary":"Icp Get Insights","operationId":"icp_get_insights_api_icp_insights_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/icp/refresh":{"post":{"summary":"Icp Refresh","operationId":"icp_refresh_api_icp_refresh_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/achievements/milestones":{"get":{"summary":"Get Milestones","operationId":"get_milestones_api_achievements_milestones_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/achievements/milestones/mark":{"post":{"summary":"Mark Milestone","operationId":"mark_milestone_api_achievements_milestones_mark_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MilestoneMarkRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rewards/submit":{"post":{"summary":"Submit Reward","operationId":"submit_reward_api_rewards_submit_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RewardSubmissionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/usage":{"get":{"summary":"Get Usage Stats","description":"Get current user plan and usage statistics","operationId":"get_usage_stats_api_user_usage_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/claim-leads":{"post":{"summary":"Claim Free Leads Main","description":"Allow user to claim 1000 free leads (one-time) - Main endpoint","operationId":"claim_free_leads_main_api_user_claim_leads_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reviews/trustpilot":{"post":{"summary":"Submit Trustpilot Review","description":"Legacy entry point. The review is now step one of the reward ladder\n(reward_ladder.py), so the claim is filed there and credited from there.","operationId":"submit_trustpilot_review_api_reviews_trustpilot_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrustpilotReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reviews/trustpilot/status":{"get":{"summary":"Get Trustpilot Review Status","description":"Check current user's review submission status","operationId":"get_trustpilot_review_status_api_reviews_trustpilot_status_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/reviews/trustpilot":{"get":{"summary":"Admin List Trustpilot Reviews","description":"Admin: list all Trustpilot review submissions","operationId":"admin_list_trustpilot_reviews_api_admin_reviews_trustpilot_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/reviews/trustpilot/{submission_id}/approve":{"post":{"summary":"Admin Approve Trustpilot Review","description":"Admin: approve review → add 1,000 lead credits to user","operationId":"admin_approve_trustpilot_review_api_admin_reviews_trustpilot__submission_id__approve_post","parameters":[{"name":"submission_id","in":"path","required":true,"schema":{"type":"integer","title":"Submission Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/reviews/trustpilot/{submission_id}/reject":{"post":{"summary":"Admin Reject Trustpilot Review","description":"Admin: reject a Trustpilot review submission","operationId":"admin_reject_trustpilot_review_api_admin_reviews_trustpilot__submission_id__reject_post","parameters":[{"name":"submission_id","in":"path","required":true,"schema":{"type":"integer","title":"Submission Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/stripe":{"post":{"summary":"Stripe Webhook","description":"Stripe webhook endpoint\nHandles checkout.session.completed events","operationId":"stripe_webhook_api_webhooks_stripe_post","parameters":[{"name":"stripe-signature","in":"header","required":false,"schema":{"type":"string","title":"Stripe-Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stripe/webhook":{"post":{"summary":"Stripe Webhook Alias","description":"Alias endpoint for Stripe webhook - redirects to main webhook handler","operationId":"stripe_webhook_alias_api_stripe_webhook_post","parameters":[{"name":"stripe-signature","in":"header","required":false,"schema":{"type":"string","title":"Stripe-Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/billing/portal":{"post":{"summary":"Create Billing Portal Session","description":"Create a Stripe Customer Portal session for the authenticated user.\nRequires that user_profiles.stripe_customer_id is populated via webhook.","operationId":"create_billing_portal_session_api_billing_portal_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/stripe/test":{"get":{"summary":"Test Stripe Webhook","description":"Test endpoint to verify webhook is configured","operationId":"test_stripe_webhook_api_webhooks_stripe_test_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/payment/session/{session_id}":{"get":{"summary":"Get Session Credentials","description":"Get credentials for a payment session (for immediate display after payment)","operationId":"get_session_credentials_api_payment_session__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscription/{user_id}":{"get":{"summary":"Get User Subscription","description":"Get user's current subscription — users can only access their own data","operationId":"get_user_subscription_api_subscription__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Root","description":"Public root endpoint","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/health":{"get":{"summary":"Health Check","description":"Public health check endpoint\nReturns detailed status of all system components","operationId":"health_check_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/providers":{"get":{"summary":"Get Providers","description":"Get available search providers and their status (with user's saved keys)","operationId":"get_providers_api_providers_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/providers/set":{"post":{"summary":"Set Provider","description":"Set active search provider","operationId":"set_provider_api_providers_set_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderSettings"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/providers/active":{"post":{"summary":"Set Active Provider","description":"Set active provider for current user (updates database)","operationId":"set_active_provider_api_providers_active_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderSettings"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/configure":{"post":{"summary":"Configure Provider","description":"Configure a provider with API key (saves to database per-user)","operationId":"configure_provider_api_configure_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderConfig"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/providers/configure":{"post":{"summary":"Configure Provider","description":"Configure a provider with API key (saves to database per-user)","operationId":"configure_provider_api_providers_configure_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderConfig"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/onboarding/analyze-website":{"post":{"summary":"Analyze Website","description":"Fetch website content async (httpx) and extract ICP via Gemini.","operationId":"analyze_website_api_onboarding_analyze_website_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingAnalyzeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/onboarding/generate-campaign":{"post":{"summary":"Generate Onboarding Campaign","description":"Generate 3 follow-up email templates based on ICP analysis.","operationId":"generate_onboarding_campaign_api_onboarding_generate_campaign_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingCampaignRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/b2b/configure":{"post":{"summary":"Configure B2B Provider","description":"Configure Apify token for B2B lead scraping (stored per-user).","operationId":"configure_b2b_provider_api_b2b_configure_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/B2BProviderConfig"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/b2b/scrape":{"post":{"summary":"Scrape B2B Leads","description":"Search B2B leads using BigQuery Database (Apollo Dataset).\nReplaces old Apify scraper.","operationId":"scrape_b2b_leads_api_b2b_scrape_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/B2BLeadScrapeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/scrape/stream":{"get":{"summary":"Scrape Leads Stream Get","description":"GET wrapper for social media scraping stream endpoint\nSupports Instagram, Facebook, LinkedIn, Twitter, TikTok, YouTube","operationId":"scrape_leads_stream_get_api_scrape_stream_get","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","title":"Query"}},{"name":"max_results","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Max Results"}},{"name":"email_required","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Email Required"}},{"name":"phone_required","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Phone Required"}},{"name":"exclude_list_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Exclude List Id"}},{"name":"email_providers","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Email Providers"}},{"name":"allow_custom_domains","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Allow Custom Domains"}},{"name":"allow_social","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Allow Social"}},{"name":"platforms","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Platforms"}},{"name":"verify_emails","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Verify Emails"}},{"name":"expand_keywords","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Expand Keywords"}},{"name":"max_queries","in":"query","required":false,"schema":{"type":"integer","default":2500,"title":"Max Queries"}},{"name":"keywords","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Keywords"}},{"name":"location_text","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Text"}},{"name":"search_language","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search Language"}},{"name":"gl","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gl"}},{"name":"job_title","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Title"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Scrape Leads Stream Post","description":"Stream social media leads as they are scraped\nSupports Instagram, Facebook, LinkedIn, Twitter, TikTok, YouTube\nRequires authentication","operationId":"scrape_leads_stream_post_api_scrape_stream_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/main__SearchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search/social/async":{"post":{"summary":"Scrape Leads Async","description":"Queue a social scrape job. Saves leads to scrape_job_leads — not CRM lists.","operationId":"scrape_leads_async_api_search_social_async_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/main__SearchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search/jobs/{job_id}/cancel":{"post":{"summary":"Cancel Scrape Job","description":"Cancel a queued/running scrape job.","operationId":"cancel_scrape_job_api_search_jobs__job_id__cancel_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search/jobs/{job_id}/status":{"get":{"summary":"Get Job Status","description":"Check the status of a background scrape job.","operationId":"get_job_status_api_search_jobs__job_id__status_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search/jobs/{job_id}/events":{"get":{"summary":"Get Job Events","description":"Return persisted live log events for a scrape job.","operationId":"get_job_events_api_search_jobs__job_id__events_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}},{"name":"after_id","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"After Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":250,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search/jobs/{job_id}/leads":{"get":{"summary":"Get Job Leads","description":"Fetch leads for a scrape job. Falls back to legacy CRM list for old jobs.","operationId":"get_job_leads_api_search_jobs__job_id__leads_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search/history":{"get":{"summary":"Get Scrape History","description":"Return the user's scrape jobs as search history.","operationId":"get_scrape_history_api_search_history_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/verify-emails":{"post":{"summary":"Verify Emails Manual","description":"Manual email verification via OVH SMTP proxy.\nReturns {status: 'valid'|'invalid'|'catchall'|'disposable'|'unknown'} per email.","operationId":"verify_emails_manual_api_verify_emails_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"string"},"title":"Emails"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/scrape/business":{"post":{"summary":"Scrape Business Leads Stream","description":"🚀 ULTRA-FAST Business Website Scraper\n- Generates 100+ queries from niche+location\n- Scrapes business websites (NOT social media)\n- Extracts emails using regex\n- Returns 500-1000+ leads in 1-2 minutes","operationId":"scrape_business_leads_stream_api_scrape_business_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/main__SearchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/scrape/business/stream":{"get":{"summary":"Scrape Business Leads Stream Get","operationId":"scrape_business_leads_stream_get_api_scrape_business_stream_get","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","title":"Query"}},{"name":"max_results","in":"query","required":false,"schema":{"type":"integer","default":2000,"title":"Max Results"}},{"name":"email_required","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Email Required"}},{"name":"phone_required","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Phone Required"}},{"name":"allow_custom_domains","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Allow Custom Domains"}},{"name":"allow_social","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Allow Social"}},{"name":"verify_emails","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Verify Emails"}},{"name":"expand_keywords","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Expand Keywords"}},{"name":"max_queries","in":"query","required":false,"schema":{"type":"integer","default":2500,"title":"Max Queries"}},{"name":"location_text","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Text"}},{"name":"search_language","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search Language"}},{"name":"gl","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gl"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_scrape_business_leads_stream_get_api_scrape_business_stream_get"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/scrape":{"post":{"summary":"Scrape Leads","description":"Scrape Instagram leads based on Google search query (legacy endpoint)","operationId":"scrape_leads_api_scrape_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/main__SearchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Lead"},"title":"Response Scrape Leads Api Scrape Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lists":{"post":{"summary":"Create List","description":"Create a new lead list","operationId":"create_list_api_lists_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateListRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Get Lists","description":"Get all lead lists for current user","operationId":"get_lists_api_lists_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lists/{list_id}":{"get":{"summary":"Get List","description":"Get a specific list with its leads","operationId":"get_list_api_lists__list_id__get","parameters":[{"name":"list_id","in":"path","required":true,"schema":{"type":"integer","title":"List Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete List","description":"Delete a list and all its leads","operationId":"delete_list_api_lists__list_id__delete","parameters":[{"name":"list_id","in":"path","required":true,"schema":{"type":"integer","title":"List Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lists/{list_id}/leads":{"post":{"summary":"Add Leads To List","description":"Add multiple leads to a list (requires authentication)","operationId":"add_leads_to_list_api_lists__list_id__leads_post","parameters":[{"name":"list_id","in":"path","required":true,"schema":{"type":"integer","title":"List Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddLeadsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Get List Leads","description":"Get all leads in a list","operationId":"get_list_leads_api_lists__list_id__leads_get","parameters":[{"name":"list_id","in":"path","required":true,"schema":{"type":"integer","title":"List Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lists/{list_id}/leads/import":{"post":{"summary":"Import Leads Csv","description":"Import leads from CSV text with a column mapping","operationId":"import_leads_csv_api_lists__list_id__leads_import_post","parameters":[{"name":"list_id","in":"path","required":true,"schema":{"type":"integer","title":"List Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CSVImportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lists/{list_id}/leads/export":{"get":{"summary":"Export Leads Csv","description":"Export leads to CSV; fields is comma-separated list. Includes attributes.* if requested.","operationId":"export_leads_csv_api_lists__list_id__leads_export_get","parameters":[{"name":"list_id","in":"path","required":true,"schema":{"type":"integer","title":"List Id"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fields"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lists/{list_id}/leads/{lead_id}":{"delete":{"summary":"Delete Lead","description":"Delete a specific lead from a list","operationId":"delete_lead_api_lists__list_id__leads__lead_id__delete","parameters":[{"name":"list_id","in":"path","required":true,"schema":{"type":"integer","title":"List Id"}},{"name":"lead_id","in":"path","required":true,"schema":{"type":"integer","title":"Lead Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stats":{"get":{"summary":"Get Stats","description":"Get overall statistics for user","operationId":"get_stats_api_stats_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/email/providers":{"get":{"summary":"Get Email Providers","description":"Get list of supported email providers","operationId":"get_email_providers_api_email_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/email/oauth/gmail/credentials":{"post":{"summary":"Save Gmail Credentials","description":"Save per-user Gmail OAuth client_id and client_secret","operationId":"save_gmail_credentials_api_email_oauth_gmail_credentials_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/email/oauth/gmail/url":{"get":{"summary":"Get Gmail Oauth Url Endpoint","description":"Get Gmail OAuth URL for user to authorize","operationId":"get_gmail_oauth_url_endpoint_api_email_oauth_gmail_url_get","parameters":[{"name":"state","in":"query","required":true,"schema":{"type":"string","title":"State"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/email/oauth/gmail/callback":{"post":{"summary":"Handle Gmail Oauth Callback","description":"Handle Gmail OAuth callback and store tokens","operationId":"handle_gmail_oauth_callback_api_email_oauth_gmail_callback_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GmailCallbackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/email/configs":{"post":{"summary":"Create Email Config","description":"Create a new email configuration","operationId":"create_email_config_api_email_configs_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailConfigRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Get Email Configs","description":"Get all email configurations for current user","operationId":"get_email_configs_api_email_configs_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/email/config":{"get":{"summary":"Get Email Configs","description":"Get all email configurations for current user","operationId":"get_email_configs_api_email_config_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/email/configs/active":{"get":{"summary":"Get Active Email Config","description":"Get active email configuration","operationId":"get_active_email_config_api_email_configs_active_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/email/configs/{config_id}/activate":{"post":{"summary":"Activate Email Config","description":"Set an email configuration as active","operationId":"activate_email_config_api_email_configs__config_id__activate_post","parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"integer","title":"Config Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/email/configs/{config_id}":{"delete":{"summary":"Delete Email Config","description":"Delete an email configuration","operationId":"delete_email_config_api_email_configs__config_id__delete","parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"integer","title":"Config Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/email/test/{config_id}":{"post":{"summary":"Test Email Config","description":"Test an email configuration","operationId":"test_email_config_api_email_test__config_id__post","parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"integer","title":"Config Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/email/send-preview-test":{"post":{"summary":"Send Preview Test Email","description":"Send a test preview email with sample variable data to the given address","operationId":"send_preview_test_email_api_email_send_preview_test_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendPreviewTestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/email/send":{"post":{"summary":"Send Emails Simple","description":"Send emails (Test Mode Only - for quick testing)\nFor production bulk sending, use /api/email/send/stream","operationId":"send_emails_simple_api_email_send_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/main__SendEmailRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/email/send/stream":{"post":{"summary":"Send Emails Stream","description":"Stream email sending progress (Production Mode)\nReturns Server-Sent Events with real-time updates","operationId":"send_emails_stream_api_email_send_stream_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/main__SendEmailRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/paywall/redeem":{"post":{"summary":"Redeem Code","description":"Redeem an activation code to activate user account","operationId":"redeem_code_api_paywall_redeem_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeemCodeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/admin/users":{"get":{"summary":"Admin List Users","description":"Users with list / lead / campaign counts for the admin panel. Cached 5 min, see admin_stats.py.","operationId":"admin_list_users_api_auth_admin_users_get","parameters":[{"name":"fresh","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Fresh"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/admin/stats":{"get":{"summary":"Admin Stats","description":"Aggregate stats for the admin dashboard. Cached 5 min, leads count is a planner estimate.","operationId":"admin_stats_api_auth_admin_stats_get","parameters":[{"name":"fresh","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Fresh"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/grant/lifetime":{"post":{"summary":"Admin Grant Unlimited","description":"Grant complimentary unlimited access to a user by ID (admin only).\n\nThis is a comp, not a purchase: it is not backed by a Stripe subscription,\nso plans_catalog.is_permanent_plan keeps subscription webhooks from ever\nrevoking it.","operationId":"admin_grant_unlimited_api_admin_grant_lifetime_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/grant/unlimited":{"post":{"summary":"Admin Grant Unlimited","description":"Grant complimentary unlimited access to a user by ID (admin only).\n\nThis is a comp, not a purchase: it is not backed by a Stripe subscription,\nso plans_catalog.is_permanent_plan keeps subscription webhooks from ever\nrevoking it.","operationId":"admin_grant_unlimited_api_admin_grant_unlimited_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/admin/analytics":{"get":{"summary":"Admin Analytics","description":"Admin dashboard analytics (registrations, growth, activity). Cached 5 min, see admin_stats.py.","operationId":"admin_analytics_api_auth_admin_analytics_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"fresh","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Fresh"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/admin/scraping-stats":{"get":{"summary":"Admin Scraping Stats","description":"Daily scraping activity for the admin dashboard. Cached 5 min; see admin_stats.py.","operationId":"admin_scraping_stats_api_auth_admin_scraping_stats_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"fresh","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Fresh"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/codes":{"post":{"summary":"Admin Create Code","description":"Create a complimentary access code and save to database.","operationId":"admin_create_code_api_admin_codes_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/follow-ups/sequences":{"post":{"summary":"Create Follow Up Sequence","description":"Create a new follow-up sequence","operationId":"create_follow_up_sequence_api_follow_ups_sequences_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"List Follow Up Sequences","description":"List all follow-up sequences for user","operationId":"list_follow_up_sequences_api_follow_ups_sequences_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/follow-ups/sequences/{sequence_id}":{"get":{"summary":"Get Follow Up Sequence","description":"Get follow-up sequence details with steps","operationId":"get_follow_up_sequence_api_follow_ups_sequences__sequence_id__get","parameters":[{"name":"sequence_id","in":"path","required":true,"schema":{"type":"integer","title":"Sequence Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"summary":"Update Follow Up Sequence","description":"Update follow-up sequence","operationId":"update_follow_up_sequence_api_follow_ups_sequences__sequence_id__put","parameters":[{"name":"sequence_id","in":"path","required":true,"schema":{"type":"integer","title":"Sequence Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Follow Up Sequence","description":"Delete follow-up sequence","operationId":"delete_follow_up_sequence_api_follow_ups_sequences__sequence_id__delete","parameters":[{"name":"sequence_id","in":"path","required":true,"schema":{"type":"integer","title":"Sequence Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/follow-ups/sequences/{sequence_id}/steps":{"post":{"summary":"Add Follow Up Step","description":"Add a step to a follow-up sequence","operationId":"add_follow_up_step_api_follow_ups_sequences__sequence_id__steps_post","parameters":[{"name":"sequence_id","in":"path","required":true,"schema":{"type":"integer","title":"Sequence Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/follow-ups/steps/{step_id}":{"put":{"summary":"Update Follow Up Step","description":"Update a follow-up step","operationId":"update_follow_up_step_api_follow_ups_steps__step_id__put","parameters":[{"name":"step_id","in":"path","required":true,"schema":{"type":"integer","title":"Step Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Follow Up Step","description":"Delete a follow-up step","operationId":"delete_follow_up_step_api_follow_ups_steps__step_id__delete","parameters":[{"name":"step_id","in":"path","required":true,"schema":{"type":"integer","title":"Step Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/follow-ups/sequences/{sequence_id}/schedule":{"post":{"summary":"Schedule Follow Up Sequence","description":"Schedule follow-up sequence for a campaign","operationId":"schedule_follow_up_sequence_api_follow_ups_sequences__sequence_id__schedule_post","parameters":[{"name":"sequence_id","in":"path","required":true,"schema":{"type":"integer","title":"Sequence Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/follow-ups/scheduled":{"get":{"summary":"Get Scheduled Follow Ups","description":"Get upcoming scheduled follow-up sends","operationId":"get_scheduled_follow_ups_api_follow_ups_scheduled_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/events":{"get":{"summary":"List Webhook Events","description":"List all available webhook events","operationId":"list_webhook_events_api_webhooks_events_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/webhooks/resend":{"post":{"summary":"Resend Webhook Handler","description":"Handle incoming Resend webhook events\n- email.sent, email.delivered\n- email.opened, email.clicked\n- email.bounced\n- email.received (for forwarding)\n\nNo authentication required - verified via webhook signature","operationId":"resend_webhook_handler_api_webhooks_resend_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/webhooks/resend/analytics":{"get":{"summary":"Get Resend Analytics","description":"Get analytics from Resend webhook events (admin only)","operationId":"get_resend_analytics_api_webhooks_resend_analytics_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/migrate-email-templates":{"post":{"summary":"Migrate Email Templates Endpoint","description":"Migrate email templates to new design (admin only)\nRun this once after deploying new template design.","operationId":"migrate_email_templates_endpoint_api_admin_migrate_email_templates_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks":{"post":{"summary":"Create Webhook","description":"Create a new webhook (Pro plan only)","operationId":"create_webhook_api_webhooks_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"List Webhooks","description":"List all webhooks for user (Pro plan only)","operationId":"list_webhooks_api_webhooks_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/{webhook_id}":{"get":{"summary":"Get Webhook","description":"Get webhook details (Pro plan only)","operationId":"get_webhook_api_webhooks__webhook_id__get","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"integer","title":"Webhook Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"summary":"Update Webhook","description":"Update webhook (Pro plan only)","operationId":"update_webhook_api_webhooks__webhook_id__put","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"integer","title":"Webhook Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Webhook","description":"Delete webhook (Pro plan only)","operationId":"delete_webhook_api_webhooks__webhook_id__delete","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"integer","title":"Webhook Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/{webhook_id}/deliveries":{"get":{"summary":"Get Webhook Deliveries","description":"Get webhook delivery logs (Pro plan only)","operationId":"get_webhook_deliveries_api_webhooks__webhook_id__deliveries_get","parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"integer","title":"Webhook Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tracking/pixel/{token}":{"get":{"summary":"Track Email Open","description":"Track email open via 1x1 transparent pixel\nNo authentication required - tracking tokens are signed","operationId":"track_email_open_api_tracking_pixel__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tracking/click/{token}":{"get":{"summary":"Track Email Click","description":"Track email click and redirect to original URL\nNo authentication required - tracking tokens are signed","operationId":"track_email_click_api_tracking_click__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"url","in":"query","required":true,"schema":{"type":"string","title":"Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"head":{"summary":"Track Email Click","description":"Track email click and redirect to original URL\nNo authentication required - tracking tokens are signed","operationId":"track_email_click_api_tracking_click__token__head","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"url","in":"query","required":true,"schema":{"type":"string","title":"Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/campaigns/{campaign_id}/analytics/export":{"get":{"summary":"Export Campaign Analytics","description":"Export campaign analytics as CSV or Excel","operationId":"export_campaign_analytics_api_campaigns__campaign_id__analytics_export_get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"csv","title":"Format"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tracking/test/send":{"post":{"summary":"Send Tracking Test Email","description":"Send a test email with tracking enabled for testing purposes","operationId":"send_tracking_test_email_api_tracking_test_send_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackingTestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/tracking/test/status/{token}":{"get":{"summary":"Get Tracking Test Status","description":"Get tracking status for a test email","operationId":"get_tracking_test_status_api_tracking_test_status__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/email/config":{"get":{"summary":"Get Admin Email Config","description":"Get admin email configuration (Resend API)","operationId":"get_admin_email_config_api_admin_email_config_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Save Admin Email Config","description":"Save admin email configuration (Resend API)","operationId":"save_admin_email_config_api_admin_email_config_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminEmailConfigRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/flows":{"get":{"summary":"Get All Flows","description":"Get all email flows","operationId":"get_all_flows_api_admin_flows_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/flows/{flow_id}":{"get":{"summary":"Get Flow Details","description":"Get detailed flow with all steps","operationId":"get_flow_details_api_admin_flows__flow_id__get","parameters":[{"name":"flow_id","in":"path","required":true,"schema":{"type":"integer","title":"Flow Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"summary":"Update Flow","description":"Update flow metadata","operationId":"update_flow_api_admin_flows__flow_id__put","parameters":[{"name":"flow_id","in":"path","required":true,"schema":{"type":"integer","title":"Flow Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlowUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/flows/steps/{step_id}":{"put":{"summary":"Update Step","description":"Update flow step","operationId":"update_step_api_admin_flows_steps__step_id__put","parameters":[{"name":"step_id","in":"path","required":true,"schema":{"type":"integer","title":"Step Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StepUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/flows/test":{"post":{"summary":"Send Test Flow Email","description":"Send a test email from a specific flow step","operationId":"send_test_flow_email_api_admin_flows_test_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestEmailRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/flows/initialize":{"post":{"summary":"Initialize Flows","description":"Initialize default email flows (welcome, thank you, abandoned, educational)","operationId":"initialize_flows_api_admin_flows_initialize_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/flows/reset":{"post":{"summary":"Reset Flows","description":"Delete all flows and reinitialize with new templates","operationId":"reset_flows_api_admin_flows_reset_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flows/schedule/welcome":{"post":{"summary":"Schedule Welcome Flow","description":"Schedule the Welcome Series for the authenticated user.\nUseful to call after successful signup/auth callback.","operationId":"schedule_welcome_flow_api_flows_schedule_welcome_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flows/schedule/abandoned":{"post":{"summary":"Schedule Abandoned Flow","description":"Schedule the Abandoned Payment Recovery flow for the authenticated user.\nTrigger this right after signup; safeguards prevent sending if user purchases.","operationId":"schedule_abandoned_flow_api_flows_schedule_abandoned_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/flows/schedule/educational":{"post":{"summary":"Schedule Educational Flow","description":"Schedule the Educational Series for the authenticated user.\nTriggered after signup alongside welcome/abandoned flows.","operationId":"schedule_educational_flow_api_flows_schedule_educational_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/unsubscribe":{"post":{"summary":"Unsubscribe Email","description":"Unsubscribe a user from flow emails.\nAccepts email in request body — no auth required (unsubscribe links must work without login).","operationId":"unsubscribe_email_api_unsubscribe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/lead-campaigns":{"get":{"summary":"Admin Lead Campaigns","description":"List all lead scraping campaigns (admin only)","operationId":"admin_lead_campaigns_api_admin_lead_campaigns_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/flows/{flow_name}/sends":{"get":{"summary":"List Flow Sends","description":"List sends for a given flow (admin view)","operationId":"list_flow_sends_api_admin_flows__flow_name__sends_get","parameters":[{"name":"flow_name","in":"path","required":true,"schema":{"type":"string","title":"Flow Name"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/flows/{flow_name}/analytics":{"get":{"summary":"Flow Analytics","description":"Aggregated analytics for a flow using tracking events","operationId":"flow_analytics_api_admin_flows__flow_name__analytics_get","parameters":[{"name":"flow_name","in":"path","required":true,"schema":{"type":"string","title":"Flow Name"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rewards/status":{"get":{"summary":"Get Reward Status","description":"Get user's reward submission status","operationId":"get_reward_status_api_rewards_status_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/rewards":{"get":{"summary":"Get All Reward Submissions","description":"Get all reward submissions (admin only)","operationId":"get_all_reward_submissions_api_admin_rewards_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/rewards/review":{"post":{"summary":"Review Reward Submission","description":"Approve or reject a reward submission (admin only)","operationId":"review_reward_submission_api_admin_rewards_review_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RewardReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/rewards/{submission_id}/approve":{"post":{"summary":"Approve Reward Submission","description":"Approve a reward submission (admin only)","operationId":"approve_reward_submission_api_admin_rewards__submission_id__approve_post","parameters":[{"name":"submission_id","in":"path","required":true,"schema":{"type":"integer","title":"Submission Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/rewards/{submission_id}/reject":{"post":{"summary":"Reject Reward Submission","description":"Reject a reward submission (admin only)","operationId":"reject_reward_submission_api_admin_rewards__submission_id__reject_post","parameters":[{"name":"submission_id","in":"path","required":true,"schema":{"type":"integer","title":"Submission Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/payments/record":{"post":{"summary":"Record Payment","description":"Record a successful payment; called from frontend after Stripe session verification.","operationId":"record_payment_api_payments_record_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/checkout/pre-metadata":{"post":{"summary":"Save Checkout Pre Metadata","description":"Save metadata BEFORE Stripe redirect for better Meta CAPI match quality.\nCalled from frontend when user clicks checkout button.","operationId":"save_checkout_pre_metadata_api_checkout_pre_metadata_post","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/meta/track-registration":{"post":{"summary":"Track Registration Capi","description":"Send server-side CompleteRegistration event to Meta Conversions API.\nCalled from auth/callback for fresh registrations (both email and OAuth).\nUses fbc/fbp stored at registration time so ad blocker can't block it.","operationId":"track_registration_capi_api_meta_track_registration_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/meta/track-initiate-checkout":{"post":{"summary":"Track Initiate Checkout Capi","description":"Send server-side InitiateCheckout event to Meta Conversions API.\nCalled from /paywall and /upgrade in parallel with the browser pixel.\nUses the same event_id as the browser fbq call so Meta de-duplicates.\nMirrors the track-registration pattern to recover events ad blockers strip.","operationId":"track_initiate_checkout_capi_api_meta_track_initiate_checkout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/payments/record/by-session":{"post":{"summary":"Record Payment By Session","description":"Record a payment by verifying Stripe session_id (no auth required).\nAlso stores session metadata (fbc/fbp/ip/ua) for Conversions API enrichment.","operationId":"record_payment_by_session_api_payments_record_by_session_post","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/metrics/track":{"post":{"summary":"Track Metric","description":"Track simple counters like paywall views. Public; rate-limit via proxy if needed.","operationId":"track_metric_api_metrics_track_post","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/sales":{"get":{"summary":"Admin Sales","description":"Sales list and KPIs. Cached 5 min, one connection, no DDL; see admin_stats.py.","operationId":"admin_sales_api_admin_sales_get","parameters":[{"name":"fresh","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Fresh"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/email-stats":{"get":{"summary":"Admin Email Stats","description":"Aggregate email sending stats for admin dashboard (global).","operationId":"admin_email_stats_api_admin_email_stats_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/emails":{"get":{"summary":"Admin Emails","description":"List recent campaign emails globally (admin only).","operationId":"admin_emails_api_admin_emails_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"sent","title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/user-campaigns":{"get":{"summary":"Admin Campaigns","description":"List campaigns globally (admin only).","operationId":"admin_campaigns_api_admin_user_campaigns_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lead-campaigns":{"post":{"summary":"Create Lead Campaign","description":"Create a new lead scraping campaign\nThis generates keywords, searches multiple queries, and scrapes thousands of leads","operationId":"create_lead_campaign_api_lead_campaigns_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadCampaignCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Create Lead Campaign Api Lead Campaigns Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"List Lead Campaigns","description":"List all lead campaigns for user","operationId":"list_lead_campaigns_api_lead_campaigns_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lead-campaigns/{campaign_id}":{"get":{"summary":"Get Lead Campaign","description":"Get lead campaign details with progress","operationId":"get_lead_campaign_api_lead_campaigns__campaign_id__get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Lead Campaign","description":"Delete a lead campaign (and all its data)","operationId":"delete_lead_campaign_api_lead_campaigns__campaign_id__delete","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lead-campaigns/{campaign_id}/leads":{"get":{"summary":"Get Campaign Leads","description":"Get leads for a campaign","operationId":"get_campaign_leads_api_lead_campaigns__campaign_id__leads_get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lead-campaigns/{campaign_id}/start":{"post":{"summary":"Start Lead Campaign","description":"Start executing a lead campaign\nCampaign will be processed by background worker","operationId":"start_lead_campaign_api_lead_campaigns__campaign_id__start_post","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lead-campaigns/{campaign_id}/stop":{"post":{"summary":"Stop Lead Campaign","description":"Stop a running lead campaign","operationId":"stop_lead_campaign_api_lead_campaigns__campaign_id__stop_post","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lead-campaigns/{campaign_id}/export":{"get":{"summary":"Export Campaign Leads","description":"Export campaign leads as CSV or JSON","operationId":"export_campaign_leads_api_lead_campaigns__campaign_id__export_get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"integer","title":"Campaign Id"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"csv","title":"Format"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crm/pipeline/stages":{"get":{"summary":"Get Pipeline Stages","description":"Get all pipeline stages","operationId":"get_pipeline_stages_api_crm_pipeline_stages_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crm/pipeline/stats":{"get":{"summary":"Get Pipeline Stats","description":"Get pipeline statistics","operationId":"get_pipeline_stats_api_crm_pipeline_stats_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crm/leads":{"post":{"summary":"Create Crm Lead","description":"Create a new CRM lead","operationId":"create_crm_lead_api_crm_leads_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CRMLeadCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Get Crm Leads","description":"Get CRM leads with optional filters","operationId":"get_crm_leads_api_crm_leads_get","parameters":[{"name":"stage","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"priority","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Priority"}},{"name":"tags","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tags"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":1000,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crm/leads/{lead_id}":{"get":{"summary":"Get Crm Lead","description":"Get a single CRM lead","operationId":"get_crm_lead_api_crm_leads__lead_id__get","parameters":[{"name":"lead_id","in":"path","required":true,"schema":{"type":"string","title":"Lead Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"summary":"Update Crm Lead","description":"Update a CRM lead","operationId":"update_crm_lead_api_crm_leads__lead_id__put","parameters":[{"name":"lead_id","in":"path","required":true,"schema":{"type":"string","title":"Lead Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CRMLeadUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Crm Lead","description":"Delete a CRM lead","operationId":"delete_crm_lead_api_crm_leads__lead_id__delete","parameters":[{"name":"lead_id","in":"path","required":true,"schema":{"type":"string","title":"Lead Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crm/leads/{lead_id}/stage":{"patch":{"summary":"Update Crm Lead Stage","description":"Update lead stage (for drag-and-drop)","operationId":"update_crm_lead_stage_api_crm_leads__lead_id__stage_patch","parameters":[{"name":"lead_id","in":"path","required":true,"schema":{"type":"string","title":"Lead Id"}},{"name":"stage","in":"query","required":true,"schema":{"type":"string","title":"Stage"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crm/leads/import/{list_id}":{"post":{"summary":"Import Crm Leads From List","description":"Import leads from lead list to CRM. Sync route: runs in the threadpool, never on the event loop.","operationId":"import_crm_leads_from_list_api_crm_leads_import__list_id__post","parameters":[{"name":"list_id","in":"path","required":true,"schema":{"type":"integer","title":"List Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crm/leads/{lead_id}/activities":{"post":{"summary":"Create Crm Activity","description":"Create a new activity/note for a lead","operationId":"create_crm_activity_api_crm_leads__lead_id__activities_post","parameters":[{"name":"lead_id","in":"path","required":true,"schema":{"type":"string","title":"Lead Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CRMActivityCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Get Crm Activities","description":"Get all activities for a lead","operationId":"get_crm_activities_api_crm_leads__lead_id__activities_get","parameters":[{"name":"lead_id","in":"path","required":true,"schema":{"type":"string","title":"Lead Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crm/activities/{activity_id}":{"put":{"summary":"Update Crm Activity","description":"Update an activity","operationId":"update_crm_activity_api_crm_activities__activity_id__put","parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","title":"Activity Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CRMActivityUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Crm Activity","description":"Delete an activity","operationId":"delete_crm_activity_api_crm_activities__activity_id__delete","parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","title":"Activity Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/weekly-summary/send":{"post":{"summary":"Trigger Weekly Summary","description":"Admin: manually trigger the weekly email summary job","operationId":"trigger_weekly_summary_api_admin_weekly_summary_send_post","parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AccessRequest":{"properties":{"group":{"type":"string","title":"Group"},"email":{"type":"string","title":"Email"}},"type":"object","required":["group","email"],"title":"AccessRequest"},"ActionBody":{"properties":{"email":{"type":"string","title":"Email"},"action":{"type":"string","title":"Action"}},"type":"object","required":["email","action"],"title":"ActionBody"},"ActivateSubscriptionRequest":{"properties":{"session_id":{"type":"string","title":"Session Id"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"campaigns":{"anyOf":[{"items":{"type":"object"},"type":"array"},{"type":"null"}],"title":"Campaigns"},"leads":{"anyOf":[{"items":{"type":"object"},"type":"array"},{"type":"null"}],"title":"Leads"},"draft_email":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Draft Email"}},"type":"object","required":["session_id"],"title":"ActivateSubscriptionRequest"},"AddKeyRequest":{"properties":{"key":{"type":"string","title":"Key"},"provider":{"type":"string","title":"Provider","default":"serper"},"is_main":{"type":"boolean","title":"Is Main","default":false},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["key"],"title":"AddKeyRequest"},"AddLeadsRequest":{"properties":{"list_id":{"type":"integer","title":"List Id"},"leads":{"items":{"type":"object"},"type":"array","title":"Leads"}},"type":"object","required":["list_id","leads"],"title":"AddLeadsRequest"},"AddSiteRequest":{"properties":{"token":{"type":"string","title":"Token"},"domain":{"type":"string","title":"Domain"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"}},"type":"object","required":["token","domain"],"title":"AddSiteRequest"},"AdminEmailConfigRequest":{"properties":{"api_key":{"type":"string","title":"Api Key"},"from_email":{"type":"string","title":"From Email"},"from_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Name","default":"Lead Gen Pro"}},"type":"object","required":["api_key","from_email"],"title":"AdminEmailConfigRequest"},"AdminUpdateRequest":{"properties":{"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"admin_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Message"}},"type":"object","title":"AdminUpdateRequest"},"AiDraftIn":{"properties":{"to_email":{"type":"string","title":"To Email"},"campaign_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Campaign Id"}},"type":"object","required":["to_email"],"title":"AiDraftIn"},"AnalyzeRequest":{"properties":{"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"}},"type":"object","title":"AnalyzeRequest"},"ApiCheckoutRequest":{"properties":{"price_id":{"type":"string","title":"Price Id"},"ref_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref Code"}},"type":"object","required":["price_id"],"title":"ApiCheckoutRequest"},"ApproveIn":{"properties":{"client_id":{"type":"string","title":"Client Id"},"redirect_uri":{"type":"string","title":"Redirect Uri"},"code_challenge":{"type":"string","title":"Code Challenge"},"scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"resource":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource"}},"type":"object","required":["client_id","redirect_uri","code_challenge"],"title":"ApproveIn"},"AutoOnboardingRequest":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"AutoOnboardingRequest"},"AutopilotTickRequest":{"properties":{"worker_token":{"type":"string","title":"Worker Token"},"account_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Id"}},"type":"object","required":["worker_token"],"title":"AutopilotTickRequest"},"B2BLeadScrapeRequest":{"properties":{"totalResults":{"type":"integer","title":"Totalresults","default":1000},"firstName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firstname"},"lastName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lastname"},"personTitle":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Persontitle"},"seniority":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Seniority"},"functional":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Functional"},"companyEmployeeSize":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Companyemployeesize"},"personCountry":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Personcountry"},"personState":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Personstate"},"personCity":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Personcity"},"industry":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Industry"},"industryKeywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Industrykeywords"},"revenue":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Revenue"},"fundingType":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Fundingtype"},"fundingFromDate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fundingfromdate"},"fundingToDate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fundingtodate"},"businessModel":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Businessmodel"},"companyCountry":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Companycountry"},"companyState":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Companystate"},"companyDomain":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Companydomain"},"contactEmailStatus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contactemailstatus"},"includeEmails":{"type":"boolean","title":"Includeemails","default":true},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},"type":"object","title":"B2BLeadScrapeRequest"},"B2BProviderConfig":{"properties":{"api_key":{"type":"string","title":"Api Key"}},"type":"object","required":["api_key"],"title":"B2BProviderConfig"},"BlacklistCheckRequest":{"properties":{"target":{"type":"string","title":"Target"},"website":{"type":"string","title":"Website","default":""}},"type":"object","required":["target"],"title":"BlacklistCheckRequest"},"Body_scrape_business_leads_stream_get_api_scrape_business_stream_get":{"properties":{"platforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Platforms"},"keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Keywords"}},"type":"object","title":"Body_scrape_business_leads_stream_get_api_scrape_business_stream_get"},"Body_verify_upload_api_people_verify_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_verify_upload_api_people_verify_upload_post"},"BookRequest":{"properties":{"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","default":""},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry","default":""},"what_you_sell":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"What You Sell","default":""},"deal_size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deal Size","default":""},"monthly_revenue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Monthly Revenue","default":""},"sales_capacity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sales Capacity","default":""},"meetings_wanted":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meetings Wanted","default":""},"pay_per_meeting":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pay Per Meeting","default":""},"pipeline_budget":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pipeline Budget","default":""},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website","default":""},"ready_30_days":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ready 30 Days","default":""},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","default":""},"email":{"type":"string","title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone","default":""},"slot_start_utc":{"type":"string","title":"Slot Start Utc","default":""},"lead_tz":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lead Tz","default":""},"company_hp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Hp","default":""},"fbc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fbc","default":""},"fbp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fbp","default":""},"twclid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Twclid","default":""},"event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Id","default":""},"debug":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Debug","default":false}},"type":"object","required":["email"],"title":"BookRequest"},"BriefRequest":{"properties":{"sell":{"type":"string","title":"Sell"},"customer":{"type":"string","title":"Customer"},"markets":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Markets"}},"type":"object","required":["sell","customer"],"title":"BriefRequest"},"BudgetRequest":{"properties":{"token":{"type":"string","title":"Token"},"daily_cents":{"type":"integer","title":"Daily Cents"}},"type":"object","required":["token","daily_cents"],"title":"BudgetRequest"},"BudgetSuggestionRequest":{"properties":{"token":{"type":"string","title":"Token"},"suggestion_id":{"type":"integer","title":"Suggestion Id"},"accept":{"type":"boolean","title":"Accept"}},"type":"object","required":["token","suggestion_id","accept"],"title":"BudgetSuggestionRequest"},"BuildRequest":{"properties":{"run_id":{"type":"string","title":"Run Id"},"chosen":{"items":{"$ref":"#/components/schemas/ChosenSegment"},"type":"array","title":"Chosen"}},"type":"object","required":["run_id","chosen"],"title":"BuildRequest"},"BulkAnalyzeRequest":{"properties":{"leads":{"items":{"type":"object"},"type":"array","title":"Leads"}},"type":"object","required":["leads"],"title":"BulkAnalyzeRequest"},"BulkRequest":{"properties":{"icp":{"type":"object","title":"Icp"},"count":{"type":"integer","title":"Count","default":100},"verify":{"type":"boolean","title":"Verify","default":false}},"type":"object","title":"BulkRequest"},"CRMActivityCreate":{"properties":{"type":{"type":"string","title":"Type"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"is_completed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Completed","default":false},"due_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Due Date"},"metadata":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Metadata","default":{}}},"type":"object","required":["type"],"title":"CRMActivityCreate"},"CRMActivityUpdate":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"is_completed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Completed"},"due_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Due Date"}},"type":"object","title":"CRMActivityUpdate"},"CRMLeadCreate":{"properties":{"full_name":{"type":"string","title":"Full Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Position"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url"},"twitter_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Twitter Url"},"facebook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Facebook Url"},"instagram_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instagram Url"},"stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage","default":"new_lead"},"lead_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lead Score","default":0},"priority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Priority","default":"medium"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"},"employee_count":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Employee Count"},"annual_revenue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Annual Revenue"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"deal_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Deal Value"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency","default":"USD"},"expected_close_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Close Date"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","default":"manual"},"source_campaign_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source Campaign Id"},"source_list_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source List Id"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","default":[]},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"next_follow_up_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Follow Up At"}},"type":"object","required":["full_name"],"title":"CRMLeadCreate"},"CRMLeadUpdate":{"properties":{"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Position"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url"},"twitter_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Twitter Url"},"facebook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Facebook Url"},"instagram_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instagram Url"},"stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage"},"lead_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lead Score"},"priority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Priority"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"},"employee_count":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Employee Count"},"annual_revenue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Annual Revenue"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"deal_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Deal Value"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"expected_close_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Close Date"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"next_follow_up_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Follow Up At"},"lost_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lost Reason"}},"type":"object","title":"CRMLeadUpdate"},"CSVImportRequest":{"properties":{"csv_text":{"type":"string","title":"Csv Text"},"delimiter":{"type":"string","title":"Delimiter","default":","},"mapping":{"type":"object","title":"Mapping"}},"type":"object","required":["csv_text","mapping"],"title":"CSVImportRequest"},"CampaignAgentRequest":{"properties":{"token":{"type":"string","title":"Token"},"message":{"type":"string","title":"Message"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"}},"type":"object","required":["token","message"],"title":"CampaignAgentRequest"},"CampaignAutoCreateRequest":{"properties":{"token":{"type":"string","title":"Token"},"name":{"type":"string","title":"Name"},"wanted":{"type":"integer","title":"Wanted","default":300},"icp":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Icp"}},"type":"object","required":["token","name"],"title":"CampaignAutoCreateRequest"},"CampaignBriefRequest":{"properties":{"token":{"type":"string","title":"Token"},"campaign_id":{"type":"integer","title":"Campaign Id"},"brief":{"type":"object","title":"Brief","default":{}}},"type":"object","required":["token","campaign_id"],"title":"CampaignBriefRequest"},"CampaignBudgetRequest":{"properties":{"token":{"type":"string","title":"Token"},"campaign_id":{"type":"integer","title":"Campaign Id"},"daily_budget_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Daily Budget Cents"},"daily_cap":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Daily Cap"}},"type":"object","required":["token","campaign_id"],"title":"CampaignBudgetRequest"},"CampaignBuildRequest":{"properties":{"token":{"type":"string","title":"Token"},"campaign_id":{"type":"integer","title":"Campaign Id"},"wanted":{"type":"integer","title":"Wanted","default":1000}},"type":"object","required":["token","campaign_id"],"title":"CampaignBuildRequest"},"CampaignHoldRequest":{"properties":{"token":{"type":"string","title":"Token"},"campaign_id":{"type":"integer","title":"Campaign Id"}},"type":"object","required":["token","campaign_id"],"title":"CampaignHoldRequest"},"CampaignICPRequest":{"properties":{"token":{"type":"string","title":"Token"},"campaign_id":{"type":"integer","title":"Campaign Id"},"icp":{"type":"object","title":"Icp"}},"type":"object","required":["token","campaign_id","icp"],"title":"CampaignICPRequest"},"CampaignImportRequest":{"properties":{"token":{"type":"string","title":"Token"},"name":{"type":"string","title":"Name"},"rows":{"items":{"$ref":"#/components/schemas/ImportLeadRow"},"type":"array","title":"Rows","default":[]}},"type":"object","required":["token","name"],"title":"CampaignImportRequest"},"CampaignRequest":{"properties":{"domain":{"type":"string","title":"Domain"},"company":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Company"},"competitors":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Competitors"}},"type":"object","required":["domain"],"title":"CampaignRequest"},"CampaignStateRequest":{"properties":{"token":{"type":"string","title":"Token"},"campaign_id":{"type":"integer","title":"Campaign Id"},"status":{"type":"string","title":"Status"}},"type":"object","required":["token","campaign_id","status"],"title":"CampaignStateRequest"},"CancelRequest":{"properties":{"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"CancelRequest"},"CaptureLeadRequest":{"properties":{"email":{"type":"string","title":"Email"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"quiz_answers":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Quiz Answers","default":{}},"variant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Variant"},"ab_variant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ab Variant"},"plan_selected":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Selected"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"fbc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fbc"},"fbp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fbp"},"twclid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Twclid"},"event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Id"}},"type":"object","required":["email"],"title":"CaptureLeadRequest"},"CardSaveRequest":{"properties":{"token":{"type":"string","title":"Token"},"setup_intent_id":{"type":"string","title":"Setup Intent Id"}},"type":"object","required":["token","setup_intent_id"],"title":"CardSaveRequest"},"CardSetupRequest":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"CardSetupRequest"},"ChangePasswordRequest":{"properties":{"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["new_password"],"title":"ChangePasswordRequest"},"CheckoutRequest":{"properties":{"plan":{"type":"string","title":"Plan"},"billing":{"type":"string","title":"Billing","default":"monthly"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"ref_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref Code"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"success_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Success Path"},"cancel_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cancel Path"},"attribution":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Attribution"},"tos_accepted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tos Accepted At"},"blocks":{"type":"integer","title":"Blocks","default":1},"funnel_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Funnel Domain"}},"type":"object","required":["plan"],"title":"CheckoutRequest"},"CheckoutSessionRequest":{"properties":{"priceId":{"type":"string","title":"Priceid"},"mode":{"type":"string","title":"Mode","default":"subscription"},"successUrl":{"type":"string","title":"Successurl"},"cancelUrl":{"type":"string","title":"Cancelurl"}},"type":"object","required":["priceId","successUrl","cancelUrl"],"title":"CheckoutSessionRequest"},"ChosenSegment":{"properties":{"id":{"type":"string","title":"Id"},"count":{"type":"integer","title":"Count","default":300}},"type":"object","required":["id"],"title":"ChosenSegment"},"ClickRequest":{"properties":{"ref_code":{"type":"string","title":"Ref Code"},"landing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Landing"}},"type":"object","required":["ref_code"],"title":"ClickRequest"},"CompetitorRequest":{"properties":{"domain":{"type":"string","title":"Domain"},"company":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Company"}},"type":"object","required":["domain"],"title":"CompetitorRequest"},"CompleteRequest":{"properties":{"skipped":{"type":"boolean","title":"Skipped","default":false},"run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run Id"}},"type":"object","title":"CompleteRequest"},"ConfirmLifetimeRequest":{"properties":{"payment_intent_id":{"type":"string","title":"Payment Intent Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name","default":""},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"},"quiz_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quiz Session Id"},"fbc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fbc"},"fbp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fbp"},"twclid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Twclid"}},"type":"object","required":["payment_intent_id"],"title":"ConfirmLifetimeRequest"},"ConfirmRequest":{"properties":{"session_id":{"type":"string","title":"Session Id"}},"type":"object","required":["session_id"],"title":"ConfirmRequest"},"ConfirmSessionRequest":{"properties":{"session_id":{"type":"string","title":"Session Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"}},"type":"object","required":["session_id"],"title":"ConfirmSessionRequest"},"ConfirmSubscriptionRequest":{"properties":{"subscription_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subscription Id"},"setup_intent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Setup Intent Id"},"payment_intent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Intent Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"plan":{"type":"string","title":"Plan","default":"pro"},"billing":{"type":"string","title":"Billing","default":"monthly"},"discount":{"type":"boolean","title":"Discount","default":false},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name","default":""},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"},"quiz_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quiz Session Id"},"ab_variant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ab Variant","default":"A"},"fbc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fbc"},"fbp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fbp"},"twclid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Twclid"}},"type":"object","title":"ConfirmSubscriptionRequest"},"ConfirmVcdbRequest":{"properties":{"payment_intent_id":{"type":"string","title":"Payment Intent Id"},"client_secret":{"type":"string","title":"Client Secret"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"twclid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Twclid"}},"type":"object","required":["payment_intent_id","client_secret"],"title":"ConfirmVcdbRequest"},"ContactRequest":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"subject":{"type":"string","title":"Subject"},"message":{"type":"string","title":"Message"},"website":{"type":"string","title":"Website","default":""}},"type":"object","required":["name","email","subject","message"],"title":"ContactRequest"},"ContentCheckRequest":{"properties":{"subject":{"type":"string","title":"Subject"},"body_html":{"type":"string","title":"Body Html"},"from_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Email"}},"type":"object","required":["subject","body_html"],"title":"ContentCheckRequest"},"CreateCampaignRequest":{"properties":{"subject":{"type":"string","title":"Subject"},"body":{"type":"string","title":"Body"},"segment_criteria":{"$ref":"#/components/schemas/SegmentCriteria"}},"type":"object","required":["subject","body","segment_criteria"],"title":"CreateCampaignRequest"},"CreateCodeRequest":{"properties":{"credits":{"type":"integer","title":"Credits","default":1000},"max_uses":{"type":"integer","title":"Max Uses","default":1},"expires_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires Days"}},"type":"object","title":"CreateCodeRequest"},"CreateFeatureRequest":{"properties":{"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["title"],"title":"CreateFeatureRequest"},"CreateLifetimeIntentRequest":{"properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan","default":"pro"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"bump":{"type":"boolean","title":"Bump","default":false},"bump_templates":{"type":"boolean","title":"Bump Templates","default":false},"bump_kit":{"type":"boolean","title":"Bump Kit","default":false},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"quiz_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quiz Session Id"},"fbc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fbc"},"fbp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fbp"},"twclid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Twclid"},"ic_event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ic Event Id"},"attribution":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Attribution"},"ref_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref Code"}},"type":"object","title":"CreateLifetimeIntentRequest"},"CreateListRequest":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description","default":""}},"type":"object","required":["name"],"title":"CreateListRequest"},"CreateSetupIntentRequest":{"properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"plan":{"type":"string","title":"Plan","default":"pro"},"billing":{"type":"string","title":"Billing","default":"monthly"},"discount":{"type":"boolean","title":"Discount","default":false},"trial":{"type":"boolean","title":"Trial","default":false},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"quiz_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quiz Session Id"},"fbc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fbc"},"fbp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fbp"},"twclid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Twclid"},"ic_event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ic Event Id"},"ab_variant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ab Variant","default":"A"},"attribution":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Attribution"}},"type":"object","title":"CreateSetupIntentRequest"},"CreateTicketRequest":{"properties":{"subject":{"type":"string","title":"Subject"},"description":{"type":"string","title":"Description"},"category":{"type":"string","title":"Category","default":"general"},"images":{"anyOf":[{"items":{"$ref":"#/components/schemas/TicketImage"},"type":"array"},{"type":"null"}],"title":"Images"}},"type":"object","required":["subject","description"],"title":"CreateTicketRequest"},"CreateVcdbIntentRequest":{"properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"ic_event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ic Event Id"},"attribution":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Attribution"}},"type":"object","title":"CreateVcdbIntentRequest"},"DeliverRequest":{"properties":{"filters":{"type":"object","title":"Filters"},"limit":{"type":"integer","title":"Limit","default":1000}},"type":"object","title":"DeliverRequest"},"DeliverabilityRequest":{"properties":{"domain":{"type":"string","title":"Domain"},"website":{"type":"string","title":"Website","default":""}},"type":"object","required":["domain"],"title":"DeliverabilityRequest"},"DocsBuildRequest":{"properties":{"token":{"type":"string","title":"Token"},"force":{"type":"boolean","title":"Force","default":false}},"type":"object","required":["token"],"title":"DocsBuildRequest"},"DocsCompanyRequest":{"properties":{"token":{"type":"string","title":"Token"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"audience":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"},"employee_band":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Employee Band"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"postal_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Address"},"booking_link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Booking Link"},"competitors":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Competitors"}},"type":"object","required":["token"],"title":"DocsCompanyRequest"},"DocsFactRequest":{"properties":{"token":{"type":"string","title":"Token"},"key":{"type":"string","title":"Key"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"}},"type":"object","required":["token","key"],"title":"DocsFactRequest"},"DocsKeyRequest":{"properties":{"token":{"type":"string","title":"Token"},"key":{"type":"string","title":"Key"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"type":"object","required":["token","key"],"title":"DocsKeyRequest"},"DomainRequest":{"properties":{"domain":{"type":"string","title":"Domain"}},"type":"object","required":["domain"],"title":"DomainRequest"},"DraftRequest":{"properties":{"token":{"type":"string","title":"Token"},"reply_id":{"type":"integer","title":"Reply Id"}},"type":"object","required":["token","reply_id"],"title":"DraftRequest"},"EmailConfigRequest":{"properties":{"provider_type":{"type":"string","title":"Provider Type"},"name":{"type":"string","title":"Name"},"smtp_host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Host"},"smtp_port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Smtp Port"},"smtp_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Username"},"smtp_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Password"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"mailgun_region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mailgun Region"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"aws_access_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Access Key Id"},"aws_secret_access_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aws Secret Access Key"},"from_email":{"type":"string","title":"From Email"},"from_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Name"},"is_active":{"type":"boolean","title":"Is Active","default":false}},"type":"object","required":["provider_type","name","from_email"],"title":"EmailConfigRequest"},"EmailRequest":{"properties":{"domain":{"type":"string","title":"Domain"},"company":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Company"},"lead":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Lead"},"leads":{"anyOf":[{"items":{"type":"object"},"type":"array"},{"type":"null"}],"title":"Leads"}},"type":"object","required":["domain"],"title":"EmailRequest"},"EnrichRequest":{"properties":{"profiles":{"items":{"type":"string"},"type":"array","title":"Profiles"}},"type":"object","title":"EnrichRequest"},"EnrollIn":{"properties":{"sequence_id":{"type":"integer","title":"Sequence Id"},"campaign_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Campaign Id"},"leads":{"items":{"type":"object"},"type":"array","title":"Leads"}},"type":"object","required":["sequence_id","leads"],"title":"EnrollIn"},"ExportRequest":{"properties":{"session_id":{"type":"string","title":"Session Id"},"ords":{"items":{"type":"integer"},"type":"array","title":"Ords"},"full":{"type":"boolean","title":"Full","default":false}},"type":"object","required":["session_id"],"title":"ExportRequest"},"ExtractEmailsRequest":{"properties":{"url":{"type":"string","title":"Url"},"website":{"type":"string","title":"Website","default":""}},"type":"object","required":["url"],"title":"ExtractEmailsRequest"},"FilterRequest":{"properties":{"icp":{"type":"object","title":"Icp"}},"type":"object","title":"FilterRequest"},"FinanceCostIn":{"properties":{"vendor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vendor"},"item":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Item"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"amount_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount Usd"},"cadence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cadence"},"next_due":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Due"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active"}},"type":"object","title":"FinanceCostIn"},"FindEmailMultiRequest":{"properties":{"first_name":{"type":"string","title":"First Name"},"last_name":{"type":"string","title":"Last Name"},"domains":{"items":{"type":"string"},"type":"array","title":"Domains"},"website":{"type":"string","title":"Website","default":""}},"type":"object","required":["first_name","last_name","domains"],"title":"FindEmailMultiRequest"},"FindEmailRequest":{"properties":{"first_name":{"type":"string","title":"First Name"},"last_name":{"type":"string","title":"Last Name"},"domain":{"type":"string","title":"Domain"},"website":{"type":"string","title":"Website","default":""}},"type":"object","required":["first_name","last_name","domain"],"title":"FindEmailRequest"},"FixOnboardingRequest":{"properties":{"email":{"type":"string","title":"Email"},"send_email":{"type":"boolean","title":"Send Email","default":true}},"type":"object","required":["email"],"title":"FixOnboardingRequest"},"FlowUpdateRequest":{"properties":{"display_name":{"type":"string","title":"Display Name"},"description":{"type":"string","title":"Description"},"is_active":{"type":"boolean","title":"Is Active"}},"type":"object","required":["display_name","description","is_active"],"title":"FlowUpdateRequest"},"FollowUpStep":{"properties":{"step_order":{"type":"integer","title":"Step Order"},"delay_days":{"type":"integer","title":"Delay Days","default":3},"delay_hours":{"type":"integer","title":"Delay Hours","default":0},"subject":{"type":"string","title":"Subject"},"body":{"type":"string","title":"Body"}},"type":"object","required":["step_order","subject","body"],"title":"FollowUpStep"},"FunnelAnalyzeRequest":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"FunnelAnalyzeRequest"},"FunnelInitiateCheckoutRequest":{"properties":{"plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan","default":"pro"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Id"},"fbc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fbc"},"fbp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fbp"},"twclid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Twclid"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"test_event_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Test Event Code"},"debug":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Debug","default":false}},"type":"object","title":"FunnelInitiateCheckoutRequest"},"GmailCallbackRequest":{"properties":{"code":{"type":"string","title":"Code"},"state":{"type":"string","title":"State"}},"type":"object","required":["code","state"],"title":"GmailCallbackRequest"},"GrantAccessRequest":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"GrantAccessRequest"},"GrantPremiumTemplatesRequest":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"GrantPremiumTemplatesRequest"},"GtmApplyRequest":{"properties":{"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website","default":""},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry","default":""},"revenue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revenue","default":""},"team_size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Size","default":""},"channels":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Channels","default":[]},"bottleneck":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bottleneck","default":""},"timeline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeline","default":""},"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone","default":""},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role","default":""},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","default":"gtm-workflow"},"company_hp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Hp","default":""}},"type":"object","required":["name","email"],"title":"GtmApplyRequest"},"GtmLeadRequest":{"properties":{"email":{"type":"string","title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone","default":""},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","default":""},"fbc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fbc","default":""},"fbp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fbp","default":""},"twclid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Twclid","default":""},"event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Id","default":""}},"type":"object","required":["email"],"title":"GtmLeadRequest"},"GuardBody":{"properties":{"reply":{"type":"string","title":"Reply"},"context_text":{"type":"string","title":"Context Text","default":""},"lifetime_ok":{"type":"boolean","title":"Lifetime Ok","default":false},"action_claims_ok":{"items":{"type":"string"},"type":"array","title":"Action Claims Ok","default":[]}},"type":"object","required":["reply"],"title":"GuardBody"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HubSpotConnectRequest":{"properties":{"api_key":{"type":"string","title":"Api Key"},"portal_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Portal Id"}},"type":"object","required":["api_key"],"title":"HubSpotConnectRequest"},"ICPRequest":{"properties":{"token":{"type":"string","title":"Token"},"icp":{"type":"object","title":"Icp","default":{}},"limit":{"type":"integer","title":"Limit","default":40},"with_rules":{"type":"boolean","title":"With Rules","default":true}},"type":"object","required":["token"],"title":"ICPRequest"},"ImportLeadRow":{"properties":{"email":{"type":"string","title":"Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"company_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Domain"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"}},"type":"object","required":["email"],"title":"ImportLeadRow"},"ImportRequest":{"properties":{"group":{"type":"string","title":"Group","default":"default"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"rows":{"items":{"$ref":"#/components/schemas/ImportRow"},"type":"array","title":"Rows"},"verify":{"type":"boolean","title":"Verify","default":true}},"type":"object","required":["rows"],"title":"ImportRequest"},"ImportRow":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"},"display_name":{"type":"string","title":"Display Name","default":""},"provider":{"type":"string","title":"Provider","default":""},"imap_host":{"type":"string","title":"Imap Host","default":"imap.gmail.com"},"imap_port":{"type":"integer","title":"Imap Port","default":993}},"type":"object","required":["email","password"],"title":"ImportRow"},"InstructionsRequest":{"properties":{"token":{"type":"string","title":"Token"},"stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"followups_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Followups Enabled"},"followups_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Followups Count"},"followups_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Followups Days"},"reply_auto":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Reply Auto"},"reply_delay_hours":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reply Delay Hours"},"reply_cc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reply Cc"},"booking_link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Booking Link"},"reply_pack_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Reply Pack Enabled"},"reply_followup_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Reply Followup Enabled"},"reply_followup_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reply Followup Days"},"reply_followup_max":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reply Followup Max"}},"type":"object","required":["token"],"title":"InstructionsRequest"},"InviteMemberSchema":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"InviteMemberSchema"},"InviteRequest":{"properties":{"token":{"type":"string","title":"Token"},"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["token","email"],"title":"InviteRequest"},"KeyDeleteRequest":{"properties":{"token":{"type":"string","title":"Token"},"key_id":{"type":"integer","title":"Key Id"}},"type":"object","required":["token","key_id"],"title":"KeyDeleteRequest"},"KeyIn":{"properties":{"name":{"type":"string","title":"Name","default":"Default key"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes","default":["getlead:read","getlead:write"]}},"type":"object","title":"KeyIn"},"KeyRequest":{"properties":{"token":{"type":"string","title":"Token"},"name":{"type":"string","title":"Name","default":"Default"}},"type":"object","required":["token"],"title":"KeyRequest"},"Lead":{"properties":{"url":{"type":"string","title":"Url"},"platform":{"type":"string","title":"Platform","default":"unknown"},"username":{"type":"string","title":"Username"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"followers":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Followers"},"following":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Following"},"posts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Posts"},"is_verified":{"type":"boolean","title":"Is Verified","default":false},"is_private":{"type":"boolean","title":"Is Private","default":false}},"type":"object","required":["url","username"],"title":"Lead"},"LeadCampaignCreate":{"properties":{"name":{"type":"string","title":"Name"},"niche":{"type":"string","title":"Niche"},"location":{"type":"string","title":"Location"},"target_leads":{"type":"integer","title":"Target Leads","default":1000},"email_required":{"type":"boolean","title":"Email Required","default":true},"email_providers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Email Providers"},"allow_custom_domains":{"type":"boolean","title":"Allow Custom Domains","default":true},"max_queries":{"type":"integer","title":"Max Queries","default":1000},"provider":{"type":"string","title":"Provider","default":"startpage"}},"type":"object","required":["name","niche","location"],"title":"LeadCampaignCreate"},"LinkUserRequest":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"LinkUserRequest"},"ListAddRequest":{"properties":{"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"ords":{"items":{"type":"integer"},"type":"array","title":"Ords"},"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id"}},"type":"object","title":"ListAddRequest"},"LoginCodeRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"turnstile":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Turnstile"}},"type":"object","required":["email"],"title":"LoginCodeRequest"},"ManualEvidenceRequest":{"properties":{"customer_email":{"type":"string","title":"Customer Email"},"customer_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Name"},"product_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product Description"},"purchase_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Purchase Ip"},"tos_accepted":{"type":"boolean","title":"Tos Accepted","default":false},"usage_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Usage Description"},"additional_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Additional Notes"}},"type":"object","required":["customer_email"],"title":"ManualEvidenceRequest"},"MeetingRequest":{"properties":{"token":{"type":"string","title":"Token"},"reply_id":{"type":"integer","title":"Reply Id"},"booked":{"type":"boolean","title":"Booked","default":true}},"type":"object","required":["token","reply_id"],"title":"MeetingRequest"},"MemberRequest":{"properties":{"token":{"type":"string","title":"Token"},"member_id":{"type":"integer","title":"Member Id"}},"type":"object","required":["token","member_id"],"title":"MemberRequest"},"MilestoneMarkRequest":{"properties":{"key":{"type":"string","title":"Key"}},"type":"object","required":["key"],"title":"MilestoneMarkRequest"},"NotificationRequest":{"properties":{"token":{"type":"string","title":"Token"},"notify_autopilot":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notify Autopilot"},"notify_digest":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notify Digest"},"autopilot_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Autopilot Enabled"}},"type":"object","required":["token"],"title":"NotificationRequest"},"OfferVersionRequest":{"properties":{"page_type":{"type":"string","title":"Page Type"},"content_text":{"type":"string","title":"Content Text"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"screenshot_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screenshot Url"}},"type":"object","required":["page_type","content_text"],"title":"OfferVersionRequest"},"OnboardingAnalyzeRequest":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"OnboardingAnalyzeRequest"},"OnboardingCampaignRequest":{"properties":{"company_name":{"type":"string","title":"Company Name","default":""},"product_description":{"type":"string","title":"Product Description","default":""},"icp_title":{"type":"string","title":"Icp Title","default":""},"icp_industry":{"type":"string","title":"Icp Industry","default":""},"pain_points":{"items":{"type":"string"},"type":"array","title":"Pain Points","default":[]}},"type":"object","title":"OnboardingCampaignRequest"},"OnboardingRequest":{"properties":{"token":{"type":"string","title":"Token"},"offer":{"type":"string","title":"Offer"},"audience":{"type":"string","title":"Audience"},"booking_link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Booking Link"},"reply_facts":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reply Facts"},"send_days":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Send Days"},"send_from_hour":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Send From Hour"},"send_to_hour":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Send To Hour"},"daily_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Daily Cents"}},"type":"object","required":["token","offer","audience"],"title":"OnboardingRequest"},"OpportunitySettingsIn":{"properties":{"keywords":{"items":{"type":"string"},"type":"array","title":"Keywords"},"negative_keywords":{"items":{"type":"string"},"type":"array","title":"Negative Keywords","default":[]}},"type":"object","required":["keywords"],"title":"OpportunitySettingsIn"},"OpportunityUpdateIn":{"properties":{"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"estimated_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Estimated Value"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","title":"OpportunityUpdateIn"},"OtpBody":{"properties":{"mailbox_id":{"type":"string","title":"Mailbox Id"}},"type":"object","required":["mailbox_id"],"title":"OtpBody"},"PoolMemberToggleRequest":{"properties":{"config_id":{"type":"integer","title":"Config Id"},"member":{"type":"boolean","title":"Member"}},"type":"object","required":["config_id","member"],"title":"PoolMemberToggleRequest"},"ProviderConfig":{"properties":{"provider":{"type":"string","title":"Provider"},"api_key":{"type":"string","title":"Api Key"},"zone_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Zone Name"}},"type":"object","required":["provider","api_key"],"title":"ProviderConfig"},"ProviderSettings":{"properties":{"provider":{"type":"string","title":"Provider"}},"type":"object","required":["provider"],"title":"ProviderSettings"},"ReclassifyRequest":{"properties":{"token":{"type":"string","title":"Token"},"reply_id":{"type":"integer","title":"Reply Id"},"sentiment":{"type":"string","title":"Sentiment"}},"type":"object","required":["token","reply_id","sentiment"],"title":"ReclassifyRequest"},"RedeemCodeRequest":{"properties":{"code":{"type":"string","title":"Code"}},"type":"object","required":["code"],"title":"RedeemCodeRequest"},"ReflectRequest":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"ReflectRequest"},"RefundRequest":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"RefundRequest"},"RefundReviewBody":{"properties":{"email":{"type":"string","title":"Email"},"text":{"type":"string","title":"Text","default":""}},"type":"object","required":["email"],"title":"RefundReviewBody"},"RegisterIn":{"properties":{"client_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Name"},"redirect_uris":{"items":{"type":"string"},"type":"array","title":"Redirect Uris","default":[]},"grant_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Grant Types"},"token_endpoint_auth_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Endpoint Auth Method"},"scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"},"software_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Software Id"}},"type":"object","title":"RegisterIn"},"RegisterRequest":{"properties":{"email":{"type":"string","title":"Email"},"ref_code":{"type":"string","title":"Ref Code"},"payout_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payout Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","required":["email","ref_code"],"title":"RegisterRequest"},"RejectRequest":{"properties":{"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"RejectRequest"},"ReplanRequest":{"properties":{"token":{"type":"string","title":"Token"},"from_run":{"type":"boolean","title":"From Run","default":false}},"type":"object","required":["token"],"title":"ReplanRequest"},"ReplyAttachment":{"properties":{"filename":{"type":"string","title":"Filename"},"content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"},"content_b64":{"type":"string","title":"Content B64"}},"type":"object","required":["filename","content_b64"],"title":"ReplyAttachment"},"ReplyIn":{"properties":{"to_email":{"type":"string","title":"To Email"},"subject":{"type":"string","title":"Subject"},"body_html":{"type":"string","title":"Body Html"},"campaign_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Campaign Id"},"mailbox_config_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Mailbox Config Id"},"cc":{"items":{"type":"string"},"type":"array","title":"Cc","default":[]},"bcc":{"items":{"type":"string"},"type":"array","title":"Bcc","default":[]},"attachments":{"items":{"$ref":"#/components/schemas/ReplyAttachment"},"type":"array","title":"Attachments","default":[]}},"type":"object","required":["to_email","subject","body_html"],"title":"ReplyIn"},"ReplyRequest":{"properties":{"message":{"type":"string","title":"Message"},"images":{"anyOf":[{"items":{"$ref":"#/components/schemas/TicketImage"},"type":"array"},{"type":"null"}],"title":"Images"}},"type":"object","required":["message"],"title":"ReplyRequest"},"RevealRequest":{"properties":{"session_id":{"type":"string","title":"Session Id"},"ords":{"items":{"type":"integer"},"type":"array","title":"Ords"},"verify":{"type":"boolean","title":"Verify","default":false}},"type":"object","required":["session_id"],"title":"RevealRequest"},"ReverseLookupRequest":{"properties":{"email":{"type":"string","title":"Email"},"website":{"type":"string","title":"Website","default":""}},"type":"object","required":["email"],"title":"ReverseLookupRequest"},"RewardReviewRequest":{"properties":{"submission_id":{"type":"integer","title":"Submission Id"},"approved":{"type":"boolean","title":"Approved"},"rejection_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rejection Reason"}},"type":"object","required":["submission_id","approved"],"title":"RewardReviewRequest"},"RewardSubmissionRequest":{"properties":{"linkedin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin"},"twitter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Twitter"},"facebook":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Facebook"},"video":{"type":"string","title":"Video"}},"type":"object","required":["video"],"title":"RewardSubmissionRequest"},"RulesPreviewRequest":{"properties":{"token":{"type":"string","title":"Token"},"rules":{"type":"object","title":"Rules","default":{}}},"type":"object","required":["token"],"title":"RulesPreviewRequest"},"RulesRequest":{"properties":{"token":{"type":"string","title":"Token"},"rules":{"type":"object","title":"Rules","default":{}},"apply":{"type":"string","title":"Apply","default":"future"}},"type":"object","required":["token"],"title":"RulesRequest"},"SampleRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"attribution":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Attribution"}},"type":"object","required":["email"],"title":"SampleRequest"},"SaveMetaRequest":{"properties":{"quiz_session_id":{"type":"string","title":"Quiz Session Id"},"fbc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fbc"},"fbp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fbp"},"twclid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Twclid"},"attribution":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Attribution"}},"type":"object","required":["quiz_session_id"],"title":"SaveMetaRequest"},"SaveProfileRequest":{"properties":{"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"fbc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fbc"},"fbp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fbp"},"twclid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Twclid"}},"type":"object","title":"SaveProfileRequest"},"SavedCreate":{"properties":{"name":{"type":"string","title":"Name"},"icp":{"type":"object","title":"Icp"},"people":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"People"}},"type":"object","required":["name","icp"],"title":"SavedCreate"},"ScanRequest":{"properties":{"mailbox_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Mailbox Ids"}},"type":"object","title":"ScanRequest"},"ScheduleRequest":{"properties":{"token":{"type":"string","title":"Token"},"rows":{"items":{"$ref":"#/components/schemas/ScheduleRow"},"type":"array","title":"Rows"}},"type":"object","required":["token","rows"],"title":"ScheduleRequest"},"ScheduleRow":{"properties":{"country_code":{"type":"string","title":"Country Code"},"days":{"type":"string","title":"Days"},"from_hour":{"type":"integer","title":"From Hour"},"to_hour":{"type":"integer","title":"To Hour"}},"type":"object","required":["country_code","days","from_hour","to_hour"],"title":"ScheduleRow"},"SegmentCriteria":{"properties":{"plan":{"type":"string","title":"Plan","default":"all"},"status":{"type":"string","title":"Status","default":"all"},"activity":{"type":"string","title":"Activity","default":"all"}},"type":"object","title":"SegmentCriteria"},"SegmentRequest":{"properties":{"domain":{"type":"string","title":"Domain"},"campaign":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Campaign"},"company":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Company"}},"type":"object","required":["domain"],"title":"SegmentRequest"},"SegmentsRequest":{"properties":{"domain":{"type":"string","title":"Domain"},"countries":{"items":{"type":"string"},"type":"array","title":"Countries"},"run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run Id"}},"type":"object","required":["domain"],"title":"SegmentsRequest"},"SendPreviewTestRequest":{"properties":{"to_email":{"type":"string","title":"To Email"},"subject":{"type":"string","title":"Subject"},"body":{"type":"string","title":"Body"}},"type":"object","required":["to_email","subject","body"],"title":"SendPreviewTestRequest"},"SendReplyRequest":{"properties":{"token":{"type":"string","title":"Token"},"reply_id":{"type":"integer","title":"Reply Id"},"body":{"type":"string","title":"Body"}},"type":"object","required":["token","reply_id","body"],"title":"SendReplyRequest"},"SendSingleEmailRequest":{"properties":{"from_config_id":{"type":"integer","title":"From Config Id"},"to_email":{"type":"string","title":"To Email"},"subject":{"type":"string","title":"Subject"},"body":{"type":"string","title":"Body"},"in_reply_to":{"type":"string","title":"In Reply To"}},"type":"object","required":["from_config_id","to_email","subject","body"],"title":"SendSingleEmailRequest"},"SequenceIn":{"properties":{"name":{"type":"string","title":"Name"},"stop_on_reply":{"type":"boolean","title":"Stop On Reply","default":true},"steps":{"items":{"$ref":"#/components/schemas/SequenceStepIn"},"type":"array","title":"Steps"}},"type":"object","required":["name","steps"],"title":"SequenceIn"},"SequenceStepIn":{"properties":{"subject":{"type":"string","title":"Subject"},"body_html":{"type":"string","title":"Body Html"},"delay_days":{"type":"integer","title":"Delay Days","default":0},"delay_hours":{"type":"integer","title":"Delay Hours","default":0}},"type":"object","required":["subject","body_html"],"title":"SequenceStepIn"},"SettingsRequest":{"properties":{"token":{"type":"string","title":"Token"},"offer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Offer"},"audience":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience"},"send_days":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Send Days"},"send_from_hour":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Send From Hour"},"send_to_hour":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Send To Hour"},"booking_link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Booking Link"},"reply_facts":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reply Facts"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","required":["token"],"title":"SettingsRequest"},"SignInRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"SignInRequest"},"SignUpRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"},"full_name":{"type":"string","title":"Full Name"}},"type":"object","required":["email","password","full_name"],"title":"SignUpRequest"},"SpamTestResultRequest":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"SpamTestResultRequest"},"SpfCheckRequest":{"properties":{"domain":{"type":"string","title":"Domain"},"website":{"type":"string","title":"Website","default":""}},"type":"object","required":["domain"],"title":"SpfCheckRequest"},"SpinSessionRequest":{"properties":{"session_id":{"type":"string","title":"Session Id"},"plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan","default":"trial"}},"type":"object","required":["session_id"],"title":"SpinSessionRequest"},"StartRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"attribution":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Attribution"},"ref_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref Code"},"device":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"elapsed_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Elapsed Ms"},"turnstile":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Turnstile"}},"type":"object","required":["email"],"title":"StartRequest"},"StepUpdateRequest":{"properties":{"subject":{"type":"string","title":"Subject"},"body_html":{"type":"string","title":"Body Html"},"delay_days":{"type":"integer","title":"Delay Days"},"delay_hours":{"type":"integer","title":"Delay Hours"},"delay_minutes":{"type":"integer","title":"Delay Minutes","default":0},"is_active":{"type":"boolean","title":"Is Active"}},"type":"object","required":["subject","body_html","delay_days","delay_hours","is_active"],"title":"StepUpdateRequest"},"SuppressRequest":{"properties":{"token":{"type":"string","title":"Token"},"kind":{"type":"string","title":"Kind","default":"domain"},"values":{"items":{"type":"string"},"type":"array","title":"Values"}},"type":"object","required":["token","values"],"title":"SuppressRequest"},"TeamMemberOut":{"properties":{"user_id":{"type":"string","title":"User Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"role":{"type":"string","title":"Role"},"joined_at":{"type":"string","format":"date-time","title":"Joined At"}},"type":"object","required":["user_id","email","full_name","role","joined_at"],"title":"TeamMemberOut"},"TeamOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"owner_id":{"type":"string","title":"Owner Id"},"plan_limit":{"type":"integer","title":"Plan Limit"},"members":{"items":{"$ref":"#/components/schemas/TeamMemberOut"},"type":"array","title":"Members"},"usage":{"type":"integer","title":"Usage"}},"type":"object","required":["id","name","owner_id","plan_limit","members","usage"],"title":"TeamOut"},"TemplateCreate":{"properties":{"name":{"type":"string","title":"Name"},"category":{"type":"string","title":"Category","default":"outreach"},"subject":{"type":"string","title":"Subject"},"body":{"type":"string","title":"Body"},"follow_ups":{"items":{"$ref":"#/components/schemas/FollowUpStep"},"type":"array","title":"Follow Ups","default":[]},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","default":[]}},"type":"object","required":["name","subject","body"],"title":"TemplateCreate"},"TemplateUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"follow_ups":{"anyOf":[{"items":{"$ref":"#/components/schemas/FollowUpStep"},"type":"array"},{"type":"null"}],"title":"Follow Ups"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"}},"type":"object","title":"TemplateUpdate"},"TestActivateRequest":{"properties":{"email":{"type":"string","title":"Email"},"domain":{"type":"string","title":"Domain"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"campaigns":{"anyOf":[{"items":{"type":"object"},"type":"array"},{"type":"null"}],"title":"Campaigns"},"leads":{"anyOf":[{"items":{"type":"object"},"type":"array"},{"type":"null"}],"title":"Leads"}},"type":"object","required":["email","domain"],"title":"TestActivateRequest"},"TestEmailRequest":{"properties":{"to_email":{"type":"string","title":"To Email"},"flow_name":{"type":"string","title":"Flow Name"},"step_order":{"type":"integer","title":"Step Order"}},"type":"object","required":["to_email","flow_name","step_order"],"title":"TestEmailRequest"},"TickRequest":{"properties":{"worker_token":{"type":"string","title":"Worker Token"},"max_sends":{"type":"integer","title":"Max Sends","default":10},"account_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Id"}},"type":"object","required":["worker_token"],"title":"TickRequest"},"TicketImage":{"properties":{"mime_type":{"type":"string","title":"Mime Type"},"data_b64":{"type":"string","title":"Data B64"}},"type":"object","required":["mime_type","data_b64"],"title":"TicketImage"},"ToggleRequest":{"properties":{"token":{"type":"string","title":"Token"},"campaign_id":{"type":"integer","title":"Campaign Id"},"status":{"type":"string","title":"Status"}},"type":"object","required":["token","campaign_id","status"],"title":"ToggleRequest"},"TopupConfirmRequest":{"properties":{"token":{"type":"string","title":"Token"},"payment_intent":{"type":"string","title":"Payment Intent"}},"type":"object","required":["token","payment_intent"],"title":"TopupConfirmRequest"},"TrackEventRequest":{"properties":{"session_id":{"type":"string","title":"Session Id"},"event":{"type":"string","title":"Event"},"step":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Step"},"metadata":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Metadata","default":{}}},"type":"object","required":["session_id","event"],"title":"TrackEventRequest"},"TrackingTestRequest":{"properties":{"to_email":{"type":"string","title":"To Email"},"subject":{"type":"string","title":"Subject"},"enable_tracking":{"type":"boolean","title":"Enable Tracking","default":true}},"type":"object","required":["to_email","subject"],"title":"TrackingTestRequest"},"TrustpilotReviewRequest":{"properties":{"review_url":{"type":"string","title":"Review Url"}},"type":"object","required":["review_url"],"title":"TrustpilotReviewRequest"},"UnlimitedSubscribeRequest":{"properties":{"email":{"type":"string","title":"Email"},"domain":{"type":"string","title":"Domain"},"blocks":{"type":"integer","title":"Blocks","default":1},"ref_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref Code"},"attribution":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Attribution"},"tos_accepted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tos Accepted At"}},"type":"object","required":["email","domain"],"title":"UnlimitedSubscribeRequest"},"UnsuppressRequest":{"properties":{"token":{"type":"string","title":"Token"},"id":{"type":"integer","title":"Id"}},"type":"object","required":["token","id"],"title":"UnsuppressRequest"},"UpdateLifetimeBillingRequest":{"properties":{"payment_intent_id":{"type":"string","title":"Payment Intent Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"tax_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tax Id"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"address_line1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address Line1"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code"}},"type":"object","required":["payment_intent_id"],"title":"UpdateLifetimeBillingRequest"},"UpdateStatusRequest":{"properties":{"status":{"type":"string","title":"Status"}},"type":"object","required":["status"],"title":"UpdateStatusRequest"},"UpdateUserPlanRequest":{"properties":{"plan":{"type":"string","title":"Plan"}},"type":"object","required":["plan"],"title":"UpdateUserPlanRequest"},"UpdateUserRequest":{"properties":{"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"is_admin":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Admin"},"credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits"}},"type":"object","title":"UpdateUserRequest"},"UpgradeRequest":{"properties":{"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"ref_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref Code"},"attribution":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Attribution"},"blocks":{"type":"integer","title":"Blocks","default":1},"cancel_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cancel Path"}},"type":"object","title":"UpgradeRequest"},"UpsellIntentRequest":{"properties":{"amount_cents":{"type":"integer","title":"Amount Cents","default":3900},"original_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Session Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"type":{"type":"string","title":"Type","default":"premium_templates_upsell"}},"type":"object","title":"UpsellIntentRequest"},"ValidateOfferRequest":{"properties":{"session_id":{"type":"string","title":"Session Id"}},"type":"object","required":["session_id"],"title":"ValidateOfferRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VerifyEmailRequest":{"properties":{"email":{"type":"string","title":"Email"},"website":{"type":"string","title":"Website","default":""}},"type":"object","required":["email"],"title":"VerifyEmailRequest"},"VerifyLicenseRequest":{"properties":{"key":{"type":"string","title":"Key","default":""}},"type":"object","title":"VerifyLicenseRequest"},"VerifyLoginCodeRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"code":{"type":"string","title":"Code"}},"type":"object","required":["email","code"],"title":"VerifyLoginCodeRequest"},"WarmupToggleRequest":{"properties":{"config_id":{"type":"integer","title":"Config Id"},"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["config_id","enabled"],"title":"WarmupToggleRequest"},"auth_endpoints__ActivateRequest":{"properties":{"activation_code":{"type":"string","title":"Activation Code"}},"type":"object","required":["activation_code"],"title":"ActivateRequest"},"b2b_people__SearchRequest":{"properties":{"icp":{"type":"object","title":"Icp"},"page":{"type":"integer","title":"Page","default":1},"per_page":{"type":"integer","title":"Per Page","default":25},"sort":{"type":"string","title":"Sort","default":"quality"},"dir":{"type":"string","title":"Dir","default":"asc"}},"type":"object","title":"SearchRequest"},"b2b_people__VerifyRequest":{"properties":{"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"ords":{"items":{"type":"integer"},"type":"array","title":"Ords"},"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id"}},"type":"object","title":"VerifyRequest"},"b2b_topup__TopupRequest":{"properties":{"pack":{"type":"string","title":"Pack"},"success_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Success Path"},"cancel_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cancel Path"}},"type":"object","required":["pack"],"title":"TopupRequest"},"campaign_routes__SendEmailRequest":{"properties":{"campaign_name":{"type":"string","title":"Campaign Name"},"list_id":{"type":"integer","title":"List Id"},"subject":{"type":"string","title":"Subject"},"template":{"type":"string","title":"Template"},"email_config_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Email Config Id"},"email_config_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Email Config Ids"},"test_mode":{"type":"boolean","title":"Test Mode","default":false},"test_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Test Email"},"sending_config":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Sending Config"},"tracking_config":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Tracking Config"},"follow_ups":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Follow Ups"},"lead_filter":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Lead Filter"},"min_delay_seconds":{"type":"integer","title":"Min Delay Seconds","default":30},"max_delay_seconds":{"type":"integer","title":"Max Delay Seconds","default":120},"daily_limit":{"type":"integer","title":"Daily Limit","default":500},"hourly_limit":{"type":"integer","title":"Hourly Limit","default":100},"minute_limit":{"type":"integer","title":"Minute Limit","default":10},"schedule_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schedule Start"}},"type":"object","required":["campaign_name","list_id","subject","template"],"title":"SendEmailRequest"},"main__SearchRequest":{"properties":{"query":{"type":"string","title":"Query"},"max_results":{"type":"integer","title":"Max Results","default":2000},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"email_required":{"type":"boolean","title":"Email Required","default":false},"phone_required":{"type":"boolean","title":"Phone Required","default":false},"exclude_duplicates":{"type":"boolean","title":"Exclude Duplicates","default":true},"exclude_list_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Exclude List Id"},"email_providers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Email Providers"},"allow_custom_domains":{"type":"boolean","title":"Allow Custom Domains","default":true},"expand_keywords":{"type":"boolean","title":"Expand Keywords","default":true},"max_queries":{"type":"integer","title":"Max Queries","default":2500},"verify_emails":{"type":"boolean","title":"Verify Emails","default":false},"allow_social":{"type":"boolean","title":"Allow Social","default":false},"platforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Platforms"},"keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Keywords"},"location_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Text"},"search_language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search Language"},"gl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gl"},"job_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Title"}},"type":"object","required":["query"],"title":"SearchRequest"},"main__SendEmailRequest":{"properties":{"campaign_name":{"type":"string","title":"Campaign Name"},"list_id":{"type":"integer","title":"List Id"},"subject":{"type":"string","title":"Subject"},"template":{"type":"string","title":"Template"},"email_config_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Email Config Id"},"test_mode":{"type":"boolean","title":"Test Mode","default":false},"test_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Test Email"},"sending_config":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Sending Config"},"tracking_config":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Tracking Config"},"follow_ups":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Follow Ups"},"min_delay_seconds":{"type":"integer","title":"Min Delay Seconds","default":30},"max_delay_seconds":{"type":"integer","title":"Max Delay Seconds","default":120},"daily_limit":{"type":"integer","title":"Daily Limit","default":500},"hourly_limit":{"type":"integer","title":"Hourly Limit","default":100},"minute_limit":{"type":"integer","title":"Minute Limit","default":10},"schedule_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schedule Start"}},"type":"object","required":["campaign_name","list_id","subject","template"],"title":"SendEmailRequest"},"reward_ladder__ClaimRequest":{"properties":{"task":{"type":"string","title":"Task"},"url":{"type":"string","title":"Url"}},"type":"object","required":["task","url"],"title":"ClaimRequest"},"unlimited_routes__VerifyRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"attribution":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Attribution"},"ref_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref Code"},"device":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"elapsed_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Elapsed Ms"},"turnstile":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Turnstile"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"}},"type":"object","required":["email"],"title":"VerifyRequest"},"v2_app_routes__ActivateRequest":{"properties":{"payment_intent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Intent Id"},"setup_intent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Setup Intent Id"},"email":{"type":"string","title":"Email"},"domain":{"type":"string","title":"Domain"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"campaigns":{"anyOf":[{"items":{"type":"object"},"type":"array"},{"type":"null"}],"title":"Campaigns"},"leads":{"anyOf":[{"items":{"type":"object"},"type":"array"},{"type":"null"}],"title":"Leads"},"draft_email":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Draft Email"},"event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Id"},"twclid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Twclid"}},"type":"object","required":["email","domain"],"title":"ActivateRequest"},"v2_app_routes__TemplateRequest":{"properties":{"token":{"type":"string","title":"Token"},"campaign_id":{"type":"integer","title":"Campaign Id"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","required":["token","campaign_id"],"title":"TemplateRequest"},"v2_app_routes__TopupRequest":{"properties":{"token":{"type":"string","title":"Token"},"amount_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount Cents"}},"type":"object","required":["token"],"title":"TopupRequest"},"v2_data_api__SearchRequest":{"properties":{"filters":{"type":"object","title":"Filters"},"limit":{"type":"integer","title":"Limit","default":1000}},"type":"object","title":"SearchRequest","description":"A filter set, in exactly the vocabulary `foundry.targeting.ICP` already\nspeaks. Unknown keys are dropped rather than rejected, so a client written\nagainst a later version of the vocabulary degrades to a wider audience\ninstead of a 400."},"v2_data_api__VerifyRequest":{"properties":{"emails":{"items":{"type":"string"},"type":"array","title":"Emails"}},"type":"object","required":["emails"],"title":"VerifyRequest"},"v2_gtm_routes__ClaimRequest":{"properties":{"email":{"type":"string","title":"Email"},"domain":{"type":"string","title":"Domain"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"amount_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount Cents"}},"type":"object","required":["email","domain"],"title":"ClaimRequest"},"v2_studio_routes__TemplateRequest":{"properties":{"token":{"type":"string","title":"Token"},"campaign_id":{"type":"integer","title":"Campaign Id"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"}},"type":"object","required":["token","campaign_id"],"title":"TemplateRequest"},"verification_routes__VerifyRequest":{"properties":{"mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode","default":"auto"}},"type":"object","title":"VerifyRequest"}}}}