{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://nmdvcell.com/resource/api/v2/research_answer.schema.json",
  "title": "NMD-VCell Research Answer Object",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "answer_id",
    "version",
    "question",
    "eligibility",
    "evidence",
    "domain_match",
    "model",
    "baselines",
    "ood_status",
    "uncertainty",
    "missing_truth",
    "next_experiment",
    "expected_information_gain",
    "claim_ceiling",
    "does_not_imply",
    "citation_metadata",
    "generated_by",
    "is_new_scientific_claim",
    "research_answer_sha256"
  ],
  "properties": {
    "answer_id": {
      "type": "string",
      "pattern": "^ANSWER:"
    },
    "version": {
      "type": "string",
      "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$"
    },
    "question": {
      "type": "object",
      "required": [
        "question_schema",
        "question_id",
        "disease",
        "cell_state",
        "perturbation",
        "target",
        "targets",
        "time",
        "endpoint",
        "study_mode"
      ]
    },
    "eligibility": {
      "type": "object",
      "required": [
        "decision",
        "prediction_permitted",
        "reason_codes",
        "summary"
      ],
      "properties": {
        "decision": {
          "enum": [
            "PREDICTABLE",
            "BOUNDED",
            "ABSTAIN"
          ]
        },
        "prediction_permitted": {
          "type": "boolean"
        }
      }
    },
    "evidence": {
      "type": "array",
      "minItems": 1
    },
    "domain_match": {
      "type": "array",
      "minItems": 6
    },
    "model": {
      "type": "object",
      "required": [
        "execution_state",
        "eligible_model_run_ids",
        "reference_model_run_ids",
        "boundary"
      ]
    },
    "baselines": {
      "type": "array",
      "minItems": 4
    },
    "ood_status": {
      "type": "array",
      "minItems": 6
    },
    "uncertainty": {
      "type": "object",
      "required": [
        "epistemic",
        "data",
        "domain",
        "quantified"
      ]
    },
    "missing_truth": {
      "type": "array",
      "minItems": 1
    },
    "next_experiment": {
      "type": "object",
      "required": [
        "study_card_id",
        "study_card_path",
        "design_state",
        "context",
        "perturbation",
        "primary_endpoint",
        "secondary_endpoints",
        "planning_sample_size",
        "decision_rule"
      ]
    },
    "expected_information_gain": {
      "type": "object",
      "required": [
        "state",
        "reason",
        "numeric_value",
        "boundary"
      ]
    },
    "claim_ceiling": {
      "type": "object",
      "required": [
        "level",
        "claim_id",
        "statement"
      ]
    },
    "does_not_imply": {
      "type": "array",
      "minItems": 1
    },
    "citation_metadata": {
      "type": "object",
      "required": [
        "title",
        "resource_release",
        "evidence_freeze",
        "doi_state",
        "canonical_path"
      ]
    },
    "generated_by": {
      "type": "array",
      "minItems": 1
    },
    "is_new_scientific_claim": {
      "const": false
    },
    "research_answer_sha256": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    }
  }
}
