{
  "openapi": "3.0.1",
  "info": {
    "title": "NoFrixion MoneyMoov API",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://api.nofrixion.com",
      "description": "v1"
    }
  ],
  "paths": {
    "/api/v1/accounts": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Get a list of all payment accounts the user has access to.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.",
        "operationId": "GetAccounts",
        "parameters": [
          {
            "name": "merchantID",
            "in": "query",
            "description": "The merchantID of the accounts to retrieve.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "connectedAccounts",
            "in": "query",
            "description": "Optional include connected accounts along with payment accounts.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "onlyConnectAccounts",
            "in": "query",
            "description": "Only return connected accounts",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "includeArchived",
            "in": "query",
            "description": "Flag that indicates whether to fetch archived accounts or not.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of accounts",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Creates a new merchant payment account.",
        "description": "Swagger narrows create.currency to the currencies currently configured for holding accounts.\r\nThe authoritative list for the current environment is exposed by GET /api/v1/currencies?capability=Holding.\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanCreateAccounts",
        "operationId": "CreateAccount",
        "requestBody": {
          "description": "The details of the payment account to create.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccountCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              }
            }
          },
          "201": {
            "description": "The payment account was successfully created and is ready to use."
          },
          "202": {
            "description": "The payment account was created but the is not yet ready to use."
          }
        }
      }
    },
    "/api/v1/accounts/paged": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Get a paged list of all payment accounts the user has access to for a specific merchant.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.",
        "operationId": "GetAccountsPaged",
        "parameters": [
          {
            "name": "merchantID",
            "in": "query",
            "description": "The merchantID of the accounts to retrieve.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "Optional. Array. If specified will only return accounts for these currencies.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "NONE",
                  "GBP",
                  "EUR",
                  "USD",
                  "AUD",
                  "BGN",
                  "CAD",
                  "CZK",
                  "DKK",
                  "HUF",
                  "ISK",
                  "CHF",
                  "NOK",
                  "PLN",
                  "RON",
                  "AED",
                  "CNH",
                  "HKD",
                  "ILS",
                  "JPY",
                  "MXN",
                  "NZD",
                  "SAR",
                  "SEK",
                  "SGD",
                  "TRY",
                  "ZAR",
                  "BTC"
                ],
                "type": "string"
              }
            }
          },
          {
            "name": "connectedAccounts",
            "in": "query",
            "description": "Optional include connected accounts along with payment accounts.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "Optional. The page number to retrieve.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Optional. The number of accounts per page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve accounts with a similar account name, IBAN etc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the accounts. Example \"AvailableBalance desc,Inserted asc\".",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "onlyConnectAccounts",
            "in": "query",
            "description": "Only return connected accounts",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "onlyArchived",
            "in": "query",
            "description": "Flag that indicates whether to fetch only archived accounts or not.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "includeArchived",
            "in": "query",
            "description": "Flag that indicates whether to fetch archived accounts or not.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "includeChildMerchants",
            "in": "query",
            "description": "Flag that indicates whether to include accounts from child merchants.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of accounts for the merchant.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccountPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccountPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccountPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/accounts/minimal": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Get a paged list of all payment accounts minimal the user has access to for a specific merchant.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.",
        "operationId": "GetAccountsMinimal",
        "parameters": [
          {
            "name": "merchantID",
            "in": "query",
            "description": "The merchantID of the accounts to retrieve.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "Optional. Array. If specified will only return accounts for these currencies.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "NONE",
                  "GBP",
                  "EUR",
                  "USD",
                  "AUD",
                  "BGN",
                  "CAD",
                  "CZK",
                  "DKK",
                  "HUF",
                  "ISK",
                  "CHF",
                  "NOK",
                  "PLN",
                  "RON",
                  "AED",
                  "CNH",
                  "HKD",
                  "ILS",
                  "JPY",
                  "MXN",
                  "NZD",
                  "SAR",
                  "SEK",
                  "SGD",
                  "TRY",
                  "ZAR",
                  "BTC"
                ],
                "type": "string"
              }
            }
          },
          {
            "name": "connectedAccounts",
            "in": "query",
            "description": "Optional include connected accounts along with payment accounts.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "Optional. The page number to retrieve.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Optional. The number of accounts per page.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve accounts with a similar account name, IBAN etc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the accounts. Example \"AvailableBalance desc,Inserted asc\".",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "onlyConnectAccounts",
            "in": "query",
            "description": "Only return connected accounts",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "onlyArchived",
            "in": "query",
            "description": "Flag that indicates whether to fetch only archived accounts or not.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "includeArchived",
            "in": "query",
            "description": "Flag that indicates whether to fetch archived accounts or not.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of accounts for the merchant.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccountMinimalPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccountMinimalPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccountMinimalPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/accounts/export": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Exports a list of all payment accounts the user has access to for a specific merchant.",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "ExportAccounts",
        "parameters": [
          {
            "name": "merchantID",
            "in": "query",
            "description": "The merchantID of the accounts to retrieve.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "connectedAccounts",
            "in": "query",
            "description": "Optional include connected accounts along with payment accounts.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "Optional. The page number to retrieve.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Optional. The number of accounts per page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "Optional. Array. If specified will only return accounts for thes currencies.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "NONE",
                  "GBP",
                  "EUR",
                  "USD",
                  "AUD",
                  "BGN",
                  "CAD",
                  "CZK",
                  "DKK",
                  "HUF",
                  "ISK",
                  "CHF",
                  "NOK",
                  "PLN",
                  "RON",
                  "AED",
                  "CNH",
                  "HKD",
                  "ILS",
                  "JPY",
                  "MXN",
                  "NZD",
                  "SAR",
                  "SEK",
                  "SGD",
                  "TRY",
                  "ZAR",
                  "BTC"
                ],
                "type": "string"
              }
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve accounts with a similar account name, IBAN etc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the accounts. Example \"AvailableBalance desc,Inserted asc\".",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "onlyConnectAccounts",
            "in": "query",
            "description": "Only return connected accounts",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "onlyArchived",
            "in": "query",
            "description": "Flag that indicates whether to fetch only archived accounts or not.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "includeArchived",
            "in": "query",
            "description": "Flag that indicates whether to fetch archived accounts or not.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "includeChildMerchants",
            "in": "query",
            "description": "Flag that indicates whether to include accounts from child merchants.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a csv file of the accounts for the merchant.",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "202": {
            "description": "Accepted. The CSV file is being generated."
          }
        }
      }
    },
    "/api/v1/accounts/{accountID}": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Get an account.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.",
        "operationId": "GetAccount",
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "description": "The accountID of the account to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The payment account.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/accounts/{id}": {
      "put": {
        "tags": [
          "Accounts"
        ],
        "summary": "Updates an account record.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanUpdateAccount",
        "operationId": "UpdateAccount",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the account to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The object containing the details of account to update (only name is editable).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.AccountUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated Account record.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/accounts/{accountID}/transactions": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Get a list of the transactions for a single payment account.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.\n\n<b>User permissions required</b>: CanViewTransactions",
        "operationId": "GetAccountTransactionsPaged",
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "description": "The ID of the account to retrieve transactions for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The start date to retrieve transactions from.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number to retrieve.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of transactions per page.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The end date to retrieve transactions from.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "creditType",
            "in": "query",
            "description": "The type of transactions to retrieve from.",
            "schema": {
              "enum": [
                "All",
                "Payin",
                "Payout"
              ],
              "type": "string"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve transactions with a similar title, description, merchant name.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the transactions. Example \"Amount desc,Inserted asc\".",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "minAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve transactions that exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "maxAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve transactions that don't exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of the transactions for the payment account.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.TransactionPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.TransactionPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.TransactionPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/accounts/{accountID}/transactions/export": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Exports a list of all transactions for a specific account in CSV format.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanViewTransactions",
        "operationId": "ExportAccountTransactions",
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "description": "The ID of the account to retrieve transactions for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The start date to retrieve transactions from.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number to retrieve.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of transactions per page.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The end date to retrieve transactions from.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "creditType",
            "in": "query",
            "description": "The type of transactions to retrieve from.",
            "schema": {
              "enum": [
                "All",
                "Payin",
                "Payout"
              ],
              "type": "string"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve transactions with a similar title, description, merchant name.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the transactions. Example \"Amount desc,Inserted asc\".",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "minAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve transactions that exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "maxAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve transactions that don't exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of the transactions for the payment account in CSV format.",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "202": {
            "description": "Accepted. The CSV file is being generated."
          }
        }
      }
    },
    "/api/v1/accounts/{accountID}/transactions/{id}": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Get a transaction.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.\n\n<b>User permissions required</b>: CanViewTransactions",
        "operationId": "GetTransactionForAccount",
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "description": "The ID of the account to retrieve transactions for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The transaction ID",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The transaction.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Transaction"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Transaction"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Transaction"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/accounts/{accountID}/payouts": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Gets a list of all payouts for a specific account.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.\n\n<b>User permissions required</b>: CanViewPayouts",
        "operationId": "GetAccountPayouts",
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "description": "Required. The ID of the account to get the payouts for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number from where records are retrieved.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of records to be retrieved from a page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "An optional status filter for the payout records.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "UNKNOWN",
                  "REJECTED",
                  "PENDING",
                  "PROCESSED",
                  "PENDING_APPROVAL",
                  "QUEUED_UPSTREAM",
                  "QUEUED",
                  "FAILED",
                  "PENDING_INPUT",
                  "SCHEDULED",
                  "REJECTED_APPROVAL"
                ],
                "type": "string",
                "description": "The status of payout."
              }
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The date filter to apply to retrieve payouts created after this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The date filter to apply to retrieve payouts created up until this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve payouts with a similar title, description, merchant name or contact information.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "The currency filter to apply to retrieve payouts with this currency.",
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          },
          {
            "name": "minAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve payouts that exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "maxAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve payouts that don't exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "description": "The tag filter to apply to retrieve payouts with at least one of these tags.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the payouts.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of payout records.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.PayoutPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.PayoutPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.PayoutPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/accounts/{accountID}/topup/{amount}": {
      "put": {
        "tags": [
          "Accounts"
        ],
        "summary": "SANDBOX ONLY. Top-ups a payment account with the amount provided.",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "TopupAccount",
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "description": "The ID of the payment account.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "amount",
            "in": "path",
            "description": "The amount to top-up on the payment account.",
            "required": true,
            "schema": {
              "type": "number",
              "format": "double"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/accounts/archive/{id}": {
      "delete": {
        "tags": [
          "Accounts"
        ],
        "summary": "Sets the specified account as archived.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanArchiveAccounts",
        "operationId": "ArchiveAccount",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The id of the account to archive.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "No result is returned."
          }
        }
      }
    },
    "/api/v1/accounts/unarchive/{id}": {
      "put": {
        "tags": [
          "Accounts"
        ],
        "summary": "Sets the specified account as unarchived / active.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanArchiveAccounts",
        "operationId": "UnarchiveAccount",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The id of the account to unarchive.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "No result is returned."
          }
        }
      }
    },
    "/api/v1/accounts/{accountID}/statements": {
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Sends a message to the transaction statement queue to generate a statement with the supplied parameters.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanExportData",
        "operationId": "GenerateAccountStatement",
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "description": "The account id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "Request object containing the parameters for the statement generation.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.GenerateStatementRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.GenerateStatementRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.GenerateStatementRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.GenerateStatementRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/accounts/{accountID}/statements/{id}": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Gets the specified statement from the user's cache.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanExportData",
        "operationId": "GetAccountStatement",
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "description": "The account id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "ID of the requested statement.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/accounts/statements": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Gets all active statement generation requests for the user.",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "GetAllAccountStatements",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "Accounts"
        ],
        "summary": "Clears the cached user statements for a user.",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "ClearAccountStatements",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/accounts/{accountID}/payouts/failed": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Get failed payouts for a specific account.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.\n\n<b>User permissions required</b>: CanViewPayouts",
        "operationId": "GetFailedPayoutsForAccount",
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "description": "The account id to get the failed payouts for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "fromDateUtc",
            "in": "query",
            "description": "Optional. The date to fetch the payouts from. Must be ISO 8601 format",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Optional. The page size. Default is 20",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutKeysetPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutKeysetPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutKeysetPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/accounts/{accountID}/virtual": {
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Creates a new virtual account.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.",
        "operationId": "CreateVirtualAccount",
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "description": "The physical account id to create the virtual account for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The details of the virtual account to create.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.VirtualAccountCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              }
            }
          },
          "201": {
            "description": "The virtual account was successfully created and is ready to use."
          }
        }
      },
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Gets a paged list of virtual accounts for a specific account.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.",
        "operationId": "GetVirtualAccounts",
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "description": "The physical account id to get the virtual accounts for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "Optional. The page number to retrieve.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Optional. The number of accounts per page.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccountPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccountPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccountPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/accounts/{accountID}/virtual/{virtualAccountID}": {
      "put": {
        "tags": [
          "Accounts"
        ],
        "summary": "Updates a virtual account record.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanUpdateAccount",
        "operationId": "UpdateVirtualAccount",
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "description": "The physical account id to update the virtual account for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "virtualAccountID",
            "in": "path",
            "description": "The virtual accoutt id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The details of the virtual account update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.VirtualAccountUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated Virtual Account record.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/accounts/{accountID}/{currency}": {
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Creates a new payment account in a different currency, based on an existing payment account.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.",
        "operationId": "CreateAccountForAdditionalCurrency",
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "description": "The ID of the existing payment account.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "currency",
            "in": "path",
            "description": "The currency for the new payment account (must differ from the existing account's currency).",
            "required": true,
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              }
            }
          },
          "201": {
            "description": "The payment account was successfully created and is ready to use."
          }
        }
      }
    },
    "/api/v1/beneficiaries": {
      "get": {
        "tags": [
          "Beneficiaries"
        ],
        "summary": "Gets a list of all beneficiaries.",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "GetBeneficiaries",
        "parameters": [
          {
            "name": "merchantID",
            "in": "query",
            "description": "Optional. The ID of the merchant to retrieve the beneficiaries for. \r\n            If not set beneficiaries for all merchants the user has access to will be returned",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number from where records are retrieved.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of records to be retrieved from a page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter used to retrieve the records.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "The currency filter used to retrieve the records..",
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          },
          {
            "name": "includeDisabled",
            "in": "query",
            "description": "If set to true will include disabled beneficiaries as well",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the beneficiaries.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sourceAccountID",
            "in": "query",
            "description": "Optional. The ID of the source account to filter beneficiaries by.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of beneficiaries.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BeneficiaryPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BeneficiaryPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BeneficiaryPageResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Beneficiaries"
        ],
        "summary": "Creates a new beneficiary.",
        "description": "The authorisation requirements for a new beneficiary depend on each merchant's settings. By\r\n            default new beneficiaries do not require authorisation before being enabled.\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanCreateBeneficiaries",
        "operationId": "CreateBeneficiary",
        "requestBody": {
          "description": "The beneficiary to create.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BeneficiaryCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
                }
              }
            }
          },
          "201": {
            "description": "The newly created beneficiary."
          },
          "409": {
            "description": "Beneficiary already exists for this merchant."
          }
        }
      }
    },
    "/api/v1/beneficiaries/export": {
      "get": {
        "tags": [
          "Beneficiaries"
        ],
        "summary": "Export beneficiaries to CSV.",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "ExportBeneficiaries",
        "parameters": [
          {
            "name": "merchantID",
            "in": "query",
            "description": "Optional. The ID of the merchant to retrieve the beneficiaries for. \r\n            If not set beneficiaries for all merchants the user has access to will be returned",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number from where records are retrieved.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of records to be retrieved from a page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter used to retrieve the records.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "The currency filter used to retrieve the records..",
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          },
          {
            "name": "includeDisabled",
            "in": "query",
            "description": "If set to true will include disabled beneficiaries as well",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the beneficiaries.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of beneficiaries in CSV format.",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "202": {
            "description": "Accepted. The CSV file is being generated."
          }
        }
      }
    },
    "/api/v1/beneficiaries/{id}": {
      "get": {
        "tags": [
          "Beneficiaries"
        ],
        "summary": "Get's a beneficiary by beneficiary ID.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanViewBeneficiaries",
        "operationId": "GetBeneficiary",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The beneficiaryID of the beneficiary to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The beneficiary record.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Beneficiaries"
        ],
        "summary": "Deletes a beneficiary",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanDeleteBeneficiaries",
        "operationId": "DeleteBeneficiary",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The id of the beneficiary to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "No result is returned."
          }
        }
      },
      "put": {
        "tags": [
          "Beneficiaries"
        ],
        "summary": "Updates a beneficiary.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanEditBeneficiaries",
        "operationId": "UpdateBeneficiary",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the beneficiary to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The beneficiary to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BeneficiaryUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated beneficiary record.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/beneficiaries/authorise/{id}": {
      "post": {
        "tags": [
          "Beneficiaries"
        ],
        "summary": "Authorises a beneficiary.",
        "description": "\n\n<b>Authorization</b>: Strong end user token is required.\n\n<b>User permissions required</b>: CanAuthoriseBeneficiaries",
        "operationId": "AuthoriseBeneficiary",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the beneficiary record to authorise.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "202": {
            "description": "Accepted"
          }
        }
      }
    },
    "/api/v1/beneficiaries/disable/{id}": {
      "put": {
        "tags": [
          "Beneficiaries"
        ],
        "summary": "Attempts to disable a beneficiary. If successful the beneficiary will be disabled.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanEditBeneficiaries",
        "operationId": "DisableBeneficiary",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the beneficiary to disable.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The updated beneficiary record.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/beneficiaries/enable/{id}": {
      "put": {
        "tags": [
          "Beneficiaries"
        ],
        "summary": "Attempts to enable a beneficiary. If successful the beneficiary will be enabled.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanEditBeneficiaries",
        "operationId": "EnableBeneficiary",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the beneficiary to enable.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The updated beneficiary record.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/beneficiaries/batchcreate": {
      "post": {
        "tags": [
          "Beneficiaries"
        ],
        "summary": "Creates beneficiaries in batch.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanCreateBeneficiaries",
        "operationId": "CreateBeneficiaries",
        "requestBody": {
          "description": "A list of objects containing the details of the beneficiaries to create.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BeneficiaryCreate"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A BeneficiariesCreateResponse.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Api.Features.Beneficiaries.BeneficiariesCreateResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Api.Features.Beneficiaries.BeneficiariesCreateResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Api.Features.Beneficiaries.BeneficiariesCreateResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/currencies": {
      "get": {
        "tags": [
          "Currencies"
        ],
        "summary": "Gets the supported currencies exposed by the platform.",
        "operationId": "GetCurrencies",
        "parameters": [
          {
            "name": "capability",
            "in": "query",
            "description": "Optional. When supplied, only currencies configured for the requested capability are returned.\n\nCapability values:\n- `None`: No capability flags are selected. Using this value as a filter returns no currencies.\n- `Holding`: Currency is supported for held balances and payment accounts.\n- `Inbound`: Currency is supported for inbound payment flows.\n- `FxConversion`: Currency is supported for FX conversion flows.",
            "schema": {
              "enum": [
                "None",
                "Holding",
                "Inbound",
                "FxConversion"
              ],
              "type": "string",
              "description": "Capability values:\n- `None`: No capability flags are selected. Using this value as a filter returns no currencies.\n- `Holding`: Currency is supported for held balances and payment accounts.\n- `Inbound`: Currency is supported for inbound payment flows.\n- `FxConversion`: Currency is supported for FX conversion flows."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of currencies and their static metadata.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Currency.CurrencyInfo"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Currency.CurrencyInfo"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Currency.CurrencyInfo"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mandates/{id}": {
      "get": {
        "tags": [
          "Mandates"
        ],
        "summary": "Gets a specific mandate's information.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanViewMandates",
        "operationId": "GetMandate",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the mandate to retrieve information from.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Mandate information.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Mandates.Mandate"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Mandates.Mandate"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Mandates.Mandate"
                }
              }
            }
          },
          "403": {
            "description": "Unauthorized error."
          },
          "404": {
            "description": "Not found error."
          }
        }
      }
    },
    "/api/v1/mandates": {
      "get": {
        "tags": [
          "Mandates"
        ],
        "summary": "Gets all mandates from a specific merchant with the supplied parameters.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanViewMandates",
        "operationId": "GetMandatesPaged",
        "parameters": [
          {
            "name": "merchantID",
            "in": "query",
            "description": "ID of the merchant to retrieve mandates for.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page number from where records are retrieved. Note that the paging starts from page 1.\r\n            If a 0 is supplied it will be treated as a 1 and the first page is returned.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "The number of records to be retrieved from a page.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The date filter to apply to retrieve mandates created after this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The date filter to apply to retrieve mandates created up until this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "The status filter to apply to retrieve mandates with this status",
            "schema": {
              "enum": [
                "Unknown",
                "Pending",
                "Active",
                "Expired",
                "Failed"
              ],
              "type": "string"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve mandates with similar customer, bank account or mandate information.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "The currency filter to apply to retrieve mandates with this currency.",
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          },
          {
            "name": "minAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve mandates that exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "maxAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve mandates that don't exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "mandateIDs",
            "in": "query",
            "description": "Optional list of mandate IDs to filter by. When supplied, only mandates whose ID is in this list are returned.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the mandates. Example \"Amount desc,Inserted asc\".",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Mandate collection paged result.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.MerchantDirectDebitMandatePageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.MerchantDirectDebitMandatePageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.MerchantDirectDebitMandatePageResponse"
                }
              }
            }
          },
          "403": {
            "description": "Unauthorized error."
          }
        }
      },
      "post": {
        "tags": [
          "Mandates"
        ],
        "summary": "Creates a Direct Debit mandate.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanCreateMandates",
        "operationId": "CreateMandate",
        "requestBody": {
          "description": "Mandate, customer and bank account information model.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Mandates.MandateCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Mandates.Mandate"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Mandates.Mandate"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Mandates.Mandate"
                }
              }
            }
          },
          "201": {
            "description": "Mandate information."
          },
          "400": {
            "description": "Configuration error."
          },
          "403": {
            "description": "Unauthorized error."
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/tokens": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Gets a list of a merchant's issued API tokens.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanViewTokens",
        "operationId": "GetMerchantTokens",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant to get the tokens for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number from where records are retrieved.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of records to be retrieved from a page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of the API tokens issued for the merchant.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantTokenPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantTokenPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantTokenPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/merchants": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Get's a list of merchants the caller has access to.",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "GetMerchants",
        "responses": {
          "200": {
            "description": "Returns a list of merchants.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Merchant"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Merchant"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Merchant"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/merchants/paged": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Get a paged list of all the merchants the caller has access to.",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "GetMerchantsPaged",
        "parameters": [
          {
            "name": "pageNumber",
            "in": "query",
            "description": "Optional. The page number to retrieve.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Optional. The number of merchants per page.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve merchants with a similar name, ID etc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the merchants. Example \"Name desc,Inserted asc\".",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includeSuspended",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of the merchants the caller has access to.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Get's a merchant.",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "GetMerchant",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the requested merchant.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Merchant"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Merchant"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Merchant"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Merchants"
        ],
        "summary": "Updates a merchant's details.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanUpdateMerchant",
        "operationId": "UpdateMerchant",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The details to update for the merchant.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the updated merchant.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Merchant"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Merchant"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Merchant"
                }
              }
            }
          },
          "404": {
            "description": "Indicates the merchant record could not be found."
          },
          "401": {
            "description": "Indicates the user is not authorised to perform this operation."
          },
          "403": {
            "description": "Indicates the user is not authorised to perform this operation."
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/beneficiaries": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Gets a list of all beneficiaries.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanViewBeneficiaries",
        "operationId": "GetMerchantBeneficiaries",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant to get the beneficiaries for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number from where records are retrieved.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of records to be retrieved from a page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter used to retrieve the records..",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "The currency filter used to retrieve the records..",
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          },
          {
            "name": "includeDisabled",
            "in": "query",
            "description": "If set to true will include disabled beneficiaries as well",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the beneficiaries.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sourceAccountID",
            "in": "query",
            "description": "Optional source account ID to filter beneficiaries by their source account.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A BeneficiaryPageResponse containing the list of beneficiaries.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BeneficiaryPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BeneficiaryPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BeneficiaryPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/beneficiaries/export": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Exports a list of all beneficiaries.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanViewBeneficiaries",
        "operationId": "ExportMerchantBeneficiaries",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant to get the beneficiaries for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number from where records are retrieved.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of records to be retrieved from a page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter used to retrieve the records..",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "The currency filter used to retrieve the records..",
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          },
          {
            "name": "includeDisabled",
            "in": "query",
            "description": "If set to true will include disabled beneficiaries as well",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the beneficiaries.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a CSV file containing the list of beneficiaries.",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "202": {
            "description": "Accepted. The CSV file is being generated."
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/beneficiaries/{id}": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Get's a beneficiary by beneficiary ID.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanViewBeneficiaries",
        "operationId": "GetMerchantBeneficiary",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant to get the beneficiary for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The beneficiaryID of the beneficiary to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The beneficiary record.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/beneficiarygroups": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Gets a list of all beneficiary groups.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanViewBeneficiaries",
        "operationId": "GetMerchantBeneficiaryGroups",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant to get the beneficiary groups for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number from where records are retrieved.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of records to be retrieved from a page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A BeneficiaryGroupsPageResponse containing the list of beneficiary groups.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BeneficiaryGroupPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BeneficiaryGroupPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BeneficiaryGroupPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/userinvitespaged": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Gets a paged list of user invites associated with merchant.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanViewUsers",
        "operationId": "GetUserInvitesPaged",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant to get the user invites for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "A search filter to apply to the user list. Typically searches against first name, last name and email address.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "The sort expression for the result set, e.g., \"FirstName asc\".",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserInvitePageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserInvitePageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserInvitePageResponse"
                }
              }
            }
          },
          "201": {
            "description": "Returns a paged list of the user invites associated with merchant."
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/accounts": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Get a list of merchant's payment accounts.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.",
        "operationId": "GetMerchantAccounts",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant to get the payment accounts for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "connectedAccounts",
            "in": "query",
            "description": "Optional include connected accounts along with payment accounts.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of merchant's accounts.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/accounts/{accountID}": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Get an account.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.",
        "operationId": "GetMerchantAccount",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The merchantID.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountID",
            "in": "path",
            "description": "The accountID of the account to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The payment account.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/webhooks": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Get all configured webhooks for a merchant.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanViewWebhooks",
        "operationId": "GetMerchantWebhooks",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant to get the webhooks for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of configured webhooks.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Webhook"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Webhook"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Webhook"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/webhooks/{id}": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Gets a webhook.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.\n\n<b>User permissions required</b>: CanViewWebhooks",
        "operationId": "GetWebhook",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The merchant ID",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the webhook.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested webhook.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Webhook"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Webhook"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Webhook"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/payouts": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Gets a list of all payouts for a specific merchant.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.",
        "operationId": "GetMerchantPayoutsPaged",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "Required. The ID of the merchant to get the payouts for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number from where records are retrieved.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of records to be retrieved from a page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "An optional status filter for the payout records.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "UNKNOWN",
                  "REJECTED",
                  "PENDING",
                  "PROCESSED",
                  "PENDING_APPROVAL",
                  "QUEUED_UPSTREAM",
                  "QUEUED",
                  "FAILED",
                  "PENDING_INPUT",
                  "SCHEDULED",
                  "REJECTED_APPROVAL"
                ],
                "type": "string",
                "description": "The status of payout."
              }
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The date filter to apply to retrieve payouts created after this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The date filter to apply to retrieve payouts created up until this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve payouts with a similar title, description, merchant name or contact information.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "The currency filter to apply to retrieve payouts with this currency.",
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          },
          {
            "name": "minAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve payouts that exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "maxAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve payouts that don't exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "description": "The tag filter to apply to retrieve payouts with at least one of these tags.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the payouts.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of payout records.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.PayoutPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.PayoutPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.PayoutPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/payouts/export": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Exports a list of all payouts for a specific merchant as a CSV file.",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "ExportMerchantPayouts",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "Required. The ID of the merchant to get the payouts for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number from where records are retrieved.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of records to be retrieved from a page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "An optional status filter for the payout records.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "UNKNOWN",
                  "REJECTED",
                  "PENDING",
                  "PROCESSED",
                  "PENDING_APPROVAL",
                  "QUEUED_UPSTREAM",
                  "QUEUED",
                  "FAILED",
                  "PENDING_INPUT",
                  "SCHEDULED",
                  "REJECTED_APPROVAL"
                ],
                "type": "string",
                "description": "The status of payout."
              }
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The date filter to apply to retrieve payouts created after this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The date filter to apply to retrieve payouts created up until this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve payouts with a similar title, description, merchant name or contact information.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "The currency filter to apply to retrieve payouts with this currency.",
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          },
          {
            "name": "minAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve payouts that exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "maxAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve payouts that don't exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "description": "The tag filter to apply to retrieve payouts with at least one of these tags.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the payouts.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of payout records as a CSV file.",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "202": {
            "description": "Accepted: The request to export payouts as csv has been accepted for processing but is not yet completed."
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/users": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Gets all users including invitees for a merchant.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanViewUsers",
        "operationId": "GetMerchantUsers",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant to get the user roles for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
                  }
                }
              }
            }
          },
          "201": {
            "description": "Returns the users associated with the merchant."
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/banksettings": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Gets a list of the banks configured for a merchant's pay by bank requests,",
        "operationId": "GetMerchantBankSettings",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "ID of the merchant.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "Optional. The bank currency.",
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          },
          {
            "name": "countryCode",
            "in": "query",
            "description": "Optional. Country code for country specific banks.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "openBankingOperation",
            "in": "query",
            "description": "The open banking operation type.",
            "schema": {
              "enum": [
                "None",
                "PIS",
                "AIS"
              ],
              "type": "string",
              "default": "PIS"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantPayByBankSettings"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantPayByBankSettings"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantPayByBankSettings"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/tags": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Get a list of merchant tags",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "GetMerchantTags",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The merchant id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of merchant tags.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Tag"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Tag"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Tag"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Merchants"
        ],
        "summary": "Adds a tag to a merchant.",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "CreateMerchantTag",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The merchant id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The tag to add",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Tag"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Tag"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Tag"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Tag"
                }
              }
            }
          },
          "201": {
            "description": "The newly created tag."
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/tags/{tagID}": {
      "delete": {
        "tags": [
          "Merchants"
        ],
        "summary": "Deletes a tag from a merchant",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "DeleteMerchantTag",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The merchant id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "tagID",
            "in": "path",
            "description": "The tag id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/transactions": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Gets a list of transactions for all a merchant's accounts.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.",
        "operationId": "GetMerchantTransactionsPaged",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant to get transactions for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number from where records are retrieved. Note that the paging starts from page 1.\r\n            If a 0 is supplied it will be treated as a 1 and the first page is returned.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of records to be retrieved from a page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The date filter to apply to retrieve transactions added after this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The date filter to apply to retrieve transactions added up until this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "includeChildMerchants",
            "in": "query",
            "description": "Flag to indicate whether to include transactions from child merchants.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "creditType",
            "in": "query",
            "description": "A credit filter to apply to the transactions to retrieve.",
            "schema": {
              "enum": [
                "All",
                "Payin",
                "Payout"
              ],
              "type": "string"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve transactions with a similar account name, description, their reference, your reference, etc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the transactions. Example \"Amount desc,Inserted asc\".",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "minAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve transactions that exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "maxAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve transactions that don't exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.TransactionPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.TransactionPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.TransactionPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/authorisationsettings": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Gets a list of merchant authorisation settings for a merchant",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "GetAuthorisationSettings",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The merchant id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of merchant authorisation settings.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.AuthorisationSettings.MerchantAuthorisationSetting"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.AuthorisationSettings.MerchantAuthorisationSetting"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.AuthorisationSettings.MerchantAuthorisationSetting"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/merchants/{merchantId}/users/{userId}": {
      "delete": {
        "tags": [
          "Merchants"
        ],
        "summary": "Deletes all roles for a user in a merchant.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanEditRoles",
        "operationId": "DeleteUserFromMerchant",
        "parameters": [
          {
            "name": "merchantId",
            "in": "path",
            "description": "The merchant id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "description": "The user id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Ok"
          }
        }
      }
    },
    "/api/v1/merchants/{merchantId}/suspend": {
      "put": {
        "tags": [
          "Merchants"
        ],
        "summary": "Suspends a merchant",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanCreateRoles,CanEditRoles",
        "operationId": "SuspendMerchant",
        "parameters": [
          {
            "name": "merchantId",
            "in": "path",
            "description": "The merchant id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The suspension details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantSuspend"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ok"
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/payouts/failed": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Get failed payouts for a specific merchant.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.",
        "operationId": "GetFailedPayoutsForMerchant",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The merchant id to get the failed payouts fro.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "fromDateUtc",
            "in": "query",
            "description": "Optional. The date to fetch the payouts from. Must be ISO 8601 format",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Optional. The page size. Default is 20",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutKeysetPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutKeysetPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutKeysetPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/roles/batchcreate": {
      "post": {
        "tags": [
          "Merchants"
        ],
        "summary": "Creates roles in batch for a specific merchant.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanCreateRoles",
        "operationId": "CreateRoles",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The merchantID",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The roles to create",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Roles.RoleCreate"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Api.Features.Permissions.RolesCreateResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Api.Features.Permissions.RolesCreateResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Api.Features.Permissions.RolesCreateResponse"
                }
              }
            }
          },
          "201": {
            "description": "A RolesCreateResponse"
          }
        }
      }
    },
    "/api/v1/merchants/{merchantID}/childmerchants": {
      "get": {
        "tags": [
          "Merchants"
        ],
        "summary": "Gets a paged list of child merchants for a specified parent merchant.",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "GetChildMerchantsByParent",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The unique identifier of the parent merchant.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number to retrieve.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of child merchants to return per page.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "A text filter to find child merchants by fields like name or ID.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "A sort expression to order the results. Example: `Name asc, Inserted desc`",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the paged list of child merchants successfully.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantPageResponse"
                }
              }
            }
          },
          "401": {
            "description": "If the user is not authenticated."
          }
        }
      }
    },
    "/api/v1/metadata/version": {
      "get": {
        "tags": [
          "Metadata"
        ],
        "summary": "Gets the current version of the MoneyMoov API.",
        "operationId": "Version",
        "responses": {
          "200": {
            "description": "Returns a model with fields describing the current API version.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.NoFrixionVersion"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.NoFrixionVersion"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.NoFrixionVersion"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/metadata/whoami": {
      "get": {
        "tags": [
          "Metadata"
        ],
        "summary": "Returns the profile of the requesting user.",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "WhoAmI",
        "responses": {
          "200": {
            "description": "Returns a user profile model.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/metadata/whoamimerchant": {
      "get": {
        "tags": [
          "Metadata"
        ],
        "summary": "Returns the name of the merchant that authentication token was issued for.",
        "description": "\n\n<b>Authorization</b>: Merchant token is required.",
        "operationId": "WhoAmIMerchant",
        "responses": {
          "200": {
            "description": "Returns a merchant model.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Merchant"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Merchant"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Merchant"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/metadata/whoamimerchantwhitelist": {
      "get": {
        "tags": [
          "Metadata"
        ],
        "summary": "Returns the name of the merchant that IP address whitelisted merchants token was issued for.",
        "description": "\n\n<b>Authorization</b>: ",
        "operationId": "WhoAmIMerchantWhitelist",
        "responses": {
          "200": {
            "description": "Returns a merchant model.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Merchant"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Merchant"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Merchant"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/metadata/whoamimerchantsigned": {
      "get": {
        "tags": [
          "Metadata"
        ],
        "summary": "Returns the name of a merchant that signed merchant token request was authenticated for.",
        "description": "\n\n<b>Authorization</b>: Merchant token (HMAC signed and IP address whitelisted) is required.",
        "operationId": "WhoAmIMerchantSigned",
        "responses": {
          "200": {
            "description": "Returns a merchant model.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Merchant"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Merchant"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Merchant"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/metadata/whoamitrustedapp": {
      "get": {
        "tags": [
          "Metadata"
        ],
        "summary": "Returns the name of the trusted third party application user the request was authenticated for.",
        "description": "\n\n<b>Authorization</b>: API key (HMAC signed and IP address whitelisted) is required.",
        "operationId": "WhoAmITrustedApplication",
        "responses": {
          "200": {
            "description": "Returns a user model.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/metadata/problem": {
      "get": {
        "tags": [
          "Metadata"
        ],
        "summary": "Returns an example problem response.",
        "description": "All problem responses from the API will follow this general format.",
        "operationId": "Problem",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Returns an example problem response."
          }
        }
      }
    },
    "/api/v1/metadata/problemnotification": {
      "get": {
        "tags": [
          "Metadata"
        ],
        "summary": "Triggers a webhook with the problem details in the payload.",
        "description": "This method can be used to test receiving webhooks from the MoneyMoo API as well as \r\nverifying the HMAC HTTP request authentication.",
        "operationId": "ProblemNotification",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "description": "The URL to send the HTTP POST request to with the problem notification.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Optional. If the id and secret are set the notification request will have the\r\n            HMAC HTTP authentication headers added.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "secret",
            "in": "query",
            "description": "Optional. If the id and secret are set the notification request will have the\r\n            HMAC HTTP authentication headers added.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns OK if the problem notification request is accepted."
          }
        }
      }
    },
    "/api/v1/openbanking/consents": {
      "post": {
        "tags": [
          "OpenBanking"
        ],
        "summary": "Creates a consent thats used to initiate an authorisation to a financial institution.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanConnectAccounts",
        "operationId": "CreateConsent",
        "requestBody": {
          "description": "The fields required to request a new consent. The email address must belong\r\n            to the user who will be authorising the consent.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.ConsentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.ConsentResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.ConsentResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.ConsentResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/openbanking/consents/{id}": {
      "get": {
        "tags": [
          "OpenBanking"
        ],
        "summary": "Retrieve a single open banking consent.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanConnectAccounts",
        "operationId": "GetConsent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the consent to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Consent"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Consent"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Consent"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "OpenBanking"
        ],
        "summary": "Deletes a single open banking consent.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanConnectAccounts",
        "operationId": "DeleteConsent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the consent to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Consent"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Consent"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Consent"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "OpenBanking"
        ],
        "summary": "Creates a new authorisation to a financial institution based on a consent that has \r\nalready been authorised.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanConnectAccounts",
        "operationId": "ReauthoriseConsent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the consent to base the new authorisation on.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.ConsentResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.ConsentResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.ConsentResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/openbanking/consents/{merchantID}/{email}": {
      "get": {
        "tags": [
          "OpenBanking"
        ],
        "summary": "Retrieve all the open banking consents for a single user.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanConnectAccounts",
        "operationId": "GetConsents",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant to get the consents for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "email",
            "in": "path",
            "description": "The email address of the end user to get the consents for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Consent"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Consent"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Consent"
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "OpenBanking"
        ],
        "summary": "Delete all the open banking consents for a single user.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanConnectAccounts",
        "operationId": "DeleteAllConsents",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant to delete the consents for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "email",
            "in": "path",
            "description": "The email address of the end user to delete the consents for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/openbanking/accounts/{id}": {
      "get": {
        "tags": [
          "OpenBanking"
        ],
        "summary": "Retrieves list of accounts from financial institution.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanConnectAccounts",
        "operationId": "GetConnectedAccounts",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ConsentTokenID is the reference id to the token.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Account"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Account"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Account"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/openbanking/transactions/{id}/{accountID}": {
      "get": {
        "tags": [
          "OpenBanking"
        ],
        "summary": "Retrieves transactions from financial institution.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanConnectAccounts",
        "operationId": "GetConnectedAccountTransactions",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ConsentTokenID is the reference id to the token.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountID",
            "in": "path",
            "description": "The id of the account where transactions are retrieved.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Optional, offset the transactions by offset number.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Optional, limit per amount of transactions.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "transactionFrom",
            "in": "query",
            "description": "Optional, the date filter to apply to retrieve transactions created after this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "transactionTo",
            "in": "query",
            "description": "Optional, the date filter to apply to retrieve transactions created up until this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "sortInsertedAscending",
            "in": "query",
            "description": "Default sort order is inserted descending (latest first). Set to true to sort by \r\n            inserted ascending (earliest first).",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Transaction"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Transaction"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Transaction"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/openbanking/account/{accountID}/synchronise": {
      "post": {
        "tags": [
          "OpenBanking"
        ],
        "summary": "Attempts to synchronise the balance and transactions of a connected account.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.",
        "operationId": "SynchroniseConnectedAccount",
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "description": "The ID of the connected account.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/openbanking/account/{accountID}": {
      "delete": {
        "tags": [
          "OpenBanking"
        ],
        "summary": "Deletes the specified connected account and all associated transactions.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.",
        "operationId": "DeleteConnectedAccount",
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "description": "The ID of the connected account.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/openbanking/payeeverification": {
      "post": {
        "tags": [
          "OpenBanking"
        ],
        "summary": "Verifies a payee using VoP or CoP.",
        "description": "\n\n<b>Authorization</b>: API key (HMAC signed and IP address whitelisted) is required.",
        "operationId": "VerifyPayee",
        "requestBody": {
          "description": "The payee to verify.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayeeVerification.VerifyPayeeRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayeeVerification.VerifyPayeeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayeeVerification.VerifyPayeeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayeeVerification.VerifyPayeeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayeeVerification.PayeeVerificationResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayeeVerification.PayeeVerificationResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayeeVerification.PayeeVerificationResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/{id}/card": {
      "post": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Submit a payment authorisation request to the card gateway.",
        "description": "If the payer is enrolled in the payer authentication scheme then the response to this\r\n            method can indicate that the payer needs to be sent to the issuing bank for authentication.",
        "operationId": "SubmitCardPayment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payment request the card payment is being submitted for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "ExpiryMonth",
                  "ExpiryYear"
                ],
                "type": "object",
                "properties": {
                  "ExpiryMonth": {
                    "type": "string"
                  },
                  "ExpiryYear": {
                    "type": "string"
                  },
                  "JwtToken": {
                    "type": "string",
                    "description": "The tokenised Card Number and CardVerification Number (CVN) details.\r\nTypically generated by the CyberSource javascript library."
                  },
                  "NumberToken": {
                    "type": "string"
                  },
                  "CvcToken": {
                    "type": "string"
                  },
                  "CardHolderFirstName": {
                    "type": "string"
                  },
                  "CardHolderLastName": {
                    "type": "string"
                  },
                  "BillingAddressLine1": {
                    "type": "string"
                  },
                  "BillingAddressLine2": {
                    "type": "string"
                  },
                  "BillingAddressCity": {
                    "type": "string"
                  },
                  "BillingAddressCounty": {
                    "type": "string"
                  },
                  "BillingAddressPostCode": {
                    "type": "string"
                  },
                  "BillingAddressCountryCode": {
                    "type": "string"
                  },
                  "BillingPhone": {
                    "type": "string"
                  },
                  "BillingEmail": {
                    "type": "string",
                    "format": "email"
                  },
                  "SaveCardConsent": {
                    "type": "boolean"
                  },
                  "PartialAmount": {
                    "type": "number",
                    "description": "Optional partial payment amount. If not specified then the full payment request\r\namount will be attempted.",
                    "format": "double"
                  }
                }
              },
              "encoding": {
                "ExpiryMonth": {
                  "style": "form"
                },
                "ExpiryYear": {
                  "style": "form"
                },
                "JwtToken": {
                  "style": "form"
                },
                "NumberToken": {
                  "style": "form"
                },
                "CvcToken": {
                  "style": "form"
                },
                "CardHolderFirstName": {
                  "style": "form"
                },
                "CardHolderLastName": {
                  "style": "form"
                },
                "BillingAddressLine1": {
                  "style": "form"
                },
                "BillingAddressLine2": {
                  "style": "form"
                },
                "BillingAddressCity": {
                  "style": "form"
                },
                "BillingAddressCounty": {
                  "style": "form"
                },
                "BillingAddressPostCode": {
                  "style": "form"
                },
                "BillingAddressCountryCode": {
                  "style": "form"
                },
                "BillingPhone": {
                  "style": "form"
                },
                "BillingEmail": {
                  "style": "form"
                },
                "SaveCardConsent": {
                  "style": "form"
                },
                "PartialAmount": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns a card payment response model that indicates the result of the payment attempt.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPaymentResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPaymentResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPaymentResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/{id}/card/capture": {
      "post": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Submits a request to capture a previously authorised card payment.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.",
        "operationId": "CaptureCardPayment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payment request to perform the capture for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "AuthorizationID"
                ],
                "type": "object",
                "properties": {
                  "AuthorizationID": {
                    "type": "string",
                    "description": "The ID returned from a successful card authorisation."
                  },
                  "Amount": {
                    "type": "number",
                    "description": "The amount to capture. Must be less than the authorisation amount.",
                    "format": "double"
                  }
                }
              },
              "encoding": {
                "AuthorizationID": {
                  "style": "form"
                },
                "Amount": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns a card payment response model that indicates the result of the capture attempt.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPaymentResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPaymentResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPaymentResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/{id}/card/paywithtoken": {
      "post": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Submits a payment request, using a tokenised card, to a payment gateway.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.",
        "operationId": "SubmitTokenisedCardPayment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payment request the card payment is being submitted for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "TokenisedCardID": {
                    "type": "string",
                    "description": "The ID of the tokenised card to use for the payment. The merchant needs to ensure that\r\nthe use of the tokenised card is restricted to the same customer that created it.",
                    "format": "uuid"
                  },
                  "PaymentInitiator": {
                    "enum": [
                      "customer",
                      "merchant"
                    ],
                    "type": "string",
                    "description": "Indicates who initiated the card token payment, customer or merchant."
                  },
                  "CardSecurityCode": {
                    "type": "string",
                    "description": "Not used for merchant initiated transactions. Optional for customer initiated transactions.\r\nIf supplied will be sent to the card processor as a check that the customer using the \r\ntokenised card knows the card verification number."
                  },
                  "PartialAmount": {
                    "type": "number",
                    "description": "Optional partial payment amount. If not specified then the full payment request\r\namount will be attempted.",
                    "format": "double"
                  }
                }
              },
              "encoding": {
                "TokenisedCardID": {
                  "style": "form"
                },
                "PaymentInitiator": {
                  "style": "form"
                },
                "CardSecurityCode": {
                  "style": "form"
                },
                "PartialAmount": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns a card payment response model that indicates the result of the payment attempt.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPaymentResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPaymentResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPaymentResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/{id}/card/void": {
      "post": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Submits a request to void a card payment.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.",
        "operationId": "VoidCardPayment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payment request a card payment has previously been authorised or captured for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "authorizationID": {
                    "type": "string",
                    "description": "The authorisation ID of the card payment to void."
                  }
                }
              },
              "encoding": {
                "authorizationID": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns a card payment response model that indicates the result of the void payment attempt.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPaymentResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPaymentResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPaymentResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/{id}/card/refund/{partialRefundAmount}": {
      "post": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Submits a request to refund a card payment.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.",
        "operationId": "RefundCardPayment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payment request a card payment has previously been captured for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "partialRefundAmount",
            "in": "path",
            "description": "The partial amount to be refunded in case of captured payment.",
            "required": true,
            "schema": {
              "type": "number",
              "format": "double"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "authorizationID": {
                    "type": "string",
                    "description": "The authorisation ID of the card payment to refund."
                  }
                }
              },
              "encoding": {
                "authorizationID": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns a card payment response model that indicates the result of the refund payment attempt.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPaymentResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPaymentResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPaymentResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/{id}/card/voidpaymentrequest": {
      "post": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Submits a request to void all payments for a payment request.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.",
        "operationId": "VoidAllCardPayments",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payment request to void the payments for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a collection of card payment response models that indicates the result of the void payment request attempt.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPaymentResponse"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPaymentResponse"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPaymentResponse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/{id}/card/publickey": {
      "get": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Gets the public key to encrypt card details with when submitting an authorisation.",
        "description": "The public key will be used on the client, such as a browser, to encrypt the sensitive\r\ncard details before transmitting the authorisation request to the card processor.",
        "operationId": "GetPublicKeyForCardPayment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payment request the public key will be used with.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a public key that can be used to encrypt sensitive card details.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPublicKey"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPublicKey"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Payments.CardPublicKey"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/card/customertokens/{customerEmailAddress}": {
      "get": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Gets a list of the tokenised cards stored for a single customer.",
        "description": "\n\n<b>Authorization</b>: Merchant token is required.",
        "operationId": "GetTokenisedCards",
        "parameters": [
          {
            "name": "customerEmailAddress",
            "in": "path",
            "description": "The email address of the customer to retrieve the stored cards for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of the tokenised cards that have been stored for the customer.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.CardCustomerToken"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.CardCustomerToken"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.CardCustomerToken"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/card/customertokens/{merchantID}/{customerEmailAddress}": {
      "get": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Gets a list of the tokenised cards stored for a single customer.",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "GetTokenisedCardsForMerchant",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant to get all customer card tokens for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "customerEmailAddress",
            "in": "path",
            "description": "The email address of the customer to retrieve the stored cards for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of the tokenised cards that have been stored for the customer.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.CardCustomerToken"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.CardCustomerToken"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.CardCustomerToken"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/card/customertokens/{id}": {
      "delete": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Deletes a single card token.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.",
        "operationId": "DeleteTokenisedCard",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the card token to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a success response if the token was deleted.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.CardCustomerToken"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.CardCustomerToken"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.CardCustomerToken"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/card/customertokens/removeall/{customerEmailAddress}": {
      "delete": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Deletes all the card tokens for a customer.",
        "description": "\n\n<b>Authorization</b>: Merchant token is required.",
        "operationId": "DeleteAllTokenisedCards",
        "parameters": [
          {
            "name": "customerEmailAddress",
            "in": "path",
            "description": "The email of the customer to delete all card tokens for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a success response if the token was deleted.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.CardCustomerToken"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.CardCustomerToken"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.CardCustomerToken"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/card/customertokens/removeall/{merchantID}/{customerEmailAddress}": {
      "delete": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Deletes all the card tokens for a customer.",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "DeleteAllTokenisedCardsForMerchant",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant to delete all customer card tokens for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "customerEmailAddress",
            "in": "path",
            "description": "The email of the customer to delete all card tokens for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a success response if the token was deleted.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.CardCustomerToken"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.CardCustomerToken"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.CardCustomerToken"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/{id}/pisp": {
      "post": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Submits a payment initiation request.",
        "operationId": "SubmitPayByBank",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payment request the payment initiation is being submitted for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "ProviderID"
                ],
                "type": "object",
                "properties": {
                  "ProviderID": {
                    "type": "string",
                    "description": "This is the ID of the institution (bank) that the payer ha chosen."
                  },
                  "PartialAmount": {
                    "type": "number",
                    "description": "Optional. If 0 the full amount is assumed.",
                    "format": "double"
                  },
                  "RedirectToOriginUrl": {
                    "type": "string",
                    "deprecated": true
                  },
                  "OriginUrl": {
                    "type": "string",
                    "description": "Optional. If set should indicate the origin URL the payer is making the \r\npayment from. If a pay by bank attempt fails and the payment request does not\r\nhave a FailureCallbackUrl set then the payer will be redirected to this URL."
                  }
                }
              },
              "encoding": {
                "ProviderID": {
                  "style": "form"
                },
                "PartialAmount": {
                  "style": "form"
                },
                "RedirectToOriginUrl": {
                  "style": "form"
                },
                "OriginUrl": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns a payment initiation response that contains the payment ID and the payment link.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentInitiationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentInitiationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentInitiationResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/{id}/pisp/sandboxcallback": {
      "put": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "This action simulates a payment initiation callback from a bank to authorise a payment in a sandbox environment.",
        "operationId": "SimulatePayByBankCallback",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payment request.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The callback instance with details for the sandbox simulated payment attempt.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestPispSandboxCallback"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestPispSandboxCallback"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestPispSandboxCallback"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestPispSandboxCallback"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests": {
      "post": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Creates a payment request record.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanCreatePaymentRequests",
        "operationId": "CreatePaymentRequest",
        "requestBody": {
          "description": "A payment request object containing the details of the record to create.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequest"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequest"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequest"
                }
              }
            }
          },
          "201": {
            "description": "Returns the newly created payment request record."
          }
        }
      },
      "get": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Gets a list of all payment requests.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanViewPaymentRequests",
        "operationId": "GetAllPaymentRequestsPaged",
        "parameters": [
          {
            "name": "merchantID",
            "in": "query",
            "description": "The merchant ID to get he list of payment requests for. This field is ignored for\r\n            merchant tokens and required for user tokens.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page number from where records are retrieved. Note that the paging starts from page 1.\r\n            If a 0 is supplied it will be treated as a 1 and the first page is returned.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "The number of records to be retrieved from a page.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The date filter to apply to retrieve payment requests created after this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The date filter to apply to retrieve payment requests created up until this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "The status filter to apply to retrieve payment requests with this status",
            "schema": {
              "enum": [
                "All",
                "None",
                "FullyPaid",
                "PartiallyPaid",
                "OverPaid",
                "Voided",
                "Authorized"
              ],
              "type": "string",
              "default": "All"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve payment requests with a similar title, description, merchant name or contact information.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "The currency filter to apply to retrieve payment requests with this currency.",
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          },
          {
            "name": "minAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve payment requests that exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "maxAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve payment requests that don't exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "description": "The tag filter to apply to retrieve payment requests with at least one of these tags.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "paymentMethods",
            "in": "query",
            "description": "The payment method filter to apply to retrieve payment requests with any of these payment methods.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "None",
                  "card",
                  "pisp",
                  "lightning",
                  "cardtoken",
                  "applePay",
                  "googlePay",
                  "directDebit"
                ],
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the payment requests. Example \"Amount desc,Inserted asc\".",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includeArchived",
            "in": "query",
            "description": "Flag that indicates whether to include archived payment requests or not.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "onlyArchived",
            "in": "query",
            "description": "When true, only archived payment requests are returned.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of payment requests.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.PaymentRequestPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.PaymentRequestPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.PaymentRequestPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/payondemand": {
      "post": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Creates a payment request record and processes the payment.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanCreatePaymentRequests",
        "operationId": "CreateAndPayPaymentRequest",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "Card.ExpiryMonth",
                  "Card.ExpiryYear",
                  "CardSensitive.CardNumber",
                  "CardSensitive.CardSecurityCode",
                  "CardSensitive.ExpiryMonth",
                  "CardSensitive.ExpiryYear",
                  "PaymentInitiationRequest.ProviderID",
                  "PaymentRequestCreate.Amount"
                ],
                "type": "object",
                "properties": {
                  "PaymentRequestCreate.MerchantID": {
                    "type": "string",
                    "description": "The ID of the merchant to create the payment request for.",
                    "format": "uuid"
                  },
                  "PaymentRequestCreate.Amount": {
                    "type": "number",
                    "description": "The amount of money to request.",
                    "format": "double"
                  },
                  "PaymentRequestCreate.Currency": {
                    "enum": [
                      "NONE",
                      "GBP",
                      "EUR",
                      "USD",
                      "AUD",
                      "BGN",
                      "CAD",
                      "CZK",
                      "DKK",
                      "HUF",
                      "ISK",
                      "CHF",
                      "NOK",
                      "PLN",
                      "RON",
                      "AED",
                      "CNH",
                      "HKD",
                      "ILS",
                      "JPY",
                      "MXN",
                      "NZD",
                      "SAR",
                      "SEK",
                      "SGD",
                      "TRY",
                      "ZAR",
                      "BTC"
                    ],
                    "type": "string",
                    "description": "The currency of the payment request."
                  },
                  "PaymentRequestCreate.CustomerID": {
                    "pattern": "[a-zA-Z0-9\\-]+",
                    "type": "string",
                    "description": "An optional customer identifier for the payment request. This field is sent to the \r\npayer's bank when using payment initiation. The restriction in the available characters\r\nis due to some banks rejecting requests when ones outside the set are used."
                  },
                  "PaymentRequestCreate.OrderID": {
                    "pattern": "[a-zA-Z0-9\\-_\\.@&\\*%\\$#!:; ]+",
                    "type": "string",
                    "description": "An optional order ID for the payment request. If the request is for an invoice this\r\nis the most appropriate field for the invoice ID."
                  },
                  "PaymentRequestCreate.PaymentMethodTypes": {
                    "enum": [
                      "None",
                      "card",
                      "pisp",
                      "lightning",
                      "cardtoken",
                      "applePay",
                      "googlePay",
                      "directDebit"
                    ],
                    "type": "string",
                    "description": "The payment methods that the payment request supports. When setting using form data\r\nshould be supplied as a comma separated list, for example \"card, pisp, lightning\".",
                    "deprecated": true
                  },
                  "PaymentRequestCreate.PaymentMethods": {
                    "type": "array",
                    "items": {
                      "enum": [
                        "None",
                        "card",
                        "pisp",
                        "lightning",
                        "cardtoken",
                        "applePay",
                        "googlePay",
                        "directDebit"
                      ],
                      "type": "string"
                    },
                    "description": "The payment methods that the payment request supports."
                  },
                  "PaymentRequestCreate.Description": {
                    "type": "string",
                    "description": "An optional description for the payment request. If set this field will appear\r\non the transaction record for some card processors."
                  },
                  "PaymentRequestCreate.PispAccountID": {
                    "type": "string",
                    "description": "The payment account ID to use to receive payment initiation payments. This must match one of your\r\nNoFrixion payment account IDs. This can be left blank to use your default payment account.",
                    "format": "uuid"
                  },
                  "PaymentRequestCreate.ShippingFirstName": {
                    "pattern": "[^\\<\\>]+",
                    "type": "string",
                    "description": "Optionally the first name of the customer's shipping address."
                  },
                  "PaymentRequestCreate.ShippingLastName": {
                    "pattern": "[^\\<\\>]+",
                    "type": "string",
                    "description": "Optionally the last name of the customer's shipping address."
                  },
                  "PaymentRequestCreate.ShippingAddressLine1": {
                    "pattern": "[^\\<\\>]+",
                    "type": "string",
                    "description": "Optionally the first line of the customer's shipping address."
                  },
                  "PaymentRequestCreate.ShippingAddressLine2": {
                    "pattern": "[^\\<\\>]+",
                    "type": "string",
                    "description": "Optionally the second line of the customer's shipping address."
                  },
                  "PaymentRequestCreate.ShippingAddressCity": {
                    "pattern": "[^\\<\\>]+",
                    "type": "string",
                    "description": "Optionally the city of the customer's shipping address."
                  },
                  "PaymentRequestCreate.ShippingAddressCounty": {
                    "pattern": "[^\\<\\>]+",
                    "type": "string",
                    "description": "Optionally the state or county of the customer's shipping address."
                  },
                  "PaymentRequestCreate.ShippingAddressPostCode": {
                    "pattern": "[^\\<\\>]+",
                    "type": "string",
                    "description": "Optionally the post code of the customer's shipping address."
                  },
                  "PaymentRequestCreate.ShippingAddressCountryCode": {
                    "pattern": "[^\\<\\>]+",
                    "type": "string",
                    "description": "Optionally the country code of the customer's shipping address."
                  },
                  "PaymentRequestCreate.ShippingPhone": {
                    "pattern": "[0-9\\+\\- ]+",
                    "type": "string",
                    "description": "Optionally the shipping phone number for the customer."
                  },
                  "PaymentRequestCreate.ShippingEmail": {
                    "type": "string",
                    "description": "Optionally the shipping email address for the customer."
                  },
                  "PaymentRequestCreate.OriginUrl": {
                    "type": "string",
                    "deprecated": true
                  },
                  "PaymentRequestCreate.BaseOriginUrl": {
                    "type": "string",
                    "description": "For card payments the origin of the payment page needs to be set in advance.\r\nA public key context is generated to encrypt sensitive card details and is bound\r\nto a single origin URL.",
                    "deprecated": true
                  },
                  "PaymentRequestCreate.CallbackUrl": {
                    "type": "string",
                    "description": "Once a payment is processed, or a notification of an inbound payment is received,\r\na callback request will be made to this URL. Typically it will be the page on\r\na merchant's web site that displays the results of the payment attempt."
                  },
                  "PaymentRequestCreate.FailureCallbackUrl": {
                    "type": "string",
                    "description": "Optional callback URL for payment failures that can occur when the payer is \r\nredirected away from the payment page. Typically the payer is only sent away\r\nfrom the payment page for pay by bank attempts. If this URL is not set the \r\npayer will be redirected back to the original URL the payment attempt was initiated\r\nfrom."
                  },
                  "PaymentRequestCreate.SuccessWebHookUrl": {
                    "type": "string",
                    "description": "If a payment event results in the payment request being classified as fully paid this\r\nsuccess webhook URL will be invoked. The URL will be invoked as a GET request, i.e.\r\nthere will be no request body. Two query parameters will be added to the URL. The \r\nfirst one will be \"id\" and will hold the payment request ID. The second one will be\r\n\"orderid\" and will hold the payment request OrderID, note the OrderID could be empty\r\nif it was not set when the payment request was created.\r\nThe recommended approach when receiving a success web hook is to use the \"id\" parameter\r\nto call the moneymoov get payment request endpoint to retrieve the full details of the\r\npayment request and check the status. Web hooks can be easily spoofed and should not be\r\nrelied upon."
                  },
                  "PaymentRequestCreate.CardAuthorizeOnly": {
                    "type": "boolean",
                    "description": "For card payments the default behaviour is to authorise and capture the payment at the same\r\ntime. If a merchant needs to authorise and then capture at a later point this property needs\r\nto be set to true."
                  },
                  "PaymentRequestCreate.CardCreateToken": {
                    "type": "boolean",
                    "description": "For card payments a payment attempt can be used to create a reusable token for subsequent\r\npayments. Setting this field to true will create a reusable customer token."
                  },
                  "PaymentRequestCreate.CardCreateTokenMode": {
                    "enum": [
                      "None",
                      "ConsentNotRequired",
                      "UserConsentRequired"
                    ],
                    "type": "string",
                    "description": "This specifies whether user consent will be taken before tokenising card or not.\r\nThis cannot be 'None' if CardCreateToken is set to true. If this is set to 'UserConsentRequired'\r\nthen, the user consent will overwrite CardCreateToken flag on submit card payment."
                  },
                  "PaymentRequestCreate.CardTransmitRawDetails": {
                    "type": "boolean",
                    "description": "If set to true for card payments the sensitive card number and card verification number \r\nwill be transmitted directly rather than being tokenised. This makes the payment quicker\r\nbut more exposed to client side flaws such as cross site scripting."
                  },
                  "PaymentRequestCreate.CardProcessorMerchantID": {
                    "pattern": "[a-zA-Z0-9]+",
                    "type": "string",
                    "description": "Optional field that if specified indicates the processor merchant ID that should be used\r\nto process any card payments. Mainly useful where a merchant has multiple processor\r\nmerchant ID's. If left empty the default merchant card settings will be used."
                  },
                  "PaymentRequestCreate.IgnoreAddressVerification": {
                    "type": "boolean",
                    "description": "If set to true the card payment gateway will be directed to proceed with a payment even if the\r\naddress verification checks fails."
                  },
                  "PaymentRequestCreate.CardIgnoreCVN": {
                    "type": "boolean",
                    "description": "If set to true the card payment gateway will be directed to proceed with a payment even if the\r\ncard verification number check fails."
                  },
                  "PaymentRequestCreate.PispRecipientReference": {
                    "type": "string",
                    "description": "For Payment Initiation payments this is the reference that will be requested to used as the reference \r\non the your transaction record. Note that it is not guaranteed that the sending bank will use this\r\nreference and in practice it has been observed to be supported by only half to two thirds of banks.",
                    "deprecated": true
                  },
                  "PaymentRequestCreate.UseHostedPaymentPage": {
                    "type": "boolean",
                    "description": "If set to true, and the merchant is configured for hosted payment pages, the base and callback URLs\r\nwill be set to use the hosted payment page."
                  },
                  "PaymentRequestCreate.CardNoPayerAuthentication": {
                    "type": "boolean",
                    "description": "If set to true for card payments no attempt will be made to use payer authentication (3-D Secure and equivalent).\r\nSkipping payer authentication can help avoid failed payment attempts when a payer is not enrolled or when they\r\ncan't be bothered completing their issuing bank's authentication steps. A disadvantage is it exposes the merchant \r\nto liability for charge backs."
                  },
                  "PaymentRequestCreate.PartialPaymentMethod": {
                    "enum": [
                      "None",
                      "Partial"
                    ],
                    "type": "string",
                    "description": "The approach to use, or not, for accepting partial payments."
                  },
                  "PaymentRequestCreate.CustomerEmailAddress": {
                    "type": "string",
                    "description": "Optional email address for the customer. If the tokenise card option is set then the customer email address\r\nis mandatory."
                  },
                  "PaymentRequestCreate.PaymentProcessor": {
                    "enum": [
                      "None",
                      "CyberSource",
                      "Checkout",
                      "Stripe",
                      "Modulr",
                      "Plaid",
                      "Yapily",
                      "Nofrixion",
                      "Bitcoin",
                      "BitcoinTestnet",
                      "BankingCircle",
                      "BankingCircleAgency",
                      "Simulator",
                      "Lightning",
                      "LightningTestnet",
                      "BankingCircleDirectDebit",
                      "Technoxander"
                    ],
                    "type": "string",
                    "description": "Lists the supported card and PIS processors."
                  },
                  "PaymentRequestCreate.LightningInvoice": {
                    "type": "string"
                  },
                  "PaymentRequestCreate.LightningInvoiceExpiresAt": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "PaymentRequestCreate.NotificationEmailAddresses": {
                    "type": "string",
                    "format": "email"
                  },
                  "PaymentRequestCreate.PriorityBankID": {
                    "type": "string",
                    "description": "The ID of the bank that is set as the priority bank for display on pay element.",
                    "format": "uuid"
                  },
                  "PaymentRequestCreate.Title": {
                    "type": "string",
                    "description": "A generic field to contain any additional data that the merchant wishes to store against the payment request.\r\nE.g. product or service information."
                  },
                  "PaymentRequestCreate.PartialPaymentSteps": {
                    "type": "string",
                    "description": "An optional comma separated list of partial payment amounts. The amounts represent guidance, or suggestions, as to\r\nhow the payer will be requested to make partial payments."
                  },
                  "PaymentRequestCreate.PayrunID": {
                    "type": "string",
                    "description": "Optional, if set it indicates that this payment request will be used to top up a payment account for a pay run.",
                    "format": "uuid"
                  },
                  "PaymentRequestCreate.SandboxSettleDelayInSeconds": {
                    "type": "integer",
                    "description": "Sandbox only. Optional. If set, the simulated Direct Debit settlement will be delayed by the specified number of seconds.\r\nMust be greater than 0 and less than 600. Otherwise, the default value will be used.",
                    "format": "int32"
                  },
                  "PaymentRequestCreate.TagIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "description": "An optional list of tag ids to add to the payment request"
                  },
                  "PaymentRequestCreate.Tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "An optional list of tag values to set on the payment request. If no matching\r\ntag exists it will be created."
                  },
                  "PaymentRequestCreate.AutoSendReceipt": {
                    "type": "boolean",
                    "description": "If set to true, a receipt will be automatically sent to the CustomerEmailAddress when payments are received."
                  },
                  "PaymentRequestCreate.CustomFields": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestCustomFieldCreate"
                    },
                    "description": "A list of custom fields to add to the payment request. The custom fields\r\nare data type agnostic which means that the API will not do any validation or formatting\r\nin the key-value pairs. The API will store the custom fields as is."
                  },
                  "PaymentRequestCreate.DueDate": {
                    "type": "string",
                    "description": "An optional due date for the payment request.",
                    "format": "date-time"
                  },
                  "PaymentRequestCreate.FieldDisplaySettings": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestFieldDisplaySetting"
                    },
                    "description": "An optional display settings for the payment request fields. This allows the merchant to control how\r\nthe fields are displayed on the hosted payment page, receipt, etc."
                  },
                  "PaymentRequestCreate.NotificationRoleIDs": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "description": "An optional list of notification role IDs that will receive notifications\r\nabout the payment request. This is useful for roles that need to be notified\r\nabout payment request events."
                  },
                  "PaymentRequestCreate.MerchantDirectDebitMandateID": {
                    "type": "string",
                    "description": "Optional ID of an existing direct debit mandate to associate with this payment request.\r\nOnly applicable when the payment method is direct debit.",
                    "format": "uuid"
                  },
                  "CardSensitive.CardNumber": {
                    "type": "string"
                  },
                  "CardSensitive.CardSecurityCode": {
                    "type": "string"
                  },
                  "CardSensitive.JwtToken": {
                    "type": "string",
                    "description": "The JWT token is not used if the raw card details are provided. This\r\nproperty is to override the base card property and stop it being required."
                  },
                  "CardSensitive.NumberToken": {
                    "type": "string",
                    "description": "The Number Token is not used if the raw card details are provided. This\r\nproperty is to override the base card property and stop it being required."
                  },
                  "CardSensitive.CvcToken": {
                    "type": "string",
                    "description": "The Cvc Token is not used if the raw card details are provided. This\r\nproperty is to override the base card property and stop it being required."
                  },
                  "CardSensitive.ExpiryMonth": {
                    "type": "string"
                  },
                  "CardSensitive.ExpiryYear": {
                    "type": "string"
                  },
                  "CardSensitive.CardHolderFirstName": {
                    "type": "string"
                  },
                  "CardSensitive.CardHolderLastName": {
                    "type": "string"
                  },
                  "CardSensitive.BillingAddressLine1": {
                    "type": "string"
                  },
                  "CardSensitive.BillingAddressLine2": {
                    "type": "string"
                  },
                  "CardSensitive.BillingAddressCity": {
                    "type": "string"
                  },
                  "CardSensitive.BillingAddressCounty": {
                    "type": "string"
                  },
                  "CardSensitive.BillingAddressPostCode": {
                    "type": "string"
                  },
                  "CardSensitive.BillingAddressCountryCode": {
                    "type": "string"
                  },
                  "CardSensitive.BillingPhone": {
                    "type": "string"
                  },
                  "CardSensitive.BillingEmail": {
                    "type": "string",
                    "format": "email"
                  },
                  "CardSensitive.SaveCardConsent": {
                    "type": "boolean"
                  },
                  "CardSensitive.PartialAmount": {
                    "type": "number",
                    "description": "Optional partial payment amount. If not specified then the full payment request\r\namount will be attempted.",
                    "format": "double"
                  },
                  "Card.ExpiryMonth": {
                    "type": "string"
                  },
                  "Card.ExpiryYear": {
                    "type": "string"
                  },
                  "Card.JwtToken": {
                    "type": "string",
                    "description": "The tokenised Card Number and CardVerification Number (CVN) details.\r\nTypically generated by the CyberSource javascript library."
                  },
                  "Card.NumberToken": {
                    "type": "string"
                  },
                  "Card.CvcToken": {
                    "type": "string"
                  },
                  "Card.CardHolderFirstName": {
                    "type": "string"
                  },
                  "Card.CardHolderLastName": {
                    "type": "string"
                  },
                  "Card.BillingAddressLine1": {
                    "type": "string"
                  },
                  "Card.BillingAddressLine2": {
                    "type": "string"
                  },
                  "Card.BillingAddressCity": {
                    "type": "string"
                  },
                  "Card.BillingAddressCounty": {
                    "type": "string"
                  },
                  "Card.BillingAddressPostCode": {
                    "type": "string"
                  },
                  "Card.BillingAddressCountryCode": {
                    "type": "string"
                  },
                  "Card.BillingPhone": {
                    "type": "string"
                  },
                  "Card.BillingEmail": {
                    "type": "string",
                    "format": "email"
                  },
                  "Card.SaveCardConsent": {
                    "type": "boolean"
                  },
                  "Card.PartialAmount": {
                    "type": "number",
                    "description": "Optional partial payment amount. If not specified then the full payment request\r\namount will be attempted.",
                    "format": "double"
                  },
                  "PaymentMethod": {
                    "enum": [
                      "None",
                      "card",
                      "pisp",
                      "lightning",
                      "cardtoken",
                      "applePay",
                      "googlePay",
                      "directDebit"
                    ],
                    "type": "string",
                    "description": "The single payment method to use for the pay on demand payment request."
                  },
                  "CardToken.TokenisedCardID": {
                    "type": "string",
                    "description": "The ID of the tokenised card to use for the payment. The merchant needs to ensure that\r\nthe use of the tokenised card is restricted to the same customer that created it.",
                    "format": "uuid"
                  },
                  "CardToken.PaymentInitiator": {
                    "enum": [
                      "customer",
                      "merchant"
                    ],
                    "type": "string",
                    "description": "Indicates who initiated the card token payment, customer or merchant."
                  },
                  "CardToken.CardSecurityCode": {
                    "type": "string",
                    "description": "Not used for merchant initiated transactions. Optional for customer initiated transactions.\r\nIf supplied will be sent to the card processor as a check that the customer using the \r\ntokenised card knows the card verification number."
                  },
                  "CardToken.PartialAmount": {
                    "type": "number",
                    "description": "Optional partial payment amount. If not specified then the full payment request\r\namount will be attempted.",
                    "format": "double"
                  },
                  "PaymentInitiationRequest.ProviderID": {
                    "type": "string",
                    "description": "This is the ID of the institution (bank) that the payer ha chosen."
                  },
                  "PaymentInitiationRequest.PartialAmount": {
                    "type": "number",
                    "description": "Optional. If 0 the full amount is assumed.",
                    "format": "double"
                  },
                  "PaymentInitiationRequest.RedirectToOriginUrl": {
                    "type": "string",
                    "deprecated": true
                  },
                  "PaymentInitiationRequest.OriginUrl": {
                    "type": "string",
                    "description": "Optional. If set should indicate the origin URL the payer is making the \r\npayment from. If a pay by bank attempt fails and the payment request does not\r\nhave a FailureCallbackUrl set then the payer will be redirected to this URL."
                  }
                }
              },
              "encoding": {
                "PaymentRequestCreate.MerchantID": {
                  "style": "form"
                },
                "PaymentRequestCreate.Amount": {
                  "style": "form"
                },
                "PaymentRequestCreate.Currency": {
                  "style": "form"
                },
                "PaymentRequestCreate.CustomerID": {
                  "style": "form"
                },
                "PaymentRequestCreate.OrderID": {
                  "style": "form"
                },
                "PaymentRequestCreate.PaymentMethodTypes": {
                  "style": "form"
                },
                "PaymentRequestCreate.PaymentMethods": {
                  "style": "form"
                },
                "PaymentRequestCreate.Description": {
                  "style": "form"
                },
                "PaymentRequestCreate.PispAccountID": {
                  "style": "form"
                },
                "PaymentRequestCreate.ShippingFirstName": {
                  "style": "form"
                },
                "PaymentRequestCreate.ShippingLastName": {
                  "style": "form"
                },
                "PaymentRequestCreate.ShippingAddressLine1": {
                  "style": "form"
                },
                "PaymentRequestCreate.ShippingAddressLine2": {
                  "style": "form"
                },
                "PaymentRequestCreate.ShippingAddressCity": {
                  "style": "form"
                },
                "PaymentRequestCreate.ShippingAddressCounty": {
                  "style": "form"
                },
                "PaymentRequestCreate.ShippingAddressPostCode": {
                  "style": "form"
                },
                "PaymentRequestCreate.ShippingAddressCountryCode": {
                  "style": "form"
                },
                "PaymentRequestCreate.ShippingPhone": {
                  "style": "form"
                },
                "PaymentRequestCreate.ShippingEmail": {
                  "style": "form"
                },
                "PaymentRequestCreate.OriginUrl": {
                  "style": "form"
                },
                "PaymentRequestCreate.BaseOriginUrl": {
                  "style": "form"
                },
                "PaymentRequestCreate.CallbackUrl": {
                  "style": "form"
                },
                "PaymentRequestCreate.FailureCallbackUrl": {
                  "style": "form"
                },
                "PaymentRequestCreate.SuccessWebHookUrl": {
                  "style": "form"
                },
                "PaymentRequestCreate.CardAuthorizeOnly": {
                  "style": "form"
                },
                "PaymentRequestCreate.CardCreateToken": {
                  "style": "form"
                },
                "PaymentRequestCreate.CardCreateTokenMode": {
                  "style": "form"
                },
                "PaymentRequestCreate.CardTransmitRawDetails": {
                  "style": "form"
                },
                "PaymentRequestCreate.CardProcessorMerchantID": {
                  "style": "form"
                },
                "PaymentRequestCreate.IgnoreAddressVerification": {
                  "style": "form"
                },
                "PaymentRequestCreate.CardIgnoreCVN": {
                  "style": "form"
                },
                "PaymentRequestCreate.PispRecipientReference": {
                  "style": "form"
                },
                "PaymentRequestCreate.UseHostedPaymentPage": {
                  "style": "form"
                },
                "PaymentRequestCreate.CardNoPayerAuthentication": {
                  "style": "form"
                },
                "PaymentRequestCreate.PartialPaymentMethod": {
                  "style": "form"
                },
                "PaymentRequestCreate.CustomerEmailAddress": {
                  "style": "form"
                },
                "PaymentRequestCreate.PaymentProcessor": {
                  "style": "form"
                },
                "PaymentRequestCreate.LightningInvoice": {
                  "style": "form"
                },
                "PaymentRequestCreate.LightningInvoiceExpiresAt": {
                  "style": "form"
                },
                "PaymentRequestCreate.NotificationEmailAddresses": {
                  "style": "form"
                },
                "PaymentRequestCreate.PriorityBankID": {
                  "style": "form"
                },
                "PaymentRequestCreate.Title": {
                  "style": "form"
                },
                "PaymentRequestCreate.PartialPaymentSteps": {
                  "style": "form"
                },
                "PaymentRequestCreate.PayrunID": {
                  "style": "form"
                },
                "PaymentRequestCreate.SandboxSettleDelayInSeconds": {
                  "style": "form"
                },
                "PaymentRequestCreate.TagIds": {
                  "style": "form"
                },
                "PaymentRequestCreate.Tags": {
                  "style": "form"
                },
                "PaymentRequestCreate.AutoSendReceipt": {
                  "style": "form"
                },
                "PaymentRequestCreate.CustomFields": {
                  "style": "form"
                },
                "PaymentRequestCreate.DueDate": {
                  "style": "form"
                },
                "PaymentRequestCreate.FieldDisplaySettings": {
                  "style": "form"
                },
                "PaymentRequestCreate.NotificationRoleIDs": {
                  "style": "form"
                },
                "PaymentRequestCreate.MerchantDirectDebitMandateID": {
                  "style": "form"
                },
                "CardSensitive.CardNumber": {
                  "style": "form"
                },
                "CardSensitive.CardSecurityCode": {
                  "style": "form"
                },
                "CardSensitive.JwtToken": {
                  "style": "form"
                },
                "CardSensitive.NumberToken": {
                  "style": "form"
                },
                "CardSensitive.CvcToken": {
                  "style": "form"
                },
                "CardSensitive.ExpiryMonth": {
                  "style": "form"
                },
                "CardSensitive.ExpiryYear": {
                  "style": "form"
                },
                "CardSensitive.CardHolderFirstName": {
                  "style": "form"
                },
                "CardSensitive.CardHolderLastName": {
                  "style": "form"
                },
                "CardSensitive.BillingAddressLine1": {
                  "style": "form"
                },
                "CardSensitive.BillingAddressLine2": {
                  "style": "form"
                },
                "CardSensitive.BillingAddressCity": {
                  "style": "form"
                },
                "CardSensitive.BillingAddressCounty": {
                  "style": "form"
                },
                "CardSensitive.BillingAddressPostCode": {
                  "style": "form"
                },
                "CardSensitive.BillingAddressCountryCode": {
                  "style": "form"
                },
                "CardSensitive.BillingPhone": {
                  "style": "form"
                },
                "CardSensitive.BillingEmail": {
                  "style": "form"
                },
                "CardSensitive.SaveCardConsent": {
                  "style": "form"
                },
                "CardSensitive.PartialAmount": {
                  "style": "form"
                },
                "Card.ExpiryMonth": {
                  "style": "form"
                },
                "Card.ExpiryYear": {
                  "style": "form"
                },
                "Card.JwtToken": {
                  "style": "form"
                },
                "Card.NumberToken": {
                  "style": "form"
                },
                "Card.CvcToken": {
                  "style": "form"
                },
                "Card.CardHolderFirstName": {
                  "style": "form"
                },
                "Card.CardHolderLastName": {
                  "style": "form"
                },
                "Card.BillingAddressLine1": {
                  "style": "form"
                },
                "Card.BillingAddressLine2": {
                  "style": "form"
                },
                "Card.BillingAddressCity": {
                  "style": "form"
                },
                "Card.BillingAddressCounty": {
                  "style": "form"
                },
                "Card.BillingAddressPostCode": {
                  "style": "form"
                },
                "Card.BillingAddressCountryCode": {
                  "style": "form"
                },
                "Card.BillingPhone": {
                  "style": "form"
                },
                "Card.BillingEmail": {
                  "style": "form"
                },
                "Card.SaveCardConsent": {
                  "style": "form"
                },
                "Card.PartialAmount": {
                  "style": "form"
                },
                "PaymentMethod": {
                  "style": "form"
                },
                "CardToken.TokenisedCardID": {
                  "style": "form"
                },
                "CardToken.PaymentInitiator": {
                  "style": "form"
                },
                "CardToken.CardSecurityCode": {
                  "style": "form"
                },
                "CardToken.PartialAmount": {
                  "style": "form"
                },
                "PaymentInitiationRequest.ProviderID": {
                  "style": "form"
                },
                "PaymentInitiationRequest.PartialAmount": {
                  "style": "form"
                },
                "PaymentInitiationRequest.RedirectToOriginUrl": {
                  "style": "form"
                },
                "PaymentInitiationRequest.OriginUrl": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.IPaymentResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.IPaymentResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.IPaymentResponse"
                }
              }
            }
          },
          "201": {
            "description": "Returns the payment response."
          }
        }
      }
    },
    "/api/v1/paymentrequests/{id}": {
      "put": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Updates a payment request.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanUpdatePaymentRequests",
        "operationId": "UpdatePaymentRequest",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payment request to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The payment request containing the updated details to apply.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the updated payment request record.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequest"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequest"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequest"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Gets a payment request.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanViewPaymentRequests",
        "operationId": "GetPaymentRequest",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payment request to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "includeEvents",
            "in": "query",
            "description": "Set to true to include any associated payment request events.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a payment request record.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequest"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequest"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequest"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Deletes a payment request, along with its keys and addresses, if there's\r\nno payment event associated with it.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanDeletePaymentRequests",
        "operationId": "DeletePaymentRequest",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The id of the payment request to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "No result is returned."
          }
        }
      }
    },
    "/api/v1/paymentrequests/getbyorderid/{orderID}": {
      "get": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Gets a payment request by its order ID.",
        "description": "\n\n<b>Authorization</b>: Merchant token is required.",
        "operationId": "GetPaymentRequestForOrder",
        "parameters": [
          {
            "name": "orderID",
            "in": "path",
            "description": "The order ID of the payment request to retrieve. Useful when the\r\n            payment request has been created by an external application such as WooCommerce or Xero.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a payment request record.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequest"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequest"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequest"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/{id}/minimal": {
      "get": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Gets a minimal representation of a payment request.",
        "operationId": "GetPaymentRequestMinimal",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payment request to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a payment request minimal record.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestMinimal"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestMinimal"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestMinimal"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/export": {
      "get": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Export a list of all payment requests to a CSV file.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanViewPaymentRequests",
        "operationId": "ExportPaymentRequests",
        "parameters": [
          {
            "name": "merchantID",
            "in": "query",
            "description": "The merchant ID to get he list of payment requests for. This field is ignored for\r\n            merchant tokens and required for user tokens.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page number from where records are retrieved. Note that the paging starts from page 1.\r\n            If a 0 is supplied it will be treated as a 1 and the first page is returned.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "The number of records to be retrieved from a page.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The date filter to apply to retrieve payment requests created after this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The date filter to apply to retrieve payment requests created up until this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "The status filter to apply to retrieve payment requests with this status",
            "schema": {
              "enum": [
                "All",
                "None",
                "FullyPaid",
                "PartiallyPaid",
                "OverPaid",
                "Voided",
                "Authorized"
              ],
              "type": "string",
              "default": "All"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve payment requests with a similar title, description, merchant name or contact information.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "The currency filter to apply to retrieve payment requests with this currency.",
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          },
          {
            "name": "minAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve payment requests that exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "maxAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve payment requests that don't exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "description": "The tag filter to apply to retrieve payment requests with at least one of these tags.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "paymentMethods",
            "in": "query",
            "description": "The payment method filter to apply to retrieve payment requests with any of these payment methods.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "None",
                  "card",
                  "pisp",
                  "lightning",
                  "cardtoken",
                  "applePay",
                  "googlePay",
                  "directDebit"
                ],
                "type": "string"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the payment requests. Example \"Amount desc,Inserted asc\".",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includeArchived",
            "in": "query",
            "description": "Flag that indicates whether to include archived payment requests or not.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "onlyArchived",
            "in": "query",
            "description": "When true, only archived payment requests are returned in the export.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of payment requests in a CSV file.",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "202": {
            "description": "Accepted. The CSV file is being generated."
          }
        }
      }
    },
    "/api/v1/paymentrequests/metrics": {
      "get": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Gets payment request metrics of a merchant.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanViewPaymentRequests",
        "operationId": "GetPaymentRequestMetricsForMerchant",
        "parameters": [
          {
            "name": "merchantID",
            "in": "query",
            "description": "The merchant ID to get the payment request metrics. This field is ignored for\r\n            merchant tokens and required for user tokens.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The date filter to apply to retrieve payment request metrics created after this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The date filter to apply to retrieve payment request metrics created up until this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve payment requests with a similar title, description or contact information.k",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "The currency filter to apply to retrieve payment request metrics with this currency.",
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          },
          {
            "name": "minAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve payment request metrics that exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "maxAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve payment request metrics that don't exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "description": "The tag filter to apply to retrieve payment request metrics with at least one of these tags.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "paymentMethods",
            "in": "query",
            "description": "The payment method filter to apply to retrieve payment request metrics with any of these payment methods.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "None",
                  "card",
                  "pisp",
                  "lightning",
                  "cardtoken",
                  "applePay",
                  "googlePay",
                  "directDebit"
                ],
                "type": "string"
              }
            }
          },
          {
            "name": "includeArchived",
            "in": "query",
            "description": "Flag that indicates whether to include archived payment requests or not.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestMetrics"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestMetrics"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestMetrics"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/{id}/result": {
      "get": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Gets a payment request result.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.",
        "operationId": "GetPaymentRequestResult",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the payment request to get the result for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a payment request result record.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/{id}/events": {
      "get": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Gets a payment requests's events.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.",
        "operationId": "GetPaymentRequestEvents",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the payment request to get the events for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of payment request event records.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestEvent"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestEvent"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestEvent"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/{id}/unarchive": {
      "put": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Restores an archived payment request, making it visible in the default payment request listing.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanDeletePaymentRequests",
        "operationId": "UnarchivePaymentRequest",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the archived payment request to restore.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "No result is returned."
          }
        }
      }
    },
    "/api/v1/paymentrequests/{id}/directdebit": {
      "post": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Submits a Direct Debit payment attempt.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.",
        "operationId": "SubmitDirectDebitForMandate",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the payment request to pay.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "mandateID",
            "in": "query",
            "description": "ID of the existing Direct Debit mandate record.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "submitAfter",
            "in": "query",
            "description": "Defines when this payment should be earliest submitted\r\n            to the customer's bank account. Optional.\r\n            Payments will be submitted as soon as possible, if not specified.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "No result is returned."
          },
          "400": {
            "description": "Configuration error."
          },
          "404": {
            "description": "Payment request or mandate were not found."
          }
        }
      }
    },
    "/api/v1/paymentrequests/{merchantID}/templates": {
      "get": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Gets a list of payment request templates for a merchant.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanViewPaymentRequestTemplates",
        "operationId": "GetPaymentRequestTemplates",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant to get payment request templates for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of payment request templates for a merchant.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.MerchantPaymentRequestTemplate"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.MerchantPaymentRequestTemplate"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.MerchantPaymentRequestTemplate"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/{merchantID}/templates/{templateID}": {
      "get": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Gets a payment request template for a merchant.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanViewPaymentRequestTemplates",
        "operationId": "GetPaymentRequestTemplate",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant to get payment request templates for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "templateID",
            "in": "path",
            "description": "The ID of the template.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a payment request template for a merchant.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.MerchantPaymentRequestTemplate"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.MerchantPaymentRequestTemplate"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.MerchantPaymentRequestTemplate"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Updates a payment request template for a merchant.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanUpdatePaymentRequestTemplates",
        "operationId": "UpdatePaymentRequestTemplate",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant for the payment request template update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "templateID",
            "in": "path",
            "description": "The ID of the template.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The template to update",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestTemplateUpdate"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestTemplateUpdate"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestTemplateUpdate"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestTemplateUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns an updated payment request template.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.MerchantPaymentRequestTemplate"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.MerchantPaymentRequestTemplate"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.MerchantPaymentRequestTemplate"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Deletes a payment request template for a merchant.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanDeletePaymentRequestTemplates",
        "operationId": "DeletePaymentRequestTemplate",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant to delete payment request templates for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "templateID",
            "in": "path",
            "description": "The ID of the template.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a success response if the template was deleted.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.MerchantPaymentRequestTemplate"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.MerchantPaymentRequestTemplate"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.MerchantPaymentRequestTemplate"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/{id}/receipt": {
      "get": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Gets the PDF receipt for a payment request.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanViewPaymentRequests",
        "operationId": "GetPaymentRequestReceipt",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payment request to download the receipt for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the PDF file of the payment request receipt."
          }
        }
      }
    },
    "/api/v1/paymentrequests/batchcreate": {
      "post": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Creates payment requests in batch.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanCreatePaymentRequests",
        "operationId": "CreatePaymentRequests",
        "requestBody": {
          "description": "A list of objects containing the details of the payment requests to create.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestCreate"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A PaymentRequestsCreateResponse.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Api.Features.PaymentRequests.PaymentRequestsCreateResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Api.Features.PaymentRequests.PaymentRequestsCreateResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Api.Features.PaymentRequests.PaymentRequestsCreateResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/paymentrequests/directdebit/batchsubmit": {
      "post": {
        "tags": [
          "PaymentRequests"
        ],
        "summary": "Submits direct debit payments in batch.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.",
        "operationId": "BatchSubmitDirectDebit",
        "requestBody": {
          "description": "A list of objects containing payment request IDs and their associated mandate IDs to submit for direct debit.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.DirectDebitBatchSubmitItem"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A DirectDebitBatchSubmitResponse.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.DirectDebitBatchSubmitResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.DirectDebitBatchSubmitResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.DirectDebitBatchSubmitResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/payouts/metrics": {
      "get": {
        "tags": [
          "Payouts"
        ],
        "summary": "Gets a list of all payout metrics for a specific merchant.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.",
        "operationId": "GetPayoutMetrics",
        "parameters": [
          {
            "name": "merchantID",
            "in": "query",
            "description": "Required. The ID of the merchant to get the payout metrics for.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The date filter to apply to retrieve payouts created after this date as metrics.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The date filter to apply to retrieve payouts created up until this date as metrics.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve payouts with a similar title, description, merchant name or contact information as metrics.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "The currency filter to apply to retrieve payouts with this currency as metrics.",
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          },
          {
            "name": "minAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve payouts that exceed this amount as metrics.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "maxAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve payouts that don't exceed this amount as metrics.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "description": "The tag filter to apply to retrieve payouts with at least one of these tags as metrics.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "includeArchived",
            "in": "query",
            "description": "Flag that indicates whether to include archived payouts in the metrics.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutMetrics"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutMetrics"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutMetrics"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/payouts": {
      "get": {
        "tags": [
          "Payouts"
        ],
        "summary": "Gets a list of all payouts for a specific merchant.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.",
        "operationId": "GetPayoutsPaged",
        "parameters": [
          {
            "name": "merchantID",
            "in": "query",
            "description": "Required. The ID of the merchant to get the payouts for.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number from where records are retrieved.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of records to be retrieved from a page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "An optional status filter for the payout records.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "UNKNOWN",
                  "REJECTED",
                  "PENDING",
                  "PROCESSED",
                  "PENDING_APPROVAL",
                  "QUEUED_UPSTREAM",
                  "QUEUED",
                  "FAILED",
                  "PENDING_INPUT",
                  "SCHEDULED",
                  "REJECTED_APPROVAL"
                ],
                "type": "string",
                "description": "The status of payout."
              }
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The date filter to apply to retrieve payouts created after this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The date filter to apply to retrieve payouts created up until this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve payouts with a similar title, description, merchant name or contact information.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "The currency filter to apply to retrieve payouts with this currency.",
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          },
          {
            "name": "minAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve payouts that exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "maxAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve payouts that don't exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "description": "The tag filter to apply to retrieve payouts with at least one of these tags.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the payouts.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includeArchived",
            "in": "query",
            "description": "Flag that indicates whether to include archived payouts.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "onlyArchived",
            "in": "query",
            "description": "When true, only archived payouts are returned.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of payout records.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.PayoutPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.PayoutPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.PayoutPageResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Payouts"
        ],
        "summary": "Creates a new payout.",
        "description": "Swagger narrows payout.currency to the currencies currently configured for holding accounts and\r\npayout.fxDestinationCurrency to the currencies currently configured for Banking Circle FX support.\r\nThe authoritative lists for the current environment are exposed by GET /api/v1/currencies.\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanCreatePayouts",
        "operationId": "CreatePayout",
        "requestBody": {
          "description": "The object containing the details of the payout to create.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              }
            }
          },
          "201": {
            "description": "The newly created payout record."
          }
        }
      }
    },
    "/api/v1/payouts/export": {
      "get": {
        "tags": [
          "Payouts"
        ],
        "summary": "Exports a list of all payouts for a specific merchant to a CSV file.",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "ExportPayouts",
        "parameters": [
          {
            "name": "merchantID",
            "in": "query",
            "description": "Required. The ID of the merchant to get the payouts for.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number from where records are retrieved.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of records to be retrieved from a page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "An optional status filter for the payout records.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "UNKNOWN",
                  "REJECTED",
                  "PENDING",
                  "PROCESSED",
                  "PENDING_APPROVAL",
                  "QUEUED_UPSTREAM",
                  "QUEUED",
                  "FAILED",
                  "PENDING_INPUT",
                  "SCHEDULED",
                  "REJECTED_APPROVAL"
                ],
                "type": "string",
                "description": "The status of payout."
              }
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The date filter to apply to retrieve payouts created after this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The date filter to apply to retrieve payouts created up until this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve payouts with a similar title, description, merchant name or contact information.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "The currency filter to apply to retrieve payouts with this currency.",
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          },
          {
            "name": "minAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve payouts that exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "maxAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve payouts that don't exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "description": "The tag filter to apply to retrieve payouts with at least one of these tags.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the payouts.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includeArchived",
            "in": "query",
            "description": "Flag that indicates whether to include archived payouts in the export.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "onlyArchived",
            "in": "query",
            "description": "When true, only archived payouts are returned in the export.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a CSV file of payout records.",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "202": {
            "description": "Accepted. The CSV file is being generated."
          }
        }
      }
    },
    "/api/v1/payouts/{id}": {
      "get": {
        "tags": [
          "Payouts"
        ],
        "summary": "Gets a single payout.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.\n\n<b>User permissions required</b>: CanViewPayouts",
        "operationId": "GetPayout",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payout record to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a payout record.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Payouts"
        ],
        "summary": "Deletes a payout record.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanDeletePayouts",
        "operationId": "DeletePayout",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payment record to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "No result is returned."
          }
        }
      },
      "put": {
        "tags": [
          "Payouts"
        ],
        "summary": "Updates a payout record.",
        "description": "Swagger narrows payout.fxDestinationCurrency to the currencies currently configured for Banking Circle FX support.\r\nThe authoritative list for the current environment is exposed by GET /api/v1/currencies?capability=FxBc.\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanEditPayouts",
        "operationId": "UpdatePayout",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payout to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The object containing the details of payout to update.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated Payout record.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/payouts/batchcreate": {
      "post": {
        "tags": [
          "Payouts"
        ],
        "summary": "Creates payouts.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanCreateBatchPayouts",
        "operationId": "CreatePayouts",
        "requestBody": {
          "description": "A list of objects containing the details of the payouts to create.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutCreate"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A PayoutsCreateResponse.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payouts.PayoutsCreateResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payouts.PayoutsCreateResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payouts.PayoutsCreateResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/payouts/submit/{id}": {
      "post": {
        "tags": [
          "Payouts"
        ],
        "summary": "Submits a payout for processing.",
        "description": "\n\n<b>Authorization</b>: Strong end user token is required.\n\n<b>User permissions required</b>: CanAuthorisePayouts",
        "operationId": "SubmitPayout",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payout to submit.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "202": {
            "description": "Accepted. Payout has been submitted for processing."
          }
        }
      }
    },
    "/api/v1/payouts/{id}/unarchive": {
      "put": {
        "tags": [
          "Payouts"
        ],
        "summary": "Restores an archived payout, making it visible in the default payout listing.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanDeletePayouts",
        "operationId": "UnarchivePayout",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the archived payout to restore.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "No result is returned."
          }
        }
      }
    },
    "/api/v1/payouts/batchdelete": {
      "delete": {
        "tags": [
          "Payouts"
        ],
        "summary": "Deletes a list of payout records.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanDeletePayouts",
        "operationId": "DeletePayouts",
        "requestBody": {
          "description": "The IDs of the payouts to be deleted",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The result of each payout deletion."
          }
        }
      }
    },
    "/api/v1/payouts/batch/{id}": {
      "get": {
        "tags": [
          "Payouts"
        ],
        "summary": "Gets a list of all the payouts contained in a batch.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanViewPayouts",
        "operationId": "GetBatchPayout",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the batch payout to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of payout records.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BatchPayout"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BatchPayout"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BatchPayout"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/payouts/batch": {
      "post": {
        "tags": [
          "Payouts"
        ],
        "summary": "Creates a new batch payout.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanCreateBatchPayouts",
        "operationId": "CreateBatchPayout",
        "requestBody": {
          "description": "The IDs of the payout to include in the batch.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BatchPayout"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BatchPayout"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BatchPayout"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/payouts/batch/submit/{id}": {
      "post": {
        "tags": [
          "Payouts"
        ],
        "summary": "Submits a batch payout for processing.",
        "description": "\n\n<b>Authorization</b>: Strong end user token is required.\n\n<b>User permissions required</b>: CanAuthorisePayouts",
        "operationId": "SubmitBatchPayout",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the batch payout to submit.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "202": {
            "description": "Accepted. Payouts have been submitted for processing."
          }
        }
      }
    },
    "/api/v1/payouts/cancel/{id}": {
      "put": {
        "tags": [
          "Payouts"
        ],
        "summary": "Attempts to cancel a scheduled payout.",
        "description": "If successful the payout will be reverted to a pending state.\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanEditPayouts",
        "operationId": "CancelScheduledPayout",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payout to cancel.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The updated Payout record.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/payouts/reject/{id}": {
      "put": {
        "tags": [
          "Payouts"
        ],
        "summary": "Rejects the authorisation for a payout.",
        "description": "If successful the payout will be set to REJECTED_APPROVAL state.\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanRejectPayouts",
        "operationId": "RejectPayout",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payout to reject.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "Reason for rejection.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutReject"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated Payout record.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/payouts/send": {
      "post": {
        "tags": [
          "Payouts"
        ],
        "summary": "Creates and submits a payout for a trusted caller.",
        "description": "Access to this endpoint is restricted, please contact support for more information.\n\n<b>Authorization</b>: API key (HMAC signed and IP address whitelisted) is required.",
        "operationId": "SendPayout",
        "requestBody": {
          "description": "The object containing the details of the payout to create and submit.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              }
            }
          },
          "202": {
            "description": "The newly created and submitted payout record."
          }
        }
      }
    },
    "/api/v1/payouts/sendbeneficiary": {
      "post": {
        "tags": [
          "Payouts"
        ],
        "summary": "Creates and submits a payout to a pre-authorised beneficiary.",
        "description": "Access to this endpoint is restricted to merchant tokens using a digital signature and IP address whitelist.\n\n<b>Authorization</b>: Merchant token (HMAC signed and IP address whitelisted) is required.",
        "operationId": "SendToBeneficiary",
        "requestBody": {
          "description": "The object containing the details of the payout to create and submit. The payout\r\n            will only be accepted if the destination is set as a beneficairy ID.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                }
              }
            }
          },
          "202": {
            "description": "The newly created and submitted payout record."
          }
        }
      }
    },
    "/api/v1/payouts/{id}/proof": {
      "get": {
        "tags": [
          "Payouts"
        ],
        "summary": "Generates a proof of payment PDF document with the details of a payout.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanViewPayouts",
        "operationId": "GetPayoutProof",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the payout.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/payouts/{merchantID}/failed": {
      "get": {
        "tags": [
          "Payouts"
        ],
        "summary": "Get failed payouts for a specific merchant.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.",
        "operationId": "GetFailedPayouts",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The merchant id to get the failed payouts fro.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "fromDateUtc",
            "in": "query",
            "description": "Optional. The date to fetch the payouts from. Must be ISO 8601 format",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Optional. The page size. Default is 20",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutKeysetPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutKeysetPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutKeysetPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/payouts/fxquote/{source}/{destination}/{amount}": {
      "get": {
        "tags": [
          "Payouts"
        ],
        "summary": "Gets an FX quote.",
        "description": "An FX quote is an indicative FX rate for the amount, source and destination currencies. The\r\nrate is not guaranteed and is subject to change.\n\n<b>Authorization</b>: End user or Merchant token is required.",
        "operationId": "GetFxQuote",
        "parameters": [
          {
            "name": "source",
            "in": "path",
            "description": "The source currency for the FX quote.",
            "required": true,
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          },
          {
            "name": "destination",
            "in": "path",
            "description": "The destination currency for the FX quote.",
            "required": true,
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          },
          {
            "name": "amount",
            "in": "path",
            "description": "The amount to convert from the source to the destination currency.",
            "required": true,
            "schema": {
              "type": "number",
              "format": "double"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "number",
                  "format": "double"
                }
              },
              "application/json": {
                "schema": {
                  "type": "number",
                  "format": "double"
                }
              },
              "text/json": {
                "schema": {
                  "type": "number",
                  "format": "double"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/payouts/fxheldrate/{source}/{destination}/{validForMinutes}": {
      "get": {
        "tags": [
          "Payouts"
        ],
        "summary": "Gets an FX held rate.",
        "description": "A held rate differs from an indicative rate in that it is a guaranteed rate for a specific period of time.\r\nThe maximum validity validity period a held rate can be obtained for is 24 hours.\n\n<b>Authorization</b>: End user or Merchant token is required.",
        "operationId": "GetFxHeldRate",
        "parameters": [
          {
            "name": "source",
            "in": "path",
            "description": "The source currency for the FX held rate.",
            "required": true,
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          },
          {
            "name": "destination",
            "in": "path",
            "description": "The destination currency for the FX held rate.",
            "required": true,
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          },
          {
            "name": "validForMinutes",
            "in": "path",
            "description": "The number of minutes the held rate is being requested for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.FxRate"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.FxRate"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.FxRate"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/payouts/fxallheldrates/{source}/{destination}": {
      "get": {
        "tags": [
          "Payouts"
        ],
        "summary": "Get all FX held rates.",
        "description": "Gets all the available FX held rates for a specific source and destination currency. A held rate can be used\r\nwith a multi-currency payout by setting the quote ID on the payout.\n\n<b>Authorization</b>: End user or Merchant token is required.",
        "operationId": "GetAllFxHeldRates",
        "parameters": [
          {
            "name": "source",
            "in": "path",
            "description": "The source currency to get the the FX held rates for.",
            "required": true,
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          },
          {
            "name": "destination",
            "in": "path",
            "description": "The destination currency to get the FX held rates for.",
            "required": true,
            "schema": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.FxRate"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.FxRate"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.FxRate"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/payruns/{merchantID}": {
      "post": {
        "tags": [
          "Payruns"
        ],
        "summary": "Create a new Payrun from a list of invoices.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanCreatePayruns",
        "operationId": "CreatePayrun",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The merchant ID to create the Payrun for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The properties, including the list of invocies, for the PayRun.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayrunCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payrun"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payrun"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payrun"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/payruns": {
      "get": {
        "tags": [
          "Payruns"
        ],
        "summary": "Gets all payruns for a merchant.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanViewPayruns",
        "operationId": "GetPayrunsPaged",
        "parameters": [
          {
            "name": "merchantID",
            "in": "query",
            "description": "The merchant ID to get the payruns for",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number from where records are retrieved.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of records to be retrieved from a page.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The date filter to apply to retrieve payruns created after this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The date filter to apply to retrieve payruns created up until this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the payruns.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "An optional status filter list",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "None",
                  "Draft",
                  "Submitted",
                  "Completed",
                  "Rejected",
                  "AuthorisationPending",
                  "PayoutsCreated",
                  "Queued",
                  "Approving",
                  "Processing"
                ],
                "type": "string"
              }
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve payruns",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "onlyArchived",
            "in": "query",
            "description": "Flag that indicates whether to fetch only archived payruns or not",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.PayrunPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.PayrunPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.PayrunPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/payruns/{id}": {
      "get": {
        "tags": [
          "Payruns"
        ],
        "summary": "Gets a single payrun.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanViewPayruns",
        "operationId": "GetPayrun",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payrun record to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a payrun record.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payrun"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payrun"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payrun"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Payruns"
        ],
        "summary": "Updates a payrun.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanEditPayruns",
        "operationId": "UpdatePayrun",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payrun to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The object containing the details of the payrun to update.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayrunUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated Payrun record.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payrun"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payrun"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payrun"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Payruns"
        ],
        "summary": "Deletes a pay run, along with its invoices, if it's in a Draft state.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanDeletePayruns",
        "operationId": "DeletePayrun",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The id of the pay run to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "No result is returned."
          }
        }
      }
    },
    "/api/v1/payruns/{id}/submit": {
      "post": {
        "tags": [
          "Payruns"
        ],
        "summary": "Submits a payrun for processing.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanApprovePayruns",
        "operationId": "SubmitPayrun",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The payrun id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The object containing some optional values to override the existent payrun",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayrunApprove"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "202": {
            "description": "Accepted."
          }
        }
      }
    },
    "/api/v1/payruns/{id}/request-authorisation": {
      "post": {
        "tags": [
          "Payruns"
        ],
        "summary": "Request authorisation from authorisers for this payrun.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanCreatePayruns",
        "operationId": "RequestPayrunAuthorisation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The payrun id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The payrun authorisation request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayrunAuthorisation"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK."
          }
        }
      }
    },
    "/api/v1/payruns/{id}/reject": {
      "put": {
        "tags": [
          "Payruns"
        ],
        "summary": "Rejects a payrun.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanApprovePayruns",
        "operationId": "RejectPayrun",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the payrun to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The object containing the details of the payrun to reject.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayrunReject"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated Payrun record.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payrun"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payrun"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payrun"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/payruns/{id}/archive": {
      "delete": {
        "tags": [
          "Payruns"
        ],
        "summary": "Archives a pay run, excluding it from most actions.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanDeletePayruns",
        "operationId": "ArchivePayrun",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The id of the pay run to archive.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "No result is returned."
          }
        }
      }
    },
    "/api/v1/payruns/{id}/unarchive": {
      "put": {
        "tags": [
          "Payruns"
        ],
        "summary": "Restores an archived pay run, making it retrievable from most actions.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanDeletePayruns",
        "operationId": "UnarchivePayrun",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The id of the pay run to unarchive.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "No result is returned."
          }
        }
      }
    },
    "/api/v1/payruns/{id}/cancel": {
      "put": {
        "tags": [
          "Payruns"
        ],
        "summary": "Cancels the schedule of a pay run and delete's all it's payouts.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanEditPayruns",
        "operationId": "CancelPayrun",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The id of the pay run to cancel the schedule.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "No result is returned."
          }
        }
      }
    },
    "/api/v1/reports/{id}/initiate": {
      "put": {
        "tags": [
          "Reports"
        ],
        "summary": "Initiates the execution of a merchant report.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.\n\n<b>User permissions required</b>: CanCreateReports",
        "operationId": "InitiateReport",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the merchant report to execute.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/reports/{id}/result/{statementNumber}": {
      "get": {
        "tags": [
          "Reports"
        ],
        "summary": "Attempts to get the aggregated results of report execution. If the \r\nreport is still in progress an accepted response will be returned.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.\n\n<b>User permissions required</b>: CanViewReports",
        "operationId": "GetReportResult",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the merchant report to get the result for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "statementNumber",
            "in": "path",
            "description": "Optional. If set the result for this statement number \r\n            will be returned. If not set the latest report will be returned.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.ReportResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.ReportResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.ReportResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/rules": {
      "post": {
        "tags": [
          "Rules"
        ],
        "summary": "Creates a new rule for a MoneyMoov payment account.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanCreateRules",
        "operationId": "CreateRule",
        "requestBody": {
          "description": "The model of the new rule to create.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.RuleCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Rule"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Rule"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Rule"
                }
              }
            }
          },
          "201": {
            "description": "The newly created rule."
          }
        }
      },
      "get": {
        "tags": [
          "Rules"
        ],
        "summary": "Gets all the rules for a merchant.",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "GetRulesPaged",
        "parameters": [
          {
            "name": "merchantID",
            "in": "query",
            "description": "The merchant ID to retrieve the rules for.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page number from where records are retrieved. Note that the paging starts from page 1.\r\n            If a 0 is supplied it will be treated as a 1 and the first page is returned.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "The number of records to be retrieved from a page.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "The field(s) to sort by",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The search filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "archivedOnly",
            "in": "query",
            "description": "If set to true, returns only archived rules",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of the rules for the merchant.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.RulesPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.RulesPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.RulesPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/rules/{id}": {
      "put": {
        "tags": [
          "Rules"
        ],
        "summary": "Update an existing rule.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanEditRules",
        "operationId": "UpdateRule",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the rule to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The model with the updated rule fields.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.RuleUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated rule.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Rule"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Rule"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Rule"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Rules"
        ],
        "summary": "Get a single rule by ID.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanViewRules",
        "operationId": "GetRule",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the rule to get.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Rule"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Rule"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Rule"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Rules"
        ],
        "summary": "Deletes a rule and any associated events.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanDeleteRules",
        "operationId": "DeleteRule",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the rule to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "No result is returned."
          }
        }
      }
    },
    "/api/v1/rules/{id}/events": {
      "get": {
        "tags": [
          "Rules"
        ],
        "summary": "Gets a list of the events for a single rule.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanViewRules",
        "operationId": "GetRuleEvents",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the rule to get the events for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "The page number from where records are retrieved. Note that the paging starts from page 1.\r\n            If a 0 is supplied it will be treated as a 1 and the first page is returned.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "The number of records to be retrieved from a page.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "eventTypes",
            "in": "query",
            "description": "List of event types to filter the rule events based on type",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "None",
                  "Created",
                  "Approved",
                  "Edited",
                  "Disabled",
                  "ExecutionSuccess",
                  "ExecutionError",
                  "PayeeVerificationInitiated",
                  "PayeeVerificationComplete",
                  "PayeeVerificationFailed"
                ],
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of the events for the rule.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.RuleEventsPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.RuleEventsPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.Biz.BizModels.Paging.RuleEventsPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/rules/{id}/disable": {
      "put": {
        "tags": [
          "Rules"
        ],
        "summary": "Disables a rule.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token is required.\n\n<b>User permissions required</b>: CanEditRules",
        "operationId": "DisableRule",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the rule to disable.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The updated rule"
          }
        }
      }
    },
    "/api/v1/tokens": {
      "post": {
        "tags": [
          "Tokens"
        ],
        "summary": "Creates a new merchant API token.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanCreateTokens",
        "operationId": "CreateMerchantToken",
        "requestBody": {
          "description": "The details of the merchant token to add.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.TokenAdd"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantToken"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantToken"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantToken"
                }
              }
            }
          },
          "201": {
            "description": "Returns the newly created merchant API token."
          }
        }
      }
    },
    "/api/v1/tokens/authorise/{id}": {
      "post": {
        "tags": [
          "Tokens"
        ],
        "summary": "Authorises a merchant token.",
        "description": "Authorising a merchant token results it transitioning for disabled to enabled. Until the \r\n            token is enabled it will not be able to authorise requests.\n\n<b>Authorization</b>: Strong end user token is required.\n\n<b>User permissions required</b>: CanAuthoriseTokens",
        "operationId": "AuthoriseMerchantToken",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the merchant token to authorise.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "202": {
            "description": "Accepted"
          }
        }
      }
    },
    "/api/v1/tokens/{id}": {
      "delete": {
        "tags": [
          "Tokens"
        ],
        "summary": "Archives a merchant API token.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanArchiveTokens",
        "operationId": "ArchiveToken",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the token to archive.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "No result is returned."
          }
        }
      },
      "put": {
        "tags": [
          "Tokens"
        ],
        "summary": "Updates an existing merchant token.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanCreateTokens",
        "operationId": "UpdateMerchantToken",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID if the token to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The model with the updated token fields.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.TokenUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated merchant token.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantToken"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantToken"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantToken"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Tokens"
        ],
        "summary": "Gets the details of a merchant API token.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanViewTokens",
        "operationId": "GetToken",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the merchant token.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the merchant API token details.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantToken"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantToken"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantToken"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/transactions": {
      "get": {
        "tags": [
          "Transactions"
        ],
        "summary": "Get a list of the transactions for all payment accounts a user has access to.",
        "description": "Merchant tokens can only use this endpoint if an IP address whitelist is set.\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.",
        "operationId": "GetTransactionsPaged",
        "parameters": [
          {
            "name": "fromDate",
            "in": "query",
            "description": "The start date to retrieve transactions from.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number to retrieve.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of transactions per page.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The end date to retrieve transactions from.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "creditType",
            "in": "query",
            "description": "A credit filter to apply to the transactions to retrieve.",
            "schema": {
              "enum": [
                "All",
                "Payin",
                "Payout"
              ],
              "type": "string"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve transactions with a similar account name, description, their reference, your reference, etc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the transactions. Example \"Amount desc,Inserted asc\".",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "minAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve transactions that exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "maxAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve transactions that don't exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of the transactions for the payment account.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.TransactionPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.TransactionPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.TransactionPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/transactions/{accountID}": {
      "get": {
        "tags": [
          "Transactions"
        ],
        "summary": "Get a list of the transactions for a single payment account.",
        "description": "Merchant tokens can only use this endpoint if an IP address whitelist is set.\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.\n\n<b>User permissions required</b>: CanViewTransactions",
        "operationId": "GetTransactionsForAccountPaged",
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "description": "The ID of the account to retrieve transactions for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The start date to retrieve transactions from.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number to retrieve.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of transactions per page.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The end date to retrieve transactions from.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "creditType",
            "in": "query",
            "description": "A credit filter to apply to the transactions to retrieve.",
            "schema": {
              "enum": [
                "All",
                "Payin",
                "Payout"
              ],
              "type": "string"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve transactions with a similar account name, description, their reference, your reference, etc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the transactions. Example \"Amount desc,Inserted asc\".",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "minAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve transactions that exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "maxAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve transactions that don't exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of the transactions.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.TransactionPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.TransactionPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.TransactionPageResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/transactions/{accountID}/export": {
      "get": {
        "tags": [
          "Transactions"
        ],
        "summary": "Exports a list of the transactions for a single payment account to a CSV file.",
        "description": "Merchant tokens can only use this endpoint if an IP address whitelist is set.\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.\n\n<b>User permissions required</b>: CanViewTransactions",
        "operationId": "ExportTransactionsForAccount",
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "description": "The ID of the account to retrieve transactions for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The start date to retrieve transactions from.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number to retrieve.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of transactions per page.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The end date to retrieve transactions from.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "creditType",
            "in": "query",
            "description": "A credit filter to apply to the transactions to retrieve.",
            "schema": {
              "enum": [
                "All",
                "Payin",
                "Payout"
              ],
              "type": "string"
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "The text filter to apply to retrieve transactions with a similar account name, description, their reference, your reference, etc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Optional expression to sort the order of the transactions. Example \"Amount desc,Inserted asc\".",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "minAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve transactions that exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "maxAmount",
            "in": "query",
            "description": "The amount filter to apply to retrieve transactions that don't exceed this amount.",
            "schema": {
              "type": "number",
              "format": "double"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of the transactions in a CSV file.",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "202": {
            "description": "Accepted. The CSV file is being generated."
          }
        }
      }
    },
    "/api/v1/transactions/{accountID}/from/{sequenceNumber}": {
      "get": {
        "tags": [
          "Transactions"
        ],
        "summary": "Gets an account's transactions by sequence number",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.\n\n<b>User permissions required</b>: CanViewTransactions",
        "operationId": "GetTransactionsByAccountSequenceNumber",
        "parameters": [
          {
            "name": "accountID",
            "in": "path",
            "description": "The ID of the account to retrieve transactions for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of transactions per page.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "sequenceNumber",
            "in": "path",
            "description": "The account sequence number to retrieve the transactions from.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/transactions/{id}/tags": {
      "post": {
        "tags": [
          "Transactions"
        ],
        "summary": "Adds merchant tags to a transaction.",
        "description": "Merchant tokens can only use this endpoint if an IP address whitelist is set.\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.\n\n<b>User permissions required</b>: CanViewTransactions",
        "operationId": "AddTags",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the transaction to add tags.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The tags to add to the transaction.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Indicates the tags have been added to the transaction."
          }
        }
      }
    },
    "/api/v1/transactions/{id}/tag": {
      "delete": {
        "tags": [
          "Transactions"
        ],
        "summary": "Removes a tag from the transaction using the tag ID.",
        "description": "Merchant tokens can only use this endpoint if an IP address whitelist is set.\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.\n\n<b>User permissions required</b>: CanViewTransactions",
        "operationId": "RemoveTag",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the transaction to remove tag.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "tagID",
            "in": "query",
            "description": "The ID of the tag to remove.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Indicates the tag has been removed from the transaction."
          }
        }
      }
    },
    "/api/v1/transactions/{id}/proof": {
      "get": {
        "tags": [
          "Transactions"
        ],
        "summary": "Generates a proof of payment PDF document with the details of a transaction.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.\n\n<b>User permissions required</b>: CanViewTransactions",
        "operationId": "GetTransactionProof",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the transaction.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/transactions/detail/{id}": {
      "get": {
        "tags": [
          "Transactions"
        ],
        "summary": "Gets a transaction by its ID.",
        "description": "\n\n<b>Authorization</b>: End user or Merchant token (IP address whitelisted) is required.\n\n<b>User permissions required</b>: CanViewTransactions",
        "operationId": "GetTransactionByID",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the transaction.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Transaction"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Transaction"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Transaction"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/user": {
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Get the profile for the authenticated user.",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "GetUser",
        "responses": {
          "200": {
            "description": "A user profile model is returned.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/user/{merchantID}/userspaged": {
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Gets a paged list of users.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanViewUsers",
        "operationId": "GetUsersPaged",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant to get the users for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "search",
            "in": "query",
            "description": "A search filter to apply to the user list. Typically searches against first name, last name and email address.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "The sort expression for the result set, e.g., \"FirstName asc\".",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserPageResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserPageResponse"
                }
              }
            }
          },
          "201": {
            "description": "Returns a paged list of the users associated with the merchant."
          }
        }
      }
    },
    "/api/v1/user/{id}": {
      "put": {
        "tags": [
          "User"
        ],
        "summary": "Updates a user record and optionally accepts an invite to join a merchant.",
        "description": "\n\n<b>Authorization</b>: End user token is required.",
        "operationId": "UpdateUser",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the updated user profile.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/userinvites": {
      "post": {
        "tags": [
          "UserInvites"
        ],
        "summary": "Creates a new user invite and optionally sends the invitee an email with the details.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanEditRoles",
        "operationId": "CreateUserInvite",
        "requestBody": {
          "description": "The model holding the details of the user invite to create.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserInviteCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns an OK response.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserInvite"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserInvite"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserInvite"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/userinvites/{id}": {
      "get": {
        "tags": [
          "UserInvites"
        ],
        "summary": "Gets a user invite by ID.",
        "operationId": "GetUserInvite",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the user invite to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserInvite"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserInvite"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserInvite"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "UserInvites"
        ],
        "summary": "Deletes user invite.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanEditRoles",
        "operationId": "DeleteUserInvite",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "THe ID of the user invite to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "UserInvites"
        ],
        "summary": "Resend, or request a resend, of a user invite.",
        "operationId": "ResendUserInvite",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the user invite to resend.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/userinvites/{id}/details": {
      "get": {
        "tags": [
          "UserInvites"
        ],
        "summary": "Gets a user invite detailss by ID.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanEditRoles",
        "operationId": "GetUserInviteDetails",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the user invite to retrieve.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserInvite"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserInvite"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserInvite"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/userinvites/batchcreate": {
      "post": {
        "tags": [
          "UserInvites"
        ],
        "summary": "Creates user invites in batch.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanEditRoles",
        "operationId": "CreateUserInvites",
        "requestBody": {
          "description": "A list of objects containing the details of the user invites to create.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserInviteCreate"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A UserInvitesCreateResponse.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Api.Features.UserInvitesCreateResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Api.Features.UserInvitesCreateResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Api.Features.UserInvitesCreateResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/userinvites/authorise/{id}": {
      "post": {
        "tags": [
          "UserInvites"
        ],
        "summary": "Authorises a user invite.",
        "description": "Once a user invite is fully authorised the email will be sent to the user and the registration\r\n            link is activated.\n\n<b>Authorization</b>: Strong end user token is required.\n\n<b>User permissions required</b>: CanEditRoles",
        "operationId": "AuthoriseUserInvite",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the user invite to authorise.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "202": {
            "description": "Accepted"
          }
        }
      }
    },
    "/api/v1/webhooks/{merchantID}": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Get all configured webhooks for a merchant.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanViewWebhooks",
        "operationId": "GetWebhooks",
        "parameters": [
          {
            "name": "merchantID",
            "in": "path",
            "description": "The ID of the merchant to get the webhooks for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of configured webhooks.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Webhook"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Webhook"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Webhook"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/webhooks": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Creates a webhook for the given merchant.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanCreateWebhooks",
        "operationId": "CreateWebhook",
        "requestBody": {
          "description": "The WebHookRequest to be created.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.WebhookCreate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Webhook"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Webhook"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Webhook"
                }
              }
            }
          },
          "201": {
            "description": "The created webhook is returned."
          }
        },
        "callbacks": {
          "Payout": {
            "https://your.server.com/nofrixion/webhook": {
              "post": {
                "requestBody": {
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
                      }
                    }
                  }
                },
                "responses": {
                  "200": {
                    "description": "Your server implementation should return this HTTP status code if the data was received successfully"
                  },
                  "408": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "429": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "500": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "502": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "503": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "504": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  }
                }
              }
            }
          },
          "PaymentRequest": {
            "https://your.server.com/nofrixion/webhook": {
              "post": {
                "requestBody": {
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequest"
                      }
                    }
                  }
                },
                "responses": {
                  "200": {
                    "description": "Your server implementation should return this HTTP status code if the data was received successfully"
                  },
                  "408": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "429": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "500": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "502": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "503": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "504": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  }
                }
              }
            }
          },
          "Report": {
            "https://your.server.com/nofrixion/webhook": {
              "post": {
                "requestBody": {
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Report"
                      }
                    }
                  }
                },
                "responses": {
                  "200": {
                    "description": "Your server implementation should return this HTTP status code if the data was received successfully"
                  },
                  "408": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "429": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "500": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "502": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "503": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "504": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  }
                }
              }
            }
          },
          "Rule": {
            "https://your.server.com/nofrixion/webhook": {
              "post": {
                "requestBody": {
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Rule"
                      }
                    }
                  }
                },
                "responses": {
                  "200": {
                    "description": "Your server implementation should return this HTTP status code if the data was received successfully"
                  },
                  "408": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "429": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "500": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "502": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "503": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "504": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  }
                }
              }
            }
          },
          "TransactionPayin": {
            "https://your.server.com/nofrixion/webhook": {
              "post": {
                "requestBody": {
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Transaction"
                      }
                    }
                  }
                },
                "responses": {
                  "200": {
                    "description": "Your server implementation should return this HTTP status code if the data was received successfully"
                  },
                  "408": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "429": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "500": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "502": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "503": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "504": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  }
                }
              }
            }
          },
          "TransactionPayout": {
            "https://your.server.com/nofrixion/webhook": {
              "post": {
                "requestBody": {
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Transaction"
                      }
                    }
                  }
                },
                "responses": {
                  "200": {
                    "description": "Your server implementation should return this HTTP status code if the data was received successfully"
                  },
                  "408": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "429": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "500": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "502": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "503": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "504": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  }
                }
              }
            }
          },
          "Payrun": {
            "https://your.server.com/nofrixion/webhook": {
              "post": {
                "requestBody": {
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payrun"
                      }
                    }
                  }
                },
                "responses": {
                  "200": {
                    "description": "Your server implementation should return this HTTP status code if the data was received successfully"
                  },
                  "408": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "429": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "500": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "502": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "503": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "504": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  }
                }
              }
            }
          },
          "PaymentAccount": {
            "https://your.server.com/nofrixion/webhook": {
              "post": {
                "requestBody": {
                  "content": {
                    "application/json": {
                      "schema": {
                        "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
                      }
                    }
                  }
                },
                "responses": {
                  "200": {
                    "description": "Your server implementation should return this HTTP status code if the data was received successfully"
                  },
                  "408": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "429": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "500": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "502": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "503": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  },
                  "504": {
                    "description": "The callback attempt will be retried up to a maximum of 5 times with an exponential backoff."
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/webhooks/{id}": {
      "put": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Updates a webhook for the given merchant.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanCreateWebhooks",
        "operationId": "UpdateWebhook",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The id of the webhook to update.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The WebHookRequest to be updated.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.WebhookUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Webhook"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Webhook"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Webhook"
                }
              }
            }
          },
          "201": {
            "description": "The updated Webhook is returned."
          }
        }
      },
      "delete": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Deletes a webhook.",
        "description": "\n\n<b>Authorization</b>: End user token is required.\n\n<b>User permissions required</b>: CanDeleteWebhooks",
        "operationId": "DeleteWebhook",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the webhook to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "No result is returned."
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Microsoft.AspNetCore.Mvc.ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "NoFrixion.Biz.BizModels.Paging.MerchantDirectDebitMandatePageResponse": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Mandates.Mandate"
            },
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "description": "Current page number. Its 1 based. i.e firstpage is 1, secondpage is 2",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Page size",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total pages",
            "format": "int64"
          },
          "totalSize": {
            "type": "integer",
            "description": "Total count",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.Biz.BizModels.Paging.PaymentRequestPageResponse": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequest"
            },
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "description": "Current page number. Its 1 based. i.e firstpage is 1, secondpage is 2",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Page size",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total pages",
            "format": "int64"
          },
          "totalSize": {
            "type": "integer",
            "description": "Total count",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.Biz.BizModels.Paging.PayoutPageResponse": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
            },
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "description": "Current page number. Its 1 based. i.e firstpage is 1, secondpage is 2",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Page size",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total pages",
            "format": "int64"
          },
          "totalSize": {
            "type": "integer",
            "description": "Total count",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.Biz.BizModels.Paging.PayrunPageResponse": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payrun"
            },
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "description": "Current page number. Its 1 based. i.e firstpage is 1, secondpage is 2",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Page size",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total pages",
            "format": "int64"
          },
          "totalSize": {
            "type": "integer",
            "description": "Total count",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.Biz.BizModels.Paging.RuleEventsPageResponse": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.RuleEvent"
            },
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "description": "Current page number. Its 1 based. i.e firstpage is 1, secondpage is 2",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Page size",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total pages",
            "format": "int64"
          },
          "totalSize": {
            "type": "integer",
            "description": "Total count",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.Biz.BizModels.Paging.RulesPageResponse": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Rule"
            },
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "description": "Current page number. Its 1 based. i.e firstpage is 1, secondpage is 2",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Page size",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total pages",
            "format": "int64"
          },
          "totalSize": {
            "type": "integer",
            "description": "Total count",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.Biz.BizModels.Payments.CardPaymentResponse": {
        "type": "object",
        "properties": {
          "authorizedAmount": {
            "type": "string",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "nullable": true
          },
          "responseCode": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "requestID": {
            "type": "string",
            "nullable": true
          },
          "transactionID": {
            "type": "string",
            "nullable": true
          },
          "isPayerAuthenticationRequired": {
            "type": "boolean",
            "description": "Gets set to true if 3-D Secure payer authentication is required for a payment."
          },
          "isSoftDecline": {
            "type": "boolean",
            "description": "Gets set to true if the card processor flagged the transaction as having failed address or\r\ncard security number verification. If the payment was for a sale a soft decline will prevent\r\nthe transaction being captured. The merchant can set the ignore address verification flag \r\nif they want to allow soft declines to be accepted or false if not."
          },
          "payerAuthenticationUrl": {
            "type": "string",
            "description": "If a card payment response indicates a 3-D Secure payer authentication is required\r\nthis field holds the URL to redirect the payer to their issuing bank.",
            "nullable": true
          },
          "payerAuthenticationAccessToken": {
            "type": "string",
            "description": "If a card payment response indicates a 3-D Secure payer authentication is required\r\nthis field holds the access token to POST when performing the redirect.",
            "nullable": true
          },
          "payerAuthenticationWindowWidth": {
            "type": "integer",
            "description": "If a card payment response indicates a 3-D Secure payer authentication is required\r\nthis field holds the requested width of the iframe used to hold the challenge.",
            "format": "int32"
          },
          "payerAuthenticationWindowHeight": {
            "type": "integer",
            "description": "If a card payment response indicates a 3-D Secure payer authentication is required\r\nthis field holds the requested height of the iframe used to hold the challenge.",
            "format": "int32"
          },
          "payerAuthenticationMerchantData": {
            "type": "string",
            "description": "If a card payment response indicates a 3-D Secure payer authentication this field may \r\nget set in order to transfer information back to the \"authenticationcallback\" method\r\nthat gets called automatically after a successful payer authentication attempt.",
            "nullable": true
          },
          "paymentRequestCallbackUrl": {
            "type": "string",
            "description": "The callback URL that was set when the payment request was created. Payers will be \r\nredirected to this URL after a successful card authorisation.",
            "nullable": true
          },
          "threeDSRedirectUrl": {
            "type": "string",
            "description": "Checkout.com require a redirect for 3DS authentication. This link will contain the \r\nlink the payer needs to be redirected to.",
            "nullable": true
          },
          "paymentRequestID": {
            "type": "string",
            "format": "uuid"
          },
          "responseType": {
            "enum": [
              "None",
              "CardPayerAuthenticationSetupResponse",
              "CardPaymentResponse",
              "PaymentInitiationResponse"
            ],
            "type": "string",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.Biz.BizModels.Payments.CardPublicKey": {
        "type": "object",
        "properties": {
          "jwt": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Api.Features.Beneficiaries.BeneficiariesCreateResponse": {
        "type": "object",
        "properties": {
          "beneficiaries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
            },
            "nullable": true
          },
          "failedBeneficiaries": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Api.Features.Beneficiaries.FailedBeneficiary"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Api.Features.Beneficiaries.FailedBeneficiary": {
        "required": [
          "beneficiary",
          "problem"
        ],
        "type": "object",
        "properties": {
          "beneficiary": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BeneficiaryCreate"
          },
          "problem": {
            "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Api.Features.FailedUserInvite": {
        "required": [
          "problem",
          "userInvite"
        ],
        "type": "object",
        "properties": {
          "userInvite": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserInviteCreate"
          },
          "problem": {
            "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Api.Features.PaymentRequests.FailedPaymentRequest": {
        "required": [
          "paymentRequest",
          "problem"
        ],
        "type": "object",
        "properties": {
          "paymentRequest": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestCreate"
          },
          "problem": {
            "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Api.Features.PaymentRequests.PaymentRequestsCreateResponse": {
        "type": "object",
        "properties": {
          "paymentRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequest"
            },
            "nullable": true
          },
          "failedPaymentRequests": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Api.Features.PaymentRequests.FailedPaymentRequest"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Api.Features.Payouts.FailedPayout": {
        "type": "object",
        "properties": {
          "payout": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
          },
          "problem": {
            "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Api.Features.Permissions.FailedRole": {
        "required": [
          "problem",
          "role"
        ],
        "type": "object",
        "properties": {
          "role": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Roles.RoleCreate"
          },
          "problem": {
            "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Api.Features.Permissions.RolesCreateResponse": {
        "type": "object",
        "properties": {
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Roles.Role"
            },
            "nullable": true
          },
          "failedRoles": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Api.Features.Permissions.FailedRole"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Api.Features.UserInvitesCreateResponse": {
        "type": "object",
        "properties": {
          "userInvites": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserInvite"
            },
            "nullable": true
          },
          "failedUserInvites": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Api.Features.FailedUserInvite"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.AccountIdentifier": {
        "required": [
          "currency"
        ],
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "Unknown",
              "SCAN",
              "IBAN",
              "DD",
              "BTC",
              "BIC"
            ],
            "type": "string",
            "description": "The type of the account identifier.",
            "readOnly": true
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "The currency for the account."
          },
          "bic": {
            "type": "string",
            "nullable": true
          },
          "iban": {
            "type": "string",
            "nullable": true
          },
          "sortCode": {
            "type": "string",
            "nullable": true
          },
          "accountNumber": {
            "type": "string",
            "nullable": true
          },
          "summary": {
            "type": "string",
            "description": "Summary of the account identifier's most important properties.",
            "nullable": true,
            "readOnly": true
          },
          "displaySummary": {
            "type": "string",
            "description": "Summary of the account identifier's most important properties.",
            "nullable": true,
            "readOnly": true
          },
          "displayScanSummary": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "displayBicSummary": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.AccountIdentifierCreate": {
        "type": "object",
        "properties": {
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "The currency for the account.",
            "nullable": true
          },
          "bic": {
            "type": "string",
            "nullable": true
          },
          "iban": {
            "type": "string",
            "nullable": true
          },
          "sortCode": {
            "type": "string",
            "nullable": true
          },
          "accountNumber": {
            "type": "string",
            "nullable": true
          },
          "summary": {
            "type": "string",
            "description": "Summary of the account identifier's most important properties.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.AccountUpdate": {
        "type": "object",
        "properties": {
          "accountID": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "accountName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Approve.Authorisation": {
        "type": "object",
        "properties": {
          "user": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.AuthorisationSettings.MerchantAuthorisationRoleSetting": {
        "type": "object",
        "properties": {
          "roleID": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "merchantID": {
            "type": "string",
            "format": "uuid"
          },
          "minNumberAuthorisers": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "maxNumberAuthorisers": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "inserted": {
            "type": "string",
            "format": "date-time"
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.AuthorisationSettings.MerchantAuthorisationSetting": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "format": "uuid"
          },
          "amountLower": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "amountUpper": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "beneficiariesOnly": {
            "type": "boolean"
          },
          "numberOfAuthorisers": {
            "type": "integer",
            "format": "int32"
          },
          "lastEditorCantAuthorise": {
            "type": "boolean"
          },
          "authorisationType": {
            "enum": [
              "None",
              "Payout",
              "Rule",
              "Beneficiary",
              "Payrun",
              "MerchantToken",
              "UserInvite",
              "RoleUser"
            ],
            "type": "string"
          },
          "roleSettings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.AuthorisationSettings.MerchantAuthorisationRoleSetting"
            },
            "nullable": true
          },
          "inserted": {
            "type": "string",
            "format": "date-time"
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.AuthorisationStatus": {
        "type": "object",
        "properties": {
          "authorisations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Approve.Authorisation"
            },
            "description": "A list of users who have successfully authorised the latest version of the parent model.",
            "nullable": true
          },
          "canAuthorise": {
            "type": "boolean",
            "description": "True if the parent model can be authorised by the user who loaded it."
          },
          "canUpdate": {
            "type": "boolean",
            "description": "True if the parent model can be updated by the user who loaded it."
          },
          "hasCurrentUserAuthorised": {
            "type": "boolean",
            "description": "True if the parent model was loaded for a user and that user has already authorised the latest version."
          },
          "authorisersRequiredCount": {
            "type": "integer",
            "description": "The number of authorisers required for the parent model. Is determined by business settings\r\non the source account and/or merchant.",
            "format": "int32"
          },
          "authorisersCompletedCount": {
            "type": "integer",
            "description": "The number of distinct authorisers that have authorised the parent model.",
            "format": "int32"
          },
          "authenticationMethods": {
            "type": "array",
            "items": {
              "enum": [
                "None",
                "WebAuthn",
                "OneTimePassword"
              ],
              "type": "string"
            },
            "description": "A list of authentication types allowed to authorise the parent model.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.BatchPayout": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "approveUrl": {
            "type": "string",
            "description": "This field is used when returning a batch payout record to a client. If set it holds the URL\r\nthe user needs to visit in order to complete a strong authentication check in order to approve \r\nthe batch payouts.",
            "nullable": true
          },
          "payouts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Beneficiary": {
        "required": [
          "currency",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "description": "Gets or Sets the merchant id.",
            "format": "uuid"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "The descriptive name for the beneficiary."
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "Gets or Sets the currency."
          },
          "destination": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Counterparty"
          },
          "approvalCallbackUrl": {
            "type": "string",
            "nullable": true
          },
          "isEnabled": {
            "type": "boolean"
          },
          "authorisations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Approve.Authorisation"
            },
            "description": "A list of users who have successfully authorised the latest version of the beneficiary.",
            "nullable": true
          },
          "canAuthorise": {
            "type": "boolean",
            "description": "True if the beneficiary can be authorised by the user who loaded it."
          },
          "canUpdate": {
            "type": "boolean",
            "description": "True if the beneficiary can be updated by the user who loaded it."
          },
          "hasCurrentUserAuthorised": {
            "type": "boolean",
            "description": "True if the beneficiary was loaded for a user and that user has already authorised the latest version of the beneficiary."
          },
          "authorisersRequiredCount": {
            "type": "integer",
            "description": "The number of authorisers required for this beneficiary. Is determined by business settings\r\non the source account and/or merchant.",
            "format": "int32"
          },
          "authorisersCompletedCount": {
            "type": "integer",
            "description": "The number of distinct authorisers that have authorised the beneficiary.",
            "format": "int32"
          },
          "authenticationMethods": {
            "type": "array",
            "items": {
              "enum": [
                "None",
                "WebAuthn",
                "OneTimePassword"
              ],
              "type": "string"
            },
            "description": "A list of authentication types allowed to authorise the payout.",
            "nullable": true
          },
          "createdByEmailAddress": {
            "type": "string",
            "nullable": true
          },
          "nonce": {
            "type": "string",
            "nullable": true
          },
          "inserted": {
            "type": "string",
            "format": "date-time"
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time"
          },
          "lastAuthorised": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdBy": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
          },
          "theirReference": {
            "type": "string",
            "description": "The reference that will be used by default as TheirReference when creating payouts to this beneficiary\r\nif no TheirReference is specified for the payout.",
            "nullable": true
          },
          "beneficiaryEvents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BeneficiaryEvent"
            },
            "nullable": true
          },
          "sourceAccounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.BeneficiaryCreate": {
        "required": [
          "currency",
          "destination",
          "merchantID",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "description": "Gets or Sets the merchant id.",
            "format": "uuid"
          },
          "sourceAccountIDs": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "nullable": true
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "The descriptive name for the beneficiary."
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "Gets or Sets the currency."
          },
          "destination": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.CounterpartyCreate"
          },
          "theirReference": {
            "type": "string",
            "description": "Optional reference that will be used by default as TheirReference when creating payouts to this beneficiary \r\nif no TheirReference is specified for the payout.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.BeneficiaryEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "beneficiaryID": {
            "type": "string",
            "format": "uuid"
          },
          "eventStatus": {
            "type": "string",
            "nullable": true
          },
          "eventType": {
            "enum": [
              "Unknown",
              "Create",
              "Authorise",
              "Update",
              "Disable",
              "Enable",
              "Archive",
              "PayeeVerificationInitiated",
              "PayeeVerificationComplete",
              "PayeeVerificationFailed"
            ],
            "type": "string"
          },
          "userID": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "authoriserHash": {
            "type": "string",
            "nullable": true
          },
          "errorReason": {
            "type": "string",
            "nullable": true
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "beneficiaryName": {
            "type": "string",
            "nullable": true
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "nullable": true
          },
          "accountID": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "accountName": {
            "type": "string",
            "nullable": true
          },
          "iban": {
            "type": "string",
            "nullable": true
          },
          "accountNumber": {
            "type": "string",
            "nullable": true
          },
          "sortCode": {
            "type": "string",
            "nullable": true
          },
          "bic": {
            "type": "string",
            "nullable": true
          },
          "bitcoinAddress": {
            "type": "string",
            "nullable": true
          },
          "inserted": {
            "type": "string",
            "format": "date-time"
          },
          "sourceAccountsHash": {
            "type": "string",
            "description": "A hash of the source account ID's that are authorised to use the beneficiary.\r\nAn empty value means the beneficairy can be used by all the merchant's source\r\naccounts.",
            "nullable": true
          },
          "isEnabled": {
            "type": "boolean"
          },
          "isArchived": {
            "type": "boolean"
          },
          "supplierPayeeVerificationResult": {
            "type": "string",
            "nullable": true
          },
          "countryCode": {
            "type": "string",
            "nullable": true
          },
          "addressLine1": {
            "type": "string",
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "nullable": true
          },
          "postTown": {
            "type": "string",
            "nullable": true
          },
          "postCode": {
            "type": "string",
            "nullable": true
          },
          "theirReference": {
            "type": "string",
            "nullable": true
          },
          "payeeVerifiedAccountName": {
            "type": "string",
            "description": "If this event is a payee verification complete event and the result is a close match,\r\nthis contains the actual verified name returned by the payee verification supplier.",
            "nullable": true
          },
          "user": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.BeneficiaryGroup": {
        "required": [
          "groupName",
          "merchantID"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "description": "Gets or Sets the merchant id.",
            "format": "uuid"
          },
          "groupName": {
            "minLength": 1,
            "type": "string",
            "description": "The descriptive name for the beneficiary group."
          },
          "inserted": {
            "type": "string",
            "description": "Timestamp indicating when the group was created.",
            "format": "date-time"
          },
          "lastUpdated": {
            "type": "string",
            "description": "Timestamp indicating when the group was last updated.",
            "format": "date-time"
          },
          "groupMembers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BeneficiaryGroupMember"
            },
            "description": "The existing group members.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.BeneficiaryGroupMember": {
        "required": [
          "beneficiaryGroupID",
          "beneficiaryID"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "beneficiaryID": {
            "type": "string",
            "description": "The ID of the beneficiary for the membership.",
            "format": "uuid"
          },
          "beneficiaryGroupID": {
            "type": "string",
            "description": "The ID of the beneficiary group for the membership.",
            "format": "uuid"
          },
          "inserted": {
            "type": "string",
            "description": "Timestamp indicating when the group was created.",
            "format": "date-time"
          },
          "beneficiary": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.BeneficiaryGroupPageResponse": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.BeneficiaryGroup"
            },
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "description": "Current page number. Its 1 based. i.e firstpage is 1, secondpage is 2",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Page size",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total pages",
            "format": "int64"
          },
          "totalSize": {
            "type": "integer",
            "description": "Total count",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.BeneficiaryPageResponse": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
            },
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "description": "Current page number. Its 1 based. i.e firstpage is 1, secondpage is 2",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Page size",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total pages",
            "format": "int64"
          },
          "totalSize": {
            "type": "integer",
            "description": "Total count",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.BeneficiaryUpdate": {
        "type": "object",
        "properties": {
          "sourceAccountIDs": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "ID of the accounts which are authorised to act as a source for the beneficiary.",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "The descriptive name for the beneficiary.",
            "nullable": true
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "nullable": true
          },
          "destination": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Counterparty"
          },
          "theirReference": {
            "type": "string",
            "description": "The default reference that will be used by default as TheirReference when creating payouts to this beneficiary\r\nif no TheirReference is specified for the payout.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.CardCustomerToken": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique ID of the card token that has been stored for the customer. This is \r\nthe ID to supply when requesting an authorisation on behalf of the customer.",
            "format": "uuid"
          },
          "maskedCardNumber": {
            "type": "string",
            "nullable": true
          },
          "lastFourDigits": {
            "type": "string",
            "nullable": true
          },
          "expiryMonth": {
            "type": "string",
            "nullable": true
          },
          "expiryYear": {
            "type": "string",
            "nullable": true
          },
          "paymentRequestID": {
            "type": "string",
            "format": "uuid"
          },
          "customerEmailAddress": {
            "type": "string",
            "description": "When creating a tokenised card the payer's email address must be supplied. This is\r\nused as away to group card tokens for an end user. For customer initiated transactions \r\nit is important that the email address supplied has been verified to belong to the user\r\ninitiating the payment.",
            "format": "email",
            "nullable": true
          },
          "cardType": {
            "type": "string",
            "description": "The type of the tokenised card, e.g. Visa, MasterCard etc. It's possible this could\r\nbe empty if the card type could not be identified. There is no hard and fast way to\r\nknow for sure to know the type of card.",
            "nullable": true
          },
          "merchantID": {
            "type": "string",
            "format": "uuid"
          },
          "inserted": {
            "type": "string",
            "format": "date-time"
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.ClientSessionTimeout": {
        "type": "object",
        "properties": {
          "merchantID": {
            "type": "string",
            "description": "The merchant ID for which the session timeout applies.",
            "format": "uuid"
          },
          "timeoutSeconds": {
            "type": "integer",
            "description": "The number of seconds a session for this user should last before expiring.",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Counterparty": {
        "type": "object",
        "properties": {
          "accountID": {
            "type": "string",
            "description": "An optional ID of an internal account the counterparty is associated with. If set\r\nit will take precedence over any other destination details set for the counterparty.",
            "format": "uuid",
            "nullable": true
          },
          "internalAccountName": {
            "type": "string",
            "description": "If the counterparty is an internal account, this is the name of the account.",
            "nullable": true
          },
          "beneficiaryID": {
            "type": "string",
            "description": "Optional ID of a Beneficiary to use for the counterparty destination. If set\r\nit will take precedence over any other destination details, except for AccountID,\r\nset for the counterparty.",
            "format": "uuid",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "The name of the counterparty. For a person this should be their full name. For a \r\ncompany this should be their registered or trading name.",
            "nullable": true
          },
          "emailAddress": {
            "type": "string",
            "description": "An email address for the counterparty. Optional to set and depending on the payment\r\nnetwork does not always get set for pay ins.",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "description": "A phone number for the counterparty. Optional to set and depending on the payment\r\nnetwork does not always get set for pay ins.",
            "nullable": true
          },
          "countryCode": {
            "type": "string",
            "description": "A country code for the counterparty. Optional to set and depending on the payment\r\nnetwork does not always get set for pay ins",
            "nullable": true
          },
          "addressLine1": {
            "type": "string",
            "description": "Address line 1 for the counterparty.",
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "description": "Address line 2 for the counterparty.",
            "nullable": true
          },
          "postCode": {
            "type": "string",
            "description": "Post code for the counterparty.",
            "nullable": true
          },
          "postTown": {
            "type": "string",
            "description": "Post town for the counterparty.",
            "nullable": true
          },
          "identifier": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.AccountIdentifier"
          },
          "payeeVerificationStatus": {
            "enum": [
              "None",
              "NotRequired",
              "Pending",
              "Completed",
              "Failed",
              "TimedOut"
            ],
            "type": "string",
            "description": "Current status of the payee verification check"
          },
          "payeeVerificationResult": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayeeVerification.PayeeVerificationResult"
          },
          "summary": {
            "type": "string",
            "description": "Gets a convenient summary representation of the counterparty.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.CounterpartyCreate": {
        "type": "object",
        "properties": {
          "accountID": {
            "type": "string",
            "description": "If set it indicates that the counterparty is an internal belonging to the \r\nsame merchant as the source account.",
            "format": "uuid",
            "nullable": true
          },
          "beneficiaryID": {
            "type": "string",
            "description": "If set it indicates that the counterparty is a beneficiary of the merchant.",
            "format": "uuid",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "The name of the counterparty. For a person this should be their full name. For a \r\ncompany this should be their registered or trading name.\r\n\n\r\nWhen used to create a payout, the following validations might be applied upon submission depending on the processor:\r\n\n\r\n**Length**: 1 - 35 characters\r\n\n\r\n**Allowed characters**: \r\n```\r\na b c d e f g h i j k l m n o p q r s t u v w x y z\r\nA B C D E F G H I J K L M N O P Q R S T U V W X Y Z\r\n0 1 2 3 4 5 6 7 8 9\r\n/ - ? : ( ) . , ' + _\r\nSpace\r\n```\n\r\n**Illegal characters**:\r\n- Fields composed of only blank characters.\r\n- Fields starting with colon (:) or hyphen (-).\r\n",
            "nullable": true
          },
          "emailAddress": {
            "type": "string",
            "description": "An email address for the counterparty. Optional to set and depending on the payment\r\nnetwork does not always get set for pay ins.",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "description": "A phone number for the counterparty. Optional to set and depending on the payment\r\nnetwork does not always get set for pay ins.",
            "nullable": true
          },
          "countryCode": {
            "type": "string",
            "description": "A country code for the counterparty. Optional to set and depending on the payment\r\nnetwork does not always get set for pay ins",
            "nullable": true
          },
          "addressLine1": {
            "type": "string",
            "description": "Address line 1 for the counterparty.",
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "description": "Address line 2 for the counterparty.",
            "nullable": true
          },
          "postCode": {
            "type": "string",
            "description": "Post code for the counterparty.",
            "nullable": true
          },
          "postTown": {
            "type": "string",
            "description": "Post town for the counterparty.",
            "nullable": true
          },
          "identifier": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.AccountIdentifierCreate"
          },
          "summary": {
            "type": "string",
            "description": "Gets a convenient summary representation of the counterparty.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Currency.CurrencyInfo": {
        "type": "object",
        "properties": {
          "code": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string"
          },
          "iso4217AlphaCode": {
            "type": "string",
            "nullable": true
          },
          "iso4217NumericCode": {
            "type": "string",
            "nullable": true
          },
          "decimals": {
            "type": "integer",
            "format": "int32"
          },
          "symbol": {
            "type": "string",
            "nullable": true
          },
          "isFiat": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.DirectDebit.DirectDebitPayment": {
        "type": "object",
        "properties": {
          "processor": {
            "enum": [
              "None",
              "CyberSource",
              "Checkout",
              "Stripe",
              "Modulr",
              "Plaid",
              "Yapily",
              "Nofrixion",
              "Bitcoin",
              "BitcoinTestnet",
              "BankingCircle",
              "BankingCircleAgency",
              "Simulator",
              "Lightning",
              "LightningTestnet",
              "BankingCircleDirectDebit",
              "Technoxander"
            ],
            "type": "string",
            "description": "The payment processor used for the Direct Debit payment attempt.",
            "nullable": true
          },
          "paymentID": {
            "type": "string",
            "description": "The ID with which the payment processor identifies the payment.",
            "nullable": true
          },
          "paymentReference": {
            "type": "string",
            "description": "The reference assigned by the processor to the payment.",
            "nullable": true
          },
          "lastEventType": {
            "enum": [
              "unknown",
              "card_payer_authentication_setup",
              "card_authorization",
              "card_sale",
              "card_capture",
              "card_void",
              "pisp_initiate",
              "pisp_callback",
              "lightning_invoice_created",
              "lightning_invoice_paid",
              "card_payer_authentication_failure",
              "pisp_webhook",
              "pisp_settle",
              "pisp_settle_failure",
              "pisp_refund_initiated",
              "pisp_refund_settled",
              "pisp_refund_cancelled",
              "card_webhook",
              "card_refund",
              "lightning_invoice_expired",
              "lightning_invoice_cancelled",
              "direct_debit_initiate",
              "direct_debit_create",
              "direct_debit_state_change",
              "direct_debit_paid",
              "direct_debit_failed",
              "card_refund_pending",
              "card_refund_settled",
              "card_refund_declined"
            ],
            "type": "string",
            "description": "The last payment request event type for the attempt. Useful for displaying a status.",
            "nullable": true
          },
          "initiatedAt": {
            "type": "string",
            "description": "Date and time in which the payment was created.",
            "format": "date-time",
            "nullable": true
          },
          "submittedAt": {
            "type": "string",
            "description": "Date and time in which the payment was submitted to the processor.",
            "format": "date-time",
            "nullable": true
          },
          "completedAt": {
            "type": "string",
            "description": "Date and time in which the processor successfully completed the payment.",
            "format": "date-time",
            "nullable": true
          },
          "failedAt": {
            "type": "string",
            "description": "Date and time of the last failure reported by the processor.",
            "format": "date-time",
            "nullable": true
          },
          "collectionDate": {
            "type": "string",
            "description": "Original date and time requested by the user for the payment to be collected.\r\nMight differ from the actual payment date. See NoFrixion.MoneyMoov.Models.DirectDebit.DirectDebitPayment.CompletedAt.",
            "format": "date-time",
            "nullable": true
          },
          "merchantMandate": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Mandates.Mandate"
          },
          "destinationIBAN": {
            "type": "string",
            "description": "IBAN of the account that received the payment.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Contains information about a Direct Debit payment attempt for a payment request."
      },
      "NoFrixion.MoneyMoov.Models.DirectDebitBatchSubmitItem": {
        "required": [
          "mandateID",
          "paymentRequestID"
        ],
        "type": "object",
        "properties": {
          "paymentRequestID": {
            "type": "string",
            "description": "The ID of the payment request to submit for direct debit.",
            "format": "uuid"
          },
          "mandateID": {
            "type": "string",
            "description": "The ID of the Direct Debit mandate to use for this payment.",
            "format": "uuid"
          },
          "submitAfter": {
            "type": "string",
            "description": "Optional. Defines when this payment should be earliest submitted\r\nto the customer's bank account. If not specified, payments will be\r\nsubmitted as soon as possible.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.DirectDebitBatchSubmitResponse": {
        "type": "object",
        "properties": {
          "successfulSubmissions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.SuccessfulDirectDebitSubmission"
            },
            "description": "List of successfully submitted direct debit payments.",
            "nullable": true
          },
          "failedSubmissions": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.FailedDirectDebitSubmission"
            },
            "description": "Dictionary of failed submissions, keyed by the index (1-based) in the original request.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.FailedDirectDebitSubmission": {
        "required": [
          "problem",
          "submissionItem"
        ],
        "type": "object",
        "properties": {
          "submissionItem": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.DirectDebitBatchSubmitItem"
          },
          "problem": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.NoFrixionProblem"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.FxRate": {
        "type": "object",
        "properties": {
          "sourceCurrency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string"
          },
          "destinationCurrency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string"
          },
          "exchangeRate": {
            "type": "number",
            "description": "The price at which the transaction will buy the source currency \r\nusing the destination currency.",
            "format": "double"
          },
          "quoteID": {
            "type": "string",
            "nullable": true
          },
          "expiryTime": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Represents a Foreign Exchange (FX) rate."
      },
      "NoFrixion.MoneyMoov.Models.GenerateStatementRequest": {
        "type": "object",
        "properties": {
          "accountID": {
            "type": "string",
            "description": "ID of the account.",
            "format": "uuid"
          },
          "fromDate": {
            "type": "string",
            "description": "Minimum transaction date for the statement.",
            "format": "date-time"
          },
          "toDate": {
            "type": "string",
            "description": "Maximum transaction date for the statement.",
            "format": "date-time"
          },
          "format": {
            "enum": [
              "Pdf",
              "Csv"
            ],
            "type": "string",
            "description": "File format to save the statement as. Defaults to PDF."
          }
        },
        "additionalProperties": false,
        "description": "Model for generating a transaction statement."
      },
      "NoFrixion.MoneyMoov.Models.IPaymentResponse": {
        "type": "object",
        "properties": {
          "paymentRequestID": {
            "type": "string",
            "format": "uuid"
          },
          "responseType": {
            "enum": [
              "None",
              "CardPayerAuthenticationSetupResponse",
              "CardPaymentResponse",
              "PaymentInitiationResponse"
            ],
            "type": "string",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Invoices.InvoicePayment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "invoiceID": {
            "type": "string",
            "format": "uuid"
          },
          "amount": {
            "type": "number",
            "format": "double"
          },
          "payoutID": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Invoices.PayrunInvoiceMinimal": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The invoice id.",
            "format": "uuid"
          },
          "externalInvoiceID": {
            "type": "string",
            "description": "If this invoice was created from an external invoice, this will be the ID of the external invoice.",
            "nullable": true
          },
          "externalInvoiceProvider": {
            "type": "string",
            "description": "If this invoice was created from an external invoice, this will be the provider of the external invoice.\r\nE.g., \"Xero\", \"QuickBooks\", etc.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.LastTransaction": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "format": "double"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Mandates.Mandate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Internal ID of the mandate.",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "description": "Internal ID of this mandate's merchant.",
            "format": "uuid"
          },
          "supplierName": {
            "enum": [
              "None",
              "CyberSource",
              "Checkout",
              "Stripe",
              "Modulr",
              "Plaid",
              "Yapily",
              "Nofrixion",
              "Bitcoin",
              "BitcoinTestnet",
              "BankingCircle",
              "BankingCircleAgency",
              "Simulator",
              "Lightning",
              "LightningTestnet",
              "BankingCircleDirectDebit",
              "Technoxander"
            ],
            "type": "string",
            "description": "Name of the supplier used to create this mandate.",
            "nullable": true
          },
          "supplierMandateID": {
            "type": "string",
            "description": "ID that the supplier assigned to this mandate.",
            "nullable": true
          },
          "supplierBankAccountID": {
            "type": "string",
            "description": "ID that the supplier assigned to this mandate's\r\nbank account.",
            "nullable": true
          },
          "supplierCustomerID": {
            "type": "string",
            "description": "ID that the supplier assigned to this mandate's\r\ncustomer.",
            "nullable": true
          },
          "customerFirstName": {
            "type": "string",
            "description": "Customer's first name.",
            "nullable": true
          },
          "customerLastName": {
            "type": "string",
            "description": "Customer's last name.",
            "nullable": true
          },
          "customerCountryCode": {
            "type": "string",
            "description": "Customer's country of residence code.",
            "nullable": true
          },
          "customerCountryName": {
            "type": "string",
            "description": "Customer's country of residence.",
            "nullable": true
          },
          "customerCity": {
            "type": "string",
            "description": "Customer's city of residence.",
            "nullable": true
          },
          "customerEmailAddress": {
            "type": "string",
            "description": "Customer's email address.",
            "nullable": true
          },
          "customerIban": {
            "type": "string",
            "description": "Customer's IBAN in case of EUR account.",
            "nullable": true
          },
          "customerAccountNumber": {
            "type": "string",
            "description": "Customer's account number in case of GBP account.",
            "nullable": true
          },
          "customerSortCode": {
            "type": "string",
            "description": "Customer's sort code in case of GBP account.",
            "nullable": true
          },
          "reference": {
            "type": "string",
            "description": "Reference assigned to this mandate.",
            "nullable": true
          },
          "isRecurring": {
            "type": "boolean",
            "description": "Whether this mandate is single-use or recurring."
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "Currency of this mandate."
          },
          "approvedAt": {
            "type": "string",
            "description": "Date at which the supplier approved this mandate.",
            "format": "date-time",
            "nullable": true
          },
          "supplierStatus": {
            "type": "string",
            "description": "Last status that the supplier reported for this mandate.",
            "nullable": true
          },
          "status": {
            "enum": [
              "Unknown",
              "Pending",
              "Active",
              "Expired",
              "Failed"
            ],
            "type": "string",
            "description": "General status of this mandate."
          },
          "inserted": {
            "type": "string",
            "description": "The timestamp this mandate was created at.",
            "format": "date-time"
          },
          "lastUpdated": {
            "type": "string",
            "description": "The timestamp this mandate was last updated at.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Represents a Direct Debit mandate entity that contains customer,\r\n bank account and mandate information."
      },
      "NoFrixion.MoneyMoov.Models.Mandates.MandateCreate": {
        "required": [
          "addressLine1",
          "city",
          "countryCode",
          "currency",
          "emailAddress",
          "firstName",
          "lastName",
          "merchantID",
          "postalCode"
        ],
        "type": "object",
        "properties": {
          "merchantID": {
            "type": "string",
            "description": "Merchant ID that this mandate is associated with.",
            "format": "uuid"
          },
          "firstName": {
            "maxLength": 256,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9\\-,'. ]+$",
            "type": "string",
            "description": "Customer's first name."
          },
          "lastName": {
            "maxLength": 256,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9\\-,'. ]+$",
            "type": "string",
            "description": "Customer's last name."
          },
          "addressLine1": {
            "maxLength": 100,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9\\-,'./ ]+$",
            "type": "string",
            "description": "First line of the customer's address."
          },
          "addressLine2": {
            "maxLength": 100,
            "pattern": "^[a-zA-Z0-9\\-,'./ ]+$",
            "type": "string",
            "description": "Second line of the customer's address. Optional.",
            "nullable": true
          },
          "postalCode": {
            "maxLength": 10,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9\\-,. /]+$",
            "type": "string",
            "description": "Customer's postal code."
          },
          "city": {
            "maxLength": 128,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9\\-,'. ]+$",
            "type": "string",
            "description": "Customer's city."
          },
          "countryCode": {
            "maxLength": 2,
            "minLength": 1,
            "type": "string",
            "description": "2-character country code of the customer's bank account."
          },
          "iban": {
            "maxLength": 34,
            "type": "string",
            "description": "IBAN of the customer's bank account in case of EUR account.",
            "nullable": true
          },
          "accountNumber": {
            "maxLength": 8,
            "pattern": "^[0-9]*$",
            "type": "string",
            "description": "Account number of the customer's bank account in case of GBP account.",
            "nullable": true
          },
          "sortCode": {
            "maxLength": 6,
            "pattern": "^[0-9\\-]*$",
            "type": "string",
            "description": "Sort code of the customer's bank account in case of GBP account.",
            "nullable": true
          },
          "emailAddress": {
            "minLength": 1,
            "type": "string",
            "description": "Customer's email address.",
            "format": "email"
          },
          "reference": {
            "maxLength": 128,
            "type": "string",
            "description": "Field that you can use as reference.",
            "nullable": true
          },
          "isRecurring": {
            "type": "boolean",
            "description": "Indicates whether this mandate is single-use or recurring.",
            "nullable": true
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "Currency of the mandate."
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Merchant": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique ID for the merchant.",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "The registered business name of the merchant.",
            "nullable": true
          },
          "companyID": {
            "type": "string",
            "description": "The Company ID recorded in the Compliance system.",
            "format": "uuid",
            "nullable": true
          },
          "merchantCategoryCode": {
            "type": "string",
            "description": "The industry code that represents the merchant's primary trading activity.",
            "nullable": true
          },
          "shortName": {
            "type": "string",
            "description": "A URL friendly shortish name for the merchant. Principal purpose is\r\nto use in the hosted payment page URL.",
            "nullable": true
          },
          "tradingName": {
            "type": "string",
            "description": "An optional trading name. If not set the Name field will be used .",
            "nullable": true
          },
          "paymentAccountLimit": {
            "type": "integer",
            "description": "The maximum number of payment accounts that can be created for the Merchant.\r\nTo increase the limit contact support.",
            "format": "int32"
          },
          "inserted": {
            "type": "string",
            "description": "Timestamp the merchant was added to MoneyMoov.",
            "format": "date-time"
          },
          "jurisdiction": {
            "enum": [
              "IE",
              "UK",
              "EU"
            ],
            "type": "string",
            "description": "The jurisdiction the merchant entity is incorporated or established in."
          },
          "hostedPayVersion": {
            "type": "integer",
            "description": "The version of the hosted payment page to use with the merchant.",
            "format": "int32"
          },
          "webHookLimit": {
            "type": "integer",
            "description": "The maximum number of web hooks that can be created for the Merchant.\r\nTo increase the limit contact support.",
            "format": "int32"
          },
          "displayQrOnHostedPay": {
            "type": "boolean",
            "description": "Indicates if a QR Code containing the payment link should be displayed\r\non the hosted payment page."
          },
          "supportedPaymentMethodsList": {
            "type": "array",
            "items": {
              "enum": [
                "None",
                "card",
                "pisp",
                "lightning",
                "cardtoken",
                "applePay",
                "googlePay",
                "directDebit"
              ],
              "type": "string"
            },
            "description": "The payment methods that are configured and supported for this merchant.",
            "nullable": true
          },
          "yourRoleName": {
            "type": "string",
            "description": "The name of the role for the identity that loaded the merchant record.",
            "nullable": true
          },
          "logoUrlPng": {
            "type": "string",
            "description": "The CDN URL of the merchant's logo in PNG format.",
            "nullable": true
          },
          "logoUrlSvg": {
            "type": "string",
            "description": "The CDN URL of the merchant's logo in SVG format.",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "The notes field is an optional free text field that can be used to store any additional information about the merchant.",
            "nullable": true
          },
          "isBlocked": {
            "type": "boolean",
            "description": "The merchant is blocked from making payments (payouts)."
          },
          "isExited": {
            "type": "boolean",
            "description": "The merchant has formally terminated their relationship\r\nand is no longer a customer."
          },
          "isSuspended": {
            "type": "boolean",
            "description": "The merchant has temporarily suspended their own account.\r\nThis is a merchant-initiated action to temporarily pause services."
          },
          "suspensionReason": {
            "type": "string",
            "description": "The reason for the suspension, provided by the merchant.\r\nThis should provide a clear explanation as to why the account was suspended.",
            "nullable": true
          },
          "timeZoneId": {
            "type": "string",
            "description": "The IANA (Internet Assigned Numbers Authority) time zone identifier of the merchant.\r\nFor example, \"Europe/Dublin\" or \"America/New_York\". This is used to ensure that timestamps\r\nand events are displayed and processed in the merchant's local time.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Tag"
            },
            "description": "An optional list of descriptive tags that can be used on merchant entities\r\nsuch as payment requests.",
            "nullable": true
          },
          "paymentAccounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
            },
            "nullable": true
          },
          "accountCurrencies": {
            "type": "array",
            "items": {
              "enum": [
                "NONE",
                "GBP",
                "EUR",
                "USD",
                "AUD",
                "BGN",
                "CAD",
                "CZK",
                "DKK",
                "HUF",
                "ISK",
                "CHF",
                "NOK",
                "PLN",
                "RON",
                "AED",
                "CNH",
                "HKD",
                "ILS",
                "JPY",
                "MXN",
                "NZD",
                "SAR",
                "SEK",
                "SGD",
                "TRY",
                "ZAR",
                "BTC"
              ],
              "type": "string"
            },
            "description": "The list of currencies that the merchant has accounts for.",
            "nullable": true
          },
          "parentMerchant": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.ParentMerchant"
          },
          "canHaveTrustAccounts": {
            "type": "boolean",
            "description": "Trust accounts are a special type of account that allow the account name\r\nto be trusted for use in statements and verification of payee checks."
          },
          "cardPaymentProcessor": {
            "type": "string",
            "description": "Name of the card payment processor. Can be \"Checkout\", \"Stripe\" or none.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.MerchantPageResponse": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Merchant"
            },
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "description": "Current page number. Its 1 based. i.e firstpage is 1, secondpage is 2",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Page size",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total pages",
            "format": "int64"
          },
          "totalSize": {
            "type": "integer",
            "description": "Total count",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.MerchantPayByBankSetting": {
        "type": "object",
        "properties": {
          "bankID": {
            "type": "string",
            "description": "ID of the bank to be configured for the merchant.",
            "format": "uuid"
          },
          "bankName": {
            "type": "string",
            "description": "Name of the Bank/Institution.",
            "nullable": true
          },
          "order": {
            "type": "integer",
            "description": "Order in which this setting will appear in the UI.",
            "format": "int32"
          },
          "logo": {
            "type": "string",
            "description": "URL of the bank's logo.",
            "nullable": true
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "Currency supported by the bank."
          },
          "processor": {
            "enum": [
              "None",
              "CyberSource",
              "Checkout",
              "Stripe",
              "Modulr",
              "Plaid",
              "Yapily",
              "Nofrixion",
              "Bitcoin",
              "BitcoinTestnet",
              "BankingCircle",
              "BankingCircleAgency",
              "Simulator",
              "Lightning",
              "LightningTestnet",
              "BankingCircleDirectDebit",
              "Technoxander"
            ],
            "type": "string",
            "description": "Name of the bank payment processor."
          },
          "personalInstitutionID": {
            "type": "string",
            "description": "ID that the processor uses to identify the bank (personal accounts).",
            "nullable": true
          },
          "businessInstitutionID": {
            "type": "string",
            "description": "ID that the processor uses to identify the bank (business accounts).",
            "nullable": true
          },
          "message": {
            "type": "string",
            "description": "Message relating to specific bank.",
            "nullable": true
          },
          "messageImageUrl": {
            "type": "string",
            "description": "Optional image URL to be displayed with the message.",
            "nullable": true
          },
          "bankCountryCodes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The list of country codes representing the banks the country supports.",
            "nullable": true
          },
          "warningHeading": {
            "type": "string",
            "description": "The heading for a warning message related to the bank institution to be displayed to the user.",
            "nullable": true
          },
          "warningMessage": {
            "type": "string",
            "description": "The warning message related to the bank institution to be displayed to the user.",
            "nullable": true
          },
          "messagePresentationMode": {
            "enum": [
              "Standard",
              "WarningOnTabletAndDesktop"
            ],
            "type": "string",
            "description": "Display mode controlling whether warning or standard message is shown."
          }
        },
        "additionalProperties": false,
        "description": "Represents an individual bank payment setting."
      },
      "NoFrixion.MoneyMoov.Models.MerchantPayByBankSettings": {
        "type": "object",
        "properties": {
          "merchantID": {
            "type": "string",
            "description": "Merchant to which the settings will be configured.",
            "format": "uuid"
          },
          "payByBankSettings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantPayByBankSetting"
            },
            "description": "Collection of bank payment settings.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a collection of merchant bank payment settings."
      },
      "NoFrixion.MoneyMoov.Models.MerchantPermission": {
        "required": [
          "merchantID"
        ],
        "type": "object",
        "properties": {
          "merchantID": {
            "type": "string",
            "nullable": true
          },
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "accountPermissions": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.MerchantSuspend": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "description": "The reason for the suspension.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.MerchantToken": {
        "required": [
          "nonce"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "format": "uuid"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "permissionTypes": {
            "type": "array",
            "items": {
              "enum": [
                "Deny",
                "CreatePaymentRequest",
                "EditPaymentRequest",
                "DeletePaymentRequest",
                "CreateRule",
                "EditRule",
                "DeleteRule",
                "CreatePayout",
                "EditPayout",
                "DeletePayout",
                "CreateReport",
                "EditReport",
                "DeleteReport",
                "ExecuteReport",
                "CreatePaymentAccount",
                "EditPaymentAccount",
                "TrustedSubmitPayout",
                "OpenBankingAccountInformation",
                "CreateDirectDebitMandate",
                "SubmitDirectDebitPayment",
                "ViewTransactions",
                "ViewPaymentAccount",
                "ViewPayout",
                "CreatePayrun",
                "ViewPayrun",
                "EditPayrun",
                "DeletePayrun"
              ],
              "type": "string"
            },
            "description": "The permissions that the merchant token supports.",
            "nullable": true
          },
          "inserted": {
            "type": "string",
            "format": "date-time"
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time"
          },
          "token": {
            "type": "string",
            "description": "The JWT merchant token. It will only be available when the merchant token is\r\ninitially created. The token is not stored by NoFrixion.",
            "nullable": true
          },
          "isEnabled": {
            "type": "boolean",
            "description": "If set to false the merchant token will not be accepted to authorise a request."
          },
          "sharedSecretAlgorithm": {
            "enum": [
              "None",
              "HMAC_SHA1",
              "HMAC_SHA256",
              "HMAC_SHA384",
              "HMAC_SHA512"
            ],
            "type": "string",
            "description": "Optional shared secret algorithm to use for HMAC authentication."
          },
          "sharedSecretBase64": {
            "type": "string",
            "description": "The base 64 encoded shared secret that is used for request authentication with an HMAC.\r\nNote this property will ONLY be set when the token is initially created. It is not possible\r\nto retrieve the secret afterwards. If it is lost a new token should be created.",
            "nullable": true
          },
          "requestSignatureVersion": {
            "type": "integer",
            "description": "Represent the version of the overall merchant token. This field is to allow the secret and public key mechanisms to\r\nvary over time. For example if the HTTP header fields to include in the algorithms change this version will faciliatate\r\nkeeping track of which signature versions a particular merchant token is using.",
            "format": "int32"
          },
          "expiresAt": {
            "type": "string",
            "description": "Optional. If set indicates the merchant token is not valid after the specified expiry date.",
            "format": "date-time",
            "nullable": true
          },
          "authorisations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Approve.Authorisation"
            },
            "description": "A list of users who have successfully authorised the latest version of the beneficiary.",
            "nullable": true
          },
          "canAuthorise": {
            "type": "boolean",
            "description": "True if the merchant token can be authorised by the user who loaded it."
          },
          "hasCurrentUserAuthorised": {
            "type": "boolean",
            "description": "True if the beneficiary was loaded for a user and that user has already authorised the latest version of the beneficiary."
          },
          "authorisersRequiredCount": {
            "type": "integer",
            "description": "The number of authorisers required for this merchant token. Is determined by business settings\r\non the source account and/or merchant.",
            "format": "int32"
          },
          "authorisersCompletedCount": {
            "type": "integer",
            "description": "The number of distinct authorisers that have authorised the merchant token.",
            "format": "int32"
          },
          "authenticationMethods": {
            "type": "array",
            "items": {
              "enum": [
                "None",
                "WebAuthn",
                "OneTimePassword"
              ],
              "type": "string"
            },
            "description": "A list of authentication types allowed to authorise the merchant token.",
            "nullable": true
          },
          "lastAuthorised": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "ipAddressWhitelist": {
            "type": "string",
            "description": "Optional. If set represents a comma separated list of IP addresses that this token is authorised to be used from.\r\nAttempts to use the token from an IP address not in the list will be rejected.",
            "nullable": true
          },
          "isArchived": {
            "type": "boolean",
            "description": "Indicates whether the merchant token is archived."
          },
          "nonce": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.MerchantTokenPageResponse": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantToken"
            },
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "description": "Current page number. Its 1 based. i.e firstpage is 1, secondpage is 2",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Page size",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total pages",
            "format": "int64"
          },
          "totalSize": {
            "type": "integer",
            "description": "Total count",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.MerchantUpdate": {
        "type": "object",
        "properties": {
          "shortName": {
            "type": "string",
            "nullable": true
          },
          "paymentAccountLimit": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "logoUrlPng": {
            "type": "string",
            "nullable": true
          },
          "logoUrlSvg": {
            "type": "string",
            "nullable": true
          },
          "notes": {
            "maxLength": 2000,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.NoFrixionVersion": {
        "type": "object",
        "properties": {
          "majorVersion": {
            "type": "integer",
            "format": "int32"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32"
          },
          "buildVersion": {
            "type": "integer",
            "format": "int32"
          },
          "releaseName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.Account": {
        "type": "object",
        "properties": {
          "usageType": {
            "enum": [
              "PERSONAL",
              "BUSINESS",
              "OTHER",
              "UNKNOWN"
            ],
            "type": "string",
            "nullable": true
          },
          "accountType": {
            "enum": [
              "CASH_TRADING",
              "CASH_INCOME",
              "CASH_PAYMENT",
              "CHARGE_CARD",
              "CHARGES",
              "COMMISSION",
              "CREDIT_CARD",
              "CURRENT",
              "E_MONEY",
              "LIMITED_LIQUIDITY_SAVINGS_ACCOUNT",
              "LOAN",
              "MARGINAL_LENDING",
              "MONEY_MARKET",
              "MORTGAGE",
              "NON_RESIDENT_EXTERNAL",
              "OTHER",
              "OVERDRAFT",
              "OVERNIGHT_DEPOSIT",
              "PREPAID_CARD",
              "SALARY",
              "SAVINGS",
              "SETTLEMENT",
              "TAX",
              "UNKNOWN"
            ],
            "type": "string",
            "description": "The type of account e.g. (Credit Card, Savings).",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "Unique identifier of the account.",
            "nullable": true
          },
          "type": {
            "type": "string",
            "description": "Specifies the type of account e.g. (BUSINESS_CURRENT).",
            "default": "",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Product name as defined by the financial institution for this account.",
            "default": "",
            "nullable": true
          },
          "balance": {
            "type": "number",
            "description": "Main or headline balance for the account. Use of this field is recommended as fallback only. Instead, use of the typed balances (accountBalances) is recommended.",
            "format": "double"
          },
          "currency": {
            "type": "string",
            "description": "Currency the bank account balance is denoted in. Specified as a 3-letter ISO 4217 currency code.",
            "default": "",
            "nullable": true
          },
          "nickname": {
            "type": "string",
            "description": "Nickname of the account that was provided by the account owner. May be used to aid identification of the account.",
            "default": "",
            "nullable": true
          },
          "details": {
            "type": "string",
            "description": "Supplementary specifications that might be provided by the Bank. These provide further characteristics about the account.",
            "default": "",
            "nullable": true
          },
          "accountNames": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.AccountName"
            },
            "description": "Optional account names set by the account holder.",
            "nullable": true
          },
          "accountIdentifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.AccountIdentification"
            },
            "description": "The canoncial identifiers for the account.",
            "nullable": true
          },
          "accountBalances": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.AccountBalance"
            },
            "description": "The various balances for the account.",
            "nullable": true
          },
          "consolidatedAccountInformation": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.ConsolidatedAccountInformation"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.AccountBalance": {
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "CLOSING_AVAILABLE",
              "CLOSING_BOOKED",
              "CLOSING_CLEARED",
              "EXPECTED",
              "FORWARD_AVAILABLE",
              "INFORMATION",
              "INTERIM_AVAILABLE",
              "INTERIM_BOOKED",
              "INTERIM_CLEARED",
              "OPENING_AVAILABLE",
              "OPENING_BOOKED",
              "OPENING_CLEARED",
              "PREVIOUSLY_CLOSED_BOOKED",
              "AUTHORISED",
              "OTHER",
              "UNKNOWN"
            ],
            "type": "string",
            "nullable": true
          },
          "dateTime": {
            "type": "string",
            "format": "date-time"
          },
          "balanceAmount": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Amount"
          },
          "creditLineIncluded": {
            "type": "boolean",
            "description": "_Optional_. Indicates whether any credit lines are included in the balance."
          },
          "creditLines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.CreditLine"
            },
            "description": "_Optional_. Specifies the type of balance.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.AccountIdentification": {
        "required": [
          "identification",
          "type"
        ],
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "SORT_CODE",
              "ACCOUNT_NUMBER",
              "IBAN",
              "BBAN",
              "BIC",
              "PAN",
              "MASKED_PAN",
              "MSISDN",
              "BSB",
              "NCC",
              "ABA",
              "ABA_WIRE",
              "ABA_ACH",
              "EMAIL",
              "ROLL_NUMBER",
              "BLZ",
              "IFS",
              "CLABE",
              "CTN",
              "BRANCH_CODE"
            ],
            "type": "string"
          },
          "identification": {
            "type": "string",
            "description": "The value associated with the account identification type.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.AccountName": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The bank account holder's name given by the account owner.",
            "default": "",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.Address": {
        "type": "object",
        "properties": {
          "addressType": {
            "enum": [
              "BUSINESS",
              "CORRESPONDENCE",
              "DELIVERY_TO",
              "MAIL_TO",
              "PO_BOX",
              "POSTAL",
              "RESIDENTIAL",
              "STATEMENT",
              "UNKNOWN"
            ],
            "type": "string",
            "description": "The type of the address."
          },
          "addressLines": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The address line of the address.",
            "nullable": true
          },
          "streetName": {
            "type": "string",
            "description": "The street name of the address.",
            "default": "",
            "nullable": true
          },
          "buildingNumber": {
            "type": "string",
            "description": "The building number of the address.",
            "default": "",
            "nullable": true
          },
          "postCode": {
            "type": "string",
            "description": "The post code of the address.",
            "default": "",
            "nullable": true
          },
          "townName": {
            "type": "string",
            "description": "The town name of the address.",
            "default": "",
            "nullable": true
          },
          "county": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The list of counties for the address.",
            "nullable": true
          },
          "country": {
            "type": "string",
            "description": "The 2-letter country code for the address. Institution's; may require you to specify the country when used in the context of the Payee to be able to make a payment.",
            "default": "",
            "nullable": true
          },
          "department": {
            "type": "string",
            "description": "The department for the address.",
            "default": "",
            "nullable": true
          },
          "subDepartment": {
            "type": "string",
            "description": "The sub-department for the address.",
            "default": "",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.AddressDetails": {
        "type": "object",
        "properties": {
          "addressLine": {
            "type": "string",
            "description": "Information, in free format text, that identifies a specific address.",
            "default": "",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.Amount": {
        "required": [
          "amount",
          "currency"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "description": "The monetary value.",
            "format": "double"
          },
          "currency": {
            "type": "string",
            "description": "The [ISO 4217](https://www.xe.com/iso4217.php) currency code.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.Categorisation": {
        "type": "object",
        "properties": {
          "categories": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "source": {
            "type": "string",
            "default": "",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.Consent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "format": "uuid"
          },
          "institutionID": {
            "type": "string",
            "nullable": true
          },
          "emailAddress": {
            "type": "string",
            "nullable": true
          },
          "isEnabled": {
            "type": "boolean"
          },
          "callbackUrl": {
            "type": "string",
            "nullable": true
          },
          "successWebHookUrl": {
            "type": "string",
            "description": "A web hook URL to send an HTTP request to when the open banking consent\r\nis successfuly authorised. This web hook lets the calling application \r\nknow when a consent is ready to be used.",
            "nullable": true
          },
          "failureCallbackUrl": {
            "type": "string",
            "description": "Optional callback URL for open banking consent authorisation failure. \r\nIf the URL is set, the calling application will be redirected here with the error message.\r\nIf it’s not set it will fall back on default page that will show the error message.",
            "nullable": true
          },
          "provider": {
            "enum": [
              "None",
              "CyberSource",
              "Checkout",
              "Stripe",
              "Modulr",
              "Plaid",
              "Yapily",
              "Nofrixion",
              "Bitcoin",
              "BitcoinTestnet",
              "BankingCircle",
              "BankingCircleAgency",
              "Simulator",
              "Lightning",
              "LightningTestnet",
              "BankingCircleDirectDebit",
              "Technoxander"
            ],
            "type": "string",
            "description": "Lists the supported card and PIS processors."
          },
          "expiryDate": {
            "type": "string",
            "format": "date-time"
          },
          "inserted": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.ConsentRequest": {
        "required": [
          "institutionID",
          "merchantID"
        ],
        "type": "object",
        "properties": {
          "emailAddress": {
            "type": "string",
            "description": "The email address that identifies the end user that will be authorising the \r\nopen banking consent request.",
            "format": "email",
            "nullable": true
          },
          "institutionID": {
            "minLength": 1,
            "type": "string",
            "description": "The institution ID the open banking consent is being requested for."
          },
          "merchantID": {
            "type": "string",
            "description": "The ID of the merchant the consent token is being created to be used with.",
            "format": "uuid"
          },
          "callbackUrl": {
            "type": "string",
            "description": "Optional callback URL that the end user performing the open banking authorisation\r\nwill be redirected to on completion. Typically this should be a URL that takes the \r\nuser back to the application that they originally started the open banking authorisation\r\nfrom.",
            "nullable": true
          },
          "successWebHookUrl": {
            "type": "string",
            "description": "Optional URL that will be called by the MoneyMoov server upon a successful open banking\r\nauthorisation. The webhook URL will pass a single parameter of \"id\". That ID can\r\nthen be used in the MoneyMoov open banking actions to verify the operation. Note\r\nweb hooks can easily be spoofed and should NOT be trusted without calling back to the \r\nMoneyMoov server for verification.",
            "nullable": true
          },
          "failureCallbackUrl": {
            "type": "string",
            "description": "Optional URL for open banking consent authorisation failure. \r\nIf the URL is set, the calling application will be redirected here with the error\r\nmessage as query parameter. If it’s not set it will fall back on default page that\r\nwill show the error message.",
            "nullable": true
          },
          "isConnectedAccounts": {
            "type": "boolean",
            "description": "Optional setting. If connected accounts is enabled. After a successful consent authorisation,\r\nNoFrixion will pull all authorised EUR and GBP account information and store them along NoFrixion payment accounts."
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.ConsentResponse": {
        "type": "object",
        "properties": {
          "consentID": {
            "type": "string",
            "description": "The ID of the open banking consent. Once the consent has been authorised this\r\nis the ID that allows it to be utilised via the open banking APIs to list accounts,\r\ntransactions etc.",
            "format": "uuid"
          },
          "authorisationUrl": {
            "type": "string",
            "description": "The URL the authorising user needs to be redirected to in order to get the open banking\r\nconsent token.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.ConsolidatedAccountInformation": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier of the consolidated account. When used in Get Account Transactions calls, the transactions \r\nbetween the sub-accounts will not be reported.",
            "default": "",
            "nullable": true
          },
          "accountBalances": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.AccountBalance"
            },
            "description": "The various balances for the account.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Summary information regarding account balances of the overall account provided by the bank."
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.CreditLine": {
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "AVAILABLE",
              "CREDIT",
              "EMERGENCY",
              "PRE_AGREED",
              "TEMPORARY",
              "OTHER",
              "UNKNOWN"
            ],
            "type": "string",
            "description": "Type of the credit line.",
            "nullable": true
          },
          "creditLineAmount": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Amount"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.CurrencyExchange": {
        "type": "object",
        "properties": {
          "sourceCurrency": {
            "type": "string",
            "description": "Currency from which an amount is to be converted.",
            "default": "",
            "nullable": true
          },
          "targetCurrency": {
            "type": "string",
            "description": "Currency to which an amount is to be converted.",
            "default": "",
            "nullable": true
          },
          "unitCurrency": {
            "type": "string",
            "description": "The currency in which the rate of exchange is expressed in a currency exchange. In the example 1GBP the unit currency is GBP.",
            "default": "",
            "nullable": true
          },
          "exchangeRate": {
            "type": "number",
            "description": "The factor used for conversion of an amount from one currency to another. This reflects the price at which one currency was \r\nbought with another currency.",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Provides details on the currency exchange."
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.Enrichment": {
        "type": "object",
        "properties": {
          "categorisation": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Categorisation"
          },
          "transactionHash": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.TransactionHash"
          },
          "cleansedDescription": {
            "type": "string",
            "default": "",
            "nullable": true
          },
          "merchant": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.EnrichmentMerchant"
          },
          "location": {
            "type": "string",
            "default": "",
            "nullable": true
          },
          "paymentProcessor": {
            "type": "string",
            "default": "",
            "nullable": true
          },
          "correctedDate": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.EnrichmentMerchant": {
        "type": "object",
        "properties": {
          "merchantName": {
            "type": "string",
            "default": "",
            "nullable": true
          },
          "parentGroup": {
            "type": "string",
            "default": "",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.IsoBankTransactionCode": {
        "type": "object",
        "properties": {
          "domainCode": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.IsoCodeDetails"
          },
          "familyCode": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.IsoCodeDetails"
          },
          "subFamilyCode": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.IsoCodeDetails"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.IsoCodeDetails": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "default": "",
            "nullable": true
          },
          "name": {
            "type": "string",
            "default": "",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.Merchant": {
        "type": "object",
        "properties": {
          "merchantName": {
            "type": "string",
            "default": "",
            "nullable": true
          },
          "merchantCategoryCode": {
            "type": "string",
            "default": "",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.Payee": {
        "required": [
          "accountIdentifications",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The account holder name of the beneficiary.",
            "nullable": true
          },
          "accountIdentifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.AccountIdentification"
            },
            "description": "The account identifications that identify the Payee  bank account.",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Address"
          },
          "merchantId": {
            "type": "string",
            "description": "The merchant ID is a unique code provided by the payment processor to the merchant.",
            "default": "",
            "nullable": true
          },
          "merchantCategoryCode": {
            "type": "string",
            "description": "The category code of the merchant in case the Payee is a business.",
            "default": "",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The Payee object contains details of the beneficiary, person or business."
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.Payer": {
        "required": [
          "accountIdentifications"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The account holder name of the Payer.",
            "default": "",
            "nullable": true
          },
          "accountIdentifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.AccountIdentification"
            },
            "description": "The account identifications that identify the Payer; bank account.",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Address"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.ProprietaryBankTransactionCode": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "default": "",
            "nullable": true
          },
          "issuer": {
            "type": "string",
            "default": "",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.StatementReference": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "default": "",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.Transaction": {
        "type": "object",
        "properties": {
          "status": {
            "enum": [
              "BOOKED",
              "PENDING"
            ],
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "default": "",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "bookingDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "valueDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "amount": {
            "type": "number",
            "format": "double"
          },
          "currency": {
            "type": "string",
            "default": "",
            "nullable": true
          },
          "transactionAmount": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Amount"
          },
          "grossAmount": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Amount"
          },
          "currencyExchange": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.CurrencyExchange"
          },
          "chargeDetails": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.TransactionChargeDetails"
          },
          "reference": {
            "type": "string",
            "default": "",
            "nullable": true
          },
          "statementReferences": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.StatementReference"
            },
            "nullable": true
          },
          "description": {
            "type": "string",
            "default": "",
            "nullable": true
          },
          "transactionInformation": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "addressDetails": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.AddressDetails"
          },
          "isoBankTransactionCode": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.IsoBankTransactionCode"
          },
          "proprietaryBankTransactionCode": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.ProprietaryBankTransactionCode"
          },
          "balance": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.TransactionBalance"
          },
          "payeeDetails": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Payee"
          },
          "payerDetails": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Payer"
          },
          "merchant": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Merchant"
          },
          "enrichment": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Enrichment"
          },
          "supplementaryData": {
            "nullable": true
          },
          "transactionMutability": {
            "type": "string",
            "default": "",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.TransactionBalance": {
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "CLOSING_AVAILABLE",
              "CLOSING_BOOKED",
              "CLOSING_CLEARED",
              "EXPECTED",
              "FORWARD_AVAILABLE",
              "INFORMATION",
              "INTERIM_AVAILABLE",
              "INTERIM_BOOKED",
              "INTERIM_CLEARED",
              "OPENING_AVAILABLE",
              "OPENING_BOOKED",
              "OPENING_CLEARED",
              "PREVIOUSLY_CLOSED_BOOKED",
              "AUTHORISED",
              "OTHER",
              "UNKNOWN"
            ],
            "type": "string",
            "nullable": true
          },
          "balanceAmount": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Amount"
          }
        },
        "additionalProperties": false,
        "description": "TransactionBalance"
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.TransactionChargeDetails": {
        "type": "object",
        "properties": {
          "chargeAmount": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.OpenBanking.Amount"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.OpenBanking.TransactionHash": {
        "type": "object",
        "properties": {
          "hash": {
            "type": "string",
            "default": "",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.ParentMerchant": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PayeeVerification.PayeeVerificationResult": {
        "type": "object",
        "properties": {
          "result": {
            "enum": [
              "Unknown",
              "Match",
              "NoMatch",
              "CloseMatch"
            ],
            "type": "string",
            "description": "The result of the payee verification"
          },
          "payeeVerifiedAccountName": {
            "type": "string",
            "description": "The verified account name of the payee, if available (in case of a close match)",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PayeeVerification.VerifyPayeeRequest": {
        "required": [
          "accountName",
          "iban"
        ],
        "type": "object",
        "properties": {
          "accountName": {
            "minLength": 1,
            "type": "string",
            "description": "The name of the account to verify"
          },
          "iban": {
            "minLength": 1,
            "type": "string",
            "description": "The IBAN of the account to verify (for VoP checks)"
          },
          "sortCode": {
            "type": "string",
            "description": "The sort code of the account to verify (for CoP checks)",
            "nullable": true
          },
          "accountNumber": {
            "type": "string",
            "description": "The account number of the account to verify (for CoP checks)",
            "nullable": true
          },
          "secondaryIdentification": {
            "type": "string",
            "description": "Optional secondary identifier for the account to verify.\r\nIt is usually the reason why the payment is being made or what invoice or obligation it relates to.\r\nSome responders may require this where just the identifier is not sufficient to uniquely identify the account.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentAccount": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique id for the account.",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "description": "The ID of the merchant that owns the account.",
            "format": "uuid"
          },
          "merchantName": {
            "type": "string",
            "description": "The name of the merchant that owns the account.",
            "nullable": true
          },
          "balance": {
            "type": "number",
            "description": "Balance of the account.",
            "format": "double"
          },
          "balanceMinorUnits": {
            "type": "integer",
            "description": "Balance of the account expressed in the currency’s minor units (e.g. cents, pence).",
            "format": "int64",
            "readOnly": true
          },
          "submittedPayoutsBalance": {
            "type": "number",
            "description": "Total of the payouts that have been submitted for processing.",
            "format": "double"
          },
          "submittedPayoutsBalanceMinorUnits": {
            "type": "integer",
            "description": "The balance of the submitted payouts expressed in the currency’s minor units (e.g. cents, pence).",
            "format": "int64",
            "readOnly": true
          },
          "inserted": {
            "type": "string",
            "description": "Timestamp when the account was created.",
            "format": "date-time"
          },
          "lastUpdated": {
            "type": "string",
            "description": "Timestamp when the account was last updated.",
            "format": "date-time"
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "Currency of the account in ISO 4217 format"
          },
          "accountName": {
            "type": "string",
            "description": "Name for the account",
            "nullable": true
          },
          "identifier": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.AccountIdentifier"
          },
          "displayName": {
            "type": "string",
            "description": "Gets a unique display name for the payment account. Useful for when payment accounts need to \r\nbe listed.",
            "nullable": true,
            "readOnly": true
          },
          "summary": {
            "type": "string",
            "description": "Gets a summary of the payments account's most important properties.",
            "nullable": true,
            "readOnly": true
          },
          "isDefault": {
            "type": "boolean",
            "description": "Is the default account"
          },
          "availableBalance": {
            "type": "number",
            "description": "The current available balance of the account. Calculated by subtracting any submitted payments from the current balance.",
            "format": "double",
            "readOnly": true
          },
          "availableBalanceMinorUnits": {
            "type": "integer",
            "description": "The available balance expressed in the currency’s minor units (e.g. cents, pence).",
            "format": "int64",
            "readOnly": true
          },
          "accountSupplierName": {
            "enum": [
              "None",
              "CyberSource",
              "Checkout",
              "Stripe",
              "Modulr",
              "Plaid",
              "Yapily",
              "Nofrixion",
              "Bitcoin",
              "BitcoinTestnet",
              "BankingCircle",
              "BankingCircleAgency",
              "Simulator",
              "Lightning",
              "LightningTestnet",
              "BankingCircleDirectDebit",
              "Technoxander"
            ],
            "type": "string",
            "description": "The payment account supplier name. A payment account can be supplied by multiple payment processors."
          },
          "isConnectedAccount": {
            "type": "boolean",
            "description": "Indicates if the payment account is an externally connected account.\r\nExternally connected account can be used to view account balances and transactions."
          },
          "consentID": {
            "type": "string",
            "description": "The ID of the consent used to connect the external account.",
            "format": "uuid",
            "nullable": true
          },
          "externalAccountIcon": {
            "type": "string",
            "description": "The Icon for external accounts",
            "nullable": true
          },
          "bankName": {
            "type": "string",
            "description": "The bank name for external accounts",
            "nullable": true
          },
          "expiryDate": {
            "type": "string",
            "description": "The date that the external account will expire",
            "format": "date-time",
            "nullable": true
          },
          "isTrustAccount": {
            "type": "boolean",
            "description": "Indicates if the payment account is a trust account. The account name is displayed in the statement\r\ninstead of the merchant name for trust accounts."
          },
          "xeroBankFeedConnectionStatus": {
            "enum": [
              "None",
              "Pending",
              "Active",
              "Inactive",
              "Failed"
            ],
            "type": "string",
            "description": "States the status of the Xero bank feed connection, if applicable.",
            "nullable": true
          },
          "xeroBankFeedSyncStatus": {
            "enum": [
              "None",
              "InProgress",
              "Completed",
              "Failed"
            ],
            "type": "string"
          },
          "xeroBankFeedLastSyncedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "xeroBankFeedSyncLastFailedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "xeroBankFeedSyncLastFailureReason": {
            "type": "string",
            "nullable": true
          },
          "xeroUnsynchronisedTransactionsCount": {
            "type": "integer",
            "description": "Indicates the number of unsynchronised transactions with Xero",
            "format": "int32",
            "nullable": true
          },
          "lastTransaction": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.LastTransaction"
          },
          "createdBy": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
          },
          "createdByDisplayName": {
            "type": "string",
            "description": "Either the name of the user, merchant token or api key that created the account",
            "nullable": true
          },
          "defaultPaymentRail": {
            "enum": [
              "Default",
              "SEPA_CT",
              "SEPA_INST",
              "TARGET2"
            ],
            "type": "string",
            "description": "Indicates the default payment rail for this account. Normally it will be left as the\r\ndefault value but in some special cases it may be set to indicate payouts from this account\r\nshould be attempted with a specific payment rail."
          },
          "rules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.RuleMinimal"
            },
            "description": "The list of rules associated with this account.",
            "nullable": true
          },
          "isArchived": {
            "type": "boolean",
            "description": "Indicates whether the account is archived. Archived accounts are not displayed in the UI.\r\nIf an account receives a payment it will be automatically unarchived."
          },
          "supplierSepaInstantStatus": {
            "enum": [
              "None",
              "Pending",
              "InProgress",
              "Enabled",
              "Disabled",
              "Failed"
            ],
            "type": "string",
            "description": "Indicates the status of the SEPA Instant payment rail for this account.",
            "nullable": true
          },
          "physicalAccountID": {
            "type": "string",
            "description": "For virtual accounts this is the ID of the physical account that the virtual account is linked to.",
            "format": "uuid",
            "nullable": true
          },
          "isVirtual": {
            "type": "boolean",
            "description": "True if the account is a virtual account.",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentAccountCreate": {
        "type": "object",
        "properties": {
          "merchantID": {
            "type": "string",
            "description": "The ID of the merchant the payment account is being created for.",
            "format": "uuid"
          },
          "currency": {
            "enum": [
              "EUR",
              "GBP",
              "USD"
            ],
            "type": "string",
            "description": "Currency for the account. Swagger narrows this property to the currencies\r\ncurrently configured for holding accounts. The authoritative list for the\r\ncurrent environment is exposed by GET /api/v1/currencies?capability=Holding."
          },
          "accountName": {
            "type": "string",
            "description": "The name for the account. This name is descriptive only, and will not be\r\nused when sending payments, but it should still be set to something that \r\nidentifies the purpose of the funds. For example \"EUR Payment\" would be\r\nsuitable to for an account used for general purpose business payments.",
            "nullable": true
          },
          "supplierPhysicalAccountID": {
            "type": "string",
            "description": "For internal use only. Leave empty unless requested otherwise.",
            "format": "uuid"
          },
          "accountType": {
            "enum": [
              "Standard",
              "StandardFee",
              "LiquidatorFee"
            ],
            "type": "string",
            "description": "If specified the account type will be set to the specified value\r\ndisregarding the merchant default account type.",
            "nullable": true
          },
          "physicalAccountID": {
            "type": "string",
            "description": "For EUR accounts this can be set to the ID of another account that will act as the\r\nbacking physical account. The new account will then act as a Virtual account, able to \r\nreceive funds but the transactions will be recorded against the backing physical account.",
            "format": "uuid",
            "nullable": true
          },
          "isTrustAccount": {
            "type": "boolean",
            "description": "Optional property to indicate whether the account is a trust account.\r\nThe account name is displayed on the statement for trust accounts instead of the merchant name."
          },
          "roleIDs": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Optional list of role IDs that will get access to the payment account when created.\r\nCreator user's roles will always be able to access the account.\r\nIf not specified, the account will be accessible by all the merchant's roles.\r\nIf specified as an empty list, the account will only be accessible by the creator user.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentAccountMinimal": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique id for the account.",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "description": "The ID of the merchant that owns the account.",
            "format": "uuid"
          },
          "balance": {
            "type": "number",
            "description": "Balance of the account.",
            "format": "double"
          },
          "balanceMinorUnits": {
            "type": "integer",
            "description": "Balance of the account expressed in the currency’s minor units (e.g. cents, pence).",
            "format": "int64",
            "readOnly": true
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "Currency of the account in ISO 4217 format"
          },
          "accountName": {
            "type": "string",
            "description": "Name for the account",
            "nullable": true
          },
          "identifier": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.AccountIdentifier"
          },
          "isArchived": {
            "type": "boolean",
            "description": "Is the account archived"
          },
          "isConnectedAccount": {
            "type": "boolean",
            "description": "Indicates if the payment account is an externally connected account.\r\nExternally connected account can be used to view account balances and transactions."
          },
          "submittedPayoutsBalance": {
            "type": "number",
            "description": "Total of the payouts that have been submitted for processing.",
            "format": "double"
          },
          "availableBalance": {
            "type": "number",
            "description": "The current available balance of the account. Calculated by subtracting any submitted payments from the current balance.",
            "format": "double",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentAccountMinimalPageResponse": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccountMinimal"
            },
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "description": "Current page number. Its 1 based. i.e firstpage is 1, secondpage is 2",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Page size",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total pages",
            "format": "int64"
          },
          "totalSize": {
            "type": "integer",
            "description": "Total count",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentAccountPageResponse": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
            },
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "description": "Current page number. Its 1 based. i.e firstpage is 1, secondpage is 2",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Page size",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total pages",
            "format": "int64"
          },
          "totalSize": {
            "type": "integer",
            "description": "Total count",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentInitiationResponse": {
        "type": "object",
        "properties": {
          "paymentInitiationID": {
            "type": "string",
            "description": "The unique identifier of the payment initiation request.",
            "nullable": true
          },
          "redirectUrl": {
            "type": "string",
            "description": "A redirect URL for the user to authorise the payment initiation request at the ASPSP",
            "nullable": true
          },
          "specificErrorMessage": {
            "type": "string",
            "nullable": true
          },
          "paymentRequestCallbackUrl": {
            "type": "string",
            "description": "The callback URL that was set when the payment request was created. Payers will be \r\nredirected to this URL after a successful payment initiation.",
            "nullable": true
          },
          "paymentRequestID": {
            "type": "string",
            "format": "uuid"
          },
          "responseType": {
            "enum": [
              "None",
              "CardPayerAuthenticationSetupResponse",
              "CardPaymentResponse",
              "PaymentInitiationResponse"
            ],
            "type": "string",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "format": "uuid"
          },
          "amount": {
            "type": "number",
            "description": "The amount of money to request.",
            "format": "double"
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "The currency of the request."
          },
          "customerID": {
            "type": "string",
            "description": "An optional customer identifier for the payment request.",
            "nullable": true
          },
          "orderID": {
            "type": "string",
            "description": "An optional order ID for the payment request. If the request is for an invoice this\r\nis the most appropriate field for the invoice ID.",
            "nullable": true
          },
          "paymentMethods": {
            "type": "array",
            "items": {
              "enum": [
                "None",
                "card",
                "pisp",
                "lightning",
                "cardtoken",
                "applePay",
                "googlePay",
                "directDebit"
              ],
              "type": "string"
            },
            "description": "The payment methods that the payment request supports.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "An optional description for the payment request. If set this field will appear\r\non the transaction record for some card processors.",
            "nullable": true
          },
          "pispAccountID": {
            "type": "string",
            "description": "The payment account ID to use to receive payment initiation payments. This must match one of your\r\nNoFrixion payment account IDs. This can be left blank to use your default payment account.",
            "format": "uuid",
            "nullable": true
          },
          "baseOriginUrl": {
            "type": "string",
            "description": "For card payments the origin of the payment page needs to be set in advance.\r\nA public key context is generated to encrypt sensitive card details and is bound\r\nto a single origin URL.",
            "nullable": true
          },
          "callbackUrl": {
            "type": "string",
            "description": "Once a payment is processed, or a notification of an inbound payment is received,\r\na callback request will be made to this URL. Typically it will be the page on\r\na merchant's web site that displays the results of the payment attempt.",
            "nullable": true
          },
          "failureCallbackUrl": {
            "type": "string",
            "description": "Optional callback URL for payment failures that can occur when the payer is \r\nredirected away from the payment page. Typically the payer is only sent away\r\nfrom the payment page for pay by bank attempts. If this URL is not set the \r\npayer will be redirected back to the original URL the payment attempt was initiated\r\nfrom.",
            "nullable": true
          },
          "successWebHookUrl": {
            "type": "string",
            "description": "If a payment event results in the payment request being classified as fully paid this\r\nsuccess webhook URL will be invoked. The URL will be invoked as a GET request, i.e.\r\nthere will be no request body. Two query parameters will be added to the URL. The \r\nfirst one will be \"id\" and will hold the payment request ID. The second one will be\r\n\"orderid\" and will hold the payment request OrderID, note the OrderID could be empty\r\nif it was not set when the payment request was created.\r\nThe recommended approach when receiving a success web hook is to use the \"id\" parameter\r\nto call the moneymoov get payment request endpoint to retrieve the full details of the\r\npayment request and check the status. Web hooks can be easily spoofed and should not be\r\nrelied upon.",
            "nullable": true
          },
          "cardAuthorizeOnly": {
            "type": "boolean",
            "description": "For card payments the default behaviour is to authorise and capture the payment at the same\r\ntime. If a merchant needs to authorise and then capture at a later point this property needs\r\nto be set to true."
          },
          "cardCreateToken": {
            "type": "boolean",
            "description": "For card payments a payment attempt can be used to create a reusable token for subsequent\r\npayments. Setting this field to true will create a reusable customer token."
          },
          "cardCreateTokenMode": {
            "enum": [
              "None",
              "ConsentNotRequired",
              "UserConsentRequired"
            ],
            "type": "string",
            "description": "This specifies whether user consent will be taken before tokenising card or not.\r\nIf this is set to 'UserConsentRequired' then, the user consent will potentially update \r\nCardCreateToken flag on submit card payment."
          },
          "ignoreAddressVerification": {
            "type": "boolean",
            "description": "If set to true the card payment gateway will be directed to proceed with a payment even if the\r\naddress verification checks fails."
          },
          "cardIgnoreCVN": {
            "type": "boolean",
            "description": "If set to true the card payment gateway will be directed to proceed with a payment even if the\r\ncard verification number check fails."
          },
          "cardProcessorMerchantID": {
            "type": "string",
            "description": "Optional field that if specified indicates the processor merchant ID that should be used\r\nto process any card payments. Mainly useful where a merchant has multiple processor\r\nmerchant ID's. If left empty the default merchant card settings will be used.",
            "nullable": true
          },
          "paymentProcessor": {
            "enum": [
              "None",
              "CyberSource",
              "Checkout",
              "Stripe",
              "Modulr",
              "Plaid",
              "Yapily",
              "Nofrixion",
              "Bitcoin",
              "BitcoinTestnet",
              "BankingCircle",
              "BankingCircleAgency",
              "Simulator",
              "Lightning",
              "LightningTestnet",
              "BankingCircleDirectDebit",
              "Technoxander"
            ],
            "type": "string",
            "description": "If the card payment option is enabled this field indicates which card processor\r\nthe merchant is set up to use."
          },
          "lightningInvoice": {
            "type": "string",
            "description": "Bitcoin Lightning invoice for the payment request.",
            "nullable": true
          },
          "status": {
            "enum": [
              "None",
              "FullyPaid",
              "PartiallyPaid",
              "OverPaid",
              "Voided",
              "Authorized"
            ],
            "type": "string",
            "description": "The current status of the payment request. Will be set to FullyPaid when the full\r\namount has been received."
          },
          "hostedPayCheckoutUrl": {
            "type": "string",
            "description": "This is a convenience link generated for payment requests whose merchants are using\r\nhosted payment pages. The link will load the MoneyMoov hosted payment page. If the \r\nmerchant has not been set up for hosted payment or the payment can't be hosted then\r\nthis property will be empty.",
            "nullable": true
          },
          "partialPaymentMethod": {
            "enum": [
              "None",
              "Partial"
            ],
            "type": "string",
            "description": "The approach to use, or not, for accepting partial payments."
          },
          "inserted": {
            "type": "string",
            "description": "The timestamp the payment request was created at.",
            "format": "date-time"
          },
          "insertedSortable": {
            "type": "string",
            "description": "The Inserted timestamp output as a sortable string \r\nhttps://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings#UniversalSortable \r\nFormat also supported natively by Javascript https://tc39.es/ecma262/#sec-date-time-string-format.",
            "nullable": true
          },
          "lastUpdated": {
            "type": "string",
            "description": "The timestamp the payment request was last updated at.",
            "format": "date-time"
          },
          "useHostedPaymentPage": {
            "type": "boolean",
            "description": "If set to true, and the merchant is configured for hosted payment pages, the base and callback URLs\r\nwill be set to use the hosted payment page."
          },
          "customerEmailAddress": {
            "type": "string",
            "description": "Optional email address for the customer. If the tokenise card option is set then the customer email address\r\nis mandatory.",
            "format": "email",
            "nullable": true
          },
          "cardStripePaymentIntentID": {
            "type": "string",
            "description": "If Stripe is being used as the card payment processor this property is used to hold the Stripe payment intent ID.",
            "nullable": true
          },
          "cardStripePaymentIntentSecret": {
            "type": "string",
            "description": "If Stripe is being used as the card payment processor this property is used to hold the Stripe payment intent client secret.",
            "nullable": true
          },
          "addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestAddress"
            },
            "nullable": true
          },
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestEvent"
            },
            "nullable": true
          },
          "tokenisedCards": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.CardCustomerToken"
            },
            "nullable": true
          },
          "transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Transaction"
            },
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Tag"
            },
            "description": "An optional list of descriptive tags attached to the payment request.",
            "nullable": true
          },
          "result": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestResult"
          },
          "jwk": {
            "type": "string",
            "description": "The jwk containing the public key used to verify the signature of the payment request.",
            "nullable": true
          },
          "priorityBankID": {
            "type": "string",
            "description": "The ID of the bank that is set as the priority bank for display on pay element.",
            "format": "uuid",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "A generic field to contain any additional data that the merchant wishes to store against the payment request.\r\nE.g. product or service information.",
            "nullable": true
          },
          "partialPaymentSteps": {
            "type": "string",
            "description": "An optional comma separated list of partial payment amounts. The amounts represent guidance, or suggestions, as to\r\nhow the payer will be requested to make partial payments.",
            "nullable": true
          },
          "payrunID": {
            "type": "string",
            "description": "The ID of a payrun that needs an account top up. \r\nPayment request can be used to top up payrun accounts.",
            "format": "uuid",
            "nullable": true
          },
          "shippingAddress": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestAddress"
          },
          "notificationEmailAddresses": {
            "type": "string",
            "nullable": true
          },
          "paymentAttempts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestPaymentAttempt"
            },
            "description": "The payment attempts made against this payment request.",
            "nullable": true,
            "readOnly": true
          },
          "amountReceived": {
            "type": "number",
            "description": "Total amount received for this payment request.",
            "format": "double"
          },
          "amountRefunded": {
            "type": "number",
            "description": "Total amount refunded for this payment request.",
            "format": "double"
          },
          "amountPending": {
            "type": "number",
            "description": "Total amount that has been authorised but not settled for this payment request.",
            "format": "double"
          },
          "createdByUser": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
          },
          "merchantTokenDescription": {
            "type": "string",
            "description": "Description of the merchant token in case the Payment request was created using a merchant token.",
            "nullable": true
          },
          "formattedAmount": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "lightningInvoiceExpiresAt": {
            "type": "string",
            "description": "Date and time of expiration of the lightning invoice.",
            "format": "date-time",
            "nullable": true
          },
          "destinationAccount": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
          },
          "autoSendReceipt": {
            "type": "boolean",
            "description": "If set to true, a receipt will be automatically sent to the CustomerEmailAddress when payments are received."
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestCustomField"
            },
            "description": "A list of custom fields attached to the payment request.",
            "nullable": true
          },
          "sandboxSettleDelayInSeconds": {
            "type": "integer",
            "description": "Sandbox only. Optional. If set, simulated settlements will be delayed by the specified number of seconds.",
            "format": "int32",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "description": "The due date for the payment request.",
            "format": "date-time",
            "nullable": true
          },
          "fieldDisplaySettings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestFieldDisplaySetting"
            },
            "description": "A list of field display settings that control which fields are displayed to the payer.",
            "nullable": true
          },
          "notificationRoleIDs": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "A list of roles whose members will receive notifications about this payment request.",
            "nullable": true
          },
          "directDebitPayment": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.DirectDebit.DirectDebitPayment"
          },
          "merchantDirectDebitMandateID": {
            "type": "string",
            "description": "Optional ID of the direct debit mandate associated with this payment request.",
            "format": "uuid",
            "nullable": true
          },
          "isArchived": {
            "type": "boolean",
            "description": "Indicates whether the payment request is archived."
          },
          "customerName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequestAddress": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "paymentRequestID": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "addressType": {
            "enum": [
              "Unknown",
              "Shipping",
              "Billing"
            ],
            "type": "string",
            "description": "Lists the supported address types."
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "addressLine1": {
            "type": "string",
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "nullable": true
          },
          "addressCity": {
            "type": "string",
            "nullable": true
          },
          "addressCounty": {
            "type": "string",
            "nullable": true
          },
          "addressPostCode": {
            "type": "string",
            "nullable": true
          },
          "addressCountryCode": {
            "type": "string",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "inserted": {
            "type": "string",
            "format": "date-time"
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequestCaptureAttempt": {
        "type": "object",
        "properties": {
          "capturedAt": {
            "type": "string",
            "description": "Date and time the capture was initiated.",
            "format": "date-time",
            "nullable": true
          },
          "capturedAmount": {
            "type": "number",
            "description": "The amount that was captured.",
            "format": "double"
          },
          "captureFailedAt": {
            "type": "string",
            "description": "Date and time the capture failed.",
            "format": "date-time",
            "nullable": true
          },
          "captureFailureError": {
            "type": "string",
            "description": "Capture failure reason.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents each individual payment capture attempt for a payment request."
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequestCreate": {
        "required": [
          "amount"
        ],
        "type": "object",
        "properties": {
          "merchantID": {
            "type": "string",
            "description": "The ID of the merchant to create the payment request for.",
            "format": "uuid"
          },
          "amount": {
            "type": "number",
            "description": "The amount of money to request.",
            "format": "double"
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "The currency of the payment request."
          },
          "customerID": {
            "pattern": "[a-zA-Z0-9\\-]+",
            "type": "string",
            "description": "An optional customer identifier for the payment request. This field is sent to the \r\npayer's bank when using payment initiation. The restriction in the available characters\r\nis due to some banks rejecting requests when ones outside the set are used.",
            "nullable": true
          },
          "orderID": {
            "pattern": "[a-zA-Z0-9\\-_\\.@&\\*%\\$#!:; ]+",
            "type": "string",
            "description": "An optional order ID for the payment request. If the request is for an invoice this\r\nis the most appropriate field for the invoice ID.",
            "nullable": true
          },
          "paymentMethods": {
            "type": "array",
            "items": {
              "enum": [
                "None",
                "card",
                "pisp",
                "lightning",
                "cardtoken",
                "applePay",
                "googlePay",
                "directDebit"
              ],
              "type": "string"
            },
            "description": "The payment methods that the payment request supports.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "An optional description for the payment request. If set this field will appear\r\non the transaction record for some card processors.",
            "nullable": true
          },
          "pispAccountID": {
            "type": "string",
            "description": "The payment account ID to use to receive payment initiation payments. This must match one of your\r\nNoFrixion payment account IDs. This can be left blank to use your default payment account.",
            "format": "uuid",
            "nullable": true
          },
          "shippingFirstName": {
            "pattern": "[^\\<\\>]+",
            "type": "string",
            "description": "Optionally the first name of the customer's shipping address.",
            "nullable": true
          },
          "shippingLastName": {
            "pattern": "[^\\<\\>]+",
            "type": "string",
            "description": "Optionally the last name of the customer's shipping address.",
            "nullable": true
          },
          "shippingAddressLine1": {
            "pattern": "[^\\<\\>]+",
            "type": "string",
            "description": "Optionally the first line of the customer's shipping address.",
            "nullable": true
          },
          "shippingAddressLine2": {
            "pattern": "[^\\<\\>]+",
            "type": "string",
            "description": "Optionally the second line of the customer's shipping address.",
            "nullable": true
          },
          "shippingAddressCity": {
            "pattern": "[^\\<\\>]+",
            "type": "string",
            "description": "Optionally the city of the customer's shipping address.",
            "nullable": true
          },
          "shippingAddressCounty": {
            "pattern": "[^\\<\\>]+",
            "type": "string",
            "description": "Optionally the state or county of the customer's shipping address.",
            "nullable": true
          },
          "shippingAddressPostCode": {
            "pattern": "[^\\<\\>]+",
            "type": "string",
            "description": "Optionally the post code of the customer's shipping address.",
            "nullable": true
          },
          "shippingAddressCountryCode": {
            "pattern": "[^\\<\\>]+",
            "type": "string",
            "description": "Optionally the country code of the customer's shipping address.",
            "nullable": true
          },
          "shippingPhone": {
            "pattern": "[0-9\\+\\- ]+",
            "type": "string",
            "description": "Optionally the shipping phone number for the customer.",
            "nullable": true
          },
          "shippingEmail": {
            "type": "string",
            "description": "Optionally the shipping email address for the customer.",
            "nullable": true
          },
          "callbackUrl": {
            "type": "string",
            "description": "Once a payment is processed, or a notification of an inbound payment is received,\r\na callback request will be made to this URL. Typically it will be the page on\r\na merchant's web site that displays the results of the payment attempt.",
            "nullable": true
          },
          "failureCallbackUrl": {
            "type": "string",
            "description": "Optional callback URL for payment failures that can occur when the payer is \r\nredirected away from the payment page. Typically the payer is only sent away\r\nfrom the payment page for pay by bank attempts. If this URL is not set the \r\npayer will be redirected back to the original URL the payment attempt was initiated\r\nfrom.",
            "nullable": true
          },
          "successWebHookUrl": {
            "type": "string",
            "description": "If a payment event results in the payment request being classified as fully paid this\r\nsuccess webhook URL will be invoked. The URL will be invoked as a GET request, i.e.\r\nthere will be no request body. Two query parameters will be added to the URL. The \r\nfirst one will be \"id\" and will hold the payment request ID. The second one will be\r\n\"orderid\" and will hold the payment request OrderID, note the OrderID could be empty\r\nif it was not set when the payment request was created.\r\nThe recommended approach when receiving a success web hook is to use the \"id\" parameter\r\nto call the moneymoov get payment request endpoint to retrieve the full details of the\r\npayment request and check the status. Web hooks can be easily spoofed and should not be\r\nrelied upon.",
            "nullable": true
          },
          "cardAuthorizeOnly": {
            "type": "boolean",
            "description": "For card payments the default behaviour is to authorise and capture the payment at the same\r\ntime. If a merchant needs to authorise and then capture at a later point this property needs\r\nto be set to true."
          },
          "cardCreateToken": {
            "type": "boolean",
            "description": "For card payments a payment attempt can be used to create a reusable token for subsequent\r\npayments. Setting this field to true will create a reusable customer token."
          },
          "cardCreateTokenMode": {
            "enum": [
              "None",
              "ConsentNotRequired",
              "UserConsentRequired"
            ],
            "type": "string",
            "description": "This specifies whether user consent will be taken before tokenising card or not.\r\nThis cannot be 'None' if CardCreateToken is set to true. If this is set to 'UserConsentRequired'\r\nthen, the user consent will overwrite CardCreateToken flag on submit card payment."
          },
          "cardTransmitRawDetails": {
            "type": "boolean",
            "description": "If set to true for card payments the sensitive card number and card verification number \r\nwill be transmitted directly rather than being tokenised. This makes the payment quicker\r\nbut more exposed to client side flaws such as cross site scripting."
          },
          "cardProcessorMerchantID": {
            "pattern": "[a-zA-Z0-9]+",
            "type": "string",
            "description": "Optional field that if specified indicates the processor merchant ID that should be used\r\nto process any card payments. Mainly useful where a merchant has multiple processor\r\nmerchant ID's. If left empty the default merchant card settings will be used.",
            "nullable": true
          },
          "ignoreAddressVerification": {
            "type": "boolean",
            "description": "If set to true the card payment gateway will be directed to proceed with a payment even if the\r\naddress verification checks fails."
          },
          "cardIgnoreCVN": {
            "type": "boolean",
            "description": "If set to true the card payment gateway will be directed to proceed with a payment even if the\r\ncard verification number check fails."
          },
          "useHostedPaymentPage": {
            "type": "boolean",
            "description": "If set to true, and the merchant is configured for hosted payment pages, the base and callback URLs\r\nwill be set to use the hosted payment page."
          },
          "cardNoPayerAuthentication": {
            "type": "boolean",
            "description": "If set to true for card payments no attempt will be made to use payer authentication (3-D Secure and equivalent).\r\nSkipping payer authentication can help avoid failed payment attempts when a payer is not enrolled or when they\r\ncan't be bothered completing their issuing bank's authentication steps. A disadvantage is it exposes the merchant \r\nto liability for charge backs."
          },
          "partialPaymentMethod": {
            "enum": [
              "None",
              "Partial"
            ],
            "type": "string",
            "description": "The approach to use, or not, for accepting partial payments."
          },
          "customerEmailAddress": {
            "type": "string",
            "description": "Optional email address for the customer. If the tokenise card option is set then the customer email address\r\nis mandatory.",
            "nullable": true
          },
          "notificationEmailAddresses": {
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "priorityBankID": {
            "type": "string",
            "description": "The ID of the bank that is set as the priority bank for display on pay element.",
            "format": "uuid",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "A generic field to contain any additional data that the merchant wishes to store against the payment request.\r\nE.g. product or service information.",
            "nullable": true
          },
          "partialPaymentSteps": {
            "type": "string",
            "description": "An optional comma separated list of partial payment amounts. The amounts represent guidance, or suggestions, as to\r\nhow the payer will be requested to make partial payments.",
            "nullable": true
          },
          "payrunID": {
            "type": "string",
            "description": "Optional, if set it indicates that this payment request will be used to top up a payment account for a pay run.",
            "format": "uuid",
            "nullable": true
          },
          "sandboxSettleDelayInSeconds": {
            "type": "integer",
            "description": "Sandbox only. Optional. If set, the simulated Direct Debit settlement will be delayed by the specified number of seconds.\r\nMust be greater than 0 and less than 600. Otherwise, the default value will be used.",
            "format": "int32",
            "nullable": true
          },
          "tagIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "An optional list of tag ids to add to the payment request",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "An optional list of tag values to set on the payment request. If no matching\r\ntag exists it will be created.",
            "nullable": true
          },
          "autoSendReceipt": {
            "type": "boolean",
            "description": "If set to true, a receipt will be automatically sent to the CustomerEmailAddress when payments are received."
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestCustomFieldCreate"
            },
            "description": "A list of custom fields to add to the payment request. The custom fields\r\nare data type agnostic which means that the API will not do any validation or formatting\r\nin the key-value pairs. The API will store the custom fields as is.",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "description": "An optional due date for the payment request.",
            "format": "date-time",
            "nullable": true
          },
          "fieldDisplaySettings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestFieldDisplaySetting"
            },
            "description": "An optional display settings for the payment request fields. This allows the merchant to control how\r\nthe fields are displayed on the hosted payment page, receipt, etc.",
            "nullable": true
          },
          "notificationRoleIDs": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "An optional list of notification role IDs that will receive notifications\r\nabout the payment request. This is useful for roles that need to be notified\r\nabout payment request events.",
            "nullable": true
          },
          "merchantDirectDebitMandateID": {
            "type": "string",
            "description": "Optional ID of an existing direct debit mandate to associate with this payment request.\r\nOnly applicable when the payment method is direct debit.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequestEvent": {
        "required": [
          "amount"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "paymentRequestID": {
            "type": "string",
            "format": "uuid"
          },
          "inserted": {
            "type": "string",
            "format": "date-time"
          },
          "eventType": {
            "enum": [
              "unknown",
              "card_payer_authentication_setup",
              "card_authorization",
              "card_sale",
              "card_capture",
              "card_void",
              "pisp_initiate",
              "pisp_callback",
              "lightning_invoice_created",
              "lightning_invoice_paid",
              "card_payer_authentication_failure",
              "pisp_webhook",
              "pisp_settle",
              "pisp_settle_failure",
              "pisp_refund_initiated",
              "pisp_refund_settled",
              "pisp_refund_cancelled",
              "card_webhook",
              "card_refund",
              "lightning_invoice_expired",
              "lightning_invoice_cancelled",
              "direct_debit_initiate",
              "direct_debit_create",
              "direct_debit_state_change",
              "direct_debit_paid",
              "direct_debit_failed",
              "card_refund_pending",
              "card_refund_settled",
              "card_refund_declined"
            ],
            "type": "string"
          },
          "amount": {
            "type": "number",
            "format": "double"
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "errorReason": {
            "type": "string",
            "nullable": true
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "cardRequestID": {
            "type": "string",
            "nullable": true
          },
          "cardTransactionID": {
            "type": "string",
            "nullable": true
          },
          "cardTokenCustomerID": {
            "type": "string",
            "description": "If the option to create a reusable token for card payments was set this field contains\r\nthe token the merchant can store to use for repeat payments.",
            "nullable": true
          },
          "cardAuthorizationResponseID": {
            "type": "string",
            "description": "For a successful card authorization this field will hold the response ID. If a capture\r\nneeds to be performed this is the ID that must be used.",
            "nullable": true
          },
          "lightningInvoice": {
            "type": "string",
            "description": "For Bitcoin Lightning payments this field holds the invoice presented to the payer.",
            "nullable": true
          },
          "lightningRHash": {
            "type": "string",
            "description": "For Bitcoin Lightning payments the hash of the invoice presented to the payer.",
            "nullable": true
          },
          "pispPaymentServiceProviderID": {
            "type": "string",
            "description": "For a payment initiation this is the service provider ID selected by the payer, typically\r\nthe ID for the bank or similar financial institution.",
            "nullable": true
          },
          "pispPaymentInitiationID": {
            "type": "string",
            "description": "For a payment initiation this is the ID returned by the service provider initiating\r\nthe payment for us.",
            "nullable": true
          },
          "pispRedirectUrl": {
            "type": "string",
            "description": "For a payment initiation this is the redirect URL returned by the service provider\r\ninitiating the payment for us. This is the URL the payer is redirected to \r\nauthenticate with their financial institution and authorise the payment.",
            "nullable": true
          },
          "paymentProcessorName": {
            "enum": [
              "None",
              "CyberSource",
              "Checkout",
              "Stripe",
              "Modulr",
              "Plaid",
              "Yapily",
              "Nofrixion",
              "Bitcoin",
              "BitcoinTestnet",
              "BankingCircle",
              "BankingCircleAgency",
              "Simulator",
              "Lightning",
              "LightningTestnet",
              "BankingCircleDirectDebit",
              "Technoxander"
            ],
            "type": "string",
            "description": "If the event was for a card payment this is the name of the card processor,\r\ne.g. CyberSource or Checkout, that was used."
          },
          "pispBankStatus": {
            "type": "string",
            "description": "For payment initiation attempts some providers (e.g. Modulr) will return two status fields. The first\r\nstatus field is from the provider and the second is from the bank.",
            "nullable": true
          },
          "walletName": {
            "enum": [
              "ApplePay",
              "GooglePay"
            ],
            "type": "string",
            "nullable": true
          },
          "refundPayoutID": {
            "type": "string",
            "description": "ID of the Payout that was created for refund.",
            "format": "uuid",
            "nullable": true
          },
          "applePayTransactionID": {
            "type": "string",
            "description": "Transaction ID received in Apple pay token.",
            "nullable": true
          },
          "pispPaymentInstitutionName": {
            "type": "string",
            "description": "For a payment initiation this is the name of the financial institution that\r\nis used to initiate and authorise the payment.",
            "nullable": true
          },
          "originUrl": {
            "type": "string",
            "description": "Optional field that can be set by payment methods, such as pay by bank, that may want to redirect\r\nback to the URL that initiated the attempt in the case of a failure condition.",
            "nullable": true
          },
          "reconciledTransactionID": {
            "type": "string",
            "description": "For settlement events (only relevant for non-card payments) this is the payin transaction that\r\nthe payment request event was reconciled with.",
            "format": "uuid",
            "nullable": true
          },
          "directDebitPaymentID": {
            "type": "string",
            "description": "Payment ID issued by the Direct Debit supplier.",
            "nullable": true
          },
          "directDebitPaymentReference": {
            "type": "string",
            "description": "Reference string issued by the Direct Debit supplier.",
            "nullable": true
          },
          "drirectDebitMandateID": {
            "type": "string",
            "description": "The ID of the mandate that was used wehn requesting payment.",
            "format": "uuid",
            "nullable": true
          },
          "cardScheme": {
            "type": "string",
            "description": "For card payment events this field holds the scheme of the payer's card, e.g. Visa, Mastercard, etc.",
            "nullable": true
          },
          "cardExpiryYear": {
            "type": "integer",
            "description": "For card payment events this field holds the payer's card expiry year.",
            "format": "int32",
            "nullable": true
          },
          "cardExpiryMonth": {
            "type": "integer",
            "description": "For card payment events this field holds the payer's card expiry month.",
            "format": "int32",
            "nullable": true
          },
          "cardLastFourDigits": {
            "type": "string",
            "description": "For card payment events this field holds the payer's card last four digits.",
            "nullable": true
          },
          "cardIssuer": {
            "type": "string",
            "description": "For card payment events this field holds the payer's card issuer.",
            "nullable": true
          },
          "cardIssuerCountry": {
            "type": "string",
            "description": "For card payment events this field holds the payer's card issuer country of origin.",
            "nullable": true
          },
          "paymentMethodType": {
            "enum": [
              "None",
              "card",
              "pisp",
              "lightning",
              "cardtoken",
              "applePay",
              "googlePay",
              "directDebit"
            ],
            "type": "string",
            "description": "The type of payment method the event relates to, e.g. card, pisp, etc.",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequestMetrics": {
        "type": "object",
        "properties": {
          "all": {
            "type": "integer",
            "description": "Total payment request count.",
            "format": "int32"
          },
          "unpaid": {
            "type": "integer",
            "description": "Total payment request count with status None.",
            "format": "int32"
          },
          "partiallyPaid": {
            "type": "integer",
            "description": "Total payment request count with status PartiallyPaid.",
            "format": "int32"
          },
          "paid": {
            "type": "integer",
            "description": "Total payment request count with status FullyPaid.",
            "format": "int32"
          },
          "authorized": {
            "type": "integer",
            "description": "Total payment request count with status Authorized.",
            "format": "int32"
          },
          "totalAmountsByCurrency": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "number",
                "format": "double"
              }
            },
            "description": "The total amounts by status and currency.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequestMinimal": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "format": "uuid"
          },
          "merchantName": {
            "type": "string",
            "nullable": true
          },
          "merchantShortName": {
            "type": "string",
            "nullable": true
          },
          "merchantLogoUrlPng": {
            "type": "string",
            "nullable": true
          },
          "merchantLogoUrlSvg": {
            "type": "string",
            "nullable": true
          },
          "amount": {
            "type": "number",
            "description": "The amount of money to request.",
            "format": "double"
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "The currency of the request."
          },
          "title": {
            "type": "string",
            "description": "The title of the payment request.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "An optional description for the payment request. If set this field will appear\r\non the transaction record for some card processors.",
            "nullable": true
          },
          "paymentProcessor": {
            "enum": [
              "None",
              "CyberSource",
              "Checkout",
              "Stripe",
              "Modulr",
              "Plaid",
              "Yapily",
              "Nofrixion",
              "Bitcoin",
              "BitcoinTestnet",
              "BankingCircle",
              "BankingCircleAgency",
              "Simulator",
              "Lightning",
              "LightningTestnet",
              "BankingCircleDirectDebit",
              "Technoxander"
            ],
            "type": "string",
            "description": "The card processor"
          },
          "paymentProcessorKey": {
            "type": "string",
            "description": "The card processors public key",
            "nullable": true
          },
          "callbackUrl": {
            "type": "string",
            "nullable": true
          },
          "cardStripePaymentIntentSecret": {
            "type": "string",
            "nullable": true
          },
          "jwk": {
            "type": "string",
            "description": "The jwk containing the public key",
            "nullable": true
          },
          "paymentMethodsList": {
            "type": "array",
            "items": {
              "enum": [
                "None",
                "card",
                "pisp",
                "lightning",
                "cardtoken",
                "applePay",
                "googlePay",
                "directDebit"
              ],
              "type": "string"
            },
            "description": "The payment methods that the payment request supports.",
            "nullable": true
          },
          "pispError": {
            "type": "string",
            "description": "This is the error returned from the bank which is recorded in payment request events.",
            "nullable": true
          },
          "priorityBankID": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "googlePayMerchantID": {
            "type": "string",
            "description": "Merchant ID from Google Pay",
            "nullable": true
          },
          "paymentAttempts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestPaymentAttempt"
            },
            "description": "The payment attempts for this payment request.",
            "nullable": true
          },
          "status": {
            "enum": [
              "None",
              "FullyPaid",
              "PartiallyPaid",
              "OverPaid",
              "Voided",
              "Authorized"
            ],
            "type": "string",
            "description": "The status of the payment request."
          },
          "partialPaymentMethod": {
            "enum": [
              "None",
              "Partial"
            ],
            "type": "string"
          },
          "stripeAccountID": {
            "type": "string",
            "description": "Account ID of connected customers in Stripe",
            "nullable": true
          },
          "countryCode": {
            "type": "string",
            "description": "The country code associated with the payment.",
            "nullable": true
          },
          "customFieldsToDisplay": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestCustomField"
            },
            "description": "Custom fields to display to the customer.",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "description": "The due date of the payment request.",
            "format": "date-time",
            "nullable": true
          },
          "fieldDisplaySettings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestFieldDisplaySetting"
            },
            "nullable": true
          },
          "amountReceived": {
            "type": "number",
            "description": "The amount of money that has been received for this payment request.",
            "format": "double"
          },
          "amountRefunded": {
            "type": "number",
            "description": "The amount of money that has been refunded for this payment request.",
            "format": "double"
          },
          "amountPending": {
            "type": "number",
            "description": "The amount of money that was authorised but has not arrived in the account yet.",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequestPayment": {
        "type": "object",
        "properties": {
          "paymentRequestID": {
            "type": "string",
            "description": "The ID of the payment request the result is for.",
            "format": "uuid"
          },
          "occurredAt": {
            "type": "string",
            "description": "Timestamp the payment occurred. For cards this will be the time the\r\noriginal authorisation occurred.",
            "format": "date-time"
          },
          "paymentMethod": {
            "enum": [
              "None",
              "card",
              "pisp",
              "lightning",
              "cardtoken",
              "applePay",
              "googlePay",
              "directDebit"
            ],
            "type": "string",
            "description": "The payment type for the received money."
          },
          "amount": {
            "type": "number",
            "description": "The authorised payment amount.",
            "format": "double"
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "The authorised payment currency."
          },
          "tokenisedCardID": {
            "type": "string",
            "description": "For card payments the merchant can request a reusable token for this payer and\r\nuse it to submit subsequent merchant initiated payments.",
            "nullable": true
          },
          "cardAuthorizationID": {
            "type": "string",
            "description": "For card payments this is the ID from the initial successful authorization or sale.\r\nRequired for voids and capture operations.",
            "nullable": true
          },
          "cardCapturedAmount": {
            "type": "number",
            "description": "The captured amount for a card payment.",
            "format": "double"
          },
          "cardIsVoided": {
            "type": "boolean",
            "description": "If true indicates that the card payment was voided."
          },
          "paymentProcessor": {
            "enum": [
              "None",
              "CyberSource",
              "Checkout",
              "Stripe",
              "Modulr",
              "Plaid",
              "Yapily",
              "Nofrixion",
              "Bitcoin",
              "BitcoinTestnet",
              "BankingCircle",
              "BankingCircleAgency",
              "Simulator",
              "Lightning",
              "LightningTestnet",
              "BankingCircleDirectDebit",
              "Technoxander"
            ],
            "type": "string",
            "description": "The card processor that was used for the payment event."
          },
          "refundedAmount": {
            "type": "number",
            "description": "Refunded Amount",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequestPaymentAttempt": {
        "type": "object",
        "properties": {
          "attemptKey": {
            "type": "string",
            "description": "For pay by bank attempts this is the ID that gets set on all the events (initiate,\r\ncallback, webhook and settlement) for the same attempt. For cards and lightning different\r\nfields are used to group payment request events.",
            "nullable": true
          },
          "paymentRequestID": {
            "type": "string",
            "description": "The ID of the payment request the result is for.",
            "format": "uuid"
          },
          "initiatedAt": {
            "type": "string",
            "description": "Timestamp the payment was initiated at.",
            "format": "date-time"
          },
          "authorisedAt": {
            "type": "string",
            "description": "If the attempt was authorised this is the timestamp it occurred at.",
            "format": "date-time",
            "nullable": true
          },
          "cardAuthorisedAt": {
            "type": "string",
            "description": "If the card payment attempt was authorised this is the timestamp it occurred at.",
            "format": "date-time",
            "nullable": true
          },
          "cardPayerAuthenticationSetupFailedAt": {
            "type": "string",
            "description": "If the card payment attempt authorisation was not succesfully set up\r\nthis is the timestamp it occurred at.",
            "format": "date-time",
            "nullable": true
          },
          "cardAuthoriseFailedAt": {
            "type": "string",
            "description": "If the card payment attempt was not succesfully authorised this is the timestamp\r\nit occurred at.",
            "format": "date-time",
            "nullable": true
          },
          "settledAt": {
            "type": "string",
            "description": "If the PISP attempt was settled this is the timestamp it occurred at.",
            "format": "date-time",
            "nullable": true
          },
          "settleFailedAt": {
            "type": "string",
            "description": "If the PISP attempt failed to settled after the expected settlement time this\r\nis the timestamp the failure was recorded at.",
            "format": "date-time",
            "nullable": true
          },
          "paymentMethod": {
            "enum": [
              "None",
              "card",
              "pisp",
              "lightning",
              "cardtoken",
              "applePay",
              "googlePay",
              "directDebit"
            ],
            "type": "string",
            "description": "The payment type for the received money."
          },
          "attemptedAmount": {
            "type": "number",
            "description": "The payment amount attempted.",
            "format": "double"
          },
          "authorisedAmount": {
            "type": "number",
            "description": "The payment amount that was authorised by the payer.",
            "format": "double"
          },
          "cardAuthorisedAmount": {
            "type": "number",
            "description": "The card payment amount that was authorised by the payer.",
            "format": "double"
          },
          "settledAmount": {
            "type": "number",
            "description": "The funds that were received from the payer.",
            "format": "double"
          },
          "refundAttempts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestRefundAttempt"
            },
            "description": "The refund attempts associated with this payment attempt.",
            "nullable": true
          },
          "captureAttempts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestCaptureAttempt"
            },
            "description": "The card capture attempts associated with this payment attempt.",
            "nullable": true
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "The authorised payment currency."
          },
          "paymentProcessor": {
            "enum": [
              "None",
              "CyberSource",
              "Checkout",
              "Stripe",
              "Modulr",
              "Plaid",
              "Yapily",
              "Nofrixion",
              "Bitcoin",
              "BitcoinTestnet",
              "BankingCircle",
              "BankingCircleAgency",
              "Simulator",
              "Lightning",
              "LightningTestnet",
              "BankingCircleDirectDebit",
              "Technoxander"
            ],
            "type": "string",
            "description": "The card processor that was used for the payment event."
          },
          "walletName": {
            "enum": [
              "ApplePay",
              "GooglePay"
            ],
            "type": "string",
            "nullable": true
          },
          "institutionID": {
            "type": "string",
            "description": "Where available this is the ID of the institution used by the payer. For example in PIS attempts\r\nthis will be the ID of the bank the payer used for the attempt.",
            "nullable": true
          },
          "institutionName": {
            "type": "string",
            "description": "Where available this is the name of the institution used by the payer. For example,\r\nin PIS attempts this will be the name of the bank the payer used for the attempt.",
            "nullable": true
          },
          "tokenisedCardID": {
            "type": "string",
            "description": "For card payments the merchant can request a reusable token for this payer and\r\nuse it to submit subsequent merchant initiated payments.",
            "nullable": true
          },
          "reconciledTransactionID": {
            "type": "string",
            "description": "When the payment attempt is settled (only relevant for non-card payments) this is the payin transaction that\r\nthe payment request event was reconciled with.",
            "format": "uuid",
            "nullable": true
          },
          "pispAuthorisationFailedAt": {
            "type": "string",
            "description": "Timestamp for PSIP bank authorisation error or failure.",
            "format": "date-time",
            "nullable": true
          },
          "status": {
            "enum": [
              "None",
              "FullyPaid",
              "PartiallyPaid",
              "OverPaid",
              "Voided",
              "Authorized"
            ],
            "type": "string",
            "readOnly": true
          },
          "isPaid": {
            "type": "boolean",
            "description": "True once the attempt has actually been paid (card authorised or settled).",
            "readOnly": true
          },
          "paidAt": {
            "type": "string",
            "description": "The time the payment went through (card authorisation time or settlement time).",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "paidAmount": {
            "type": "number",
            "description": "The amount that was actually paid.",
            "format": "double",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequestPispSandboxCallback": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "format": "double"
          },
          "institution": {
            "type": "string",
            "nullable": true
          },
          "paymentInitiationID": {
            "type": "string",
            "nullable": true
          },
          "errorDescription": {
            "type": "string",
            "nullable": true
          },
          "doSimulateSettlementFailure": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequestRefundAttempt": {
        "type": "object",
        "properties": {
          "refundPayoutID": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "refundInitiatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "refundSettledAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "refundCancelledAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "refundInitiatedAmount": {
            "type": "number",
            "format": "double"
          },
          "refundSettledAmount": {
            "type": "number",
            "format": "double"
          },
          "refundCancelledAmount": {
            "type": "number",
            "format": "double"
          },
          "isCardVoid": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequestResult": {
        "type": "object",
        "properties": {
          "paymentRequestID": {
            "type": "string",
            "description": "The ID of the payment request the result is for.",
            "format": "uuid"
          },
          "amount": {
            "type": "number",
            "description": "The authorised payment amount.",
            "format": "double"
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "The authorised payment currency."
          },
          "result": {
            "enum": [
              "None",
              "FullyPaid",
              "PartiallyPaid",
              "OverPaid",
              "Voided",
              "Authorized"
            ],
            "type": "string",
            "description": "The result of the payment attempt."
          },
          "requestedAmount": {
            "type": "number",
            "description": "The full original payment amount requested.",
            "format": "double"
          },
          "payments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequestPayment"
            },
            "description": "The list of payment attempts that have been received for the payment request.",
            "nullable": true
          },
          "pispAuthorizations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestAuthorization"
            },
            "nullable": true
          },
          "amountReceived": {
            "type": "number",
            "format": "double"
          },
          "amountRefunded": {
            "type": "number",
            "format": "double"
          },
          "amountPending": {
            "type": "number",
            "format": "double"
          },
          "customerID": {
            "type": "string",
            "description": "The customer id",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequestUpdate": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "nullable": true
          },
          "customerID": {
            "pattern": "[a-zA-Z0-9\\-]+",
            "type": "string",
            "description": "An optional customer identifier for the payment request. This field is sent to the \r\npayer's bank when using payment initiation. The restriction in the available characters\r\nis due to some banks rejecting requests when ones outside the set are used.",
            "nullable": true
          },
          "orderID": {
            "pattern": "[a-zA-Z0-9\\-_\\.@&\\*%\\$#!:; ]+",
            "type": "string",
            "description": "An optional order ID for the payment request. If the request is for an invoice this\r\nis the most appropriate field for the invoice ID.",
            "nullable": true
          },
          "paymentMethods": {
            "type": "array",
            "items": {
              "enum": [
                "None",
                "card",
                "pisp",
                "lightning",
                "cardtoken",
                "applePay",
                "googlePay",
                "directDebit"
              ],
              "type": "string"
            },
            "description": "The payment methods that the payment request supports.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "An optional description for the payment request. If set this field will appear\r\non the transaction record for some card processors.",
            "nullable": true
          },
          "pispAccountID": {
            "type": "string",
            "description": "The payment account ID to use to receive payment initiation payments. This must match one of your\r\nNoFrixion payment account IDs. This can be left blank to use your default payment account.",
            "format": "uuid",
            "nullable": true
          },
          "shippingFirstName": {
            "pattern": "[^\\<\\>]+",
            "type": "string",
            "description": "Optionally the first name of the customer's shipping address.",
            "nullable": true
          },
          "shippingLastName": {
            "pattern": "[^\\<\\>]+",
            "type": "string",
            "description": "Optionally the last name of the customer's shipping address.",
            "nullable": true
          },
          "shippingAddressLine1": {
            "pattern": "[^\\<\\>]+",
            "type": "string",
            "description": "Optionally the first line of the customer's shipping address.",
            "nullable": true
          },
          "shippingAddressLine2": {
            "pattern": "[^\\<\\>]+",
            "type": "string",
            "description": "Optionally the second line of the customer's shipping address.",
            "nullable": true
          },
          "shippingAddressCity": {
            "pattern": "[^\\<\\>]+",
            "type": "string",
            "description": "Optionally the city of the customer's shipping address.",
            "nullable": true
          },
          "shippingAddressCounty": {
            "pattern": "[^\\<\\>]+",
            "type": "string",
            "description": "Optionally the state or county of the customer's shipping address.",
            "nullable": true
          },
          "shippingAddressPostCode": {
            "pattern": "[^\\<\\>]+",
            "type": "string",
            "description": "Optionally the post code of the customer's shipping address.",
            "nullable": true
          },
          "shippingAddressCountryCode": {
            "pattern": "[^\\<\\>]+",
            "type": "string",
            "description": "Optionally the country code of the customer's shipping address.",
            "nullable": true
          },
          "shippingPhone": {
            "pattern": "[0-9\\+\\- ]+",
            "type": "string",
            "description": "Optionally the shipping phone number for the customer.",
            "nullable": true
          },
          "shippingEmail": {
            "type": "string",
            "description": "Optionally the shipping email address for the customer.",
            "format": "email",
            "nullable": true
          },
          "baseOriginUrl": {
            "type": "string",
            "description": "For card payments the origin of the payment page needs to be set in advance.\r\nA public key context is generated to encrypt sensitive card details and is bound\r\nto a single origin URL.",
            "nullable": true
          },
          "callbackUrl": {
            "type": "string",
            "description": "Once a payment is processed, or a notification of an inbound payment is received,\r\na callback request will be made to this URL. Typically it will be the page on\r\na merchant's web site that displays the results of the payment attempt.",
            "nullable": true
          },
          "failureCallbackUrl": {
            "type": "string",
            "description": "Optional callback URL for payment failures that can occur when the payer is \r\nredirected away from the payment page. Typically the payer is only sent away\r\nfrom the payment page for pay by bank attempts. If this URL is not set the \r\npayer will be redirected back to the original URL the payment attempt was initiated\r\nfrom.",
            "nullable": true
          },
          "cardAuthorizeOnly": {
            "type": "boolean",
            "description": "For card payments the default behaviour is to authorise and capture the payment at the same\r\ntime. If a merchant needs to authorise and then capture at a later point this property needs\r\nto be set to true.",
            "nullable": true
          },
          "cardCreateToken": {
            "type": "boolean",
            "description": "For card payments a payment attempt can be used to create a reusable token for subsequent\r\npayments. Setting this field to true will create a reusable customer token.",
            "nullable": true
          },
          "cardCreateTokenMode": {
            "enum": [
              "None",
              "ConsentNotRequired",
              "UserConsentRequired"
            ],
            "type": "string",
            "description": "This specifies whether user consent will be taken before tokenising card or not.\r\nThis cannot be 'None' if CardCreateToken is set to true. If this is set to 'UserConsentRequired'\r\nthen, the user consent will overwrite CardCreateToken flag on submit card payment.",
            "nullable": true
          },
          "ignoreAddressVerification": {
            "type": "boolean",
            "nullable": true
          },
          "cardIgnoreCVN": {
            "type": "boolean",
            "nullable": true
          },
          "cardProcessorMerchantID": {
            "pattern": "[a-zA-Z0-9]+",
            "type": "string",
            "description": "Optional field that if specified indicates the processor merchant ID that should be used\r\nto process any card payments. Mainly useful where a merchant has multiple processor\r\nmerchant ID's. If left empty the default merchant card settings will be used.",
            "nullable": true
          },
          "customerEmailAddress": {
            "type": "string",
            "description": "Optional email address for the customer. If the tokenise card option is set then the customer email address\r\nis mandatory.",
            "format": "email",
            "nullable": true
          },
          "notificationEmailAddresses": {
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "A generic field to contain any additional data that the merchant wishes to store against the payment request.\r\nE.g. product or service information.",
            "nullable": true
          },
          "partialPaymentSteps": {
            "type": "string",
            "description": "An optional comma separated list of partial payment amounts. The amounts represent guidance, or suggestions, as to\r\nhow the payer will be requested to make partial payments.",
            "nullable": true
          },
          "tagIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "An optional list of tag ids to add to the payment request",
            "nullable": true
          },
          "lightningInvoice": {
            "type": "string",
            "description": "Bitcoin Lightning invoice for the payment request.",
            "nullable": true
          },
          "lightningInvoiceExpiresAt": {
            "type": "string",
            "description": "Date and time of expiration of the lightning invoice.",
            "format": "date-time",
            "nullable": true
          },
          "autoSendReceipt": {
            "type": "boolean",
            "description": "If set to true, a receipt will be automatically sent to the CustomerEmailAddress when payments are received.",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestCustomFieldCreate"
            },
            "description": "A list of custom fields to add to the payment request. The custom fields\r\nare data type agnostic which means that the API will not do any validation or formatting\r\nin the key-value pairs. The API will store the custom fields as is.",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "description": "The due date of the payment request.",
            "format": "date-time",
            "nullable": true
          },
          "successWebHookUrl": {
            "type": "string",
            "description": "If a payment event results in the payment request being classified as fully paid this\r\nsuccess webhook URL will be invoked. The URL will be invoked as a GET request, i.e.\r\nthere will be no request body. Two query parameters will be added to the URL. The \r\nfirst one will be \"id\" and will hold the payment request ID. The second one will be\r\n\"orderid\" and will hold the payment request OrderID, note the OrderID could be empty\r\nif it was not set when the payment request was created.\r\nThe recommended approach when receiving a success web hook is to use the \"id\" parameter\r\nto call the moneymoov get payment request endpoint to retrieve the full details of the\r\npayment request and check the status. Web hooks can be easily spoofed and should not be\r\nrelied upon.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequests.BankPaymentOptions": {
        "type": "object",
        "properties": {
          "destinationAccounts": {
            "type": "object",
            "properties": {
              "NONE": {
                "type": "string",
                "format": "uuid"
              },
              "GBP": {
                "type": "string",
                "format": "uuid"
              },
              "EUR": {
                "type": "string",
                "format": "uuid"
              },
              "USD": {
                "type": "string",
                "format": "uuid"
              },
              "AUD": {
                "type": "string",
                "format": "uuid"
              },
              "BGN": {
                "type": "string",
                "format": "uuid"
              },
              "CAD": {
                "type": "string",
                "format": "uuid"
              },
              "CZK": {
                "type": "string",
                "format": "uuid"
              },
              "DKK": {
                "type": "string",
                "format": "uuid"
              },
              "HUF": {
                "type": "string",
                "format": "uuid"
              },
              "ISK": {
                "type": "string",
                "format": "uuid"
              },
              "CHF": {
                "type": "string",
                "format": "uuid"
              },
              "NOK": {
                "type": "string",
                "format": "uuid"
              },
              "PLN": {
                "type": "string",
                "format": "uuid"
              },
              "RON": {
                "type": "string",
                "format": "uuid"
              },
              "AED": {
                "type": "string",
                "format": "uuid"
              },
              "CNH": {
                "type": "string",
                "format": "uuid"
              },
              "HKD": {
                "type": "string",
                "format": "uuid"
              },
              "ILS": {
                "type": "string",
                "format": "uuid"
              },
              "JPY": {
                "type": "string",
                "format": "uuid"
              },
              "MXN": {
                "type": "string",
                "format": "uuid"
              },
              "NZD": {
                "type": "string",
                "format": "uuid"
              },
              "SAR": {
                "type": "string",
                "format": "uuid"
              },
              "SEK": {
                "type": "string",
                "format": "uuid"
              },
              "SGD": {
                "type": "string",
                "format": "uuid"
              },
              "TRY": {
                "type": "string",
                "format": "uuid"
              },
              "ZAR": {
                "type": "string",
                "format": "uuid"
              },
              "BTC": {
                "type": "string",
                "format": "uuid"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "allowOverride": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequests.CardPaymentAddressOptions": {
        "type": "object",
        "properties": {
          "requireAddress": {
            "type": "boolean"
          },
          "allowOverride": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequests.CardPaymentCaptureOptions": {
        "type": "object",
        "properties": {
          "automatic": {
            "type": "boolean"
          },
          "allowOverride": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequests.MerchantPaymentRequestTemplate": {
        "required": [
          "description",
          "name",
          "template"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "template": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestTemplate"
          },
          "inserted": {
            "type": "string",
            "format": "date-time"
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequests.NotificationOptions": {
        "type": "object",
        "properties": {
          "creator": {
            "type": "boolean"
          },
          "userRoles": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "nullable": true
          },
          "externalRecipients": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "allowOverride": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentMethods": {
        "type": "object",
        "properties": {
          "bank": {
            "type": "boolean"
          },
          "card": {
            "type": "boolean"
          },
          "apple": {
            "type": "boolean"
          },
          "google": {
            "type": "boolean"
          },
          "allowOverride": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestAuthorization": {
        "type": "object",
        "properties": {
          "paymentRequestID": {
            "type": "string",
            "description": "The ID of the payment request the pisp authorization is for.",
            "format": "uuid"
          },
          "occurredAt": {
            "type": "string",
            "description": "Timestamp the pisp authorization occurred.",
            "format": "date-time"
          },
          "paymentMethod": {
            "enum": [
              "None",
              "card",
              "pisp",
              "lightning",
              "cardtoken",
              "applePay",
              "googlePay",
              "directDebit"
            ],
            "type": "string",
            "description": "The payment type for the received money."
          },
          "amount": {
            "type": "number",
            "description": "The authorised payment amount.",
            "format": "double"
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "The authorised payment currency."
          },
          "pispPaymentInitiationID": {
            "type": "string",
            "description": "For a payment initiation this is the ID returned by the service provider initiating\r\nthe payment for us.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestCustomField": {
        "required": [
          "name",
          "value"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "displayOnHostedPaymentPage": {
            "type": "boolean"
          },
          "displayOnPaymentReceipt": {
            "type": "boolean"
          },
          "displayOrder": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestCustomFieldCreate": {
        "required": [
          "name",
          "value"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "The name of the custom field."
          },
          "value": {
            "minLength": 1,
            "type": "string",
            "description": "The value of the custom field."
          },
          "displayOnHostedPaymentPage": {
            "type": "boolean",
            "description": "If true, the custom field will be displayed on the hosted payment page."
          },
          "displayOnPaymentReceipt": {
            "type": "boolean",
            "description": "If true, the custom field will be displayed on the payment receipt."
          },
          "displayOrder": {
            "type": "integer",
            "description": "The display order of the custom field. The lowest number is displayed first.\r\nThis is used to determine the order in which the custom fields are displayed\r\non the UI, for example, on the hosted payment page and payment receipt.",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestFieldDisplaySetting": {
        "type": "object",
        "properties": {
          "field": {
            "enum": [
              "None",
              "Description",
              "Customer",
              "DueDate"
            ],
            "type": "string",
            "description": "The field for which the display settings are defined."
          },
          "displayOnHostedPaymentPage": {
            "type": "boolean",
            "description": "If false, the field will not be displayed on the hosted payment page."
          },
          "displayOnPaymentReceipt": {
            "type": "boolean",
            "description": "If false, the field will not be displayed on the payment receipt."
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestTemplate": {
        "type": "object",
        "properties": {
          "paymentMethods": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentMethods"
          },
          "paymentTerms": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentTerms"
          },
          "notificationOptions": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.NotificationOptions"
          },
          "bankPaymentOptions": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.BankPaymentOptions"
          },
          "priorityBankOptions": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PriorityBankOptions"
          },
          "cardPaymentAddressOptions": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.CardPaymentAddressOptions"
          },
          "cardPaymentCaptureOptions": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.CardPaymentCaptureOptions"
          },
          "defaultFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestTemplateDefaultField"
            },
            "description": "A list of default fields that are included in the payment request template.\r\nThese fields are predefined and map to concrete fields in the payment request.",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestTemplateCustomField"
            },
            "description": "A list of custom fields that can be included in the payment request template.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestTemplateCustomField": {
        "required": [
          "description",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "displayOrder": {
            "type": "integer",
            "description": "The display order of the custom field. The lowest number is displayed first.\r\nThis can be used to determine the order in which\r\nthe fields are displayed when creating a payment request.",
            "format": "int32"
          },
          "displayOnHostedPaymentPage": {
            "type": "boolean"
          },
          "displayOnPaymentReceipt": {
            "type": "boolean"
          },
          "requirement": {
            "enum": [
              "Optional",
              "Required",
              "Hidden"
            ],
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestTemplateDefaultField": {
        "required": [
          "defaultField"
        ],
        "type": "object",
        "properties": {
          "defaultField": {
            "enum": [
              "None",
              "Description",
              "Customer",
              "DestinationAccount",
              "DueDate"
            ],
            "type": "string",
            "description": "This enum defines the type of field in a payment request template.\r\nIt is one of the predefined types that map to\r\nconcrete fields in the payment request."
          },
          "displayOnHostedPaymentPage": {
            "type": "boolean"
          },
          "displayOnPaymentReceipt": {
            "type": "boolean"
          },
          "requirement": {
            "enum": [
              "Optional",
              "Required",
              "Hidden"
            ],
            "type": "string"
          }
        },
        "additionalProperties": false,
        "description": "This represents a default field in a payment request template.\r\nDefault fields are predefined fields that map to concrete payment request properties."
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestTemplateUpdate": {
        "required": [
          "description",
          "name",
          "template"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "template": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentRequestTemplate"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequests.PaymentTerms": {
        "type": "object",
        "properties": {
          "allowPartialPayments": {
            "type": "boolean"
          },
          "allowOverride": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PaymentRequests.PriorityBankOptions": {
        "type": "object",
        "properties": {
          "priorityBankIDs": {
            "type": "object",
            "properties": {
              "NONE": {
                "type": "string",
                "format": "uuid"
              },
              "GBP": {
                "type": "string",
                "format": "uuid"
              },
              "EUR": {
                "type": "string",
                "format": "uuid"
              },
              "USD": {
                "type": "string",
                "format": "uuid"
              },
              "AUD": {
                "type": "string",
                "format": "uuid"
              },
              "BGN": {
                "type": "string",
                "format": "uuid"
              },
              "CAD": {
                "type": "string",
                "format": "uuid"
              },
              "CZK": {
                "type": "string",
                "format": "uuid"
              },
              "DKK": {
                "type": "string",
                "format": "uuid"
              },
              "HUF": {
                "type": "string",
                "format": "uuid"
              },
              "ISK": {
                "type": "string",
                "format": "uuid"
              },
              "CHF": {
                "type": "string",
                "format": "uuid"
              },
              "NOK": {
                "type": "string",
                "format": "uuid"
              },
              "PLN": {
                "type": "string",
                "format": "uuid"
              },
              "RON": {
                "type": "string",
                "format": "uuid"
              },
              "AED": {
                "type": "string",
                "format": "uuid"
              },
              "CNH": {
                "type": "string",
                "format": "uuid"
              },
              "HKD": {
                "type": "string",
                "format": "uuid"
              },
              "ILS": {
                "type": "string",
                "format": "uuid"
              },
              "JPY": {
                "type": "string",
                "format": "uuid"
              },
              "MXN": {
                "type": "string",
                "format": "uuid"
              },
              "NZD": {
                "type": "string",
                "format": "uuid"
              },
              "SAR": {
                "type": "string",
                "format": "uuid"
              },
              "SEK": {
                "type": "string",
                "format": "uuid"
              },
              "SGD": {
                "type": "string",
                "format": "uuid"
              },
              "TRY": {
                "type": "string",
                "format": "uuid"
              },
              "ZAR": {
                "type": "string",
                "format": "uuid"
              },
              "BTC": {
                "type": "string",
                "format": "uuid"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "allowOverride": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Payout": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The ID for the payout.",
            "format": "uuid"
          },
          "payrunID": {
            "type": "string",
            "description": "The ID of the payrun that this payout is associated with.",
            "format": "uuid",
            "nullable": true
          },
          "accountID": {
            "type": "string",
            "description": "Gets or Sets Account Id of sending account",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "description": "The ID of the merchant that owns the account.",
            "format": "uuid"
          },
          "userID": {
            "type": "string",
            "description": "Gets or Sets User ID of who created the payout request",
            "format": "uuid",
            "nullable": true
          },
          "approverID": {
            "type": "string",
            "description": "Gets the User ID of person that approved the payout.",
            "format": "uuid",
            "nullable": true
          },
          "topupPayrunID": {
            "type": "string",
            "description": "The ID of a payrun that needs an account top up. \r\nPayouts can be used to top up payrun accounts.",
            "format": "uuid",
            "nullable": true
          },
          "type": {
            "enum": [
              "Unknown",
              "SCAN",
              "IBAN",
              "DD",
              "BTC",
              "BIC"
            ],
            "type": "string",
            "description": "Gets or Sets payout type"
          },
          "description": {
            "type": "string",
            "description": "Gets or Sets description of payout request",
            "nullable": true
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "Gets or Sets Currency of payout request"
          },
          "amount": {
            "type": "number",
            "description": "Gets or Sets payout amount",
            "format": "double"
          },
          "amountMinorUnits": {
            "type": "integer",
            "description": "The payout amount expressed in the currency’s minor units (e.g. cents, pence).",
            "format": "int64",
            "readOnly": true
          },
          "formattedAmount": {
            "type": "string",
            "description": "Currency and formatted amount string.",
            "nullable": true,
            "readOnly": true
          },
          "yourReference": {
            "type": "string",
            "description": "Gets or Sets your reference ID",
            "nullable": true
          },
          "theirReference": {
            "type": "string",
            "description": "Gets or Sets destination reference ID",
            "nullable": true
          },
          "canProcess": {
            "type": "boolean",
            "description": "If set to true indicates the payout has been flagged as safe to process after transaction monitoring."
          },
          "batchPayoutID": {
            "type": "string",
            "description": "The ID of the batch the payout is associated with.",
            "format": "uuid",
            "nullable": true
          },
          "merchantTokenDescription": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "enum": [
              "UNKNOWN",
              "REJECTED",
              "PENDING",
              "PROCESSED",
              "PENDING_APPROVAL",
              "QUEUED_UPSTREAM",
              "QUEUED",
              "FAILED",
              "PENDING_INPUT",
              "SCHEDULED",
              "REJECTED_APPROVAL"
            ],
            "type": "string",
            "description": "Gets or Sets the status of payout request"
          },
          "currentUserID": {
            "type": "string",
            "description": "The ID of the user that requested access to the PayOut record. Note\r\nthis is NOT necessarily the user that created it.",
            "format": "uuid",
            "nullable": true
          },
          "approvePayoutUrl": {
            "type": "string",
            "description": "This field is used when returning an payout record to a client. If set it holds the URL\r\nthe user needs to visit in order to complete a strong authentication check in order to approve \r\nthe payout.",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "createdByEmailAddress": {
            "type": "string",
            "nullable": true
          },
          "inserted": {
            "type": "string",
            "format": "date-time"
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time"
          },
          "sourceAccountCurrency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "The currency of the source account."
          },
          "sourceAccountName": {
            "type": "string",
            "description": "The name of the account the payout is being made from.",
            "nullable": true
          },
          "sourceAccountIban": {
            "type": "string",
            "description": "The IBAN of the account the payout is being made from.",
            "nullable": true
          },
          "sourceAccountNumber": {
            "type": "string",
            "description": "The account number of the account the payout is being made from.",
            "nullable": true
          },
          "sourceAccountSortcode": {
            "type": "string",
            "description": "The sort code of the account the payout is being made from.",
            "nullable": true
          },
          "sourceAccountBic": {
            "type": "string",
            "description": "The BIC of the account the payout is being made from.",
            "nullable": true
          },
          "sourceAccountIdentifier": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.AccountIdentifier"
          },
          "sourceAccountAvailableBalance": {
            "type": "number",
            "description": "The available balance of the account the payout is being made from.",
            "format": "double",
            "nullable": true
          },
          "sourceAccountAvailableBalanceMinorUnits": {
            "type": "integer",
            "description": "The available balance of the source account expressed in the currency’s minor units (e.g. cents, pence).",
            "format": "int64",
            "nullable": true,
            "readOnly": true
          },
          "formattedSourceAccountAvailableBalance": {
            "type": "string",
            "description": "The available balance of the account the payout is being made from.",
            "nullable": true,
            "readOnly": true
          },
          "destination": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Counterparty"
          },
          "invoiceID": {
            "type": "string",
            "description": "Optional field to associate the payout with the invoice from an external \r\napplication such as Xero. The InvoiceID needs to be unique for each\r\naccount.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Tag"
            },
            "description": "An optional list of descriptive tags attached to the payout.",
            "nullable": true
          },
          "scheduled": {
            "type": "boolean",
            "description": "Should this payout be scheduled for a future date?",
            "nullable": true
          },
          "scheduleDate": {
            "type": "string",
            "description": "The date the payout should be submitted.",
            "format": "date-time",
            "nullable": true
          },
          "formattedScheduleDayOnly": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "formattedSchedule": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "authorisersRequiredCount": {
            "type": "integer",
            "description": "The number of authorisers required for this payout. Is determined by business settings\r\non the source account and/or merchant.",
            "format": "int32"
          },
          "authorisersCompletedCount": {
            "type": "integer",
            "description": "The number of distinct authorisers that have authorised the payout.",
            "format": "int32"
          },
          "canAuthorise": {
            "type": "boolean",
            "description": "True if the payout can be authorised by the user who loaded it."
          },
          "canUpdate": {
            "type": "boolean",
            "description": "True if the payout can be updated by the user who loaded it."
          },
          "hasCurrentUserAuthorised": {
            "type": "boolean",
            "description": "True if the payout was loaded for a user and that user has already authorised the latest version of the payout."
          },
          "authorisations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Approve.Authorisation"
            },
            "description": "A list of the users who have successfully authorised the latest version of the payout and when.",
            "nullable": true
          },
          "authenticationMethods": {
            "type": "array",
            "items": {
              "enum": [
                "None",
                "WebAuthn",
                "OneTimePassword"
              ],
              "type": "string"
            },
            "description": "A list of authentication types allowed to authorise the payout.",
            "nullable": true
          },
          "payrunName": {
            "type": "string",
            "description": "The name of the payrun that this payout is associated with.",
            "nullable": true
          },
          "beneficiary": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Beneficiary"
          },
          "paymentProcessor": {
            "enum": [
              "None",
              "CyberSource",
              "Checkout",
              "Stripe",
              "Modulr",
              "Plaid",
              "Yapily",
              "Nofrixion",
              "Bitcoin",
              "BitcoinTestnet",
              "BankingCircle",
              "BankingCircleAgency",
              "Simulator",
              "Lightning",
              "LightningTestnet",
              "BankingCircleDirectDebit",
              "Technoxander"
            ],
            "type": "string",
            "description": "The usptream payment processor for the payout."
          },
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutEvent"
            },
            "description": "The activity associated with the payout.",
            "nullable": true
          },
          "rule": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.RuleMinimal"
          },
          "paymentRail": {
            "enum": [
              "Default",
              "SEPA_CT",
              "SEPA_INST",
              "TARGET2"
            ],
            "type": "string",
            "description": "Optional field to indicate the preferred payment rail intent for the payout.\r\nIf not set, provider default routing logic is applied."
          },
          "nonce": {
            "type": "string",
            "nullable": true
          },
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutDocument"
            },
            "description": "Documents associated with the payout.",
            "nullable": true
          },
          "chargeBearer": {
            "enum": [
              "Default",
              "BEN",
              "OUR",
              "SHA"
            ],
            "type": "string",
            "description": "Optional field to set who should pay any fees for the payout. Typically only\r\nused for international payments and ignored for SEPA and Faster Payments."
          },
          "isSubmitted": {
            "type": "boolean",
            "description": "Indicates whether the payout has been submitted for processing. Once submitted the payout\r\namount is reserved until the payout is marked as failed or settled."
          },
          "isFailed": {
            "type": "boolean",
            "description": "Set to true if a submitted payout subsequently fails. If a payout fails the amount is\r\nremvoed from the account's reserved balance."
          },
          "isSettled": {
            "type": "boolean",
            "description": "Set to true if a payout was successfully processed and the corresponding transaction has been\r\nrecorded on the ledger."
          },
          "fxDestinationCurrency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "For an FX payout this is the currency to send to the beneficiary.",
            "nullable": true
          },
          "fxRate": {
            "type": "number",
            "description": "For an FX payout this is the exchange rate to use for the payout.",
            "format": "double",
            "nullable": true
          },
          "fxDestinationAmount": {
            "type": "number",
            "description": "If specified this will be the amount sent to the payee. The payout's Amount will be dynamically adjusted based on \r\nthis amount and the FX rate.",
            "format": "double",
            "nullable": true
          },
          "fxUseDestinationAmount": {
            "type": "boolean",
            "description": "For a multi-currency payout this indicates how the Amount and FxDestinationAmount are treated.\r\nIf true the FxDestinationAmount is authoritative and the Amount is set based on the FxRate. If false then the Amount is authoritative\r\nand the FxDestinationAmount is set based on the Amount and FxRate."
          },
          "fxDestinationAmountMinorUnits": {
            "type": "integer",
            "description": "The payout FxDestinationAmount expressed in the currency’s minor units (e.g. cents, pence).",
            "format": "int64",
            "nullable": true,
            "readOnly": true
          },
          "formattedFxDestinationAmount": {
            "type": "string",
            "description": "FX destination currency and amount formatted string.",
            "nullable": true,
            "readOnly": true
          },
          "fxQuoteID": {
            "type": "string",
            "description": "Optional. For multi-currency payouts this is the ID of the held rate that was set for the FX conversion. If\r\nempty it indicates the mid-market FX rate is being be used.",
            "nullable": true
          },
          "fxQuoteExpiresAt": {
            "type": "string",
            "description": "If an FX held rate quote ID is being used this is the time the quote expires.",
            "format": "date-time",
            "nullable": true
          },
          "transactedFxRate": {
            "type": "number",
            "description": "The actual FX rate applied during settlement, as recorded on the associated transaction.\r\nNull if the payout has no settled FX transaction.",
            "format": "double",
            "nullable": true
          },
          "transactedFxAmount": {
            "type": "number",
            "description": "The actual amount received by the beneficiary in NoFrixion.MoneyMoov.Models.Payout.FxDestinationCurrency, as recorded\r\non the settled transaction. When NoFrixion.MoneyMoov.Models.Payout.FxUseDestinationAmount is `true` the beneficiary's\r\nreceived amount was fixed at creation, so this should closely match NoFrixion.MoneyMoov.Models.Payout.FxDestinationAmount.\r\nWhen NoFrixion.MoneyMoov.Models.Payout.FxUseDestinationAmount is `false` the debit amount was fixed, so this may\r\ndiffer from the estimated NoFrixion.MoneyMoov.Models.Payout.FxDestinationAmount due to rate movement between quote and settlement.\r\nNull if the payout has no settled FX transaction.",
            "format": "double",
            "nullable": true
          },
          "transactedAmount": {
            "type": "number",
            "description": "The actual amount debited from the account in NoFrixion.MoneyMoov.Models.Payout.Currency, as recorded on the settled\r\ntransaction. When NoFrixion.MoneyMoov.Models.Payout.FxUseDestinationAmount is `false` the debit amount was fixed\r\nat creation, so this should closely match NoFrixion.MoneyMoov.Models.Payout.Amount. When NoFrixion.MoneyMoov.Models.Payout.FxUseDestinationAmount\r\nis `true` the beneficiary's received amount was fixed, so this may differ from the estimated\r\nNoFrixion.MoneyMoov.Models.Payout.Amount due to rate movement between quote and settlement.\r\nNull for non-FX payouts and payouts with no settled transaction.",
            "format": "double",
            "nullable": true
          },
          "isArchived": {
            "type": "boolean",
            "description": "Indicates whether the payout is archived."
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PayoutCreate": {
        "required": [
          "accountID",
          "currency",
          "type"
        ],
        "type": "object",
        "properties": {
          "accountID": {
            "type": "string",
            "description": "The ID of the source account for the payout.",
            "format": "uuid"
          },
          "type": {
            "enum": [
              "Unknown",
              "SCAN",
              "IBAN",
              "DD",
              "BTC",
              "BIC"
            ],
            "type": "string",
            "description": "The type of account identifier to use for the payout destination.",
            "example": "IBAN"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "currency": {
            "enum": [
              "EUR",
              "GBP",
              "USD"
            ],
            "type": "string",
            "description": "Source payout currency. Swagger narrows this property to the currencies\r\ncurrently configured for holding accounts. The authoritative list for the\r\ncurrent environment is exposed by GET /api/v1/currencies?capability=Holding."
          },
          "amount": {
            "minimum": 0.0001,
            "type": "number",
            "description": "Optional but one of Amount or FxDestinationAmount must be set. \r\n- For single currency payouts this property is mandatory. \r\n- For multi-currency payouts this property is optional. If FxDestinationAmount is set this field must be set to 0\r\nand it will be dynamically adjusted based on the FX rate.",
            "format": "double",
            "nullable": true
          },
          "yourReference": {
            "type": "string",
            "description": "The Your reference field is an optional field that gets set locally on the payer's transaction record. It does not get \r\nsent out through the payment network. The maximum length for the field is 256 characters. An empty value is also supported.\r\nSupported chracters:\r\na b c d e f g h i j k l m n o p q r s t u v w x y z\r\nA B C D E F G H I J K L M N O P Q R S T U V W X Y Z\r\n0 1 2 3 4 5 6 7 8 9\r\n/ - ? : ( ) . , ' + Space\r\nIn addition the field cannot start with a : or - character.",
            "nullable": true
          },
          "theirReference": {
            "type": "string",
            "description": "The Their reference field gets sent to the payee and appears on their transaction record. \r\nThe maximum length for the field varies depending on the payment network. For SEPA (Euro) it is 140 characters. For Faster Payments (GBP) it is 18 characters.\r\na b c d e f g h i j k l m n o p q r s t u v w x y z\r\nA B C D E F G H I J K L M N O P Q R S T U V W X Y Z\r\n0 1 2 3 4 5 6 7 8 9\r\n/ - ? : ( ) . , ' + Space\r\nIn addition the field cannot start with a : or - character.",
            "nullable": true
          },
          "destination": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.CounterpartyCreate"
          },
          "invoiceID": {
            "type": "string",
            "description": "Optional field to associate the payout with the invoice from an external \r\napplication such as Xero. The InvoiceID needs to be unique for each\r\naccount.",
            "nullable": true
          },
          "allowIncomplete": {
            "type": "boolean",
            "description": "If set to true the payout will get created even if the business validation \r\nrules fail. The basic data validation rules must still pass. The original \r\npurpose of this flag was to allow payouts to be created from i3rd party applications,\r\nsuch as Xero, that may not have things like an IBAN set for a supplier.\r\nThe missing information must be filled, either by an update from the 3rd party\r\napplication, or manually, before the payout can be submitted for processing."
          },
          "tagIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "An optional list of tag ids to add to the payout.",
            "nullable": true
          },
          "scheduled": {
            "type": "boolean",
            "description": "Should this payout be scheduled for a future date?"
          },
          "scheduleDate": {
            "type": "string",
            "description": "The date the payout should be submitted.",
            "format": "date-time",
            "nullable": true
          },
          "beneficiaryID": {
            "type": "string",
            "description": "Optional. The ID of the beneficiary to use for the payout destination.",
            "format": "uuid",
            "nullable": true
          },
          "batchPayoutID": {
            "type": "string",
            "description": "The ID of the batch payout this payout is part of.",
            "format": "uuid",
            "nullable": true
          },
          "topupPayrunID": {
            "type": "string",
            "description": "Optional, if set it indicates that this payout will be used to top up \r\na payment account for a pay run by an internal transfer.",
            "format": "uuid",
            "nullable": true
          },
          "paymentRail": {
            "enum": [
              "Default",
              "SEPA_CT",
              "SEPA_INST",
              "TARGET2"
            ],
            "type": "string",
            "description": "Optional field to indicate the preferred payment rail intent for the payout.\r\nIf not set, provider default routing logic is applied."
          },
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayoutDocumentCreate"
            },
            "description": "List of documents to attach to the payout. Optional.\r\nUsed for identifying or associating documents with the payout.",
            "nullable": true
          },
          "chargeBearer": {
            "enum": [
              "Default",
              "BEN",
              "OUR",
              "SHA"
            ],
            "type": "string",
            "description": "Optional field to set who should pay any fees for the payout. Typically only\r\nused for international payments and ignored for SEPA and Faster Payments."
          },
          "fxDestinationCurrency": {
            "enum": [
              "AED",
              "AUD",
              "CAD",
              "CHF",
              "CNH",
              "CZK",
              "DKK",
              "EUR",
              "GBP",
              "HKD",
              "HUF",
              "ILS",
              "JPY",
              "MXN",
              "NOK",
              "NZD",
              "PLN",
              "RON",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "USD",
              "ZAR"
            ],
            "type": "string",
            "description": "Optional. For an FX payout this is the currency that the beneficiary should be sent.\r\nSwagger narrows this property to the currencies currently configured for\r\nFX conversion support. The authoritative list for the current environment\r\nis exposed by GET /api/v1/currencies?capability=FxConversion.",
            "nullable": true
          },
          "fxDestinationAmount": {
            "type": "number",
            "description": "Optional but one of Amount or FxDestinationAmount must be set. If specified this will be the amount sent to the payee.\r\nThe payout's Amount will be dynamically adjusted based on this amount and the FX rate.",
            "format": "double",
            "nullable": true
          },
          "fxUseDestinationAmount": {
            "type": "boolean",
            "description": "For a multi-currency payout this indicates how the Amount and FxDestinationAmount are treated.\r\nIf true the FxDestinationAmount is authoritative and the Amount is set based on the FxRate. If false then the Amount is authoritative\r\nand the FxDestinationAmount is set based on the Amount and FxRate."
          },
          "fxQuoteID": {
            "type": "string",
            "description": "Optional. For multi-currency payouts this is the ID of a held rate that can be used for the FX conversion. If left\r\nempty the mid-market FX rate will be used.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional list of tag names to add to the payout.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PayoutDocument": {
        "required": [
          "documentType",
          "title"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Internal ID of the document.",
            "format": "uuid"
          },
          "inserted": {
            "type": "string",
            "description": "Date of insertion.",
            "format": "date-time"
          },
          "documentType": {
            "enum": [
              "Other",
              "Invoice",
              "PurchaseOrder"
            ],
            "type": "string",
            "description": "Type of the document."
          },
          "title": {
            "maxLength": 128,
            "minLength": 1,
            "type": "string",
            "description": "Used to identify the document."
          },
          "description": {
            "maxLength": 256,
            "type": "string",
            "description": "Additional information about the document. Optional.",
            "nullable": true
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "Currency of the document, if applicable. Optional.",
            "nullable": true
          },
          "amount": {
            "type": "number",
            "description": "Amount of the document, if applicable. Optional.",
            "format": "double",
            "nullable": true
          },
          "externalID": {
            "maxLength": 128,
            "type": "string",
            "description": "Allows to associate an external ID to the document. Optional.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used for returning a payout document."
      },
      "NoFrixion.MoneyMoov.Models.PayoutDocumentCreate": {
        "required": [
          "documentType",
          "title"
        ],
        "type": "object",
        "properties": {
          "documentType": {
            "enum": [
              "Other",
              "Invoice",
              "PurchaseOrder"
            ],
            "type": "string",
            "description": "Type of the document."
          },
          "title": {
            "maxLength": 128,
            "minLength": 1,
            "type": "string",
            "description": "Used to identify the document."
          },
          "description": {
            "maxLength": 256,
            "type": "string",
            "description": "Additional information about the document. Optional.",
            "nullable": true
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "Currency of the document, if applicable. Optional.",
            "nullable": true
          },
          "amount": {
            "type": "number",
            "description": "Amount of the document, if applicable. Optional.",
            "format": "double",
            "nullable": true
          },
          "externalID": {
            "maxLength": 128,
            "type": "string",
            "description": "Allows to associate an external ID to the document. Optional.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Document associated with a payout."
      },
      "NoFrixion.MoneyMoov.Models.PayoutEvent": {
        "type": "object",
        "properties": {
          "userID": {
            "type": "string",
            "description": "The user id of the user who the event is for.",
            "format": "uuid"
          },
          "userName": {
            "type": "string",
            "description": "The user name of the user who the event is for.",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "description": "Event timestamp.",
            "format": "date-time"
          },
          "status": {
            "enum": [
              "UNKNOWN",
              "REJECTED",
              "PENDING",
              "PROCESSED",
              "PENDING_APPROVAL",
              "QUEUED_UPSTREAM",
              "QUEUED",
              "FAILED",
              "PENDING_INPUT",
              "SCHEDULED",
              "REJECTED_APPROVAL"
            ],
            "type": "string",
            "description": "Status of the payout."
          },
          "eventType": {
            "enum": [
              "Unknown",
              "Authorise",
              "Initiate",
              "Webhook",
              "Settle",
              "Failure",
              "Created",
              "Queued",
              "Scheduled",
              "BeneficiaryUpdated",
              "BeneficiaryDisabled",
              "Edited",
              "RejectedApproval",
              "TrustedAuthorise",
              "Signed",
              "BeneficiaryEnabled",
              "SubmitAttemptError",
              "PayeeVerificationInitiated",
              "PayeeVerificationComplete",
              "PayeeVerificationFailed"
            ],
            "type": "string",
            "description": "The event type."
          },
          "ruleName": {
            "type": "string",
            "description": "The name of the rule that triggered the event.",
            "nullable": true
          },
          "errorReason": {
            "type": "string",
            "description": "Reason for the error, if any.",
            "nullable": true
          },
          "supplierPayeeVerificationResult": {
            "type": "string",
            "description": "If this event is a payee verification event, this contains the result of the verification.",
            "nullable": true
          },
          "payeeVerifiedAccountName": {
            "type": "string",
            "description": "If this event is a payee verification complete event and the result is a close match,\r\nthis contains the actual verified name returned by the payee verification supplier.",
            "nullable": true
          },
          "payoutID": {
            "type": "string",
            "description": "The payout ID the event is for.",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PayoutKeysetPageResponse": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
            },
            "nullable": true
          },
          "lastKey": {
            "type": "string",
            "nullable": true
          },
          "hasMorePages": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PayoutMetrics": {
        "type": "object",
        "properties": {
          "all": {
            "type": "number",
            "description": "Total payout count.",
            "format": "double"
          },
          "inProgress": {
            "type": "number",
            "description": "Payouts with Pending, Queued or QueuedUpstream status.",
            "format": "double"
          },
          "pendingApproval": {
            "type": "number",
            "description": "Payouts with PendingApproval or PendingInput status.",
            "format": "double"
          },
          "failed": {
            "type": "number",
            "description": "Payouts with Failed, Rejected or Unknown status.",
            "format": "double"
          },
          "paid": {
            "type": "number",
            "description": "Payouts with Processed status.",
            "format": "double"
          },
          "scheduled": {
            "type": "number",
            "description": "Payouts with Scheduled status.",
            "format": "double"
          },
          "totalAmountsByCurrency": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "number",
                "format": "double"
              }
            },
            "description": "The total amounts by status and currency.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PayoutReject": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PayoutUpdate": {
        "type": "object",
        "properties": {
          "accountID": {
            "type": "string",
            "description": "The ID of the source account for the payout.",
            "format": "uuid",
            "nullable": true
          },
          "type": {
            "enum": [
              "Unknown",
              "SCAN",
              "IBAN",
              "DD",
              "BTC",
              "BIC"
            ],
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "nullable": true
          },
          "amount": {
            "minimum": 0.0001,
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "yourReference": {
            "type": "string",
            "description": "The Your reference field is an optional field that gets set locally on the payer's transaction record. It does not get \r\nsent out through the payment network. The maximum length for the field is 256 characters. An empty value is also supported.\r\nSupported characters:\r\na b c d e f g h i j k l m n o p q r s t u v w x y z\r\nA B C D E F G H I J K L M N O P Q R S T U V W X Y Z\r\n0 1 2 3 4 5 6 7 8 9\r\n/ - ? : ( ) . , ' + Space\r\nIn addition the field cannot start with a : or - character.",
            "nullable": true
          },
          "theirReference": {
            "type": "string",
            "description": "The Their reference field gets sent to the payee and appears on their transaction record. \r\nThe maximum length for the field varies depending on the payment network. For SEPA (Euro) it is 140 characters. For Faster Payments (GBP) it is 18 characters.\r\na b c d e f g h i j k l m n o p q r s t u v w x y z\r\nA B C D E F G H I J K L M N O P Q R S T U V W X Y Z\r\n0 1 2 3 4 5 6 7 8 9\r\n/ - ? : ( ) . , ' + Space\r\nIn addition the field cannot start with a : or - character.",
            "nullable": true
          },
          "destination": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Counterparty"
          },
          "allowIncomplete": {
            "type": "boolean",
            "description": "If set to true the payout will get updated even if the business validation \r\nrules fail. The basic data validation rules must still pass. The original \r\npurpose of this flag was to allow payouts to be created from i3rd party applications,\r\nsuch as Xero, that may not have things like an IBAN set for a supplier.\r\nThe missing information must be filled, either by an update from the 3rd party\r\napplication, or manually, before the payout can be submitted for processing.",
            "nullable": true
          },
          "tagIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "An optional list of tag ids to add to the payout.",
            "nullable": true
          },
          "scheduled": {
            "type": "boolean",
            "description": "Should this payout be scheduled for a future date?",
            "nullable": true
          },
          "scheduleDate": {
            "type": "string",
            "description": "The date the payout should be submitted.",
            "format": "date-time",
            "nullable": true
          },
          "paymentRail": {
            "enum": [
              "Default",
              "SEPA_CT",
              "SEPA_INST",
              "TARGET2"
            ],
            "type": "string",
            "description": "Optional field to indicate the preferred payment rail intent for the payout.\r\nIf not set, provider default routing logic is applied.",
            "nullable": true
          },
          "chargeBearer": {
            "enum": [
              "Default",
              "BEN",
              "OUR",
              "SHA"
            ],
            "type": "string",
            "description": "Optional field to set who should pay any fees for the payout. Typically only\r\nused for international payments and ignored for SEPA and Faster Payments.",
            "nullable": true
          },
          "fxDestinationCurrency": {
            "enum": [
              "AED",
              "AUD",
              "CAD",
              "CHF",
              "CNH",
              "CZK",
              "DKK",
              "EUR",
              "GBP",
              "HKD",
              "HUF",
              "ILS",
              "JPY",
              "MXN",
              "NOK",
              "NZD",
              "PLN",
              "RON",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "USD",
              "ZAR"
            ],
            "type": "string",
            "description": "Optional. For an FX payout this is the currency that the beneficiary should be sent.\r\nSwagger narrows this property to the currencies currently configured for\r\nFX conversion support. The authoritative list for the current environment\r\nis exposed by GET /api/v1/currencies?capability=FxConversion.",
            "nullable": true
          },
          "fxDestinationAmount": {
            "type": "number",
            "description": "Optional but one of Amount or FxDestinationAmount must be set. If specified this will be the amount sent to the payee.\r\nThe payout's Amount will be dynamically adjusted based on this amount and the FX rate.",
            "format": "double",
            "nullable": true
          },
          "fxUseDestinationAmount": {
            "type": "boolean",
            "description": "For a multi-currency payout this indicates how the Amount and FxDestinationAmount are treated.\r\nIf true the FxDestinationAmount is authoritative and the Amount is set based on the FxRate. If false then the Amount is authoritative\r\nand the FxDestinationAmount is set based on the Amount and FxRate.",
            "nullable": true
          },
          "fxQuoteID": {
            "type": "string",
            "description": "Optional. For multi-currency payouts this is the ID of a held rate that can be used for the FX conversion. If left\r\nempty the mid-market FX rate will be used.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional list of tags to set on the payout.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Payouts.PayoutsCreateResponse": {
        "type": "object",
        "properties": {
          "payouts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
            },
            "nullable": true
          },
          "failedPayouts": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Api.Features.Payouts.FailedPayout"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Payrun": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "batchPayoutID": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "merchantID": {
            "type": "string",
            "format": "uuid"
          },
          "invoices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayrunInvoice"
            },
            "nullable": true
          },
          "inserted": {
            "type": "string",
            "format": "date-time"
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time"
          },
          "scheduleDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "status": {
            "enum": [
              "None",
              "Draft",
              "Submitted",
              "Completed",
              "Rejected",
              "AuthorisationPending",
              "PayoutsCreated",
              "Queued",
              "Approving",
              "Processing"
            ],
            "type": "string"
          },
          "sourceAccounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
            },
            "nullable": true
          },
          "lastUpdatedBy": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
          },
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayrunEvent"
            },
            "nullable": true
          },
          "payouts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Payout"
            },
            "nullable": true
          },
          "payments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayrunPayment"
            },
            "nullable": true
          },
          "isArchived": {
            "type": "boolean"
          },
          "totalEur": {
            "type": "number",
            "format": "double"
          },
          "totalGbp": {
            "type": "number",
            "format": "double"
          },
          "totalUsd": {
            "type": "number",
            "format": "double"
          },
          "payoutsCount": {
            "type": "integer",
            "format": "int32"
          },
          "authorisationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "canEdit": {
            "type": "boolean",
            "readOnly": true
          },
          "canDelete": {
            "type": "boolean",
            "readOnly": true
          },
          "authorisersRequiredCount": {
            "type": "integer",
            "description": "The number of authorisers required for this payrun. Is determined by business settings\r\non the source account and/or merchant.",
            "format": "int32"
          },
          "authorisersCompletedCount": {
            "type": "integer",
            "description": "The number of distinct authorisers that have authorised the payrun.",
            "format": "int32"
          },
          "canAuthorise": {
            "type": "boolean",
            "description": "True if the payrun can be authorised by the user who loaded it."
          },
          "hasCurrentUserAuthorised": {
            "type": "boolean",
            "description": "True if the payrun was loaded for a user and that user has already authorised the latest version of the payrun."
          },
          "authorisations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Approve.Authorisation"
            },
            "description": "A list of the users who have successfully authorised the latest version of the payrun and when.",
            "nullable": true
          },
          "nonce": {
            "type": "string",
            "nullable": true
          },
          "invoicesMinimal": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Invoices.PayrunInvoiceMinimal"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PayrunApprove": {
        "type": "object",
        "properties": {
          "scheduledDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PayrunAuthorisation": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "scheduledDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PayrunCreate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "invoices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayrunInvoice"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PayrunEvent": {
        "type": "object",
        "properties": {
          "userID": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "enum": [
              "None",
              "Created",
              "Submitted",
              "Rejected",
              "Edited",
              "AuthorisationRequested",
              "Completed",
              "Approved",
              "TopupInitiated",
              "FundsArrived",
              "Archived",
              "Unarchived",
              "Cancelled",
              "Authorised",
              "BeganProcessing"
            ],
            "type": "string"
          },
          "timeStamp": {
            "type": "string",
            "format": "date-time"
          },
          "user": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PayrunInvoice": {
        "required": [
          "currency",
          "invoiceReference",
          "totalAmount"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "payRunID": {
            "type": "string",
            "description": "The ID of the pay run this invoice belongs to.",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "Optional. The name of the invoice.",
            "nullable": true
          },
          "invoiceReference": {
            "minLength": 1,
            "type": "string"
          },
          "paymentTerms": {
            "type": "string",
            "description": "Optional additional information about the invoice.",
            "nullable": true
          },
          "date": {
            "type": "string",
            "description": "Date the invoice was issued.",
            "format": "date-time"
          },
          "dueDate": {
            "type": "string",
            "description": "Date by which payment is due.",
            "format": "date-time"
          },
          "contact": {
            "type": "string",
            "description": "Supplier's name",
            "nullable": true
          },
          "destination": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Counterparty"
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "Currency used in the invoice."
          },
          "discounts": {
            "type": "number",
            "description": "Optional. Any discounts applied to the invoice.",
            "format": "double",
            "nullable": true
          },
          "taxes": {
            "type": "number",
            "description": "Optional. The total amount of taxes applied to the invoice.",
            "format": "double",
            "nullable": true
          },
          "totalAmount": {
            "type": "number",
            "description": "Final total amount of the invoice, including discounts and taxes.",
            "format": "double"
          },
          "outstandingAmount": {
            "type": "number",
            "description": "The amount that is still outstanding for this invoice.",
            "format": "double"
          },
          "subTotal": {
            "type": "number",
            "description": "Optional. The total amount before discounts and taxes.",
            "format": "double",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "remittanceEmail": {
            "type": "string",
            "description": "Email address to which a remittance note will be sent, if specified.",
            "format": "email",
            "nullable": true
          },
          "xeroInvoiceID": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "invoicePayments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Invoices.InvoicePayment"
            },
            "nullable": true
          },
          "isEnabled": {
            "type": "boolean"
          },
          "paymentReference": {
            "type": "string",
            "description": "The reference sent to the recipient's bank. If left empty,\r\nan autogenerated reference will be used instead.",
            "nullable": true
          },
          "externalInvoiceID": {
            "type": "string",
            "description": "If this invoice was created from an external invoice, this will be the ID of the external invoice.",
            "nullable": true
          },
          "externalInvoiceProvider": {
            "type": "string",
            "description": "If this invoice was created from an external invoice, this will be the provider of the external invoice.\r\nE.g., \"Xero\", \"QuickBooks\", etc.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PayrunPayment": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "format": "double"
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string"
          },
          "destination": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Counterparty"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PayrunReject": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "reason": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.PayrunUpdate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "sourceAccounts": {
            "type": "object",
            "properties": {
              "NONE": {
                "type": "string",
                "format": "uuid"
              },
              "GBP": {
                "type": "string",
                "format": "uuid"
              },
              "EUR": {
                "type": "string",
                "format": "uuid"
              },
              "USD": {
                "type": "string",
                "format": "uuid"
              },
              "AUD": {
                "type": "string",
                "format": "uuid"
              },
              "BGN": {
                "type": "string",
                "format": "uuid"
              },
              "CAD": {
                "type": "string",
                "format": "uuid"
              },
              "CZK": {
                "type": "string",
                "format": "uuid"
              },
              "DKK": {
                "type": "string",
                "format": "uuid"
              },
              "HUF": {
                "type": "string",
                "format": "uuid"
              },
              "ISK": {
                "type": "string",
                "format": "uuid"
              },
              "CHF": {
                "type": "string",
                "format": "uuid"
              },
              "NOK": {
                "type": "string",
                "format": "uuid"
              },
              "PLN": {
                "type": "string",
                "format": "uuid"
              },
              "RON": {
                "type": "string",
                "format": "uuid"
              },
              "AED": {
                "type": "string",
                "format": "uuid"
              },
              "CNH": {
                "type": "string",
                "format": "uuid"
              },
              "HKD": {
                "type": "string",
                "format": "uuid"
              },
              "ILS": {
                "type": "string",
                "format": "uuid"
              },
              "JPY": {
                "type": "string",
                "format": "uuid"
              },
              "MXN": {
                "type": "string",
                "format": "uuid"
              },
              "NZD": {
                "type": "string",
                "format": "uuid"
              },
              "SAR": {
                "type": "string",
                "format": "uuid"
              },
              "SEK": {
                "type": "string",
                "format": "uuid"
              },
              "SGD": {
                "type": "string",
                "format": "uuid"
              },
              "TRY": {
                "type": "string",
                "format": "uuid"
              },
              "ZAR": {
                "type": "string",
                "format": "uuid"
              },
              "BTC": {
                "type": "string",
                "format": "uuid"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "invoices": {
            "type": "object",
            "additionalProperties": {
              "type": "boolean"
            },
            "nullable": true
          },
          "scheduledDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Report": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "format": "uuid"
          },
          "createdByUserID": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "reportType": {
            "enum": [
              "Unknown",
              "SwiftCustomerStatement",
              "CustomerActivity",
              "SafeGuardingReconciliation",
              "MerchantAccountsBalance",
              "MerchantAccountsTransaction",
              "VisionBlueTransaction",
              "MerchantSafeGuardingReconciliation"
            ],
            "type": "string"
          },
          "reportName": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "inserted": {
            "type": "string",
            "format": "date-time"
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time"
          },
          "cronExpression": {
            "type": "string",
            "nullable": true
          },
          "timeZoneId": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "enum": [
              "None",
              "Completed",
              "InProgress",
              "Error"
            ],
            "type": "string"
          },
          "lastCompletedAt": {
            "type": "string",
            "format": "date-time"
          },
          "statementNumber": {
            "type": "integer",
            "format": "int32"
          },
          "isDisabled": {
            "type": "boolean"
          },
          "error": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.ReportResult": {
        "type": "object",
        "properties": {
          "merchantID": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "reportType": {
            "enum": [
              "Unknown",
              "SwiftCustomerStatement",
              "CustomerActivity",
              "SafeGuardingReconciliation",
              "MerchantAccountsBalance",
              "MerchantAccountsTransaction",
              "VisionBlueTransaction",
              "MerchantSafeGuardingReconciliation"
            ],
            "type": "string"
          },
          "reportName": {
            "type": "string",
            "nullable": true
          },
          "lastCompletedAt": {
            "type": "string",
            "format": "date-time"
          },
          "statementNumber": {
            "type": "integer",
            "format": "int32"
          },
          "contents": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.RoleEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "roleID": {
            "type": "string",
            "format": "uuid"
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "enum": [
              "None",
              "Created",
              "Edited",
              "Archived",
              "Unarchived",
              "AssignedToUser",
              "RemovedFromUser",
              "UpdatedUserAssignment"
            ],
            "type": "string",
            "description": "Events that can occur in a role."
          },
          "inserted": {
            "type": "string",
            "format": "date-time"
          },
          "authoriserHash": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "The name the role had at the time of the event.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "The description the role had at the time of the event.",
            "nullable": true
          },
          "merchantPermissions": {
            "enum": [
              "None",
              "CanCreateAccounts",
              "CanArchiveAccounts",
              "CanConnectAccounts",
              "CanViewBeneficiaries",
              "CanDeleteBeneficiaries",
              "CanEditBeneficiaries",
              "CanCreateBeneficiaries",
              "CanAuthoriseBeneficiaries",
              "CanViewTokens",
              "CanCreateTokens",
              "CanArchiveTokens",
              "CanAuthoriseTokens",
              "CanCreatePayruns",
              "CanViewPayruns",
              "CanEditPayruns",
              "CanApprovePayruns",
              "CanDeletePayruns",
              "CanViewUsers",
              "CanViewWebhooks",
              "CanCreateWebhooks",
              "CanDeleteWebhooks",
              "CanUpdateMerchant",
              "CanCreatePaymentRequests",
              "CanViewPaymentRequests",
              "CanUpdatePaymentRequests",
              "CanDeletePaymentRequests",
              "CanViewMandates",
              "CanCreateMandates",
              "CanViewRoles",
              "CanCreateRoles",
              "CanEditRoles",
              "CanCreateReports",
              "CanViewReports",
              "CanCreateXeroConnection",
              "CanViewXeroConnection",
              "CanUpdateXeroConnection",
              "CanDeleteXeroConnection",
              "InviteAccepted",
              "CanCreatePaymentRequestTemplates",
              "CanViewPaymentRequestTemplates",
              "CanUpdatePaymentRequestTemplates",
              "CanDeletePaymentRequestTemplates"
            ],
            "type": "string",
            "description": "The merchant permissions the role had at the time of the event."
          },
          "accountPermissions": {
            "enum": [
              "None",
              "CanViewPayouts",
              "CanCreatePayouts",
              "CanEditPayouts",
              "CanDeletePayouts",
              "CanAuthorisePayouts",
              "CanRejectPayouts",
              "CanCreateBatchPayouts",
              "CanViewAccountForPaymentRequests",
              "CanUpdateAccount",
              "CanViewRules",
              "CanCreateRules",
              "CanEditRules",
              "CanDeleteRules",
              "CanAuthoriseRules",
              "CanViewTransactions",
              "CanExportData"
            ],
            "type": "string",
            "description": "The account permissions the role had at the time of the event."
          },
          "clientSessionTimeoutSeconds": {
            "type": "integer",
            "description": "The client session timeout seconds the role had at the time of the event.",
            "format": "int32",
            "nullable": true
          },
          "assignationEventUserID": {
            "type": "string",
            "description": "For NoFrixion.MoneyMoov.Enums.RoleEventTypeEnum.AssignedToUser and NoFrixion.MoneyMoov.Enums.RoleEventTypeEnum.RemovedFromUser event types.\r\nThe user that was assigned to or removed from the role at the time of the event.",
            "format": "uuid",
            "nullable": true
          },
          "assignedUsers": {
            "type": "integer",
            "description": "The number of users assigned to the role at the time of the event.",
            "format": "int32",
            "nullable": true
          },
          "accountIDs": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "IDs of the accounts that were assigned to the role-user during the event.",
            "nullable": true
          },
          "user": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
          }
        },
        "additionalProperties": false,
        "description": "A model that represents an event produced by a MoneyMoov Role execution."
      },
      "NoFrixion.MoneyMoov.Models.Roles.Role": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "merchantID": {
            "type": "string",
            "format": "uuid"
          },
          "merchantName": {
            "type": "string",
            "nullable": true
          },
          "merchantPermissions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "accountPermissions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "inserted": {
            "type": "string",
            "format": "date-time"
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time"
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Roles.RoleUser"
            },
            "nullable": true
          },
          "isSystemRole": {
            "type": "boolean"
          },
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.RoleEvent"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Roles.RoleCreate": {
        "required": [
          "accountPermissions",
          "description",
          "merchantPermissions",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "description": {
            "minLength": 1,
            "type": "string"
          },
          "merchantPermissions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "accountPermissions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Roles.RoleUserCreate"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Roles.RoleUser": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "roleID": {
            "type": "string",
            "format": "uuid"
          },
          "userID": {
            "type": "string",
            "format": "uuid"
          },
          "inserted": {
            "type": "string",
            "format": "date-time"
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time"
          },
          "isEnabled": {
            "type": "boolean",
            "description": "Indicates whether the role user is enabled. \r\nAn enabled role user is authorized to perform actions associated with their assigned role.\r\nIf set to `false`, the user is considered disabled and will not be granted authorization for role-based actions."
          },
          "accounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Roles.RoleUserAccount"
            },
            "nullable": true
          },
          "user": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
          },
          "role": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Roles.Role"
          },
          "authorisationStatus": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.AuthorisationStatus"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Roles.RoleUserAccount": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "roleUserID": {
            "type": "string",
            "format": "uuid"
          },
          "accountID": {
            "type": "string",
            "format": "uuid"
          },
          "inserted": {
            "type": "string",
            "format": "date-time"
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time"
          },
          "account": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Roles.RoleUserCreate": {
        "type": "object",
        "properties": {
          "userID": {
            "type": "string",
            "format": "uuid"
          },
          "roleID": {
            "type": "string",
            "format": "uuid"
          },
          "accounts": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Roles.UserRoleWithScope": {
        "required": [
          "assignedAt",
          "roleName",
          "scope"
        ],
        "type": "object",
        "properties": {
          "userID": {
            "type": "string",
            "description": "The ID of the user.",
            "format": "uuid"
          },
          "roleID": {
            "type": "string",
            "description": "The ID of the role the user has.",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "description": "The ID of the merchant the role is in.",
            "format": "uuid"
          },
          "roleName": {
            "type": "string",
            "description": "The name of the role the user has.",
            "nullable": true
          },
          "scope": {
            "type": "string",
            "description": "The number of accounts the user has access to in the merchant for the role.",
            "nullable": true
          },
          "assignedAt": {
            "type": "string",
            "description": "The date the role was assigned to the user on the merchant.",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Rule": {
        "required": [
          "nonce"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "accountID": {
            "type": "string",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "description": "The ID of the merchant that owns the account.",
            "format": "uuid"
          },
          "userID": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "approverID": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "isDisabled": {
            "type": "boolean"
          },
          "status": {
            "enum": [
              "PendingApproval",
              "Active",
              "Disabled",
              "Failed"
            ],
            "type": "string"
          },
          "triggerOnPayIn": {
            "type": "boolean"
          },
          "triggerCronExpression": {
            "type": "string",
            "nullable": true
          },
          "timeZoneId": {
            "type": "string",
            "nullable": true
          },
          "startAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "sweepAction": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.SweepAction"
          },
          "approveUrl": {
            "type": "string",
            "description": "If set this property holds the URL an approver needs to visit in order to\r\ncomplete a strong authentication check in order to approve the rule.",
            "nullable": true
          },
          "onApprovedWebHookUrl": {
            "type": "string",
            "description": "Optional URL to receive an HTTP request with the rule details when the rule status changes to \r\napproved. The webhook payload will contain the full Rule object.",
            "nullable": true
          },
          "onExecutionErrorWebHookUrl": {
            "type": "string",
            "description": "Optional URL to receive an HTTP request when a rule execution attempt fails. The webhook \r\npayload will contain a Problem object.",
            "nullable": true
          },
          "onExecutionSuccessWebHookUrl": {
            "type": "string",
            "description": "Optional URL to receive an HTTP request when a rule execution attempt succeeds. The webhook \r\npayload will contain a list of any payouts that were submitted for the rule execution.",
            "nullable": true
          },
          "webHookSecret": {
            "type": "string",
            "description": "If set this secret will be used to sign Web Hook requests.",
            "nullable": true
          },
          "inserted": {
            "type": "string",
            "format": "date-time"
          },
          "lastUpdated": {
            "type": "string",
            "format": "date-time"
          },
          "lastExecutedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastRunAtTransactionDate": {
            "type": "string",
            "description": "The most recent transaction date when the rule was last run.",
            "format": "date-time"
          },
          "createdBy": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
          },
          "authorisations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Approve.Authorisation"
            },
            "description": "A list of the users who have successfully authorised the latest version of the rule and when.",
            "nullable": true
          },
          "account": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PaymentAccount"
          },
          "authorisersRequiredCount": {
            "type": "integer",
            "description": "The number of authorisers required for this rule.",
            "format": "int32"
          },
          "authorisersCompletedCount": {
            "type": "integer",
            "description": "The number of distinct authorisers that have authorised the rule.",
            "format": "int32"
          },
          "canAuthorise": {
            "type": "boolean",
            "description": "True if the rule can be authorised by the user who loaded it."
          },
          "hasCurrentUserAuthorised": {
            "type": "boolean",
            "description": "True if the current user has authorised."
          },
          "nonce": {
            "type": "string",
            "nullable": true
          },
          "authenticationMethods": {
            "type": "array",
            "items": {
              "enum": [
                "None",
                "WebAuthn",
                "OneTimePassword"
              ],
              "type": "string"
            },
            "description": "A list of authentication types allowed to authorise the payout.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.RuleCreate": {
        "required": [
          "name",
          "sweepAction"
        ],
        "type": "object",
        "properties": {
          "accountID": {
            "type": "string",
            "description": "The ID of the account the rule will apply to.",
            "format": "uuid"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "A name to succinctly describe the rule."
          },
          "description": {
            "type": "string",
            "description": "Arbitrary description for the rule.",
            "nullable": true
          },
          "onApprovedWebHookUrl": {
            "type": "string",
            "description": "Optional URL to receive an HTTP request with the rule details when the rule status changes to \r\napproved. The webhook payload will contain the full Rule object.",
            "nullable": true
          },
          "onExecutionErrorWebHookUrl": {
            "type": "string",
            "description": "Optional URL to receive an HTTP request when a rule execution attempt fails. The webhook \r\npayload will contain a NoFrixionPorblem object.",
            "nullable": true
          },
          "onExecutionSuccessWebHookUrl": {
            "type": "string",
            "description": "Optional URL to receive an HTTP request when a rule execution attempt succeeds. The webhook \r\npayload will contain a ?.",
            "nullable": true
          },
          "isDisabled": {
            "type": "boolean",
            "description": "If set to true the rule will be disabled from executing."
          },
          "triggerOnPayIn": {
            "type": "boolean",
            "description": "Set to true if the rule execution should be triggered when the account \r\nreceives a pay in (credit)."
          },
          "triggerCronExpression": {
            "type": "string",
            "description": "If the rule should be executed on a recurring schedule this is the expression\r\nthat sets the schedule. The expression uses a CRON format.",
            "nullable": true
          },
          "timeZoneId": {
            "type": "string",
            "description": "If the rule should be executed on a recurring schedule this is the timezone\r\nthat the CRON expression should be evaluated in. The default is UTC.",
            "nullable": true
          },
          "startAt": {
            "type": "string",
            "description": "Optional start time for rule executions. If this value is set the rule will not\r\nbe triggered until the start time has been reached.",
            "format": "date-time",
            "nullable": true
          },
          "endAt": {
            "type": "string",
            "description": "Optional end time for rule executions. If this value is set the rule will not\r\nbe triggered after the end time has been reached.",
            "format": "date-time",
            "nullable": true
          },
          "sweepAction": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.SweepAction"
          },
          "webHookSecret": {
            "type": "string",
            "description": "If set this secret will be used to sign Web Hook requests.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.RuleEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "ruleID": {
            "type": "string",
            "format": "uuid"
          },
          "ruleEventType": {
            "enum": [
              "None",
              "Created",
              "Approved",
              "Edited",
              "Disabled",
              "ExecutionSuccess",
              "ExecutionError",
              "PayeeVerificationInitiated",
              "PayeeVerificationComplete",
              "PayeeVerificationFailed"
            ],
            "type": "string"
          },
          "inserted": {
            "type": "string",
            "format": "date-time"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "errorMessage": {
            "type": "string",
            "nullable": true
          },
          "rawResponse": {
            "type": "string",
            "nullable": true
          },
          "isAuthoriseToEnable": {
            "type": "boolean"
          },
          "user": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.RuleMinimal": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.RuleUpdate": {
        "type": "object",
        "properties": {
          "accountID": {
            "type": "string",
            "description": "Account ID the rule is associated with.",
            "format": "uuid",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "A name to succinctly describe the rule.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Arbitrary description for the rule.",
            "nullable": true
          },
          "onApprovedWebHookUrl": {
            "type": "string",
            "description": "Optional URL to receive an HTTP request with the rule details when the rule status changes to \r\napproved. The webhook payload will contain the full Rule object.",
            "nullable": true
          },
          "onExecutionErrorWebHookUrl": {
            "type": "string",
            "description": "Optional URL to receive an HTTP request when a rule execution attempt fails. The webhook \r\npayload will contain a NoFrixionPorblem object.",
            "nullable": true
          },
          "onExecutionSuccessWebHookUrl": {
            "type": "string",
            "description": "Optional URL to receive an HTTP request when a rule execution attempt succeeds. The webhook \r\npayload will contain a ?.",
            "nullable": true
          },
          "isDisabled": {
            "type": "boolean",
            "description": "If set to false the rule will be disabled from executing.",
            "nullable": true
          },
          "triggerOnPayIn": {
            "type": "boolean",
            "description": "Set to true if the rule execution should be triggered when the account \r\nreceives a pay in (credit).",
            "nullable": true
          },
          "triggerCronExpression": {
            "type": "string",
            "description": "If the rule should be executed on a recurring schedule this is the expression\r\nthat sets the schedule. The expression uses a CRON format.",
            "nullable": true
          },
          "timeZoneId": {
            "type": "string",
            "description": "If the rule should be executed on a recurring schedule this is the timezone",
            "nullable": true
          },
          "startAt": {
            "type": "string",
            "description": "Optional start time for rule executions. If this value is set the rule will not\r\nbe triggered until the start time has been reached.",
            "format": "date-time",
            "nullable": true
          },
          "endAt": {
            "type": "string",
            "description": "Optional end time for rule executions. If this value is set the rule will not\r\nbe triggered after the end time has been reached.",
            "format": "date-time",
            "nullable": true
          },
          "sweepAction": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.SweepAction"
          },
          "webHookSecret": {
            "type": "string",
            "description": "If set this secret will be used to sign Web Hook requests.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.SuccessfulDirectDebitSubmission": {
        "type": "object",
        "properties": {
          "paymentRequestID": {
            "type": "string",
            "description": "The ID of the payment request that was successfully submitted.",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.SweepAction": {
        "type": "object",
        "properties": {
          "destinations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.SweepDestination"
            },
            "nullable": true
          },
          "amountToLeave": {
            "type": "number",
            "description": "The amount to leave in the account once the sweep has been processed.\r\nA value of zero means sweep all funds.",
            "format": "double"
          },
          "minimumAmountToRunAt": {
            "type": "number",
            "description": "The minimum amount that must be available in order for the sweep to be run.\r\nFor example, setting to 1000 means the rule will not execute if the funds\r\navailable are less than 1000.",
            "format": "double"
          },
          "payoutYourReference": {
            "type": "string",
            "description": "The pattern to use for the Your Reference value when creating payouts based on the rule.",
            "nullable": true
          },
          "payoutTheirReference": {
            "type": "string",
            "description": "The pattern to use for the Their Reference value when creating payouts based on the rule.",
            "nullable": true
          },
          "payoutDescription": {
            "type": "string",
            "description": "The pattern to use for the Description value when creating payouts based on the rule.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.SweepDestination": {
        "type": "object",
        "properties": {
          "sweepPercentage": {
            "maximum": 100,
            "minimum": 0,
            "type": "number",
            "description": "The percentage of the total funds in the account when the rule is executed\r\nthat should be swept to the destination.",
            "format": "double"
          },
          "sweepAmount": {
            "type": "number",
            "description": "The amount that should be swept to the destination. Ignored if a sweep percentage is set.",
            "format": "double"
          },
          "priority": {
            "maximum": 1000,
            "minimum": 0,
            "type": "integer",
            "description": "The priority of the destination. Lower numbers represent higher priorities, e.g. 0 is the highest priority. \r\nRelevant when there are multiple destinations in a sweep. The higher priority destinations will be paid first \r\nand also attributed any remaining balance in the case of an uneven split.",
            "format": "int32"
          },
          "isDisabled": {
            "type": "boolean",
            "description": "If set to true, it indicates that the destiation is disabled and should not be used."
          },
          "accountID": {
            "type": "string",
            "description": "An optional ID of an internal account the counterparty is associated with. If set\r\nit will take precedence over any other destination details set for the counterparty.",
            "format": "uuid",
            "nullable": true
          },
          "internalAccountName": {
            "type": "string",
            "description": "If the counterparty is an internal account, this is the name of the account.",
            "nullable": true
          },
          "beneficiaryID": {
            "type": "string",
            "description": "Optional ID of a Beneficiary to use for the counterparty destination. If set\r\nit will take precedence over any other destination details, except for AccountID,\r\nset for the counterparty.",
            "format": "uuid",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "The name of the counterparty. For a person this should be their full name. For a \r\ncompany this should be their registered or trading name.",
            "nullable": true
          },
          "emailAddress": {
            "type": "string",
            "description": "An email address for the counterparty. Optional to set and depending on the payment\r\nnetwork does not always get set for pay ins.",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "description": "A phone number for the counterparty. Optional to set and depending on the payment\r\nnetwork does not always get set for pay ins.",
            "nullable": true
          },
          "countryCode": {
            "type": "string",
            "description": "A country code for the counterparty. Optional to set and depending on the payment\r\nnetwork does not always get set for pay ins",
            "nullable": true
          },
          "addressLine1": {
            "type": "string",
            "description": "Address line 1 for the counterparty.",
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "description": "Address line 2 for the counterparty.",
            "nullable": true
          },
          "postCode": {
            "type": "string",
            "description": "Post code for the counterparty.",
            "nullable": true
          },
          "postTown": {
            "type": "string",
            "description": "Post town for the counterparty.",
            "nullable": true
          },
          "identifier": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.AccountIdentifier"
          },
          "payeeVerificationStatus": {
            "enum": [
              "None",
              "NotRequired",
              "Pending",
              "Completed",
              "Failed",
              "TimedOut"
            ],
            "type": "string",
            "description": "Current status of the payee verification check"
          },
          "payeeVerificationResult": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.PayeeVerification.PayeeVerificationResult"
          },
          "summary": {
            "type": "string",
            "description": "Gets a convenient summary representation of the counterparty.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Tag": {
        "required": [
          "merchantID",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "colourHex": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.TokenAdd": {
        "required": [
          "description",
          "merchantID"
        ],
        "type": "object",
        "properties": {
          "merchantID": {
            "type": "string",
            "description": "The merchant id to add to the token",
            "format": "uuid"
          },
          "description": {
            "minLength": 1,
            "type": "string",
            "description": "Token description"
          },
          "hmacAlgorithm": {
            "enum": [
              "None",
              "HMAC_SHA1",
              "HMAC_SHA256",
              "HMAC_SHA384",
              "HMAC_SHA512"
            ],
            "type": "string",
            "description": "Optional shared secret algorithm to use for HMAC authentication. If set a shared secret will be \r\nreturned when the token is intially created but not on any subsequent retrievals."
          },
          "permissionTypes": {
            "type": "array",
            "items": {
              "enum": [
                "Deny",
                "CreatePaymentRequest",
                "EditPaymentRequest",
                "DeletePaymentRequest",
                "CreateRule",
                "EditRule",
                "DeleteRule",
                "CreatePayout",
                "EditPayout",
                "DeletePayout",
                "CreateReport",
                "EditReport",
                "DeleteReport",
                "ExecuteReport",
                "CreatePaymentAccount",
                "EditPaymentAccount",
                "TrustedSubmitPayout",
                "OpenBankingAccountInformation",
                "CreateDirectDebitMandate",
                "SubmitDirectDebitPayment",
                "ViewTransactions",
                "ViewPaymentAccount",
                "ViewPayout",
                "CreatePayrun",
                "ViewPayrun",
                "EditPayrun",
                "DeletePayrun"
              ],
              "type": "string"
            },
            "description": "The list of permissions tho grant to the merchant token.",
            "nullable": true
          },
          "ipAddressWhitelist": {
            "type": "string",
            "description": "Optional. If set represents a comma separated list of IP addresses that this token is authorised to be used from.\r\nAttempts to use the token from an IP address not in the list will be rejected.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.TokenUpdate": {
        "type": "object",
        "properties": {
          "merchantID": {
            "type": "string",
            "format": "uuid"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "permissionTypes": {
            "type": "array",
            "items": {
              "enum": [
                "Deny",
                "CreatePaymentRequest",
                "EditPaymentRequest",
                "DeletePaymentRequest",
                "CreateRule",
                "EditRule",
                "DeleteRule",
                "CreatePayout",
                "EditPayout",
                "DeletePayout",
                "CreateReport",
                "EditReport",
                "DeleteReport",
                "ExecuteReport",
                "CreatePaymentAccount",
                "EditPaymentAccount",
                "TrustedSubmitPayout",
                "OpenBankingAccountInformation",
                "CreateDirectDebitMandate",
                "SubmitDirectDebitPayment",
                "ViewTransactions",
                "ViewPaymentAccount",
                "ViewPayout",
                "CreatePayrun",
                "ViewPayrun",
                "EditPayrun",
                "DeletePayrun"
              ],
              "type": "string"
            },
            "description": "The permissions that the merchant token supports.",
            "nullable": true
          },
          "ipAddressWhitelist": {
            "type": "string",
            "description": "Optional. If set represents a comma separated list of IP addresses that this token is authorised to be used from.\r\nAttempts to use the token from an IP address not in the list will be rejected.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Transaction": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique ID for the transaction.",
            "format": "uuid"
          },
          "accountID": {
            "type": "string",
            "description": "The ID of the account the transaction belongs to.",
            "format": "uuid"
          },
          "accountName": {
            "type": "string",
            "description": "The name of the account the transaction belongs to.",
            "nullable": true
          },
          "merchantID": {
            "type": "string",
            "description": "The ID of the merchant that owns the account.",
            "format": "uuid"
          },
          "type": {
            "enum": [
              "Internal",
              "SEPA_CT",
              "SEPA_INST",
              "UK_FAST",
              "UK_BACS",
              "Reversal",
              "BTC",
              "BTC_TEST",
              "LBTC",
              "LBTC_TEST",
              "SEPA_DD",
              "SEPA",
              "Unknown",
              "TARGET2",
              "SEPA_DD_REJECT",
              "CROSS_BORDER",
              "UK_CHAPS"
            ],
            "type": "string",
            "description": "Type of the transaction."
          },
          "amount": {
            "type": "number",
            "description": "Amount of the transaction. Negative values indicate a pay out debit), positive\r\nvalues a pay in (credit).",
            "format": "double"
          },
          "amountMinorUnits": {
            "type": "integer",
            "description": "Amount of the transaction expressed in the currency’s minor units (e.g. cents, pence).",
            "format": "int64",
            "readOnly": true
          },
          "currency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "Currency of transaction."
          },
          "description": {
            "type": "string",
            "description": "Description of the transaction.",
            "nullable": true
          },
          "transactionDate": {
            "type": "string",
            "description": "Date when the transaction occurred.",
            "format": "date-time"
          },
          "inserted": {
            "type": "string",
            "description": "Date when the transaction was inserted into the ledger.",
            "format": "date-time"
          },
          "yourReference": {
            "type": "string",
            "description": "For a pay in the reference the sending party attached. For a pay out the \r\nreference that the payer attached for themselves.",
            "nullable": true
          },
          "theirReference": {
            "type": "string",
            "description": "For a pay out the reference that the payer attached for the receiving party. For a\r\npay in this will typically be empty but for internal transactions may contain the\r\nreference the sending party set for themselves.",
            "nullable": true
          },
          "counterparty": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Counterparty"
          },
          "counterpartySummary": {
            "type": "string",
            "description": "For pay in (credit) transactions this will contain a descriptive string with the \r\nmost important fields about the counterparty.",
            "nullable": true
          },
          "balance": {
            "type": "number",
            "description": "Balance left on the account after the transaction.",
            "format": "double"
          },
          "balanceMinorUnits": {
            "type": "integer",
            "description": "Balance on the account expressed in the currency’s minor units (e.g. cents, pence).",
            "format": "int64",
            "readOnly": true
          },
          "ruleID": {
            "type": "string",
            "description": "ID of the rule that resulted in the transaction.",
            "format": "uuid",
            "nullable": true
          },
          "payoutID": {
            "type": "string",
            "description": "ID of the payout that resulted in the transaction.",
            "format": "uuid",
            "nullable": true
          },
          "virtualIBAN": {
            "type": "string",
            "description": "If set it indicates the  payin was to a virtual IBAN.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Tag"
            },
            "description": "An optional list of descriptive tags attached to the transaction.",
            "nullable": true
          },
          "accountSequenceNumber": {
            "type": "integer",
            "description": "The sequence number of transaction on a per account basis. This sequence number is guaranteed to be an arithemtic sequence \r\nnumber for all transactions belonging to the same account.",
            "format": "int32"
          },
          "paymentRequestID": {
            "type": "string",
            "description": "For Pay by Bank and Direct Debit transactions this will contain the ID of the payment request.",
            "format": "uuid",
            "nullable": true
          },
          "fxCurrency": {
            "enum": [
              "NONE",
              "GBP",
              "EUR",
              "USD",
              "AUD",
              "BGN",
              "CAD",
              "CZK",
              "DKK",
              "HUF",
              "ISK",
              "CHF",
              "NOK",
              "PLN",
              "RON",
              "AED",
              "CNH",
              "HKD",
              "ILS",
              "JPY",
              "MXN",
              "NZD",
              "SAR",
              "SEK",
              "SGD",
              "TRY",
              "ZAR",
              "BTC"
            ],
            "type": "string",
            "description": "For an FX payout this is the currency that was received or that was instructed.",
            "nullable": true
          },
          "fxAmount": {
            "type": "number",
            "description": "For an FX payout this is the amound in the FX currency.",
            "format": "double",
            "nullable": true
          },
          "fxRate": {
            "type": "number",
            "description": "For an FX payout this is the exchange rate between the transaction currency and the FX currency.",
            "format": "double",
            "nullable": true
          },
          "paymentRequestCustomFields": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "The custom fields that were attached to the payment request that resulted in this transaction.",
            "nullable": true
          },
          "rawReference": {
            "type": "string",
            "description": "The raw payment reference details as received from the payment processor. For Banking Circle\r\ntransactions this contains the concatenated payment details fields from which the payment\r\nlifecycle ID can be derived.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.TransactionPageResponse": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Transaction"
            },
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "description": "Current page number. Its 1 based. i.e firstpage is 1, secondpage is 2",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Page size",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total pages",
            "format": "int64"
          },
          "totalSize": {
            "type": "integer",
            "description": "Total count",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.User": {
        "required": [
          "emailAddress",
          "firstName",
          "lastName"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "firstName": {
            "minLength": 1,
            "type": "string"
          },
          "lastName": {
            "minLength": 1,
            "type": "string"
          },
          "emailAddress": {
            "minLength": 1,
            "type": "string",
            "format": "email"
          },
          "twoFactorEnabled": {
            "type": "boolean"
          },
          "passkeyAdded": {
            "type": "boolean"
          },
          "permissions": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserPermissions"
          },
          "rolesWithScope": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.Roles.UserRoleWithScope"
            },
            "nullable": true
          },
          "clientSessionTimeouts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.ClientSessionTimeout"
            },
            "description": "The number of seconds a session for this user should last before expiring.\r\nThis is based on the user's role on the merchant.\r\nThis is used to set the session timeout in the client. If not set the client's default\r\nsession timeout will be used.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.UserInvite": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "inviteeEmailAddress": {
            "type": "string",
            "nullable": true
          },
          "inviterFirstName": {
            "type": "string",
            "nullable": true
          },
          "inviterLastName": {
            "type": "string",
            "nullable": true
          },
          "inviteeFirstName": {
            "type": "string",
            "nullable": true
          },
          "inviteeLastName": {
            "type": "string",
            "nullable": true
          },
          "inviterEmailAddress": {
            "type": "string",
            "nullable": true
          },
          "merchantID": {
            "type": "string",
            "format": "uuid"
          },
          "registrationUrl": {
            "type": "string",
            "nullable": true
          },
          "lastInvited": {
            "type": "string",
            "format": "date-time"
          },
          "merchantName": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "userID": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "user": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
          },
          "isInviteeRegistered": {
            "type": "boolean",
            "description": "If true, indicates the invitee's email address corresponds to an existing MoneyMoov user."
          },
          "initialRoleID": {
            "type": "string",
            "description": "The role ID to automatically assign to the merchant’s very first user.\r\nTypically set by the compliance team when the first user is invited to a new merchant.",
            "format": "uuid",
            "nullable": true
          },
          "isAuthorised": {
            "type": "boolean",
            "description": "Will be set to true once the invite has met the authorisation requirements."
          },
          "authorisationStatus": {
            "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.AuthorisationStatus"
          },
          "status": {
            "enum": [
              "Active",
              "Expired",
              "Accepted",
              "AuthorisationRequired"
            ],
            "type": "string",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.UserInviteCreate": {
        "required": [
          "inviteeEmailAddress"
        ],
        "type": "object",
        "properties": {
          "merchantID": {
            "type": "string",
            "description": "ID of the merchant the user is being invited to. Can be empty if\r\nprovided by the URL.",
            "format": "uuid"
          },
          "inviteeEmailAddress": {
            "minLength": 1,
            "type": "string",
            "description": "Email address of the user being invited.",
            "format": "email"
          },
          "inviteeFirstName": {
            "type": "string",
            "description": "First Name of the user being invited.",
            "nullable": true
          },
          "inviteeLastName": {
            "type": "string",
            "description": "Last Name of the user being invited.",
            "nullable": true
          },
          "sendInviteEmail": {
            "type": "boolean",
            "description": "If set to true an email will be sent to the invitee with instructions on\r\nhow to accept the invite."
          },
          "initialRoleID": {
            "type": "string",
            "description": "The role ID to automatically assign to the merchant’s very first user. \r\nThis property can only be set when the merchant has no users with roles.\r\nTypically set by the compliance team when the first user is invited to a new merchant.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.UserInvitePageResponse": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.UserInvite"
            },
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "description": "Current page number. Its 1 based. i.e firstpage is 1, secondpage is 2",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Page size",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total pages",
            "format": "int64"
          },
          "totalSize": {
            "type": "integer",
            "description": "Total count",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.UserPageResponse": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.User"
            },
            "nullable": true
          },
          "pageNumber": {
            "type": "integer",
            "description": "Current page number. Its 1 based. i.e firstpage is 1, secondpage is 2",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Page size",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total pages",
            "format": "int64"
          },
          "totalSize": {
            "type": "integer",
            "description": "Total count",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.UserPermissions": {
        "type": "object",
        "properties": {
          "merchantPermissions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoFrixion.MoneyMoov.Models.MerchantPermission"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.UserUpdate": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "emailAddress": {
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "userInviteID": {
            "type": "string",
            "description": "Optional ID of the invite that is being accepted so the user can be assigned\r\na role on a new merchant.",
            "format": "uuid"
          },
          "profile": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.VirtualAccountCreate": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "The name of the virtual account."
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.VirtualAccountUpdate": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "The name of the virtual account."
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.Webhook": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "resourceTypes": {
            "type": "array",
            "items": {
              "enum": [
                "None",
                "Payin",
                "Payout",
                "PaymentRequest",
                "Rule",
                "TransactionPayin",
                "TransactionPayout",
                "Report",
                "Payrun",
                "PaymentAccount"
              ],
              "type": "string"
            },
            "description": "The resource types that the webhook will be generated for.",
            "nullable": true
          },
          "destinationUrl": {
            "type": "string",
            "nullable": true
          },
          "retry": {
            "type": "boolean"
          },
          "secret": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "emailAddress": {
            "type": "string",
            "nullable": true
          },
          "version": {
            "type": "integer",
            "format": "int32"
          },
          "failedNotificationEmailAddress": {
            "type": "string",
            "description": "The email address to which notifications about failed webhook deliveries will be sent.",
            "nullable": true
          },
          "merchantID": {
            "type": "string",
            "description": "The ID of the merchant that the webhook is for.",
            "format": "uuid"
          },
          "notificationMethod": {
            "enum": [
              "None",
              "Webhook",
              "Email"
            ],
            "type": "string",
            "description": "The type of notification that will be sent."
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.WebhookCreate": {
        "required": [
          "merchantID",
          "notificationMethod"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "format": "uuid"
          },
          "resourceTypes": {
            "type": "array",
            "items": {
              "enum": [
                "None",
                "Payin",
                "Payout",
                "PaymentRequest",
                "Rule",
                "TransactionPayin",
                "TransactionPayout",
                "Report",
                "Payrun",
                "PaymentAccount"
              ],
              "type": "string"
            },
            "description": "The resource types that the webhook should be generated for.",
            "nullable": true
          },
          "destinationUrl": {
            "type": "string",
            "description": "The destination URL for the webhook.\r\nRequired for webhook notifications.",
            "nullable": true
          },
          "retry": {
            "type": "boolean"
          },
          "secret": {
            "type": "string",
            "description": "The secret key required to authenticate webhook notifications.\r\nRequired for webhook notifications.",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "emailAddress": {
            "type": "string",
            "description": "The recipient email address(es) for notifications. Multiple addresses can be separated by a comma, semicolon, or space.\r\nReruired for email notifications.",
            "format": "email",
            "nullable": true
          },
          "failedNotificationEmailAddress": {
            "type": "string",
            "description": "The email address to which notifications about failed webhook deliveries will be sent.",
            "format": "email",
            "nullable": true
          },
          "notificationMethod": {
            "enum": [
              "None",
              "Webhook",
              "Email"
            ],
            "type": "string",
            "description": "Determines the delivery method for the notification. The default is Webhook."
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.Models.WebhookUpdate": {
        "required": [
          "merchantID",
          "notificationMethod"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "merchantID": {
            "type": "string",
            "format": "uuid"
          },
          "resourceTypes": {
            "type": "array",
            "items": {
              "enum": [
                "None",
                "Payin",
                "Payout",
                "PaymentRequest",
                "Rule",
                "TransactionPayin",
                "TransactionPayout",
                "Report",
                "Payrun",
                "PaymentAccount"
              ],
              "type": "string"
            },
            "description": "The resource types that the webhook should be generated for.",
            "nullable": true
          },
          "destinationUrl": {
            "type": "string",
            "description": "The destination URL for the webhook.\r\nRequired for webhook notifications.",
            "nullable": true
          },
          "retry": {
            "type": "boolean"
          },
          "secret": {
            "type": "string",
            "description": "The secret key required to authenticate webhook notifications.\r\nRequired for webhook notifications.",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "emailAddress": {
            "type": "string",
            "description": "The recipient email address(es) for notifications. Multiple addresses can be separated by a comma, semicolon, or space.\r\nReruired for email notifications.",
            "format": "email",
            "nullable": true
          },
          "failedNotificationEmailAddress": {
            "type": "string",
            "description": "The email address to which notifications about failed webhook deliveries will be sent.",
            "format": "email",
            "nullable": true
          },
          "notificationMethod": {
            "enum": [
              "None",
              "Webhook",
              "Email"
            ],
            "type": "string",
            "description": "Determines the delivery method for the notification. The default is Webhook."
          }
        },
        "additionalProperties": false
      },
      "NoFrixion.MoneyMoov.NoFrixionProblem": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "A URI reference [RFC3986] that identifies the problem type. This specification\r\n encourages that, when dereferenced, it provide human-readable documentation for\r\n the problem type (e.g., using HTML [W3C.REC-html5-20141028]). When this member\r\n is not present, its value is assumed to be \"about:blank\".",
            "nullable": true,
            "example": "\n            https://tools.ietf.org/html/rfc7231#section-6.5.1\n            "
          },
          "title": {
            "type": "string",
            "description": "A short, human-readable summary of the problem type.It SHOULD NOT change from\r\noccurrence to occurrence of the problem, except for purposes of localization (e.g.,\r\nusing proactive content negotiation; see[RFC7231], Section 3.4).",
            "nullable": true,
            "example": "\n            Bad Request\n            "
          },
          "status": {
            "type": "integer",
            "description": "The HTTP status code([RFC7231], Section 6) generated by the origin server for\r\nthis occurrence of the problem.",
            "format": "int32"
          },
          "detail": {
            "type": "string",
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "nullable": true,
            "example": "\n            Something went wrong with your request and this is a useful explanation of what happened.\n            "
          },
          "instance": {
            "type": "string",
            "description": "A URI reference that identifies the specific occurrence of the problem.It may\r\nor may not yield further information if dereferenced.",
            "nullable": true
          },
          "traceID": {
            "type": "string",
            "nullable": true
          },
          "errors": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Optional validation error messages. These are \r\nintended to provide an additional error message about a specific field.\r\nNote that the approach to recording validation errors has been deliberately\r\nchosen to result in the same serialised JSON as will be returned by ASP.NET \r\nwhen the parameter on a controller action fails validation.",
            "nullable": true
          },
          "wasParseFailure": {
            "type": "boolean",
            "description": "Will be true if an attempt was made to deserialise a problem JSON response.",
            "readOnly": true
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "apiKey",
        "description": "JWT Authorization header using the Bearer scheme.<br/>\r\n                      Enter your JWT access token in the text input below.<br/>\r\n                      Example: Bearer eyJhbGciOiJ...",
        "name": "Authorization",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "Bearer": [ ]
    }
  ]
}