{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://abackaudit.com/agents/report.schema.json","title":"Aback Audit report","description":"The report an Aback Audit run produces.","type":"object","required":["id","status","url","mode","engine_version","scoring_version","score","summary","findings","limits"],"properties":{"id":{"type":"string"},"status":{"type":"string","enum":["queued","running","completed","failed","expired"]},"url":{"type":"string","format":"uri"},"final_url":{"type":["string","null"],"format":"uri"},"mode":{"type":"string","enum":["quick","standard"]},"region":{"type":["string","null"]},"created_at":{"type":"string","format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"engine_version":{"type":"string"},"scoring_version":{"type":"string"},"pages_audited":{"type":"integer","minimum":0},"score":{"type":"object","required":["overall","rating","capped","categories"],"properties":{"overall":{"type":"integer","minimum":0,"maximum":100},"rating":{"type":"string","enum":["good","fair","poor"]},"capped":{"type":"boolean"},"categories":{"type":"object","properties":{"crawl":{"type":["integer","null"],"minimum":0,"maximum":100},"ai":{"type":["integer","null"],"minimum":0,"maximum":100},"page":{"type":["integer","null"],"minimum":0,"maximum":100},"schema":{"type":["integer","null"],"minimum":0,"maximum":100},"perf":{"type":["integer","null"],"minimum":0,"maximum":100},"a11y":{"type":["integer","null"],"minimum":0,"maximum":100},"sec":{"type":["integer","null"],"minimum":0,"maximum":100}},"additionalProperties":false}}},"summary":{"type":"object","required":["pass","warn","fail","info","skipped","error"],"properties":{"pass":{"type":"integer"},"warn":{"type":"integer"},"fail":{"type":"integer"},"info":{"type":"integer"},"skipped":{"type":"integer"},"error":{"type":"integer"}}},"findings":{"type":"array","items":{"type":"object","required":["check_id","category","status","severity","confidence","title","message"],"properties":{"check_id":{"type":"string"},"category":{"type":"string","enum":["crawl","ai","page","schema","perf","a11y","sec"]},"status":{"type":"string","enum":["pass","warn","fail","info","skipped","error"]},"severity":{"type":"string","enum":["critical","high","medium","low","info"]},"confidence":{"type":"string","enum":["high","medium","low"]},"title":{"type":"string"},"message":{"type":"string"},"evidence":{"type":"object"},"affected":{"type":"object","properties":{"count":{"type":"integer"},"urls":{"type":"array","items":{"type":"string"}}}},"fix":{"type":"object","properties":{"summary":{"type":"string"},"docs_url":{"type":"string"}}}}}},"action_plan":{"type":"object","description":"The ordered plan of what to do next.","required":["steps","projected_score","current_score","raw_score","capped","finding_count","empty"],"properties":{"steps":{"type":"array","items":{"type":"object","required":["id","rank","title","summary","severity","score_impact","effort","unblocks","check_ids","actions"],"properties":{"id":{"type":"string"},"rank":{"type":"integer","minimum":1},"title":{"type":"string"},"summary":{"type":"string"},"severity":{"type":"string","enum":["critical","high","medium","low","info"]},"score_impact":{"type":"integer","description":"The points the overall score gains when the step is done. It is computed with the scoring formula, so it is never an estimate."},"effort":{"type":"string","enum":["low","medium","high"]},"unblocks":{"type":"boolean","description":"True when the step removes a failing critical check. Such a step always comes first."},"check_ids":{"type":"array","items":{"type":"string"}},"actions":{"type":"array","items":{"type":"object","required":["check_id","title","detail","docs_url"],"properties":{"check_id":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"docs_url":{"type":"string"}}}}}}},"projected_score":{"type":"integer","minimum":0,"maximum":100},"current_score":{"type":"integer","minimum":0,"maximum":100},"raw_score":{"type":"integer","minimum":0,"maximum":100,"description":"The score without the critical failure cap."},"capped":{"type":"boolean"},"finding_count":{"type":"integer","minimum":0},"empty":{"type":"boolean"}}},"limits":{"type":"array","items":{"type":"string"}}}}