{"openapi":"3.1.0","info":{"title":"Model Safety Checker","version":"0.1"},"paths":{"/api/scan":{"post":{"summary":"Start Scan","operationId":"start_scan_api_scan_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/scan/{job_id}":{"get":{"summary":"Get Scan","operationId":"get_scan_api_scan__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/queue":{"get":{"summary":"Queue Status","operationId":"queue_status_api_queue_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/applicable":{"get":{"summary":"Applicable","description":"Would a deep scan actually do anything for this repo?\n\nThe diff-based checks need a declared parent model. Saying so before the\nscan is the difference between \"correctly skipped\" and \"looks broken\".","operationId":"applicable_api_applicable_get","parameters":[{"name":"repo","in":"query","required":true,"schema":{"type":"string","title":"Repo"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/checks":{"get":{"summary":"List Checks","description":"What this tool looks at, and how much each claim is worth.\n\nDeterministic checks are decidable from the bytes. Statistical ones are\njudgements with a measured false-positive rate; the distinction is in the\nAPI because it should survive into whatever someone builds on top.","operationId":"list_checks_api_checks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/health":{"get":{"summary":"Health","operationId":"health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/robots.txt":{"get":{"summary":"Robots","operationId":"robots_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/sitemap.xml":{"get":{"summary":"Sitemap","operationId":"sitemap_sitemap_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/app.js":{"get":{"summary":"App Js","operationId":"app_js_app_js_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"summary":"Index","operationId":"index__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ScanRequest":{"properties":{"repo":{"type":"string","maxLength":120,"minLength":2,"title":"Repo"},"deep":{"type":"boolean","title":"Deep","default":false}},"type":"object","required":["repo"],"title":"ScanRequest"},"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"}}}}