{"openapi":"3.1.0","info":{"title":"ComplianceLayer API","description":"\n## Infrastructure Risk Intelligence API\n\nScan any domain and get a comprehensive security risk score.\n\n### Features\n- **DNS/Email Security** — SPF, DMARC, DKIM analysis\n- **SSL/TLS Certificates** — Expiry, chain, protocol checks\n- **HTTP Security Headers** — HSTS, CSP, X-Frame-Options\n- **Open Port Detection** — Find exposed services\n\n### Authentication\nUse your API key in the Authorization header:\n```\nAuthorization: Bearer cl_your_api_key_here\n```\n\n### Rate Limits\n- Free tier: 30 requests/minute\n- Paid tiers: Higher limits available\n    ","version":"1.0.0"},"servers":[{"url":"https://api.compliancelayer.net","description":"Production"}],"paths":{"/health":{"get":{"tags":["System"],"summary":"Health Check","description":"Health check endpoint for monitoring.","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"tags":["System"],"summary":"Root","description":"API root — service info and quick links.","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/live":{"get":{"tags":["System"],"summary":"Health Live","description":"Liveness endpoint for load balancers.","operationId":"health_live_health_live_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/scan/free":{"post":{"tags":["Scanning"],"summary":"Free Scan","description":"Free scan — returns grade + top 3 issues only.\n\nRate limited to 5 scans per hour per IP address to prevent abuse.\n\nAccepts domain either as JSON body {\"domain\": \"example.com\"} or as query param ?domain=example.com","operationId":"free_scan_v1_scan_free_post","parameters":[{"name":"domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Domain to scan (query param fallback for RapidAPI)","title":"Domain"},"description":"Domain to scan (query param fallback for RapidAPI)"}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ScanRequest"},{"type":"null"}],"title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreeScanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scan/":{"post":{"tags":["Scanning"],"summary":"Authenticated Scan","description":"Queue a full authenticated scan and return a pollable job.\n\nAccepts either:\n- A regular user API key / JWT (full quota-tracked scan)\n- The public scanner API key (rate-limited, no user quota consumed)\n\nReturns complete security analysis with:\n- A durable job identifier\n- Pollable status transitions\n- Canonical result retrieval via dedicated report endpoint","operationId":"authenticated_scan_v1_scan__post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scan/jobs/{job_id}":{"get":{"tags":["Scanning"],"summary":"Get Scan Job","description":"Return the current state for a scan job.\n\nAccepts regular user auth or the public scanner API key.\nPublic scanner requests can poll any job created via the public scanner endpoint.","operationId":"get_scan_job_v1_scan_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scan/jobs/{job_id}/report":{"get":{"tags":["Scanning"],"summary":"Get Scan Report","description":"Return the completed canonical report for a scan job.\n\nAccepts regular user auth or the public scanner API key.","operationId":"get_scan_report_v1_scan_jobs__job_id__report_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FullScanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scan/recent":{"get":{"tags":["Scanning"],"summary":"Get Recent Scans","description":"Return 20 most recent scans for the authenticated user.","operationId":"get_recent_scans_v1_scan_recent_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scan/history":{"get":{"tags":["Scanning"],"summary":"Get Scan History","description":"Return recent canonical scans for the authenticated user.","operationId":"get_scan_history_v1_scan_history_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scan/sample/demo-report":{"get":{"tags":["Scanning"],"summary":"Get Sample Report","description":"Get a realistic sample compliance report for demonstration purposes.\nThis endpoint returns a comprehensive example report showing all features.\nNo authentication required - public endpoint for marketing purposes.","operationId":"get_sample_report_v1_scan_sample_demo_report_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/scan/{domain}":{"get":{"tags":["Scanning"],"summary":"Get Scan","description":"Synchronous scan for a domain (deprecated).\n\nUse POST /scan + GET /scan/jobs/{job_id} instead for the async job flow.\nThis endpoint will be removed in a future version.","operationId":"get_scan_v1_scan__domain__get","deprecated":true,"parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/signup":{"post":{"tags":["Authentication"],"summary":"Signup","description":"Create a new account.","operationId":"signup_v1_auth_signup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/login":{"post":{"tags":["Authentication"],"summary":"Login","description":"Login and get access token.\n\nSECURITY: Sets both session cookie and CSRF token for session-based authentication.\nThe CSRF token must be included in X-CSRF-Token header for all state-changing requests.","operationId":"login_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/me":{"get":{"tags":["Authentication"],"summary":"Get Me","description":"Get current user info with accurate quota from entitlements.","operationId":"get_me_v1_auth_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/api-key/regenerate":{"post":{"tags":["Authentication"],"summary":"Regenerate Api Key","description":"Regenerate API key.\n\nSECURITY WARNING: This endpoint returns the full API key in plaintext.\nThe key should be:\n1. Displayed to the user ONCE\n2. Never logged to files/services\n3. Stored only in user's secure location\n\nLogging middleware is configured to exclude this endpoint from body logging.","operationId":"regenerate_api_key_v1_auth_api_key_regenerate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/logout":{"post":{"tags":["Authentication"],"summary":"Logout","description":"Logout and clear the browser session cookie and CSRF token.","operationId":"logout_v1_auth_logout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/password/reset-request":{"post":{"tags":["Authentication"],"summary":"Request Password Reset","description":"Request a password reset email.","operationId":"request_password_reset_v1_auth_password_reset_request_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/password/reset-confirm":{"post":{"tags":["Authentication"],"summary":"Reset Password Deprecated","description":"DEPRECATED: Reset password with token from email.\n\nUse POST /reset-password instead (doesn't require email in request body).\nThis endpoint will be removed in a future version.","operationId":"reset_password_deprecated_v1_auth_password_reset_confirm_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetConfirm"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true}},"/v1/auth/password/change":{"post":{"tags":["Authentication"],"summary":"Change Password","description":"Change password for authenticated user.","operationId":"change_password_v1_auth_password_change_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_change_password_v1_auth_password_change_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/reset-password":{"post":{"tags":["Authentication"],"summary":"Reset Password Simple","description":"Reset password with token from email and sign the user in.\n\nThis is the preferred endpoint - it finds the user by token hash,\nso the email doesn't need to be in the request body.\nReturns auth tokens so the user is signed in immediately.","operationId":"reset_password_simple_v1_auth_reset_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/verify-email":{"get":{"tags":["Authentication"],"summary":"Verify Email","description":"Verify email address with token from verification email.\n\nThis endpoint is called when the user clicks the link in their verification email.\nIt validates the token, checks expiration (24 hours), and sets email_verified=TRUE.","operationId":"verify_email_v1_auth_verify_email_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"}}}}}}},"/v1/auth/resend-verification":{"post":{"tags":["Authentication"],"summary":"Resend Verification","description":"Resend email verification link.\n\nThis endpoint allows users to request a new verification email if:\n- They haven't verified yet\n- Their previous link expired\n- They didn't receive the original email\n\nRate limit: Only allows resend if last sent > 60 seconds ago.","operationId":"resend_verification_v1_auth_resend_verification_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/google/login":{"get":{"tags":["Authentication"],"summary":"Google Login","description":"Initiate Google OAuth flow.\n\nThis endpoint redirects the user to Google's OAuth consent screen.\nAfter the user grants permission, Google will redirect back to /google/callback.","operationId":"google_login_v1_auth_google_login_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/auth/google/callback":{"get":{"tags":["Authentication"],"summary":"Google Callback","description":"Handle Google OAuth callback.\n\nThis endpoint is called by Google after the user grants/denies permission.\nIt exchanges the authorization code for an access token and creates/logs in the user.","operationId":"google_callback_v1_auth_google_callback_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/billing/checkout":{"post":{"tags":["Billing"],"summary":"Create Checkout","description":"Create Stripe checkout session for subscription.","operationId":"create_checkout_v1_billing_checkout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/portal":{"post":{"tags":["Billing"],"summary":"Create Portal","description":"Create Stripe billing portal session.","operationId":"create_portal_v1_billing_portal_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/subscription":{"get":{"tags":["Billing"],"summary":"Get Subscription","description":"Get current subscription info.","operationId":"get_subscription_v1_billing_subscription_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/webhook":{"post":{"tags":["Billing"],"summary":"Stripe Webhook","description":"Handle Stripe webhooks with retry logic and idempotency.","operationId":"stripe_webhook_v1_billing_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"}}}}}}},"/v1/billing/webhook/retry":{"post":{"tags":["Billing"],"summary":"Retry Failed Webhooks","description":"Manually retry failed webhooks (admin only).","operationId":"retry_failed_webhooks_v1_billing_webhook_retry_post","parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Hours"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/webhook/stats":{"get":{"tags":["Billing"],"summary":"Get Webhook Stats","description":"Get webhook processing statistics (admin only).","operationId":"get_webhook_stats_v1_billing_webhook_stats_get","parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Hours"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/domains":{"get":{"tags":["Domain Monitoring"],"summary":"List Domains","description":"List all monitored domains.","operationId":"list_domains_v1_domains_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Domain Monitoring"],"summary":"Add Domain","description":"Add domain to monitoring.","operationId":"add_domain_v1_domains_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddDomainRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/domains/{domain_id}":{"delete":{"tags":["Domain Monitoring"],"summary":"Remove Domain","description":"Remove domain from monitoring.","operationId":"remove_domain_v1_domains__domain_id__delete","parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"integer","title":"Domain Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/domains/{domain_id}/scan":{"post":{"tags":["Domain Monitoring"],"summary":"Scan Domain","description":"Trigger immediate scan for domain.","operationId":"scan_domain_v1_domains__domain_id__scan_post","parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"integer","title":"Domain Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainScanJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/domains/alerts":{"get":{"tags":["Domain Monitoring"],"summary":"List Alerts","description":"List alerts for user with comprehensive filtering.\n\nQuery parameters:\n- unread_only: Filter to only unread alerts\n- limit: Maximum number of alerts to return (default: 50, max: 200)\n- severity: Filter by severity (critical, high, medium, low)\n- alert_type: Filter by alert type (score_drop, critical_issue, cert_expired, etc.)\n- domain_id: Filter by monitored domain ID","operationId":"list_alerts_v1_domains_alerts_get","parameters":[{"name":"unread_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Unread Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Severity"}},{"name":"alert_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alert Type"}},{"name":"domain_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Domain Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AlertResponse"},"title":"Response List Alerts V1 Domains Alerts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/domains/alerts/{alert_id}/read":{"post":{"tags":["Domain Monitoring"],"summary":"Mark Alert Read","description":"Mark a single alert as read.","operationId":"mark_alert_read_v1_domains_alerts__alert_id__read_post","parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"integer","title":"Alert Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/domains/alerts/mark-all-read":{"post":{"tags":["Domain Monitoring"],"summary":"Mark All Alerts Read","description":"Mark all alerts as read, with optional filtering.\n\nQuery parameters:\n- severity: Only mark alerts of this severity\n- alert_type: Only mark alerts of this type\n- domain_id: Only mark alerts for this domain","operationId":"mark_all_alerts_read_v1_domains_alerts_mark_all_read_post","parameters":[{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Severity"}},{"name":"alert_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alert Type"}},{"name":"domain_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Domain Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/domains/alerts/{alert_id}":{"delete":{"tags":["Domain Monitoring"],"summary":"Delete Alert","description":"Delete a single alert.","operationId":"delete_alert_v1_domains_alerts__alert_id__delete","parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"integer","title":"Alert Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/domains/alerts/stats":{"get":{"tags":["Domain Monitoring"],"summary":"Get Alert Stats","description":"Get alert statistics for the user.","operationId":"get_alert_stats_v1_domains_alerts_stats_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/pricing/plans":{"get":{"tags":["Pricing"],"summary":"Get Pricing Plans","description":"Get all available pricing plans with features and limits.","operationId":"get_pricing_plans_v1_pricing_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"type":"object"},"type":"array","title":"Response Get Pricing Plans V1 Pricing Plans Get"}}}}}}},"/v1/pricing/plans/{plan_id}":{"get":{"tags":["Pricing"],"summary":"Get Plan Details","description":"Get detailed information about a specific plan.","operationId":"get_plan_details_v1_pricing_plans__plan_id__get","parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"string","title":"Plan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Plan Details V1 Pricing Plans  Plan Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/pricing/compare":{"get":{"tags":["Pricing"],"summary":"Compare Plans","description":"Get a comparison table of all plans.","operationId":"compare_plans_v1_pricing_compare_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Compare Plans V1 Pricing Compare Get"}}}}}}},"/v1/usage/summary":{"get":{"tags":["Usage Tracking"],"summary":"Get Usage Summary","description":"Get API usage summary for the current user.","operationId":"get_usage_summary_v1_usage_summary_get","parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Start date (YYYY-MM-DD)","title":"Start Date"},"description":"Start date (YYYY-MM-DD)"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End date (YYYY-MM-DD)","title":"End Date"},"description":"End date (YYYY-MM-DD)"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/usage/limits":{"get":{"tags":["Usage Tracking"],"summary":"Get Usage Limits","description":"Check if user is within their usage limits.","operationId":"get_usage_limits_v1_usage_limits_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/usage/by-endpoint":{"get":{"tags":["Usage Tracking"],"summary":"Get Usage By Endpoint","description":"Get detailed usage breakdown by API endpoint.","operationId":"get_usage_by_endpoint_v1_usage_by_endpoint_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","description":"Number of days to look back","default":30,"title":"Days"},"description":"Number of days to look back"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/usage/history":{"get":{"tags":["Usage Tracking"],"summary":"Get Usage History","description":"Get historical usage data for trending.","operationId":"get_usage_history_v1_usage_history_get","parameters":[{"name":"months","in":"query","required":false,"schema":{"type":"integer","description":"Number of months of history","default":6,"title":"Months"},"description":"Number of months of history"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/badge/{domain}.svg":{"get":{"tags":["Badges"],"summary":"Get security badge SVG","description":"Returns an embeddable SVG badge showing the domain's security grade. Free endpoint, no authentication required. Results cached for 1 hour.","operationId":"get_badge_v1_badge__domain__svg_get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}},{"name":"style","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Badge style (flat, plastic). Default: flat","title":"Style"},"description":"Badge style (flat, plastic). Default: flat"}],"responses":{"200":{"description":"SVG badge image","content":{"image/svg+xml":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/badge/{domain}.json":{"get":{"tags":["Badges"],"summary":"Get security badge data as JSON","description":"Returns badge data in JSON format for custom integrations. Requires authentication.","operationId":"get_badge_json_v1_badge__domain__json_get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/batch/scan":{"post":{"tags":["Batch Operations"],"summary":"Batch scan multiple domains","description":"Scan up to 50 domains in parallel. Returns scored results sorted by risk. Ideal for supply chain vendor assessments and MSP client portfolio scans.\n\n**Auth required.** Counts against your monthly scan quota (1 scan per domain).","operationId":"batch_scan_v1_batch_scan_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchScanRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchScanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/batch/compare":{"post":{"tags":["Batch Operations"],"summary":"Compare security scores for multiple domains","description":"Compare 2-5 domains side by side. Returns ranked results with a winner. Use for competitive analysis, sales enablement, or pre-acquisition due diligence.\n\n**Auth required.** Counts against your monthly scan quota.","operationId":"compare_domains_v1_batch_compare_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompareRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompareResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/settings/alert-preferences":{"get":{"tags":["Settings"],"summary":"Get Alert Preferences","description":"Get user's alert preferences.","operationId":"get_alert_preferences_v1_settings_alert_preferences_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertPreferencesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Settings"],"summary":"Update Alert Preferences","description":"Update user's alert preferences.","operationId":"update_alert_preferences_v1_settings_alert_preferences_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertPreferencesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertPreferencesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks":{"post":{"tags":["Webhooks","webhooks"],"summary":"Create Webhook Endpoint","description":"Create a new webhook endpoint.\n\nThe webhook secret is generated automatically and returned only once.\nStore it securely - you'll need it to verify webhook signatures.","operationId":"create_webhook_endpoint_v1_webhooks_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEndpointCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEndpointResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Webhooks","webhooks"],"summary":"List Webhook Endpoints","description":"List all webhook endpoints for the authenticated user.","operationId":"list_webhook_endpoints_v1_webhooks_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WebhookEndpointListResponse"},"title":"Response List Webhook Endpoints V1 Webhooks Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/{endpoint_id}":{"get":{"tags":["Webhooks","webhooks"],"summary":"Get Webhook Endpoint","description":"Get details of a specific webhook endpoint.","operationId":"get_webhook_endpoint_v1_webhooks__endpoint_id__get","parameters":[{"name":"endpoint_id","in":"path","required":true,"schema":{"type":"integer","title":"Endpoint Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEndpointListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Webhooks","webhooks"],"summary":"Update Webhook Endpoint","description":"Update a webhook endpoint configuration.","operationId":"update_webhook_endpoint_v1_webhooks__endpoint_id__patch","parameters":[{"name":"endpoint_id","in":"path","required":true,"schema":{"type":"integer","title":"Endpoint Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEndpointUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEndpointListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Webhooks","webhooks"],"summary":"Delete Webhook Endpoint","description":"Delete a webhook endpoint.","operationId":"delete_webhook_endpoint_v1_webhooks__endpoint_id__delete","parameters":[{"name":"endpoint_id","in":"path","required":true,"schema":{"type":"integer","title":"Endpoint Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/{endpoint_id}/test":{"post":{"tags":["Webhooks","webhooks"],"summary":"Test Webhook Endpoint","description":"Send a test webhook to verify endpoint configuration.","operationId":"test_webhook_endpoint_v1_webhooks__endpoint_id__test_post","parameters":[{"name":"endpoint_id","in":"path","required":true,"schema":{"type":"integer","title":"Endpoint Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/{endpoint_id}/deliveries":{"get":{"tags":["Webhooks","webhooks"],"summary":"Get Webhook Deliveries","description":"Get delivery history for a webhook endpoint.","operationId":"get_webhook_deliveries_v1_webhooks__endpoint_id__deliveries_get","parameters":[{"name":"endpoint_id","in":"path","required":true,"schema":{"type":"integer","title":"Endpoint Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WebhookDeliveryResponse"},"title":"Response Get Webhook Deliveries V1 Webhooks  Endpoint Id  Deliveries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/stats/summary":{"get":{"tags":["Webhooks","webhooks"],"summary":"Get Webhook Stats","description":"Get webhook delivery statistics for the authenticated user.","operationId":"get_webhook_stats_v1_webhooks_stats_summary_get","parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Hours"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/events/types":{"get":{"tags":["Webhooks","webhooks"],"summary":"List Event Types","description":"List all available webhook event types.","operationId":"list_event_types_v1_webhooks_events_types_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/compliance/reports/{job_id}/pdf":{"get":{"tags":["Compliance","compliance"],"summary":"Export Compliance Pdf","description":"Export compliance report as PDF.\n\nArgs:\n    job_id: Scan job ID\n    request: FastAPI request for audit logging\n    current_user: Authenticated user\n    db: Database session\n\nReturns:\n    PDF file download\n\nRaises:\n    HTTPException: 404 if report not found, 403 if unauthorized","operationId":"export_compliance_pdf_v1_compliance_reports__job_id__pdf_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"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/compliance/history/{domain}":{"get":{"tags":["Compliance","compliance"],"summary":"Get Compliance History","description":"Get compliance history for a domain.\n\nArgs:\n    domain: Domain name\n    limit: Maximum number of snapshots to return\n    current_user: Authenticated user\n    db: Database session\n\nReturns:\n    Compliance history with snapshots","operationId":"get_compliance_history_v1_compliance_history__domain__get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":30,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/compliance/trends/{domain}":{"get":{"tags":["Compliance","compliance"],"summary":"Get Compliance Trends","description":"Get compliance trends over time.\n\nArgs:\n    domain: Domain name\n    days: Number of days to look back\n    current_user: Authenticated user\n    db: Database session\n\nReturns:\n    Compliance trends with summary statistics","operationId":"get_compliance_trends_v1_compliance_trends__domain__get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":90,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/email-queue/stats":{"get":{"tags":["Admin","admin"],"summary":"Get Email Queue Stats","description":"Get email queue statistics for monitoring.\n\nRestricted to admin users only.","operationId":"get_email_queue_stats_v1_admin_email_queue_stats_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailQueueStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/ops-alerts/recent":{"get":{"tags":["Admin","admin"],"summary":"Get Recent Ops Alerts","description":"Get recent operational alerts for audit/review.\n\nRestricted to admin users only.","operationId":"get_recent_ops_alerts_v1_admin_ops_alerts_recent_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpsAlertsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/email-queue/history":{"get":{"tags":["Admin","admin"],"summary":"Get Email Queue History","description":"Query email history for auditing. Returns metadata (no body content) for each email.\nUse GET /email-queue/{email_id} for full content.","operationId":"get_email_queue_history_v1_admin_email_queue_history_get","parameters":[{"name":"to_email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by recipient email","title":"To Email"},"description":"Filter by recipient email"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by user ID","title":"User Id"},"description":"Filter by user ID"},{"name":"template_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by template name","title":"Template Name"},"description":"Filter by template name"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status (pending, sent, sent_inline, failed, retry)","title":"Status"},"description":"Filter by status (pending, sent, sent_inline, failed, retry)"},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Only show emails after this timestamp","title":"Since"},"description":"Only show emails after this timestamp"},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Only show emails before this timestamp","title":"Until"},"description":"Only show emails before this timestamp"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Page size","default":50,"title":"Limit"},"description":"Page size"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Pagination offset","default":0,"title":"Offset"},"description":"Pagination offset"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/email-queue/{email_id}":{"get":{"tags":["Admin","admin"],"summary":"Get Email Detail","description":"Get full detail for a single email including body content and template context.","operationId":"get_email_detail_v1_admin_email_queue__email_id__get","parameters":[{"name":"email_id","in":"path","required":true,"schema":{"type":"integer","title":"Email Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/verify/{report_id}":{"get":{"tags":["Verification"],"summary":"Verify Report","description":"Public endpoint to verify a scan report by its report_id.\n\nNo authentication required. Returns basic scan information only.\n\nArgs:\n    report_id: Report ID (format: CL-XXXXXXXX)\n    db: Database session\n\nReturns:\n    dict: Public scan information (domain, date, score, grade, module scores)\n\nRaises:\n    HTTPException: 404 if report not found","operationId":"verify_report_v1_verify__report_id__get","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Verify Report V1 Verify  Report Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/status/services":{"get":{"tags":["Status","status"],"summary":"Get Service Status","description":"Get current status of all system services - LIVE DATA ONLY.\n\nThis endpoint provides real-time service health without requiring\nhistorical uptime data. Perfect for immediate status visibility.\n\nPublic endpoint - no authentication required.","operationId":"get_service_status_v1_status_services_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceStatusResponse"}}}}}}},"/v1/status/uptime-history":{"get":{"tags":["Status","status"],"summary":"Get Uptime History","description":"Get daily uptime history - uses historical data when available,\nreturns null uptime when no data exists yet.\n\nPublic endpoint - no authentication required.","operationId":"get_uptime_history_v1_status_uptime_history_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UptimeHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/status/metrics":{"get":{"tags":["Status","status"],"summary":"Get Status Metrics","description":"Get real-time operational metrics.\n\nPublic endpoint - no authentication required.","operationId":"get_status_metrics_v1_status_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusMetricsResponse"}}}}}}},"/v1/status/incidents":{"get":{"tags":["Status","status"],"summary":"Get Incidents","description":"Get recent incidents and maintenance events.\n\nPublic endpoint - no authentication required.","operationId":"get_incidents_v1_status_incidents_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":90,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IncidentsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/status/summary":{"get":{"tags":["Status","status"],"summary":"Get Status Summary","description":"Get comprehensive status summary - one call for everything.\n\nPublic endpoint - no authentication required.","operationId":"get_status_summary_v1_status_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusSummaryResponse"}}}}}}},"/v1/integrations/zapier/hooks/subscribe":{"post":{"tags":["Integrations - Zapier","Integrations - Zapier"],"summary":"Create Subscription","description":"Create a Zapier REST hook subscription.\n\nZapier calls this when a user enables a trigger in their Zap.","operationId":"create_subscription_v1_integrations_zapier_hooks_subscribe_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__api__v1__integrations__zapier__SubscribeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscribeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/zapier/hooks/subscribe/{subscription_id}":{"delete":{"tags":["Integrations - Zapier","Integrations - Zapier"],"summary":"Delete Subscription","description":"Remove a Zapier REST hook subscription.\n\nZapier calls this when a user disables a trigger in their Zap.","operationId":"delete_subscription_v1_integrations_zapier_hooks_subscribe__subscription_id__delete","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"integer","title":"Subscription Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/zapier/hooks/subscriptions":{"get":{"tags":["Integrations - Zapier","Integrations - Zapier"],"summary":"List Subscriptions","description":"List all active Zapier subscriptions for the authenticated user.","operationId":"list_subscriptions_v1_integrations_zapier_hooks_subscriptions_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/zapier/actions/run-scan":{"post":{"tags":["Integrations - Zapier","Integrations - Zapier"],"summary":"Run Scan","description":"Submit a domain for scanning.\n\nReturns the queued job info. Poll /actions/report/{job_id} to get\nresults once the scan completes.","operationId":"run_scan_v1_integrations_zapier_actions_run_scan_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunScanRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/zapier/actions/report/{job_id}":{"get":{"tags":["Integrations - Zapier","Integrations - Zapier"],"summary":"Get Report","description":"Get a scan report by job ID.","operationId":"get_report_v1_integrations_zapier_actions_report__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/zapier/searches/find-scan":{"get":{"tags":["Integrations - Zapier","Integrations - Zapier"],"summary":"Find Scan","description":"Find the most recent completed scan for a domain.\n\nReturns an array (Zapier search convention) with 0 or 1 items.","operationId":"find_scan_v1_integrations_zapier_searches_find_scan_get","parameters":[{"name":"domain","in":"query","required":true,"schema":{"type":"string","description":"Domain to search for","title":"Domain"},"description":"Domain to search for"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/zapier/searches/domain-score":{"get":{"tags":["Integrations - Zapier","Integrations - Zapier"],"summary":"Get Domain Score","description":"Get the latest security score for a domain.\n\nReturns an array (Zapier search convention) with 0 or 1 items.","operationId":"get_domain_score_v1_integrations_zapier_searches_domain_score_get","parameters":[{"name":"domain","in":"query","required":true,"schema":{"type":"string","description":"Domain to get score for","title":"Domain"},"description":"Domain to get score for"},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/zapier/triggers/{event_type}/sample":{"get":{"tags":["Integrations - Zapier","Integrations - Zapier"],"summary":"Get Trigger Sample","description":"Return sample data for a Zapier trigger.\n\nZapier calls this when a user clicks \"Test trigger\" during Zap setup.\nReturns a single-item array per Zapier convention.","operationId":"get_trigger_sample_v1_integrations_zapier_triggers__event_type__sample_get","parameters":[{"name":"event_type","in":"path","required":true,"schema":{"type":"string","title":"Event Type"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"compliancelayer_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compliancelayer Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/newsletter/subscribe":{"post":{"tags":["Newsletter"],"summary":"Subscribe Newsletter","operationId":"subscribe_newsletter_v1_newsletter_subscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/src__api__v1__newsletter__SubscribeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/newsletter/unsubscribe":{"get":{"tags":["Newsletter"],"summary":"Unsubscribe Newsletter","operationId":"unsubscribe_newsletter_v1_newsletter_unsubscribe_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"}}}}}}}},"components":{"schemas":{"APIKeyResponse":{"properties":{"api_key":{"type":"string","title":"Api Key"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["api_key","created_at"],"title":"APIKeyResponse"},"AddDomainRequest":{"properties":{"domain":{"type":"string","title":"Domain"},"scan_frequency":{"type":"string","title":"Scan Frequency","default":"daily"},"alert_on_score_drop":{"type":"boolean","title":"Alert On Score Drop","default":true},"alert_threshold":{"type":"integer","title":"Alert Threshold","default":10}},"type":"object","required":["domain"],"title":"AddDomainRequest"},"AlertPreferencesRequest":{"properties":{"score_drop":{"type":"boolean","title":"Score Drop","default":true},"critical_issue":{"type":"boolean","title":"Critical Issue","default":true},"cert_expiry":{"type":"boolean","title":"Cert Expiry","default":true},"config_change":{"type":"boolean","title":"Config Change","default":true}},"type":"object","title":"AlertPreferencesRequest"},"AlertPreferencesResponse":{"properties":{"score_drop":{"type":"boolean","title":"Score Drop"},"critical_issue":{"type":"boolean","title":"Critical Issue"},"cert_expiry":{"type":"boolean","title":"Cert Expiry"},"config_change":{"type":"boolean","title":"Config Change"}},"type":"object","required":["score_drop","critical_issue","cert_expiry","config_change"],"title":"AlertPreferencesResponse"},"AlertResponse":{"properties":{"id":{"type":"integer","title":"Id"},"alert_type":{"type":"string","title":"Alert Type"},"severity":{"type":"string","title":"Severity"},"title":{"type":"string","title":"Title"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"old_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Old Value"},"new_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Value"},"scan_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Scan Id"},"domain_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Domain Id"},"is_read":{"type":"boolean","title":"Is Read"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","alert_type","severity","title","message","is_read","created_at"],"title":"AlertResponse"},"BatchScanRequest":{"properties":{"domains":{"items":{"type":"string"},"type":"array","maxItems":50,"minItems":1,"title":"Domains","description":"List of domains to scan (max 50)"},"sort_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort By","description":"Sort results by: 'risk' (worst first), 'score' (best first), 'domain'","default":"risk"}},"type":"object","required":["domains"],"title":"BatchScanRequest"},"BatchScanResponse":{"properties":{"total":{"type":"integer","title":"Total"},"summary":{"$ref":"#/components/schemas/BatchSummary"},"results":{"items":{"$ref":"#/components/schemas/DomainScanResult"},"type":"array","title":"Results"}},"type":"object","required":["total","summary","results"],"title":"BatchScanResponse"},"BatchSummary":{"properties":{"avg_score":{"type":"integer","title":"Avg Score","default":0},"critical_risk":{"type":"integer","title":"Critical Risk","default":0},"passing":{"type":"integer","title":"Passing","default":0},"grade_distribution":{"additionalProperties":{"type":"integer"},"type":"object","title":"Grade Distribution","default":{}}},"type":"object","title":"BatchSummary"},"Body_change_password_v1_auth_password_change_post":{"properties":{"current_password":{"type":"string","title":"Current Password","description":"Current password"},"new_password":{"type":"string","minLength":12,"title":"New Password","description":"New password"}},"type":"object","required":["current_password","new_password"],"title":"Body_change_password_v1_auth_password_change_post"},"CheckoutRequest":{"properties":{"plan":{"type":"string","title":"Plan"},"success_url":{"type":"string","title":"Success Url"},"cancel_url":{"type":"string","title":"Cancel Url"},"yearly":{"type":"boolean","title":"Yearly","default":false}},"type":"object","required":["plan","success_url","cancel_url"],"title":"CheckoutRequest"},"CheckoutResponse":{"properties":{"checkout_url":{"type":"string","title":"Checkout Url"}},"type":"object","required":["checkout_url"],"title":"CheckoutResponse"},"CompareRequest":{"properties":{"domains":{"items":{"type":"string"},"type":"array","maxItems":5,"minItems":2,"title":"Domains","description":"2-5 domains to compare side by side"}},"type":"object","required":["domains"],"title":"CompareRequest"},"CompareResponse":{"properties":{"ranked":{"items":{"$ref":"#/components/schemas/RankedDomain"},"type":"array","title":"Ranked"},"winner":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Winner"},"score_gap":{"type":"integer","title":"Score Gap","default":0},"module_comparison":{"additionalProperties":{"additionalProperties":{"anyOf":[{"type":"integer"},{"type":"null"}]},"type":"object"},"type":"object","title":"Module Comparison"},"full_results":{"items":{"$ref":"#/components/schemas/DomainScanResult"},"type":"array","title":"Full Results"}},"type":"object","required":["ranked","module_comparison","full_results"],"title":"CompareResponse"},"DomainListResponse":{"properties":{"domains":{"items":{"$ref":"#/components/schemas/DomainResponse"},"type":"array","title":"Domains"},"total":{"type":"integer","title":"Total"},"limit_used":{"type":"integer","title":"Limit Used"},"limit_max":{"type":"integer","title":"Limit Max"}},"type":"object","required":["domains","total","limit_used","limit_max"],"title":"DomainListResponse"},"DomainModuleScores":{"properties":{"score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Score"},"grade":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grade"},"issues":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Issues"}},"type":"object","title":"DomainModuleScores"},"DomainResponse":{"properties":{"id":{"type":"integer","title":"Id"},"domain":{"type":"string","title":"Domain"},"last_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Score"},"last_grade":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Grade"},"scan_frequency":{"type":"string","title":"Scan Frequency"},"alert_on_score_drop":{"type":"boolean","title":"Alert On Score Drop"},"alert_threshold":{"type":"integer","title":"Alert Threshold"},"last_scanned_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Scanned At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","domain","last_score","last_grade","scan_frequency","alert_on_score_drop","alert_threshold","last_scanned_at","created_at"],"title":"DomainResponse"},"DomainScanJobResponse":{"properties":{"domain_id":{"type":"integer","title":"Domain Id"},"job_id":{"type":"integer","title":"Job Id"},"domain":{"type":"string","title":"Domain"},"status":{"type":"string","title":"Status"},"source":{"type":"string","title":"Source"},"queued_at":{"type":"string","format":"date-time","title":"Queued At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"failure_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Reason"}},"type":"object","required":["domain_id","job_id","domain","status","source","queued_at"],"title":"DomainScanJobResponse"},"DomainScanResult":{"properties":{"domain":{"type":"string","title":"Domain"},"overall_score":{"type":"integer","title":"Overall Score","default":0},"overall_grade":{"type":"string","title":"Overall Grade","default":"F"},"modules":{"additionalProperties":{"$ref":"#/components/schemas/DomainModuleScores"},"type":"object","title":"Modules","default":{}},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["domain"],"title":"DomainScanResult"},"EmailDetailResponse":{"properties":{"id":{"type":"integer","title":"Id"},"to_email":{"type":"string","title":"To Email"},"from_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Email"},"reply_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reply To"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"html_body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Html Body"},"text_body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text Body"},"template_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Name"},"context":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Context"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"status":{"type":"string","title":"Status"},"retry_count":{"type":"integer","title":"Retry Count","default":0},"max_retries":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Retries"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"smtp_error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Error Code"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"sent_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sent At"},"failed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failed At"},"next_retry_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Retry At"}},"type":"object","required":["id","to_email","status"],"title":"EmailDetailResponse"},"EmailHistoryItem":{"properties":{"id":{"type":"integer","title":"Id"},"to_email":{"type":"string","title":"To Email"},"from_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Email"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"template_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Name"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"status":{"type":"string","title":"Status"},"retry_count":{"type":"integer","title":"Retry Count","default":0},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"sent_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sent At"},"failed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failed At"}},"type":"object","required":["id","to_email","status"],"title":"EmailHistoryItem"},"EmailHistoryResponse":{"properties":{"emails":{"items":{"$ref":"#/components/schemas/EmailHistoryItem"},"type":"array","title":"Emails"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["emails","total","limit","offset"],"title":"EmailHistoryResponse"},"EmailQueueStatsResponse":{"properties":{"pending":{"type":"integer","title":"Pending","default":0},"sending":{"type":"integer","title":"Sending","default":0},"sent_24h":{"type":"integer","title":"Sent 24H","default":0},"sent_inline":{"type":"integer","title":"Sent Inline","default":0},"failed":{"type":"integer","title":"Failed","default":0},"retry":{"type":"integer","title":"Retry","default":0},"oldest_pending_age_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Oldest Pending Age Seconds"}},"type":"object","title":"EmailQueueStatsResponse"},"FreeScanResponse":{"properties":{"domain":{"type":"string","title":"Domain"},"score":{"type":"integer","title":"Score"},"grade":{"type":"string","title":"Grade"},"scanned_at":{"type":"string","format":"date-time","title":"Scanned At"},"modules":{"additionalProperties":{"$ref":"#/components/schemas/ModuleResult"},"type":"object","title":"Modules"},"total_issues":{"type":"integer","title":"Total Issues"},"critical_issues":{"type":"integer","title":"Critical Issues"},"high_issues":{"type":"integer","title":"High Issues"},"top_issues":{"items":{"$ref":"#/components/schemas/IssueResponse"},"type":"array","title":"Top Issues"},"upgrade_cta":{"type":"object","title":"Upgrade Cta"}},"type":"object","required":["domain","score","grade","scanned_at","modules","total_issues","critical_issues","high_issues","top_issues","upgrade_cta"],"title":"FreeScanResponse","description":"Limited scan response for free tier."},"FullScanResponse":{"properties":{"job_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Job Id"},"domain":{"type":"string","title":"Domain"},"score":{"type":"integer","title":"Score"},"grade":{"type":"string","title":"Grade"},"risk_level":{"type":"string","title":"Risk Level"},"scanned_at":{"type":"string","format":"date-time","title":"Scanned At"},"scan_duration_ms":{"type":"integer","title":"Scan Duration Ms"},"modules":{"additionalProperties":{"$ref":"#/components/schemas/ModuleResult"},"type":"object","title":"Modules"},"issues":{"items":{"$ref":"#/components/schemas/IssueResponse"},"type":"array","title":"Issues"},"total_issues":{"type":"integer","title":"Total Issues"},"critical_issues":{"type":"integer","title":"Critical Issues"},"high_issues":{"type":"integer","title":"High Issues"},"medium_issues":{"type":"integer","title":"Medium Issues"},"low_issues":{"type":"integer","title":"Low Issues"},"recommendations":{"items":{"type":"string"},"type":"array","title":"Recommendations"},"compliance":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Compliance"},"raw_results":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Raw Results"}},"type":"object","required":["domain","score","grade","risk_level","scanned_at","scan_duration_ms","modules","issues","total_issues","critical_issues","high_issues","medium_issues","low_issues","recommendations"],"title":"FullScanResponse","description":"Full scan response for authenticated users."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IncidentItem":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"status":{"type":"string","title":"Status"},"severity":{"type":"string","title":"Severity"},"public_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Message"},"impact_services":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Impact Services"},"impact_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Impact Description"},"incident_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Incident Type"},"started_at":{"type":"string","title":"Started At"},"resolved_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolved At"},"duration_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Minutes"}},"type":"object","required":["id","title","status","severity","started_at"],"title":"IncidentItem"},"IncidentsResponse":{"properties":{"incidents":{"items":{"$ref":"#/components/schemas/IncidentItem"},"type":"array","title":"Incidents"},"total":{"type":"integer","title":"Total"},"days":{"type":"integer","title":"Days"}},"type":"object","required":["incidents","total","days"],"title":"IncidentsResponse"},"IssueResponse":{"properties":{"severity":{"type":"string","title":"Severity"},"finding":{"type":"string","title":"Finding"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Remediation"}},"type":"object","required":["severity","finding"],"title":"IssueResponse"},"LoginRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"LoginRequest"},"ModuleResult":{"properties":{"score":{"type":"integer","title":"Score"},"grade":{"type":"string","title":"Grade"},"weight":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Weight"},"issues":{"anyOf":[{"items":{"$ref":"#/components/schemas/IssueResponse"},"type":"array"},{"type":"null"}],"title":"Issues"},"detail":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Detail"}},"type":"object","required":["score","grade"],"title":"ModuleResult"},"OpsAlertItem":{"properties":{"id":{"type":"integer","title":"Id"},"fingerprint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fingerprint"},"alert_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alert Type"},"severity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Severity"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"metrics":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Metrics"},"email_sent":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Sent"},"email_sent_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email Sent At"},"recipients":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Recipients"},"triggered_at":{"type":"string","title":"Triggered At"},"resolved_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolved At"}},"type":"object","required":["id","triggered_at"],"title":"OpsAlertItem"},"OpsAlertsResponse":{"properties":{"alerts":{"items":{"$ref":"#/components/schemas/OpsAlertItem"},"type":"array","title":"Alerts"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["alerts","total"],"title":"OpsAlertsResponse"},"PasswordResetConfirm":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"token":{"type":"string","title":"Token"},"new_password":{"type":"string","minLength":12,"title":"New Password"}},"type":"object","required":["email","token","new_password"],"title":"PasswordResetConfirm"},"PasswordResetRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["email"],"title":"PasswordResetRequest"},"PortalResponse":{"properties":{"portal_url":{"type":"string","title":"Portal Url"}},"type":"object","required":["portal_url"],"title":"PortalResponse"},"RankedDomain":{"properties":{"rank":{"type":"integer","title":"Rank"},"domain":{"type":"string","title":"Domain"},"overall_score":{"type":"integer","title":"Overall Score"},"overall_grade":{"type":"string","title":"Overall Grade"}},"type":"object","required":["rank","domain","overall_score","overall_grade"],"title":"RankedDomain"},"ResetPasswordRequest":{"properties":{"token":{"type":"string","title":"Token"},"new_password":{"type":"string","minLength":12,"title":"New Password"}},"type":"object","required":["token","new_password"],"title":"ResetPasswordRequest"},"RunScanRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Domain to scan (e.g., example.com)"}},"type":"object","required":["domain"],"title":"RunScanRequest"},"ScanHistoryEntry":{"properties":{"job_id":{"type":"integer","title":"Job Id"},"legacy_scan_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Legacy Scan Id"},"domain":{"type":"string","title":"Domain"},"score":{"type":"integer","title":"Score"},"grade":{"type":"string","title":"Grade"},"risk_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Risk Level"},"status":{"type":"string","title":"Status"},"source":{"type":"string","title":"Source"},"scanned_at":{"type":"string","format":"date-time","title":"Scanned At"},"scan_duration_ms":{"type":"integer","title":"Scan Duration Ms"},"total_issues":{"type":"integer","title":"Total Issues"},"critical_issues":{"type":"integer","title":"Critical Issues"},"high_issues":{"type":"integer","title":"High Issues"}},"type":"object","required":["job_id","domain","score","grade","status","source","scanned_at","scan_duration_ms","total_issues","critical_issues","high_issues"],"title":"ScanHistoryEntry"},"ScanHistoryResponse":{"properties":{"scans":{"items":{"$ref":"#/components/schemas/ScanHistoryEntry"},"type":"array","title":"Scans"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["scans","total"],"title":"ScanHistoryResponse"},"ScanJobResponse":{"properties":{"job_id":{"type":"integer","title":"Job Id"},"legacy_scan_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Legacy Scan Id"},"domain":{"type":"string","title":"Domain"},"status":{"type":"string","title":"Status"},"source":{"type":"string","title":"Source"},"queued_at":{"type":"string","format":"date-time","title":"Queued At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"failure_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Reason"},"requested_modules":{"items":{"type":"string"},"type":"array","title":"Requested Modules"},"result":{"anyOf":[{"$ref":"#/components/schemas/ScanJobResultSummary"},{"type":"null"}]}},"type":"object","required":["job_id","domain","status","source","queued_at","requested_modules"],"title":"ScanJobResponse"},"ScanJobResultSummary":{"properties":{"score":{"type":"integer","title":"Score"},"grade":{"type":"string","title":"Grade"},"risk_level":{"type":"string","title":"Risk Level"},"total_issues":{"type":"integer","title":"Total Issues"},"critical_issues":{"type":"integer","title":"Critical Issues"},"high_issues":{"type":"integer","title":"High Issues"},"medium_issues":{"type":"integer","title":"Medium Issues"},"low_issues":{"type":"integer","title":"Low Issues"},"scan_duration_ms":{"type":"integer","title":"Scan Duration Ms"}},"type":"object","required":["score","grade","risk_level","total_issues","critical_issues","high_issues","medium_issues","low_issues","scan_duration_ms"],"title":"ScanJobResultSummary"},"ScanRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Domain to scan (e.g., example.com)"}},"type":"object","required":["domain"],"title":"ScanRequest","description":"Request body for domain scan."},"ServiceStatusItem":{"properties":{"name":{"type":"string","title":"Name"},"display_name":{"type":"string","title":"Display Name"},"description":{"type":"string","title":"Description"},"status":{"type":"string","title":"Status"},"uptime_30d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Uptime 30D"},"latency_p50":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latency P50"},"last_checked":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Checked"},"metadata":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["name","display_name","description","status"],"title":"ServiceStatusItem"},"ServiceStatusResponse":{"properties":{"services":{"items":{"$ref":"#/components/schemas/ServiceStatusItem"},"type":"array","title":"Services"},"overall_status":{"type":"string","title":"Overall Status"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["services","overall_status","timestamp"],"title":"ServiceStatusResponse"},"SignupRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","minLength":12,"title":"Password","description":"Password must be at least 12 characters"}},"type":"object","required":["email","password"],"title":"SignupRequest"},"StatusMetricsResponse":{"properties":{"current_uptime":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Uptime"},"avg_response_ms":{"type":"integer","title":"Avg Response Ms","default":0},"active_scans":{"type":"integer","title":"Active Scans","default":0},"requests_per_sec":{"type":"number","title":"Requests Per Sec","default":0},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["timestamp"],"title":"StatusMetricsResponse"},"StatusSummaryResponse":{"properties":{"services":{"items":{"$ref":"#/components/schemas/ServiceStatusItem"},"type":"array","title":"Services"},"overall_status":{"type":"string","title":"Overall Status"},"metrics":{"$ref":"#/components/schemas/StatusMetricsResponse"},"incidents":{"items":{"$ref":"#/components/schemas/IncidentItem"},"type":"array","title":"Incidents"},"timestamp":{"type":"string","title":"Timestamp"}},"type":"object","required":["services","overall_status","metrics","incidents","timestamp"],"title":"StatusSummaryResponse"},"SubscribeResponse":{"properties":{"id":{"type":"integer","title":"Id"}},"type":"object","required":["id"],"title":"SubscribeResponse"},"SubscriptionResponse":{"properties":{"plan":{"type":"string","title":"Plan"},"status":{"type":"string","title":"Status"},"scans_this_month":{"type":"integer","title":"Scans This Month"},"scan_limit":{"type":"integer","title":"Scan Limit"},"domain_limit":{"type":"integer","title":"Domain Limit"}},"type":"object","required":["plan","status","scans_this_month","scan_limit","domain_limit"],"title":"SubscriptionResponse"},"TokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"expires_in":{"type":"integer","title":"Expires In","default":86400},"csrf_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Csrf Token"}},"type":"object","required":["access_token"],"title":"TokenResponse"},"UptimeDayEntry":{"properties":{"date":{"type":"string","title":"Date"},"uptime":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Uptime"},"checks":{"type":"integer","title":"Checks","default":0}},"type":"object","required":["date"],"title":"UptimeDayEntry"},"UptimeHistoryResponse":{"properties":{"history":{"additionalProperties":{"items":{"$ref":"#/components/schemas/UptimeDayEntry"},"type":"array"},"type":"object","title":"History"},"days":{"type":"integer","title":"Days"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"}},"type":"object","required":["history","days","start_date","end_date"],"title":"UptimeHistoryResponse"},"UserResponse":{"properties":{"id":{"type":"integer","title":"Id"},"email":{"type":"string","title":"Email"},"plan":{"type":"string","title":"Plan"},"api_key":{"type":"string","title":"Api Key"},"scans_this_month":{"type":"integer","title":"Scans This Month"},"scan_limit":{"type":"integer","title":"Scan Limit"},"scans_remaining":{"type":"integer","title":"Scans Remaining"},"domain_limit":{"type":"integer","title":"Domain Limit"},"subscription_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subscription Status","default":"active"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"email_verified":{"type":"boolean","title":"Email Verified","default":false},"oauth_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oauth Provider"}},"type":"object","required":["id","email","plan","api_key","scans_this_month","scan_limit","scans_remaining","domain_limit","created_at"],"title":"UserResponse"},"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"},"WebhookDeliveryResponse":{"properties":{"id":{"type":"integer","title":"Id"},"event_id":{"type":"string","title":"Event Id"},"event_type":{"type":"string","title":"Event Type"},"status":{"type":"string","title":"Status"},"retry_count":{"type":"integer","title":"Retry Count"},"http_status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Http Status Code"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sent At"},"delivered_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Delivered At"},"failed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Failed At"}},"type":"object","required":["id","event_id","event_type","status","retry_count","http_status_code","error_message","created_at","sent_at","delivered_at","failed_at"],"title":"WebhookDeliveryResponse","description":"Response model for webhook delivery."},"WebhookEndpointCreate":{"properties":{"url":{"type":"string","maxLength":512,"minLength":10,"title":"Url","description":"HTTPS URL to receive webhooks"},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Description","description":"Optional description"},"enabled_events":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Enabled Events","description":"List of event types to subscribe to"}},"type":"object","required":["url","enabled_events"],"title":"WebhookEndpointCreate","description":"Request model for creating a webhook endpoint."},"WebhookEndpointListResponse":{"properties":{"id":{"type":"integer","title":"Id"},"url":{"type":"string","title":"Url"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"enabled_events":{"items":{"type":"string"},"type":"array","title":"Enabled Events"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"last_delivery_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Delivery At"},"last_success_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Success At"},"consecutive_failures":{"type":"integer","title":"Consecutive Failures"}},"type":"object","required":["id","url","description","enabled_events","is_active","created_at","updated_at","last_delivery_at","last_success_at","consecutive_failures"],"title":"WebhookEndpointListResponse","description":"Response model for webhook endpoint list (without secret)."},"WebhookEndpointResponse":{"properties":{"id":{"type":"integer","title":"Id"},"url":{"type":"string","title":"Url"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"enabled_events":{"items":{"type":"string"},"type":"array","title":"Enabled Events"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"last_delivery_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Delivery At"},"last_success_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Success At"},"consecutive_failures":{"type":"integer","title":"Consecutive Failures"},"secret":{"type":"string","title":"Secret"}},"type":"object","required":["id","url","description","enabled_events","is_active","created_at","updated_at","last_delivery_at","last_success_at","consecutive_failures","secret"],"title":"WebhookEndpointResponse","description":"Response model for webhook endpoint."},"WebhookEndpointUpdate":{"properties":{"url":{"anyOf":[{"type":"string","maxLength":512,"minLength":10},{"type":"null"}],"title":"Url"},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Description"},"enabled_events":{"anyOf":[{"items":{"type":"string"},"type":"array","minItems":1},{"type":"null"}],"title":"Enabled Events"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"WebhookEndpointUpdate","description":"Request model for updating a webhook endpoint."},"WebhookTestRequest":{"properties":{"event_type":{"type":"string","title":"Event Type","description":"Event type to simulate","default":"scan.completed"}},"type":"object","title":"WebhookTestRequest","description":"Request model for testing a webhook endpoint."},"src__api__v1__integrations__zapier__SubscribeRequest":{"properties":{"hookUrl":{"type":"string","title":"Hookurl","description":"Zapier webhook URL to receive events"},"event":{"type":"string","title":"Event","description":"Event type (scan.completed, score.changed, alert.triggered)"}},"type":"object","required":["hookUrl","event"],"title":"SubscribeRequest","description":"Body for creating a Zapier REST hook subscription."},"src__api__v1__newsletter__SubscribeRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"source":{"type":"string","title":"Source","default":"blog_sidebar"}},"type":"object","required":["email"],"title":"SubscribeRequest"}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","description":"API key (cl_...) or JWT token in the Authorization header."},"ApiKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Alternative: pass your cl_ API key via X-API-Key header."}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]}]}