{
  "version": "2026-11-02.1",
  "verticalLabel": "Insurance",
  "related": [
    {
      "id": "person-001",
      "entity": "Named insured",
      "scopeId": "scope-a",
      "fields": {
        "name": "Alex Example"
      }
    },
    {
      "id": "demo-doc-001",
      "entity": "Incident document",
      "scopeId": "scope-a",
      "fields": {
        "kind": "Synthetic incident report"
      }
    }
  ],
  "outputs": {
    "policyNumber": {
      "record": "policyNumber"
    },
    "namedInsuredId": {
      "record": "namedInsuredId"
    }
  },
  "sourceUpdates": {},
  "implementation": [
    "Map the configured source model and business rules.",
    "Connect the authorized source API and identity provider.",
    "Implement the consuming workflow, events and recovery.",
    "Verify behavior in a customer-owned test environment before release."
  ],
  "boundary": "Reference personal-auto intake only. Registering a notice does not determine coverage, liability, settlement or payment.",
  "id": "insurance-fnol",
  "vertical": "insurance",
  "title": "Personal auto claims intake",
  "description": "Register a notice of loss against an effective-dated policy, then route it for review.",
  "outcome": "An API-based claims intake path with policy references, permission checks and repeatable failure cases.",
  "sourceEntity": "Policy period",
  "itemEntity": "Notice of loss",
  "operation": "submit_loss_notice",
  "eventType": "claim.notice_received",
  "fields": [
    {
      "name": "lossDate",
      "label": "Loss date",
      "type": "date",
      "required": true,
      "example": "2026-06-15"
    },
    {
      "name": "incidentType",
      "label": "Incident type",
      "type": "string",
      "required": true,
      "example": "collision",
      "max": 120
    },
    {
      "name": "documentRef",
      "label": "Supporting document reference",
      "type": "string",
      "required": true,
      "example": "demo-doc-001",
      "max": 120
    }
  ],
  "record": {
    "policyNumber": "DEMO-PA-1001",
    "coverageStart": "2026-01-01",
    "coverageEnd": "2026-12-31",
    "namedInsuredId": "person-001",
    "documentRef": "demo-doc-001"
  },
  "guards": [
    {
      "left": {
        "input": "lossDate"
      },
      "op": "gte",
      "right": {
        "record": "coverageStart"
      },
      "code": "LOSS_OUTSIDE_PERIOD",
      "message": "The loss date precedes the reference policy period."
    },
    {
      "left": {
        "input": "lossDate"
      },
      "op": "lte",
      "right": {
        "record": "coverageEnd"
      },
      "code": "LOSS_OUTSIDE_PERIOD",
      "message": "The loss date follows the reference policy period."
    },
    {
      "left": {
        "input": "documentRef"
      },
      "op": "eq",
      "right": {
        "record": "documentRef"
      },
      "code": "DOCUMENT_NOT_LINKED",
      "message": "Use the supporting document linked to this reference policy."
    }
  ],
  "domainCases": [
    {
      "id": "loss-before-period",
      "title": "Loss before inception",
      "description": "A loss outside the beginning of the policy period is rejected.",
      "inputPatch": {
        "lossDate": "2025-12-31"
      },
      "expectedCode": "LOSS_OUTSIDE_PERIOD"
    },
    {
      "id": "document-mismatch",
      "title": "Unrelated document",
      "description": "A document from another case cannot support this notice.",
      "inputPatch": {
        "documentRef": "unrelated-document"
      },
      "expectedCode": "DOCUMENT_NOT_LINKED"
    }
  ],
  "systems": [
    "Policy administration",
    "Claims intake",
    "Documents",
    "Broker or employee identity"
  ]
}
