{
  "openapi": "3.1.0",
  "info": {
    "title": "Invincible Pay v1",
    "description": "",
    "license": {
      "name": ""
    },
    "version": "0.1.0"
  },
  "paths": {
    "/health": {
      "get": {
        "tags": [
          "Health"
        ],
        "description": "Check the health of our service.",
        "operationId": "health",
        "responses": {
          "200": {
            "description": "App healthy"
          },
          "503": {
            "description": "App unhealthy"
          }
        }
      }
    },
    "/v1/accounts/me": {
      "get": {
        "tags": [
          "accounts"
        ],
        "description": "Use this endpoint to fetch information about your account.",
        "operationId": "account_me",
        "responses": {
          "200": {
            "description": "Get account associated with user from session",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/beneficiaries": {
      "get": {
        "tags": [
          "beneficiaries"
        ],
        "description": "List all your beneficiaries.",
        "operationId": "get_my_beneficiaries",
        "responses": {
          "200": {
            "description": "List of beneficiaries.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BeneficiaryDto"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "beneficiaries"
        ],
        "description": "This endpoint allows you to create beneficiaries. You need to create beneficiaries before making any transaction.",
        "operationId": "create_beneficiary",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBeneficiaryRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Newly created beneficiary.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BeneficiaryDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "409": {
            "description": "Resource already exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/beneficiaries/{uuid}": {
      "put": {
        "tags": [
          "beneficiaries"
        ],
        "description": "Update details for an existing beneficiary. All future transactions will use the updated details.",
        "operationId": "update_beneficiary",
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBeneficiaryRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated beneficiary.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BeneficiaryDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "beneficiaries"
        ],
        "description": "Delete a beneficiary.",
        "operationId": "delete_beneficiary",
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Beneficiary deleted successfully."
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/checkout": {
      "get": {
        "tags": [
          "checkout"
        ],
        "description": "Search and filter your checkouts.",
        "operationId": "list_checkouts",
        "parameters": [
          {
            "name": "sort",
            "in": "query",
            "description": "Checkouts are always ordered by their date, but you can modify\nthe direction (ascending / descending).",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/Sorting"
                }
              ]
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Checkout status (Pending, Expired, Completed).",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Checkouts per page. Must be between 1 and 100 (inclusive). Default value: 20",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int64",
              "minimum": 0
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Use for pagination. 0 based index. Page 0 = first page, Page 1 = second page, etc.",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int64",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated List of checkouts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResult_CheckoutDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "checkout"
        ],
        "description": "Initiate a checkout that deposits funds to a specific funding source (wallet).",
        "operationId": "create_checkout",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCheckoutRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Newly created checkout.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/checkout/{checkout_id}": {
      "get": {
        "tags": [
          "checkout"
        ],
        "description": "Fetch a checkout by its ID.",
        "operationId": "get_checkout_by_id",
        "parameters": [
          {
            "name": "checkout_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Checkout details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/frontend/checkout": {
      "get": {
        "tags": [
          "frontend"
        ],
        "description": "Endpoint used by our Checkouts page to fetch useful information in one request.",
        "operationId": "get_checkout_page_data",
        "responses": {
          "200": {
            "description": "Checkout page data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutPageResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/frontend/checkout/{checkout_id}/expanded": {
      "get": {
        "tags": [
          "frontend"
        ],
        "operationId": "get_checkout_details",
        "parameters": [
          {
            "name": "checkout_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Extended Checkout details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RedactedCheckoutDto"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/frontend/manual-etransfer": {
      "get": {
        "tags": [
          "frontend"
        ],
        "description": "Endpoint used by our Manual etransfer page to fetch useful information in one request.",
        "operationId": "get_manual_etransfer_page_data",
        "responses": {
          "200": {
            "description": "Manual e-Transfer page data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ManualEtransferPageResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/frontend/payment-link": {
      "get": {
        "tags": [
          "frontend"
        ],
        "description": "Endpoint used by our Payment Links page to fetch useful information in one request.",
        "operationId": "get_payment_link_page_data",
        "responses": {
          "200": {
            "description": "Payment Links page data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentLinkPageResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/frontend/payment-link/{payment_link_id}/expanded": {
      "get": {
        "tags": [
          "frontend"
        ],
        "description": "Endpoint used by our Payment Links page to fetch useful information in one request.",
        "operationId": "get_payment_link_details",
        "parameters": [
          {
            "name": "payment_link_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Payment link details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RedactedPaymentLinkDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/frontend/version": {
      "get": {
        "tags": [
          "frontend"
        ],
        "description": "Receive version.",
        "operationId": "get_version",
        "responses": {
          "200": {
            "description": "Application version.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetVersionResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/funding-sources/balance/me": {
      "get": {
        "tags": [
          "funding-sources"
        ],
        "description": "Lists your wallets but with balances. Usually you expect to have only one wallet, but for future compatibility this returns an array. Does not return wallet balances. Use the expand endpoint for that.",
        "operationId": "funding_sources_with_balance",
        "responses": {
          "200": {
            "description": "Funding sources with balances.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FundingSourceResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/funding-sources/calculate-fee": {
      "post": {
        "tags": [
          "funding-sources"
        ],
        "description": "Calculate a fee before sending a transaction.",
        "operationId": "calculate_fee",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CalculateFeeDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Calculated fee.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalculateFeeResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/funding-sources/input-rules": {
      "get": {
        "tags": [
          "funding-sources"
        ],
        "description": "Validation rules the backend uses for processing inputs (transaction descriptions). Make sure your requests comply with those rules to avoid rejections.",
        "operationId": "get_input_rules",
        "responses": {
          "200": {
            "description": "Input validation rules.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InputRuleDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/funding-sources/me": {
      "get": {
        "tags": [
          "funding-sources"
        ],
        "description": "Lists your wallets. Usually you expect to have only one wallet, but for future compatibility this returns an array. Does not return wallet balances. Use the expand endpoint for that.",
        "operationId": "list_my_funding_sources",
        "responses": {
          "200": {
            "description": "List of funding sources.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FundingSourceDto"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/funding-sources/{funding_source_id}/eft": {
      "post": {
        "tags": [
          "funding-sources"
        ],
        "description": "Send an EFT to a beneficiary.",
        "operationId": "send_eft",
        "parameters": [
          {
            "name": "funding_source_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FsCreateEftDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Newly created EFT transaction.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/funding-sources/{funding_source_id}/etransfer": {
      "post": {
        "tags": [
          "funding-sources"
        ],
        "description": "Send an e-Transfer to a beneficiary.",
        "operationId": "send_etransfer",
        "parameters": [
          {
            "name": "funding_source_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FsCreateEtransferDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Newly created e-Transfer transaction.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/funding-sources/{funding_source_id}/expand": {
      "get": {
        "tags": [
          "funding-sources"
        ],
        "description": "Expands a specific wallet. This endpoint returns the wallet balance as well.",
        "operationId": "get_fiat_funding_source",
        "parameters": [
          {
            "name": "funding_source_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Funding source details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FundingSourceFiatDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/funding-sources/{funding_source_id}/internal": {
      "post": {
        "tags": [
          "funding-sources"
        ],
        "description": "Send an internal transaction to a beneficiary which is part of our network.",
        "operationId": "send_internal",
        "parameters": [
          {
            "name": "funding_source_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FsCreateInternalTransferDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Newly created internal transaction.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/homepage": {
      "get": {
        "tags": [
          "frontend"
        ],
        "description": "Endpoint used by our dashboard to fetch useful information in one request.",
        "operationId": "get_home_page_data",
        "responses": {
          "200": {
            "description": "Homepage data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HomePageResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/manual-etransfers": {
      "get": {
        "tags": [
          "manual-etransfers"
        ],
        "description": "Search and filter your e-Transfer transactions.",
        "operationId": "search_manual_etransfers",
        "parameters": [
          {
            "name": "sort",
            "in": "query",
            "description": "e-Transfers are always ordered by their date, but you can modify\nthe direction (ascending / descending).",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/Sorting"
                }
              ]
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Manual e-Transfer status (Pending, Claimed, Rejected, Unrecognized).",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "e-Transfers per page. Must be between 1 and 100 (inclusive). Default value: 20",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int64",
              "minimum": 0
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Use for pagination. 0 based index. Page 0 = first page, Page 1 = second page, etc.",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int64",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of manual e-Transfers.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ManualEtransferSearchResultDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/manual-etransfers/address": {
      "get": {
        "tags": [
          "manual-etransfers"
        ],
        "description": "Fetch your manual e-Transfer receiving address. This is the email address you can share with anyone to receive e-Transfers that you will then need to accept manually.",
        "operationId": "get_manual_etransfer_receiving_address",
        "responses": {
          "200": {
            "description": "Manual e-Transfer receiving address.",
            "content": {
              "application/json": {
                "schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/manual-etransfers/pending/total": {
      "get": {
        "tags": [
          "manual-etransfers"
        ],
        "description": "Get Total amount of pending e-Transfers",
        "operationId": "get_total_pending_amount",
        "responses": {
          "200": {
            "description": "Total pending e-Transfer amount.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/manual-etransfers/{id}/claim": {
      "post": {
        "tags": [
          "manual-etransfers"
        ],
        "description": "Claim your manual e-Transfer transaction. This action requires a security answer. The transaction will appear in your transaction list in a few seconds after claiming.",
        "operationId": "claim_manual_etransfer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ManualEtransferAuthorizationDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Manual e-Transfer claimed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "default": null
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/manual-etransfers/{id}/reject": {
      "post": {
        "tags": [
          "manual-etransfers"
        ],
        "description": "Reject your manual e-Transfer transaction. This action requires a security answer. The funds are returned to the sender immediately (in a few minutes).",
        "operationId": "reject_manual_etransfer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ManualEtransferAuthorizationDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Manual e-Transfer rejected successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "default": null
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/manual-etransfers/{id}/unrecognized": {
      "post": {
        "tags": [
          "manual-etransfers"
        ],
        "description": "Mark a manual e-Transfer as unrecognized. Use this endpoint if you believe the e-Transfer was not meant for you and you can't reject the transaction due to not having the security answer. The transaction will eventually expire automatically.",
        "operationId": "handle_unrecognized_etransfer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Updated unrecognized manual e-Transfer.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ManualEtransferDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/parking/public/claim": {
      "post": {
        "tags": [
          "transaction-parking"
        ],
        "description": "Claim parked transaction",
        "operationId": "public_claim_parked_transaction",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransactionClaimRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Parked transaction claimed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "default": null
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payment-links": {
      "get": {
        "tags": [
          "payment-links"
        ],
        "description": "Search and filter your payment links.",
        "operationId": "list_payment_links",
        "parameters": [
          {
            "name": "sort",
            "in": "query",
            "description": "Payment links are always ordered by their date, but you can modify\nthe direction (ascending / descending).",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/Sorting"
                }
              ]
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Payement link status (Pending, Expired, Completed).",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Payement linkss per page. Must be between 1 and 100 (inclusive). Default value: 20",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int64",
              "minimum": 0
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Use for pagination. 0 based index. Page 0 = first page, Page 1 = second page, etc.",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int64",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Payment links",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResult_PaymentLinkDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "payment-links"
        ],
        "description": "Initiate a payment link that deposits funds to a specific funding source (wallet).",
        "operationId": "create_payment_link",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePaymentLinkRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Newly created payment link.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentLinkDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payment-links/{payment_link_id}": {
      "get": {
        "tags": [
          "payment-links"
        ],
        "description": "Fetch a payment link by its ID.",
        "operationId": "get_payment_link_by_id",
        "parameters": [
          {
            "name": "payment_link_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Payment link",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentLinkDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transaction/details/{id}": {
      "get": {
        "tags": [
          "frontend"
        ],
        "description": "Endpoint used by our dashboard to fetch pre-formatted information about a specific transaction.",
        "operationId": "get_transaction_details",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Transaction details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FrontendTransactionDetailsDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transaction/extended/{id}": {
      "get": {
        "tags": [
          "frontend"
        ],
        "operationId": "get_extended_transaction_details",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Extended transaction details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionExtendedDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transactions": {
      "get": {
        "tags": [
          "transactions"
        ],
        "description": "Search and filter your transactions.",
        "operationId": "search_transactions",
        "parameters": [
          {
            "name": "timestampFrom",
            "in": "query",
            "description": "Unix timestamp in milliseconds. Inclusive.\nMeaning, if you give a value of `1772486926865`,\na transaction that might have occured at that exact instance\nwill be included in the result.",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int64"
            }
          },
          {
            "name": "timestampUntil",
            "in": "query",
            "description": "Unix timestamp in milliseconds. Inclusive.\nMeaning, if you give a value of `1772486926865`,\na transaction that might have occured at that exact instance\nwill be included in the result.",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int64"
            }
          },
          {
            "name": "amountFrom",
            "in": "query",
            "description": "Minimum amount of the transaction, in CAD, major units.\nThis value is inclusive so if `100.00` is provided,\ntransactions with a value of 100.00 CAD will be included as well.",
            "required": false,
            "schema": {
              "type": [
                "number",
                "null"
              ],
              "format": "double"
            }
          },
          {
            "name": "amountUntil",
            "in": "query",
            "description": "Maximum amount of the transaction, in CAD, major units.\nThis value is inclusive so if `100.00` is provided,\ntransactions with a value of 100.00 CAD will be included as well.",
            "required": false,
            "schema": {
              "type": [
                "number",
                "null"
              ],
              "format": "double"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Transactions are always ordered by their date, but you can modify\nthe direction (ascending / descending).",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/Sorting"
                }
              ]
            }
          },
          {
            "name": "beneficiaryId",
            "in": "query",
            "description": "If present, only returns transactions that were sent to this beneficiary.\nAll other filters still apply.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "category",
            "in": "query",
            "description": "Specify transaction category (EFT, eTransfer, internal).",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/TransactionCategoryDto"
                }
              ]
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Transactions per page. Must be between 1 and 100 (inclusive). Default value: 20",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int64",
              "minimum": 0
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Use for pagination. 0 based index. Page 0 = first page, Page 1 = second page, etc.",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int64",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of transactions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionSearchResultDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/user-info": {
      "get": {
        "tags": [
          "frontend"
        ],
        "description": "Endpoint used by our dashboard to fetch useful information in one request. Fetches the most useful information about the current user (balance, wallet, account).",
        "operationId": "get_user_info",
        "responses": {
          "200": {
            "description": "User information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserInfoResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/users/me": {
      "get": {
        "tags": [
          "users"
        ],
        "description": "Fetch details about your user.",
        "operationId": "me",
        "responses": {
          "200": {
            "description": "Logged in User details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponseBodyDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/users/me/api-keys": {
      "get": {
        "tags": [
          "users"
        ],
        "description": "List all of your API keys.",
        "operationId": "get_api_keys",
        "responses": {
          "200": {
            "description": "List of API keys.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetApiKeysResponseDto"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "users"
        ],
        "description": "Create a new API key.",
        "operationId": "generate_api_key",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateApiKeyRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Newly generated API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKeyDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/users/me/api-keys/{api_key}": {
      "put": {
        "tags": [
          "users"
        ],
        "operationId": "update_api_key_status",
        "parameters": [
          {
            "name": "api_key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateApiKeyStatusDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKeyResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "users"
        ],
        "description": "Delete an API key. This can not be undone and all requests using this API key will be rejected.",
        "operationId": "delete_api_key",
        "parameters": [
          {
            "name": "api_key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "API key deleted successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "default": null
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/users/password-change": {
      "post": {
        "tags": [
          "users"
        ],
        "operationId": "password_change",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordChangeDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Password changed successfully."
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Password verify failed or an incorrect password was entered while attempting to change the password",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhook-urls": {
      "get": {
        "tags": [
          "webhook"
        ],
        "operationId": "get_webhook_urls",
        "responses": {
          "200": {
            "description": "List of webhook URLs.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookUrlDto"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "webhook"
        ],
        "operationId": "create_webhook_url",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWebhookUrlDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Newly created webhook URL.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookUrlDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhook-urls/{uuid}": {
      "put": {
        "tags": [
          "webhook"
        ],
        "operationId": "update_webhook_url_status",
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWebhookUrlDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated webhook URL.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookUrlDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "webhook"
        ],
        "operationId": "delete_webhook_url",
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Webhook URL deleted successfully."
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhooks": {
      "get": {
        "tags": [
          "webhook"
        ],
        "operationId": "get_webhooks",
        "parameters": [
          {
            "name": "sort",
            "in": "query",
            "description": "Webhooks are always ordered by their date, but you can modify\nthe direction (ascending / descending).",
            "required": false,
            "schema": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/Sorting"
                }
              ]
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Checkout status (Pending, Processing, Failed, Completed).",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Webhooks per page. Must be between 1 and 100 (inclusive). Default value: 20",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int64",
              "minimum": 0
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Use for pagination. 0 based index. Page 0 = first page, Page 1 = second page, etc.",
            "required": false,
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "format": "int64",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of webhooks.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResult_WebhookBodyDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "403": {
            "description": "Access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericError"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AccountDto": {
        "type": "object",
        "description": "A public object representing an account.",
        "required": [
          "id",
          "type",
          "status",
          "tenantId",
          "brandId",
          "createdAt"
        ],
        "properties": {
          "brandId": {
            "type": "string",
            "description": "Used internally by our database for logical segragation.\nThis can be ignored when using the API."
          },
          "createdAt": {
            "type": "integer",
            "format": "int64"
          },
          "id": {
            "type": "string"
          },
          "referrerAccountId": {
            "type": [
              "string",
              "null"
            ],
            "description": "For future compatibility when we introduce a referral program.\nCan be ignored for now."
          },
          "referrerAffiliateId": {
            "type": [
              "string",
              "null"
            ],
            "description": "For future compatibility when we introduce a referral program.\nCan be ignored for now."
          },
          "status": {
            "$ref": "#/components/schemas/AccountStatusDto"
          },
          "tenantId": {
            "type": "string",
            "description": "Used internally by our database for logical segragation.\nThis can be ignored when using the API."
          },
          "type": {
            "$ref": "#/components/schemas/AccountTypeDto"
          }
        }
      },
      "AccountStatusDto": {
        "type": "string",
        "enum": [
          "inactive",
          "active",
          "inReview",
          "awaitingOnboardingApproval"
        ]
      },
      "AccountTypeDto": {
        "type": "string",
        "enum": [
          "personal",
          "corporate",
          "moneyServicesBusiness"
        ]
      },
      "AmountRuleDto": {
        "type": "object",
        "required": [
          "validateTransactionMinAmount",
          "validateTransactionMaxAmount"
        ],
        "properties": {
          "validateTransactionMaxAmount": {
            "type": "string"
          },
          "validateTransactionMinAmount": {
            "type": "string"
          }
        }
      },
      "ApiKeyDto": {
        "type": "object",
        "required": [
          "user_id",
          "api_key",
          "name",
          "api_secret",
          "created_at",
          "status"
        ],
        "properties": {
          "api_key": {
            "type": "string"
          },
          "api_secret": {
            "type": "string"
          },
          "created_at": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/ApiKeyStatusDto"
          },
          "user_id": {
            "type": "string"
          }
        }
      },
      "ApiKeyResponseDto": {
        "type": "object",
        "required": [
          "userId",
          "apiKey",
          "name",
          "status",
          "createdAt"
        ],
        "properties": {
          "apiKey": {
            "type": "string"
          },
          "createdAt": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/ApiKeyStatusDto"
          },
          "userId": {
            "type": "string"
          }
        }
      },
      "ApiKeyStatusDto": {
        "type": "string",
        "enum": [
          "active",
          "inactive"
        ]
      },
      "AuthResponseBodyDto": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "user",
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "ongoingRegistration"
                ]
              },
              "user": {
                "$ref": "#/components/schemas/PotentialUserDto"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "user",
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "user"
                ]
              },
              "user": {
                "$ref": "#/components/schemas/UserDto"
              }
            }
          }
        ],
        "description": "Either an ongoing registration or a full user"
      },
      "BalanceRepresentationDto": {
        "type": "object",
        "required": [
          "amount",
          "currency",
          "currencySymbol",
          "displayText"
        ],
        "properties": {
          "amount": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "currencySymbol": {
            "type": "string"
          },
          "displayText": {
            "type": "string"
          }
        }
      },
      "BeneficiaryDto": {
        "type": "object",
        "required": [
          "id",
          "type",
          "firstName",
          "lastName",
          "createdAt",
          "lastModifiedAt"
        ],
        "properties": {
          "accountNumber": {
            "type": [
              "string",
              "null"
            ]
          },
          "bankNumber": {
            "type": [
              "string",
              "null"
            ]
          },
          "companyName": {
            "type": [
              "string",
              "null"
            ]
          },
          "createdAt": {
            "type": "integer",
            "format": "int64"
          },
          "email": {
            "type": [
              "string",
              "null"
            ]
          },
          "firstName": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "lastModifiedAt": {
            "type": "integer",
            "format": "int64"
          },
          "lastName": {
            "type": "string"
          },
          "middleName": {
            "type": [
              "string",
              "null"
            ]
          },
          "nickname": {
            "type": [
              "string",
              "null"
            ]
          },
          "purposeCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "securityAnswer": {
            "type": [
              "string",
              "null"
            ]
          },
          "securityQuestion": {
            "type": [
              "string",
              "null"
            ]
          },
          "transitNumber": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "$ref": "#/components/schemas/BeneficiaryTypeDto"
          },
          "walletReference": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "BeneficiaryTypeDto": {
        "type": "string",
        "enum": [
          "customer",
          "business"
        ]
      },
      "CalculateFeeDto": {
        "type": "object",
        "required": [
          "amount",
          "category",
          "accountId"
        ],
        "properties": {
          "accountId": {
            "type": "string"
          },
          "amount": {
            "type": "number",
            "format": "double"
          },
          "category": {
            "$ref": "#/components/schemas/FeeCategoryDto"
          }
        }
      },
      "CalculateFeeResponseDto": {
        "type": "object",
        "required": [
          "fee",
          "amount"
        ],
        "properties": {
          "amount": {
            "type": "string"
          },
          "fee": {
            "$ref": "#/components/schemas/Fee"
          }
        }
      },
      "CheckoutDto": {
        "type": "object",
        "required": [
          "id",
          "reference",
          "accountId",
          "fundingSourceId",
          "status",
          "amount",
          "currency",
          "paymentUrl",
          "createdAt",
          "expiresAt"
        ],
        "properties": {
          "accountId": {
            "type": "string",
            "description": "The ID of your account."
          },
          "amount": {
            "type": "string",
            "description": "The amount. Represented as a string for precision."
          },
          "createdAt": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp in milliseconds."
          },
          "currency": {
            "$ref": "#/components/schemas/SupportedCurrency",
            "description": "The currency of the checkout."
          },
          "expiresAt": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp in milliseconds."
          },
          "externalId": {
            "type": [
              "string",
              "null"
            ],
            "description": "A freeform field we will store your behalf. Once you receive\nwebhooks for status updates of this checkout, you can use this\nID to identify the checkout on your side.\nFor example, you can pass your order ID."
          },
          "fundingSourceId": {
            "type": "string",
            "description": "The ID of your wallet (funding source) that the checkout will be deposited into, automatically.\nTo determine the eTransfer email address for this checkout, you can fetch the funding source."
          },
          "id": {
            "type": "string",
            "description": "ID of the checkout. Can be used to poll the status of the checkout."
          },
          "paymentUrl": {
            "type": "string",
            "description": "The URL for the payment gateway. Redirect your user to this URL\nand we will guide them through the payent.\nNot used if you're building your own frontend around checkouts."
          },
          "redirectUrlFailure": {
            "type": [
              "string",
              "null"
            ],
            "description": "The URL to redirect the customer after the checkout expires.\nOnly used for the checkout gateway. You can ignore this if\nyou're building the frontend for checkouts yourself."
          },
          "redirectUrlSuccess": {
            "type": [
              "string",
              "null"
            ],
            "description": "The URL to redirect the customer after a successful checkout.\nOnly used for the checkout gateway. You can ignore this if\nyou're building the frontend for checkouts yourself."
          },
          "reference": {
            "type": "string",
            "description": "The reference that must be provided for this checkout when sending a transaction."
          },
          "status": {
            "$ref": "#/components/schemas/CheckoutStatusDto",
            "description": "The status of the checkout."
          },
          "transactionId": {
            "type": [
              "string",
              "null"
            ],
            "description": "ID of the transaction that resolved this checkout. You can\nfetch this transaction to learn more details about the\ntransaction itself."
          }
        }
      },
      "CheckoutInfoDto": {
        "type": "object",
        "required": [
          "totalPending",
          "totalCompleted",
          "pendingCount",
          "completedCount",
          "conversionRate"
        ],
        "properties": {
          "completedCount": {
            "type": "integer",
            "format": "int64"
          },
          "conversionRate": {
            "type": "number",
            "format": "double"
          },
          "pendingCount": {
            "type": "integer",
            "format": "int64"
          },
          "totalCompleted": {
            "type": "string"
          },
          "totalPending": {
            "type": "string"
          }
        }
      },
      "CheckoutPageResponseDto": {
        "type": "object",
        "required": [
          "checkouts",
          "pageInfo"
        ],
        "properties": {
          "checkouts": {
            "$ref": "#/components/schemas/PaginatedResult_CheckoutDto"
          },
          "pageInfo": {
            "$ref": "#/components/schemas/CheckoutInfoDto"
          }
        }
      },
      "CheckoutStatusDto": {
        "type": "string",
        "enum": [
          "pending",
          "expired",
          "completed"
        ]
      },
      "ClaimEftDto": {
        "type": "object",
        "required": [
          "senderFullName",
          "exactAmount",
          "dateReceivedAt"
        ],
        "properties": {
          "dateReceivedAt": {
            "type": "string"
          },
          "exactAmount": {
            "type": "number",
            "format": "double"
          },
          "senderFullName": {
            "type": "string"
          }
        }
      },
      "ClaimEtransferDto": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "reference"
            ],
            "properties": {
              "reference": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "details"
            ],
            "properties": {
              "details": {
                "$ref": "#/components/schemas/EtransferDetails"
              }
            }
          }
        ]
      },
      "ClaimantRole": {
        "type": "string",
        "enum": [
          "sender",
          "receiver"
        ]
      },
      "CreateBeneficiaryRequestDto": {
        "type": "object",
        "required": [
          "type",
          "firstName",
          "lastName"
        ],
        "properties": {
          "accountNumber": {
            "type": [
              "string",
              "null"
            ]
          },
          "bankNumber": {
            "type": [
              "string",
              "null"
            ]
          },
          "companyName": {
            "type": [
              "string",
              "null"
            ]
          },
          "email": {
            "type": [
              "string",
              "null"
            ]
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "middleName": {
            "type": [
              "string",
              "null"
            ]
          },
          "nickname": {
            "type": [
              "string",
              "null"
            ]
          },
          "purposeCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "securityAnswer": {
            "type": [
              "string",
              "null"
            ]
          },
          "securityQuestion": {
            "type": [
              "string",
              "null"
            ]
          },
          "transitNumber": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "$ref": "#/components/schemas/BeneficiaryTypeDto"
          },
          "walletReference": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "CreateCheckoutRequestDto": {
        "type": "object",
        "required": [
          "fundingSourceId",
          "amount",
          "currency",
          "expiresIn"
        ],
        "properties": {
          "amount": {
            "type": "string",
            "description": "The amount. Represented as a string for precision."
          },
          "currency": {
            "$ref": "#/components/schemas/SupportedCurrency",
            "description": "The currency of the checkout."
          },
          "expiresIn": {
            "type": "integer",
            "format": "int32",
            "description": "Expiry in seconds. Default is 3600 (1 hour).\nMinimum = 300 (5 minutes), maximum 2592000 (30 days)",
            "maximum": 2592000,
            "minimum": 300
          },
          "externalId": {
            "type": [
              "string",
              "null"
            ],
            "description": "A freeform field we will store your behalf. Once you receive\nwebhooks for status updates of this checkout, you can use this\nID to identify the checkout on your side.\nFor example, you can pass your order ID."
          },
          "fundingSourceId": {
            "type": "string",
            "description": "The ID of your wallet (funding source) that the checkout will be deposited into, automatically."
          },
          "redirectUrlFailure": {
            "type": [
              "string",
              "null"
            ],
            "description": "The URL to redirect the customer after the checkout expires.\nOnly used for the checkout gateway. You can ignore this if\nyou're building the frontend for checkouts yourself."
          },
          "redirectUrlSuccess": {
            "type": [
              "string",
              "null"
            ],
            "description": "The URL to redirect the customer after a successful checkout.\nOnly used for the checkout gateway. You can ignore this if\nyou're building the frontend for checkouts yourself."
          }
        }
      },
      "CreatePaymentLinkRequestDto": {
        "type": "object",
        "required": [
          "fundingSourceId",
          "amount",
          "currency",
          "payerName",
          "description"
        ],
        "properties": {
          "amount": {
            "type": "string",
            "description": "The amount. Represented as a string for precision."
          },
          "currency": {
            "$ref": "#/components/schemas/SupportedCurrency",
            "description": "The currency of the payment_link."
          },
          "description": {
            "type": "string"
          },
          "expiresIn": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "description": "Expiry in seconds. Default is 3600 (1 hour).\nMinimum = 300 (5 minutes), maximum 2592000 (30 days)",
            "maximum": 2592000,
            "minimum": 300
          },
          "fundingSourceId": {
            "type": "string",
            "description": "The ID of your wallet (funding source) that the payment_link will be deposited into, automatically."
          },
          "payerName": {
            "type": "string"
          }
        }
      },
      "CreateWebhookUrlDto": {
        "type": "object",
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string"
          }
        }
      },
      "Currency": {
        "type": "string",
        "enum": [
          "EUR",
          "USD",
          "GPB",
          "CAD"
        ]
      },
      "EftInputRuleDto": {
        "type": "object",
        "required": [
          "description",
          "amount"
        ],
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/AmountRuleDto"
          },
          "description": {
            "$ref": "#/components/schemas/TextRuleDto"
          }
        }
      },
      "ErrorCode": {
        "type": "string",
        "enum": [
          "UserMustAcceptLatestTos",
          "InsufficientBalance"
        ]
      },
      "EtransferDetails": {
        "type": "object",
        "required": [
          "senderFullName",
          "exactAmount",
          "timestampReceivedAt"
        ],
        "properties": {
          "exactAmount": {
            "type": "number",
            "format": "double"
          },
          "senderFullName": {
            "type": "string"
          },
          "timestampReceivedAt": {
            "type": "string"
          }
        }
      },
      "EtransferInputRuleDto": {
        "type": "object",
        "required": [
          "description",
          "securityQuestion",
          "securityAnswer",
          "amount"
        ],
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/AmountRuleDto"
          },
          "description": {
            "$ref": "#/components/schemas/TextRuleDto"
          },
          "securityAnswer": {
            "$ref": "#/components/schemas/TextRuleDto"
          },
          "securityQuestion": {
            "$ref": "#/components/schemas/TextRuleDto"
          }
        }
      },
      "Fee": {
        "type": "object",
        "required": [
          "name",
          "description",
          "amountPercentage",
          "minAmount",
          "currency"
        ],
        "properties": {
          "amountPercentage": {
            "type": "string"
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "description": {
            "type": "string"
          },
          "minAmount": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "FeeCategoryDto": {
        "type": "string",
        "enum": [
          "outgoingEtransfer",
          "outgoingEft",
          "outgoingInternal",
          "incomingEtransfer",
          "incomingEft",
          "incomingInternal",
          "checkout",
          "paymentLink"
        ]
      },
      "FrontendTransactionDetailsDto": {
        "type": "object",
        "required": [
          "fullName",
          "status",
          "message",
          "ref",
          "refLabel",
          "amount",
          "displayFee",
          "description",
          "date"
        ],
        "properties": {
          "amount": {
            "type": "string"
          },
          "date": {
            "type": "integer",
            "format": "int64"
          },
          "description": {
            "type": "string"
          },
          "displayFee": {
            "type": "string"
          },
          "fullName": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "ref": {
            "type": "string"
          },
          "refLabel": {
            "type": "string"
          },
          "rejectionReason": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "$ref": "#/components/schemas/TransactionStatusDto"
          }
        }
      },
      "FsCreateEftDto": {
        "type": "object",
        "required": [
          "amount",
          "reference",
          "beneficiaryId",
          "purposeCode"
        ],
        "properties": {
          "amount": {
            "type": "number",
            "format": "double",
            "description": "\"15.35\" = 15 dollars and 35 cents"
          },
          "beneficiaryId": {
            "type": "string"
          },
          "purposeCode": {
            "type": "string",
            "description": "3 digit CPA EFT code (200 Payroll, etc)"
          },
          "reference": {
            "type": "string"
          }
        }
      },
      "FsCreateEtransferDto": {
        "type": "object",
        "required": [
          "amount",
          "reference",
          "beneficiaryId"
        ],
        "properties": {
          "amount": {
            "type": "number",
            "format": "double",
            "description": "\"15.35\" = 15 dollars and 35 cents"
          },
          "beneficiaryId": {
            "type": "string"
          },
          "reference": {
            "type": "string"
          },
          "securityAnswer": {
            "type": [
              "string",
              "null"
            ]
          },
          "securityQuestion": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "FsCreateInternalTransferDto": {
        "type": "object",
        "required": [
          "amount",
          "reference",
          "beneficiaryId"
        ],
        "properties": {
          "amount": {
            "type": "number",
            "format": "double",
            "description": "\"15.35\" = 15 dollars and 35 cents"
          },
          "beneficiaryId": {
            "type": "string"
          },
          "reference": {
            "type": "string"
          }
        }
      },
      "FundingSourceDto": {
        "type": "object",
        "required": [
          "id",
          "type",
          "status",
          "provider",
          "tenantId",
          "brandId",
          "createdAt",
          "externalId",
          "ownerAccountId",
          "currency"
        ],
        "properties": {
          "brandId": {
            "type": "string"
          },
          "createdAt": {
            "type": "integer",
            "format": "int64"
          },
          "currency": {
            "type": "string"
          },
          "externalId": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "nickname": {
            "type": [
              "string",
              "null"
            ]
          },
          "ownerAccountId": {
            "type": "string"
          },
          "provider": {
            "$ref": "#/components/schemas/FundingSourceProviderDto"
          },
          "reference": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "$ref": "#/components/schemas/FundingSourceStatusDto"
          },
          "tenantId": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/FundingSourceTypeDto"
          }
        }
      },
      "FundingSourceFiatDto": {
        "type": "object",
        "required": [
          "id",
          "currency",
          "bankCountry",
          "accountNumber",
          "bankNumber",
          "transitNumber",
          "status",
          "balance"
        ],
        "properties": {
          "accountNumber": {
            "type": "string"
          },
          "balance": {
            "$ref": "#/components/schemas/MonetaryAmount"
          },
          "bankCountry": {
            "type": "string"
          },
          "bankNumber": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "email": {
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "type": "string"
          },
          "nickname": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "$ref": "#/components/schemas/FundingSourceStatusDto"
          },
          "transitNumber": {
            "type": "string"
          },
          "walletReference": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "FundingSourceProviderDto": {
        "type": "string",
        "enum": [
          "pateno",
          "apaylo"
        ]
      },
      "FundingSourceResponseDto": {
        "type": "object",
        "required": [
          "totalBalance",
          "fiatFundingSources"
        ],
        "properties": {
          "fiatFundingSources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FundingSourceFiatDto"
            }
          },
          "totalBalance": {
            "$ref": "#/components/schemas/TotalBalanceDto"
          }
        }
      },
      "FundingSourceStatusDto": {
        "type": "string",
        "enum": [
          "inactive",
          "active"
        ]
      },
      "FundingSourceTypeDto": {
        "type": "string",
        "enum": [
          "fiat",
          "crypto"
        ]
      },
      "GenerateApiKeyRequestDto": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string"
          }
        }
      },
      "GenericError": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "string"
          },
          "error_code": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ErrorCode"
              }
            ]
          }
        }
      },
      "GetApiKeysResponseDto": {
        "type": "object",
        "required": [
          "apiKeys"
        ],
        "properties": {
          "apiKeys": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiKeyResponseDto"
            }
          }
        }
      },
      "GetVersionResponseDto": {
        "type": "object",
        "required": [
          "version"
        ],
        "properties": {
          "version": {
            "type": "string"
          }
        }
      },
      "HomePageResponseDto": {
        "type": "object",
        "required": [
          "beneficiaries",
          "transactions"
        ],
        "properties": {
          "beneficiaries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BeneficiaryDto"
            }
          },
          "transactions": {
            "$ref": "#/components/schemas/TransactionSearchResultDto"
          }
        }
      },
      "InputRuleDto": {
        "type": "object",
        "required": [
          "eft",
          "etransfer",
          "internal",
          "descriptionAutoPrefix"
        ],
        "properties": {
          "descriptionAutoPrefix": {
            "type": "string"
          },
          "eft": {
            "$ref": "#/components/schemas/EftInputRuleDto"
          },
          "etransfer": {
            "$ref": "#/components/schemas/EtransferInputRuleDto"
          },
          "internal": {
            "$ref": "#/components/schemas/InternalInputRuleDto"
          }
        }
      },
      "InternalInputRuleDto": {
        "type": "object",
        "required": [
          "description",
          "amount"
        ],
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/AmountRuleDto"
          },
          "description": {
            "$ref": "#/components/schemas/TextRuleDto"
          }
        }
      },
      "ManualEtransferAuthorizationDto": {
        "type": "object",
        "required": [
          "securityAnswer"
        ],
        "properties": {
          "securityAnswer": {
            "type": "string"
          }
        }
      },
      "ManualEtransferDto": {
        "type": "object",
        "required": [
          "id",
          "accountId",
          "status",
          "amount",
          "interacReferenceNumber",
          "toEmail",
          "securityQuestion",
          "expiryDate",
          "createdAt"
        ],
        "properties": {
          "accountId": {
            "type": "string"
          },
          "amount": {
            "type": "number",
            "format": "double"
          },
          "createdAt": {
            "type": "integer",
            "format": "int64"
          },
          "expiryDate": {
            "type": "integer",
            "format": "int64"
          },
          "fromEmail": {
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "type": "string"
          },
          "interacReferenceNumber": {
            "type": "string"
          },
          "securityQuestion": {
            "type": "string"
          },
          "senderName": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "$ref": "#/components/schemas/ManualEtransferStatusDto"
          },
          "toEmail": {
            "type": "string"
          }
        }
      },
      "ManualEtransferPageResponseDto": {
        "type": "object",
        "required": [
          "notPendings",
          "pendings",
          "total"
        ],
        "properties": {
          "notPendings": {
            "$ref": "#/components/schemas/ManualEtransferSearchResultDto"
          },
          "pendings": {
            "$ref": "#/components/schemas/ManualEtransferSearchResultDto"
          },
          "receivingEmail": {
            "type": [
              "string",
              "null"
            ]
          },
          "total": {
            "type": "string"
          }
        }
      },
      "ManualEtransferSearchResultDto": {
        "type": "object",
        "required": [
          "page",
          "pageSize",
          "totalPages",
          "totalCount",
          "etransfers"
        ],
        "properties": {
          "etransfers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ManualEtransferDto"
            }
          },
          "page": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "pageSize": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "totalCount": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "totalPages": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          }
        }
      },
      "ManualEtransferStatusDto": {
        "type": "string",
        "enum": [
          "pending",
          "claimed",
          "rejected",
          "unrecognized",
          "expired",
          "cancelled"
        ]
      },
      "MonetaryAmount": {
        "type": "object",
        "required": [
          "currency",
          "value"
        ],
        "properties": {
          "currency": {
            "type": "string"
          },
          "value": {
            "type": "string",
            "description": "Denomination depends on the context and currency. For FIAT\nit would be minor currency 137 EUR means 1.37 EUR\nFor Crypto, it depends again. TBD."
          }
        }
      },
      "PaginatedResult_CheckoutDto": {
        "type": "object",
        "required": [
          "page",
          "pageSize",
          "totalPages",
          "totalCount",
          "items"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "id",
                "reference",
                "accountId",
                "fundingSourceId",
                "status",
                "amount",
                "currency",
                "paymentUrl",
                "createdAt",
                "expiresAt"
              ],
              "properties": {
                "accountId": {
                  "type": "string",
                  "description": "The ID of your account."
                },
                "amount": {
                  "type": "string",
                  "description": "The amount. Represented as a string for precision."
                },
                "createdAt": {
                  "type": "integer",
                  "format": "int64",
                  "description": "Unix timestamp in milliseconds."
                },
                "currency": {
                  "$ref": "#/components/schemas/SupportedCurrency",
                  "description": "The currency of the checkout."
                },
                "expiresAt": {
                  "type": "integer",
                  "format": "int64",
                  "description": "Unix timestamp in milliseconds."
                },
                "externalId": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "A freeform field we will store your behalf. Once you receive\nwebhooks for status updates of this checkout, you can use this\nID to identify the checkout on your side.\nFor example, you can pass your order ID."
                },
                "fundingSourceId": {
                  "type": "string",
                  "description": "The ID of your wallet (funding source) that the checkout will be deposited into, automatically.\nTo determine the eTransfer email address for this checkout, you can fetch the funding source."
                },
                "id": {
                  "type": "string",
                  "description": "ID of the checkout. Can be used to poll the status of the checkout."
                },
                "paymentUrl": {
                  "type": "string",
                  "description": "The URL for the payment gateway. Redirect your user to this URL\nand we will guide them through the payent.\nNot used if you're building your own frontend around checkouts."
                },
                "redirectUrlFailure": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "The URL to redirect the customer after the checkout expires.\nOnly used for the checkout gateway. You can ignore this if\nyou're building the frontend for checkouts yourself."
                },
                "redirectUrlSuccess": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "The URL to redirect the customer after a successful checkout.\nOnly used for the checkout gateway. You can ignore this if\nyou're building the frontend for checkouts yourself."
                },
                "reference": {
                  "type": "string",
                  "description": "The reference that must be provided for this checkout when sending a transaction."
                },
                "status": {
                  "$ref": "#/components/schemas/CheckoutStatusDto",
                  "description": "The status of the checkout."
                },
                "transactionId": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "ID of the transaction that resolved this checkout. You can\nfetch this transaction to learn more details about the\ntransaction itself."
                }
              }
            }
          },
          "page": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "pageSize": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "totalCount": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "totalPages": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          }
        }
      },
      "PaginatedResult_PaymentLinkDto": {
        "type": "object",
        "required": [
          "page",
          "pageSize",
          "totalPages",
          "totalCount",
          "items"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "id",
                "reference",
                "accountId",
                "fundingSourceId",
                "status",
                "amount",
                "currency",
                "description",
                "payerName",
                "paymentUrl",
                "createdAt"
              ],
              "properties": {
                "accountId": {
                  "type": "string",
                  "description": "The ID of your account."
                },
                "amount": {
                  "type": "string",
                  "description": "The amount. Represented as a string for precision."
                },
                "createdAt": {
                  "type": "integer",
                  "format": "int64",
                  "description": "Unix timestamp in milliseconds."
                },
                "currency": {
                  "$ref": "#/components/schemas/SupportedCurrency",
                  "description": "The currency of the payment_link."
                },
                "description": {
                  "type": "string"
                },
                "expiresAt": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "format": "int64",
                  "description": "Unix timestamp in milliseconds. Null if the payment_link never expires."
                },
                "fundingSourceId": {
                  "type": "string",
                  "description": "The ID of your wallet (funding source) that the payment_link will be deposited into, automatically.\nTo determine the eTransfer email address for this payment_link, you can fetch the funding source."
                },
                "id": {
                  "type": "string",
                  "description": "ID of the payment_link. Can be used to poll the status of the payment_link."
                },
                "payerName": {
                  "type": "string"
                },
                "paymentUrl": {
                  "type": "string",
                  "description": "The URL for the payment gateway. Redirect your user to this URL\nand we will guide them through the payent.\nNot used if you're building your own frontend around payment links."
                },
                "reference": {
                  "type": "string",
                  "description": "The reference that must be provided for this payment_link when sending a transaction."
                },
                "status": {
                  "$ref": "#/components/schemas/PaymentLinkStatusDto",
                  "description": "The status of the payment_link."
                },
                "transactionId": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "ID of the transaction that resolved this payment_link. You can\nfetch this transaction to learn more details about the\ntransaction itself."
                }
              }
            }
          },
          "page": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "pageSize": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "totalCount": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "totalPages": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          }
        }
      },
      "PaginatedResult_WebhookBodyDto": {
        "type": "object",
        "required": [
          "page",
          "pageSize",
          "totalPages",
          "totalCount",
          "items"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "object",
                  "required": [
                    "data",
                    "type"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebhookPaymentLinkCompletedDto"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "paymentLinkCompleted"
                      ]
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "data",
                    "type"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebhookPaymentLinkExpiredDto"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "paymentLinkExpired"
                      ]
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "data",
                    "type"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebhookCheckoutCompletedDto"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "checkoutCompleted"
                      ]
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "data",
                    "type"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebhookCheckoutExpiredDto"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "checkoutExpired"
                      ]
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "data",
                    "type"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebhookTransactionUpdatedDto"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "transactionUpdated"
                      ]
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "data",
                    "type"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebhookTransactionCreatedDto"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "transactionCreated"
                      ]
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "data",
                    "type"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebhookFeeTransactionCreatedDto"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "feeTransactionCreated"
                      ]
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "data",
                    "type"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebhookManualTransactionCreatedDto"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "manualEtransferCreated"
                      ]
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "data",
                    "type"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebhookManualEtransferUpdatedDto"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "manualEtransferUpdated"
                      ]
                    }
                  }
                }
              ]
            }
          },
          "page": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "pageSize": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "totalCount": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "totalPages": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          }
        }
      },
      "PasswordChangeDto": {
        "type": "object",
        "required": [
          "password",
          "newPassword"
        ],
        "properties": {
          "newPassword": {
            "type": "string"
          },
          "password": {
            "type": "string"
          }
        }
      },
      "PaymentLinkDto": {
        "type": "object",
        "required": [
          "id",
          "reference",
          "accountId",
          "fundingSourceId",
          "status",
          "amount",
          "currency",
          "description",
          "payerName",
          "paymentUrl",
          "createdAt"
        ],
        "properties": {
          "accountId": {
            "type": "string",
            "description": "The ID of your account."
          },
          "amount": {
            "type": "string",
            "description": "The amount. Represented as a string for precision."
          },
          "createdAt": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp in milliseconds."
          },
          "currency": {
            "$ref": "#/components/schemas/SupportedCurrency",
            "description": "The currency of the payment_link."
          },
          "description": {
            "type": "string"
          },
          "expiresAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Unix timestamp in milliseconds. Null if the payment_link never expires."
          },
          "fundingSourceId": {
            "type": "string",
            "description": "The ID of your wallet (funding source) that the payment_link will be deposited into, automatically.\nTo determine the eTransfer email address for this payment_link, you can fetch the funding source."
          },
          "id": {
            "type": "string",
            "description": "ID of the payment_link. Can be used to poll the status of the payment_link."
          },
          "payerName": {
            "type": "string"
          },
          "paymentUrl": {
            "type": "string",
            "description": "The URL for the payment gateway. Redirect your user to this URL\nand we will guide them through the payent.\nNot used if you're building your own frontend around payment links."
          },
          "reference": {
            "type": "string",
            "description": "The reference that must be provided for this payment_link when sending a transaction."
          },
          "status": {
            "$ref": "#/components/schemas/PaymentLinkStatusDto",
            "description": "The status of the payment_link."
          },
          "transactionId": {
            "type": [
              "string",
              "null"
            ],
            "description": "ID of the transaction that resolved this payment_link. You can\nfetch this transaction to learn more details about the\ntransaction itself."
          }
        }
      },
      "PaymentLinkInfoDto": {
        "type": "object",
        "required": [
          "totalPending",
          "totalCompleted",
          "pendingCount",
          "completedCount",
          "conversionRate"
        ],
        "properties": {
          "completedCount": {
            "type": "integer",
            "format": "int64"
          },
          "conversionRate": {
            "type": "number",
            "format": "double"
          },
          "pendingCount": {
            "type": "integer",
            "format": "int64"
          },
          "totalCompleted": {
            "type": "string"
          },
          "totalPending": {
            "type": "string"
          }
        }
      },
      "PaymentLinkPageResponseDto": {
        "type": "object",
        "required": [
          "paymentLinks",
          "pageInfo"
        ],
        "properties": {
          "pageInfo": {
            "$ref": "#/components/schemas/PaymentLinkInfoDto"
          },
          "paymentLinks": {
            "$ref": "#/components/schemas/PaginatedResult_PaymentLinkDto"
          }
        }
      },
      "PaymentLinkStatusDto": {
        "type": "string",
        "enum": [
          "pending",
          "expired",
          "completed"
        ]
      },
      "PotentialUserDto": {
        "type": "object",
        "required": [
          "id",
          "type",
          "brandId",
          "tenantId",
          "username",
          "email",
          "status",
          "isUsPerson",
          "isPep"
        ],
        "properties": {
          "accountId": {
            "type": [
              "string",
              "null"
            ]
          },
          "brandId": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "isPep": {
            "type": "boolean"
          },
          "isUsPerson": {
            "type": "boolean"
          },
          "phoneNumber": {
            "type": [
              "string",
              "null"
            ]
          },
          "referrerAccountId": {
            "type": [
              "string",
              "null"
            ]
          },
          "referrerAffiliateId": {
            "type": [
              "string",
              "null"
            ]
          },
          "roles": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/UserRolesDto"
            }
          },
          "status": {
            "$ref": "#/components/schemas/PotentialUserStatusDto"
          },
          "tenantId": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/PotentialUserTypeDto"
          },
          "username": {
            "type": "string"
          }
        }
      },
      "PotentialUserStatusDto": {
        "type": "string",
        "enum": [
          "pendingEmailVerification",
          "pendingPhoneVerification",
          "pendingIdentityVerification",
          "identityVerificationFailed"
        ]
      },
      "PotentialUserTypeDto": {
        "type": "string",
        "enum": [
          "personal",
          "corporate",
          "moneyServicesBusiness"
        ]
      },
      "RedactedCheckoutDto": {
        "type": "object",
        "required": [
          "amount",
          "currency",
          "reference",
          "status",
          "receiverName",
          "etransferEmail",
          "expiresAt"
        ],
        "properties": {
          "amount": {
            "type": "string",
            "description": "The amount. Represented as a string for precision."
          },
          "currency": {
            "$ref": "#/components/schemas/SupportedCurrency",
            "description": "The currency of the checkout."
          },
          "etransferEmail": {
            "type": "string",
            "description": "Receiver e-Transfer email. Customer must send funds here"
          },
          "expiresAt": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp in milliseconds."
          },
          "receiverName": {
            "type": "string",
            "description": "Name of the receiver (Merchant)"
          },
          "redirectUrlFailure": {
            "type": [
              "string",
              "null"
            ],
            "description": "The URL to redirect the customer after the checkout expires.\nOnly used for the checkout gateway. You can ignore this if\nyou're building the frontend for checkouts yourself."
          },
          "redirectUrlSuccess": {
            "type": [
              "string",
              "null"
            ],
            "description": "The URL to redirect the customer after a successful checkout.\nOnly used for the checkout gateway. You can ignore this if\nyou're building the frontend for checkouts yourself."
          },
          "reference": {
            "type": "string",
            "description": "The reference that must be provided for this checkout when sending a transaction."
          },
          "status": {
            "$ref": "#/components/schemas/CheckoutStatusDto",
            "description": "The status of the checkout."
          }
        }
      },
      "RedactedPaymentLinkDto": {
        "type": "object",
        "required": [
          "amount",
          "currency",
          "reference",
          "status",
          "receiverName",
          "description",
          "etransferEmail"
        ],
        "properties": {
          "amount": {
            "type": "string",
            "description": "The amount. Represented as a string for precision."
          },
          "currency": {
            "$ref": "#/components/schemas/SupportedCurrency",
            "description": "The currency of the payment link."
          },
          "description": {
            "type": "string",
            "description": "Description of the payment"
          },
          "etransferEmail": {
            "type": "string",
            "description": "Receiver e-Transfer email. Customer must send funds here"
          },
          "expiresAt": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Unix timestamp in milliseconds. Null if the payment_link never expires."
          },
          "receiverName": {
            "type": "string",
            "description": "Name of the receiver (Merchant)"
          },
          "reference": {
            "type": "string",
            "description": "The reference that must be provided for this checkout when sending a transaction."
          },
          "status": {
            "$ref": "#/components/schemas/PaymentLinkStatusDto",
            "description": "The status of the payment link."
          }
        }
      },
      "SupportedCurrency": {
        "type": "string",
        "enum": [
          "CAD"
        ]
      },
      "TextRuleDto": {
        "type": "object",
        "required": [
          "minLength",
          "maxLength",
          "regex",
          "characters",
          "description"
        ],
        "properties": {
          "characters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "description": {
            "type": "string"
          },
          "maxLength": {
            "type": "integer",
            "format": "int64"
          },
          "minLength": {
            "type": "integer",
            "format": "int64"
          },
          "regex": {
            "type": "string"
          }
        }
      },
      "TotalBalanceDto": {
        "type": "object",
        "required": [
          "defaultCurrency",
          "representations"
        ],
        "properties": {
          "defaultCurrency": {
            "type": "string"
          },
          "representations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BalanceRepresentationDto"
            }
          }
        }
      },
      "TransactionCategoryDto": {
        "type": "string",
        "enum": [
          "etransfer",
          "eft",
          "fee",
          "internal"
        ]
      },
      "TransactionClaimRequestDto": {
        "type": "object",
        "required": [
          "claimantRole",
          "newReference",
          "txnDetails"
        ],
        "properties": {
          "claimantRole": {
            "$ref": "#/components/schemas/ClaimantRole"
          },
          "newReference": {
            "type": "string"
          },
          "txnDetails": {
            "$ref": "#/components/schemas/TxnDetailsDto"
          }
        }
      },
      "TransactionDto": {
        "type": "object",
        "required": [
          "id",
          "tenantId",
          "brandId",
          "ownerAccountId",
          "fundingSourceId",
          "amount",
          "currency",
          "createdAt",
          "lastModifiedAt",
          "category",
          "type",
          "status"
        ],
        "properties": {
          "amount": {
            "type": "number",
            "format": "double"
          },
          "beneficiaryId": {
            "type": [
              "string",
              "null"
            ]
          },
          "brandId": {
            "type": "string"
          },
          "category": {
            "$ref": "#/components/schemas/TransactionCategoryDto"
          },
          "createdAt": {
            "type": "integer",
            "format": "int64"
          },
          "currency": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "externalId": {
            "type": [
              "string",
              "null"
            ]
          },
          "fundingSourceId": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "interacReferenceNumber": {
            "type": [
              "string",
              "null"
            ]
          },
          "lastModifiedAt": {
            "type": "integer",
            "format": "int64"
          },
          "ownerAccountId": {
            "type": "string"
          },
          "ownerUserId": {
            "type": [
              "string",
              "null"
            ]
          },
          "peerAccountNumber": {
            "type": [
              "string",
              "null"
            ]
          },
          "peerBankNumber": {
            "type": [
              "string",
              "null"
            ]
          },
          "peerEtransferEmail": {
            "type": [
              "string",
              "null"
            ]
          },
          "peerFullName": {
            "type": [
              "string",
              "null"
            ]
          },
          "peerFundingSourceId": {
            "type": [
              "string",
              "null"
            ]
          },
          "peerTransitNumber": {
            "type": [
              "string",
              "null"
            ]
          },
          "principalTransactionId": {
            "type": [
              "string",
              "null"
            ]
          },
          "purposeCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "rejectionReason": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "$ref": "#/components/schemas/TransactionStatusDto"
          },
          "tenantId": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/TransactionTypeDto"
          }
        }
      },
      "TransactionExtendedDto": {
        "type": "object",
        "required": [
          "transaction",
          "fundingSources",
          "users"
        ],
        "properties": {
          "fundingSources": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/FundingSourceDto"
            },
            "propertyNames": {
              "type": "string"
            }
          },
          "transaction": {
            "$ref": "#/components/schemas/TransactionDto"
          },
          "users": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/UserDto"
            },
            "propertyNames": {
              "type": "string"
            }
          }
        }
      },
      "TransactionSearchResultDto": {
        "type": "object",
        "required": [
          "page",
          "pageSize",
          "totalPages",
          "totalCount",
          "transactions"
        ],
        "properties": {
          "page": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "pageSize": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "totalCount": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "totalPages": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionDto"
            }
          }
        }
      },
      "TransactionStatusDto": {
        "type": "string",
        "enum": [
          "pending",
          "canceled",
          "inProgress",
          "rejected",
          "completed"
        ]
      },
      "TransactionTypeDto": {
        "type": "string",
        "enum": [
          "inComing",
          "outGoing"
        ]
      },
      "TxnDetailsDto": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "eft"
            ],
            "properties": {
              "eft": {
                "$ref": "#/components/schemas/ClaimEftDto"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "etransfer"
            ],
            "properties": {
              "etransfer": {
                "$ref": "#/components/schemas/ClaimEtransferDto"
              }
            }
          }
        ]
      },
      "UpdateApiKeyStatusDto": {
        "type": "object",
        "required": [
          "status"
        ],
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ApiKeyStatusDto"
          }
        }
      },
      "UpdateWebhookUrlDto": {
        "type": "object",
        "required": [
          "status"
        ],
        "properties": {
          "status": {
            "$ref": "#/components/schemas/WebhookUrlStatusDto"
          }
        }
      },
      "UserDto": {
        "type": "object",
        "required": [
          "id",
          "brandId",
          "tenantId",
          "username",
          "firstName",
          "lastName",
          "email",
          "address",
          "status",
          "isUsPerson",
          "isPep",
          "phoneNumber",
          "roles",
          "accountId",
          "tosLastAcceptedAt",
          "createdAt"
        ],
        "properties": {
          "accountId": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "brandId": {
            "type": "string"
          },
          "createdAt": {
            "type": "integer",
            "format": "int64"
          },
          "email": {
            "type": "string"
          },
          "firstName": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "isPep": {
            "type": "boolean"
          },
          "isUsPerson": {
            "type": "boolean"
          },
          "lastName": {
            "type": "string"
          },
          "phoneNumber": {
            "type": "string"
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserRolesDto"
            }
          },
          "status": {
            "$ref": "#/components/schemas/UserStatusDto"
          },
          "tenantId": {
            "type": "string"
          },
          "tosLastAcceptedAt": {
            "type": "integer",
            "format": "int64"
          },
          "username": {
            "type": "string"
          }
        }
      },
      "UserInfoResponseDto": {
        "type": "object",
        "required": [
          "user",
          "totalBalance",
          "fiatFundingSources",
          "account"
        ],
        "properties": {
          "account": {
            "$ref": "#/components/schemas/AccountDto"
          },
          "fiatFundingSources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FundingSourceFiatDto"
            }
          },
          "totalBalance": {
            "$ref": "#/components/schemas/TotalBalanceDto"
          },
          "user": {
            "$ref": "#/components/schemas/AuthResponseBodyDto"
          }
        }
      },
      "UserRolesDto": {
        "type": "string",
        "enum": [
          "owner",
          "audit"
        ]
      },
      "UserStatusDto": {
        "type": "string",
        "enum": [
          "active",
          "inactive"
        ]
      },
      "WebhookBodyDto": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "$ref": "#/components/schemas/WebhookPaymentLinkCompletedDto"
              },
              "type": {
                "type": "string",
                "enum": [
                  "paymentLinkCompleted"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "$ref": "#/components/schemas/WebhookPaymentLinkExpiredDto"
              },
              "type": {
                "type": "string",
                "enum": [
                  "paymentLinkExpired"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "$ref": "#/components/schemas/WebhookCheckoutCompletedDto"
              },
              "type": {
                "type": "string",
                "enum": [
                  "checkoutCompleted"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "$ref": "#/components/schemas/WebhookCheckoutExpiredDto"
              },
              "type": {
                "type": "string",
                "enum": [
                  "checkoutExpired"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "$ref": "#/components/schemas/WebhookTransactionUpdatedDto"
              },
              "type": {
                "type": "string",
                "enum": [
                  "transactionUpdated"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "$ref": "#/components/schemas/WebhookTransactionCreatedDto"
              },
              "type": {
                "type": "string",
                "enum": [
                  "transactionCreated"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "$ref": "#/components/schemas/WebhookFeeTransactionCreatedDto"
              },
              "type": {
                "type": "string",
                "enum": [
                  "feeTransactionCreated"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "$ref": "#/components/schemas/WebhookManualTransactionCreatedDto"
              },
              "type": {
                "type": "string",
                "enum": [
                  "manualEtransferCreated"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "$ref": "#/components/schemas/WebhookManualEtransferUpdatedDto"
              },
              "type": {
                "type": "string",
                "enum": [
                  "manualEtransferUpdated"
                ]
              }
            }
          }
        ]
      },
      "WebhookCheckoutCompletedDto": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "WebhookCheckoutExpiredDto": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "WebhookFeeTransactionCreatedDto": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "WebhookManualEtransferUpdatedDto": {
        "type": "object",
        "required": [
          "id",
          "status",
          "lastModifiedAt"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "lastModifiedAt": {
            "type": "integer",
            "format": "int64"
          },
          "status": {
            "$ref": "#/components/schemas/ManualEtransferStatusDto"
          }
        }
      },
      "WebhookManualTransactionCreatedDto": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "WebhookPaymentLinkCompletedDto": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "WebhookPaymentLinkExpiredDto": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "WebhookTransactionCreatedDto": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "WebhookTransactionUpdatedDto": {
        "type": "object",
        "required": [
          "id",
          "status"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "rejectionReason": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "$ref": "#/components/schemas/TransactionStatusDto"
          }
        }
      },
      "WebhookUrlDto": {
        "type": "object",
        "required": [
          "id",
          "brandId",
          "accountId",
          "status",
          "url"
        ],
        "properties": {
          "accountId": {
            "type": "string"
          },
          "brandId": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/WebhookUrlStatusDto"
          },
          "url": {
            "type": "string"
          }
        }
      },
      "WebhookUrlStatusDto": {
        "type": "string",
        "enum": [
          "active",
          "inactive"
        ]
      },
      "Sorting": {
        "type": "string",
        "enum": [
          "ascending",
          "descending"
        ]
      }
    }
  },
  "servers": [
    {
      "url": "https://api.invinciblepay.com",
      "description": "Production API"
    }
  ]
}