{
  "meta": {
    "format_version": 1,
    "source_tenant": "example"
  },
  "entity_types": [
    {
      "$key": "entity_claim",
      "code": "claim",
      "name": "Claim",
      "description": "Warranty claim entity"
    }
  ],
  "action_matrixes": [
    {
      "$key": "claim_matrix",
      "code": "CLAIM_WORKFLOW",
      "description": "Minimal claim workflow matrix"
    }
  ],
  "action_statuses": [
    {
      "$key": "draft",
      "matrix_id": "claim_matrix",
      "code": "DRAFT",
      "name": "Draft",
      "description": "Claim can be edited before submission.",
      "is_initial": true
    },
    {
      "$key": "submitted",
      "matrix_id": "claim_matrix",
      "code": "SUBMITTED",
      "name": "Submitted",
      "description": "Claim was submitted to the external warranty system."
    },
    {
      "$key": "rejected",
      "matrix_id": "claim_matrix",
      "code": "REJECTED",
      "name": "Rejected",
      "description": "Claim failed business validation or was rejected by the target system."
    },
    {
      "$key": "technical_failure",
      "matrix_id": "claim_matrix",
      "code": "TECHNICAL_FAILURE",
      "name": "Technical failure",
      "description": "Submission failed for a retryable technical reason."
    }
  ],
  "action_actions": [
    {
      "$key": "normalize_inputs",
      "matrix_id": "claim_matrix",
      "code": "NORMALIZE_INPUTS",
      "name": "Normalize inputs",
      "type": "CODE",
      "description": "Normalizes free-text inputs before submission.",
      "config": {
        "code": "return { success: true, outputs: { normalizedComment: String(inputs.comment ?? '').trim() } };",
        "parameters": {
          "maxCommentLength": 500
        }
      },
      "input_contract": {
        "comment": {
          "required": false,
          "type": "string",
          "description": "Optional submitter comment."
        }
      },
      "output_contract": {
        "variable_name": "normalization",
        "description": "Normalized submission inputs.",
        "fields": {
          "normalizedComment": "string"
        }
      }
    },
    {
      "$key": "validate_claim",
      "matrix_id": "claim_matrix",
      "code": "VALIDATE_CLAIM",
      "name": "Validate claim",
      "type": "CHECK",
      "description": "Checks that required claim facts are present.",
      "config": {
        "rules": [
          {
            "name": "requires_claim_id",
            "conditions": {
              "all": [
                {
                  "fact": "claimId",
                  "operator": "notEqual",
                  "value": null
                }
              ]
            },
            "event": {
              "type": "claim_id_present",
              "params": {
                "exit_condition": "validated",
                "severity": "info"
              }
            }
          }
        ],
        "resultMessage": "Validated claim input before submission."
      },
      "input_contract": {
        "claimId": {
          "required": true,
          "type": "string",
          "description": "Claim id to validate."
        }
      },
      "output_contract": {
        "variable_name": "validation",
        "description": "Business validation result.",
        "fields": {
          "exit_condition": "string",
          "matched_rules": "array"
        }
      }
    },
    {
      "$key": "submit_claim",
      "matrix_id": "claim_matrix",
      "code": "SUBMIT_CLAIM",
      "name": "Submit claim",
      "type": "CALL",
      "description": "Submits the claim to the external warranty system.",
      "config": {
        "path": "/claims/{{claimId}}/submit",
        "method": "POST",
        "body": {
          "claimId": "{{claimId}}",
          "comment": "{{normalizedComment}}"
        },
        "responseMapping": {
          "submissionId": "data.submissionId",
          "decision": "data.decision",
          "message": "data.message"
        },
        "successCriteria": {
          "httpStatusCodes": [200, 201],
          "businessSuccessPath": "data.accepted",
          "businessSuccessValues": [true]
        },
        "resultMessage": "Submitted claim to external warranty system.",
        "system_code": "SAP"
      },
      "input_contract": {
        "claimId": {
          "required": true,
          "type": "string",
          "description": "Claim id to submit."
        },
        "normalizedComment": {
          "required": false,
          "type": "string",
          "description": "Normalized submitter comment."
        }
      },
      "output_contract": {
        "variable_name": "submission",
        "description": "External submission response.",
        "fields": {
          "submissionId": "string",
          "decision": "string",
          "message": "string"
        }
      }
    }
  ],
  "action_sequences": [
    {
      "$key": "submit_sequence",
      "matrix_id": "claim_matrix",
      "code": "SUBMIT_CLAIM_SEQUENCE",
      "name": "Submit claim sequence",
      "description": "Normalize, validate, and submit a claim.",
      "input_contract": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "claimId": {
            "type": "string",
            "description": "Claim id supplied by the caller."
          },
          "actorUserId": {
            "type": "string",
            "description": "User starting the sequence."
          },
          "comment": {
            "type": "string",
            "description": "Optional submitter comment."
          }
        },
        "required": ["claimId", "actorUserId"],
        "additionalProperties": false
      }
    }
  ],
  "action_sequence_actions": [
    {
      "$key": "step_normalize",
      "sequence_id": "submit_sequence",
      "action_id": "normalize_inputs",
      "position": 1,
      "input_mapping": {
        "comment": "inputs.comment"
      }
    },
    {
      "$key": "step_validate",
      "sequence_id": "submit_sequence",
      "action_id": "validate_claim",
      "position": 2,
      "input_mapping": {
        "claimId": "inputs.claimId"
      }
    },
    {
      "$key": "step_submit",
      "sequence_id": "submit_sequence",
      "action_id": "submit_claim",
      "position": 3,
      "input_mapping": {
        "claimId": "inputs.claimId",
        "normalizedComment": "outputs.normalization.normalizedComment"
      }
    }
  ],
  "action_matrix_sequences": [
    {
      "$key": "draft_submit",
      "action_matrix_id": "claim_matrix",
      "status_id": "draft",
      "sequence_id": "submit_sequence",
      "default_outcome_status_id": "submitted",
      "default_outcome_preserves_status": false,
      "default_technical_failure_status_id": "technical_failure",
      "outcome_rules": [
        {
          "exit_condition": "rejected",
          "status_id": "rejected",
          "severity": "error"
        },
        {
          "exit_condition": "submitted",
          "status_id": "submitted",
          "severity": "info"
        }
      ]
    }
  ],
  "action_entity_matrix": [
    {
      "$key": "claim_entity_matrix",
      "action_matrix_id": "claim_matrix",
      "entity_type": "claim"
    }
  ]
}
