{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://trp.ecoclaim.ca/schemas/v3/material-requirement.schema.json",
  "title": "TRP MaterialRequirement",
  "description": "What must be repaired or replaced, mapped from estimate lines. Draft 3.0.0-draft.",
  "allOf": [{ "$ref": "common.schema.json#/$defs/envelope" }],
  "type": "object",
  "required": ["claim_id", "estimate_line_ids", "function", "quantity", "mapping"],
  "properties": {
    "type": { "const": "trp.material_requirement" },
    "claim_id": { "$ref": "common.schema.json#/$defs/identifier" },
    "estimate_line_ids": {
      "type": "array",
      "minItems": 1,
      "items": { "$ref": "common.schema.json#/$defs/identifier" }
    },
    "function": { "type": "string", "minLength": 1 },
    "action": { "enum": ["remove", "replace", "repair", "clean", "install", "salvage"] },
    "quantity": { "$ref": "common.schema.json#/$defs/quantity" },
    "constraints": { "type": "array", "items": { "type": "string" } },
    "mapping": {
      "type": "object",
      "required": ["basis", "data_grade"],
      "properties": {
        "basis": { "enum": ["one_to_one", "assembly_decomposition", "manual", "generic_proxy"] },
        "data_grade": { "$ref": "common.schema.json#/$defs/dataGrade" },
        "note": { "type": "string" }
      }
    }
  }
}
