{"openapi":"3.1.0","info":{"title":"nur","description":"Privacy-preserving federated threat intelligence server","version":"0.1.0"},"paths":{"/query/vendor/{name}":{"get":{"tags":["query"],"summary":"Query Vendor","description":"Aggregated scores across all anonymous contributors for a vendor.","operationId":"query_vendor_query_vendor__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/query/category/{name}":{"get":{"tags":["query"],"summary":"Query Category","description":"All vendors in a category with aggregate scores.","operationId":"query_category_query_category__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/query/techniques":{"get":{"tags":["query"],"summary":"Query Techniques","description":"Most-seen MITRE techniques across all AttackMaps.","operationId":"query_techniques_query_techniques_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/query/ioc-stats":{"get":{"tags":["query"],"summary":"Query Ioc Stats","description":"IOC type distribution (no raw values ever).","operationId":"query_ioc_stats_query_ioc_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/secagg/enroll":{"post":{"tags":["secagg"],"summary":"Enroll","description":"Enroll a party in a secure aggregation session.","operationId":"enroll_secagg_enroll_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrollRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/secagg/submit-shares":{"post":{"tags":["secagg"],"summary":"Submit Shares","description":"Submit aggregated shares from a party.","operationId":"submit_shares_secagg_submit_shares_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitSharesRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/secagg/result/{session_id}":{"get":{"tags":["secagg"],"summary":"Get Result","description":"Get the aggregated result for a completed session.","operationId":"get_result_secagg_result__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/secagg/sessions":{"get":{"tags":["secagg"],"summary":"List Sessions","description":"List active sessions (admin).","operationId":"list_sessions_secagg_sessions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/intelligence/market/{category}":{"get":{"tags":["intelligence"],"summary":"Market Map","description":"Market map view — vendors tiered by score + confidence.","operationId":"market_map_intelligence_market__category__get","parameters":[{"name":"category","in":"path","required":true,"schema":{"type":"string","title":"Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/intelligence/threat-map":{"post":{"tags":["intelligence"],"summary":"Threat Map","description":"Map a threat description to MITRE techniques and show coverage gaps.","operationId":"threat_map_intelligence_threat_map_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThreatMapRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/intelligence/danger-radar":{"get":{"tags":["intelligence"],"summary":"Danger Radar","description":"Vendors with hidden risk signals — contradictions between reviews and real-world data.","operationId":"danger_radar_intelligence_danger_radar_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/intelligence/patterns/{vertical}":{"get":{"tags":["intelligence"],"summary":"Attack Patterns","description":"Get attack methodology patterns for an industry vertical.\n\nReturns aggregated attack patterns, technique frequency, tool effectiveness,\nremediation insights, and minimum viable stack recommendations.","operationId":"attack_patterns_intelligence_patterns__vertical__get","parameters":[{"name":"vertical","in":"path","required":true,"schema":{"type":"string","title":"Vertical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/intelligence/simulate":{"post":{"tags":["intelligence"],"summary":"Simulate","description":"Simulate an attack chain against a security stack.\n\nShows exactly where your defenses break, step by step.","operationId":"simulate_intelligence_simulate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search/vendor/{name}":{"get":{"tags":["search"],"summary":"Search Vendor","description":"Enhanced vendor lookup — weighted score, confidence, source breakdown, metadata.","operationId":"search_vendor_search_vendor__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search/category/{name}":{"get":{"tags":["search"],"summary":"Search Category","description":"Category ranking — vendors ranked by weighted score within a category.","operationId":"search_category_search_category__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search/compare":{"get":{"tags":["search"],"summary":"Compare Vendors","description":"Side-by-side vendor comparison.","operationId":"compare_vendors_search_compare_get","parameters":[{"name":"a","in":"query","required":true,"schema":{"type":"string","description":"First vendor ID","title":"A"},"description":"First vendor ID"},{"name":"b","in":"query","required":true,"schema":{"type":"string","description":"Second vendor ID","title":"B"},"description":"Second vendor ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pricing":{"get":{"tags":["tiers"],"summary":"Pricing","description":"Pricing tiers and features.","operationId":"pricing_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/my-tier":{"get":{"tags":["tiers"],"summary":"My Tier","description":"Check your current tier and features.","operationId":"my_tier_my_tier_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/vendor-dashboard/{vendor}":{"get":{"tags":["tiers"],"summary":"Vendor Dashboard","description":"Vendor intelligence dashboard — how the market perceives you.\n\nThis is the B2B product: vendors pay to see their aggregate data\nwith cryptographic proof of sample size and methodology.\n\nReturns: aggregate scores, detection gaps, category comparison,\nand proof chain proving the data is real.","operationId":"vendor_dashboard_vendor_dashboard__vendor__get","parameters":[{"name":"vendor","in":"path","required":true,"schema":{"type":"string","title":"Vendor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-position/{vendor}":{"get":{"tags":["tiers"],"summary":"My Position","description":"Your comparative position — the free-tier value proposition.\n\n\"You scored CrowdStrike 9.2 — that's 73rd percentile across\n42 evaluations. The category average is 8.1.\"\n\nThis is what you get for contributing. Full analysis requires Pro.","operationId":"my_position_my_position__vendor__get","parameters":[{"name":"vendor","in":"path","required":true,"schema":{"type":"string","title":"Vendor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/verify/receipt":{"post":{"tags":["verify"],"summary":"Verify Receipt Endpoint","description":"Verify a contribution receipt's Merkle inclusion proof.","operationId":"verify_receipt_endpoint_verify_receipt_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/verify/aggregate/{vendor}":{"get":{"tags":["verify"],"summary":"Verify Aggregate","description":"Generate and verify an aggregate proof for a vendor.","operationId":"verify_aggregate_verify_aggregate__vendor__get","parameters":[{"name":"vendor","in":"path","required":true,"schema":{"type":"string","title":"Vendor"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/proof/stats":{"get":{"tags":["verify"],"summary":"Proof Stats","description":"Platform-wide proof statistics.","operationId":"proof_stats_proof_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/category/propose":{"post":{"tags":["verify"],"summary":"Propose Category","description":"Propose a new category by submitting its hash (blind).","operationId":"propose_category_category_propose_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/category/check/{category_hash}":{"get":{"tags":["verify"],"summary":"Check Category","description":"Check if a proposed category has reached the discovery threshold.","operationId":"check_category_category_check__category_hash__get","parameters":[{"name":"category_hash","in":"path","required":true,"schema":{"type":"string","title":"Category Hash"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/category/reveal":{"post":{"tags":["verify"],"summary":"Reveal Category","description":"Vote to reveal a category's plaintext name.","operationId":"reveal_category_category_reveal_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/category/pending":{"get":{"tags":["verify"],"summary":"List Pending Categories","description":"List pending categories awaiting reveal.","operationId":"list_pending_categories_category_pending_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/proof/bdp-stats":{"get":{"tags":["verify"],"summary":"Bdp Stats","description":"BDP behavioral profile statistics (aggregate only, no individual profiles).","operationId":"bdp_stats_proof_bdp_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/vendor/{vendor_id}":{"get":{"tags":["vendors"],"summary":"Vendor Profile","description":"Vendor profile page with practitioner scores + vendor demo.","operationId":"vendor_profile_vendor__vendor_id__get","parameters":[{"name":"vendor_id","in":"path","required":true,"schema":{"type":"string","title":"Vendor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/vendor/{vendor_id}/claim":{"get":{"tags":["vendors"],"summary":"Claim Vendor Page","description":"Page where vendors enter their work email to claim a profile.","operationId":"claim_vendor_page_vendor__vendor_id__claim_get","parameters":[{"name":"vendor_id","in":"path","required":true,"schema":{"type":"string","title":"Vendor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["vendors"],"summary":"Claim Vendor","description":"Process vendor profile claim -- verify email domain matches vendor.","operationId":"claim_vendor_vendor__vendor_id__claim_post","parameters":[{"name":"vendor_id","in":"path","required":true,"schema":{"type":"string","title":"Vendor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/register":{"get":{"summary":"Register Page","operationId":"register_page_register_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"post":{"summary":"Register","description":"Register for a free API key. Work email required.","operationId":"register_register_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/verify/{token}":{"get":{"summary":"Verify Email","description":"Magic link — click to verify email and get API key.","operationId":"verify_email_verify__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/invites":{"get":{"summary":"Get Invites","description":"Get your invite codes.","operationId":"get_invites_invites_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/public-stats":{"get":{"summary":"Public Stats","operationId":"public_stats_api_public_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dashboard":{"get":{"summary":"Dashboard","operationId":"dashboard_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/stats":{"get":{"summary":"Stats","operationId":"stats_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/contributions":{"get":{"summary":"List Contributions","description":"Browse contributions filtered by source, vendor, category, or type.\nAll data is already anonymized — no PII is stored or returned.","operationId":"list_contributions_contributions_get","parameters":[{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},{"name":"vendor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vendor"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"contrib_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contrib Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contribute/submit":{"post":{"summary":"Contribute Eval","operationId":"contribute_eval_contribute_submit_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contribute/attack-map":{"post":{"summary":"Contribute Attack Map","operationId":"contribute_attack_map_contribute_attack_map_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contribute/ioc-bundle":{"post":{"summary":"Contribute Ioc Bundle","operationId":"contribute_ioc_bundle_contribute_ioc_bundle_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contribute/dashboard-scan":{"post":{"summary":"Contribute Dashboard Scan","description":"Accept a dashboard scan from the browser extension.","operationId":"contribute_dashboard_scan_contribute_dashboard_scan_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/contribute/feature":{"post":{"summary":"Contribute Feature","description":"Catalog a tool feature (ToolFeature). Tier B scrapers + manual.","operationId":"contribute_feature_contribute_feature_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contribute/integration":{"post":{"summary":"Contribute Integration","description":"Catalog or update an integration relationship between two tools.","operationId":"contribute_integration_contribute_integration_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contribute/utilization":{"post":{"summary":"Contribute Utilization","description":"Aggregate utilization snapshot per (vendor, feature, cohort).","operationId":"contribute_utilization_contribute_utilization_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contribute/remediation":{"post":{"summary":"Contribute Remediation","description":"Post-incident attribution — the killer Tier C data.\n\n'When attack X hit my org, this tool/feature did Y.' Outcomes:\nblocked | detected | missed | partial.","operationId":"contribute_remediation_contribute_remediation_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tool-features/{vendor_id}":{"get":{"summary":"Tool Features For Vendor","description":"List ToolFeatures known for a vendor — for tool detail page.","operationId":"tool_features_for_vendor_api_v1_tool_features__vendor_id__get","parameters":[{"name":"vendor_id","in":"path","required":true,"schema":{"type":"string","title":"Vendor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/integrations/{vendor_id}":{"get":{"summary":"Integrations For Vendor","description":"List integrations involving a vendor (either side).","operationId":"integrations_for_vendor_api_v1_integrations__vendor_id__get","parameters":[{"name":"vendor_id","in":"path","required":true,"schema":{"type":"string","title":"Vendor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/compare/{vendor}":{"get":{"summary":"Compare Vendor","description":"Return aggregate peer data for a vendor, used by the extension's utilization report.","operationId":"compare_vendor_api_compare__vendor__get","parameters":[{"name":"vendor","in":"path","required":true,"schema":{"type":"string","title":"Vendor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ingest/webhook":{"post":{"summary":"Ingest Webhook","description":"Universal webhook — accepts data from Splunk, Sentinel, CrowdStrike,\nsyslog/CEF, or generic IOC lists. Auto-detects format and stores.","operationId":"ingest_webhook_ingest_webhook_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/settings/slack":{"post":{"summary":"Configure Slack","description":"Configure Slack webhook URL for notifications.","operationId":"configure_slack_settings_slack_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyze":{"post":{"summary":"Analyze","operationId":"analyze_analyze_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/threat-model":{"post":{"summary":"Threat Model Endpoint","description":"Generate a threat model for a given stack and vertical (or named threat).\n\nBody fields:\n  stack: list[str]               REQUIRED — vendor IDs\n  vertical: str                  default \"healthcare\"\n  org_name: str                  default \"Organization\"\n  named_threat: str | None       optional — e.g. \"mythos\", \"lockbit-2024\", \"volt-typhoon\".\n                                 When set, the named threat's technique chain\n                                 replaces the vertical's priority_techniques.","operationId":"threat_model_endpoint_threat_model_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/named-threats":{"get":{"summary":"Named Threats List","description":"List available named threat campaigns/actors for the simulator UI.","operationId":"named_threats_list_api_v1_named_threats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/guide":{"get":{"summary":"Guide","operationId":"guide_guide_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/docs":{"get":{"summary":"Docs Redirect","operationId":"docs_redirect_docs_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/simulate":{"get":{"summary":"Simulate Page","description":"The buyer-facing simulator UI. Stack + threat picker -> three-tier\nremediation output, calling /threat-model under the hood.","operationId":"simulate_page_simulate_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/v1/remediation":{"get":{"summary":"Api Remediation","description":"What remediation worked for this threat -- aggregate only.","operationId":"api_remediation_api_v1_remediation_get","parameters":[{"name":"threat","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Threat"}},{"name":"techniques","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Techniques"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/coverage":{"get":{"summary":"Api Coverage","description":"Detection gap analysis for your tool stack.","operationId":"api_coverage_api_v1_coverage_get","parameters":[{"name":"tools","in":"query","required":true,"schema":{"type":"string","title":"Tools"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/benchmark":{"get":{"summary":"Api Benchmark","description":"Org benchmarking -- how do peers in your vertical compare.","operationId":"api_benchmark_api_v1_benchmark_get","parameters":[{"name":"vertical","in":"query","required":true,"schema":{"type":"string","title":"Vertical"}},{"name":"org_size","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/vendor-meta":{"get":{"summary":"Vendor Metadata","description":"Get category and competitors for a vendor.","operationId":"vendor_metadata_api_v1_vendor_meta_get","parameters":[{"name":"vendor","in":"query","required":true,"schema":{"type":"string","title":"Vendor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/vendor-search":{"get":{"summary":"Vendor Search","description":"Autocomplete vendor search — returns matching vendor names.","operationId":"vendor_search_api_v1_vendor_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contribute":{"get":{"summary":"Contribute Form","operationId":"contribute_form_contribute_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"post":{"summary":"Contribute Web Form","operationId":"contribute_web_form_contribute_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/contribute/voice":{"post":{"summary":"Contribute Voice","description":"Accept a voice recording for eval. Store audio for later processing.\n\nGated by NUR_ENABLE_VOICE=1 — disabled by default because storing\nvoice biometrics conflicts with the trustless positioning.","operationId":"contribute_voice_contribute_voice_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/contribute/thanks":{"get":{"summary":"Contribute Thanks","operationId":"contribute_thanks_contribute_thanks_get","parameters":[{"name":"receipt","in":"query","required":false,"schema":{"type":"string","default":"","title":"Receipt"}},{"name":"vendor","in":"query","required":false,"schema":{"type":"string","default":"","title":"Vendor"}},{"name":"score","in":"query","required":false,"schema":{"type":"string","default":"","title":"Score"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contribute/quick":{"get":{"summary":"Quick Contribute Form","operationId":"quick_contribute_form_contribute_quick_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/v1/scrape-stats":{"get":{"summary":"Scrape Stats","description":"Stats on scraped data sources.","operationId":"scrape_stats_api_v1_scrape_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"EnrollRequest":{"properties":{"session_id":{"type":"string","title":"Session Id"},"party_id":{"type":"string","title":"Party Id"},"n_parties":{"type":"integer","title":"N Parties","default":3},"field_names":{"items":{"type":"string"},"type":"array","title":"Field Names"}},"type":"object","required":["session_id","party_id"],"title":"EnrollRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"SimulateRequest":{"properties":{"stack":{"items":{"type":"string"},"type":"array","title":"Stack"},"vertical":{"type":"string","title":"Vertical","default":"healthcare"},"attack_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Attack Type"}},"type":"object","required":["stack"],"title":"SimulateRequest"},"SubmitSharesRequest":{"properties":{"session_id":{"type":"string","title":"Session Id"},"party_id":{"type":"string","title":"Party Id"},"shares":{"items":{"type":"number"},"type":"array","title":"Shares"}},"type":"object","required":["session_id","party_id","shares"],"title":"SubmitSharesRequest"},"ThreatMapRequest":{"properties":{"threat":{"type":"string","title":"Threat"},"current_tools":{"items":{"type":"string"},"type":"array","title":"Current Tools","default":[]}},"type":"object","required":["threat"],"title":"ThreatMapRequest"},"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"}}}}