{
  "openapi": "3.1.0",
  "info": {
    "title": "GNX Earswet Output Governance OS API",
    "version": "1.0.1",
    "description": "Canonical nested-contract API for biofluid candidate output pre-control. Candidate value presence is not raw access permission."
  },
  "servers": [
    { "url": "https://earswet.com" },
    { "url": "http://127.0.0.1:3700" }
  ],
  "paths": {
    "/health/ready": {
      "get": {
        "summary": "Engine readiness and fail-closed state",
        "responses": { "200": { "description": "READY" } }
      }
    },
    "/v1/scenarios": {
      "get": {
        "summary": "List deterministic verification scenarios",
        "responses": { "200": { "description": "Scenario registry" } }
      }
    },
    "/v1/scenarios/{id}": {
      "get": {
        "summary": "Read canonical scenario request",
        "parameters": [{ "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }],
        "responses": { "200": { "description": "Scenario request" } }
      }
    },
    "/v1/scenarios/{id}/evaluate": {
      "post": {
        "summary": "Evaluate deterministic scenario through the real OS Engine",
        "parameters": [{ "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }],
        "requestBody": {
          "content": { "application/json": { "schema": { "type": "object", "properties": { "persistEvidence": { "type": "boolean" } } } } }
        },
        "responses": { "200": { "description": "Output governance decision with optional evidence" } }
      }
    },
    "/v1/earswet/evaluate": {
      "post": {
        "summary": "Evaluate output eligibility before SDK/BLE/API release",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": { "$ref": "/docs/schemas/earswet-evaluation-request.schema.json" }
            }
          }
        },
        "responses": { "200": { "description": "Output governance decision" }, "400": { "description": "REQUEST_SCHEMA_INVALID" } }
      }
    },
    "/v1/evidence/{id}": {
      "get": {
        "summary": "Read Evidence Packet",
        "parameters": [{ "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }],
        "responses": { "200": { "description": "Evidence Packet" }, "404": { "description": "Evidence not found" } }
      }
    },
    "/v1/replay/{id}": {
      "get": {
        "summary": "Replay Evidence Packet decision",
        "parameters": [{ "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }],
        "responses": { "200": { "description": "Replay result" } }
      }
    },
    "/v1/ble/map": {
      "get": {
        "summary": "BLE actual-value suppression contract",
        "responses": { "200": { "description": "BLE characteristic map" } }
      }
    }
  }
}
