{
  "iface": "futoin.xfer.limits",
  "version": "1.0",
  "ftn3rev": "1.7",
  "imports": [
    "futoin.ping:1.0",
    "futoin.xfer.types:1.0"
  ],
  "types": {
    "OptionalLimitValues": [
      "LimitValues",
      "boolean"
    ],
    "LimitGroups": {
      "type": "array",
      "elemtype": "LimitGroup"
    },
    "RetailLimitValues": {
      "type": "LimitValues",
      "fields": {
        "retail_daily_amt": "LimitAmount",
        "retail_daily_cnt": "LimitCount",
        "retail_weekly_amt": "LimitAmount",
        "retail_weekly_cnt": "LimitCount",
        "retail_monthly_amt": "LimitAmount",
        "retail_monthly_cnt": "LimitCount",
        "retail_min_amt": "LimitAmount",
        "preauth_daily_amt": "LimitAmount",
        "preauth_daily_cnt": "LimitCount",
        "preauth_weekly_amt": "LimitAmount",
        "preauth_weekly_cnt": "LimitCount",
        "preauth_monthly_amt": "LimitAmount",
        "preauth_monthly_cnt": "LimitCount",
        "preauth_min_amt": "LimitAmount"
      }
    },
    "DepositsLimitValues": {
      "type": "LimitValues",
      "fields": {
        "deposit_daily_amt": "LimitAmount",
        "deposit_daily_cnt": "LimitCount",
        "withdrawal_daily_amt": "LimitAmount",
        "withdrawal_daily_cnt": "LimitCount",
        "deposit_weekly_amt": "LimitAmount",
        "deposit_weekly_cnt": "LimitCount",
        "withdrawal_weekly_amt": "LimitAmount",
        "withdrawal_weekly_cnt": "LimitCount",
        "deposit_monthly_amt": "LimitAmount",
        "deposit_monthly_cnt": "LimitCount",
        "withdrawal_monthly_amt": "LimitAmount",
        "withdrawal_monthly_cnt": "LimitCount",
        "deposit_min_amt": "LimitAmount",
        "withdrawal_min_amt": "LimitAmount"
      }
    },
    "PaymentsLimitValues": {
      "type": "LimitValues",
      "fields": {
        "outbound_daily_amt": "LimitAmount",
        "outbound_daily_cnt": "LimitCount",
        "inbound_daily_amt": "LimitAmount",
        "inbound_daily_cnt": "LimitCount",
        "outbound_weekly_amt": "LimitAmount",
        "outbound_weekly_cnt": "LimitCount",
        "inbound_weekly_amt": "LimitAmount",
        "inbound_weekly_cnt": "LimitCount",
        "outbound_monthly_amt": "LimitAmount",
        "outbound_monthly_cnt": "LimitCount",
        "inbound_monthly_amt": "LimitAmount",
        "inbound_monthly_cnt": "LimitCount",
        "outbound_min_amt": "LimitAmount"
      }
    },
    "GamingLimitValues": {
      "type": "LimitValues",
      "fields": {
        "bet_daily_amt": "LimitAmount",
        "bet_daily_cnt": "LimitCount",
        "win_daily_amt": "LimitAmount",
        "win_daily_cnt": "LimitCount",
        "profit_daily_amt": "LimitAmount",
        "bet_weekly_amt": "LimitAmount",
        "bet_weekly_cnt": "LimitCount",
        "win_weekly_amt": "LimitAmount",
        "win_weekly_cnt": "LimitCount",
        "profit_weekly_amt": "LimitAmount",
        "bet_monthly_amt": "LimitAmount",
        "bet_monthly_cnt": "LimitCount",
        "win_monthly_amt": "LimitAmount",
        "win_monthly_cnt": "LimitCount",
        "profit_monthly_amt": "LimitAmount",
        "bet_min_amt": "LimitAmount"
      }
    },
    "MiscLimitValues": {
      "type": "LimitValues",
      "fields": {
        "message_daily_cnt": "LimitCount",
        "failure_daily_cnt": "LimitCount",
        "limithit_daily_cnt": "LimitCount",
        "message_weekly_cnt": "LimitCount",
        "failure_weekly_cnt": "LimitCount",
        "limithit_weekly_cnt": "LimitCount",
        "message_monthly_cnt": "LimitCount",
        "failure_monthly_cnt": "LimitCount",
        "limithit_monthly_cnt": "LimitCount"
      }
    },
    "PersonnelLimitValues": {
      "type": "LimitValues",
      "fields": {
        "message_daily_cnt": "LimitCount",
        "manual_daily_amt": "LimitAmount",
        "manual_daily_cnt": "LimitCount",
        "message_weekly_cnt": "LimitCount",
        "manual_weekly_amt": "LimitAmount",
        "manual_weekly_cnt": "LimitCount",
        "message_monthly_cnt": "LimitCount",
        "manual_monthly_amt": "LimitAmount",
        "manual_monthly_cnt": "LimitCount"
      }
    }
  },
  "funcs": {
    "setLimits": {
      "params": {
        "group": "LimitGroup",
        "domain": "LimitDomain",
        "currency": "CurrencyCode",
        "hard": "LimitValues",
        "check": "OptionalLimitValues",
        "risk": "OptionalLimitValues"
      },
      "result": "boolean",
      "throws": [
        "UnknownGroup",
        "UnknownCurrency"
      ]
    },
    "getLimits": {
      "params": {
        "group": "LimitGroup",
        "domain": "LimitDomain"
      },
      "result": {
        "currency": "CurrencyCode",
        "hard": "LimitValues",
        "check": "OptionalLimitValues",
        "risk": "OptionalLimitValues"
      },
      "throws": [
        "UnknownGroup",
        "UnknownCurrency",
        "LimitsNotSet"
      ]
    },
    "addLimitGroup": {
      "params": {
        "group": "LimitGroup"
      },
      "result": "boolean",
      "throws": [
        "AlreadyExists"
      ]
    },
    "getLimitGroups": {
      "result": "LimitGroups"
    }
  },
  "requires": [
    "SecureChannel"
  ]
}