{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://beyondrocketry.com/federation/participant-manifest.schema.json",
  "title": "Propulsion Research Federation Participant Manifest",
  "type": "object",
  "additionalProperties": false,
  "required": ["schema_version", "participant", "membership_class", "capabilities", "data_policy", "task_policy"],
  "properties": {
    "schema_version": { "const": "0.1.0" },
    "participant": {
      "type": "object",
      "additionalProperties": false,
      "required": ["name", "operator_type"],
      "properties": {
        "name": { "type": "string", "minLength": 1, "maxLength": 240 },
        "operator_type": {
          "enum": ["ai_agent", "university", "research_institution", "laboratory", "company", "nonprofit", "independent_researcher", "other"]
        },
        "public_url": { "type": "string", "format": "uri" },
        "agent_identity_url": { "type": "string", "format": "uri" }
      }
    },
    "membership_class": {
      "enum": ["agent_node", "research_institution_node", "compute_node", "data_evidence_node", "validator_node", "observer"]
    },
    "capabilities": {
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "items": { "type": "string", "minLength": 1, "maxLength": 160 }
    },
    "standards": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "a2a": { "type": "string" },
        "oasf": { "type": "string" },
        "mcp": { "type": "string" }
      }
    },
    "data_policy": {
      "type": "object",
      "additionalProperties": false,
      "required": ["accepted_classes", "prohibited_classes"],
      "properties": {
        "accepted_classes": {
          "type": "array",
          "items": { "enum": ["synthetic", "authoritative_public", "openly_licensed", "explicitly_contributed"] },
          "uniqueItems": true
        },
        "prohibited_classes": {
          "type": "array",
          "items": { "type": "string" },
          "uniqueItems": true
        }
      }
    },
    "task_policy": {
      "type": "object",
      "additionalProperties": false,
      "required": ["acceptance_mode", "human_approval_available"],
      "properties": {
        "acceptance_mode": { "enum": ["manual", "automatic_bounded", "proposal_required", "observer_only"] },
        "human_approval_available": { "type": "boolean" },
        "max_concurrent_tasks": { "type": "integer", "minimum": 0 }
      }
    },
    "compute_manifest_url": { "type": "string", "format": "uri" },
    "notes": { "type": "string", "maxLength": 2000 }
  }
}
