{
  "radius_agent": {
    "request_processors": [
      {
        "id": "IPSAuthorization",
        "filters": [
          "*string:~*vars.*radReqType:*radAuth"
        ],
        "flags": [
          "*authorize",
          "*ips",
          "*continue"
        ],
        "request_fields": [
          {
            "tag": "Category",
            "path": "*cgreq.Category",
            "type": "*constant",
            "value": "ips"
          },
          {
            "tag": "RequestType",
            "path": "*cgreq.RequestType",
            "type": "*constant",
            "value": "*prepaid",
            "mandatory": true
          },
          {
            "tag": "OriginID",
            "path": "*opts.*originID",
            "type": "*variable",
            "value": "~*req.Acct-Session-Id",
            "mandatory": true
          },
          {
            "tag": "Account",
            "path": "*cgreq.Account",
            "type": "*variable",
            "value": "~*req.User-Name",
            "mandatory": true
          },
          {
            "tag": "Subject",
            "path": "*cgreq.Subject",
            "type": "*variable",
            "value": "~*req.User-Name",
            "mandatory": true
          },
          {
            "tag": "Destination",
            "path": "*cgreq.Destination",
            "type": "*variable",
            "value": "~*req.Called-Station-Id",
            "mandatory": true
          },
          {
            "tag": "SetupTime",
            "path": "*cgreq.SetupTime",
            "type": "*variable",
            "value": "~*req.Event-Timestamp",
            "mandatory": true
          },
          {
            "tag": "AnswerTime",
            "path": "*cgreq.AnswerTime",
            "type": "*variable",
            "value": "~*req.Event-Timestamp",
            "mandatory": true
          },
          {
            "tag": "IMSI",
            "path": "*cgreq.IMSI",
            "type": "*variable",
            "value": "~*req.User-Name",
            "mandatory": true
          },
          {
            "tag": "APN",
            "path": "*cgreq.APN",
            "type": "*variable",
            "value": "~*req.Called-Station-Id",
            "mandatory": true
          },
          {
            "tag": "CallingStationId",
            "path": "*cgreq.CallingStationId",
            "type": "*variable",
            "value": "~*req.Calling-Station-Id",
            "mandatory": true
          },
          {
            "tag": "NAS-Identifier",
            "path": "*cgreq.NAS-Identifier",
            "type": "*variable",
            "value": "~*req.NAS-Identifier",
            "mandatory": true
          },
          {
            "tag": "FramedPool",
            "path": "*cgreq.FramedPool",
            "type": "*variable",
            "value": "~*req.Framed-Pool",
            "mandatory": true
          },
          {
            "tag": "ServiceType",
            "path": "*cgreq.ServiceType",
            "type": "*variable",
            "value": "~*req.Service-Type",
            "mandatory": true
          },
          {
            "tag": "FramedProtocol",
            "path": "*cgreq.FramedProtocol",
            "type": "*variable",
            "value": "~*req.Framed-Protocol",
            "mandatory": true
          },
          {
            "tag": "NAS-IP",
            "path": "*cgreq.NAS-IP",
            "type": "*variable",
            "value": "~*req.NAS-IP-Address",
            "mandatory": true
          }
        ],
        "reply_fields": [
          {
            "tag": "ProxyState",
            "path": "*rep.Proxy-State",
            "type": "*variable",
            "value": "~*req.Proxy-State"
          },
          {
            "tag": "Code",
            "path": "*rep.*radReplyCode",
            "filters": ["*notempty:~*cgrep.Error:"],
            "type": "*constant",
            "value": "AccessReject"
          },
          {
            "tag": "ErrorReplyMessage",
            "path": "*rep.Reply-Message",
            "filters": ["*notempty:~*cgrep.Error:"],
            "type": "*variable",
            "value": "~*cgrep.Error",
            "blocker": true
          },
          {
            "tag": "FramedIPAddress",
            "path": "*rep.Framed-IP-Address",
            "type": "*variable",
            "value": "~*cgrep.AllocatedIP.Address",
            "mandatory": true
          },
          {
            "tag": "FramedProtocol",
            "path": "*rep.Framed-Protocol",
            "type": "*constant",
            "value": "PPP",
            "mandatory": true
          },
          {
            "tag": "ServiceType",
            "path": "*rep.Service-Type",
            "type": "*constant",
            "value": "Framed",
            "mandatory": true
          },
          {
            "tag": "ReplyMessage",
            "path": "*rep.Reply-Message",
            "type": "*variable",
            "value": "Pool:;~*cgrep.AllocatedIP.PoolID; - ;~*cgrep.AllocatedIP.Message"
          },
          {
            "tag": "Class",
            "path": "*rep.Class",
            "type": "*variable",
            "value": "~*cgrep.AllocatedIP.ProfileID"
          }
        ]
      }
    ]
  }
}
