{"openapi":"3.1.0","info":{"title":"SEOPro AI","version":"1.0.0","description":"The SEOPro AI REST API. Every operation available in the dashboard is available\nhere: connecting websites, researching keywords, generating and publishing SEO\narticles, earning backlinks, submitting URLs for indexing, and reporting on\nvisibility in Google and AI answer engines.\n\n## Authentication\n\nSend an API key as a bearer token:\n\n    Authorization: Bearer sk_your_api_key\n\nKeys are created at https://seoproai.co/settings?tab=api-keys. Browser sessions instead\nidentify themselves with an `X-User-Id` header, which is not available to\nthird-party clients.\n\n## For AI agents\n\nA remote Model Context Protocol server wraps the same operations at\n`https://api.seoproai.co/api/mcp` (streamable HTTP). It accepts the API key above, or an OAuth 2.1\nauthorization-code flow with PKCE discovered from\n`https://api.seoproai.co/.well-known/oauth-protected-resource/api/mcp`.\n\nFurther entry points: `https://seoproai.co/llms.txt` for a curated index of the site,\n`https://seoproai.co/.well-known/agents.json` for capabilities and limits, and\n`https://seoproai.co/.well-known/mcp.json` for the MCP server card.\n\n## Rate limits\n\nEach API key carries hourly, daily and monthly request quotas. Exceeding one\nreturns `429`; inspect current usage at `/api/keys/{key_id}/usage` and retry\nafter the window resets.","contact":{"name":"SEOPro AI support","email":"hi@seoproai.co","url":"https://seoproai.co/contact"},"termsOfService":"https://seoproai.co/terms-conditions","x-mcp-server":"https://api.seoproai.co/api/mcp","x-llms-txt":"https://seoproai.co/llms.txt"},"paths":{"/api/health":{"get":{"summary":"Health Check","operationId":"health_check_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/api/users/me":{"get":{"summary":"Get User Profile","description":"Get the current user profile including account type for frontend compatibility","operationId":"get_user_profile_api_users_me_get","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites":{"get":{"summary":"Get Websites","operationId":"get_websites_api_websites_get","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Website"},"title":"Response Get Websites Api Websites Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Create Website","operationId":"create_website_api_websites_post","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebsiteCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Website"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}":{"delete":{"summary":"Delete Website","operationId":"delete_website_api_websites__website_id__delete","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"Update Website","operationId":"update_website_api_websites__website_id__patch","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebsiteUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Website"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Get Website","operationId":"get_website_api_websites__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Website"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/analyze":{"post":{"summary":"Analyze Website","operationId":"analyze_website_api_websites_analyze_post","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebsiteAnalyzeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebsiteAnalyzeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/re-analyze":{"post":{"summary":"Process Website Analysis","operationId":"process_website_analysis_api_websites__website_id__re_analyze_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebsiteAnalyzeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Website"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/autopilot":{"patch":{"summary":"Update Autopilot","operationId":"update_autopilot_api_websites__website_id__autopilot_patch","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutopilotUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Website"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/autopilot-preferences":{"patch":{"summary":"Update Autopilot Preferences","description":"Update autopilot scheduling preferences for a website.","operationId":"update_autopilot_preferences_api_websites__website_id__autopilot_preferences_patch","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutopilotPreferences"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Website"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/autopilot-status":{"get":{"summary":"Get Autopilot Status","operationId":"get_autopilot_status_api_websites__website_id__autopilot_status_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/stats":{"get":{"summary":"Get Website Stats","operationId":"get_website_stats_api_websites__website_id__stats_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/force-autopilot":{"post":{"summary":"Force Autopilot Run","description":"Force the actual autopilot process to run immediately, respecting time checks","operationId":"force_autopilot_run_api_websites_force_autopilot_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/websites/{website_id}/blog-drafts":{"get":{"summary":"Get Website Blog Drafts","operationId":"get_website_blog_drafts_api_websites__website_id__blog_drafts_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Blog"},"title":"Response Get Website Blog Drafts Api Websites  Website Id  Blog Drafts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/subscriptions/{subscription_id}/account-type":{"patch":{"summary":"Update Subscription Account Type","description":"Admin endpoint to update a subscription's account type (company/agency)","operationId":"update_subscription_account_type_api_admin_subscriptions__subscription_id__account_type_patch","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"string","title":"Subscription Id"}},{"name":"account_type","in":"query","required":true,"schema":{"type":"string","title":"Account Type"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/test/webflow":{"post":{"summary":"Test Webflow Connection","operationId":"test_webflow_connection_api_test_webflow_post","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebflowTestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebflowTestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/integrations/api-key":{"post":{"summary":"Generate Integration Api Key Endpoint","description":"Generate or regenerate an API key for supported integrations.","operationId":"generate_integration_api_key_endpoint_api_websites__website_id__integrations_api_key_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationApiKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationApiKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/test":{"post":{"summary":"Test Webhook Endpoint","description":"Send a test payload to the provided webhook endpoint.\n\nA failed delivery is reported as HTTP 200 with ``success=False`` so the\nclient can render the downstream reason (status code + body snippet) rather\nthan a generic \"Webhook test failed\".","operationId":"test_webhook_endpoint_api_webhooks_test_post","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/keywords":{"get":{"summary":"Get Website Keywords","operationId":"get_website_keywords_api_websites__website_id__keywords_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Website Keywords Api Websites  Website Id  Keywords Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Create Website Keyword","operationId":"create_website_keyword_api_websites__website_id__keywords_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Keyword"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Website Keyword Api Websites  Website Id  Keywords Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/generate-keyword-plan-with-input":{"post":{"summary":"Generate Keyword Plan With Input","description":"Generate a 30-day keyword plan with user-provided topics and custom instructions.","operationId":"generate_keyword_plan_with_input_api_websites__website_id__generate_keyword_plan_with_input_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPlanRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Generate Keyword Plan With Input Api Websites  Website Id  Generate Keyword Plan With Input Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/generate-initial-plan-async":{"post":{"summary":"Generate Initial Plan Async","description":"Triggers the generation of the initial 30-day keyword plan in the background.","operationId":"generate_initial_plan_async_api_websites__website_id__generate_initial_plan_async_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Generate Initial Plan Async Api Websites  Website Id  Generate Initial Plan Async Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/keyword-plan-status":{"get":{"summary":"Get Keyword Plan Status","description":"Lightweight status endpoint polled by the content planner.\n\nReturns is_generating=true until any keywords exist for the website. If the\nsaved website analysis is a known failed placeholder, returns a stable\nanalysis_failed response so the frontend can stop polling and show guidance.","operationId":"get_keyword_plan_status_api_websites__website_id__keyword_plan_status_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Keyword Plan Status Api Websites  Website Id  Keyword Plan Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/keywords/{keyword_id}":{"delete":{"summary":"Delete Website Keyword","operationId":"delete_website_keyword_api_websites__website_id__keywords__keyword_id__delete","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"keyword_id","in":"path","required":true,"schema":{"type":"integer","title":"Keyword Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Website Keyword Api Websites  Website Id  Keywords  Keyword Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"Update Keyword","description":"Update a keyword with blog_id and status","operationId":"update_keyword_api_websites__website_id__keywords__keyword_id__patch","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"keyword_id","in":"path","required":true,"schema":{"type":"integer","title":"Keyword Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/keywords/extract":{"post":{"summary":"Extract Keywords","description":"Extract keywords from provided content text using AI analysis.","operationId":"extract_keywords_api_keywords_extract_post","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentExtractionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Extract Keywords Api Keywords Extract Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/gsc-status":{"get":{"summary":"Get Gsc Status","description":"Return detailed GSC connection status for the website.","operationId":"get_gsc_status_api_websites__website_id__gsc_status_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/gsc-credentials":{"delete":{"summary":"Delete Gsc Credentials","description":"Remove stored GSC OAuth credentials and reset related fields.","operationId":"delete_gsc_credentials_api_websites__website_id__gsc_credentials_delete","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/ga4-status":{"get":{"summary":"Get Ga4 Status","description":"Return GA4 connection status.","operationId":"get_ga4_status_api_websites__website_id__ga4_status_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/select-ga4-property":{"post":{"summary":"Select Ga4 Property","description":"Store GA4 property ID for a website.","operationId":"select_ga4_property_api_websites__website_id__select_ga4_property_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/ga4-credentials":{"delete":{"summary":"Delete Ga4 Credentials","description":"Remove stored GA4 OAuth credentials.","operationId":"delete_ga4_credentials_api_websites__website_id__ga4_credentials_delete","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/ga4-properties":{"get":{"summary":"Get Ga4 Properties","description":"Fetch available GA4 properties for the authenticated user.","operationId":"get_ga4_properties_api_websites__website_id__ga4_properties_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/gsc-properties":{"get":{"summary":"Get Gsc Properties","description":"Get all Search Console properties available to the authenticated user.","operationId":"get_gsc_properties_api_websites__website_id__gsc_properties_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/select-gsc-property":{"post":{"summary":"Select Gsc Property","description":"Select a Search Console property for this website and configure sitemap.","operationId":"select_gsc_property_api_websites__website_id__select_gsc_property_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/gsc-sitemaps":{"get":{"summary":"Get Gsc Sitemaps","description":"Get sitemaps for the currently selected Search Console property.","operationId":"get_gsc_sitemaps_api_websites__website_id__gsc_sitemaps_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/top-pages":{"get":{"summary":"Get Website Top Pages","description":"Get audit page selections for a website.","operationId":"get_website_top_pages_api_websites__website_id__top_pages_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":25,"title":"Limit"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/update-sitemap":{"post":{"summary":"Update Sitemap Selection","description":"Update the selected sitemap for indexing.","operationId":"update_sitemap_selection_api_websites__website_id__update_sitemap_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/blog-drafts":{"get":{"summary":"Get Blog Drafts","operationId":"get_blog_drafts_api_blog_drafts_get","parameters":[{"name":"website_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Website Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Blog"},"title":"Response Get Blog Drafts Api Blog Drafts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/blog-drafts/{blog_id}":{"get":{"summary":"Get Blog Draft By Id","description":"Get a single blog draft by ID.\n\nSupports both API key and JWT authentication.\nReturns the complete blog data including HTML content.","operationId":"get_blog_draft_by_id_api_blog_drafts__blog_id__get","parameters":[{"name":"blog_id","in":"path","required":true,"schema":{"type":"integer","title":"Blog Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Blog"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/blog-drafts/{draft_id}":{"patch":{"summary":"Update Blog Draft","operationId":"update_blog_draft_api_blog_drafts__draft_id__patch","parameters":[{"name":"draft_id","in":"path","required":true,"schema":{"type":"integer","title":"Draft Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogUpdateSchema"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Blog"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/blog-drafts/{blog_id}/regenerate-image":{"post":{"summary":"Regenerate Blog Image","description":"Regenerate the featured image for a blog using optional custom instructions.","operationId":"regenerate_blog_image_api_blog_drafts__blog_id__regenerate_image_post","parameters":[{"name":"blog_id","in":"path","required":true,"schema":{"type":"integer","title":"Blog Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_regenerate_blog_image_api_blog_drafts__blog_id__regenerate_image_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/blog-drafts/{blog_id}/regenerate":{"post":{"summary":"Regenerate Blog Content","description":"Regenerate the blog content using optional custom instructions.","operationId":"regenerate_blog_content_api_blog_drafts__blog_id__regenerate_post","parameters":[{"name":"blog_id","in":"path","required":true,"schema":{"type":"integer","title":"Blog Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_regenerate_blog_content_api_blog_drafts__blog_id__regenerate_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/blog-drafts/{draft_id}/publish":{"post":{"summary":"Publish Blog Draft","description":"FastAPI endpoint wrapper for publish_blog_draft_internal","operationId":"publish_blog_draft_api_blog_drafts__draft_id__publish_post","parameters":[{"name":"draft_id","in":"path","required":true,"schema":{"type":"integer","title":"Draft Id"}},{"name":"website","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Website"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_publish_blog_draft_api_blog_drafts__draft_id__publish_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/blog-drafts/{draft_id}/reject":{"post":{"summary":"Reject Blog Draft","operationId":"reject_blog_draft_api_blog_drafts__draft_id__reject_post","parameters":[{"name":"draft_id","in":"path","required":true,"schema":{"type":"integer","title":"Draft Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_reject_blog_draft_api_blog_drafts__draft_id__reject_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/blog-drafts/{blog_id}/publish-to-platform":{"post":{"summary":"Publish To Platform","description":"Publishes a blog post to the configured platform (HubSpot, WordPress, Webflow).\nWhen ``publish_as_draft`` is True (see ``CMS_DRAFT_SUPPORTED_PLATFORMS`` for\nthe supported integrations),\nthe post will be created as a CMS draft instead of being immediately published.\n\nCan be called in two ways:\n1. As a FastAPI endpoint with blog_id in path\n2. Directly from code with blog_id, platform, platform_config, and db parameters\n\nReturns a dictionary with the result of the publish operation.","operationId":"publish_to_platform_api_blog_drafts__blog_id__publish_to_platform_post","parameters":[{"name":"blog_id","in":"path","required":true,"schema":{"type":"integer","title":"Blog Id"}},{"name":"platform","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform"}},{"name":"db","in":"query","required":false,"schema":{"title":"Db"}},{"name":"website","in":"query","required":false,"schema":{"title":"Website"}},{"name":"publish_as_draft","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Publish As Draft"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Platform Config"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/rescrape-blogs":{"post":{"summary":"Rescrape Website Blogs","operationId":"rescrape_website_blogs_api_websites__website_id__rescrape_blogs_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rescrape Website Blogs Api Websites  Website Id  Rescrape Blogs Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/process-scheduled-keywords":{"post":{"summary":"Process Scheduled Keywords Endpoint","description":"Endpoint for scheduler to process scheduled keywords","operationId":"process_scheduled_keywords_endpoint_api_process_scheduled_keywords_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/publish-scheduled-blogs":{"post":{"summary":"Publish Scheduled Blogs Endpoint","description":"Endpoint for scheduler to publish scheduled blogs","operationId":"publish_scheduled_blogs_endpoint_api_publish_scheduled_blogs_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/websites/{website_id}/generate-blog-for-date":{"post":{"summary":"Generate Blog For Date","operationId":"generate_blog_for_date_api_websites__website_id__generate_blog_for_date_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Generate Blog For Date Api Websites  Website Id  Generate Blog For Date Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/blog-status-by-date":{"get":{"summary":"Get Blog Status By Date","description":"Get blog publishing status for each date in the specified range.","operationId":"get_blog_status_by_date_api_websites__website_id__blog_status_by_date_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"}},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},{"name":"skip_auth_check","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Skip Auth Check"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Blog Status By Date Api Websites  Website Id  Blog Status By Date Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/blogs/publish-for-date":{"post":{"summary":"Publish Blog For Date","operationId":"publish_blog_for_date_api_websites__website_id__blogs_publish_for_date_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Publish Blog For Date Api Websites  Website Id  Blogs Publish For Date Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/blogs":{"get":{"summary":"Get Blogs","description":"Get blogs for a website, optionally filtered by keyword_id","operationId":"get_blogs_api_websites__website_id__blogs_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"keyword_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Keyword Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/upload-reference-image/{website_id}":{"post":{"summary":"Upload Reference Image","description":"Upload a reference image for blog cover generation","operationId":"upload_reference_image_api_upload_reference_image__website_id__post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"db","in":"query","required":false,"schema":{"title":"Db"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_reference_image_api_upload_reference_image__website_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reference-image/{website_id}":{"delete":{"summary":"Delete Reference Image","description":"Delete the reference image for a website","operationId":"delete_reference_image_api_reference_image__website_id__delete","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"db","in":"query","required":false,"schema":{"title":"Db"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/test-reference-image-generation/{website_id}":{"post":{"summary":"Test Reference Image Generation","description":"Test endpoint to generate a blog cover image using the uploaded reference image","operationId":"test_reference_image_generation_api_test_reference_image_generation__website_id__post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"db","in":"query","required":false,"schema":{"title":"Db"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_test_reference_image_generation_api_test_reference_image_generation__website_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/website-images/{website_id}":{"post":{"summary":"Upload Website Image","description":"Upload an image for a website and store it in S3","operationId":"upload_website_image_api_website_images__website_id__post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"db","in":"query","required":false,"schema":{"title":"Db"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_website_image_api_website_images__website_id__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"List Website Images","description":"List images uploaded for a website","operationId":"list_website_images_api_website_images__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"db","in":"query","required":false,"schema":{"title":"Db"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WebsiteImage"},"title":"Response List Website Images Api Website Images  Website Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/website-images/{website_id}/{image_id}":{"delete":{"summary":"Delete Website Image","description":"Delete an uploaded website image","operationId":"delete_website_image_api_website_images__website_id___image_id__delete","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"image_id","in":"path","required":true,"schema":{"type":"integer","title":"Image Id"}},{"name":"db","in":"query","required":false,"schema":{"title":"Db"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscriptions/plans":{"get":{"tags":["subscriptions"],"summary":"Get Subscription Plans","description":"Get all subscription plans with pricing and features","operationId":"get_subscription_plans_api_subscriptions_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/subscriptions/create-checkout-session":{"post":{"tags":["subscriptions"],"summary":"Create Checkout Session","description":"Create a Stripe checkout session for subscription","operationId":"create_checkout_session_api_subscriptions_create_checkout_session_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Data"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscriptions/customer-portal":{"get":{"tags":["subscriptions"],"summary":"Create Customer Portal Session","description":"Create a Stripe customer portal session for managing subscription","operationId":"create_customer_portal_session_api_subscriptions_customer_portal_get","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscriptions/user/{user_id}":{"get":{"tags":["subscriptions"],"summary":"Get User Subscription","description":"Get a user's subscription details","operationId":"get_user_subscription_api_subscriptions_user__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscriptions/webhook":{"post":{"tags":["subscriptions"],"summary":"Stripe Webhook","description":"Handle Stripe webhook events, including nurture campaign triggers.","operationId":"stripe_webhook_api_subscriptions_webhook_post","parameters":[{"name":"stripe-signature","in":"header","required":false,"schema":{"type":"string","title":"Stripe-Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscriptions/verify-checkout":{"post":{"tags":["subscriptions"],"summary":"Verify Checkout Session","description":"Verify a checkout session and return subscription details","operationId":"verify_checkout_session_api_subscriptions_verify_checkout_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Data"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscriptions/update-quantity":{"post":{"tags":["subscriptions"],"summary":"Update Subscription Quantity","description":"Update the quantity of an existing Stripe subscription item.","operationId":"update_subscription_quantity_api_subscriptions_update_quantity_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSubscriptionQuantityRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscriptions/upgrade":{"post":{"tags":["subscriptions"],"summary":"Upgrade Subscription Plan","description":"Upgrade a subscription to a new plan/interval by modifying the existing Stripe subscription in place.\nThis preserves the subscription ID, quantity, and all related data.","operationId":"upgrade_subscription_api_subscriptions_upgrade_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Data"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscriptions/pause":{"post":{"tags":["subscriptions"],"summary":"Pause Subscription","description":"Pause a Stripe subscription for a few months","operationId":"pause_subscription_api_subscriptions_pause_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PauseSubscriptionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscriptions/apply-coupon":{"post":{"tags":["subscriptions"],"summary":"Apply Coupon to Subscription","description":"Apply a coupon/discount to a subscription with usage tracking","operationId":"apply_coupon_api_subscriptions_apply_coupon_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyCouponRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscriptions/status/{stripe_subscription_id}":{"get":{"tags":["subscriptions"],"summary":"Get Subscription Status","description":"Get current subscription status from database","operationId":"get_subscription_status_api_subscriptions_status__stripe_subscription_id__get","parameters":[{"name":"stripe_subscription_id","in":"path","required":true,"schema":{"type":"string","title":"Stripe Subscription Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscriptions/cancel-feedback":{"post":{"tags":["subscriptions"],"summary":"Collect Cancellation Feedback","description":"Collect feedback from cancellation flow","operationId":"collect_cancel_feedback_api_subscriptions_cancel_feedback_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Data"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscriptions/invoices":{"get":{"tags":["subscriptions"],"summary":"Get User Invoices","description":"Get invoices for the authenticated billing user","operationId":"get_user_invoices_api_subscriptions_invoices_get","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscriptions/cancel":{"post":{"tags":["subscriptions"],"summary":"Cancel Subscription","description":"Cancel a subscription at period end (user keeps access until current_period_end)","operationId":"cancel_subscription_api_subscriptions_cancel_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Data"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscriptions/reactivate":{"post":{"tags":["subscriptions"],"summary":"Reactivate Subscription","description":"Reactivate a subscription that was set to cancel at period end (undo cancellation)","operationId":"reactivate_subscription_api_subscriptions_reactivate_post","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscriptions/end-trial":{"post":{"tags":["subscriptions"],"summary":"End Trial and Start Subscription","description":"End trial period immediately and start the active subscription","operationId":"end_trial_api_subscriptions_end_trial_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Data"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/website-subscriptions/":{"get":{"tags":["website-subscriptions"],"summary":"Get User Website Subscriptions","description":"Get all website subscriptions for the current user","operationId":"get_user_website_subscriptions_api_website_subscriptions__get","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WebsiteSubscriptionResponse"},"title":"Response Get User Website Subscriptions Api Website Subscriptions  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/website-subscriptions/plans/available":{"get":{"tags":["website-subscriptions"],"summary":"Get Available Plans","description":"Get all available plans and add-ons with pricing","operationId":"get_available_plans_api_website_subscriptions_plans_available_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/website-subscriptions/overview":{"get":{"tags":["website-subscriptions"],"summary":"Get Subscription Overview","description":"Get complete subscription overview including parent subscription and website details","operationId":"get_subscription_overview_api_website_subscriptions_overview_get","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/website-subscriptions/{website_id}":{"get":{"tags":["website-subscriptions"],"summary":"Get Website Subscription","description":"Get subscription details for a specific website","operationId":"get_website_subscription_api_website_subscriptions__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebsiteSubscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["website-subscriptions"],"summary":"Delete Website Subscription","description":"Delete a website subscription and handle shared subscription items properly","operationId":"delete_website_subscription_api_website_subscriptions__website_id__delete","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/website-subscriptions/create":{"post":{"tags":["website-subscriptions"],"summary":"Create Website Subscription","description":"Create or update a website subscription with proper Stripe integration","operationId":"create_website_subscription_api_website_subscriptions_create_post","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebsiteSubscriptionCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/website-subscriptions/migrate-website/{website_id}":{"post":{"tags":["website-subscriptions"],"summary":"Migrate Website Subscription","description":"Migrate a website to use the parent subscription plan (for migrated users)","operationId":"migrate_website_subscription_api_website_subscriptions_migrate_website__website_id__post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/website-subscriptions/check-website-limit":{"get":{"tags":["website-subscriptions"],"summary":"Check Website Limit","description":"Check if user can add more websites based on their subscription","operationId":"check_website_limit_api_website_subscriptions_check_website_limit_get","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/website-subscriptions/addons/purchase":{"post":{"tags":["website-subscriptions"],"summary":"Purchase Addon","description":"Purchase an addon for a website subscription","operationId":"purchase_addon_api_website_subscriptions_addons_purchase_post","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebsiteAddonCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/website-subscriptions/addons/{addon_id}":{"delete":{"tags":["website-subscriptions"],"summary":"Remove Addon","description":"Remove an addon from a website subscription","operationId":"remove_addon_api_website_subscriptions_addons__addon_id__delete","parameters":[{"name":"addon_id","in":"path","required":true,"schema":{"type":"string","title":"Addon Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/website-subscriptions/recalculate-backlink-limit/{website_id}":{"post":{"tags":["website-subscriptions"],"summary":"Recalculate Backlink Limit","description":"Manually recalculate and update the monthly backlink limit for a website","operationId":"recalculate_backlink_limit_api_website_subscriptions_recalculate_backlink_limit__website_id__post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/website-subscriptions/debug-backlink-limit/{website_id}":{"get":{"tags":["website-subscriptions"],"summary":"Debug Backlink Limit","description":"Debug endpoint to check current website backlink limits and related data","operationId":"debug_backlink_limit_api_website_subscriptions_debug_backlink_limit__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/website-subscriptions/recalculate-all-backlink-limits":{"post":{"tags":["website-subscriptions"],"summary":"Recalculate All Backlink Limits","description":"Recalculate and update the monthly backlink limit for all of user's websites","operationId":"recalculate_all_backlink_limits_api_website_subscriptions_recalculate_all_backlink_limits_post","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/onboarding":{"post":{"tags":["onboarding"],"summary":"Create Onboarding Progress","description":"Create or update onboarding progress for a user","operationId":"create_onboarding_progress_api_onboarding_post","parameters":[{"name":"x-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingProgressCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["onboarding"],"summary":"Get Onboarding Progress","description":"Get onboarding progress for a user","operationId":"get_onboarding_progress_api_onboarding_get","parameters":[{"name":"x-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["onboarding"],"summary":"Update Onboarding Progress","description":"Update onboarding progress for a user","operationId":"update_onboarding_progress_api_onboarding_patch","parameters":[{"name":"x-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingProgressUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/webflow/sites":{"post":{"tags":["integrations"],"summary":"Fetch Webflow Sites","operationId":"fetch_webflow_sites_api_integrations_webflow_sites_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebflowSitesRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/webflow/collections":{"post":{"tags":["integrations"],"summary":"Fetch Webflow Collections","operationId":"fetch_webflow_collections_api_integrations_webflow_collections_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebflowCollectionsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/shopify/blogs":{"post":{"tags":["integrations"],"summary":"Fetch Shopify Blogs","operationId":"fetch_shopify_blogs_api_integrations_shopify_blogs_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Request"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/blogger/blogs":{"post":{"tags":["integrations"],"summary":"Fetch Blogger Blogs","operationId":"fetch_blogger_blogs_api_integrations_blogger_blogs_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Request"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/gohighlevel/blogs":{"post":{"tags":["integrations"],"summary":"Fetch Gohighlevel Blogs","operationId":"fetch_gohighlevel_blogs_api_integrations_gohighlevel_blogs_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Request"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/gohighlevel/authors":{"post":{"tags":["integrations"],"summary":"Fetch Gohighlevel Authors","operationId":"fetch_gohighlevel_authors_api_integrations_gohighlevel_authors_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Request"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/verify":{"post":{"tags":["integrations"],"summary":"Verify Integration","operationId":"verify_integration_api_integrations_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/gsc/auth-url":{"get":{"tags":["integrations"],"summary":"Gsc Get Auth Url","description":"Generate Google OAuth URL for Search Console access.","operationId":"gsc_get_auth_url_api_integrations_gsc_auth_url_get","parameters":[{"name":"website_id","in":"query","required":true,"schema":{"type":"integer","description":"Website ID to link","title":"Website Id"},"description":"Website ID to link"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/gsc/callback":{"get":{"tags":["integrations"],"summary":"Gsc Oauth Callback","description":"OAuth redirect URI. Exchanges code for tokens and stores creds on the website row.","operationId":"gsc_oauth_callback_api_integrations_gsc_callback_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}},{"name":"state","in":"query","required":true,"schema":{"type":"string","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/ga4/auth-url":{"get":{"tags":["integrations"],"summary":"Ga4 Get Auth Url","description":"Generate Google OAuth URL for Google Analytics access.","operationId":"ga4_get_auth_url_api_integrations_ga4_auth_url_get","parameters":[{"name":"website_id","in":"query","required":true,"schema":{"type":"integer","description":"Website ID to link","title":"Website Id"},"description":"Website ID to link"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/ga4/callback":{"get":{"tags":["integrations"],"summary":"Ga4 Oauth Callback","description":"OAuth redirect URI for GA4.","operationId":"ga4_oauth_callback_api_integrations_ga4_callback_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}},{"name":"state","in":"query","required":true,"schema":{"type":"string","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/blogger/auth-url":{"get":{"tags":["integrations"],"summary":"Blogger Get Auth Url","description":"Generate Google OAuth URL for Blogger access.","operationId":"blogger_get_auth_url_api_integrations_blogger_auth_url_get","parameters":[{"name":"website_id","in":"query","required":true,"schema":{"type":"integer","description":"Website ID to link","title":"Website Id"},"description":"Website ID to link"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/shopify/install":{"get":{"tags":["integrations"],"summary":"Shopify Install","description":"App URL target for Shopify-initiated visits.\n\nShopify sends merchants here with ?shop=&hmac=&timestamp= when they click\nInstall on the App Store listing and when they open the app from their\nadmin. App Store review requires OAuth to begin immediately, so this\nendpoint verifies the HMAC and redirects straight to the shop's authorize\nURL; the callback then routes the merchant into SEOPro AI.","operationId":"shopify_install_api_integrations_shopify_install_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/api/integrations/shopify/auth-url":{"get":{"tags":["integrations"],"summary":"Shopify Get Auth Url","description":"Generate the Shopify OAuth authorize URL for the Connect with Shopify flow.","operationId":"shopify_get_auth_url_api_integrations_shopify_auth_url_get","parameters":[{"name":"website_id","in":"query","required":true,"schema":{"type":"integer","description":"Website ID to link","title":"Website Id"},"description":"Website ID to link"},{"name":"shop","in":"query","required":true,"schema":{"type":"string","description":"Store domain, e.g. mystore or mystore.myshopify.com","title":"Shop"},"description":"Store domain, e.g. mystore or mystore.myshopify.com"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/shopify/callback":{"get":{"tags":["integrations"],"summary":"Shopify Oauth Callback","description":"OAuth redirect URI. Verifies HMAC + state, exchanges the code for an\noffline token, and stores it on the website row so publishing works immediately.","operationId":"shopify_oauth_callback_api_integrations_shopify_callback_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/api/integrations/shopify/webhooks/app-uninstalled":{"post":{"tags":["integrations"],"summary":"Shopify App Uninstalled Webhook","description":"Shopify app/uninstalled webhook: clear the stored token for OAuth-connected\nstores so the UI prompts a reconnect instead of failing silently.","operationId":"shopify_app_uninstalled_webhook_api_integrations_shopify_webhooks_app_uninstalled_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/api/integrations/shopify/webhooks/customers-data-request":{"post":{"tags":["integrations"],"summary":"Shopify Customers Data Request Webhook","description":"Mandatory compliance webhook (customers/data_request).\n\nSEOPro AI only reads and writes blog content through the Admin API and\nnever stores Shopify customer records, so there is no customer data to\ncompile. Acknowledging with 200 confirms the request was processed.","operationId":"shopify_customers_data_request_webhook_api_integrations_shopify_webhooks_customers_data_request_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/api/integrations/shopify/webhooks/customers-redact":{"post":{"tags":["integrations"],"summary":"Shopify Customers Redact Webhook","description":"Mandatory compliance webhook (customers/redact).\n\nWe hold no Shopify customer records, so there is nothing to erase.","operationId":"shopify_customers_redact_webhook_api_integrations_shopify_webhooks_customers_redact_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/api/integrations/shopify/webhooks/shop-redact":{"post":{"tags":["integrations"],"summary":"Shopify Shop Redact Webhook","description":"Mandatory compliance webhook (shop/redact), sent 48 hours after uninstall.\n\nErases the shop-derived fields we store (store name, access token, blog\nid), not just the token. A still-valid legacy manual token is spared: it\nwas issued by the merchant's own custom app, keeps working after our app\nis uninstalled, and wiping it would sever an integration the customer\nconfigured independently of the OAuth app this webhook is about.","operationId":"shopify_shop_redact_webhook_api_integrations_shopify_webhooks_shop_redact_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/api/integrations/websites/{website_id}/index-url":{"post":{"tags":["integrations"],"summary":"Index Single Url","description":"Manually submit a single URL for indexing via Google Search Console.","operationId":"index_single_url_api_integrations_websites__website_id__index_url_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/websites/{website_id}/index-multiple-urls":{"post":{"tags":["integrations"],"summary":"Index Multiple Urls","description":"Manually submit multiple URLs for indexing via Google Search Console.","operationId":"index_multiple_urls_api_integrations_websites__website_id__index_multiple_urls_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/websites/{website_id}/indexing-status":{"get":{"tags":["integrations"],"summary":"Get Indexing Status","description":"Get indexing statistics and recent attempts for a website.","operationId":"get_indexing_status_api_integrations_websites__website_id__indexing_status_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/websites/{website_id}/indexing-attempts":{"get":{"tags":["integrations"],"summary":"Get Recent Indexing Attempts","description":"Get recent indexing attempts for a website with detailed information.","operationId":"get_recent_indexing_attempts_api_integrations_websites__website_id__indexing_attempts_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/websites/{website_id}/diagnose-indexing":{"post":{"tags":["integrations"],"summary":"Diagnose Indexing Issues Endpoint","description":"Diagnose indexing issues for URLs using Google's URL Inspection API.\n\nThis endpoint checks the actual indexing status of URLs and provides\ndetailed diagnostics including:\n- Current indexing status (indexed, discovered, crawled, etc.)\n- Issues preventing indexing\n- Specific recommendations to improve indexing\n\nRequest body:\n{\n    \"urls\": [\"https://example.com/page1\", \"https://example.com/page2\"],  // max 50\n    \"include_raw_response\": false  // optional, for debugging\n}\n\nResponse includes:\n- summary: Statistics on indexing status across all URLs\n- overall_recommendations: General recommendations based on findings\n- results: Detailed diagnostic for each URL","operationId":"diagnose_indexing_issues_endpoint_api_integrations_websites__website_id__diagnose_indexing_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/integrations/hubspot/sync-contacts":{"post":{"tags":["integrations"],"summary":"Sync Hubspot Contacts","description":"Manually trigger HubSpot contacts sync to create Supabase auth users.\nThis calls the Supabase Edge Function to sync contacts.","operationId":"sync_hubspot_contacts_api_integrations_hubspot_sync_contacts_post","parameters":[{"name":"sync_all","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Sync All"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/blogs/generate":{"post":{"summary":"Generate Blog","description":"Generate a blog post based on keywords and website ID.\n\nRequires authentication (dashboard session or developer API key); the\nwebsite must belong to the caller's organization and the account must\nhave remaining monthly blog quota.","operationId":"generate_blog_api_blogs_generate_post","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogGenerateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Generate Blog Api Blogs Generate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/youtube/test":{"post":{"summary":"Test Youtube Api","description":"Test endpoint for YouTube API integration","operationId":"test_youtube_api_api_youtube_test_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YouTubeTestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Test Youtube Api Api Youtube Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/backlinks/stats/{website_id}":{"get":{"tags":["Backlinks"],"summary":"Get Backlink Stats","description":"Return credits available, monthly limit, total backlinks earned & unique sources.","operationId":"get_backlink_stats_api_backlinks_stats__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Backlink Stats Api Backlinks Stats  Website Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/backlinks/network/{website_id}":{"patch":{"tags":["Backlinks"],"summary":"Update Network Participation","operationId":"update_network_participation_api_backlinks_network__website_id__patch","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NetworkToggleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Network Participation Api Backlinks Network  Website Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/backlinks/credits/{website_id}":{"get":{"tags":["Backlinks"],"summary":"Get Credits","operationId":"get_credits_api_backlinks_credits__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Credits Api Backlinks Credits  Website Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/backlinks/credit-claims/{website_id}":{"get":{"tags":["Backlinks"],"summary":"List Credit Claims","operationId":"list_credit_claims_api_backlinks_credit_claims__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Credit Claims Api Backlinks Credit Claims  Website Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Backlinks"],"summary":"Create Credit Claim","operationId":"create_credit_claim_api_backlinks_credit_claims__website_id__post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditClaimCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Credit Claim Api Backlinks Credit Claims  Website Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/backlinks/credit-claims/{claim_id}/review":{"post":{"tags":["Backlinks"],"summary":"Review Credit Claim","operationId":"review_credit_claim_api_backlinks_credit_claims__claim_id__review_post","parameters":[{"name":"claim_id","in":"path","required":true,"schema":{"type":"integer","title":"Claim Id"}},{"name":"x-cron-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Cron-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditClaimReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Review Credit Claim Api Backlinks Credit Claims  Claim Id  Review Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/backlinks/targets/{website_id}":{"post":{"tags":["Backlinks"],"summary":"Create Backlink Target","operationId":"create_backlink_target_api_backlinks_targets__website_id__post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacklinkTargetRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Backlink Target Api Backlinks Targets  Website Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Backlinks"],"summary":"List Backlink Targets","operationId":"list_backlink_targets_api_backlinks_targets__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Backlink Targets Api Backlinks Targets  Website Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/backlinks/earned/{website_id}":{"get":{"tags":["Backlinks"],"summary":"List Backlinks Earned","operationId":"list_backlinks_earned_api_backlinks_earned__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Backlinks Earned Api Backlinks Earned  Website Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/backlinks/placed/{website_id}":{"get":{"tags":["Backlinks"],"summary":"List Backlinks Placed","operationId":"list_backlinks_placed_api_backlinks_placed__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Backlinks Placed Api Backlinks Placed  Website Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/backlinks/metrics/history/{website_id}":{"get":{"tags":["Backlinks"],"summary":"Get Metrics History","description":"Get historical metrics for a website to display trends and growth over time.\n\nArgs:\n    website_id: The website ID\n    days: Number of days of history to retrieve (default 30, max 90)\n\nReturns:\n    Historical metrics data including daily snapshots","operationId":"get_metrics_history_api_backlinks_metrics_history__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Metrics History Api Backlinks Metrics History  Website Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/backlinks/metrics/growth/{website_id}":{"get":{"tags":["Backlinks"],"summary":"Get Metrics Growth","description":"Get growth metrics for a website showing changes over time.\n\nReturns comparison of current values vs first recorded values with\npercentage changes for key metrics.","operationId":"get_metrics_growth_api_backlinks_metrics_growth__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Metrics Growth Api Backlinks Metrics Growth  Website Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/backlinks/metrics/snapshot/{website_id}":{"post":{"tags":["Backlinks"],"summary":"Trigger Metrics Snapshot","description":"Manually trigger a metrics snapshot for a website.\n\nThis is useful for:\n- Initial data capture when a user first views their metrics\n- Forcing an immediate update after significant changes","operationId":"trigger_metrics_snapshot_api_backlinks_metrics_snapshot__website_id__post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Trigger Metrics Snapshot Api Backlinks Metrics Snapshot  Website Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai-seo-tracker/analyze":{"post":{"tags":["AI SEO Tracker"],"summary":"Analyze Website","description":"Analyze a website and compare tools across different LLMs.\nPersists results into ai_seo_tracker_analyses and ai_seo_tracker_findings.","operationId":"analyze_website_api_ai_seo_tracker_analyze_post","parameters":[{"name":"fresh","in":"query","required":false,"schema":{"type":"boolean","description":"Force fresh analysis, ignore cache","default":false,"title":"Fresh"},"description":"Force fresh analysis, ignore cache"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebsiteScrapingRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIToolComparisonResponse"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai-seo-tracker/recent-analyses":{"get":{"tags":["AI SEO Tracker"],"summary":"Get Recent Analyses","description":"Get recent analyses for the current user.\nRequires authentication.","operationId":"get_recent_analyses_api_ai_seo_tracker_recent_analyses_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai-seo-tracker/findings/{website_id}":{"get":{"tags":["AI SEO Tracker"],"summary":"Get Findings","description":"Get all findings for a website, with linked content counts.\nReturns findings joined with their analysis metadata.","operationId":"get_findings_api_ai_seo_tracker_findings__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/scheduler/run-once":{"post":{"tags":["Scheduler"],"summary":"Run Autopilot Once","description":"Manually trigger a single execution of the autopilot scheduler.\n\nIf `website_id` is provided, only that website is processed.\nOtherwise the full autopilot run is executed (all sites).","operationId":"run_autopilot_once_api_scheduler_run_once_post","parameters":[{"name":"website_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Website Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Autopilot Once Api Scheduler Run Once Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/scheduler/public-blog/preview":{"get":{"tags":["Scheduler"],"summary":"Preview Public Blog Candidates","description":"Preview draft blogs eligible for SEOPro AI public blog publishing.","operationId":"preview_public_blog_candidates_api_scheduler_public_blog_preview_get","parameters":[{"name":"as_of_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As Of Date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}},{"name":"x-cron-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Cron-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Preview Public Blog Candidates Api Scheduler Public Blog Preview Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/scheduler/public-blog/run":{"post":{"tags":["Scheduler"],"summary":"Run Public Blog Publisher","description":"Manually trigger SEOPro AI public blog publishing (dry-run by default).","operationId":"run_public_blog_publisher_api_scheduler_public_blog_run_post","parameters":[{"name":"as_of_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As Of Date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":2,"title":"Limit"}},{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Dry Run"}},{"name":"x-cron-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Cron-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Public Blog Publisher Api Scheduler Public Blog Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/brand":{"get":{"tags":["Brand"],"summary":"Get Brand","description":"Return the brand configuration for the supplied domain.\nFalls back to a default brand if no match is found.","operationId":"get_brand_api_brand_get","parameters":[{"name":"domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Fully qualified domain name of the request","title":"Domain"},"description":"Fully qualified domain name of the request"},{"name":"host","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Host"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Brand Api Brand Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/cron/monthly":{"post":{"tags":["internal-cron"],"summary":"Refresh Monthly Metrics","description":"Reset backlink credits and refresh Domain Rating + backlink_summary for all websites.\n\nThis endpoint is intended to be triggered by a trusted scheduler (Supabase Edge\nFunction). Simple header-based auth is used to keep things lightweight.","operationId":"refresh_monthly_metrics_api_internal_cron_monthly_post","parameters":[{"name":"x-cron-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Cron-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/product-updates/generate":{"post":{"tags":["product-updates"],"summary":"Generate Product Update","description":"Generate and optionally send a product update email based on recent GitHub activity.\n\nThis endpoint:\n1. Fetches recent commits and merged PRs from the specified GitHub repository\n2. Uses an LLM to draft a professional product update email\n3. Sends the email to the specified recipient\n\nAuthentication: Requires x-cron-secret header matching CRON_SECRET env var.\n\nThis endpoint can be triggered:\n- Manually for one-off updates\n- By a Supabase Edge Function (bi-weekly)","operationId":"generate_product_update_api_internal_product_updates_generate_post","parameters":[{"name":"x-cron-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Cron-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductUpdateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/product-updates/preview":{"get":{"tags":["product-updates"],"summary":"Preview Product Update","description":"Preview what a product update email would look like without sending it.\n\nReturns the full email content for review before sending.","operationId":"preview_product_update_api_internal_product_updates_preview_get","parameters":[{"name":"owner","in":"query","required":false,"schema":{"type":"string","default":"vinodvarma24","title":"Owner"}},{"name":"repo","in":"query","required":false,"schema":{"type":"string","default":"seopro-ai","title":"Repo"}},{"name":"since_days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":14,"title":"Since Days"}},{"name":"x-cron-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Cron-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/product-updates/commits":{"get":{"tags":["product-updates"],"summary":"List Recent Commits","description":"List recent commits from the GitHub repository.\n\nUseful for debugging and verifying GitHub access.","operationId":"list_recent_commits_api_internal_product_updates_commits_get","parameters":[{"name":"owner","in":"query","required":false,"schema":{"type":"string","default":"vinodvarma24","title":"Owner"}},{"name":"repo","in":"query","required":false,"schema":{"type":"string","default":"seopro-ai","title":"Repo"}},{"name":"since_days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":14,"title":"Since Days"}},{"name":"x-cron-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Cron-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/internal/product-updates/prs":{"get":{"tags":["product-updates"],"summary":"List Recent Prs","description":"List recently merged PRs from the GitHub repository.\n\nUseful for debugging and verifying GitHub access.","operationId":"list_recent_prs_api_internal_product_updates_prs_get","parameters":[{"name":"owner","in":"query","required":false,"schema":{"type":"string","default":"vinodvarma24","title":"Owner"}},{"name":"repo","in":"query","required":false,"schema":{"type":"string","default":"seopro-ai","title":"Repo"}},{"name":"since_days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":14,"title":"Since Days"}},{"name":"x-cron-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Cron-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/white-label/{website_id}":{"get":{"tags":["Reports"],"summary":"Get White Label Report","description":"Return a summary report for a website.","operationId":"get_white_label_report_api_reports_white_label__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhiteLabelReport"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/search-insights/summary/{website_id}":{"get":{"tags":["Reports"],"summary":"Get Search Insights Summary","description":"Get search insights summary for a website using hybrid storage.","operationId":"get_search_insights_summary_api_reports_search_insights_summary__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"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":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchInsightsSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/search-insights/detail/{website_id}":{"get":{"tags":["Reports"],"summary":"Get Search Insights Detail","description":"Get detailed search insights data for a website.","operationId":"get_search_insights_detail_api_reports_search_insights_detail__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"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":"source_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by source type (gsc, ai_referral)","title":"Source Type"},"description":"Filter by source type (gsc, ai_referral)"},{"name":"device","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by device (desktop, mobile, tablet)","title":"Device"},"description":"Filter by device (desktop, mobile, tablet)"},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by country code","title":"Country"},"description":"Filter by country code"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum number of results","default":1000,"title":"Limit"},"description":"Maximum number of results"},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SearchInsightsDetail"},"title":"Response Get Search Insights Detail Api Reports Search Insights Detail  Website Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/search-insights/trends/{website_id}":{"get":{"tags":["Reports"],"summary":"Get Search Insights Trends","description":"Get monthly trends for search insights.","operationId":"get_search_insights_trends_api_reports_search_insights_trends__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"months","in":"query","required":false,"schema":{"type":"integer","description":"Number of months to include","default":6,"title":"Months"},"description":"Number of months to include"},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MonthlyTrend"},"title":"Response Get Search Insights Trends Api Reports Search Insights Trends  Website Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/search-insights/keywords/{website_id}":{"get":{"tags":["Reports"],"summary":"Get Top Keywords","description":"Get top performing keywords for a website.","operationId":"get_top_keywords_api_reports_search_insights_keywords__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"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":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum number of keywords","default":50,"title":"Limit"},"description":"Maximum number of keywords"},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/search-insights/ai-sources/{website_id}":{"get":{"tags":["Reports"],"summary":"Get Ai Sources","description":"Get AI traffic sources for a website.","operationId":"get_ai_sources_api_reports_search_insights_ai_sources__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"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":"limit","in":"query","required":false,"schema":{"type":"integer","description":"Maximum number of sources","default":20,"title":"Limit"},"description":"Maximum number of sources"},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/{website_id}/ai-visibility/details":{"get":{"tags":["Report Details"],"summary":"Get Ai Visibility Details","description":"Get detailed AI visibility breakdown for the most recent analysis.","operationId":"get_ai_visibility_details_api_reports__website_id__ai_visibility_details_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIVisibilityDetailsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/{website_id}/clicks/details":{"get":{"tags":["Report Details"],"summary":"Get Clicks Details","description":"Get per-keyword clicks breakdown for the given period.","operationId":"get_clicks_details_api_reports__website_id__clicks_details_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":7,"description":"Period in days (7, 30, or 90)","default":30,"title":"Days"},"description":"Period in days (7, 30, or 90)"},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClicksDetailsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/{website_id}/avg-position/details":{"get":{"tags":["Report Details"],"summary":"Get Avg Position Details","description":"Get per-keyword avg position breakdown with delta vs previous period.","operationId":"get_avg_position_details_api_reports__website_id__avg_position_details_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":7,"description":"Period in days (7, 30, or 90)","default":30,"title":"Days"},"description":"Period in days (7, 30, or 90)"},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvgPositionDetailsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/error-test/test-exception":{"get":{"tags":["error-testing"],"summary":"Test Exception","description":"Test endpoint that raises an exception to verify PostHog exception tracking","operationId":"test_exception_api_error_test_test_exception_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/error-test/test-zero-division":{"get":{"tags":["error-testing"],"summary":"Test Zero Division","description":"Test endpoint that raises a ZeroDivisionError","operationId":"test_zero_division_api_error_test_test_zero_division_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/error-test/test-manual-exception":{"get":{"tags":["error-testing"],"summary":"Test Manual Exception","description":"Test manual exception capture using updated PostHog method with proper format","operationId":"test_manual_exception_api_error_test_test_manual_exception_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/error-test/test-logged-error":{"get":{"tags":["error-testing"],"summary":"Test Logged Error","description":"Test endpoint that logs an error without raising an exception","operationId":"test_logged_error_api_error_test_test_logged_error_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/error-test/test-capture-event":{"get":{"tags":["error-testing"],"summary":"Test Capture Event","description":"Test endpoint that captures a custom event","operationId":"test_capture_event_api_error_test_test_capture_event_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/error-test/status":{"get":{"tags":["error-testing"],"summary":"Get Posthog Status","description":"Get PostHog service status","operationId":"get_posthog_status_api_error_test_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/error-test/debug":{"get":{"tags":["error-testing"],"summary":"Enable Debug Mode","description":"Enable debug mode for PostHog to see detailed logs","operationId":"enable_debug_mode_api_error_test_debug_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/error-test/test-openai-error":{"get":{"tags":["error-testing"],"summary":"Test Openai Error","description":"Test endpoint that simulates OpenAI rate limit error logging pattern","operationId":"test_openai_error_api_error_test_test_openai_error_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/public/rss":{"get":{"tags":["public"],"summary":"Public Rss Feed","description":"Serve an RSS 2.0 feed of published blogs for a website.","operationId":"public_rss_feed_api_public_rss_get","parameters":[{"name":"key","in":"query","required":true,"schema":{"type":"string","minLength":8,"description":"API key generated for the Duda RSS integration","title":"Key"},"description":"API key generated for the Duda RSS integration"},{"name":"domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional domain validation parameter","title":"Domain"},"description":"Optional domain validation parameter"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Maximum number of posts to return","default":20,"title":"Limit"},"description":"Maximum number of posts to return"}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/keys":{"post":{"tags":["API Keys"],"summary":"Create Api Key","description":"Create a new API key for the authenticated user.\n\nThe full API key is ONLY returned in this response - store it securely!\nYou won't be able to retrieve the full key again.\n\nArgs:\n    key_data: API key creation parameters\n    user_id: Authenticated user ID (from JWT)\n    db: Database client\n\nReturns:\n    APIKeyResponse with the full API key (only shown once!)","operationId":"create_api_key_api_keys_post","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["API Keys"],"summary":"List Api Keys","description":"List all API keys for the authenticated user.\n\nReturns all API keys with metadata but NOT the full keys.\n\nArgs:\n    user_id: Authenticated user ID (from JWT)\n    db: Database client\n\nReturns:\n    List of API keys with metadata","operationId":"list_api_keys_api_keys_get","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/keys/{key_id}":{"delete":{"tags":["API Keys"],"summary":"Delete Api Key","description":"Permanently delete an API key.\n\nThis action cannot be undone. The API key will be immediately invalidated.\n\nArgs:\n    key_id: The API key ID to delete\n    user_id: Authenticated user ID (from JWT)\n    db: Database client\n\nReturns:\n    Success confirmation","operationId":"delete_api_key_api_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/keys/{key_id}/revoke":{"post":{"tags":["API Keys"],"summary":"Revoke Api Key","description":"Revoke (deactivate) an API key.\n\nThe key will be immediately invalidated but kept in the database for audit purposes.\nUse this instead of delete if you want to preserve usage history.\n\nArgs:\n    key_id: The API key ID to revoke\n    user_id: Authenticated user ID (from JWT)\n    db: Database client\n\nReturns:\n    Success confirmation","operationId":"revoke_api_key_api_keys__key_id__revoke_post","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyRevokeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/keys/{key_id}/usage":{"get":{"tags":["API Keys"],"summary":"Get Api Key Usage","description":"Get usage statistics and rate limits for an API key.\n\nArgs:\n    key_id: The API key ID\n    user_id: Authenticated user ID (from JWT)\n    db: Database client\n\nReturns:\n    Current usage statistics and limits","operationId":"get_api_key_usage_api_keys__key_id__usage_get","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyUsageLimits"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/members":{"get":{"tags":["teams"],"summary":"List Team Members","operationId":"list_team_members_api_teams_members_get","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/invite":{"post":{"tags":["teams"],"summary":"Invite Team Member","operationId":"invite_team_member_api_teams_invite_post","parameters":[{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteMemberRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/members/{member_id}":{"patch":{"tags":["teams"],"summary":"Update Member Role","operationId":"update_member_role_api_teams_members__member_id__patch","parameters":[{"name":"member_id","in":"path","required":true,"schema":{"type":"string","title":"Member Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["teams"],"summary":"Remove Member","operationId":"remove_member_api_teams_members__member_id__delete","parameters":[{"name":"member_id","in":"path","required":true,"schema":{"type":"string","title":"Member Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/teams/accept":{"post":{"tags":["teams"],"summary":"Accept Invitation","description":"Accept the most recent pending invitation for the currently authenticated user.","operationId":"accept_invitation_api_teams_accept_post","parameters":[{"name":"x-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptInviteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/seo-audit/analyze":{"post":{"tags":["seo-audit"],"summary":"Analyze Url","description":"Perform a comprehensive SEO audit on a URL.\n\nRate limits:\n- Anonymous: 5 uses/day\n- Free users: 15 uses/day\n- Paid users: Unlimited\n\nThis free tool analyzes:\n- Meta tags (title, description, canonical, robots)\n- Heading structure (H1-H6 hierarchy)\n- Image optimization (alt text, lazy loading)\n- Link analysis (internal, external, broken)\n- Performance indicators (page size, load time)\n- Content quality (word count, structured data)\n- Security (HTTPS, security headers)\n- Social media meta tags (Open Graph, Twitter Cards)","operationId":"analyze_url_api_seo_audit_analyze_post","parameters":[{"name":"x-forwarded-for","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Forwarded-For"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SEOAuditResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/seo-audit/health":{"get":{"tags":["seo-audit"],"summary":"Health Check","description":"Health check endpoint for the SEO audit service","operationId":"health_check_api_seo_audit_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/websites/{website_id}/site-audit/access":{"get":{"tags":["site-audit"],"summary":"Get Site Audit Access","operationId":"get_site_audit_access_api_websites__website_id__site_audit_access_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/site-audit/run":{"post":{"tags":["site-audit"],"summary":"Start Site Audit Run","operationId":"start_site_audit_run_api_websites__website_id__site_audit_run_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/site-audit/runs/latest":{"get":{"tags":["site-audit"],"summary":"Get Latest Site Audit Run","operationId":"get_latest_site_audit_run_api_websites__website_id__site_audit_runs_latest_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/recommendations":{"get":{"tags":["site-audit"],"summary":"List Site Audit Recommendations","operationId":"list_site_audit_recommendations_api_websites__website_id__recommendations_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"enum":["pending","accepted","rejected","completed"],"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/recommendations/{rec_id}":{"patch":{"tags":["site-audit"],"summary":"Update Site Audit Recommendation Status","operationId":"update_site_audit_recommendation_status_api_websites__website_id__recommendations__rec_id__patch","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"rec_id","in":"path","required":true,"schema":{"type":"integer","title":"Rec Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationStatusUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/recommendations/{rec_id}/remediation":{"get":{"tags":["content-remediation"],"summary":"Get Content Remediation","operationId":"get_content_remediation_api_websites__website_id__recommendations__rec_id__remediation_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"rec_id","in":"path","required":true,"schema":{"type":"integer","title":"Rec Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["content-remediation"],"summary":"Start Content Remediation","operationId":"start_content_remediation_api_websites__website_id__recommendations__rec_id__remediation_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"rec_id","in":"path","required":true,"schema":{"type":"integer","title":"Rec Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["content-remediation"],"summary":"Update Content Remediation Draft","operationId":"update_content_remediation_draft_api_websites__website_id__recommendations__rec_id__remediation_patch","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"rec_id","in":"path","required":true,"schema":{"type":"integer","title":"Rec Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/recommendations/{rec_id}/remediation/discard":{"post":{"tags":["content-remediation"],"summary":"Discard Content Remediation","operationId":"discard_content_remediation_api_websites__website_id__recommendations__rec_id__remediation_discard_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"rec_id","in":"path","required":true,"schema":{"type":"integer","title":"Rec Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/recommendations/{rec_id}/remediation/apply":{"post":{"tags":["content-remediation"],"summary":"Apply Content Remediation","operationId":"apply_content_remediation_api_websites__website_id__recommendations__rec_id__remediation_apply_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"rec_id","in":"path","required":true,"schema":{"type":"integer","title":"Rec Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/pseo/industries":{"get":{"tags":["pseo"],"summary":"List Industries","description":"Get all published industries for listing pages.\nReturns lightweight data suitable for hub pages and navigation.\nSupports filtering by page_type for different keyword variants.","operationId":"list_industries_api_pseo_industries_get","parameters":[{"name":"page_type","in":"query","required":false,"schema":{"type":"string","description":"Page type: services, company, agency, marketing","default":"services","title":"Page Type"},"description":"Page type: services, company, agency, marketing"},{"name":"featured_only","in":"query","required":false,"schema":{"type":"boolean","description":"Return only featured industries","default":false,"title":"Featured Only"},"description":"Return only featured industries"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of industries to return","default":50,"title":"Limit"},"description":"Maximum number of industries to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/IndustryListItem"},"title":"Response List Industries Api Pseo Industries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/pseo/industries/{slug}":{"get":{"tags":["pseo"],"summary":"Get Industry","description":"Get a single industry by slug and page_type for the industry detail page.\nReturns full data including all content fields.\nSupports different page types: services, company, agency, marketing.","operationId":"get_industry_api_pseo_industries__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"page_type","in":"query","required":false,"schema":{"type":"string","description":"Page type: services, company, agency, marketing","default":"services","title":"Page Type"},"description":"Page type: services, company, agency, marketing"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndustryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/pseo/industries/{slug}/related":{"get":{"tags":["pseo"],"summary":"Get Related Industries","description":"Get related industries for a given industry and page_type.\nUses the related_industries field or falls back to featured industries.\nRelated industries are shown with the same page_type.","operationId":"get_related_industries_api_pseo_industries__slug__related_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"page_type","in":"query","required":false,"schema":{"type":"string","description":"Page type: services, company, agency, marketing","default":"services","title":"Page Type"},"description":"Page type: services, company, agency, marketing"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"default":4,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/IndustryListItem"},"title":"Response Get Related Industries Api Pseo Industries  Slug  Related Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/pseo/service-types":{"get":{"tags":["pseo"],"summary":"List Service Types","description":"Get all published service types for listing pages.\nReturns lightweight data suitable for hub pages and navigation.","operationId":"list_service_types_api_pseo_service_types_get","parameters":[{"name":"featured_only","in":"query","required":false,"schema":{"type":"boolean","description":"Return only featured service types","default":false,"title":"Featured Only"},"description":"Return only featured service types"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of service types to return","default":50,"title":"Limit"},"description":"Maximum number of service types to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ServiceTypeListItem"},"title":"Response List Service Types Api Pseo Service Types Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/pseo/service-types/{slug}":{"get":{"tags":["pseo"],"summary":"Get Service Type","description":"Get a single service type by slug for the service type detail page.\nReturns full data including all content fields.","operationId":"get_service_type_api_pseo_service_types__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceTypeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/pseo/service-types/{slug}/related":{"get":{"tags":["pseo"],"summary":"Get Related Service Types","description":"Get related service types for a given service type.\nUses the related_service_types field or falls back to featured service types.","operationId":"get_related_service_types_api_pseo_service_types__slug__related_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"default":4,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ServiceTypeListItem"},"title":"Response Get Related Service Types Api Pseo Service Types  Slug  Related Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/pseo/professions":{"get":{"tags":["pseo"],"summary":"List Professions","description":"Get all published professions for listing pages.\nReturns lightweight data suitable for hub pages and navigation.","operationId":"list_professions_api_pseo_professions_get","parameters":[{"name":"service_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by service type: 'seo' or 'local-seo'","title":"Service Type"},"description":"Filter by service type: 'seo' or 'local-seo'"},{"name":"featured_only","in":"query","required":false,"schema":{"type":"boolean","description":"Return only featured professions","default":false,"title":"Featured Only"},"description":"Return only featured professions"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of professions to return","default":50,"title":"Limit"},"description":"Maximum number of professions to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProfessionListItem"},"title":"Response List Professions Api Pseo Professions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/pseo/professions/{slug}":{"get":{"tags":["pseo"],"summary":"Get Profession","description":"Get a single profession by slug for the profession detail page.\nReturns full data including all content fields.\n\nIf service_type is provided, returns that specific variant.\nOtherwise returns the 'seo' variant by default.","operationId":"get_profession_api_pseo_professions__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"service_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Service type: 'seo' or 'local-seo'","title":"Service Type"},"description":"Service type: 'seo' or 'local-seo'"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/pseo/professions/{slug}/related":{"get":{"tags":["pseo"],"summary":"Get Related Professions","description":"Get related professions for a given profession.\nUses the related_professions field or falls back to featured professions.","operationId":"get_related_professions_api_pseo_professions__slug__related_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"service_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by service type","title":"Service Type"},"description":"Filter by service type"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"default":4,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProfessionListItem"},"title":"Response Get Related Professions Api Pseo Professions  Slug  Related Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/pseo/sitemap/industries":{"get":{"tags":["pseo"],"summary":"Get Industries Sitemap Data","description":"Get minimal data for sitemap generation.\nReturns slug, page_type, and updated_at for all published industries.\nSupports multiple page types: services, company, agency, marketing.","operationId":"get_industries_sitemap_data_api_pseo_sitemap_industries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/api/pseo/sitemap/service-types":{"get":{"tags":["pseo"],"summary":"Get Service Types Sitemap Data","description":"Get minimal data for sitemap generation.\nReturns slug and updated_at for all published service types.","operationId":"get_service_types_sitemap_data_api_pseo_sitemap_service_types_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/api/pseo/sitemap/professions":{"get":{"tags":["pseo"],"summary":"Get Professions Sitemap Data","description":"Get minimal data for sitemap generation.\nReturns slug, service_type, and updated_at for all published professions.","operationId":"get_professions_sitemap_data_api_pseo_sitemap_professions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/api/pseo/platforms":{"get":{"tags":["pseo"],"summary":"List Platforms","description":"Get all published platforms for listing pages.\nReturns lightweight data suitable for hub pages and navigation.","operationId":"list_platforms_api_pseo_platforms_get","parameters":[{"name":"featured_only","in":"query","required":false,"schema":{"type":"boolean","description":"Return only featured platforms","default":false,"title":"Featured Only"},"description":"Return only featured platforms"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of platforms to return","default":50,"title":"Limit"},"description":"Maximum number of platforms to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlatformListItem"},"title":"Response List Platforms Api Pseo Platforms Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/pseo/platforms/{slug}":{"get":{"tags":["pseo"],"summary":"Get Platform","description":"Get a single platform by slug for the platform detail page.\nReturns full data including all content fields.","operationId":"get_platform_api_pseo_platforms__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/pseo/platforms/{slug}/related":{"get":{"tags":["pseo"],"summary":"Get Related Platforms","description":"Get related platforms for a given platform.\nUses the related_platforms field or falls back to featured platforms.","operationId":"get_related_platforms_api_pseo_platforms__slug__related_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"default":4,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlatformListItem"},"title":"Response Get Related Platforms Api Pseo Platforms  Slug  Related Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/pseo/sitemap/platforms":{"get":{"tags":["pseo"],"summary":"Get Platforms Sitemap Data","description":"Get minimal data for sitemap generation.\nReturns slug and updated_at for all published platforms.","operationId":"get_platforms_sitemap_data_api_pseo_sitemap_platforms_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/sitemap.xml":{"get":{"tags":["sitemap"],"summary":"Generate Sitemap","description":"Generate a complete XML sitemap including all static and dynamic pages.\nReturns proper XML with application/xml content type.","operationId":"generate_sitemap_sitemap_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/api/sitemap/stats":{"get":{"tags":["sitemap"],"summary":"Get Sitemap Stats","description":"Get statistics about the sitemap for monitoring.\nReturns counts of each page type.","operationId":"get_sitemap_stats_api_sitemap_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/api/websites/{website_id}/entity-profile":{"get":{"tags":["entity-schema"],"summary":"Get Entity Profile","operationId":"get_entity_profile_api_websites__website_id__entity_profile_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitySchemaProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["entity-schema"],"summary":"Update Entity Profile","operationId":"update_entity_profile_api_websites__website_id__entity_profile_put","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitySchemaProfileUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitySchemaProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/entity-profile/publish":{"post":{"tags":["entity-schema"],"summary":"Publish Entity Profile","operationId":"publish_entity_profile_api_websites__website_id__entity_profile_publish_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitySchemaProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/entity.js":{"get":{"tags":["entity-schema-public"],"summary":"Serve Entity Snippet","operationId":"serve_entity_snippet_entity_js_get","parameters":[{"name":"site","in":"query","required":true,"schema":{"type":"integer","minimum":1,"title":"Site"}},{"name":"v","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"V"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/websites/{website_id}/local-business-profile":{"get":{"tags":["local-seo"],"summary":"Get Local Business Profile","operationId":"get_local_business_profile_api_websites__website_id__local_business_profile_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocalBusinessProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["local-seo"],"summary":"Update Local Business Profile","operationId":"update_local_business_profile_api_websites__website_id__local_business_profile_put","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocalBusinessProfileUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocalBusinessProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/local-business-profile/geocode":{"post":{"tags":["local-seo"],"summary":"Geocode Local Business Profile Location","operationId":"geocode_local_business_profile_location_api_websites__website_id__local_business_profile_geocode_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeocodeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeocodeResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/local-business-profile/completeness":{"get":{"tags":["local-seo"],"summary":"Get Local Business Profile Completeness","operationId":"get_local_business_profile_completeness_api_websites__website_id__local_business_profile_completeness_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/local-seo/access":{"get":{"tags":["local-seo"],"summary":"Get Local Seo Access","operationId":"get_local_seo_access_api_websites__website_id__local_seo_access_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/local-ai-visibility/check":{"post":{"tags":["local-seo"],"summary":"Create Local Ai Visibility Check","operationId":"create_local_ai_visibility_check_api_websites__website_id__local_ai_visibility_check_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/local-ai-visibility/latest":{"get":{"tags":["local-seo"],"summary":"Get Latest Local Ai Visibility Check","operationId":"get_latest_local_ai_visibility_check_api_websites__website_id__local_ai_visibility_latest_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/local-rank/keywords":{"get":{"tags":["local-rank-tracker"],"summary":"List Local Rank Keywords","operationId":"list_local_rank_keywords_api_websites__website_id__local_rank_keywords_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["local-rank-tracker"],"summary":"Create Local Rank Keyword","operationId":"create_local_rank_keyword_api_websites__website_id__local_rank_keywords_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocalRankKeywordCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/local-rank/keywords/{keyword_id}":{"delete":{"tags":["local-rank-tracker"],"summary":"Delete Local Rank Keyword","operationId":"delete_local_rank_keyword_api_websites__website_id__local_rank_keywords__keyword_id__delete","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"keyword_id","in":"path","required":true,"schema":{"type":"string","title":"Keyword Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/local-rank/keywords/{keyword_id}/scan":{"post":{"tags":["local-rank-tracker"],"summary":"Scan Local Rank Keyword","operationId":"scan_local_rank_keyword_api_websites__website_id__local_rank_keywords__keyword_id__scan_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"keyword_id","in":"path","required":true,"schema":{"type":"string","title":"Keyword Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/local-rank/scans":{"get":{"tags":["local-rank-tracker"],"summary":"List Local Rank Scans","operationId":"list_local_rank_scans_api_websites__website_id__local_rank_scans_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"keyword_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Keyword Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/websites/{website_id}/local-rank/scans/{scan_id}":{"get":{"tags":["local-rank-tracker"],"summary":"Get Local Rank Scan","operationId":"get_local_rank_scan_api_websites__website_id__local_rank_scans__scan_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"scan_id","in":"path","required":true,"schema":{"type":"string","title":"Scan Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/support/crisp-profile":{"get":{"tags":["support"],"summary":"Get Crisp Profile","operationId":"get_crisp_profile_api_support_crisp_profile_get","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mission-control/{website_id}":{"get":{"tags":["Mission Control"],"summary":"Get Mission Control Dashboard","description":"Get aggregated Mission Control dashboard data.\n\nReturns all components needed for the dashboard in one call.","operationId":"get_mission_control_dashboard_api_mission_control__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MissionControlResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mission-control/{website_id}/health-score":{"get":{"tags":["Mission Control"],"summary":"Get Health Score","description":"Get detailed health score breakdown.","operationId":"get_health_score_api_mission_control__website_id__health_score_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mission-control/{website_id}/actions":{"get":{"tags":["Mission Control"],"summary":"Get Action Items","description":"Get prioritized action items for the website.","operationId":"get_action_items_api_mission_control__website_id__actions_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":1,"default":7,"title":"Limit"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActionItemResponse"},"title":"Response Get Action Items Api Mission Control  Website Id  Actions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/mission-control/{website_id}/actions/{action_id}/execute":{"post":{"tags":["Mission Control"],"summary":"Execute Action Endpoint","description":"Execute a 1-click action.","operationId":"execute_action_endpoint_api_mission_control__website_id__actions__action_id__execute_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"action_id","in":"path","required":true,"schema":{"type":"string","title":"Action Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteActionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/alerts/preferences/{website_id}":{"get":{"tags":["SEO Alerts"],"summary":"Get Preferences","description":"Get alert preferences for a website.","operationId":"get_preferences_api_alerts_preferences__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"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":["SEO Alerts"],"summary":"Update Preferences","description":"Update alert preferences for a website.","operationId":"update_preferences_api_alerts_preferences__website_id__put","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePreferencesRequest"}}}},"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"}}}}}}},"/api/alerts/history/{website_id}":{"get":{"tags":["SEO Alerts"],"summary":"Get History","description":"Get alert history for a website.","operationId":"get_history_api_alerts_history__website_id__get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}},{"name":"include_resolved","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Resolved"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/alerts/{alert_id}/resolve":{"post":{"tags":["SEO Alerts"],"summary":"Resolve Alert Endpoint","description":"Mark an alert as resolved.","operationId":"resolve_alert_endpoint_api_alerts__alert_id__resolve_post","parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"integer","title":"Alert Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/alerts/generate/{website_id}":{"post":{"tags":["SEO Alerts"],"summary":"Generate Alerts Endpoint","description":"Generate and save alerts for a website.\n\nThis endpoint can be used to manually trigger alert generation,\ntypically called by the scheduler job.","operationId":"generate_alerts_endpoint_api_alerts_generate__website_id__post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/alerts/test-digest/{website_id}":{"post":{"tags":["SEO Alerts"],"summary":"Test Digest Endpoint","description":"Send a test digest email for the current user/website.\n\nThis is useful for testing the digest email format.","operationId":"test_digest_endpoint_api_alerts_test_digest__website_id__post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"frequency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Frequency"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/alerts/types":{"get":{"tags":["SEO Alerts"],"summary":"Get Alert Types","description":"Get available alert types and their descriptions.","operationId":"get_alert_types_api_alerts_types_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/plugin/verify":{"post":{"tags":["plugin"],"summary":"Verify Plugin Connection","description":"Verify plugin connection and update plugin metadata.\n\nCalled by the WordPress plugin to confirm the connection is working.","operationId":"verify_plugin_connection_api_plugin_verify_post","parameters":[{"name":"X-SEOPro-API-Key","in":"header","required":false,"schema":{"type":"string","title":"X-Seopro-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginVerifyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginVerifyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/plugin/pending":{"get":{"tags":["plugin"],"summary":"Get Pending Posts","description":"Get pending posts for the pull model.\n\nCalled by WordPress cron to fetch posts waiting to be published.","operationId":"get_pending_posts_api_plugin_pending_get","parameters":[{"name":"site_url","in":"query","required":true,"schema":{"type":"string","title":"Site Url"}},{"name":"X-SEOPro-API-Key","in":"header","required":false,"schema":{"type":"string","title":"X-Seopro-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingPostsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/plugin/report":{"post":{"tags":["plugin"],"summary":"Report Publish Result","description":"Report the result of a publish operation.\n\nCalled by the WordPress plugin after attempting to publish a post.","operationId":"report_publish_result_api_plugin_report_post","parameters":[{"name":"X-SEOPro-API-Key","in":"header","required":false,"schema":{"type":"string","title":"X-Seopro-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginPublishReportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/plugin/websites/{website_id}/generate-key":{"post":{"tags":["plugin"],"summary":"Generate Plugin Key","description":"Generate a new plugin API key for a website.\n\nThis key is used by the WordPress plugin to authenticate with SEOPro AI.","operationId":"generate_plugin_key_api_plugin_websites__website_id__generate_key_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneratePluginKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/plugin/websites/{website_id}/status":{"get":{"tags":["plugin"],"summary":"Get Plugin Status","description":"Get the plugin connection status for a website.","operationId":"get_plugin_status_api_plugin_websites__website_id__status_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/plugin/websites/{website_id}/key":{"delete":{"tags":["plugin"],"summary":"Revoke Plugin Key","description":"Revoke the plugin API key for a website.","operationId":"revoke_plugin_key_api_plugin_websites__website_id__key_delete","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"X-User-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}},{"name":"X-Organization-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Organization-Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/free-tools/{tool_name}/generate":{"post":{"tags":["free-tools"],"summary":"Generate","description":"Generate output for a free SEO tool.\n\nRate limits:\n- Anonymous: 5 uses/day\n- Free users: 15 uses/day\n- Paid users: Unlimited","operationId":"generate_api_free_tools__tool_name__generate_post","parameters":[{"name":"tool_name","in":"path","required":true,"schema":{"type":"string","title":"Tool Name"}},{"name":"x-forwarded-for","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Forwarded-For"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreeToolGenerateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreeToolGenerateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/free-tools/results/{result_id}":{"get":{"tags":["free-tools"],"summary":"Get Result","description":"Get a shared tool result by ID.","operationId":"get_result_api_free_tools_results__result_id__get","parameters":[{"name":"result_id","in":"path","required":true,"schema":{"type":"string","title":"Result Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreeToolResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/free-tools/rate-limit":{"get":{"tags":["free-tools"],"summary":"Get Rate Limit Status","description":"Get current rate limit status.","operationId":"get_rate_limit_status_api_free_tools_rate_limit_get","parameters":[{"name":"x-forwarded-for","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Forwarded-For"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/free-tools/analytics":{"post":{"tags":["free-tools"],"summary":"Record Analytics","description":"Record an analytics event for free tools.","operationId":"record_analytics_api_free_tools_analytics_post","parameters":[{"name":"x-forwarded-for","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Forwarded-For"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreeToolAnalyticsEvent"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/free-tools/{tool_name}/can-use":{"get":{"tags":["free-tools"],"summary":"Can Use Tool","description":"Check if user can use a specific tool (pre-flight check for UI).","operationId":"can_use_tool_api_free_tools__tool_name__can_use_get","parameters":[{"name":"tool_name","in":"path","required":true,"schema":{"type":"string","title":"Tool Name"}},{"name":"x-forwarded-for","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Forwarded-For"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/public-blog/posts":{"post":{"tags":["Public Blog"],"summary":"Create Or Update Post","description":"Create or update a public blog post (upsert by slug).\n\nIf a post with the given slug exists, it will be updated.\nOtherwise, a new post will be created.\n\nRequires API key with `blogs:publish` scope.","operationId":"create_or_update_post_api_public_blog_posts_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicBlogPostCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicBlogPostResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]},"get":{"tags":["Public Blog"],"summary":"List Posts","description":"List published blog posts with pagination.\n\nThis endpoint is public (no authentication required).\nOnly returns posts with status='published'.","operationId":"list_posts_api_public_blog_posts_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Posts per page","default":12,"title":"Per Page"},"description":"Posts per page"},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by category slug","title":"Category"},"description":"Filter by category slug"},{"name":"tag","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by tag","title":"Tag"},"description":"Filter by tag"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicBlogPostListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/public-blog/posts/{slug}":{"get":{"tags":["Public Blog"],"summary":"Get Post","description":"Get a single published blog post by slug.\n\nThis endpoint is public (no authentication required).\nOnly returns posts with status='published'.","operationId":"get_post_api_public_blog_posts__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicBlogPost"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]},"delete":{"tags":["Public Blog"],"summary":"Delete Post","description":"Delete a blog post by slug.\n\nRequires API key with `blogs:publish` scope.","operationId":"delete_post_api_public_blog_posts__slug__delete","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/api/public-blog/categories":{"get":{"tags":["Public Blog"],"summary":"List Categories","description":"List all blog categories.\n\nThis endpoint is public (no authentication required).","operationId":"list_categories_api_public_blog_categories_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicBlogCategoryListResponse"}}}}},"security":[]}},"/api/marketing/attribution":{"post":{"tags":["marketing"],"summary":"Capture Attribution","description":"Persist marketing attribution captured client-side.\n\nCalled after every successful auth (sign-up and sign-in). Each call\ninserts a new row so we keep history; the read path in\ncreate_checkout_session takes the most-recent row with non-null fields.","operationId":"capture_attribution_api_marketing_attribution_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttributionPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/websites/{website_id}/opportunities":{"get":{"tags":["social_opportunities"],"summary":"List Opportunities","description":"Return latest opportunities for a website with enhanced filtering and pagination.","operationId":"list_opportunities_api_social_websites__website_id__opportunities_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"platform","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform"}},{"name":"opportunity_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Opportunity Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpportunitiesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/opportunities/{opportunity_id}":{"patch":{"tags":["social_opportunities"],"summary":"Update Opportunity","description":"Update opportunity status.","operationId":"update_opportunity_api_social_opportunities__opportunity_id__patch","parameters":[{"name":"opportunity_id","in":"path","required":true,"schema":{"type":"integer","title":"Opportunity Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpportunityStatus"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/websites/{website_id}/opportunities/stats":{"get":{"tags":["social_opportunities"],"summary":"Get Opportunity Stats","description":"Get opportunity statistics for a website, optionally filtered by platform.","operationId":"get_opportunity_stats_api_social_websites__website_id__opportunities_stats_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"platform","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpportunityStats"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/websites/{website_id}/platforms":{"get":{"tags":["social_opportunities"],"summary":"Get Available Platforms","description":"Get list of platforms that have opportunities for this website.","operationId":"get_available_platforms_api_social_websites__website_id__platforms_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/opportunities/{opportunity_id}/generate-comment":{"post":{"tags":["social_opportunities"],"summary":"Generate Comment For Opportunity","description":"Generate a comment for a specific opportunity.","operationId":"generate_comment_for_opportunity_api_social_opportunities__opportunity_id__generate_comment_post","parameters":[{"name":"opportunity_id","in":"path","required":true,"schema":{"type":"integer","title":"Opportunity Id"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateCommentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/websites/{website_id}/scan":{"post":{"tags":["social_opportunities"],"summary":"Scan Opportunities","description":"Trigger a manual scan for opportunities for a specific website.","operationId":"scan_opportunities_api_social_websites__website_id__scan_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/websites/{website_id}/scan/stream":{"get":{"tags":["social_opportunities"],"summary":"Stream Scan Opportunities","description":"Stream opportunities as they are discovered in real-time.","operationId":"stream_scan_opportunities_api_social_websites__website_id__scan_stream_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/websites/{website_id}/initialize":{"post":{"tags":["social_opportunities"],"summary":"Initialize Social Monitoring","description":"Initialize social media monitoring for a website after addon purchase.\n\nThis will:\n1. Generate keywords if they don't exist\n2. Discover relevant subreddits\n3. Trigger initial scan for opportunities","operationId":"initialize_social_monitoring_api_social_websites__website_id__initialize_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/websites/{website_id}/platform-integrations":{"get":{"tags":["platform_integrations"],"summary":"List Platform Integrations","description":"Get platform integrations for a website.","operationId":"list_platform_integrations_api_social_websites__website_id__platform_integrations_get","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"platform","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlatformIntegrationOut"},"title":"Response List Platform Integrations Api Social Websites  Website Id  Platform Integrations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["platform_integrations"],"summary":"Create Platform Integration","description":"Create a new platform integration.","operationId":"create_platform_integration_api_social_websites__website_id__platform_integrations_post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"authorization","in":"header","required":true,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformIntegrationIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformIntegrationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/platform-integrations/{config_id}":{"put":{"tags":["platform_integrations"],"summary":"Update Platform Integration","description":"Update an existing platform integration.","operationId":"update_platform_integration_api_social_platform_integrations__config_id__put","parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"string","title":"Config Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformIntegrationIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformIntegrationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["platform_integrations"],"summary":"Delete Platform Integration","description":"Delete a platform integration.","operationId":"delete_platform_integration_api_social_platform_integrations__config_id__delete","parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"string","title":"Config Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/autopilot/run":{"post":{"tags":["platform_integrations"],"summary":"Run Autopilot","description":"Manually trigger the autopilot task.","operationId":"run_autopilot_api_social_autopilot_run_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutopilotStatsOut"}}}}}}},"/api/social/autopilot/stats":{"get":{"tags":["platform_integrations"],"summary":"Get Autopilot Stats","description":"Get autopilot activity statistics.","operationId":"get_autopilot_stats_api_social_autopilot_stats_get","parameters":[{"name":"website_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Website Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/platform-integrations/{config_id}/activity":{"get":{"tags":["platform_integrations"],"summary":"Get Integration Activity","description":"Get activity statistics for a specific platform integration.","operationId":"get_integration_activity_api_social_platform_integrations__config_id__activity_get","parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"string","title":"Config Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/websites/{website_id}/test-connection/{platform}":{"post":{"tags":["platform_integrations"],"summary":"Test Platform Connection","description":"Make a lightweight API call to verify connection health.\n\nOn success, resolves any open integration_incidents for the platform.\nOn failure, returns the error reason without modifying any state.","operationId":"test_platform_connection_api_social_websites__website_id__test_connection__platform__post","parameters":[{"name":"website_id","in":"path","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"platform","in":"path","required":true,"schema":{"type":"string","title":"Platform"}},{"name":"x-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/linkedin/auth-url":{"get":{"tags":["social_oauth"],"summary":"Linkedin Auth Url","operationId":"linkedin_auth_url_api_social_linkedin_auth_url_get","parameters":[{"name":"website_id","in":"query","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"x-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Linkedin Auth Url Api Social Linkedin Auth Url Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/linkedin/callback":{"get":{"tags":["social_oauth"],"summary":"Linkedin Callback","operationId":"linkedin_callback_api_social_linkedin_callback_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},{"name":"error_description","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Description"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/facebook/auth-url":{"get":{"tags":["social_oauth"],"summary":"Facebook Auth Url","operationId":"facebook_auth_url_api_social_facebook_auth_url_get","parameters":[{"name":"website_id","in":"query","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"x-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Facebook Auth Url Api Social Facebook Auth Url Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/instagram/auth-url":{"get":{"tags":["social_oauth"],"summary":"Instagram Auth Url","operationId":"instagram_auth_url_api_social_instagram_auth_url_get","parameters":[{"name":"website_id","in":"query","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"x-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Instagram Auth Url Api Social Instagram Auth Url Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/instagram/callback":{"get":{"tags":["social_oauth"],"summary":"Instagram Callback","description":"Instagram OAuth callback - delegates to facebook_callback since Instagram uses Facebook OAuth.","operationId":"instagram_callback_api_social_instagram_callback_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},{"name":"error_description","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Description"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/facebook/callback":{"get":{"tags":["social_oauth"],"summary":"Facebook Callback","operationId":"facebook_callback_api_social_facebook_callback_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},{"name":"error_description","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Description"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/facebook/data-deletion":{"post":{"tags":["social_oauth"],"summary":"Facebook Data Deletion","description":"Handle Facebook data deletion callback (GDPR compliance).\n\nFacebook calls this endpoint when a user requests deletion of their data.\nWe must delete all stored user data and return a confirmation.\n\nReference: https://developers.facebook.com/docs/development/create-an-app/app-dashboard/data-deletion-callback","operationId":"facebook_data_deletion_api_social_facebook_data_deletion_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_facebook_data_deletion_api_social_facebook_data_deletion_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/facebook/deletion-status":{"get":{"tags":["social_oauth"],"summary":"Facebook Deletion Status","description":"Status page for Facebook data deletion requests.\n\nThis endpoint is shown to users when they check the status of their deletion request.","operationId":"facebook_deletion_status_api_social_facebook_deletion_status_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/x/auth-url":{"get":{"tags":["social_oauth"],"summary":"X Auth Url","operationId":"x_auth_url_api_social_x_auth_url_get","parameters":[{"name":"website_id","in":"query","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"x-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response X Auth Url Api Social X Auth Url Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/x/callback":{"get":{"tags":["social_oauth"],"summary":"X Callback","operationId":"x_callback_api_social_x_callback_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}},{"name":"state","in":"query","required":true,"schema":{"type":"string","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/x/oauth1/auth-url":{"get":{"tags":["social_oauth"],"summary":"X Oauth1 Auth Url","operationId":"x_oauth1_auth_url_api_social_x_oauth1_auth_url_get","parameters":[{"name":"website_id","in":"query","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"x-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response X Oauth1 Auth Url Api Social X Oauth1 Auth Url Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/x/oauth1/callback":{"get":{"tags":["social_oauth"],"summary":"X Oauth1 Callback","operationId":"x_oauth1_callback_api_social_x_oauth1_callback_get","parameters":[{"name":"oauth_token","in":"query","required":true,"schema":{"type":"string","title":"Oauth Token"}},{"name":"oauth_verifier","in":"query","required":true,"schema":{"type":"string","title":"Oauth Verifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/status":{"get":{"tags":["social_oauth"],"summary":"Get Social Status","description":"Get connection status for all social media platforms.","operationId":"get_social_status_api_social_status_get","parameters":[{"name":"website_id","in":"query","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"x-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Social Status Api Social Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/linkedin/organizations":{"get":{"tags":["social_oauth"],"summary":"Get Linkedin Organizations","description":"Get the list of LinkedIn organizations for the connected account.","operationId":"get_linkedin_organizations_api_social_linkedin_organizations_get","parameters":[{"name":"website_id","in":"query","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"x-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Linkedin Organizations Api Social Linkedin Organizations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/linkedin/select-organization":{"post":{"tags":["social_oauth"],"summary":"Select Linkedin Organization","description":"Select which LinkedIn organization or personal profile to post to by default.","operationId":"select_linkedin_organization_api_social_linkedin_select_organization_post","parameters":[{"name":"website_id","in":"query","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"organization_urn","in":"query","required":true,"schema":{"type":"string","title":"Organization Urn"}},{"name":"x-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Select Linkedin Organization Api Social Linkedin Select Organization Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/disconnect":{"delete":{"tags":["social_oauth"],"summary":"Disconnect Social","description":"Disconnect a social media platform.","operationId":"disconnect_social_api_social_disconnect_delete","parameters":[{"name":"platform","in":"query","required":true,"schema":{"type":"string","title":"Platform"}},{"name":"website_id","in":"query","required":true,"schema":{"type":"integer","title":"Website Id"}},{"name":"x-user-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Disconnect Social Api Social Disconnect Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AIToolComparisonResponse":{"properties":{"question":{"type":"string","title":"Question","description":"The question that was asked to the LLMs"},"website_url":{"type":"string","title":"Website Url","description":"The URL of the website that was analyzed"},"website_summary":{"type":"string","title":"Website Summary","description":"Summary of what the website is about"},"results":{"items":{"$ref":"#/components/schemas/LLMComparisonResult"},"type":"array","title":"Results","description":"Results from different LLMs"},"tools_comparison":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Tools Comparison","description":"Comparison of tools across LLMs"}},"type":"object","required":["question","website_url","website_summary","results"],"title":"AIToolComparisonResponse","description":"Response model for the AI SEO Tracker tool."},"AIVisibility":{"properties":{"score":{"type":"integer","title":"Score"},"trend":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Trend"},"llms_citing":{"items":{"type":"string"},"type":"array","title":"Llms Citing"},"llms_not_citing":{"items":{"type":"string"},"type":"array","title":"Llms Not Citing"},"analysis_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Analysis Id"},"last_run_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Run At"},"open_findings_count":{"type":"integer","title":"Open Findings Count","default":0}},"type":"object","required":["score","llms_citing","llms_not_citing"],"title":"AIVisibility"},"AIVisibilityDetailsResponse":{"properties":{"score":{"type":"integer","title":"Score"},"calculated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Calculated At"},"summary":{"$ref":"#/components/schemas/AIVisibilitySummary"},"findings":{"items":{"$ref":"#/components/schemas/AIVisibilityFinding"},"type":"array","title":"Findings"}},"type":"object","required":["score","summary","findings"],"title":"AIVisibilityDetailsResponse"},"AIVisibilityFinding":{"properties":{"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query"},"model":{"type":"string","title":"Model"},"cited":{"type":"boolean","title":"Cited"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"},"competitors_cited":{"items":{"type":"string"},"type":"array","title":"Competitors Cited","default":[]}},"type":"object","required":["model","cited"],"title":"AIVisibilityFinding"},"AIVisibilitySummary":{"properties":{"total_queries":{"type":"integer","title":"Total Queries"},"queries_with_citation":{"type":"integer","title":"Queries With Citation"},"citing_models":{"items":{"type":"string"},"type":"array","title":"Citing Models"},"not_citing_models":{"items":{"type":"string"},"type":"array","title":"Not Citing Models"}},"type":"object","required":["total_queries","queries_with_citation","citing_models","not_citing_models"],"title":"AIVisibilitySummary"},"APIKeyCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name","description":"Friendly name for the API key"},"environment":{"type":"string","title":"Environment","description":"Environment: 'live' or 'test'","default":"live"},"expires_in_days":{"anyOf":[{"type":"integer","maximum":365.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Expires In Days","description":"Optional expiration in days"},"scopes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scopes","description":"Optional list of permission scopes"},"website_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Website Id","description":"Optional website ID to mark as API-managed when generating the key"}},"type":"object","required":["name"],"title":"APIKeyCreate","description":"Request model for creating a new API key"},"APIKeyDeleteResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"}},"type":"object","required":["success","message"],"title":"APIKeyDeleteResponse","description":"Response model for deleting an API key"},"APIKeyListItem":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"created_at":{"type":"string","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Used At"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At"},"is_active":{"type":"boolean","title":"Is Active"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"request_count":{"type":"integer","title":"Request Count","default":0}},"type":"object","required":["id","name","key_prefix","created_at","last_used_at","expires_at","is_active","scopes"],"title":"APIKeyListItem","description":"Response model for listing API keys (without full key)"},"APIKeyListResponse":{"properties":{"keys":{"items":{"$ref":"#/components/schemas/APIKeyListItem"},"type":"array","title":"Keys"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["keys","total"],"title":"APIKeyListResponse","description":"Response model for listing all API keys"},"APIKeyResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"full_key":{"type":"string","title":"Full Key"},"created_at":{"type":"string","title":"Created At"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"}},"type":"object","required":["id","name","key_prefix","full_key","created_at","expires_at","scopes"],"title":"APIKeyResponse","description":"Response model for API key (with full key - only shown once!)"},"APIKeyRevokeResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"}},"type":"object","required":["success","message"],"title":"APIKeyRevokeResponse","description":"Response model for revoking an API key"},"APIKeyUsageLimits":{"properties":{"hourly":{"additionalProperties":true,"type":"object","title":"Hourly"},"daily":{"additionalProperties":true,"type":"object","title":"Daily"},"monthly":{"additionalProperties":true,"type":"object","title":"Monthly"},"allowed":{"type":"boolean","title":"Allowed"},"limit_exceeded":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Limit Exceeded"}},"type":"object","required":["hourly","daily","monthly","allowed"],"title":"APIKeyUsageLimits","description":"Response model for API key usage and limits"},"AcceptInviteResponse":{"properties":{"organization_id":{"type":"string","title":"Organization Id"},"role":{"type":"string","enum":["owner","admin","editor"],"title":"Role"},"already_member":{"type":"boolean","title":"Already Member","default":false}},"type":"object","required":["organization_id","role"],"title":"AcceptInviteResponse"},"ActionItemResponse":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","title":"Type"},"priority":{"type":"string","title":"Priority"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"impact":{"type":"string","title":"Impact"},"deep_link":{"type":"string","title":"Deep Link"},"one_click_action":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"One Click Action"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","default":{}}},"type":"object","required":["id","type","priority","title","description","impact","deep_link"],"title":"ActionItemResponse"},"AffiliateLink":{"properties":{"url":{"type":"string","maxLength":2048,"title":"Url"},"anchor_text":{"type":"string","maxLength":160,"title":"Anchor Text"},"placement_hint":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Placement Hint","description":"Optional hint for where the link should be placed in the article"}},"type":"object","required":["url","anchor_text"],"title":"AffiliateLink"},"AlertHistoryItem":{"properties":{"id":{"type":"integer","title":"Id"},"alert_type":{"type":"string","title":"Alert Type"},"severity":{"type":"string","title":"Severity"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"deep_link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deep Link"},"resolved":{"type":"boolean","title":"Resolved"},"resolved_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolved At"},"created_at":{"type":"string","title":"Created At"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","default":{}}},"type":"object","required":["id","alert_type","severity","title","description","deep_link","resolved","resolved_at","created_at"],"title":"AlertHistoryItem"},"AlertHistoryResponse":{"properties":{"alerts":{"items":{"$ref":"#/components/schemas/AlertHistoryItem"},"type":"array","title":"Alerts"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["alerts","total"],"title":"AlertHistoryResponse"},"AlertItem":{"properties":{"id":{"type":"integer","title":"Id"},"type":{"type":"string","title":"Type"},"severity":{"type":"string","title":"Severity"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"deep_link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deep Link"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","type","severity","title","description","created_at"],"title":"AlertItem"},"AlertPreferencesResponse":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"alert_types":{"items":{"type":"string"},"type":"array","title":"Alert Types"},"frequency":{"type":"string","title":"Frequency"}},"type":"object","required":["enabled","alert_types","frequency"],"title":"AlertPreferencesResponse"},"ApplyCouponRequest":{"properties":{"stripe_subscription_id":{"type":"string","title":"Stripe Subscription Id"},"coupon_id":{"type":"string","title":"Coupon Id"}},"type":"object","required":["stripe_subscription_id","coupon_id"],"title":"ApplyCouponRequest"},"ArticleReport":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"keywords":{"items":{"type":"string"},"type":"array","title":"Keywords"},"topic_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Topic Id"},"created_at":{"type":"string","title":"Created At"},"indexed":{"type":"boolean","title":"Indexed","default":false},"published_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published Url"}},"type":"object","required":["id","title","keywords","created_at"],"title":"ArticleReport"},"AttributionPayload":{"properties":{"fbclid":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Fbclid"},"fbp":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Fbp"},"fbc":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Fbc"},"gclid":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Gclid"},"utm_source":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Utm Source"},"utm_medium":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Utm Medium"},"utm_campaign":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Utm Campaign"},"utm_content":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Utm Content"},"utm_term":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Utm Term"},"landing_url":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Landing Url"},"referrer":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Referrer"}},"type":"object","title":"AttributionPayload"},"AuditIssue":{"properties":{"category":{"type":"string","title":"Category"},"type":{"type":"string","title":"Type"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"impact":{"type":"string","title":"Impact"},"recommendation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recommendation"},"value":{"anyOf":[{},{"type":"null"}],"title":"Value"}},"type":"object","required":["category","type","title","description","impact"],"title":"AuditIssue","description":"Represents a single audit issue or finding"},"AuditRequest":{"properties":{"url":{"type":"string","title":"Url","description":"URL to audit"}},"type":"object","required":["url"],"title":"AuditRequest","description":"Request model for SEO audit"},"AutopilotPreferences":{"properties":{"publishing_days":{"items":{"type":"integer"},"type":"array","title":"Publishing Days"},"publishing_time":{"type":"string","title":"Publishing Time"},"posts_per_day":{"type":"integer","title":"Posts Per Day","default":1},"publish_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publish Mode","default":"publish"}},"type":"object","required":["publishing_days","publishing_time"],"title":"AutopilotPreferences"},"AutopilotStatsOut":{"properties":{"total_processed":{"type":"integer","title":"Total Processed"},"comments_posted":{"type":"integer","title":"Comments Posted"},"comments_failed":{"type":"integer","title":"Comments Failed"},"skipped_timing":{"type":"integer","title":"Skipped Timing"},"skipped_frequency":{"type":"integer","title":"Skipped Frequency"},"errors":{"items":{"type":"string"},"type":"array","title":"Errors"}},"type":"object","required":["total_processed","comments_posted","comments_failed","skipped_timing","skipped_frequency","errors"],"title":"AutopilotStatsOut","description":"Statistics model for autopilot operations."},"AutopilotUpdate":{"properties":{"autopilot":{"type":"boolean","title":"Autopilot"}},"type":"object","required":["autopilot"],"title":"AutopilotUpdate"},"AvgPositionDetailsResponse":{"properties":{"avg_position":{"type":"number","title":"Avg Position"},"period":{"additionalProperties":{"type":"string"},"type":"object","title":"Period"},"keyword_breakdown":{"items":{"$ref":"#/components/schemas/KeywordPositionRow"},"type":"array","title":"Keyword Breakdown"}},"type":"object","required":["avg_position","period","keyword_breakdown"],"title":"AvgPositionDetailsResponse"},"BacklinkExchangeStats":{"properties":{"backlinks_earned":{"type":"integer","title":"Backlinks Earned"},"backlinks_placed":{"type":"integer","title":"Backlinks Placed"},"pending_requests":{"type":"integer","title":"Pending Requests"},"credits_available":{"type":"integer","title":"Credits Available"},"credits_used":{"type":"integer","title":"Credits Used"},"monthly_limit":{"type":"integer","title":"Monthly Limit"},"unique_sources":{"type":"integer","title":"Unique Sources"},"network_enabled":{"type":"boolean","title":"Network Enabled"}},"type":"object","required":["backlinks_earned","backlinks_placed","pending_requests","credits_available","credits_used","monthly_limit","unique_sources","network_enabled"],"title":"BacklinkExchangeStats"},"BacklinkMetrics":{"properties":{"total_backlinks":{"type":"integer","title":"Total Backlinks","default":0},"unique_domains":{"type":"integer","title":"Unique Domains","default":0},"published_links":{"type":"integer","title":"Published Links","default":0},"pending_links":{"type":"integer","title":"Pending Links","default":0},"domain_rating":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain Rating"}},"type":"object","title":"BacklinkMetrics"},"BacklinkTargetRequest":{"properties":{"target_url":{"type":"string","title":"Target Url"}},"type":"object","required":["target_url"],"title":"BacklinkTargetRequest"},"Blog":{"properties":{"title":{"type":"string","title":"Title"},"content":{"type":"string","title":"Content"},"html_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Html Content"},"keywords":{"items":{"$ref":"#/components/schemas/TopicKeyword"},"type":"array","title":"Keywords"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"status":{"type":"string","title":"Status","default":"draft"},"meta_description":{"type":"string","title":"Meta Description"},"featured_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Featured Image"},"feedback":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Feedback"},"published_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published Url","description":"The URL where the blog post is published on the CMS platform"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"Legacy field - use published_url instead"},"id":{"type":"integer","title":"Id"},"website_id":{"type":"integer","title":"Website Id"},"topic_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Topic Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["title","content","meta_description","id","website_id","created_at","updated_at"],"title":"Blog"},"BlogGenerateRequest":{"properties":{"website_id":{"type":"integer","title":"Website Id"},"keywords":{"items":{"type":"string"},"type":"array","title":"Keywords"},"language_code":{"type":"string","title":"Language Code","default":"en"},"keyword_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Keyword Id"},"search_intent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search Intent"}},"type":"object","required":["website_id","keywords"],"title":"BlogGenerateRequest"},"BlogUpdateSchema":{"properties":{"title":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Title"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"meta_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Description"},"featured_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Featured Image"},"published_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published Url"}},"type":"object","title":"BlogUpdateSchema"},"BloggerIntegration":{"properties":{"access_token":{"type":"string","title":"Access Token"},"blog_id":{"type":"string","title":"Blog Id"}},"type":"object","required":["access_token","blog_id"],"title":"BloggerIntegration"},"Body_facebook_data_deletion_api_social_facebook_data_deletion_post":{"properties":{"signed_request":{"type":"string","title":"Signed Request"}},"type":"object","required":["signed_request"],"title":"Body_facebook_data_deletion_api_social_facebook_data_deletion_post"},"Body_publish_blog_draft_api_blog_drafts__draft_id__publish_post":{"properties":{"publish_as_draft":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Publish As Draft"}},"type":"object","title":"Body_publish_blog_draft_api_blog_drafts__draft_id__publish_post"},"Body_regenerate_blog_content_api_blog_drafts__blog_id__regenerate_post":{"properties":{"instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions"}},"type":"object","title":"Body_regenerate_blog_content_api_blog_drafts__blog_id__regenerate_post"},"Body_regenerate_blog_image_api_blog_drafts__blog_id__regenerate_image_post":{"properties":{"instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions"}},"type":"object","title":"Body_regenerate_blog_image_api_blog_drafts__blog_id__regenerate_image_post"},"Body_reject_blog_draft_api_blog_drafts__draft_id__reject_post":{"properties":{"feedback":{"type":"string","title":"Feedback"}},"type":"object","required":["feedback"],"title":"Body_reject_blog_draft_api_blog_drafts__draft_id__reject_post"},"Body_test_reference_image_generation_api_test_reference_image_generation__website_id__post":{"properties":{"test_title":{"type":"string","title":"Test Title"}},"type":"object","required":["test_title"],"title":"Body_test_reference_image_generation_api_test_reference_image_generation__website_id__post"},"Body_upload_reference_image_api_upload_reference_image__website_id__post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_reference_image_api_upload_reference_image__website_id__post"},"Body_upload_website_image_api_website_images__website_id__post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_website_image_api_website_images__website_id__post"},"BusinessHoursInterval":{"properties":{"open":{"type":"string","title":"Open"},"close":{"type":"string","title":"Close"},"open_24h":{"type":"boolean","title":"Open 24H","default":false}},"type":"object","required":["open","close"],"title":"BusinessHoursInterval"},"CaseStudyStat":{"properties":{"stat":{"type":"string","title":"Stat"},"label":{"type":"string","title":"Label"}},"type":"object","required":["stat","label"],"title":"CaseStudyStat"},"ClicksDetailsResponse":{"properties":{"total_clicks":{"type":"integer","title":"Total Clicks"},"period":{"additionalProperties":{"type":"string"},"type":"object","title":"Period"},"top_keywords":{"items":{"$ref":"#/components/schemas/KeywordClickRow"},"type":"array","title":"Top Keywords"}},"type":"object","required":["total_clicks","period","top_keywords"],"title":"ClicksDetailsResponse"},"ContentAudit":{"properties":{"word_count":{"type":"integer","title":"Word Count","default":0},"paragraph_count":{"type":"integer","title":"Paragraph Count","default":0},"avg_paragraph_length":{"type":"number","title":"Avg Paragraph Length","default":0},"reading_time_minutes":{"type":"number","title":"Reading Time Minutes","default":0},"has_structured_data":{"type":"boolean","title":"Has Structured Data","default":false},"structured_data_types":{"items":{"type":"string"},"type":"array","title":"Structured Data Types","default":[]}},"type":"object","title":"ContentAudit","description":"Content quality audit"},"ContentExtractionRequest":{"properties":{"content":{"type":"string","title":"Content","description":"Content to extract keywords from"}},"type":"object","required":["content"],"title":"ContentExtractionRequest"},"ContentPlanRequest":{"properties":{"user_topics_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Topics Instructions"},"primary_keywords":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Keywords"},"secondary_keywords":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secondary Keywords"},"replace_existing_topics":{"type":"boolean","title":"Replace Existing Topics","default":false}},"type":"object","title":"ContentPlanRequest"},"CreditClaimCreateRequest":{"properties":{"activity":{"type":"string","title":"Activity"},"proof_url":{"type":"string","title":"Proof Url"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["activity","proof_url"],"title":"CreditClaimCreateRequest"},"CreditClaimReviewRequest":{"properties":{"action":{"type":"string","title":"Action"},"reviewer_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewer Note"}},"type":"object","required":["action"],"title":"CreditClaimReviewRequest"},"DeltaMetric":{"properties":{"current":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current","default":0},"previous":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Previous","default":0},"change":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Change","default":0},"change_percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Change Percent","default":0},"trend":{"type":"string","title":"Trend","default":"flat"}},"type":"object","title":"DeltaMetric"},"DraftUpdate":{"properties":{"draft_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Draft Title"},"draft_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Draft Content"},"draft_meta_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Draft Meta Description"}},"type":"object","title":"DraftUpdate"},"EntitySchemaProfile":{"properties":{"site_id":{"type":"integer","title":"Site Id"},"enabled":{"type":"boolean","title":"Enabled","default":false},"schema_type":{"anyOf":[{"$ref":"#/components/schemas/EntitySchemaType"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"same_as":{"items":{"type":"string"},"type":"array","title":"Same As"},"version":{"type":"integer","title":"Version","default":1},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"}},"type":"object","required":["site_id"],"title":"EntitySchemaProfile"},"EntitySchemaProfileUpdate":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":true},"schema_type":{"$ref":"#/components/schemas/EntitySchemaType","default":"Organization"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"same_as":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Same As"}},"type":"object","title":"EntitySchemaProfileUpdate"},"EntitySchemaType":{"type":"string","enum":["LocalBusiness","Organization"],"title":"EntitySchemaType"},"ExecuteActionRequest":{"properties":{"action_type":{"type":"string","title":"Action Type"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","default":{}}},"type":"object","required":["action_type"],"title":"ExecuteActionRequest"},"FAQ":{"properties":{"question":{"type":"string","title":"Question"},"answer":{"type":"string","title":"Answer"}},"type":"object","required":["question","answer"],"title":"FAQ"},"FreeToolAnalyticsEvent":{"properties":{"tool_name":{"type":"string","title":"Tool Name"},"event_type":{"type":"string","title":"Event Type","description":"page_view, generation, share, copy, export"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["tool_name","event_type"],"title":"FreeToolAnalyticsEvent","description":"Analytics event for free tools."},"FreeToolGenerateRequest":{"properties":{"input_data":{"additionalProperties":true,"type":"object","title":"Input Data","description":"Tool-specific input data"}},"type":"object","required":["input_data"],"title":"FreeToolGenerateRequest","description":"Generic request wrapper for free tool generation."},"FreeToolGenerateResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"result_id":{"type":"string","title":"Result Id","description":"UUID for shareable link"},"tool_name":{"type":"string","title":"Tool Name"},"output":{"additionalProperties":true,"type":"object","title":"Output"},"remaining_uses":{"type":"integer","title":"Remaining Uses","description":"Remaining uses for today"},"share_url":{"type":"string","title":"Share Url","description":"Shareable URL for results"}},"type":"object","required":["result_id","tool_name","output","remaining_uses","share_url"],"title":"FreeToolGenerateResponse","description":"Response for free tool generation."},"FreeToolResult":{"properties":{"id":{"type":"string","title":"Id"},"tool_name":{"type":"string","title":"Tool Name"},"input":{"additionalProperties":true,"type":"object","title":"Input"},"output":{"additionalProperties":true,"type":"object","title":"Output"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["id","tool_name","input","output","created_at","expires_at"],"title":"FreeToolResult","description":"Stored result for sharing."},"GenerateCommentResponse":{"properties":{"generated_comment":{"type":"string","title":"Generated Comment"},"message":{"type":"string","title":"Message"}},"type":"object","required":["generated_comment","message"],"title":"GenerateCommentResponse","description":"Response model for comment generation."},"GeneratePluginKeyResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"api_key":{"type":"string","title":"Api Key"},"message":{"type":"string","title":"Message"}},"type":"object","required":["success","api_key","message"],"title":"GeneratePluginKeyResponse","description":"Response after generating a plugin API key."},"GeocodeRequest":{"properties":{"query":{"type":"string","title":"Query"}},"type":"object","required":["query"],"title":"GeocodeRequest"},"GeocodeResult":{"properties":{"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"display_name":{"type":"string","title":"Display Name"}},"type":"object","required":["latitude","longitude","display_name"],"title":"GeocodeResult"},"GhostIntegration":{"properties":{"api_url":{"type":"string","title":"Api Url","description":"Ghost Admin API URL, e.g., https://yourdomain.com"},"admin_api_key":{"type":"string","title":"Admin Api Key","description":"Ghost Admin API Key"}},"type":"object","required":["api_url","admin_api_key"],"title":"GhostIntegration"},"GoHighLevelIntegration":{"properties":{"location_id":{"type":"string","title":"Location Id"},"access_token":{"type":"string","title":"Access Token"},"blog_site_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blog Site Id"},"author_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Name"}},"type":"object","required":["location_id","access_token"],"title":"GoHighLevelIntegration"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HeadingsAudit":{"properties":{"h1_count":{"type":"integer","title":"H1 Count","default":0},"h1_texts":{"items":{"type":"string"},"type":"array","title":"H1 Texts","default":[]},"h2_count":{"type":"integer","title":"H2 Count","default":0},"h2_texts":{"items":{"type":"string"},"type":"array","title":"H2 Texts","default":[]},"h3_count":{"type":"integer","title":"H3 Count","default":0},"h4_count":{"type":"integer","title":"H4 Count","default":0},"h5_count":{"type":"integer","title":"H5 Count","default":0},"h6_count":{"type":"integer","title":"H6 Count","default":0},"heading_hierarchy_valid":{"type":"boolean","title":"Heading Hierarchy Valid","default":true}},"type":"object","title":"HeadingsAudit","description":"Headings structure audit results"},"HealthScoreBreakdown":{"properties":{"indexing":{"type":"integer","title":"Indexing"},"ranking":{"type":"integer","title":"Ranking"},"link_velocity":{"type":"integer","title":"Link Velocity"},"content_freshness":{"type":"integer","title":"Content Freshness"}},"type":"object","required":["indexing","ranking","link_velocity","content_freshness"],"title":"HealthScoreBreakdown"},"HealthScoreResponse":{"properties":{"score":{"type":"integer","title":"Score"},"grade":{"type":"string","title":"Grade"},"breakdown":{"$ref":"#/components/schemas/HealthScoreBreakdown"},"trend":{"type":"string","title":"Trend","default":"stable"},"previous_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Previous Score"}},"type":"object","required":["score","grade","breakdown"],"title":"HealthScoreResponse"},"HeroStat":{"properties":{"stat":{"type":"string","title":"Stat"},"label":{"type":"string","title":"Label"}},"type":"object","required":["stat","label"],"title":"HeroStat"},"HubSpotIntegration":{"properties":{"access_token":{"type":"string","title":"Access Token"},"content_group_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Group Id"}},"type":"object","required":["access_token"],"title":"HubSpotIntegration"},"ImagesAudit":{"properties":{"total_images":{"type":"integer","title":"Total Images","default":0},"images_with_alt":{"type":"integer","title":"Images With Alt","default":0},"images_without_alt":{"type":"integer","title":"Images Without Alt","default":0},"images_with_lazy_loading":{"type":"integer","title":"Images With Lazy Loading","default":0},"large_images":{"items":{"type":"string"},"type":"array","title":"Large Images","default":[]},"missing_alt_images":{"items":{"type":"string"},"type":"array","title":"Missing Alt Images","default":[]}},"type":"object","title":"ImagesAudit","description":"Images audit results"},"InProgressAction":{"properties":{"id":{"type":"integer","title":"Id"},"keyword":{"type":"string","title":"Keyword"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["id","keyword","updated_at"],"title":"InProgressAction"},"IndustryListItem":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"page_type":{"type":"string","title":"Page Type","default":"services"},"primary_keyword":{"type":"string","title":"Primary Keyword"},"meta_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Description"},"emoji":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emoji"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"display_order":{"type":"integer","title":"Display Order","default":0},"is_featured":{"type":"boolean","title":"Is Featured","default":false}},"type":"object","required":["slug","name","primary_keyword"],"title":"IndustryListItem","description":"Lightweight model for industry listing pages"},"IndustryResponse":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"page_type":{"type":"string","title":"Page Type","default":"services"},"primary_keyword":{"type":"string","title":"Primary Keyword"},"secondary_keywords":{"items":{"type":"string"},"type":"array","title":"Secondary Keywords","default":[]},"meta_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Title"},"meta_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Description"},"hero_headline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hero Headline"},"hero_subheadline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hero Subheadline"},"hero_benefit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hero Benefit"},"intro_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intro Content"},"industry_stats":{"items":{"$ref":"#/components/schemas/IndustryStat"},"type":"array","title":"Industry Stats","default":[]},"pain_points":{"items":{"type":"string"},"type":"array","title":"Pain Points","default":[]},"example_searches":{"items":{"type":"string"},"type":"array","title":"Example Searches","default":[]},"content_types":{"items":{"type":"string"},"type":"array","title":"Content Types","default":[]},"avg_cpc":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Cpc"},"avg_ticket_size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avg Ticket Size"},"lifetime_value_hint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lifetime Value Hint"},"typical_roas":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Typical Roas"},"case_study_headline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Study Headline"},"case_study_stat":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Study Stat"},"case_study_timeframe":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Study Timeframe"},"case_study_city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Study City"},"faqs":{"items":{"$ref":"#/components/schemas/FAQ"},"type":"array","title":"Faqs","default":[]},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"emoji":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emoji"},"display_order":{"type":"integer","title":"Display Order","default":0},"is_featured":{"type":"boolean","title":"Is Featured","default":false},"is_published":{"type":"boolean","title":"Is Published","default":true},"primary_cta_text":{"type":"string","title":"Primary Cta Text","default":"Start Free Trial"},"primary_cta_url":{"type":"string","title":"Primary Cta Url","default":"/auth?signup=true"},"secondary_cta_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secondary Cta Text","default":"Book a Demo"},"secondary_cta_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secondary Cta Url"},"related_industries":{"items":{"type":"string"},"type":"array","title":"Related Industries","default":[]},"id":{"type":"string","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["slug","name","primary_keyword","id","created_at","updated_at"],"title":"IndustryResponse"},"IndustryStat":{"properties":{"value":{"type":"string","title":"Value"},"label":{"type":"string","title":"Label"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},"type":"object","required":["value","label"],"title":"IndustryStat","description":"Statistics specific to an industry/vertical"},"IntegrationApiKeyRequest":{"properties":{"integration":{"type":"string","enum":["duda_rss","webhook"],"title":"Integration"}},"type":"object","required":["integration"],"title":"IntegrationApiKeyRequest"},"IntegrationApiKeyResponse":{"properties":{"api_key":{"type":"string","title":"Api Key"}},"type":"object","required":["api_key"],"title":"IntegrationApiKeyResponse"},"IntegrationVerifyRequest":{"properties":{"platform":{"type":"string","title":"Platform"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"website_url":{"type":"string","title":"Website Url"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"wordpress":{"anyOf":[{"$ref":"#/components/schemas/WordPressIntegration"},{"type":"null"}]},"webflow":{"anyOf":[{"$ref":"#/components/schemas/WebflowIntegration"},{"type":"null"}]},"hubspot":{"anyOf":[{"$ref":"#/components/schemas/HubSpotIntegration"},{"type":"null"}]},"shopify":{"anyOf":[{"$ref":"#/components/schemas/ShopifyIntegration"},{"type":"null"}]},"magento":{"anyOf":[{"$ref":"#/components/schemas/MagentoIntegration"},{"type":"null"}]},"ghost":{"anyOf":[{"$ref":"#/components/schemas/GhostIntegration"},{"type":"null"}]},"wix":{"anyOf":[{"$ref":"#/components/schemas/WixIntegration"},{"type":"null"}]},"blogger":{"anyOf":[{"$ref":"#/components/schemas/BloggerIntegration"},{"type":"null"}]},"gohighlevel":{"anyOf":[{"$ref":"#/components/schemas/GoHighLevelIntegration"},{"type":"null"}]}},"type":"object","required":["platform","website_url"],"title":"IntegrationVerifyRequest"},"InviteMemberRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"role":{"type":"string","enum":["owner","admin","editor"],"title":"Role","default":"editor"}},"type":"object","required":["email"],"title":"InviteMemberRequest"},"KeywordClickRow":{"properties":{"keyword":{"type":"string","title":"Keyword"},"clicks":{"type":"integer","title":"Clicks"},"impressions":{"type":"integer","title":"Impressions"},"ctr":{"type":"number","title":"Ctr"},"avg_position":{"type":"number","title":"Avg Position"}},"type":"object","required":["keyword","clicks","impressions","ctr","avg_position"],"title":"KeywordClickRow"},"KeywordPositionRow":{"properties":{"keyword":{"type":"string","title":"Keyword"},"avg_position":{"type":"number","title":"Avg Position"},"delta_vs_previous":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Delta Vs Previous"},"clicks":{"type":"integer","title":"Clicks"}},"type":"object","required":["keyword","avg_position","clicks"],"title":"KeywordPositionRow"},"LLMComparisonResult":{"properties":{"llm_name":{"type":"string","title":"Llm Name","description":"Name of the LLM (e.g., 'GPT-4o', 'Gemini', 'Claude')"},"tools":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Tools","description":"List of tools recommended by the LLM"},"raw_response":{"type":"string","title":"Raw Response","description":"Raw response from the LLM"},"checks_run":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Checks Run","description":"Number of consensus checks run (N)"},"checks_mentioned":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Checks Mentioned","description":"Number of successful checks that returned at least one tool recommendation"},"confidence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Confidence","description":"Stability signal: 'high', 'medium', or 'low'"}},"type":"object","required":["llm_name","raw_response"],"title":"LLMComparisonResult","description":"Model for storing the results from a single LLM."},"LinksAudit":{"properties":{"internal_links":{"type":"integer","title":"Internal Links","default":0},"external_links":{"type":"integer","title":"External Links","default":0},"nofollow_links":{"type":"integer","title":"Nofollow Links","default":0},"broken_links":{"items":{"type":"string"},"type":"array","title":"Broken Links","default":[]},"links_without_text":{"type":"integer","title":"Links Without Text","default":0}},"type":"object","title":"LinksAudit","description":"Links audit results"},"LocalBusinessProfile":{"properties":{"business_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Business Name"},"phone":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Phone"},"street_address":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Street Address"},"address_locality":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Address Locality"},"address_region":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Address Region"},"postal_code":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Postal Code"},"address_country":{"anyOf":[{"type":"string","maxLength":2},{"type":"null"}],"title":"Address Country"},"latitude":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Longitude"},"primary_category":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Primary Category"},"secondary_categories":{"items":{"type":"string"},"type":"array","title":"Secondary Categories"},"business_hours":{"additionalProperties":{"items":{"$ref":"#/components/schemas/BusinessHoursInterval"},"type":"array"},"type":"object","title":"Business Hours"},"service_areas":{"items":{"type":"string"},"type":"array","title":"Service Areas"},"gbp_url":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Gbp Url"},"booking_url":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Booking Url"},"is_service_area_business":{"type":"boolean","title":"Is Service Area Business","default":false},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"website_id":{"type":"integer","title":"Website Id"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["website_id"],"title":"LocalBusinessProfile"},"LocalBusinessProfileUpdate":{"properties":{"business_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Business Name"},"phone":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Phone"},"street_address":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Street Address"},"address_locality":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Address Locality"},"address_region":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Address Region"},"postal_code":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Postal Code"},"address_country":{"anyOf":[{"type":"string","maxLength":2},{"type":"null"}],"title":"Address Country"},"latitude":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Longitude"},"primary_category":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Primary Category"},"secondary_categories":{"items":{"type":"string"},"type":"array","title":"Secondary Categories"},"business_hours":{"additionalProperties":{"items":{"$ref":"#/components/schemas/BusinessHoursInterval"},"type":"array"},"type":"object","title":"Business Hours"},"service_areas":{"items":{"type":"string"},"type":"array","title":"Service Areas"},"gbp_url":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Gbp Url"},"booking_url":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Booking Url"},"is_service_area_business":{"type":"boolean","title":"Is Service Area Business","default":false}},"type":"object","title":"LocalBusinessProfileUpdate"},"LocalRankKeywordCreate":{"properties":{"keyword":{"type":"string","maxLength":160,"minLength":1,"title":"Keyword"},"grid_size":{"type":"integer","title":"Grid Size","default":7},"radius_miles":{"type":"number","maximum":30.0,"exclusiveMinimum":0.0,"title":"Radius Miles","default":5}},"type":"object","required":["keyword"],"title":"LocalRankKeywordCreate"},"MagentoIntegration":{"properties":{"base_url":{"type":"string","title":"Base Url"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"}},"type":"object","required":["base_url"],"title":"MagentoIntegration"},"MetaTagsAudit":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"title_length":{"type":"integer","title":"Title Length","default":0},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"description_length":{"type":"integer","title":"Description Length","default":0},"canonical":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Canonical"},"robots":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Robots"},"viewport":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Viewport"},"charset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Charset"},"og_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Og Title"},"og_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Og Description"},"og_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Og Image"},"twitter_card":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Twitter Card"},"twitter_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Twitter Title"},"twitter_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Twitter Description"}},"type":"object","title":"MetaTagsAudit","description":"Meta tags audit results"},"MissionControlResponse":{"properties":{"website_id":{"type":"integer","title":"Website Id"},"health_score":{"$ref":"#/components/schemas/HealthScoreResponse"},"what_moved":{"$ref":"#/components/schemas/WhatMovedResponse"},"whats_broken":{"items":{"$ref":"#/components/schemas/AlertItem"},"type":"array","title":"Whats Broken"},"next_actions":{"items":{"$ref":"#/components/schemas/ActionItemResponse"},"type":"array","title":"Next Actions"},"this_week_shipped":{"$ref":"#/components/schemas/ThisWeekShippedResponse"},"backlink_exchange":{"$ref":"#/components/schemas/BacklinkExchangeStats"},"ai_visibility":{"anyOf":[{"$ref":"#/components/schemas/AIVisibility"},{"type":"null"}]},"in_progress_actions":{"items":{"$ref":"#/components/schemas/InProgressAction"},"type":"array","title":"In Progress Actions","default":[]},"generated_at":{"type":"string","title":"Generated At"}},"type":"object","required":["website_id","health_score","what_moved","whats_broken","next_actions","this_week_shipped","backlink_exchange","generated_at"],"title":"MissionControlResponse"},"MonthlyTrend":{"properties":{"month":{"type":"string","title":"Month"},"total_clicks":{"type":"integer","title":"Total Clicks"},"total_impressions":{"type":"integer","title":"Total Impressions"},"total_sessions":{"type":"integer","title":"Total Sessions"},"avg_ctr":{"type":"number","title":"Avg Ctr"},"avg_position":{"type":"number","title":"Avg Position"}},"type":"object","required":["month","total_clicks","total_impressions","total_sessions","avg_ctr","avg_position"],"title":"MonthlyTrend"},"NetworkToggleRequest":{"properties":{"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["enabled"],"title":"NetworkToggleRequest"},"OnboardingProgressCreate":{"properties":{"current_step":{"type":"string","title":"Current Step"},"completed":{"type":"boolean","title":"Completed","default":false},"website_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website Url"},"blog_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blog Url"},"website_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website Name"},"integration_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Integration Type"}},"type":"object","required":["current_step"],"title":"OnboardingProgressCreate"},"OnboardingProgressUpdate":{"properties":{"current_step":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Step"},"completed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Completed"},"website_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website Url"},"blog_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blog Url"},"website_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website Name"},"integration_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Integration Type"}},"type":"object","title":"OnboardingProgressUpdate"},"OpportunitiesResponse":{"properties":{"opportunities":{"items":{"$ref":"#/components/schemas/OpportunityOut"},"type":"array","title":"Opportunities"},"total":{"type":"integer","title":"Total"},"hasMore":{"type":"boolean","title":"Hasmore"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["opportunities","total","hasMore","offset"],"title":"OpportunitiesResponse","description":"Response model for paginated opportunities."},"OpportunityOut":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"platform":{"type":"string","title":"Platform"},"platform_community":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform Community"},"url":{"type":"string","title":"Url"},"opportunity_type":{"type":"string","title":"Opportunity Type","default":"post"},"parent_post_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Post Id"},"matched_keywords":{"items":{"type":"string"},"type":"array","title":"Matched Keywords","default":[]},"matched_competitors":{"items":{"type":"string"},"type":"array","title":"Matched Competitors","default":[]},"relevance_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Relevance Score"},"context_snippet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context Snippet"},"engagement_metrics":{"additionalProperties":true,"type":"object","title":"Engagement Metrics","default":{}},"author_info":{"additionalProperties":true,"type":"object","title":"Author Info","default":{}},"platform_metadata":{"additionalProperties":true,"type":"object","title":"Platform Metadata","default":{}},"status":{"type":"string","title":"Status"},"post_created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Post Created At"},"generated_comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generated Comment"}},"type":"object","required":["id","title","platform","url","status"],"title":"OpportunityOut","description":"Response model for social media opportunities."},"OpportunityStats":{"properties":{"total":{"type":"integer","title":"Total"},"by_platform":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Platform"},"by_type":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Type"},"by_status":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Status"},"avg_relevance_score":{"type":"number","title":"Avg Relevance Score"},"top_keywords":{"additionalProperties":{"type":"integer"},"type":"object","title":"Top Keywords"},"top_competitors":{"additionalProperties":{"type":"integer"},"type":"object","title":"Top Competitors"},"avg_engagement":{"additionalProperties":{"type":"number"},"type":"object","title":"Avg Engagement"}},"type":"object","required":["total","by_platform","by_type","by_status","avg_relevance_score","top_keywords","top_competitors","avg_engagement"],"title":"OpportunityStats","description":"Statistics model for opportunities."},"OpportunityStatus":{"properties":{"status":{"type":"string","title":"Status"}},"type":"object","required":["status"],"title":"OpportunityStatus","description":"Model for updating opportunity status."},"PauseSubscriptionRequest":{"properties":{"stripe_subscription_id":{"type":"string","title":"Stripe Subscription Id"},"months":{"type":"integer","maximum":3.0,"minimum":1.0,"title":"Months"}},"type":"object","required":["stripe_subscription_id","months"],"title":"PauseSubscriptionRequest"},"PendingPost":{"properties":{"blog_id":{"type":"integer","title":"Blog Id"},"title":{"type":"string","title":"Title"},"content":{"type":"string","title":"Content"},"status":{"type":"string","title":"Status","default":"publish"},"meta_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Title"},"meta_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Description"},"focus_keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Focus Keyword"},"featured_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Featured Image Url"},"categories":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Categories"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"}},"type":"object","required":["blog_id","title","content"],"title":"PendingPost","description":"A post pending publication via pull model."},"PendingPostsResponse":{"properties":{"posts":{"items":{"$ref":"#/components/schemas/PendingPost"},"type":"array","title":"Posts"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["posts","total"],"title":"PendingPostsResponse","description":"Response with pending posts for pull model."},"PerformanceAudit":{"properties":{"load_time_ms":{"type":"number","title":"Load Time Ms","default":0},"page_size_bytes":{"type":"integer","title":"Page Size Bytes","default":0},"dom_elements":{"type":"integer","title":"Dom Elements","default":0},"inline_css_count":{"type":"integer","title":"Inline Css Count","default":0},"inline_js_count":{"type":"integer","title":"Inline Js Count","default":0},"external_css_count":{"type":"integer","title":"External Css Count","default":0},"external_js_count":{"type":"integer","title":"External Js Count","default":0}},"type":"object","title":"PerformanceAudit","description":"Performance indicators"},"PlatformIntegrationIn":{"properties":{"website_id":{"type":"integer","title":"Website Id"},"platform":{"type":"string","title":"Platform"},"autopilot_enabled":{"type":"boolean","title":"Autopilot Enabled","default":false},"platform_config":{"additionalProperties":true,"type":"object","title":"Platform Config"},"max_comments_per_day":{"type":"integer","title":"Max Comments Per Day","default":5},"max_comments_per_subreddit_per_day":{"type":"integer","title":"Max Comments Per Subreddit Per Day","default":2},"preferred_hours":{"items":{"type":"integer"},"type":"array","title":"Preferred Hours","default":[18,19,20]},"timezone":{"type":"string","title":"Timezone","default":"America/New_York"}},"type":"object","required":["website_id","platform","platform_config"],"title":"PlatformIntegrationIn","description":"Input model for creating platform integrations."},"PlatformIntegrationOut":{"properties":{"id":{"type":"string","title":"Id"},"user_id":{"type":"string","title":"User Id"},"website_id":{"type":"integer","title":"Website Id"},"platform":{"type":"string","title":"Platform"},"autopilot_enabled":{"type":"boolean","title":"Autopilot Enabled"},"platform_config":{"additionalProperties":true,"type":"object","title":"Platform Config"},"max_comments_per_day":{"type":"integer","title":"Max Comments Per Day"},"max_comments_per_subreddit_per_day":{"type":"integer","title":"Max Comments Per Subreddit Per Day"},"preferred_hours":{"items":{"type":"integer"},"type":"array","title":"Preferred Hours"},"timezone":{"type":"string","title":"Timezone"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["id","user_id","website_id","platform","autopilot_enabled","platform_config","max_comments_per_day","max_comments_per_subreddit_per_day","preferred_hours","timezone","created_at","updated_at"],"title":"PlatformIntegrationOut","description":"Output model for platform integrations."},"PlatformListItem":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"primary_keyword":{"type":"string","title":"Primary Keyword"},"meta_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Description"},"integration_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Integration Type"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"display_order":{"type":"integer","title":"Display Order","default":0},"is_featured":{"type":"boolean","title":"Is Featured","default":false}},"type":"object","required":["slug","name","primary_keyword"],"title":"PlatformListItem","description":"Lightweight model for platform listing pages"},"PlatformResponse":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"primary_keyword":{"type":"string","title":"Primary Keyword"},"secondary_keywords":{"items":{"type":"string"},"type":"array","title":"Secondary Keywords","default":[]},"meta_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Title"},"meta_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Description"},"hero_headline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hero Headline"},"hero_subheadline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hero Subheadline"},"hero_benefit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hero Benefit"},"intro_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intro Content"},"industry_stats":{"items":{"$ref":"#/components/schemas/IndustryStat"},"type":"array","title":"Industry Stats","default":[]},"hero_stats":{"items":{"$ref":"#/components/schemas/HeroStat"},"type":"array","title":"Hero Stats","default":[]},"platform_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform Description"},"platform_strengths":{"items":{"type":"string"},"type":"array","title":"Platform Strengths","default":[]},"platform_seo_challenges":{"items":{"type":"string"},"type":"array","title":"Platform Seo Challenges","default":[]},"our_solutions":{"items":{"type":"string"},"type":"array","title":"Our Solutions","default":[]},"integration_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Integration Type"},"integration_features":{"items":{"type":"string"},"type":"array","title":"Integration Features","default":[]},"setup_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Setup Time"},"automation_capabilities":{"items":{"type":"string"},"type":"array","title":"Automation Capabilities","default":[]},"what_we_do":{"items":{"type":"string"},"type":"array","title":"What We Do","default":[]},"process_steps":{"items":{"$ref":"#/components/schemas/ProcessStep"},"type":"array","title":"Process Steps","default":[]},"pricing_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pricing Note"},"example_searches":{"items":{"type":"string"},"type":"array","title":"Example Searches","default":[]},"typical_results":{"items":{"$ref":"#/components/schemas/HeroStat"},"type":"array","title":"Typical Results","default":[]},"time_to_results":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time To Results"},"roi_potential":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Roi Potential"},"case_study_headline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Study Headline"},"case_study_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Study Description"},"case_study_stats":{"items":{"$ref":"#/components/schemas/CaseStudyStat"},"type":"array","title":"Case Study Stats","default":[]},"case_study_store_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Study Store Type"},"case_study_niche":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Study Niche"},"trust_signals":{"items":{"type":"string"},"type":"array","title":"Trust Signals","default":[]},"testimonial_quote":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Testimonial Quote"},"testimonial_author":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Testimonial Author"},"testimonial_business":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Testimonial Business"},"faqs":{"items":{"$ref":"#/components/schemas/FAQ"},"type":"array","title":"Faqs","default":[]},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"display_order":{"type":"integer","title":"Display Order","default":0},"is_featured":{"type":"boolean","title":"Is Featured","default":false},"is_published":{"type":"boolean","title":"Is Published","default":true},"related_platforms":{"items":{"type":"string"},"type":"array","title":"Related Platforms","default":[]},"related_industries":{"items":{"type":"string"},"type":"array","title":"Related Industries","default":[]},"id":{"type":"string","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["slug","name","primary_keyword","id","created_at","updated_at"],"title":"PlatformResponse"},"PluginPublishReportRequest":{"properties":{"site_url":{"type":"string","title":"Site Url","description":"WordPress site URL"},"blog_id":{"type":"integer","title":"Blog Id","description":"SEOPro blog ID"},"success":{"type":"boolean","title":"Success","description":"Whether publish was successful"},"wordpress_post_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Wordpress Post Id","description":"WordPress post ID if successful"},"published_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published Url","description":"Published URL if successful"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"Post status (publish, draft, etc.)"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message","description":"Error message if failed"}},"type":"object","required":["site_url","blog_id","success"],"title":"PluginPublishReportRequest","description":"Report from plugin about publish result."},"PluginStatusResponse":{"properties":{"connected":{"type":"boolean","title":"Connected"},"plugin_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plugin Version"},"last_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen"},"api_key_generated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Api Key Generated At"}},"type":"object","required":["connected"],"title":"PluginStatusResponse","description":"Response with plugin connection status."},"PluginVerifyRequest":{"properties":{"site_url":{"type":"string","title":"Site Url","description":"WordPress site URL"},"plugin_version":{"type":"string","title":"Plugin Version","description":"Plugin version"},"seo_plugin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seo Plugin","description":"Detected SEO plugin"},"wordpress_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wordpress Version","description":"WordPress version"},"php_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Php Version","description":"PHP version"}},"type":"object","required":["site_url","plugin_version"],"title":"PluginVerifyRequest","description":"Request from plugin to verify connection."},"PluginVerifyResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"website_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Website Id"},"website_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website Name"}},"type":"object","required":["success","message"],"title":"PluginVerifyResponse","description":"Response for plugin verification."},"ProcessStep":{"properties":{"step":{"type":"string","title":"Step"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"}},"type":"object","required":["step","title","description"],"title":"ProcessStep"},"ProductUpdateRequest":{"properties":{"owner":{"type":"string","title":"Owner","description":"GitHub repository owner","default":"vinodvarma24"},"repo":{"type":"string","title":"Repo","description":"GitHub repository name","default":"seopro-ai"},"since_days":{"type":"integer","maximum":90.0,"minimum":1.0,"title":"Since Days","description":"Days to look back for changes","default":14},"recipient_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipient Email","description":"Override recipient email"},"dry_run":{"type":"boolean","title":"Dry Run","description":"If true, generate but don't send email","default":false}},"type":"object","title":"ProductUpdateRequest","description":"Request body for triggering a product update."},"ProductUpdateResponse":{"properties":{"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"},"commits_count":{"type":"integer","title":"Commits Count","default":0},"prs_count":{"type":"integer","title":"Prs Count","default":0},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"body_preview":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Preview"},"dry_run":{"type":"boolean","title":"Dry Run","default":false},"broadcast_created":{"type":"boolean","title":"Broadcast Created","default":false},"broadcast_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Broadcast Id"},"bento_dashboard_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bento Dashboard Url"}},"type":"object","required":["status","message"],"title":"ProductUpdateResponse","description":"Response from product update generation."},"ProfessionListItem":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"service_type":{"type":"string","title":"Service Type"},"primary_keyword":{"type":"string","title":"Primary Keyword"},"meta_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Description"},"emoji":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emoji"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"display_order":{"type":"integer","title":"Display Order","default":0},"is_featured":{"type":"boolean","title":"Is Featured","default":false}},"type":"object","required":["slug","name","service_type","primary_keyword"],"title":"ProfessionListItem","description":"Lightweight model for profession listing pages"},"ProfessionResponse":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"service_type":{"type":"string","title":"Service Type"},"primary_keyword":{"type":"string","title":"Primary Keyword"},"secondary_keywords":{"items":{"type":"string"},"type":"array","title":"Secondary Keywords","default":[]},"meta_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Title"},"meta_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Description"},"hero_headline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hero Headline"},"hero_subheadline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hero Subheadline"},"hero_benefit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hero Benefit"},"intro_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intro Content"},"industry_stats":{"items":{"$ref":"#/components/schemas/IndustryStat"},"type":"array","title":"Industry Stats","default":[]},"hero_stats":{"items":{"$ref":"#/components/schemas/HeroStat"},"type":"array","title":"Hero Stats","default":[]},"pain_points":{"items":{"type":"string"},"type":"array","title":"Pain Points","default":[]},"common_mistakes":{"items":{"type":"string"},"type":"array","title":"Common Mistakes","default":[]},"solutions":{"items":{"type":"string"},"type":"array","title":"Solutions","default":[]},"what_we_do":{"items":{"type":"string"},"type":"array","title":"What We Do","default":[]},"process_steps":{"items":{"$ref":"#/components/schemas/ProcessStep"},"type":"array","title":"Process Steps","default":[]},"pricing_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pricing Note"},"example_searches":{"items":{"type":"string"},"type":"array","title":"Example Searches","default":[]},"typical_results":{"items":{"$ref":"#/components/schemas/HeroStat"},"type":"array","title":"Typical Results","default":[]},"time_to_results":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time To Results"},"roi_potential":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Roi Potential"},"case_study_headline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Study Headline"},"case_study_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Study Description"},"case_study_stats":{"items":{"$ref":"#/components/schemas/CaseStudyStat"},"type":"array","title":"Case Study Stats","default":[]},"case_study_business_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Study Business Type"},"case_study_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Study Location"},"trust_signals":{"items":{"type":"string"},"type":"array","title":"Trust Signals","default":[]},"testimonial_quote":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Testimonial Quote"},"testimonial_author":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Testimonial Author"},"testimonial_business":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Testimonial Business"},"faqs":{"items":{"$ref":"#/components/schemas/FAQ"},"type":"array","title":"Faqs","default":[]},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"emoji":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emoji"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"display_order":{"type":"integer","title":"Display Order","default":0},"is_featured":{"type":"boolean","title":"Is Featured","default":false},"is_published":{"type":"boolean","title":"Is Published","default":true},"related_professions":{"items":{"type":"string"},"type":"array","title":"Related Professions","default":[]},"related_industries":{"items":{"type":"string"},"type":"array","title":"Related Industries","default":[]},"id":{"type":"string","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["slug","name","service_type","primary_keyword","id","created_at","updated_at"],"title":"ProfessionResponse"},"PublicBlogCategoryListResponse":{"properties":{"categories":{"items":{"$ref":"#/components/schemas/PublicBlogCategoryResponse"},"type":"array","title":"Categories"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["categories","total"],"title":"PublicBlogCategoryListResponse","description":"Response model for listing categories"},"PublicBlogCategoryResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["id","name","slug","description"],"title":"PublicBlogCategoryResponse","description":"Response model for a blog category"},"PublicBlogPost":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"slug":{"type":"string","title":"Slug"},"content":{"type":"string","title":"Content"},"excerpt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Excerpt"},"featured_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Featured Image Url"},"featured_image_alt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Featured Image Alt"},"meta_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Title"},"meta_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Description"},"canonical_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Canonical Url"},"focus_keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Focus Keyword"},"category_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Id"},"category_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Name"},"category_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Slug"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"status":{"type":"string","title":"Status"},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published At"},"author_name":{"type":"string","title":"Author Name"},"reading_time_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reading Time Minutes"},"word_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Word Count"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["id","title","slug","content","excerpt","featured_image_url","featured_image_alt","meta_title","meta_description","canonical_url","focus_keyword","category_id","category_name","category_slug","tags","status","published_at","author_name","reading_time_minutes","word_count","created_at","updated_at"],"title":"PublicBlogPost","description":"Full blog post detail response"},"PublicBlogPostCreate":{"properties":{"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title","description":"Post title"},"slug":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Slug","description":"URL slug (auto-generated from title if not provided)"},"content":{"type":"string","title":"Content","description":"Full HTML content of the post"},"excerpt":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Excerpt","description":"Short excerpt for previews"},"featured_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Featured Image Url","description":"URL of the featured image"},"featured_image_alt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Featured Image Alt","description":"Alt text for featured image"},"meta_title":{"anyOf":[{"type":"string","maxLength":70},{"type":"null"}],"title":"Meta Title","description":"SEO meta title"},"meta_description":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Meta Description","description":"SEO meta description"},"canonical_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Canonical Url","description":"Canonical URL if different from default"},"focus_keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Focus Keyword","description":"Primary SEO keyword"},"category_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Slug","description":"Category slug to assign"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"List of tags"},"status":{"type":"string","title":"Status","description":"Post status: draft, published, or archived","default":"draft"},"author_name":{"type":"string","title":"Author Name","description":"Author name to display","default":"SEOPro AI"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At","description":"Publication date (auto-set on first publish)"}},"type":"object","required":["title","content"],"title":"PublicBlogPostCreate","description":"Request model for creating/updating a public blog post"},"PublicBlogPostListItem":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"slug":{"type":"string","title":"Slug"},"excerpt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Excerpt"},"featured_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Featured Image Url"},"featured_image_alt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Featured Image Alt"},"category_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Name"},"category_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Slug"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published At"},"author_name":{"type":"string","title":"Author Name"},"reading_time_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reading Time Minutes"}},"type":"object","required":["id","title","slug","excerpt","featured_image_url","featured_image_alt","category_name","category_slug","tags","published_at","author_name","reading_time_minutes"],"title":"PublicBlogPostListItem","description":"Blog post item for list responses"},"PublicBlogPostListResponse":{"properties":{"posts":{"items":{"$ref":"#/components/schemas/PublicBlogPostListItem"},"type":"array","title":"Posts"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total_pages":{"type":"integer","title":"Total Pages"}},"type":"object","required":["posts","total","page","per_page","total_pages"],"title":"PublicBlogPostListResponse","description":"Response model for listing blog posts with pagination"},"PublicBlogPostResponse":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"slug":{"type":"string","title":"Slug"},"status":{"type":"string","title":"Status"},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published At"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"},"url":{"type":"string","title":"Url","description":"Full URL to the published post"}},"type":"object","required":["id","title","slug","status","published_at","created_at","updated_at","url"],"title":"PublicBlogPostResponse","description":"Response model after creating/updating a blog post"},"RateLimitResponse":{"properties":{"remaining_uses":{"type":"integer","title":"Remaining Uses"},"limit":{"type":"integer","title":"Limit"},"reset_at":{"type":"string","format":"date-time","title":"Reset At","description":"When the rate limit resets (midnight UTC)"},"user_type":{"$ref":"#/components/schemas/UserType"}},"type":"object","required":["remaining_uses","limit","reset_at","user_type"],"title":"RateLimitResponse","description":"Response with rate limit information."},"RecommendationStatusUpdate":{"properties":{"status":{"type":"string","enum":["pending","accepted","rejected","completed"],"title":"Status"}},"type":"object","required":["status"],"title":"RecommendationStatusUpdate"},"SEOAuditResult":{"properties":{"url":{"type":"string","title":"Url"},"audit_date":{"type":"string","title":"Audit Date"},"overall_score":{"type":"integer","title":"Overall Score","default":0},"meta_tags":{"$ref":"#/components/schemas/MetaTagsAudit"},"headings":{"$ref":"#/components/schemas/HeadingsAudit"},"images":{"$ref":"#/components/schemas/ImagesAudit"},"links":{"$ref":"#/components/schemas/LinksAudit"},"performance":{"$ref":"#/components/schemas/PerformanceAudit"},"content":{"$ref":"#/components/schemas/ContentAudit"},"security":{"$ref":"#/components/schemas/SecurityAudit"},"issues":{"items":{"$ref":"#/components/schemas/AuditIssue"},"type":"array","title":"Issues","default":[]},"passed_checks":{"type":"integer","title":"Passed Checks","default":0},"warning_checks":{"type":"integer","title":"Warning Checks","default":0},"error_checks":{"type":"integer","title":"Error Checks","default":0}},"type":"object","required":["url","audit_date","meta_tags","headings","images","links","performance","content","security"],"title":"SEOAuditResult","description":"Complete SEO audit result"},"SERPResult":{"properties":{"title":{"type":"string","title":"Title"},"url":{"type":"string","title":"Url"}},"type":"object","required":["title","url"],"title":"SERPResult"},"ScheduledKeyword":{"properties":{"keyword":{"type":"string","title":"Keyword"},"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic"},"volume":{"type":"integer","title":"Volume","default":0},"competition":{"type":"string","title":"Competition","default":"MEDIUM"},"difficulty":{"type":"integer","title":"Difficulty","default":50},"scheduled_date":{"type":"string","format":"date-time","title":"Scheduled Date"},"status":{"type":"string","title":"Status","default":"pending"},"blog_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Blog Id"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","default":"ai"},"serp_results":{"anyOf":[{"items":{"$ref":"#/components/schemas/SERPResult"},"type":"array"},{"type":"null"}],"title":"Serp Results"},"cluster_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cluster Name"},"cluster_keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cluster Keywords"},"content_angle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Angle"},"article_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Article Type"},"id":{"type":"integer","title":"Id"},"website_id":{"type":"integer","title":"Website Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["keyword","scheduled_date","id","website_id","created_at","updated_at"],"title":"ScheduledKeyword"},"ScheduledKeywordCreate":{"properties":{"keyword":{"type":"string","title":"Keyword"},"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic"},"volume":{"type":"integer","title":"Volume","default":0},"competition":{"type":"string","title":"Competition","default":"MEDIUM"},"difficulty":{"type":"integer","title":"Difficulty","default":50},"scheduled_date":{"type":"string","format":"date-time","title":"Scheduled Date"},"status":{"type":"string","title":"Status","default":"pending"},"blog_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Blog Id"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","default":"ai"},"serp_results":{"anyOf":[{"items":{"$ref":"#/components/schemas/SERPResult"},"type":"array"},{"type":"null"}],"title":"Serp Results"},"cluster_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cluster Name"},"cluster_keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cluster Keywords"},"content_angle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Angle"},"article_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Article Type"},"website_id":{"type":"integer","title":"Website Id"}},"type":"object","required":["keyword","scheduled_date","website_id"],"title":"ScheduledKeywordCreate"},"SearchInsightsDetail":{"properties":{"date":{"type":"string","title":"Date"},"source_type":{"type":"string","title":"Source Type"},"source_detail":{"type":"string","title":"Source Detail"},"device":{"type":"string","title":"Device"},"country":{"type":"string","title":"Country"},"clicks":{"type":"integer","title":"Clicks"},"impressions":{"type":"integer","title":"Impressions"},"ctr":{"type":"number","title":"Ctr"},"avg_position":{"type":"number","title":"Avg Position"},"sessions":{"type":"integer","title":"Sessions"},"page_views":{"type":"integer","title":"Page Views"},"bounce_rate":{"type":"number","title":"Bounce Rate"},"avg_session_duration":{"type":"number","title":"Avg Session Duration"},"landing_page":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Landing Page"}},"type":"object","required":["date","source_type","source_detail","device","country","clicks","impressions","ctr","avg_position","sessions","page_views","bounce_rate","avg_session_duration"],"title":"SearchInsightsDetail"},"SearchInsightsSummary":{"properties":{"website_id":{"type":"integer","title":"Website Id"},"date_range":{"type":"string","title":"Date Range"},"total_clicks":{"type":"integer","title":"Total Clicks"},"total_impressions":{"type":"integer","title":"Total Impressions"},"total_sessions":{"type":"integer","title":"Total Sessions"},"avg_ctr":{"type":"number","title":"Avg Ctr"},"avg_position":{"type":"number","title":"Avg Position"},"avg_bounce_rate":{"type":"number","title":"Avg Bounce Rate"},"top_keywords":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Top Keywords"},"top_ai_sources":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Top Ai Sources"},"device_breakdown":{"additionalProperties":{"type":"integer"},"type":"object","title":"Device Breakdown"},"country_breakdown":{"additionalProperties":{"type":"integer"},"type":"object","title":"Country Breakdown"}},"type":"object","required":["website_id","date_range","total_clicks","total_impressions","total_sessions","avg_ctr","avg_position","avg_bounce_rate","top_keywords","top_ai_sources","device_breakdown","country_breakdown"],"title":"SearchInsightsSummary"},"SecurityAudit":{"properties":{"is_https":{"type":"boolean","title":"Is Https","default":false},"has_hsts":{"type":"boolean","title":"Has Hsts","default":false},"has_x_frame_options":{"type":"boolean","title":"Has X Frame Options","default":false},"has_x_content_type_options":{"type":"boolean","title":"Has X Content Type Options","default":false},"has_csp":{"type":"boolean","title":"Has Csp","default":false}},"type":"object","title":"SecurityAudit","description":"Security audit results"},"ServiceTypeListItem":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"primary_keyword":{"type":"string","title":"Primary Keyword"},"meta_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Description"},"emoji":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emoji"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"display_order":{"type":"integer","title":"Display Order","default":0},"is_featured":{"type":"boolean","title":"Is Featured","default":false}},"type":"object","required":["slug","name","primary_keyword"],"title":"ServiceTypeListItem","description":"Lightweight model for service type listing pages"},"ServiceTypeResponse":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"primary_keyword":{"type":"string","title":"Primary Keyword"},"secondary_keywords":{"items":{"type":"string"},"type":"array","title":"Secondary Keywords","default":[]},"meta_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Title"},"meta_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Meta Description"},"hero_headline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hero Headline"},"hero_subheadline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hero Subheadline"},"hero_benefit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hero Benefit"},"intro_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intro Content"},"industry_stats":{"items":{"$ref":"#/components/schemas/IndustryStat"},"type":"array","title":"Industry Stats","default":[]},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"use_cases":{"items":{"type":"string"},"type":"array","title":"Use Cases","default":[]},"best_for":{"items":{"type":"string"},"type":"array","title":"Best For","default":[]},"key_features":{"items":{"type":"string"},"type":"array","title":"Key Features","default":[]},"deliverables":{"items":{"type":"string"},"type":"array","title":"Deliverables","default":[]},"vs_alternatives":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Vs Alternatives","default":[]},"typical_results":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Typical Results"},"time_to_results":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time To Results"},"roi_potential":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Roi Potential"},"case_study_headline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Study Headline"},"case_study_stat":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Study Stat"},"case_study_timeframe":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Study Timeframe"},"case_study_business_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Case Study Business Type"},"faqs":{"items":{"$ref":"#/components/schemas/FAQ"},"type":"array","title":"Faqs","default":[]},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"emoji":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emoji"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"display_order":{"type":"integer","title":"Display Order","default":0},"is_featured":{"type":"boolean","title":"Is Featured","default":false},"is_published":{"type":"boolean","title":"Is Published","default":true},"primary_cta_text":{"type":"string","title":"Primary Cta Text","default":"Start Free Trial"},"primary_cta_url":{"type":"string","title":"Primary Cta Url","default":"/auth?signup=true"},"secondary_cta_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secondary Cta Text","default":"Learn More"},"secondary_cta_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secondary Cta Url"},"related_service_types":{"items":{"type":"string"},"type":"array","title":"Related Service Types","default":[]},"related_industries":{"items":{"type":"string"},"type":"array","title":"Related Industries","default":[]},"id":{"type":"string","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["slug","name","primary_keyword","id","created_at","updated_at"],"title":"ServiceTypeResponse"},"ShopifyIntegration":{"properties":{"store_name":{"type":"string","title":"Store Name"},"access_token":{"type":"string","title":"Access Token"},"blog_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Blog Id"},"author_name":{"type":"string","title":"Author Name"}},"type":"object","required":["store_name","access_token","author_name"],"title":"ShopifyIntegration"},"ThisWeekShippedResponse":{"properties":{"posts_published":{"type":"integer","title":"Posts Published"},"pages_indexed":{"type":"integer","title":"Pages Indexed"},"links_placed":{"type":"integer","title":"Links Placed"},"keywords_improved":{"type":"integer","title":"Keywords Improved"}},"type":"object","required":["posts_published","pages_indexed","links_placed","keywords_improved"],"title":"ThisWeekShippedResponse"},"TopicKeyword":{"properties":{"keyword":{"type":"string","title":"Keyword"},"monthly_searches":{"type":"integer","title":"Monthly Searches","default":0},"competition":{"type":"string","title":"Competition","default":"MEDIUM"},"estimated_total_traffic":{"type":"integer","title":"Estimated Total Traffic","default":0},"opportunity_score":{"type":"number","title":"Opportunity Score","default":0},"serp_features":{"items":{"type":"string"},"type":"array","title":"Serp Features"},"related_keywords":{"items":{"type":"string"},"type":"array","title":"Related Keywords"}},"type":"object","required":["keyword"],"title":"TopicKeyword"},"UpdateMemberRoleRequest":{"properties":{"role":{"type":"string","enum":["owner","admin","editor"],"title":"Role"}},"type":"object","required":["role"],"title":"UpdateMemberRoleRequest"},"UpdatePreferencesRequest":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"alert_types":{"items":{"type":"string"},"type":"array","title":"Alert Types"},"frequency":{"type":"string","title":"Frequency","default":"weekly"}},"type":"object","required":["enabled","alert_types"],"title":"UpdatePreferencesRequest"},"UpdateSubscriptionQuantityRequest":{"properties":{"stripe_subscription_id":{"type":"string","title":"Stripe Subscription Id","description":"The Stripe ID of the subscription to update."},"new_quantity":{"type":"integer","exclusiveMinimum":0.0,"title":"New Quantity","description":"The desired new quantity (must be > 0)."}},"type":"object","required":["stripe_subscription_id","new_quantity"],"title":"UpdateSubscriptionQuantityRequest"},"UserProfile":{"properties":{"id":{"type":"string","title":"Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"account_type":{"type":"string","title":"Account Type","default":"company"},"organization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Id"},"organization_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Name"},"organization_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Role"}},"type":"object","required":["id"],"title":"UserProfile"},"UserType":{"type":"string","enum":["anonymous","free","paid"],"title":"UserType","description":"User tier for rate limiting."},"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"},"WebflowCollectionsRequest":{"properties":{"api_key":{"type":"string","title":"Api Key"},"site_id":{"type":"string","title":"Site Id"}},"type":"object","required":["api_key","site_id"],"title":"WebflowCollectionsRequest"},"WebflowIntegration":{"properties":{"api_key":{"type":"string","title":"Api Key"},"site_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Site Id"},"collection_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Collection Id"}},"type":"object","required":["api_key"],"title":"WebflowIntegration"},"WebflowSitesRequest":{"properties":{"api_key":{"type":"string","title":"Api Key"}},"type":"object","required":["api_key"],"title":"WebflowSitesRequest"},"WebflowTestRequest":{"properties":{"api_key":{"type":"string","title":"Api Key"},"site_id":{"type":"string","title":"Site Id"}},"type":"object","required":["api_key","site_id"],"title":"WebflowTestRequest"},"WebflowTestResponse":{"properties":{"success":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Success","default":true},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"sites":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Sites"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","title":"WebflowTestResponse"},"WebhookTestRequest":{"properties":{"endpoint":{"type":"string","title":"Endpoint"},"access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},"type":"object","required":["endpoint"],"title":"WebhookTestRequest"},"WebhookTestResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["success","message"],"title":"WebhookTestResponse"},"Website":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Name"},"website_url":{"type":"string","maxLength":255,"title":"Website Url"},"blog_url":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Blog Url"},"entity_schema_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Entity Schema Enabled","description":"Enable site-wide JSON-LD entity schema injection","default":false},"entity_schema_type":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Entity Schema Type"},"entity_schema_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Entity Schema Name"},"entity_schema_url":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Entity Schema Url"},"entity_schema_same_as":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Entity Schema Same As"},"entity_schema_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Entity Schema Version"},"entity_schema_created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Entity Schema Created At"},"entity_schema_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Entity Schema Updated At"},"entity_schema_published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Entity Schema Published At"},"platform":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Platform"},"hubspot_access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hubspot Access Token"},"hubspot_content_group_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Hubspot Content Group Id"},"wordpress_application_url":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Wordpress Application Url"},"wordpress_username":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Wordpress Username"},"wordpress_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wordpress Password"},"wp_plugin_api_key":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Wp Plugin Api Key","description":"API key for WordPress plugin authentication"},"wp_plugin_key_generated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Wp Plugin Key Generated At","description":"When the plugin API key was generated"},"wp_plugin_version":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Wp Plugin Version","description":"Version of the installed WordPress plugin"},"wp_plugin_last_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Wp Plugin Last Seen","description":"Last time the plugin communicated with SEOPro AI"},"wp_plugin_connected":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Wp Plugin Connected","description":"Whether the WordPress plugin is connected and verified","default":false},"duda_rss_api_key":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Duda Rss Api Key"},"webflow_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webflow Api Key"},"webflow_site_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Webflow Site Id"},"webflow_collection_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Webflow Collection Id"},"shopify_store_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Shopify Store Name"},"shopify_access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shopify Access Token"},"shopify_blog_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shopify Blog Id","description":"Numeric Shopify blog ID"},"shopify_author_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Shopify Author Name"},"blogger_access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blogger Access Token"},"blogger_blog_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Blogger Blog Id"},"blogger_oauth_credentials":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Blogger Oauth Credentials"},"magento_base_url":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Magento Base Url"},"magento_username":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Magento Username"},"magento_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Magento Password"},"magento_blog_path":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Magento Blog Path","description":"Optional path prefix under which Magento CMS pages are publicly available, e.g., 'blog' or 'en/blog'"},"magento_store_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Magento Store Id","description":"Magento store view ID to use when creating URL rewrites (defaults to 1)"},"wix_site_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Wix Site Id"},"wix_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wix Api Key"},"ghost_api_url":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Ghost Api Url","description":"Ghost Admin API URL"},"ghost_admin_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ghost Admin Api Key","description":"Ghost Admin API Key"},"gohighlevel_location_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Gohighlevel Location Id"},"gohighlevel_access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gohighlevel Access Token"},"gohighlevel_blog_site_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Gohighlevel Blog Site Id"},"gohighlevel_author_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Gohighlevel Author Name"},"email_notification":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Email Notification"},"autopilot":{"type":"boolean","title":"Autopilot","default":false},"autopilot_preferences":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Autopilot Preferences"},"company_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Description"},"unique_features":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Unique Features"},"website_analysis":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Website Analysis"},"problem":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Problem"},"solution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Solution"},"pricing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pricing"},"audience":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience"},"blog_focus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blog Focus"},"language":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Language"},"image_size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Size","description":"Preferred size for blog cover images, e.g., 1024x1024, 1536x1024, 1024x1536"},"image_prompt_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Prompt Instructions","description":"Custom instructions for the AI image generator prompt for blog covers"},"image_style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Style","description":"Preferred visual style for AI-generated blog cover images"},"image_uniqueness_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Uniqueness Level","description":"Desired variety level for generated blog cover images: balanced, distinct, or highly_distinct"},"brand_color":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Brand Color","description":"Primary brand color (hex or CSS color name) to influence cover images"},"reference_image_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Reference Image Url","description":"URL of the reference/product image stored in S3"},"use_uploaded_images":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Uploaded Images","description":"Use uploaded images instead of generating with AI","default":false},"blog_generation_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blog Generation Instructions","description":"Custom instructions for the AI blog post generator"},"style_example_urls":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Style Example Urls","description":"Best article example URLs that capture the desired writing style (up to 3)"},"content_planner_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Planner Instructions","description":"Custom instructions for keyword analysis and content planning to avoid specific competitors or focus on particular topics"},"affiliate_links":{"anyOf":[{"items":{"$ref":"#/components/schemas/AffiliateLink"},"type":"array"},{"type":"null"}],"title":"Affiliate Links","description":"Affiliate links to include in generated blog posts"},"use_paa_questions":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Paa Questions","description":"Enable to use People Also Ask questions for topic generation","default":false},"content_style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Style","description":"Content style preference: conversational, informative, or professional"},"youtube_channel_url":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Youtube Channel Url","description":"URL of the client's YouTube channel"},"include_youtube_videos":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Youtube Videos","description":"Automatically embed relevant YouTube videos in generated blogs","default":true},"include_images":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Images","description":"Generate AI cover and inline images for blog posts","default":true},"include_additional_resources":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Additional Resources","description":"Append Additional Resources section with external links above the CTA","default":false},"max_internal_links":{"anyOf":[{"type":"integer","maximum":10.0,"minimum":1.0},{"type":"null"}],"title":"Max Internal Links","description":"Maximum number of internal links to add to each blog post (1-10, default: 5)","default":5},"blog_word_count":{"anyOf":[{"type":"integer","maximum":4000.0,"minimum":1000.0},{"type":"null"}],"title":"Blog Word Count","description":"Target word count for generated blog posts (500-5000, default: 2000)","default":2000},"custom_css":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Css","description":"Custom CSS stylesheet to apply to generated blog posts. All HTML elements use 'seopro-' class prefix."},"include_default_styles":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Default Styles","description":"Include default inline styles in generated HTML. Set to False to use only custom CSS.","default":true},"cta_style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cta Style","description":"Preferred CTA layout preset (e.g., minimal, spotlight, outline).","default":"minimal"},"cta_card_color":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Cta Card Color","description":"CTA card background color (hex or CSS color keyword)."},"cta_button_color":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Cta Button Color","description":"CTA primary button color (hex or CSS color keyword)."},"webhook_integration_name":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Webhook Integration Name","description":"Friendly name for your webhook integration"},"webhook_endpoint":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Webhook Endpoint","description":"HTTPS endpoint that will receive publish events"},"webhook_access_token":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Webhook Access Token","description":"Secret token used to authorize webhook calls"},"social_keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Social Keywords","description":"Keywords to monitor on social media platforms"},"social_subreddits":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Social Subreddits","description":"Subreddits to monitor for opportunities"},"competitors":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Competitors","description":"Competitor names to monitor"},"domain_rating":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Domain Rating"},"backlink_credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Backlink Credits"},"monthly_backlink_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Monthly Backlink Limit"},"network_participation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Network Participation","default":true},"backlink_summary":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Backlink Summary"},"id":{"type":"integer","title":"Id"},"user_id":{"type":"string","title":"User Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"subscription":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Subscription"},"analysis_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Analysis Status","description":"Outcome of the last website analysis: 'complete' or 'failed'"}},"type":"object","required":["website_url","id","user_id","created_at","updated_at"],"title":"Website"},"WebsiteAddonCreate":{"properties":{"website_id":{"type":"integer","title":"Website Id"},"addon_type":{"type":"string","title":"Addon Type"},"addon_quantity":{"type":"integer","title":"Addon Quantity","default":1}},"type":"object","required":["website_id","addon_type"],"title":"WebsiteAddonCreate"},"WebsiteAnalyzeRequest":{"properties":{"website_url":{"type":"string","title":"Website Url"},"website_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website Name"},"blog_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blog Url"},"skip_analysis":{"type":"boolean","title":"Skip Analysis","default":false},"target_audiences":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Target Audiences"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"}},"type":"object","required":["website_url"],"title":"WebsiteAnalyzeRequest"},"WebsiteAnalyzeResponse":{"properties":{"website_url":{"type":"string","title":"Website Url","description":"URL of the analyzed website"},"blog_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blog Url","description":"URL of the blog if provided"},"website_id":{"type":"integer","title":"Website Id","description":"ID of the analyzed website"},"company_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Description","description":"Company description","default":""},"unique_features":{"items":{"type":"string"},"type":"array","title":"Unique Features","description":"Unique features of the website"},"problem":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Problem","description":"Problem statement identified","default":""},"solution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Solution","description":"Solution offered","default":""},"pricing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pricing","description":"Pricing information","default":""},"audience":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience","description":"Target audience","default":""},"blog_focus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blog Focus","description":"Blog focus identified","default":""},"domain_rating":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Domain Rating","description":"Domain rating of the website (DataforSEO Rank)"},"backlink_summary":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Backlink Summary","description":"Backlink summary data returned from DataforSEO API"}},"type":"object","required":["website_url","website_id"],"title":"WebsiteAnalyzeResponse"},"WebsiteCreate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Name"},"website_url":{"type":"string","maxLength":255,"title":"Website Url"},"blog_url":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Blog Url"},"entity_schema_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Entity Schema Enabled","description":"Enable site-wide JSON-LD entity schema injection","default":false},"entity_schema_type":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Entity Schema Type"},"entity_schema_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Entity Schema Name"},"entity_schema_url":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Entity Schema Url"},"entity_schema_same_as":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Entity Schema Same As"},"entity_schema_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Entity Schema Version"},"entity_schema_created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Entity Schema Created At"},"entity_schema_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Entity Schema Updated At"},"entity_schema_published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Entity Schema Published At"},"platform":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Platform"},"hubspot_access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hubspot Access Token"},"hubspot_content_group_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Hubspot Content Group Id"},"wordpress_application_url":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Wordpress Application Url"},"wordpress_username":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Wordpress Username"},"wordpress_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wordpress Password"},"wp_plugin_api_key":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Wp Plugin Api Key","description":"API key for WordPress plugin authentication"},"wp_plugin_key_generated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Wp Plugin Key Generated At","description":"When the plugin API key was generated"},"wp_plugin_version":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Wp Plugin Version","description":"Version of the installed WordPress plugin"},"wp_plugin_last_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Wp Plugin Last Seen","description":"Last time the plugin communicated with SEOPro AI"},"wp_plugin_connected":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Wp Plugin Connected","description":"Whether the WordPress plugin is connected and verified","default":false},"duda_rss_api_key":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Duda Rss Api Key"},"webflow_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webflow Api Key"},"webflow_site_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Webflow Site Id"},"webflow_collection_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Webflow Collection Id"},"shopify_store_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Shopify Store Name"},"shopify_access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shopify Access Token"},"shopify_blog_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shopify Blog Id","description":"Numeric Shopify blog ID"},"shopify_author_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Shopify Author Name"},"blogger_access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blogger Access Token"},"blogger_blog_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Blogger Blog Id"},"blogger_oauth_credentials":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Blogger Oauth Credentials"},"magento_base_url":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Magento Base Url"},"magento_username":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Magento Username"},"magento_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Magento Password"},"magento_blog_path":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Magento Blog Path","description":"Optional path prefix under which Magento CMS pages are publicly available, e.g., 'blog' or 'en/blog'"},"magento_store_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Magento Store Id","description":"Magento store view ID to use when creating URL rewrites (defaults to 1)"},"wix_site_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Wix Site Id"},"wix_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wix Api Key"},"ghost_api_url":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Ghost Api Url","description":"Ghost Admin API URL"},"ghost_admin_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ghost Admin Api Key","description":"Ghost Admin API Key"},"gohighlevel_location_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Gohighlevel Location Id"},"gohighlevel_access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gohighlevel Access Token"},"gohighlevel_blog_site_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Gohighlevel Blog Site Id"},"gohighlevel_author_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Gohighlevel Author Name"},"email_notification":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Email Notification"},"autopilot":{"type":"boolean","title":"Autopilot","default":false},"autopilot_preferences":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Autopilot Preferences"},"company_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Description"},"unique_features":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Unique Features"},"website_analysis":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Website Analysis"},"problem":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Problem"},"solution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Solution"},"pricing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pricing"},"audience":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience"},"blog_focus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blog Focus"},"language":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Language"},"image_size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Size","description":"Preferred size for blog cover images, e.g., 1024x1024, 1536x1024, 1024x1536"},"image_prompt_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Prompt Instructions","description":"Custom instructions for the AI image generator prompt for blog covers"},"image_style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Style","description":"Preferred visual style for AI-generated blog cover images"},"image_uniqueness_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Uniqueness Level","description":"Desired variety level for generated blog cover images: balanced, distinct, or highly_distinct"},"brand_color":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Brand Color","description":"Primary brand color (hex or CSS color name) to influence cover images"},"reference_image_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Reference Image Url","description":"URL of the reference/product image stored in S3"},"use_uploaded_images":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Uploaded Images","description":"Use uploaded images instead of generating with AI","default":false},"blog_generation_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blog Generation Instructions","description":"Custom instructions for the AI blog post generator"},"style_example_urls":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Style Example Urls","description":"Best article example URLs that capture the desired writing style (up to 3)"},"content_planner_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Planner Instructions","description":"Custom instructions for keyword analysis and content planning to avoid specific competitors or focus on particular topics"},"affiliate_links":{"anyOf":[{"items":{"$ref":"#/components/schemas/AffiliateLink"},"type":"array"},{"type":"null"}],"title":"Affiliate Links","description":"Affiliate links to include in generated blog posts"},"use_paa_questions":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Paa Questions","description":"Enable to use People Also Ask questions for topic generation","default":false},"content_style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Style","description":"Content style preference: conversational, informative, or professional"},"youtube_channel_url":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Youtube Channel Url","description":"URL of the client's YouTube channel"},"include_youtube_videos":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Youtube Videos","description":"Automatically embed relevant YouTube videos in generated blogs","default":true},"include_images":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Images","description":"Generate AI cover and inline images for blog posts","default":true},"include_additional_resources":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Additional Resources","description":"Append Additional Resources section with external links above the CTA","default":false},"max_internal_links":{"anyOf":[{"type":"integer","maximum":10.0,"minimum":1.0},{"type":"null"}],"title":"Max Internal Links","description":"Maximum number of internal links to add to each blog post (1-10, default: 5)","default":5},"blog_word_count":{"anyOf":[{"type":"integer","maximum":4000.0,"minimum":1000.0},{"type":"null"}],"title":"Blog Word Count","description":"Target word count for generated blog posts (500-5000, default: 2000)","default":2000},"custom_css":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Css","description":"Custom CSS stylesheet to apply to generated blog posts. All HTML elements use 'seopro-' class prefix."},"include_default_styles":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Default Styles","description":"Include default inline styles in generated HTML. Set to False to use only custom CSS.","default":true},"cta_style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cta Style","description":"Preferred CTA layout preset (e.g., minimal, spotlight, outline).","default":"minimal"},"cta_card_color":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Cta Card Color","description":"CTA card background color (hex or CSS color keyword)."},"cta_button_color":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Cta Button Color","description":"CTA primary button color (hex or CSS color keyword)."},"webhook_integration_name":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Webhook Integration Name","description":"Friendly name for your webhook integration"},"webhook_endpoint":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Webhook Endpoint","description":"HTTPS endpoint that will receive publish events"},"webhook_access_token":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Webhook Access Token","description":"Secret token used to authorize webhook calls"},"social_keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Social Keywords","description":"Keywords to monitor on social media platforms"},"social_subreddits":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Social Subreddits","description":"Subreddits to monitor for opportunities"},"competitors":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Competitors","description":"Competitor names to monitor"},"domain_rating":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Domain Rating","description":"Ahrefs Domain Rating (0-100)"},"backlink_credits":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Backlink Credits","description":"Current available backlink credits","default":0},"monthly_backlink_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Monthly Backlink Limit","description":"Monthly backlink credit allowance based on subscription tier","default":0},"network_participation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Network Participation","description":"Participate in backlink-exchange network","default":true},"backlink_summary":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Backlink Summary","description":"Raw backlink summary JSON from DataForSEO"},"user_id":{"type":"string","maxLength":255,"title":"User Id"}},"type":"object","required":["website_url","user_id"],"title":"WebsiteCreate"},"WebsiteImage":{"properties":{"website_id":{"type":"integer","title":"Website Id","description":"ID of the website this image belongs to"},"image_url":{"type":"string","maxLength":500,"title":"Image Url","description":"URL of the image stored in S3"},"original_filename":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Original Filename","description":"Original filename provided by the user during upload"},"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["website_id","image_url","id","created_at"],"title":"WebsiteImage"},"WebsiteScrapingRequest":{"properties":{"url":{"type":"string","title":"Url","description":"The URL of the website to scrape"}},"type":"object","required":["url"],"title":"WebsiteScrapingRequest","description":"Request model for scraping a website."},"WebsiteSubscriptionCreate":{"properties":{"website_id":{"type":"integer","title":"Website Id"},"plan_type":{"type":"string","title":"Plan Type"},"plan_interval":{"type":"string","title":"Plan Interval"}},"type":"object","required":["website_id","plan_type","plan_interval"],"title":"WebsiteSubscriptionCreate"},"WebsiteSubscriptionResponse":{"properties":{"id":{"type":"string","title":"Id"},"website_id":{"type":"integer","title":"Website Id"},"plan_type":{"type":"string","title":"Plan Type"},"plan_interval":{"type":"string","title":"Plan Interval"},"status":{"type":"string","title":"Status"},"total_backlink_credits":{"type":"integer","title":"Total Backlink Credits"},"has_auto_indexing":{"type":"boolean","title":"Has Auto Indexing"},"has_social":{"type":"boolean","title":"Has Social"},"addons":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Addons"},"current_period_end":{"type":"string","format":"date-time","title":"Current Period End"}},"type":"object","required":["id","website_id","plan_type","plan_interval","status","total_backlink_credits","has_auto_indexing","has_social","addons","current_period_end"],"title":"WebsiteSubscriptionResponse"},"WebsiteUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"platform":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform"},"hubspot_access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hubspot Access Token"},"hubspot_content_group_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hubspot Content Group Id"},"wordpress_application_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wordpress Application Url"},"wordpress_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wordpress Username"},"wordpress_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wordpress Password"},"duda_rss_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Duda Rss Api Key"},"webflow_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webflow Api Key"},"webflow_site_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webflow Site Id"},"webflow_collection_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webflow Collection Id"},"blogger_access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blogger Access Token"},"blogger_blog_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blogger Blog Id"},"blogger_oauth_credentials":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Blogger Oauth Credentials"},"shopify_store_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shopify Store Name"},"shopify_access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shopify Access Token"},"shopify_blog_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shopify Blog Id"},"shopify_author_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shopify Author Name"},"magento_base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Magento Base Url"},"magento_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Magento Username"},"magento_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Magento Password"},"magento_blog_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Magento Blog Path"},"magento_store_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Magento Store Id"},"wix_site_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wix Site Id"},"wix_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wix Api Key"},"ghost_api_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ghost Api Url"},"ghost_admin_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ghost Admin Api Key"},"gohighlevel_location_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gohighlevel Location Id"},"gohighlevel_access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gohighlevel Access Token"},"gohighlevel_blog_site_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gohighlevel Blog Site Id"},"gohighlevel_author_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gohighlevel Author Name"},"email_notification":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email Notification"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"company_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Description"},"unique_features":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Unique Features"},"problem":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Problem"},"solution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Solution"},"pricing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pricing"},"audience":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience"},"target_audiences":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Target Audiences"},"blog_focus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blog Focus"},"website_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website Url"},"blog_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blog Url"},"autopilot":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Autopilot"},"autopilot_preferences":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Autopilot Preferences"},"settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Settings"},"image_size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Size"},"image_prompt_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Prompt Instructions"},"image_style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Style"},"image_uniqueness_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Uniqueness Level"},"brand_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Color"},"reference_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference Image Url"},"use_uploaded_images":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Uploaded Images"},"blog_generation_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blog Generation Instructions"},"style_example_urls":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Style Example Urls"},"content_planner_instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Planner Instructions"},"affiliate_links":{"anyOf":[{"items":{"$ref":"#/components/schemas/AffiliateLink"},"type":"array"},{"type":"null"}],"title":"Affiliate Links"},"use_paa_questions":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Paa Questions"},"content_style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Style"},"youtube_channel_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Youtube Channel Url"},"include_youtube_videos":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Youtube Videos"},"include_images":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Images"},"include_additional_resources":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Additional Resources"},"max_internal_links":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Internal Links"},"blog_word_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Blog Word Count"},"custom_css":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Css"},"include_default_styles":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Default Styles"},"cta_style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cta Style"},"cta_card_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cta Card Color"},"cta_button_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cta Button Color"},"webhook_integration_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Integration Name"},"webhook_endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Endpoint"},"webhook_access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Access Token"},"social_keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Social Keywords"},"social_subreddits":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Social Subreddits"},"competitors":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Competitors"}},"type":"object","title":"WebsiteUpdate"},"WhatMovedResponse":{"properties":{"clicks":{"$ref":"#/components/schemas/DeltaMetric"},"impressions":{"$ref":"#/components/schemas/DeltaMetric"},"avg_position":{"$ref":"#/components/schemas/DeltaMetric"},"pages_indexed":{"$ref":"#/components/schemas/DeltaMetric"},"backlinks":{"$ref":"#/components/schemas/DeltaMetric"},"ai_sessions":{"$ref":"#/components/schemas/DeltaMetric"},"current_period_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Period Start"},"current_period_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Period End"},"previous_period_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Previous Period Start"},"previous_period_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Previous Period End"}},"type":"object","required":["clicks","impressions","avg_position","pages_indexed","backlinks","ai_sessions"],"title":"WhatMovedResponse"},"WhiteLabelReport":{"properties":{"total_articles":{"type":"integer","title":"Total Articles"},"articles":{"items":{"$ref":"#/components/schemas/ArticleReport"},"type":"array","title":"Articles"},"backlink_metrics":{"$ref":"#/components/schemas/BacklinkMetrics"},"ranking_terms_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ranking Terms Url"}},"type":"object","required":["total_articles","articles","backlink_metrics"],"title":"WhiteLabelReport"},"WixIntegration":{"properties":{"api_key":{"type":"string","title":"Api Key"},"site_id":{"type":"string","title":"Site Id"}},"type":"object","required":["api_key","site_id"],"title":"WixIntegration"},"WordPressIntegration":{"properties":{"application_url":{"type":"string","title":"Application Url"},"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"}},"type":"object","required":["application_url","username","password"],"title":"WordPressIntegration"},"YouTubeTestRequest":{"properties":{"keyword":{"type":"string","title":"Keyword"}},"type":"object","required":["keyword"],"title":"YouTubeTestRequest"}},"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"sk_...","description":"SEOPro AI API key, sent as `Authorization: Bearer sk_...`. Create one at https://seoproai.co/settings?tab=api-keys."},"OAuth2":{"type":"oauth2","description":"OAuth 2.1 authorization code with PKCE, used by MCP clients. Discovery starts at the protected-resource metadata at https://api.seoproai.co/.well-known/oauth-protected-resource/api/mcp.","x-protected-resource-metadata":"https://api.seoproai.co/.well-known/oauth-protected-resource/api/mcp","flows":{"authorizationCode":{"authorizationUrl":"https://dajosjnaalanhqksxrpe.supabase.co/auth/v1/authorize","tokenUrl":"https://dajosjnaalanhqksxrpe.supabase.co/auth/v1/token","scopes":{}}}}}},"tags":[{"name":"Content","description":"Operations with content generation and management"},{"name":"Websites","description":"Website configuration and blog generation"},{"name":"Topics","description":"Topic suggestions and management"}],"servers":[{"url":"https://api.seoproai.co","description":"Production"}],"externalDocs":{"description":"Agent manifest: capabilities, authentication and limits","url":"https://seoproai.co/.well-known/agents.json"},"security":[{"ApiKeyAuth":[]},{"OAuth2":[]}]}