{"openapi":"3.1.0","info":{"title":"NovaCopilot Open Decision APIs","version":"1.0.0","description":"European Trust & Eligibility Engine. Structured decisions for AI, advertising and digital regulation. Illustrative, not legal advice."},"servers":[{"url":"https://explorecopilotai.com"}],"paths":{"/api/public/v1/verify":{"post":{"summary":"Verify that a full decision response was issued by NovaCopilot and is unaltered","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"The complete Decision Passport as returned by the API"}}}},"responses":{"200":{"description":"Verification result","content":{"application/json":{"schema":{"type":"object","properties":{"decision_id":{"type":"string"},"valid":{"type":"boolean"},"status":{"type":"string","enum":["valid","expired","superseded","withdrawn","modified"]},"affected_by_change":{"type":"boolean"}}}}}}}}},"/api/public/v1/eligibility":{"post":{"summary":"NovaCopilot Ad Eligibility API decision","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["country","age","industry","ad_type","ai_used"],"properties":{"country":{"type":"string","enum":["AT","BE","BG","HR","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","NO","IS","LI"]},"age":{"type":"integer","minimum":0,"maximum":120},"industry":{"type":"string","enum":["gaming","gambling","alcohol","retail","finance","health","media","education"]},"ad_type":{"type":"string","enum":["contextual","personalized","profiling"]},"ai_used":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Decision","content":{"application/json":{"schema":{"type":"object","properties":{"decision":{"type":"string","enum":["allowed","allowed_with_controls","not_allowed"]},"risk":{"type":"string","enum":["low","medium","high"]},"confidence":{"type":"number"},"eligibility_status":{"type":"string","enum":["allowed","restricted","high_risk","not_allowed"]},"restrictions":{"type":"array","items":{"type":"string"}},"alternative_paths":{"type":"array","description":"Lower-risk ways to reach the same goal","items":{"type":"string"}},"applicable_regulations":{"type":"array","items":{"type":"string"}},"required_controls":{"type":"array","items":{"type":"string"}},"summary":{"type":"string"},"reasoning_summary":{"type":"string"},"affected_groups":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"regulation":{"type":"string"},"type":{"type":"string"},"reference":{"type":"string"},"title":{"type":"string"},"jurisdiction":{"type":"string"},"url":{"type":"string","format":"uri"},"effective_date":{"type":"string","format":"date"}}}},"relevant_enforcement":{"type":"array","description":"Earlier supervisory decisions, fines, court decisions and guidance on similar conduct","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"title":{"type":"string"},"authority":{"type":"string"},"country":{"type":"string"},"amount":{"type":"string"},"date":{"type":"string","format":"date"},"url":{"type":"string","format":"uri"},"summary":{"type":"string"}}}},"regulatory_signals":{"type":"array","description":"Regulatory trends relevant to the input","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string"},"date":{"type":"string","format":"date"}}}},"disclaimer":{"type":"string"},"decision_id":{"type":"string"},"decision_signature":{"type":"string"},"issued_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","format":"date-time"},"graph_version":{"type":"string"},"powered_by":{"type":"string","const":"NovaCopilot"},"attribution":{"type":"string"},"freshness":{"type":"string"},"hash":{"type":"string"},"verify_url":{"type":"string","format":"uri"},"decision_url":{"type":"string","format":"uri"}}}}}},"400":{"description":"Invalid input"}}}},"/api/public/v1/agents":{"get":{"summary":"List open agents","responses":{"200":{"description":"Agents"}}}},"/api/public/v1/agents/{slug}":{"get":{"summary":"Agent contract","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agent"},"404":{"description":"Not found"}}}}}}