{"openapi":"3.1.0","info":{"title":"Compliancly.ai Findings Store","description":"Central vulnerability management with dedup + compliance mapping.","version":"0.1.0"},"paths":{"/health":{"get":{"tags":["meta"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/ready":{"get":{"tags":["meta"],"summary":"Ready","operationId":"ready_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/v1/findings/ingest":{"post":{"tags":["ingest"],"summary":"Ingest","description":"Called by AI Agent / workers when a finding is emitted.","operationId":"ingest_v1_findings_ingest_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingIngest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/findings":{"get":{"tags":["findings"],"summary":"List Findings","operationId":"list_findings_v1_findings_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":25,"title":"Page Size"}},{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/Severity"},{"type":"null"}],"title":"Severity"}},{"name":"severities","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/Severity"}},{"type":"null"}],"description":"Multi-select severity filter. Wins over `severity` when set.","title":"Severities"},"description":"Multi-select severity filter. Wins over `severity` when set."},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/FindingStatus"},{"type":"null"}],"title":"Status"}},{"name":"statuses","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/FindingStatus"}},{"type":"null"}],"description":"Multi-select status filter. Wins over `status` when set.","title":"Statuses"},"description":"Multi-select status filter. Wins over `status` when set."},{"name":"asset_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Asset Id"}},{"name":"framework","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"e.g. 'SOC 2', 'ISO 27001'","title":"Framework"},"description":"e.g. 'SOC 2', 'ISO 27001'"},{"name":"open_only","in":"query","required":false,"schema":{"type":"boolean","description":"When true (default) the list omits closed statuses (fixed/false_positive/risk_accepted/duplicate). Pass false to see the full history. Ignored when an explicit status filter is set.","default":true,"title":"Open Only"},"description":"When true (default) the list omits closed statuses (fixed/false_positive/risk_accepted/duplicate). Pass false to see the full history. Ignored when an explicit status filter is set."},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"Free-text search across title/description/asset_target/cwe/owasp.","title":"Q"},"description":"Free-text search across title/description/asset_target/cwe/owasp."},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sort key: severity (default), cvss, last_seen, sla.","title":"Sort"},"description":"Sort key: severity (default), cvss, last_seen, sla."},{"name":"sort_dir","in":"query","required":false,"schema":{"type":"string","pattern":"^(asc|desc)$","default":"desc","title":"Sort Dir"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/findings/{finding_id}":{"get":{"tags":["findings"],"summary":"Get Finding","operationId":"get_finding_v1_findings__finding_id__get","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/findings/{finding_id}/history":{"get":{"tags":["finding-lifecycle"],"summary":"History","operationId":"history_v1_findings__finding_id__history_get","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response History V1 Findings  Finding Id  History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/findings/{finding_id}/status":{"post":{"tags":["findings"],"summary":"Change Status","operationId":"change_status_v1_findings__finding_id__status_post","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingStatusUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/findings/{finding_id}/assign":{"post":{"tags":["findings"],"summary":"Assign","operationId":"assign_v1_findings__finding_id__assign_post","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingAssign"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/findings/{finding_id}/snooze":{"post":{"tags":["findings"],"summary":"Snooze","operationId":"snooze_v1_findings__finding_id__snooze_post","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingSnooze"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/findings/{finding_id}/notes":{"post":{"tags":["findings"],"summary":"Add Note","operationId":"add_note_v1_findings__finding_id__notes_post","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingNote"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/findings/{finding_id}/fix-pr":{"post":{"tags":["findings"],"summary":"Attach Pr","operationId":"attach_pr_v1_findings__finding_id__fix_pr_post","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingFixPR"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/findings/bulk/status":{"post":{"tags":["findings"],"summary":"Bulk Status","description":"Apply a single status change to many findings at once.","operationId":"bulk_status_v1_findings_bulk_status_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingsBulkStatus"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingsBulkResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/questionnaire/answer":{"post":{"tags":["questionnaire"],"summary":"Questionnaire Answer","description":"Answer one customer-security-questionnaire question grounded in\nthe tenant's posture.\n\nBody: {\"question\": \"...\", \"context\": optional dict}\n\nPosture context is assembled here (published policies + framework\nreadiness) so callers don't have to pre-fetch it. The model never\nsees raw findings or asset data — keeps customer-facing answers\ntight and prevents cross-tenant leakage in the prompt.","operationId":"questionnaire_answer_v1_questionnaire_answer_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Questionnaire Answer V1 Questionnaire Answer Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/questionnaire/bulk":{"post":{"tags":["questionnaire"],"summary":"Questionnaire Bulk","description":"Answer N questions in one round-trip. Body:\n  {\"questions\": [\"...\", \"...\", ...]}\n\nPosture is fetched once and reused. Caps at 50 questions per call\nto keep total token spend bounded.","operationId":"questionnaire_bulk_v1_questionnaire_bulk_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Questionnaire Bulk V1 Questionnaire Bulk Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/findings/anomalies":{"get":{"tags":["stats"],"summary":"Finding Rate Anomalies","description":"Z-score anomaly detection on the daily finding-creation rate\nover the past 30 days. Spikes 2σ above the mean are flagged.\n\nOptional `severity` filter narrows the analysis to one bucket so\n\"12 critical findings yesterday vs 0 average\" surfaces even when\noverall volume looks calm.\n\nMissing days are backfilled as zero-count samples so a tenant with\nsparse activity gets a meaningful baseline.","operationId":"finding_rate_anomalies_v1_findings_anomalies_get","parameters":[{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/Severity"},{"type":"null"}],"description":"Drill into one severity bucket","title":"Severity"},"description":"Drill into one severity bucket"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Finding Rate Anomalies V1 Findings Anomalies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scans/trivy":{"post":{"tags":["scans"],"summary":"Ingest Trivy","description":"POST a Trivy `image` scan JSON. Run trivy in your CI:\n`trivy image -f json -o trivy.json <image>` and POST that file.","operationId":"ingest_trivy_v1_scans_trivy_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ingest Trivy V1 Scans Trivy Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scans/gitleaks":{"post":{"tags":["scans"],"summary":"Ingest Gitleaks","description":"POST gitleaks JSON. Run `gitleaks detect --report-format=json\n--report-path=gitleaks.json` and POST the file.","operationId":"ingest_gitleaks_v1_scans_gitleaks_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ingest Gitleaks V1 Scans Gitleaks Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scans/kube-bench":{"post":{"tags":["scans"],"summary":"Ingest Kube Bench","description":"POST kube-bench JSON for K8s CIS results.","operationId":"ingest_kube_bench_v1_scans_kube_bench_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ingest Kube Bench V1 Scans Kube Bench Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scans/license-check":{"post":{"tags":["scans"],"summary":"Ingest License Check","description":"Walk an SBOM payload (CycloneDX/SPDX) and emit findings for\nGPL-family copyleft components.","operationId":"ingest_license_check_v1_scans_license_check_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ingest License Check V1 Scans License Check Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scans/ios-ipa":{"post":{"tags":["scans"],"summary":"Ingest Ios Ipa Endpoint","description":"iOS IPA SAST results — mirror of APK SAST shape.","operationId":"ingest_ios_ipa_endpoint_v1_scans_ios_ipa_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ingest Ios Ipa Endpoint V1 Scans Ios Ipa Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scans/api-spec-fuzz":{"post":{"tags":["scans"],"summary":"Ingest Api Spec Endpoint","description":"OpenAPI / Postman → unauthenticated-endpoint fuzz finding stubs.","operationId":"ingest_api_spec_endpoint_v1_scans_api_spec_fuzz_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ingest Api Spec Endpoint V1 Scans Api Spec Fuzz Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/email":{"post":{"tags":["internal"],"summary":"Internal Email","description":"Service-to-service email send. Tenant svc's on-call dispatcher\nPOSTs here with `{to, subject, text}` so we don't have to ship a\nsecond SMTP wrapper in tenant svc. Auth: X-Service-Token header\nhandled by JWT middleware bypass.","operationId":"internal_email_v1_internal_email_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Internal Email V1 Internal Email Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/findings/{finding_id}/cert-in-incident":{"get":{"tags":["compliance-india"],"summary":"Cert In Incident Template","description":"Generate a CERT-In §70B incident-report template pre-filled\nfrom a finding. Tenants must submit to https://www.cert-in.org.in\nwithin 6 hours of incident detection per the 28 April 2022 directive.\n\nOutput is markdown — render to PDF client-side or paste into the\nCERT-In portal's free-text fields. The mandatory CERT-In fields\n(incident type, vector, severity, affected systems, indicators,\nremediation status) all map to fields we already store on the\nfinding row.","operationId":"cert_in_incident_template_v1_findings__finding_id__cert_in_incident_get","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cert In Incident Template V1 Findings  Finding Id  Cert In Incident Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/findings/{finding_id}/cert-in-submit":{"post":{"tags":["compliance-india"],"summary":"Cert In Submit","description":"Submit the CERT-In incident report by email.\n\nBody:\n  {\n    \"to\": \"incident@cert-in.org.in\",   # optional override of cert_in_recipient\n    \"cc\": [\"nodal@org.com\", ...],       # tenant nodal officer + sectoral\n    \"extra_context\": \"string\"           # appended after the template\n  }\n\nReuses the markdown generator. Sends one email per submission with\nthe markdown body inline. Stamps finding.metadata with submission\ntimestamp + recipient list so the audit trail is complete.","operationId":"cert_in_submit_v1_findings__finding_id__cert_in_submit_post","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cert In Submit V1 Findings  Finding Id  Cert In Submit Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/policies/catalogue":{"get":{"tags":["policies"],"summary":"Policies Catalogue","operationId":"policies_catalogue_v1_policies_catalogue_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Policies Catalogue V1 Policies Catalogue Get"}}}}}}},"/v1/policies/catalogue/{code}":{"get":{"tags":["policies"],"summary":"Policies Catalogue Template","operationId":"policies_catalogue_template_v1_policies_catalogue__code__get","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Policies Catalogue Template V1 Policies Catalogue  Code  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/policies/adopt":{"post":{"tags":["policies"],"summary":"Policies Adopt","operationId":"policies_adopt_v1_policies_adopt_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Policies Adopt V1 Policies Adopt Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/policies/blank":{"post":{"tags":["policies"],"summary":"Policies Blank","operationId":"policies_blank_v1_policies_blank_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Policies Blank V1 Policies Blank Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/policies/tenant":{"get":{"tags":["policies"],"summary":"Policies Tenant List","operationId":"policies_tenant_list_v1_policies_tenant_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Policies Tenant List V1 Policies Tenant Get"}}}}}}},"/v1/policies/tenant/{policy_id}":{"get":{"tags":["policies"],"summary":"Policies Tenant Get","operationId":"policies_tenant_get_v1_policies_tenant__policy_id__get","parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Policy Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Policies Tenant Get V1 Policies Tenant  Policy Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["policies"],"summary":"Policies Tenant Update","operationId":"policies_tenant_update_v1_policies_tenant__policy_id__put","parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Policy Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Policies Tenant Update V1 Policies Tenant  Policy Id  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["policies"],"summary":"Policies Tenant Delete","operationId":"policies_tenant_delete_v1_policies_tenant__policy_id__delete","parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Policy Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Policies Tenant Delete V1 Policies Tenant  Policy Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/policies/tenant/{policy_id}/render":{"get":{"tags":["policies"],"summary":"Policies Tenant Render","operationId":"policies_tenant_render_v1_policies_tenant__policy_id__render_get","parameters":[{"name":"policy_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Policy Id"}},{"name":"fmt","in":"query","required":false,"schema":{"type":"string","pattern":"^(pdf|docx|md)$","default":"pdf","title":"Fmt"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/enterprise/vault":{"get":{"tags":["enterprise"],"summary":"Vault List Endpoint","operationId":"vault_list_endpoint_v1_enterprise_vault_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Vault List Endpoint V1 Enterprise Vault Get"}}}}}},"post":{"tags":["enterprise"],"summary":"Vault Create Endpoint","operationId":"vault_create_endpoint_v1_enterprise_vault_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Vault Create Endpoint V1 Enterprise Vault Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/enterprise/vault/{conn_id}/test":{"post":{"tags":["enterprise"],"summary":"Vault Test Endpoint","operationId":"vault_test_endpoint_v1_enterprise_vault__conn_id__test_post","parameters":[{"name":"conn_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Conn Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Vault Test Endpoint V1 Enterprise Vault  Conn Id  Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/enterprise/vault/{conn_id}/read":{"post":{"tags":["enterprise"],"summary":"Vault Read Endpoint","operationId":"vault_read_endpoint_v1_enterprise_vault__conn_id__read_post","parameters":[{"name":"conn_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Conn Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Vault Read Endpoint V1 Enterprise Vault  Conn Id  Read Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/enterprise/vault/audit":{"get":{"tags":["enterprise"],"summary":"Vault Audit Endpoint","operationId":"vault_audit_endpoint_v1_enterprise_vault_audit_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Vault Audit Endpoint V1 Enterprise Vault Audit Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/enterprise/vault/{conn_id}":{"delete":{"tags":["enterprise"],"summary":"Vault Delete Endpoint","operationId":"vault_delete_endpoint_v1_enterprise_vault__conn_id__delete","parameters":[{"name":"conn_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Conn Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Vault Delete Endpoint V1 Enterprise Vault  Conn Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/enterprise/opencti":{"get":{"tags":["enterprise"],"summary":"Opencti List Endpoint","operationId":"opencti_list_endpoint_v1_enterprise_opencti_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Opencti List Endpoint V1 Enterprise Opencti Get"}}}}}},"post":{"tags":["enterprise"],"summary":"Opencti Create Endpoint","operationId":"opencti_create_endpoint_v1_enterprise_opencti_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Opencti Create Endpoint V1 Enterprise Opencti Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/enterprise/opencti/{conn_id}/sync":{"post":{"tags":["enterprise"],"summary":"Opencti Sync Endpoint","operationId":"opencti_sync_endpoint_v1_enterprise_opencti__conn_id__sync_post","parameters":[{"name":"conn_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Conn Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Opencti Sync Endpoint V1 Enterprise Opencti  Conn Id  Sync Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/enterprise/opencti/runs":{"get":{"tags":["enterprise"],"summary":"Opencti Runs Endpoint","operationId":"opencti_runs_endpoint_v1_enterprise_opencti_runs_get","parameters":[{"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":{"type":"object","additionalProperties":true,"title":"Response Opencti Runs Endpoint V1 Enterprise Opencti Runs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/forensics/velociraptor/hunts":{"get":{"tags":["enterprise"],"summary":"Velo Hunts Endpoint","operationId":"velo_hunts_endpoint_v1_forensics_velociraptor_hunts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Velo Hunts Endpoint V1 Forensics Velociraptor Hunts Get"}}}}}},"post":{"tags":["enterprise"],"summary":"Velo Declare Endpoint","operationId":"velo_declare_endpoint_v1_forensics_velociraptor_hunts_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Velo Declare Endpoint V1 Forensics Velociraptor Hunts Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/forensics/velociraptor/results":{"post":{"tags":["enterprise"],"summary":"Velo Results Endpoint","operationId":"velo_results_endpoint_v1_forensics_velociraptor_results_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Velo Results Endpoint V1 Forensics Velociraptor Results Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/forensics/velociraptor/{hunt_id}/complete":{"post":{"tags":["enterprise"],"summary":"Velo Complete Endpoint","operationId":"velo_complete_endpoint_v1_forensics_velociraptor__hunt_id__complete_post","parameters":[{"name":"hunt_id","in":"path","required":true,"schema":{"type":"string","title":"Hunt Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Velo Complete Endpoint V1 Forensics Velociraptor  Hunt Id  Complete Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/forensics/velociraptor/{hunt_id}/results":{"get":{"tags":["enterprise"],"summary":"Velo Hunt Results Endpoint","operationId":"velo_hunt_results_endpoint_v1_forensics_velociraptor__hunt_id__results_get","parameters":[{"name":"hunt_id","in":"path","required":true,"schema":{"type":"string","title":"Hunt Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Velo Hunt Results Endpoint V1 Forensics Velociraptor  Hunt Id  Results Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/training/courses":{"get":{"tags":["training"],"summary":"Training List Courses","operationId":"training_list_courses_v1_training_courses_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Training List Courses V1 Training Courses Get"}}}}}}},"/v1/training/courses/{course_id}":{"get":{"tags":["training"],"summary":"Training Get Course","operationId":"training_get_course_v1_training_courses__course_id__get","parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Course Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Training Get Course V1 Training Courses  Course Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/training/seed":{"post":{"tags":["training"],"summary":"Training Seed","operationId":"training_seed_v1_training_seed_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Training Seed V1 Training Seed Post"}}}}}}},"/v1/training/courses/{course_id}/enroll":{"post":{"tags":["training"],"summary":"Training Enroll","operationId":"training_enroll_v1_training_courses__course_id__enroll_post","parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Course Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Training Enroll V1 Training Courses  Course Id  Enroll Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/training/my-courses":{"get":{"tags":["training"],"summary":"Training My","operationId":"training_my_v1_training_my_courses_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Training My V1 Training My Courses Get"}}}}}}},"/v1/training/enrollments/{enrollment_id}/lessons/{lesson_id}/complete":{"post":{"tags":["training"],"summary":"Training Lesson Complete","operationId":"training_lesson_complete_v1_training_enrollments__enrollment_id__lessons__lesson_id__complete_post","parameters":[{"name":"enrollment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enrollment Id"}},{"name":"lesson_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Lesson Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Training Lesson Complete V1 Training Enrollments  Enrollment Id  Lessons  Lesson Id  Complete Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/training/enrollments/{enrollment_id}/quiz":{"post":{"tags":["training"],"summary":"Training Submit Quiz","operationId":"training_submit_quiz_v1_training_enrollments__enrollment_id__quiz_post","parameters":[{"name":"enrollment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enrollment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Training Submit Quiz V1 Training Enrollments  Enrollment Id  Quiz Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/training/enrollments/{enrollment_id}/certificate":{"get":{"tags":["training"],"summary":"Training Certificate","operationId":"training_certificate_v1_training_enrollments__enrollment_id__certificate_get","parameters":[{"name":"enrollment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enrollment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/training/admin/progress":{"get":{"tags":["training"],"summary":"Training Admin Progress","operationId":"training_admin_progress_v1_training_admin_progress_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Training Admin Progress V1 Training Admin Progress Get"}}}}}}},"/v1/tools/nuclei/templates":{"get":{"tags":["pro-tools"],"summary":"Nuclei Templates","operationId":"nuclei_templates_v1_tools_nuclei_templates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Nuclei Templates V1 Tools Nuclei Templates Get"}}}}}}},"/v1/tools/nuclei/run":{"post":{"tags":["pro-tools"],"summary":"Nuclei Run","operationId":"nuclei_run_v1_tools_nuclei_run_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Nuclei Run V1 Tools Nuclei Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tools/yara/scan":{"post":{"tags":["pro-tools"],"summary":"Yara Scan Endpoint","operationId":"yara_scan_endpoint_v1_tools_yara_scan_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Yara Scan Endpoint V1 Tools Yara Scan Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tools/web_fuzzer/run":{"post":{"tags":["pro-tools"],"summary":"Web Fuzz Run","operationId":"web_fuzz_run_v1_tools_web_fuzzer_run_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Web Fuzz Run V1 Tools Web Fuzzer Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/intel/virustotal/hash":{"post":{"tags":["pro-tools"],"summary":"Vt Hash","operationId":"vt_hash_v1_intel_virustotal_hash_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Vt Hash V1 Intel Virustotal Hash Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/intel/virustotal/url":{"post":{"tags":["pro-tools"],"summary":"Vt Url","operationId":"vt_url_v1_intel_virustotal_url_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Vt Url V1 Intel Virustotal Url Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/intel/abuseipdb/check":{"post":{"tags":["pro-tools"],"summary":"Abuseipdb Endpoint","operationId":"abuseipdb_endpoint_v1_intel_abuseipdb_check_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Abuseipdb Endpoint V1 Intel Abuseipdb Check Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/recon/subdomains":{"post":{"tags":["pro-tools"],"summary":"Subdomain Endpoint","operationId":"subdomain_endpoint_v1_recon_subdomains_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Subdomain Endpoint V1 Recon Subdomains Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/intel/feeds":{"get":{"tags":["threat-hub"],"summary":"List Public Feeds","operationId":"list_public_feeds_v1_intel_feeds_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Public Feeds V1 Intel Feeds Get"}}}}}}},"/v1/intel/feeds/poll":{"post":{"tags":["threat-hub"],"summary":"Poll Intel Feeds","description":"Pull from public OSINT feeds + upsert into IOC store. Body:\n{\"feed_ids\": [\"abuse_ch_threatfox\", ...]} — omit to poll all.","operationId":"poll_intel_feeds_v1_intel_feeds_poll_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Poll Intel Feeds V1 Intel Feeds Poll Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/intel/feeds/runs":{"get":{"tags":["threat-hub"],"summary":"List Feed Runs","operationId":"list_feed_runs_v1_intel_feeds_runs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Feed Runs V1 Intel Feeds Runs Get"}}}}}}},"/v1/waf/evaluate":{"post":{"tags":["threat-hub"],"summary":"Waf Evaluate","description":"Score an HTTP request sample against the bundled OWASP CRS subset.\nBody: {\"method\",\"path\",\"query\",\"body\",\"headers\": {...}, \"threshold\": 5}","operationId":"waf_evaluate_v1_waf_evaluate_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Waf Evaluate V1 Waf Evaluate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/waf/rules":{"get":{"tags":["threat-hub"],"summary":"Waf List Rules","operationId":"waf_list_rules_v1_waf_rules_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Waf List Rules V1 Waf Rules Get"}}}}}}},"/v1/network/segmentation/analyze":{"post":{"tags":["threat-hub"],"summary":"Network Segmentation Analyze","description":"Body: {\"config_blob\": \"...\", \"dialect\": \"iptables\"|\"aws_sg\"|\"cisco_acl\"}","operationId":"network_segmentation_analyze_v1_network_segmentation_analyze_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Network Segmentation Analyze V1 Network Segmentation Analyze Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/honey/generate":{"post":{"tags":["threat-hub"],"summary":"Honey Generate","description":"Generate a honeytoken and persist it for trip tracking.","operationId":"honey_generate_v1_honey_generate_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Honey Generate V1 Honey Generate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/honey/list":{"get":{"tags":["threat-hub"],"summary":"Honey List","operationId":"honey_list_v1_honey_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Honey List V1 Honey List Get"}}}}}}},"/v1/honey/trip/{token}":{"get":{"tags":["threat-hub"],"summary":"Honey Trip","description":"Public trip endpoint — JWT-bypassed via skip_paths. Any access\ncounts as a malicious-actor signal. We update trip_count + emit a\nfinding so the user sees it on dashboards.","operationId":"honey_trip_v1_honey_trip__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Honey Trip V1 Honey Trip  Token  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["threat-hub"],"summary":"Honey Trip","description":"Public trip endpoint — JWT-bypassed via skip_paths. Any access\ncounts as a malicious-actor signal. We update trip_count + emit a\nfinding so the user sees it on dashboards.","operationId":"honey_trip_v1_honey_trip__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Honey Trip V1 Honey Trip  Token  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/honey/{honey_id}":{"delete":{"tags":["threat-hub"],"summary":"Honey Delete","operationId":"honey_delete_v1_honey__honey_id__delete","parameters":[{"name":"honey_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Honey Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Honey Delete V1 Honey  Honey Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/intel/doh/check":{"post":{"tags":["threat-hub"],"summary":"Doh Check","description":"Cross-resolver DoH check. Quad9 NXDOMAIN + Cloudflare answer ⇒\ndomain is malicious per Quad9 threat-intel.","operationId":"doh_check_v1_intel_doh_check_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Doh Check V1 Intel Doh Check Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/clamav/scan":{"post":{"tags":["threat-hub"],"summary":"Clamav Scan","description":"Wrap clamscan if available on the server. Body: {\"file_b64\": \"...\"}","operationId":"clamav_scan_v1_clamav_scan_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Clamav Scan V1 Clamav Scan Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/intel/iocs":{"get":{"tags":["threat-hub"],"summary":"List Iocs","operationId":"list_iocs_v1_intel_iocs_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Iocs V1 Intel Iocs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["threat-hub"],"summary":"Create Ioc","operationId":"create_ioc_v1_intel_iocs_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Ioc V1 Intel Iocs Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/intel/iocs/query":{"post":{"tags":["threat-hub"],"summary":"Query Ioc","operationId":"query_ioc_v1_intel_iocs_query_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Query Ioc V1 Intel Iocs Query Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/intel/stix/ingest":{"post":{"tags":["threat-hub"],"summary":"Ingest Stix","operationId":"ingest_stix_v1_intel_stix_ingest_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ingest Stix V1 Intel Stix Ingest Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/breach/email":{"post":{"tags":["threat-hub"],"summary":"Breach Check Email","operationId":"breach_check_email_v1_breach_email_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Breach Check Email V1 Breach Email Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/breach/password":{"post":{"tags":["threat-hub"],"summary":"Breach Check Password","description":"k-anonymous Pwned-Passwords check. Password never leaves the\nserver in clear; only first 5 SHA-1 hex chars sent upstream.","operationId":"breach_check_password_v1_breach_password_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Breach Check Password V1 Breach Password Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/phish/campaigns":{"get":{"tags":["threat-hub"],"summary":"List Phish Campaigns","operationId":"list_phish_campaigns_v1_phish_campaigns_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Phish Campaigns V1 Phish Campaigns Get"}}}}}},"post":{"tags":["threat-hub"],"summary":"Create Phish Campaign","operationId":"create_phish_campaign_v1_phish_campaigns_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Phish Campaign V1 Phish Campaigns Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/phish/templates":{"get":{"tags":["threat-hub"],"summary":"List Phish Templates","operationId":"list_phish_templates_v1_phish_templates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Phish Templates V1 Phish Templates Get"}}}}}}},"/v1/phish/campaigns/{campaign_id}/launch":{"post":{"tags":["threat-hub"],"summary":"Launch Phish Campaign","operationId":"launch_phish_campaign_v1_phish_campaigns__campaign_id__launch_post","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Launch Phish Campaign V1 Phish Campaigns  Campaign Id  Launch Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/phish/open/{token}":{"get":{"tags":["threat-hub"],"summary":"Phish Open","description":"1×1 transparent GIF tracking pixel.","operationId":"phish_open_v1_phish_open__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/phish/click/{token}":{"get":{"tags":["threat-hub"],"summary":"Phish Click","operationId":"phish_click_v1_phish_click__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/dlp/patterns":{"get":{"tags":["threat-hub"],"summary":"List Dlp Patterns","operationId":"list_dlp_patterns_v1_dlp_patterns_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Dlp Patterns V1 Dlp Patterns Get"}}}}}}},"/v1/dlp/seed":{"post":{"tags":["threat-hub"],"summary":"Seed Dlp","operationId":"seed_dlp_v1_dlp_seed_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Seed Dlp V1 Dlp Seed Post"}}}}}}},"/v1/dlp/scan":{"post":{"tags":["threat-hub"],"summary":"Scan Dlp","operationId":"scan_dlp_v1_dlp_scan_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Scan Dlp V1 Dlp Scan Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ueba/observe":{"post":{"tags":["threat-hub"],"summary":"Ueba Observe","operationId":"ueba_observe_v1_ueba_observe_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ueba Observe V1 Ueba Observe Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ueba/baselines":{"get":{"tags":["threat-hub"],"summary":"Ueba List","operationId":"ueba_list_v1_ueba_baselines_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ueba List V1 Ueba Baselines Get"}}}}}}},"/v1/agent/enroll":{"post":{"tags":["threat-hub"],"summary":"Agent Enroll","operationId":"agent_enroll_v1_agent_enroll_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Agent Enroll V1 Agent Enroll Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agent/events":{"post":{"tags":["threat-hub"],"summary":"Agent Events","description":"Accepts agent telemetry. Authenticates by enrollment_token (header\n`X-Agent-Token` or body field). NOT JWT — separate auth path because\nagents don't have user tokens.","operationId":"agent_events_v1_agent_events_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Agent Events V1 Agent Events Post"}}}}}},"get":{"tags":["threat-hub"],"summary":"Agent Events List","operationId":"agent_events_list_v1_agent_events_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Agent Events List V1 Agent Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agent/list":{"get":{"tags":["threat-hub"],"summary":"Agent List","operationId":"agent_list_v1_agent_list_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Agent List V1 Agent List Get"}}}}}}},"/v1/mfa/audit":{"post":{"tags":["threat-hub"],"summary":"Mfa Audit","operationId":"mfa_audit_v1_mfa_audit_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Mfa Audit V1 Mfa Audit Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/forensics/triage":{"post":{"tags":["threat-hub"],"summary":"Forensics","operationId":"forensics_v1_forensics_triage_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Forensics V1 Forensics Triage Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tools":{"get":{"tags":["security-tools"],"summary":"List Security Tools","description":"Return the descriptor list that drives the Security Tools page.","operationId":"list_security_tools_v1_tools_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Security Tools V1 Tools Get"}}}}}}},"/v1/tools/malware_classifier/run":{"post":{"tags":["security-tools"],"summary":"Run Malware Classifier","description":"Classify a file (base64-encoded) OR fetch + classify a URL OR\nlook up a hash. Body shape:\n  {\"file_b64\": \"...\", \"filename\": \"x.exe\"}\n  OR {\"url\": \"https://...\"}\n  OR {\"hash\": \"sha256...\"}\n  Optional: {\"save_as_finding\": true, \"asset_id\": \"<uuid>\"}","operationId":"run_malware_classifier_v1_tools_malware_classifier_run_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Run Malware Classifier V1 Tools Malware Classifier Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tools/dos_exposure/run":{"post":{"tags":["security-tools"],"summary":"Run Dos Exposure","description":"Body: {\"target\": \"host or IP\", \"http_url\": \"https://...\",\n\"save_as_finding\": bool, \"asset_id\": \"<uuid>\"}","operationId":"run_dos_exposure_v1_tools_dos_exposure_run_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Run Dos Exposure V1 Tools Dos Exposure Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tools/sql_injection_probe/run":{"post":{"tags":["security-tools"],"summary":"Run Sql Injection Probe","description":"Body: {\"url\": \"https://target/path?id=1&q=foo\",\n\"method\": \"GET\"|\"POST\",\n\"params\": {\"id\": \"1\"} (optional, overrides query string),\n\"save_as_finding\": bool, \"asset_id\": \"<uuid>\"}","operationId":"run_sql_injection_probe_v1_tools_sql_injection_probe_run_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Run Sql Injection Probe V1 Tools Sql Injection Probe Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tools/packet_inspector/run":{"post":{"tags":["security-tools"],"summary":"Run Packet Inspector","description":"Body: {\"pcap_b64\": \"...\", \"filename\": \"capture.pcap\",\n\"save_as_finding\": bool, \"asset_id\": \"<uuid>\"}","operationId":"run_packet_inspector_v1_tools_packet_inspector_run_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Run Packet Inspector V1 Tools Packet Inspector Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/cert-in/recipient":{"get":{"tags":["compliance-india"],"summary":"Cert In Recipient Get","description":"Return current tenant's CERT-In submission email override.\nFalls back to settings.cert_in_recipient when no override set.","operationId":"cert_in_recipient_get_v1_cert_in_recipient_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Cert In Recipient Get V1 Cert In Recipient Get"}}}}}},"put":{"tags":["compliance-india"],"summary":"Cert In Recipient Put","description":"Set/clear tenant CERT-In recipient override.\nBody: {\"recipient\": \"incident@cert-in.org.in\"} or {\"recipient\": null} to clear.","operationId":"cert_in_recipient_put_v1_cert_in_recipient_put","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Cert In Recipient Put V1 Cert In Recipient Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/findings/{finding_id}/cert-in-ack":{"post":{"tags":["compliance-india"],"summary":"Cert In Ack","description":"Record CERT-In's acknowledgement reference. CERT-In replies by\nemail with an ack ID after they receive a submission; user pastes\nit back here to close the audit loop.\n\nBody: {\"ack_id\": \"CERT-IN-2026-...\", \"notes\": \"...optional...\"}","operationId":"cert_in_ack_v1_findings__finding_id__cert_in_ack_post","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cert In Ack V1 Findings  Finding Id  Cert In Ack Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scans/reachability":{"post":{"tags":["scans"],"summary":"Ingest Reachability","description":"Reachability analysis ingest (stub).\n\nBody shape (call-graph annotation produced by an out-of-band tool\nlike tree-sitter-graph or `semgrep --reachable`):\n  {\n    \"language\": \"python|go|java|...\",\n    \"entrypoints\": [\"main\", \"app.handler\"],\n    \"reachable_packages\": [\"urllib3==1.26.0\", \"requests==2.32.3\"]\n  }\n\nFor each package in reachable_packages we annotate any matching\nopen SBOM finding with metadata.reachable=true so the UI can sort\nby exploit reachability. Real impl would compare against the call\ngraph + emit per-symbol annotations; this stub upgrades the\npackage-level signal which is already valuable.","operationId":"ingest_reachability_v1_scans_reachability_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ingest Reachability V1 Scans Reachability Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scans/web-crawler":{"post":{"tags":["scans"],"summary":"Ingest Web Crawler Endpoint","description":"Playwright-style web crawler results.","operationId":"ingest_web_crawler_endpoint_v1_scans_web_crawler_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ingest Web Crawler Endpoint V1 Scans Web Crawler Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/findings/{finding_id}/retest":{"post":{"tags":["findings"],"summary":"Retest Finding","description":"Manually queue a re-test of a single finding. Today this is a\npass-through that emits a `finding.retest_requested` event onto\nthe bus; a future scan worker subscribes and re-runs the original\nprobe.\n\nWire to your CI/PR-merge webhook so fixes get auto-validated.","operationId":"retest_finding_v1_findings__finding_id__retest_post","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Retest Finding V1 Findings  Finding Id  Retest Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scans/pentest-report":{"post":{"tags":["scans"],"summary":"Ingest Pentest Report","description":"Accept a parsed pen-test report (markdown / structured JSON)\nand emit one finding per identified issue.\n\nParsers ship as a separate worker (vendor PDFs vary wildly); this\nendpoint accepts the post-parse normalised shape:\n  {\n    \"report_name\": \"...\",\n    \"vendor\": \"...\",\n    \"issues\": [\n      {\"title\", \"severity\", \"description\", \"cwe_id?\", \"recommendation?\"}\n    ]\n  }","operationId":"ingest_pentest_report_v1_scans_pentest_report_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ingest Pentest Report V1 Scans Pentest Report Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/cspm/aws/scan":{"post":{"tags":["cspm"],"summary":"Cspm Aws Scan","description":"Run CSPM checks against an AWS account. Body is the connector\nconfig: account_id, role_arn, regions, external_id.","operationId":"cspm_aws_scan_v1_cspm_aws_scan_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Cspm Aws Scan V1 Cspm Aws Scan Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sboms":{"get":{"tags":["sbom"],"summary":"List Sboms","operationId":"list_sboms_v1_sboms_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Sboms V1 Sboms Get"}}}}}},"post":{"tags":["sbom"],"summary":"Upload Sbom","description":"Ingest an SBOM (CycloneDX or SPDX JSON). The body is the parsed\nSBOM document; we extract components, store a manifest row, and\nkick off a CVE match.\n\nMatch implementation today: surface every component with a known\nCVE in its `vulnerabilities` array (CycloneDX) into the findings\npipeline. A future iteration will cross-reference against a CVE\ndatabase (NVD / OSV) when components don't pre-attach vulnerabilities.","operationId":"upload_sbom_v1_sboms_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Upload Sbom V1 Sboms Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/control-checks":{"get":{"tags":["ccm"],"summary":"List Control Checks","description":"Latest status for every registered check + the static catalog so\nthe UI can show \"never run\" rows for checks that haven't fired\nyet.","operationId":"list_control_checks_v1_control_checks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Control Checks V1 Control Checks Get"}}}}}}},"/v1/control-checks/{check_id}/enabled":{"patch":{"tags":["ccm"],"summary":"Set Check Enabled","description":"Toggle a check on/off for the current tenant. Persists in\ntenant_svc.tenant_settings.ccm_disabled_checks (JSON array).","operationId":"set_check_enabled_v1_control_checks__check_id__enabled_patch","parameters":[{"name":"check_id","in":"path","required":true,"schema":{"type":"string","title":"Check Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Check Enabled V1 Control Checks  Check Id  Enabled Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/control-checks/{check_id}/run-now":{"post":{"tags":["ccm"],"summary":"Run Control Check Now","description":"Manually trigger a single check. Intended for the \"Run check\"\nbutton on the compliance UI.","operationId":"run_control_check_now_v1_control_checks__check_id__run_now_post","parameters":[{"name":"check_id","in":"path","required":true,"schema":{"type":"string","title":"Check Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Run Control Check Now V1 Control Checks  Check Id  Run Now Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/control-checks/run-all":{"post":{"tags":["ccm"],"summary":"Run All Control Checks","description":"Sweep every registered check for the calling tenant. Useful from\nthe UI's 'Run all checks' button; the hourly scheduler does the\nsame thing for every tenant.","operationId":"run_all_control_checks_v1_control_checks_run_all_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Run All Control Checks V1 Control Checks Run All Post"}}}}}}},"/v1/findings/{finding_id}/fix-pr/propose":{"post":{"tags":["findings"],"summary":"Propose Fix Pr","description":"Ask the assistant to draft a unified-diff fix. Result is cached\nper fingerprint for 24h. Always advisory — the developer must\nreview, run tests, and open the actual PR (we provide the diff +\na prefilled GitHub URL on the frontend).","operationId":"propose_fix_pr_v1_findings__finding_id__fix_pr_propose_post","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FixProposal"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/findings/{finding_id}/triage/suggest":{"post":{"tags":["findings"],"summary":"Triage Suggest","description":"Ask the LLM gateway for a triage suggestion. Cached per fingerprint\nso repeated views don't re-spend tokens. The result is advisory — the\nUI must require an explicit human click to apply any status change.","operationId":"triage_suggest_v1_findings__finding_id__triage_suggest_post","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriageSuggestion"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/findings/stream":{"get":{"tags":["findings"],"summary":"Stream Findings","description":"Server-sent events for live finding updates.\n\nAuthenticated by the JWTAuthMiddleware (the tenant comes from the\nbearer token). Frame format:\n\n    data: {\"kind\": \"finding.created\", \"id\": \"...\", \"ts\": ...}\\n\\n\n\nThe browser receives an `EventSource` stream and re-fetches affected\nrows on each event. Heartbeats are emitted as empty data lines every\n~15s so corporate proxies don't kill the connection.","operationId":"stream_findings_v1_findings_stream_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/findings/facets":{"get":{"tags":["findings"],"summary":"Get Facets","description":"Filter dropdown source — distinct asset targets + framework keys.\n\nCheap to recompute; cache client-side or per-page. Empty arrays mean\n\"no findings yet\" not \"no filters supported.\"","operationId":"get_facets_v1_findings_facets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Facets V1 Findings Facets Get"}}}}}}},"/v1/findings/export.pptx":{"get":{"tags":["findings"],"summary":"Export Pptx","description":"Stream an audit-ready 3-slide deck.\n\nStdlib-only OOXML — no python-pptx dep. Production deploys can\nswap in richer template-based generation by replacing\n`pptx_export.build_pptx` with a `python-pptx` implementation.","operationId":"export_pptx_v1_findings_export_pptx_get","responses":{"200":{"description":"Successful Response"}}}},"/v1/findings/export.csv":{"get":{"tags":["findings"],"summary":"Export Csv","operationId":"export_csv_v1_findings_export_csv_get","parameters":[{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/Severity"},{"type":"null"}],"title":"Severity"}},{"name":"severities","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/Severity"}},{"type":"null"}],"title":"Severities"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/FindingStatus"},{"type":"null"}],"title":"Status"}},{"name":"statuses","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/FindingStatus"}},{"type":"null"}],"title":"Statuses"}},{"name":"asset_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Asset Id"}},{"name":"framework","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Framework"}},{"name":"open_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Open Only"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/findings/stats/summary":{"get":{"tags":["stats"],"summary":"Get Stats","operationId":"get_stats_v1_findings_stats_summary_get","parameters":[{"name":"tenant_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Super-admin only: stats for a specific tenant. Non-super-admins ignore this and see their own tenant.","title":"Tenant Id"},"description":"Super-admin only: stats for a specific tenant. Non-super-admins ignore this and see their own tenant."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingsStats"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/compliance/catalog":{"get":{"tags":["compliance"],"summary":"Compliance Catalog","description":"Return the full control catalog — frameworks + their controls.\nDrives the compliance dashboard's framework cards.","operationId":"compliance_catalog_v1_compliance_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Compliance Catalog V1 Compliance Catalog Get"}}}}}}},"/v1/compliance/summary":{"get":{"tags":["compliance"],"summary":"Compliance Summary","description":"Per-framework readiness scoring.\n\nFor every framework in the catalog, compute:\n  - controls_total: how many controls in the framework\n  - controls_with_findings: controls touched by at least one OPEN finding\n  - controls_clean: total - controls_with_findings\n  - readiness_pct: controls_clean / controls_total\n  - critical_finding_count: open critical+high findings touching framework\n  - by_severity_on_framework: breakdown of sev hitting framework\n\nOptional `asset_id` scopes to one asset. RLS ensures tenant scope.","operationId":"compliance_summary_v1_compliance_summary_get","parameters":[{"name":"asset_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Asset Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Compliance Summary V1 Compliance Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/risks":{"get":{"tags":["risk-register"],"summary":"List Risks","operationId":"list_risks_v1_risks_get","parameters":[{"name":"status_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Filter"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Risks V1 Risks Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["risk-register"],"summary":"Create Risk","operationId":"create_risk_v1_risks_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Risk V1 Risks Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/risks/{risk_id}":{"patch":{"tags":["risk-register"],"summary":"Update Risk","operationId":"update_risk_v1_risks__risk_id__patch","parameters":[{"name":"risk_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Risk Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Risk V1 Risks  Risk Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["risk-register"],"summary":"Delete Risk","operationId":"delete_risk_v1_risks__risk_id__delete","parameters":[{"name":"risk_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Risk Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/questionnaire/auto-answer":{"post":{"tags":["questionnaire"],"summary":"Questionnaire Answer","operationId":"questionnaire_answer_v1_questionnaire_auto_answer_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuestionnaireRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Questionnaire Answer V1 Questionnaire Auto Answer Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/trust-report.pdf":{"get":{"tags":["trust-report"],"summary":"Trust Report Pdf","operationId":"trust_report_pdf_v1_trust_report_pdf_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/trust-report.md":{"get":{"tags":["trust-report"],"summary":"Trust Report Md","operationId":"trust_report_md_v1_trust_report_md_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/custom-frameworks":{"get":{"tags":["custom-framework"],"summary":"List Frameworks","operationId":"list_frameworks_v1_custom_frameworks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Frameworks V1 Custom Frameworks Get"}}}}}},"post":{"tags":["custom-framework"],"summary":"Create Framework","operationId":"create_framework_v1_custom_frameworks_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FrameworkCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Framework V1 Custom Frameworks Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/custom-frameworks/{framework_id}/controls":{"get":{"tags":["custom-framework"],"summary":"List Controls","operationId":"list_controls_v1_custom_frameworks__framework_id__controls_get","parameters":[{"name":"framework_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Framework Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Controls V1 Custom Frameworks  Framework Id  Controls Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["custom-framework"],"summary":"Add Control","operationId":"add_control_v1_custom_frameworks__framework_id__controls_post","parameters":[{"name":"framework_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Framework Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ControlCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Add Control V1 Custom Frameworks  Framework Id  Controls Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/custom-frameworks/{framework_id}":{"delete":{"tags":["custom-framework"],"summary":"Delete Framework","operationId":"delete_framework_v1_custom_frameworks__framework_id__delete","parameters":[{"name":"framework_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Framework Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/dashboard/summary":{"get":{"tags":["dashboard"],"summary":"Dashboard Summary","operationId":"dashboard_summary_v1_dashboard_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Dashboard Summary V1 Dashboard Summary Get"}}}}}}},"/v1/audit-pack.zip":{"get":{"tags":["audit-pack"],"summary":"Audit Pack","operationId":"audit_pack_v1_audit_pack_zip_get","parameters":[{"name":"framework","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Framework"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/frameworks/readiness":{"get":{"tags":["frameworks"],"summary":"Framework Readiness","operationId":"framework_readiness_v1_frameworks_readiness_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Framework Readiness V1 Frameworks Readiness Get"}}}}}}},"/v1/search":{"get":{"tags":["search"],"summary":"Search","operationId":"search_v1_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":200,"title":"Q"}},{"name":"kinds","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"csv: findings,policies,risks","title":"Kinds"},"description":"csv: findings,policies,risks"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Search V1 Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/data-export.zip":{"get":{"tags":["data-export"],"summary":"Data Export","operationId":"data_export_v1_data_export_zip_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/import/assets.csv":{"post":{"tags":["bulk-import"],"summary":"Import Assets","operationId":"import_assets_v1_import_assets_csv_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_assets_v1_import_assets_csv_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Import Assets V1 Import Assets Csv Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/import/vendors.csv":{"post":{"tags":["bulk-import"],"summary":"Import Vendors","operationId":"import_vendors_v1_import_vendors_csv_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_vendors_v1_import_vendors_csv_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Import Vendors V1 Import Vendors Csv Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/control-evidence":{"put":{"tags":["control-evidence"],"summary":"Upsert","operationId":"upsert_v1_control_evidence_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidenceUpsert"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Upsert V1 Control Evidence Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/control-evidence/{framework_code}":{"get":{"tags":["control-evidence"],"summary":"List By Framework","operationId":"list_by_framework_v1_control_evidence__framework_code__get","parameters":[{"name":"framework_code","in":"path","required":true,"schema":{"type":"string","title":"Framework Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List By Framework V1 Control Evidence  Framework Code  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/findings/{finding_id}/runbook.md":{"get":{"tags":["runbook"],"summary":"Runbook Md","operationId":"runbook_md_v1_findings__finding_id__runbook_md_get","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/findings/{finding_id}/transition":{"post":{"tags":["finding-lifecycle"],"summary":"Transition","operationId":"transition_v1_findings__finding_id__transition_post","parameters":[{"name":"finding_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Finding Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransitionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Transition V1 Findings  Finding Id  Transition Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/posture/history":{"get":{"tags":["posture"],"summary":"History","operationId":"history_v1_posture_history_get","parameters":[{"name":"framework_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Framework Code"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":90,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response History V1 Posture History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tools/semgrep/run":{"post":{"tags":["sast-sca"],"summary":"Semgrep","operationId":"semgrep_v1_tools_semgrep_run_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SemgrepRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Semgrep V1 Tools Semgrep Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tools/trivy/image":{"post":{"tags":["sast-sca"],"summary":"Trivy Image","operationId":"trivy_image_v1_tools_trivy_image_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrivyImageRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Trivy Image V1 Tools Trivy Image Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tools/bandit/run":{"post":{"tags":["sast-sca"],"summary":"Bandit","operationId":"bandit_v1_tools_bandit_run_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BanditRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Bandit V1 Tools Bandit Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tools/trufflehog/run":{"post":{"tags":["sast-sca"],"summary":"Trufflehog","operationId":"trufflehog_v1_tools_trufflehog_run_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TruffleHogRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Trufflehog V1 Tools Trufflehog Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/graphql":{"get":{"summary":"Graphql Get Endpoint","description":"Tooling probe — returns introspection-lite metadata so editors\ndon't 405.","operationId":"graphql_get_endpoint_graphql_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Graphql Get Endpoint Graphql Get"}}}}}},"post":{"summary":"Graphql Endpoint","operationId":"graphql_endpoint_graphql_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Graphql Endpoint Graphql Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"BanditRequest":{"properties":{"inline_code":{"type":"string","maxLength":500000,"minLength":10,"title":"Inline Code"},"asset_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Asset Id"},"save_as_finding":{"type":"boolean","title":"Save As Finding","default":false}},"type":"object","required":["inline_code"],"title":"BanditRequest"},"Body_import_assets_v1_import_assets_csv_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_import_assets_v1_import_assets_csv_post"},"Body_import_vendors_v1_import_vendors_csv_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_import_vendors_v1_import_vendors_csv_post"},"ControlCreate":{"properties":{"control_ref":{"type":"string","maxLength":80,"minLength":1,"title":"Control Ref"},"title":{"type":"string","maxLength":300,"minLength":2,"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"sentinel_can_test":{"type":"boolean","title":"Sentinel Can Test","default":false},"evidence_required":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evidence Required"},"linked_policy_codes":{"items":{"type":"string"},"type":"array","title":"Linked Policy Codes"}},"type":"object","required":["control_ref","title"],"title":"ControlCreate"},"EvidenceUpsert":{"properties":{"framework_code":{"type":"string","maxLength":64,"minLength":2,"title":"Framework Code"},"control_ref":{"type":"string","maxLength":80,"minLength":1,"title":"Control Ref"},"status":{"type":"string","enum":["not_started","in_progress","evidenced","passing","failing","exempt"],"title":"Status","default":"evidenced"},"linked_finding_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Linked Finding Ids"},"linked_policy_codes":{"items":{"type":"string"},"type":"array","title":"Linked Policy Codes"},"attestation_actor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attestation Actor"},"attestation_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attestation Note"},"artifact_urls":{"items":{"type":"string"},"type":"array","title":"Artifact Urls"},"next_review_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Review At"}},"type":"object","required":["framework_code","control_ref"],"title":"EvidenceUpsert"},"FindingAssign":{"properties":{"owner_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner User Id"},"note":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Note"}},"type":"object","required":["owner_user_id"],"title":"FindingAssign"},"FindingFixPR":{"properties":{"fix_pr_url":{"type":"string","maxLength":1024,"pattern":"^https?://","title":"Fix Pr Url"},"note":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Note"}},"type":"object","required":["fix_pr_url"],"title":"FindingFixPR"},"FindingHistoryRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"finding_id":{"type":"string","format":"uuid","title":"Finding Id"},"event":{"type":"string","title":"Event"},"from_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Value"},"to_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Value"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"actor_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Actor User Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","finding_id","event","from_value","to_value","note","actor_user_id","created_at"],"title":"FindingHistoryRead"},"FindingIngest":{"properties":{"asset_id":{"type":"string","format":"uuid","title":"Asset Id"},"asset_target":{"type":"string","maxLength":2048,"minLength":3,"title":"Asset Target"},"title":{"type":"string","maxLength":500,"minLength":3,"title":"Title"},"description":{"type":"string","minLength":10,"title":"Description"},"severity":{"$ref":"#/components/schemas/Severity"},"confidence":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Confidence","default":0.5},"cve_ids":{"items":{"type":"string"},"type":"array","title":"Cve Ids"},"cwe_id":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Cwe Id"},"owasp_category":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Owasp Category"},"cvss_score":{"anyOf":[{"type":"number","maximum":10.0,"minimum":0.0},{"type":"null"}],"title":"Cvss Score"},"epss_score":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Epss Score"},"proof_of_concept":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proof Of Concept"},"suggested_fix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suggested Fix"},"artifact_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Artifact Url"},"artifact_label":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Artifact Label"},"source":{"$ref":"#/components/schemas/Source","default":"ai_agent"},"source_run_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Run Id"},"source_finding_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Finding Id"},"tool_signature":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Tool Signature"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"}},"type":"object","required":["asset_id","asset_target","title","description","severity"],"title":"FindingIngest"},"FindingList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/FindingRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"FindingList"},"FindingNote":{"properties":{"note":{"type":"string","maxLength":2000,"minLength":1,"title":"Note"}},"type":"object","required":["note"],"title":"FindingNote"},"FindingRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"tenant_id":{"type":"string","format":"uuid","title":"Tenant Id"},"fingerprint":{"type":"string","title":"Fingerprint"},"asset_id":{"type":"string","format":"uuid","title":"Asset Id"},"asset_target":{"type":"string","title":"Asset Target"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"severity":{"$ref":"#/components/schemas/Severity"},"confidence":{"type":"number","title":"Confidence"},"status":{"$ref":"#/components/schemas/FindingStatus"},"cve_ids":{"items":{"type":"string"},"type":"array","title":"Cve Ids"},"cwe_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cwe Id"},"owasp_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owasp Category"},"cvss_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cvss Score"},"epss_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Epss Score"},"frameworks":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object","title":"Frameworks"},"source":{"$ref":"#/components/schemas/Source"},"source_run_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Run Id"},"owner_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Owner User Id"},"sla_due_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sla Due At"},"first_seen_at":{"type":"string","format":"date-time","title":"First Seen At"},"last_seen_at":{"type":"string","format":"date-time","title":"Last Seen At"},"occurrence_count":{"type":"integer","title":"Occurrence Count"},"proof_of_concept":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proof Of Concept"},"suggested_fix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suggested Fix"},"fix_pr_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fix Pr Url"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"artifact_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Artifact Url"},"artifact_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Artifact Label"},"source_finding_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Finding Id"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"tool_signature":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Signature"},"snoozed_until_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Snoozed Until At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tenant_id","fingerprint","asset_id","asset_target","title","description","severity","confidence","status","cve_ids","cwe_id","owasp_category","cvss_score","epss_score","frameworks","source","source_run_id","owner_user_id","sla_due_at","first_seen_at","last_seen_at","occurrence_count","proof_of_concept","suggested_fix","fix_pr_url","notes","created_at","updated_at"],"title":"FindingRead"},"FindingSnooze":{"properties":{"until":{"type":"string","format":"date-time","title":"Until"},"note":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Note"}},"type":"object","required":["until"],"title":"FindingSnooze"},"FindingStatus":{"type":"string","enum":["open","in_progress","awaiting_fix_pr","pr_raised","validated","fixed","false_positive","risk_accepted","duplicate","snoozed"],"title":"FindingStatus"},"FindingStatusUpdate":{"properties":{"status":{"$ref":"#/components/schemas/FindingStatus"},"note":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Note"}},"type":"object","required":["status"],"title":"FindingStatusUpdate"},"FindingsBulkResult":{"properties":{"updated":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Updated"},"skipped":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Skipped"},"not_found":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Not Found"}},"type":"object","required":["updated","skipped","not_found"],"title":"FindingsBulkResult"},"FindingsBulkStatus":{"properties":{"finding_ids":{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":500,"minItems":1,"title":"Finding Ids"},"status":{"$ref":"#/components/schemas/FindingStatus"},"note":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Note"}},"type":"object","required":["finding_ids","status"],"title":"FindingsBulkStatus"},"FindingsStats":{"properties":{"by_severity":{"$ref":"#/components/schemas/SeverityCounts"},"open_by_severity":{"$ref":"#/components/schemas/SeverityCounts"},"total_by_severity":{"$ref":"#/components/schemas/SeverityCounts"},"by_status":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Status"},"open_count":{"type":"integer","title":"Open Count"},"total_count":{"type":"integer","title":"Total Count"},"sla_breaching":{"type":"integer","title":"Sla Breaching"},"sla_breaching_by_severity":{"$ref":"#/components/schemas/SeverityCounts"}},"type":"object","required":["by_severity","open_by_severity","total_by_severity","by_status","open_count","total_count","sla_breaching","sla_breaching_by_severity"],"title":"FindingsStats"},"FixProposal":{"properties":{"summary":{"type":"string","title":"Summary","description":"One-sentence title for the PR."},"description_md":{"type":"string","title":"Description Md","description":"PR body in Markdown. Explains the vulnerability, the fix, and any caveats."},"files_touched":{"items":{"type":"string"},"type":"array","title":"Files Touched","description":"Best-guess list of repo-relative file paths changed by the diff."},"unified_diff":{"type":"string","title":"Unified Diff","description":"Standard `diff --git` unified diff. May be multi-file."},"branch_name":{"type":"string","title":"Branch Name","description":"Suggested branch name, e.g. fix/CWE-89-sql-injection-search."},"confidence":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Confidence"},"cached":{"type":"boolean","title":"Cached","default":false},"caveats":{"type":"string","title":"Caveats","description":"Anything the developer must verify (e.g. test coverage, secrets, schema migration).","default":""}},"type":"object","required":["summary","description_md","files_touched","unified_diff","branch_name","confidence"],"title":"FixProposal"},"FrameworkCreate":{"properties":{"code":{"type":"string","maxLength":64,"minLength":2,"title":"Code"},"name":{"type":"string","maxLength":200,"minLength":2,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"version":{"type":"string","title":"Version","default":"1.0"}},"type":"object","required":["code","name"],"title":"FrameworkCreate"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"service":{"type":"string","title":"Service"},"version":{"type":"string","title":"Version"},"db_ok":{"type":"boolean","title":"Db Ok"}},"type":"object","required":["service","version","db_ok"],"title":"HealthResponse"},"QuestionItem":{"properties":{"id":{"type":"string","maxLength":64,"minLength":1,"title":"Id"},"question":{"type":"string","maxLength":2000,"minLength":4,"title":"Question"},"framework":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Framework"}},"type":"object","required":["id","question"],"title":"QuestionItem"},"QuestionnaireRequest":{"properties":{"questions":{"items":{"$ref":"#/components/schemas/QuestionItem"},"type":"array","maxItems":200,"minItems":1,"title":"Questions"}},"type":"object","required":["questions"],"title":"QuestionnaireRequest"},"RiskCreate":{"properties":{"title":{"type":"string","maxLength":200,"minLength":2,"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"category":{"type":"string","enum":["technical","operational","compliance","financial","reputational","strategic"],"title":"Category"},"owner_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Email"},"likelihood":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"Likelihood"},"impact":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"Impact"},"control_effectiveness":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Control Effectiveness","default":0},"treatment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Treatment"},"due_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Due Date"},"linked_finding_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Linked Finding Ids"},"framework_refs":{"items":{"type":"string"},"type":"array","title":"Framework Refs"}},"type":"object","required":["title","category","likelihood","impact"],"title":"RiskCreate"},"RiskUpdate":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"owner_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Email"},"likelihood":{"anyOf":[{"type":"integer","maximum":5.0,"minimum":1.0},{"type":"null"}],"title":"Likelihood"},"impact":{"anyOf":[{"type":"integer","maximum":5.0,"minimum":1.0},{"type":"null"}],"title":"Impact"},"control_effectiveness":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Control Effectiveness"},"status":{"anyOf":[{"type":"string","enum":["open","mitigating","accepted","transferred","closed"]},{"type":"null"}],"title":"Status"},"treatment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Treatment"},"due_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Due Date"}},"type":"object","title":"RiskUpdate"},"SemgrepRequest":{"properties":{"repo_url":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Repo Url"},"inline_code":{"anyOf":[{"type":"string","maxLength":500000},{"type":"null"}],"title":"Inline Code"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","description":"python | javascript | go | java | etc."},"config":{"type":"string","title":"Config","description":"semgrep --config value","default":"auto"},"asset_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Asset Id"},"save_as_finding":{"type":"boolean","title":"Save As Finding","default":false}},"type":"object","title":"SemgrepRequest"},"Severity":{"type":"string","enum":["critical","high","medium","low","info"],"title":"Severity"},"SeverityCounts":{"properties":{"critical":{"type":"integer","title":"Critical","default":0},"high":{"type":"integer","title":"High","default":0},"medium":{"type":"integer","title":"Medium","default":0},"low":{"type":"integer","title":"Low","default":0},"info":{"type":"integer","title":"Info","default":0},"total":{"type":"integer","title":"Total","default":0}},"type":"object","title":"SeverityCounts"},"Source":{"type":"string","enum":["ai_agent","dast_worker","sast_worker","sca_worker","cloud_worker","secrets_worker","manual","imported"],"title":"Source"},"TransitionRequest":{"properties":{"to_state":{"type":"string","enum":["in_progress","resolved","accepted","exempt","false_positive","open"],"title":"To State"},"reason":{"type":"string","maxLength":600,"minLength":2,"title":"Reason"},"actor_email":{"anyOf":[{"type":"string","maxLength":320},{"type":"null"}],"title":"Actor Email"}},"type":"object","required":["to_state","reason"],"title":"TransitionRequest"},"TriageSuggestion":{"properties":{"suggested_status":{"type":"string","title":"Suggested Status","description":"One of: false_positive, risk_accepted, fixed, keep_open"},"confidence":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Confidence"},"reasoning":{"type":"string","title":"Reasoning"},"cached":{"type":"boolean","title":"Cached","default":false}},"type":"object","required":["suggested_status","confidence","reasoning"],"title":"TriageSuggestion"},"TrivyImageRequest":{"properties":{"image":{"type":"string","maxLength":400,"minLength":2,"title":"Image","description":"e.g. nginx:1.25 or registry/img@sha256:..."},"asset_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Asset Id"},"save_as_finding":{"type":"boolean","title":"Save As Finding","default":false},"severity_filter":{"items":{"type":"string","enum":["CRITICAL","HIGH","MEDIUM","LOW","UNKNOWN"]},"type":"array","title":"Severity Filter"}},"type":"object","required":["image"],"title":"TrivyImageRequest"},"TruffleHogRequest":{"properties":{"repo_url":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Repo Url"},"inline_text":{"anyOf":[{"type":"string","maxLength":500000},{"type":"null"}],"title":"Inline Text"},"asset_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Asset Id"},"save_as_finding":{"type":"boolean","title":"Save As Finding","default":false}},"type":"object","title":"TruffleHogRequest"},"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"}}}}