{"openapi":"3.1.0","info":{"title":"NERVA Platform API","version":"0.2.0","description":"Headless routing, intake, platform provisioning, and migration exports."},"servers":[{"url":"http://localhost:3000"}],"paths":{"/api/intake":{"post":{"summary":"Channel intake","parameters":[{"name":"async","in":"query","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["title","body"],"properties":{"title":{"type":"string"},"body":{"type":"string"},"idempotencyKey":{"type":"string"},"requesterEmail":{"type":"string"}}}}}},"responses":{"200":{"description":"Persisted request"},"202":{"description":"Queued job"}}}},"/api/intake/voice":{"post":{"summary":"Voice intake stub","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["transcript"],"properties":{"transcript":{"type":"string"},"requesterEmail":{"type":"string"},"sourceRef":{"type":"string"}}}}}},"responses":{"200":{"description":"Voice intake result"}}}},"/api/routing/decide":{"post":{"summary":"Headless routing decision","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["title","body"],"properties":{"title":{"type":"string"},"body":{"type":"string"},"mode":{"type":"string","enum":["recommend","persist"]},"sourceRef":{"type":"string"}}}}}},"responses":{"200":{"description":"Routing decision"}}}},"/api/routing/jobs/{id}":{"get":{"summary":"Poll async routing job","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Job status"}}}},"/api/platform/migration/export":{"get":{"summary":"Tenant migration export","parameters":[{"name":"tenant","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Migration bundle JSON"}}}},"/api/platform/marketplace":{"get":{"summary":"List marketplace packs","responses":{"200":{"description":"Catalog"}}},"post":{"summary":"Publish or install pack","responses":{"200":{"description":"Result"}}}},"/api/platform/compliance":{"get":{"summary":"Compliance automation report","parameters":[{"name":"tenant","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Compliance controls"}}}},"/api/platform/msp":{"get":{"summary":"MSP cockpit summary","parameters":[{"name":"organization","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"MSP summary"}}}},"/api/platform/pilot-export":{"get":{"summary":"Design partner ROI metrics export","parameters":[],"responses":{"200":{"description":"Pilot trends and onboarding readiness"}}}},"/api/webhooks/jira":{"post":{"summary":"Jira inbound ITSM lifecycle webhook","responses":{"200":{"description":"Request updated"}}}},"/api/webhooks/servicenow":{"post":{"summary":"ServiceNow inbound incident webhook","responses":{"200":{"description":"Request updated"}}}},"/api/bots/teams":{"post":{"summary":"Microsoft Bot Framework message ingress (@NERVA / DM)","responses":{"200":{"description":"Bot reply activity"}}}},"/api/webhooks/teams":{"post":{"summary":"Microsoft Teams message webhook","responses":{"200":{"description":"Ingested"}}}},"/api/webhooks/slack":{"post":{"summary":"Slack event webhook","responses":{"200":{"description":"Ingested"}}}},"/api/platform/production-guard":{"get":{"summary":"Production environment guard status","responses":{"200":{"description":"Guard summary"}}}}},"components":{"securitySchemes":{"IntakeKey":{"type":"apiKey","in":"header","name":"x-nerva-intake-key"},"ProvisionKey":{"type":"apiKey","in":"header","name":"x-nerva-provision-key"}}}}