{
  "domain": "accounts-payable",
  "entity": "Invoice",
  "adapter": "accounts-payable",
  "events": [
    "invoice_received",
    "approval_granted",
    "payment_completed"
  ],
  "states": [
    "received",
    "approved",
    "paid",
    "rejected"
  ],
  "transitions": [
    {
      "on": "approval_granted",
      "from": "received",
      "to": "approved"
    },
    {
      "on": "payment_completed",
      "from": "approved",
      "to": "paid"
    }
  ],
  "actions": [
    {
      "name": "PAY_INVOICE",
      "allowed_states": [
        "approved"
      ],
      "required_parameters": [
        "amount",
        "currency"
      ],
      "required_permissions": [
        "accounts-payable.pay_invoice"
      ],
      "risk": "high",
      "approval": "never",
      "follow_up_events": [
        "payment_completed"
      ]
    },
    {
      "name": "REQUEST_APPROVAL",
      "allowed_states": [
        "received"
      ],
      "required_parameters": [],
      "required_permissions": [],
      "risk": "medium",
      "approval": "never",
      "follow_up_events": [
        "approval_granted"
      ]
    },
    {
      "name": "REJECT_INVOICE",
      "allowed_states": [
        "received",
        "approved"
      ],
      "required_parameters": [],
      "required_permissions": [],
      "risk": "medium",
      "approval": "never",
      "follow_up_events": [
        "approval_granted",
        "payment_completed"
      ]
    }
  ],
  "roles": {
    "finance_manager": [
      "accounts-payable.pay_invoice"
    ]
  }
}