{"openapi":"3.1.0","info":{"title":"Website Intelligence API","summary":"Score machine-readable website and AI crawler readiness.","description":"Analyze public website signals and return a score, category scores, raw observations, and prioritized gaps users can patch to improve crawler and AI readiness.","contact":{"name":"LinkRidge API Tools","url":"https://website-intelligence-api.linkridge.net/","email":"api-support@makersridge.com"},"version":"0.1.0"},"servers":[{"url":"https://website-intelligence-api.linkridge.net","description":"Production"},{"url":"https://dev.website-intelligence-api.mfsoho.linkridge.net","description":"Development"}],"paths":{"/health":{"get":{"tags":["system"],"summary":"Health check","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health Health Get"}}}}}}},"/admin/metrics":{"get":{"tags":["admin"],"summary":"Early validation metrics","description":"Returns in-memory aggregate counters when an admin key is configured.","operationId":"metrics_admin_metrics_get","parameters":[{"name":"X-Admin-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Admin-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Metrics Admin Metrics Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/site-intel/analyze":{"post":{"tags":["site-intel"],"summary":"Score website intelligence and crawler-readiness gaps","description":"Submit a public domain or URL. The API fetches shallow public resources, returns raw observations, scores machine-readable site posture, and provides prioritized gaps users can patch to improve the score.","operationId":"analyze_website_v1_site_intel_analyze_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteAnalyzeRequest"},"examples":{"domain":{"summary":"Score website intelligence gaps","value":{"url":"linkridge.net","timeout_seconds":3.0}}}}}},"responses":{"200":{"description":"Website intelligence profile generated.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Analyze Website V1 Site Intel Analyze Post"}}}},"400":{"description":"Invalid, unresolvable, or unsafe domain."},"401":{"description":"Missing or invalid API key."},"429":{"description":"Monthly quota exceeded."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/site-intel/jobs":{"post":{"tags":["site-intel"],"summary":"Create an async website intelligence job","description":"Submit a public domain or URL for async analysis. The API returns a job ID immediately and runs the same scored analysis in the background. Repeated requests for the same URL and timeout share an active queued/running job.","operationId":"create_analysis_job_v1_site_intel_jobs_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteAnalyzeRequest"},"examples":{"domain":{"summary":"Score website intelligence gaps","value":{"url":"linkridge.net","timeout_seconds":3.0}}}}}},"responses":{"202":{"description":"Job accepted or active job returned.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Analysis Job V1 Site Intel Jobs Post"}}}},"400":{"description":"Invalid URL."},"401":{"description":"Missing or invalid API key."},"429":{"description":"Monthly quota exceeded."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/site-intel/jobs/{job_id}":{"get":{"tags":["site-intel"],"summary":"Get async website intelligence job status","description":"Return queued, running, complete, or error state for a website intelligence job.","operationId":"get_analysis_job_v1_site_intel_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Job found.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Analysis Job V1 Site Intel Jobs  Job Id  Get"}}}},"401":{"description":"Missing or invalid API key."},"404":{"description":"Job not found or expired."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/site-intel/domains/{domain}":{"get":{"tags":["site-intel"],"summary":"Get latest stored website intelligence profile","description":"Return the latest stored profile snapshot for a domain if one exists.","operationId":"get_latest_domain_profile_v1_site_intel_domains__domain__get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"200":{"description":"Latest snapshot found.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Latest Domain Profile V1 Site Intel Domains  Domain  Get"}}}},"401":{"description":"Missing or invalid API key."},"404":{"description":"No snapshot found for domain."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/site-intel/domains/{domain}/refresh":{"post":{"tags":["site-intel"],"summary":"Refresh stored website intelligence profile","description":"Create an async refresh job for a domain and return the job status payload.","operationId":"refresh_domain_profile_v1_site_intel_domains__domain__refresh_post","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}},{"name":"timeout_seconds","in":"query","required":false,"schema":{"type":"number","maximum":10.0,"minimum":1.0,"default":5.0,"title":"Timeout Seconds"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}}],"responses":{"202":{"description":"Refresh job accepted or active job returned.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Refresh Domain Profile V1 Site Intel Domains  Domain  Refresh Post"}}}},"400":{"description":"Invalid domain."},"401":{"description":"Missing or invalid API key."},"429":{"description":"Monthly quota exceeded."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"SiteAnalyzeRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Public domain or URL to analyze.","examples":["linkridge.net","https://www.example.com"]},"timeout_seconds":{"type":"number","maximum":10.0,"minimum":1.0,"title":"Timeout Seconds","description":"Fetch timeout for each shallow public resource.","default":5.0}},"type":"object","required":["url"],"title":"SiteAnalyzeRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}