{
  "openapi": "3.0.0",
  "info": {
    "title": "Ripio Gateway",
    "description": "Ripio API - Services documentation.",
    "version": "0.1.0",
    "x-logo": {
      "url": "https://cwstatic.nyc3.digitaloceanspaces.com/1996/bitcointrade.png"
    }
  },
  "servers": [
    {
      "url": "https://api.ripio.com",
      "description": "Production environment"
    }
  ],
  "components": {
    "securitySchemes": {
      "apiKey": {
        "type": "apiKey",
        "name": "Authorization",
        "in": "header"
      }
    }
  },
  "paths": {
    "/wallet/balance/": {
      "get": {
        "summary": "balances - Get balances",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Returns wallet balances (on-chain/fiat) and viral balances (DEX tokens) for the authenticated user.\n\nWallet balances include available amount, and locked amount per currency.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Balances retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "properties": {
                        "wallet": {
                          "description": "On-chain and fiat balances.",
                          "items": {
                            "properties": {
                              "currency": {
                                "description": "Currency code (e.g. BTC, ETH, ARS).",
                                "type": "string",
                                "example": "BTC"
                              },
                              "currency_internal_id": {
                                "description": "Internal Ripio currency ID.",
                                "type": "integer",
                                "example": 1
                              },
                              "amount": {
                                "description": "Available balance as a decimal string.",
                                "type": "string",
                                "example": "0.05000000"
                              },
                              "locked_amount": {
                                "description": "Locked balance (reserved for open orders) as a decimal string.",
                                "type": "string",
                                "example": "0.00000000"
                              }
                            },
                            "required": [
                              "currency",
                              "currency_internal_id",
                              "amount",
                              "locked_amount"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "virals": {
                          "description": "DEX viral token positions.",
                          "items": {
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "wallet"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": {
                      "wallet": [
                        {
                          "currency": "BTC",
                          "currency_internal_id": 1,
                          "amount": "0.05000000",
                          "locked_amount": "0.00000000"
                        }
                      ],
                      "virals": []
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          }
        }
      }
    },
    "/wallet/transactions/rails/": {
      "get": {
        "summary": "transactions - Get available rails",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Returns the list of available transaction types for the authenticated user, grouped by rail.\n\nEach rail entry (`bank`, `pix`, `crypto`, `ripio`) includes its available transaction types (`deposit`, `withdrawal`, `swap`) with their fees and tax information. `swap` lives under `rail: \"ripio\"` (RN-003). Results are filtered based on the user's account country, KYC level, and app version.\n\nCanonical path; the legacy `GET /transactions/gateways/` remains as a deprecated alias returning the same response.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "query",
            "name": "rail",
            "required": false,
            "description": "Filter by rail. `ripio` includes `swap` (RN-003). If omitted, all rails are returned.",
            "schema": {
              "example": "bank",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "transaction_type",
            "required": false,
            "description": "Filter by transaction type. If omitted, all types are returned.",
            "schema": {
              "example": "withdrawal",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Rails retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "items": {
                        "description": "A rail with its available transaction types. `swap` lives under `rail: \"ripio\"` (RN-003).",
                        "properties": {
                          "rail": {
                            "description": "Canonical rail identifier. `swap` is under `ripio`.",
                            "type": "string",
                            "example": "crypto"
                          },
                          "name": {
                            "description": "Human-readable name.",
                            "type": "string",
                            "example": "Crypto"
                          },
                          "order": {
                            "description": "Display order.",
                            "type": "integer",
                            "example": 1
                          },
                          "transaction_types": {
                            "items": {
                              "description": "A single transaction type available within a rail.",
                              "properties": {
                                "transaction_type": {
                                  "description": "Public transaction type.",
                                  "type": "string",
                                  "example": "withdrawal"
                                },
                                "enabled": {
                                  "description": "Whether this transaction type is globally enabled.",
                                  "type": "boolean",
                                  "example": true
                                },
                                "account_enabled": {
                                  "description": "Whether this transaction type is enabled for the requesting account given its KYC schema.",
                                  "type": "boolean",
                                  "example": true
                                },
                                "fee": {
                                  "description": "Percentage fee as a decimal string.",
                                  "type": "string",
                                  "example": "0.00"
                                },
                                "fixed_fee": {
                                  "description": "Fixed fee amount as a decimal string.",
                                  "type": "string",
                                  "example": "0.00"
                                },
                                "custom_fee_currencies": {
                                  "description": "Per-pair custom fee overrides.",
                                  "type": "object",
                                  "example": {}
                                },
                                "taxes": {
                                  "items": {
                                    "description": "Tax information associated with a gateway action.",
                                    "properties": {
                                      "tax_name": {
                                        "type": "string",
                                        "example": "IVA"
                                      },
                                      "tax_description": {
                                        "type": "string",
                                        "example": "Impuesto al valor agregado"
                                      },
                                      "tax_ratio": {
                                        "description": "Effective tax ratio as a decimal string.",
                                        "type": "string",
                                        "example": "0.21"
                                      },
                                      "tax_in_new_transaction": {
                                        "type": "boolean",
                                        "example": true
                                      },
                                      "only_thirdpart": {
                                        "type": "boolean",
                                        "example": false
                                      }
                                    },
                                    "type": "object"
                                  },
                                  "type": "array",
                                  "example": []
                                },
                                "deliver_time": {
                                  "description": "Estimated delivery time.",
                                  "type": "string",
                                  "example": "24hs"
                                },
                                "blocked": {
                                  "description": "Whether this transaction type is blocked for the account by an account feature flag.",
                                  "type": "boolean",
                                  "example": false
                                }
                              },
                              "required": [
                                "transaction_type",
                                "enabled",
                                "account_enabled",
                                "fee",
                                "fixed_fee",
                                "custom_fee_currencies",
                                "taxes",
                                "deliver_time",
                                "blocked"
                              ],
                              "type": "object"
                            },
                            "type": "array"
                          }
                        },
                        "required": [
                          "rail",
                          "name",
                          "order",
                          "transaction_types"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": [
                      {
                        "rail": "crypto",
                        "name": "Crypto",
                        "order": 1,
                        "transaction_types": [
                          {
                            "transaction_type": "withdrawal",
                            "enabled": true,
                            "account_enabled": true,
                            "fee": "0.00",
                            "fixed_fee": "0.00",
                            "custom_fee_currencies": {},
                            "taxes": [],
                            "deliver_time": "24hs",
                            "blocked": false
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          }
        }
      }
    },
    "/wallet/transactions/gateways/": {
      "get": {
        "summary": "transactions - [DEPRECATED] Get available rails (alias of /transactions/rails/)",
        "tags": [
          "Ripio Wallet",
          "Frontend Only"
        ],
        "description": "> ⚠️ **Frontend Only** — This endpoint can only be accessed from the web application frontend.\n\n**Deprecated:** use `GET /transactions/rails/` instead. This path is kept as a temporary alias pointing to the same view and returns an identical response.\n\nReturns the list of available transaction types for the authenticated user, grouped by rail.\n\nEach rail entry (`bank`, `pix`, `crypto`, `ripio`) includes its available transaction types (`deposit`, `withdrawal`, `swap`) with their fees and tax information. `swap` lives under `rail: \"ripio\"` (RN-003). Results are filtered based on the user's account country, KYC level, and app version.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "query",
            "name": "rail",
            "required": false,
            "description": "Filter by rail. `ripio` includes `swap` (RN-003). If omitted, all rails are returned.",
            "schema": {
              "example": "bank",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "transaction_type",
            "required": false,
            "description": "Filter by transaction type. If omitted, all types are returned.",
            "schema": {
              "example": "withdrawal",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Payment gateways retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "items": {
                        "description": "A rail with its available transaction types. `swap` lives under `rail: \"ripio\"` (RN-003).",
                        "properties": {
                          "rail": {
                            "description": "Canonical rail identifier. `swap` is under `ripio`.",
                            "type": "string",
                            "example": "crypto"
                          },
                          "name": {
                            "description": "Human-readable name.",
                            "type": "string",
                            "example": "Crypto"
                          },
                          "order": {
                            "description": "Display order.",
                            "type": "integer",
                            "example": 1
                          },
                          "transaction_types": {
                            "items": {
                              "description": "A single transaction type available within a rail.",
                              "properties": {
                                "transaction_type": {
                                  "description": "Public transaction type.",
                                  "type": "string",
                                  "example": "withdrawal"
                                },
                                "enabled": {
                                  "description": "Whether this transaction type is globally enabled.",
                                  "type": "boolean",
                                  "example": true
                                },
                                "account_enabled": {
                                  "description": "Whether this transaction type is enabled for the requesting account given its KYC schema.",
                                  "type": "boolean",
                                  "example": true
                                },
                                "fee": {
                                  "description": "Percentage fee as a decimal string.",
                                  "type": "string",
                                  "example": "0.00"
                                },
                                "fixed_fee": {
                                  "description": "Fixed fee amount as a decimal string.",
                                  "type": "string",
                                  "example": "0.00"
                                },
                                "custom_fee_currencies": {
                                  "description": "Per-pair custom fee overrides.",
                                  "type": "object",
                                  "example": {}
                                },
                                "taxes": {
                                  "items": {
                                    "description": "Tax information associated with a gateway action.",
                                    "properties": {
                                      "tax_name": {
                                        "type": "string",
                                        "example": "IVA"
                                      },
                                      "tax_description": {
                                        "type": "string",
                                        "example": "Impuesto al valor agregado"
                                      },
                                      "tax_ratio": {
                                        "description": "Effective tax ratio as a decimal string.",
                                        "type": "string",
                                        "example": "0.21"
                                      },
                                      "tax_in_new_transaction": {
                                        "type": "boolean",
                                        "example": true
                                      },
                                      "only_thirdpart": {
                                        "type": "boolean",
                                        "example": false
                                      }
                                    },
                                    "type": "object"
                                  },
                                  "type": "array",
                                  "example": []
                                },
                                "deliver_time": {
                                  "description": "Estimated delivery time.",
                                  "type": "string",
                                  "example": "24hs"
                                },
                                "blocked": {
                                  "description": "Whether this transaction type is blocked for the account by an account feature flag.",
                                  "type": "boolean",
                                  "example": false
                                }
                              },
                              "required": [
                                "transaction_type",
                                "enabled",
                                "account_enabled",
                                "fee",
                                "fixed_fee",
                                "custom_fee_currencies",
                                "taxes",
                                "deliver_time",
                                "blocked"
                              ],
                              "type": "object"
                            },
                            "type": "array"
                          }
                        },
                        "required": [
                          "rail",
                          "name",
                          "order",
                          "transaction_types"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": [
                      {
                        "rail": "crypto",
                        "name": "Crypto",
                        "order": 1,
                        "transaction_types": [
                          {
                            "transaction_type": "withdrawal",
                            "enabled": true,
                            "account_enabled": true,
                            "fee": "0.00",
                            "fixed_fee": "0.00",
                            "custom_fee_currencies": {},
                            "taxes": [],
                            "deliver_time": "24hs",
                            "blocked": false
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          }
        }
      }
    },
    "/wallet/currencies/": {
      "get": {
        "summary": "currencies - Get wallet currencies",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Returns the list of on-chain and fiat currencies available in the authenticated user's wallet.\n\nEach entry includes basic metadata (ticker, name, symbol, decimals, categories) and the `actions` supported for that currency, expressed in the public rail vocabulary. Results are filtered by the user's country and KYC level.\n\nEach item in `actions` describes one `transaction_type` (`deposit`, `withdrawal` or `swap`) and the `rails` that serve it for this currency. `rails` is a subset of `bank`, `pix`, `crypto`, `ripio`; `swap` has no rail and is always returned as an empty array. A currency whose internal actions have no public equivalent is returned with `actions: []` (it still appears in the list).\n\nSupports optional search by ticker or name via the `search` query parameter.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Wallet currencies retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "description": "List of wallet currency objects.",
                      "items": {
                        "description": "Currency object returned by `GET currencies/`. Allowlist-based (DT-002): only these fields are exposed, no internal jargon (raw gateways, raw actions) leaks through.",
                        "properties": {
                          "ticker": {
                            "description": "Currency ticker.",
                            "type": "string",
                            "example": "BTC"
                          },
                          "name": {
                            "description": "Display name of the currency.",
                            "type": "string",
                            "example": "Bitcoin"
                          },
                          "symbol": {
                            "description": "Currency symbol.",
                            "type": "string",
                            "example": "₿"
                          },
                          "decimals": {
                            "description": "Number of decimal places used by the currency.",
                            "type": "integer",
                            "example": 8
                          },
                          "type": {
                            "description": "Whether the currency is on-chain crypto or fiat.",
                            "type": "string",
                            "example": "crypto"
                          },
                          "color": {
                            "description": "Brand color for the currency, as a hex string.",
                            "type": "string",
                            "example": "#F7931A"
                          },
                          "categories": {
                            "description": "Categories the currency belongs to.",
                            "items": {
                              "type": "string"
                            },
                            "type": "array",
                            "example": [
                              "crypto"
                            ]
                          },
                          "currency_balance_id": {
                            "description": "Internal Ripio currency balance ID. Same identifier used elsewhere in the gateway (e.g. `GatewayCurrencyNetwork.currency_balance_id`).",
                            "type": "integer",
                            "example": 1
                          },
                          "is_favorite": {
                            "description": "Whether the authenticated user has marked this currency as a favorite.",
                            "type": "boolean",
                            "example": false
                          },
                          "new": {
                            "description": "Whether the currency is flagged as newly added to the wallet.",
                            "type": "boolean",
                            "example": false
                          },
                          "actions": {
                            "description": "Supported operations for this currency, grouped by public transaction type. Empty when none of the currency's internal actions map to the public triad (the currency still appears in the list).",
                            "items": {
                              "description": "One supported operation for a wallet currency, expressed in the public rail vocabulary (`transaction_type` + `rails`). Internal actions and gateways without a public equivalent (e.g. buy/sell/pay/defi) are omitted rather than exposed raw.",
                              "properties": {
                                "transaction_type": {
                                  "description": "Canonical public transaction type.",
                                  "type": "string",
                                  "example": "withdrawal"
                                },
                                "enabled": {
                                  "description": "Whether this transaction type is currently enabled for the currency.",
                                  "type": "boolean",
                                  "example": true
                                },
                                "rails": {
                                  "description": "Canonical rails serving this transaction type for this currency. Always empty for `swap`, which has no rail.",
                                  "items": {
                                    "type": "string"
                                  },
                                  "type": "array",
                                  "example": [
                                    "crypto",
                                    "ripio"
                                  ]
                                }
                              },
                              "required": [
                                "transaction_type",
                                "enabled",
                                "rails"
                              ],
                              "type": "object"
                            },
                            "type": "array"
                          }
                        },
                        "required": [
                          "ticker",
                          "name",
                          "symbol",
                          "decimals",
                          "type",
                          "color",
                          "categories",
                          "currency_balance_id",
                          "is_favorite",
                          "new",
                          "actions"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": [
                      {
                        "ticker": "BTC",
                        "name": "Bitcoin",
                        "symbol": "₿",
                        "decimals": 8,
                        "type": "crypto",
                        "color": "#F7931A",
                        "categories": [
                          "crypto"
                        ],
                        "currency_balance_id": 1,
                        "is_favorite": false,
                        "new": false,
                        "actions": [
                          {
                            "transaction_type": "deposit",
                            "enabled": true,
                            "rails": [
                              "crypto",
                              "ripio"
                            ]
                          },
                          {
                            "transaction_type": "withdrawal",
                            "enabled": true,
                            "rails": [
                              "crypto",
                              "ripio"
                            ]
                          },
                          {
                            "transaction_type": "swap",
                            "enabled": true,
                            "rails": []
                          }
                        ]
                      },
                      {
                        "ticker": "ARS",
                        "name": "Peso Argentino",
                        "symbol": "$",
                        "decimals": 2,
                        "type": "fiat",
                        "color": "#74ACDF",
                        "categories": [
                          "fiat"
                        ],
                        "currency_balance_id": 2,
                        "is_favorite": false,
                        "new": false,
                        "actions": [
                          {
                            "transaction_type": "deposit",
                            "enabled": true,
                            "rails": [
                              "bank"
                            ]
                          },
                          {
                            "transaction_type": "withdrawal",
                            "enabled": true,
                            "rails": [
                              "bank"
                            ]
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          }
        }
      }
    },
    "/wallet/network/currency-networks/{currency}/": {
      "get": {
        "summary": "network - Get networks for a currency",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Returns the list of blockchain networks available for the given currency for the authenticated user.\n\nEach entry includes network metadata (code, name, images), fee information, send/receive flags, min/max amounts, and travel rule requirements.\n\nThe `currency` path parameter is the currency ticker (e.g. `BTC`, `ETH`, `USDT`).\n\nResults are filtered by the user's account country and feature flags, and ordered by the network's display order.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "query",
            "name": "network__code",
            "required": false,
            "description": "Filter by network code (e.g. `ethereum`).",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "native_network",
            "required": false,
            "description": "Filter to return only networks where this currency is native.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "path",
            "name": "currency",
            "required": true,
            "description": "This property was not properly documented",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Currency networks retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "items": {
                        "description": "A blockchain network available for a specific currency.",
                        "properties": {
                          "currency": {
                            "description": "Currency ticker.",
                            "type": "string",
                            "example": "ETH"
                          },
                          "currency_balance_id": {
                            "description": "Internal Ripio currency balance ID.",
                            "type": "integer",
                            "example": 3
                          },
                          "network": {
                            "description": "Minimal network representation returned alongside an address or currency-network.",
                            "properties": {
                              "id": {
                                "description": "Internal network ID.",
                                "type": "integer",
                                "example": 1
                              },
                              "code": {
                                "description": "Network code (blockchain identifier).",
                                "type": "string",
                                "example": "ethereum"
                              },
                              "name": {
                                "description": "Human-readable network name.",
                                "type": "string",
                                "example": "Ethereum"
                              },
                              "status_tag": {
                                "description": "Optional status label (e.g. `congested`).",
                                "type": "string",
                                "example": null
                              },
                              "deliver_time": {
                                "description": "Estimated confirmation time.",
                                "type": "string",
                                "example": "~15 min"
                              },
                              "enabled": {
                                "description": "Whether this network is currently enabled.",
                                "type": "boolean",
                                "example": true
                              },
                              "use_memo": {
                                "description": "Whether transactions on this network require a memo/tag (e.g. XRP, Stellar).",
                                "type": "boolean",
                                "example": false
                              }
                            },
                            "required": [
                              "id",
                              "code",
                              "name",
                              "status_tag",
                              "deliver_time",
                              "enabled",
                              "use_memo"
                            ],
                            "type": "object"
                          },
                          "native_network": {
                            "description": "Whether this is the native blockchain for the currency (e.g. ETH on ethereum).",
                            "type": "boolean",
                            "example": true
                          },
                          "standard": {
                            "description": "Token standard (e.g. `ERC20`, `BEP20`). Null for native currencies.",
                            "type": "string",
                            "example": "ERC20"
                          },
                          "network_standard": {
                            "description": "Network-level standard identifier.",
                            "type": "string",
                            "example": "ERC20"
                          },
                          "fee": {
                            "description": "Estimated withdrawal fee in currency units as a decimal string.",
                            "type": "string",
                            "example": "0.001"
                          },
                          "fee_tag": {
                            "description": "Optional display label for the fee.",
                            "type": "string",
                            "example": null
                          },
                          "send": {
                            "description": "Whether sending (withdrawal) is available on this network.",
                            "type": "boolean",
                            "example": true
                          },
                          "receive": {
                            "description": "Whether receiving (deposit) is available on this network.",
                            "type": "boolean",
                            "example": true
                          },
                          "order": {
                            "description": "Display order.",
                            "type": "integer",
                            "example": 1
                          },
                          "enabled": {
                            "description": "Whether this currency-network combination is enabled.",
                            "type": "boolean",
                            "example": true
                          },
                          "min_amount": {
                            "description": "Minimum withdrawal amount as a decimal string.",
                            "type": "string",
                            "example": "0.001"
                          },
                          "max_amount": {
                            "description": "Maximum withdrawal amount as a decimal string.",
                            "type": "string",
                            "example": "100.000"
                          },
                          "is_partial_disabled_send": {
                            "description": "Whether sends are partially disabled (e.g. maintenance).",
                            "type": "boolean",
                            "example": false
                          },
                          "is_partial_disabled_receive": {
                            "description": "Whether receives are partially disabled.",
                            "type": "boolean",
                            "example": false
                          },
                          "messages": {
                            "description": "Informational messages to display to the user about this network.",
                            "items": {
                              "type": "object"
                            },
                            "type": "array",
                            "example": []
                          }
                        },
                        "required": [
                          "currency",
                          "currency_balance_id",
                          "network",
                          "native_network",
                          "standard",
                          "network_standard",
                          "fee",
                          "fee_tag",
                          "send",
                          "receive",
                          "order",
                          "enabled",
                          "min_amount",
                          "max_amount",
                          "is_partial_disabled_send",
                          "is_partial_disabled_receive",
                          "messages"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": [
                      {
                        "currency": "ETH",
                        "currency_balance_id": 3,
                        "network": {
                          "id": 1,
                          "code": "ethereum",
                          "name": "Ethereum",
                          "status_tag": null,
                          "deliver_time": "~15 min",
                          "enabled": true,
                          "use_memo": false
                        },
                        "native_network": true,
                        "standard": "ERC20",
                        "network_standard": "ERC20",
                        "fee": "0.001",
                        "fee_tag": null,
                        "send": true,
                        "receive": true,
                        "order": 1,
                        "enabled": true,
                        "min_amount": "0.001",
                        "max_amount": "100.000",
                        "is_partial_disabled_send": false,
                        "is_partial_disabled_receive": false,
                        "messages": []
                      }
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          },
          "404": {
            "description": "Error response 404"
          }
        }
      }
    },
    "/wallet/banking/pix/": {
      "get": {
        "summary": "banking - [DEPRECATED] List own Pix deposit accounts (alias of GET /banking/deposit-accounts/)",
        "tags": [
          "Ripio Wallet",
          "Frontend Only"
        ],
        "description": "> ⚠️ **Frontend Only** — This endpoint can only be accessed from the web application frontend.\n\n**Deprecated:** use `GET /banking/deposit-accounts/` instead. This path is kept as a temporary alias for clients still integrated against the legacy Pix endpoint; it reads the same underlying Ripio deposit accounts but returns them in the older, byte-for-byte legacy shape.\n\n**Country restriction:** Only available for accounts with `country = BR`.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Pix accounts retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "items": {
                        "description": "Legacy Pix deposit account shape (predates the `/banking/deposit-accounts/` discriminated union). Kept byte-for-byte identical to the historical contract.",
                        "properties": {
                          "id": {
                            "type": "integer",
                            "example": 501
                          },
                          "owner_name": {
                            "type": "string",
                            "example": "Ripio Brasil Ltda"
                          },
                          "owner_id_type": {
                            "type": "string",
                            "example": "CNPJ"
                          },
                          "owner_id_number": {
                            "type": "string",
                            "example": "12345678000199"
                          },
                          "bank_name": {
                            "type": "string",
                            "example": "starkbank"
                          },
                          "bank_account_number": {
                            "type": "string",
                            "example": "0001234567"
                          },
                          "bank_account_type": {
                            "type": "string",
                            "example": "checking"
                          },
                          "agencia": {
                            "type": "string",
                            "example": "0001"
                          },
                          "currency": {
                            "type": "string",
                            "example": "BRL"
                          },
                          "status": {
                            "type": "string",
                            "example": null
                          },
                          "statement_proof": {
                            "type": "string",
                            "example": null
                          },
                          "qr": {
                            "type": "string",
                            "example": null
                          },
                          "extra_fields": {
                            "type": "object",
                            "example": {
                              "agencia": "0001"
                            }
                          },
                          "deposit_constraint": {
                            "properties": {
                              "same_holder": {
                                "type": "string",
                                "example": "12345678900"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Forbidden. Account country is not BR.",
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/wallet/rates/": {
      "get": {
        "summary": "rates - Get wallet rates",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Returns the current buy/sell exchange rates for all wallet currency pairs available to the authenticated user.\n\nRates are filtered by the user's country and account currency. Each entry includes the currency pair ticker, buy and sell rates, and the 24h variation percentage.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Wallet rates retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "items": {
                        "description": "Exchange rate for a wallet currency pair.",
                        "properties": {
                          "ticker": {
                            "description": "Currency pair ticker (e.g. `BTC_ARS`).",
                            "type": "string",
                            "example": "BTC_ARS"
                          },
                          "base_currency_balance_id": {
                            "description": "Internal balance ID of the base currency.",
                            "type": "integer",
                            "example": 1
                          },
                          "quote_currency_balance_id": {
                            "description": "Internal balance ID of the quote currency.",
                            "type": "integer",
                            "example": 2
                          },
                          "buy_rate": {
                            "description": "Buy rate as a decimal string.",
                            "type": "string",
                            "example": "98000000.00"
                          },
                          "sell_rate": {
                            "description": "Sell rate as a decimal string.",
                            "type": "string",
                            "example": "95000000.00"
                          },
                          "variation": {
                            "description": "24h price variation percentage.",
                            "type": "string",
                            "example": "1.25"
                          }
                        },
                        "required": [
                          "ticker",
                          "base_currency_balance_id",
                          "quote_currency_balance_id",
                          "buy_rate",
                          "sell_rate",
                          "variation"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": [
                      {
                        "ticker": "BTC_ARS",
                        "base_currency_balance_id": 1,
                        "quote_currency_balance_id": 2,
                        "buy_rate": "98000000.00",
                        "sell_rate": "95000000.00",
                        "variation": "1.25"
                      },
                      {
                        "ticker": "ETH_ARS",
                        "base_currency_balance_id": 3,
                        "quote_currency_balance_id": 2,
                        "buy_rate": "4800000.00",
                        "sell_rate": "4650000.00",
                        "variation": "-0.80"
                      }
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          },
          "503": {
            "description": "Error response 503"
          }
        }
      }
    },
    "/wallet/addresses/": {
      "get": {
        "summary": "addresses - Get account crypto addresses",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Returns all blockchain deposit addresses assigned to the authenticated user's account.\n\nEach entry includes the address string, the associated network (with metadata), an optional memo ID (required for networks like XRP/Stellar), and the address version.\n\nResults can be filtered by network code or address value, and are ordered by network display order.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "query",
            "name": "network",
            "required": false,
            "description": "Filter by network code (e.g. `ethereum`, `bitcoin`, `tron`).",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "address",
            "required": false,
            "description": "Filter by exact address value.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Account addresses retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "items": {
                        "description": "A blockchain deposit address assigned to the user's account.",
                        "properties": {
                          "address": {
                            "description": "Blockchain address string.",
                            "type": "string",
                            "example": "0xabc123..."
                          },
                          "memo_id": {
                            "description": "Memo or destination tag required by some networks (XRP, Stellar). Null if not applicable.",
                            "type": "string",
                            "example": null
                          },
                          "version": {
                            "description": "Address version. Incremented when an address is rotated.",
                            "type": "integer",
                            "example": 1
                          },
                          "network": {
                            "description": "Minimal network representation returned alongside an address or currency-network.",
                            "properties": {
                              "id": {
                                "description": "Internal network ID.",
                                "type": "integer",
                                "example": 1
                              },
                              "code": {
                                "description": "Network code (blockchain identifier).",
                                "type": "string",
                                "example": "ethereum"
                              },
                              "name": {
                                "description": "Human-readable network name.",
                                "type": "string",
                                "example": "Ethereum"
                              },
                              "status_tag": {
                                "description": "Optional status label (e.g. `congested`).",
                                "type": "string",
                                "example": null
                              },
                              "deliver_time": {
                                "description": "Estimated confirmation time.",
                                "type": "string",
                                "example": "~15 min"
                              },
                              "enabled": {
                                "description": "Whether this network is currently enabled.",
                                "type": "boolean",
                                "example": true
                              },
                              "use_memo": {
                                "description": "Whether transactions on this network require a memo/tag (e.g. XRP, Stellar).",
                                "type": "boolean",
                                "example": false
                              }
                            },
                            "required": [
                              "id",
                              "code",
                              "name",
                              "status_tag",
                              "deliver_time",
                              "enabled",
                              "use_memo"
                            ],
                            "type": "object"
                          }
                        },
                        "required": [
                          "address",
                          "memo_id",
                          "network",
                          "version"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": [
                      {
                        "address": "0xabc123...",
                        "memo_id": null,
                        "version": 1,
                        "network": {
                          "id": 1,
                          "code": "ethereum",
                          "name": "Ethereum",
                          "status_tag": null,
                          "deliver_time": "~15 min",
                          "enabled": true,
                          "use_memo": false
                        }
                      }
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          }
        }
      }
    },
    "/wallet/balance/wallet": {
      "get": {
        "summary": "balances - Get wallet balances",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Returns only the crypto and fiat wallet balances for the authenticated user.\n\nThis is a filtered subset of `GET /balance/` that omits memecoin (DEX) positions. Useful when the caller only needs traditional asset balances.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Wallet balances retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "description": "List of crypto and fiat wallet balances.",
                      "items": {
                        "properties": {
                          "currency": {
                            "description": "Currency code (e.g. BTC, ETH, ARS).",
                            "type": "string",
                            "example": "BTC"
                          },
                          "currency_internal_id": {
                            "description": "Internal Ripio currency ID.",
                            "type": "integer",
                            "example": 1
                          },
                          "amount": {
                            "description": "Available balance as a decimal string.",
                            "type": "string",
                            "example": "0.05000000"
                          },
                          "locked_amount": {
                            "description": "Locked balance (reserved for open orders) as a decimal string.",
                            "type": "string",
                            "example": "0.00000000"
                          }
                        },
                        "required": [
                          "currency",
                          "currency_internal_id",
                          "amount",
                          "locked_amount"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": [
                      {
                        "currency": "BTC",
                        "currency_internal_id": 1,
                        "amount": "0.05000000",
                        "locked_amount": "0.00000000"
                      },
                      {
                        "currency": "ARS",
                        "currency_internal_id": 2,
                        "amount": "150000.00",
                        "locked_amount": "0.00"
                      }
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          }
        }
      }
    },
    "/wallet/balance/viral": {
      "get": {
        "summary": "balances - Get memecoin balances",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Returns only the memecoin (DEX) balances for the authenticated user.\n\nResults are filtered by the user's country, staff status, and enabled `SHOW_BALANCE_DEX` currency actions.\n\nThis is a filtered subset of `GET /balance/` that omits traditional crypto and fiat wallet balances.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Memecoin balances retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "description": "List of memecoin (DEX) balances. Empty array if the user has no DEX positions or none are enabled for their country.",
                      "items": {
                        "properties": {
                          "currency": {
                            "description": "Currency code (e.g. BTC, ETH, ARS).",
                            "type": "string",
                            "example": "BTC"
                          },
                          "currency_internal_id": {
                            "description": "Internal Ripio currency ID.",
                            "type": "integer",
                            "example": 1
                          },
                          "amount": {
                            "description": "Available balance as a decimal string.",
                            "type": "string",
                            "example": "0.05000000"
                          },
                          "locked_amount": {
                            "description": "Locked balance (reserved for open orders) as a decimal string.",
                            "type": "string",
                            "example": "0.00000000"
                          }
                        },
                        "required": [
                          "currency",
                          "currency_internal_id",
                          "amount",
                          "locked_amount"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": [
                      {
                        "currency": "VIRAL",
                        "currency_internal_id": 42,
                        "amount": "1000.000000000000000000",
                        "locked_amount": "0.00"
                      }
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          }
        }
      }
    },
    "/wallet/transactions/pix/withdrawal/": {
      "post": {
        "summary": "transactions - Create a PIX withdrawal",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Initiates a BRL withdrawal via PIX for the authenticated user.\n\nThe `gateway_data.pix_key` field must be a valid PIX key (CPF, CNPJ, email, phone, or random key).\n\n**Whitelisted contacts only:** The destination PIX key must be a previously whitelisted contact of the user. Use `POST /contacts/` to create and whitelist a banking contact before calling this endpoint.\n\n**Own account exception:** If the destination PIX key is registered as one of the authenticated user's own PIX keys, whitelisting is not required.\n\n**Country restriction:** Only available for accounts with `country = BR`.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "amount": {
                    "description": "Withdrawal amount as a decimal string. Must be ≥ 0.01, with up to 2 decimal places.",
                    "type": "string",
                    "example": "150.00"
                  },
                  "currency": {
                    "description": "Currency to withdraw. Only `BRL` is accepted.",
                    "type": "string",
                    "example": "BRL"
                  },
                  "gateway_data": {
                    "description": "Gateway-specific data for the PIX withdrawal.",
                    "properties": {
                      "pix_key": {
                        "description": "Destination PIX key. Can be a CPF, CNPJ, email address, phone number, or random EVP key.",
                        "type": "string",
                        "example": "12345678901"
                      }
                    },
                    "required": [
                      "pix_key"
                    ],
                    "type": "object"
                  },
                  "source": {
                    "description": "Optional field to indicate funds come from wallet or ripio trade (default is wallet)",
                    "type": "string",
                    "example": "trade"
                  }
                },
                "required": [
                  "amount",
                  "currency",
                  "gateway_data"
                ],
                "type": "object"
              },
              "examples": {
                "pix_withdrawal": {
                  "summary": "PIX withdrawal",
                  "value": {
                    "amount": "150.00",
                    "currency": "BRL",
                    "gateway_data": {
                      "pix_key": "23351302000100"
                    }
                  }
                },
                "pix_withdrawal_trade": {
                  "summary": "PIX withdrawal with trade balance",
                  "value": {
                    "amount": "150.00",
                    "currency": "BRL",
                    "gateway_data": {
                      "pix_key": "23351302000100"
                    },
                    "source": "trade"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "PIX withdrawal transaction created successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "description": "Transaction object returned by the transactions list, detail and creation endpoints (`GET /transactions/`, `GET /transactions/{id}/`, and the 201 responses of every `/transactions/{rail}/{action}/` endpoint). All three surfaces share this exact shape.",
                      "properties": {
                        "id": {
                          "description": "Unique transaction identifier (source: `pk`). Same value returned by list, detail and creation endpoints.",
                          "type": "integer",
                          "example": 12345
                        },
                        "external_id": {
                          "description": "External provider reference for this transaction, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "transaction_type": {
                          "description": "Canonical public transaction type.",
                          "type": "string",
                          "example": "withdrawal"
                        },
                        "rail": {
                          "description": "Canonical rail. `null` for `swap`, which has no rail.",
                          "type": "string",
                          "example": "bank"
                        },
                        "status": {
                          "description": "Transaction status. `WTG`=waiting, `WTR`=waiting receipt, `PEN`=pending, `PMA`=pending manual approval, `PRO`=processing, `PAP`=partially paid, `COM`=completed, `CAN`=cancelled, `EXP`=expired, `ERR`=error, `REF`=refunded, `REJ`=rejected, `HOLD`=hold, `SUS`=suspended.",
                          "type": "string",
                          "example": "PEN"
                        },
                        "gateway_details": {
                          "description": "Extra gateway-specific detail. For `rail=crypto` this is the blockchain network. For `rail=ripio` transfers (`deposit`/`withdrawal`) this is the literal string `\"ripio_tag\"`. `null` for `swap` (a conversion, not a transfer) and for `bank`/`pix`.",
                          "type": "string",
                          "example": null
                        },
                        "transaction_hash": {
                          "description": "Blockchain transaction hash, when applicable (crypto transactions).",
                          "type": "string",
                          "example": null
                        },
                        "from_currency": {
                          "description": "Currency ticker being debited/converted from.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "to_currency": {
                          "description": "Currency ticker being credited/converted to. Equal to `from_currency` for transfers (deposit/withdrawal); different for `swap`.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fiat_currency": {
                          "description": "Fiat currency used to express `amount_fiat`, regardless of `from_currency`/`to_currency`.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee_currency": {
                          "description": "Currency in which the fee is charged. `null` when no fee applies.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee": {
                          "description": "Fee amount as a decimal string, in `fee_currency`. `null` when no fee applies.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "fee_fiat": {
                          "description": "Fee amount expressed in `fiat_currency`, as a decimal string. `null` when no fee applies.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "rate": {
                          "description": "Exchange rate applied between `from_currency` and `to_currency`, as a decimal string.",
                          "type": "string",
                          "example": "1"
                        },
                        "rate_usd": {
                          "description": "Exchange rate applied against USD, as a decimal string.",
                          "type": "string",
                          "example": "1050.00"
                        },
                        "amount_from": {
                          "description": "Amount debited in `from_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_to": {
                          "description": "Amount credited in `to_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_fiat": {
                          "description": "Amount expressed in `fiat_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_usd": {
                          "description": "Amount expressed in USD, as a decimal string.",
                          "type": "string",
                          "example": "4.76"
                        },
                        "origin": {
                          "description": "Origin address/account of the transaction, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "destination": {
                          "description": "Destination address/account of the transaction, when applicable (e.g. bank alias, blockchain address, `ripio_tag` handle).",
                          "type": "string",
                          "example": "some.bank.alias"
                        },
                        "tax": {
                          "description": "Tax amount as a decimal string, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "tax_currency": {
                          "description": "Tax currency, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "created_at": {
                          "description": "ISO 8601 timestamp when the transaction was created.",
                          "type": "string",
                          "example": "2026-04-13T12:00:00Z"
                        },
                        "updated_at": {
                          "description": "ISO 8601 timestamp of the last update.",
                          "type": "string",
                          "example": "2026-04-13T12:01:00Z"
                        },
                        "extra_data": {
                          "description": "Allowlisted, per-key additional detail. Only the keys `provider_reference`, `bank_account` and `bank_name` may appear here — internal identifiers such as `person_id`, `person_name`, `user_full_name`, `user_id` or `user_uuid` are NEVER exposed, even if the backend computes them internally. Empty object (`{}`) when no allowlisted key applies.",
                          "properties": {
                            "provider_reference": {
                              "description": "External payment provider's reference for this transaction.",
                              "type": "string"
                            },
                            "bank_account": {
                              "description": "Bank account identifier/alias involved in the transaction.",
                              "type": "string"
                            },
                            "bank_name": {
                              "description": "Name of the bank involved in the transaction.",
                              "type": "string"
                            }
                          },
                          "type": "object",
                          "example": {
                            "bank_account": "some.bank.alias"
                          }
                        }
                      },
                      "required": [
                        "id",
                        "external_id",
                        "transaction_type",
                        "rail",
                        "status",
                        "gateway_details",
                        "transaction_hash",
                        "from_currency",
                        "to_currency",
                        "fiat_currency",
                        "fee_currency",
                        "fee",
                        "fee_fiat",
                        "rate",
                        "rate_usd",
                        "amount_from",
                        "amount_to",
                        "amount_fiat",
                        "amount_usd",
                        "origin",
                        "destination",
                        "tax",
                        "tax_currency",
                        "created_at",
                        "updated_at",
                        "extra_data"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": {
                      "id": 12349,
                      "external_id": null,
                      "transaction_type": "withdrawal",
                      "rail": "pix",
                      "status": "PEN",
                      "gateway_details": null,
                      "transaction_hash": null,
                      "from_currency": "BRL",
                      "to_currency": "BRL",
                      "fiat_currency": "BRL",
                      "fee_currency": "BRL",
                      "fee": "0.00",
                      "fee_fiat": "0.00",
                      "rate": "1",
                      "rate_usd": "5.20",
                      "amount_from": "150.00",
                      "amount_to": "150.00",
                      "amount_fiat": "150.00",
                      "amount_usd": "28.85",
                      "origin": null,
                      "destination": "23351302000100",
                      "tax": null,
                      "tax_currency": null,
                      "created_at": "2026-04-13T12:00:00Z",
                      "updated_at": "2026-04-13T12:00:00Z",
                      "extra_data": {}
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Bad Request — validation error in the request body.",
                  "properties": {
                    "error_code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": "TXN_0450",
                    "message": "Missing pix key. TXN_0450",
                    "data": null,
                    "timestamp": 1777674872826
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Forbidden — insufficient JWT permissions or account not fully operative.",
                  "properties": {
                    "error_code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": "ERR_0009",
                    "message": "Forbidden",
                    "data": null
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error response 429"
          },
          "503": {
            "description": "Error response 503"
          }
        }
      }
    },
    "/wallet/transactions/": {
      "get": {
        "summary": "transactions - List transactions",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Returns a cursor-paginated list of the authenticated user's transactions, restricted to the gateway's rails (`bank`, `pix`, `crypto`, `ripio`, plus `swap` with `rail=null`) and ordered by creation date descending. Transactions of other internal types (e.g. `BUY`, `SELL`) are not part of this contract and are excluded.\n\nSupports filtering by `rail`, `transaction_type`, `currency` and `payment_method_id`.\n\nPagination is cursor-based: the response includes `nc` (next cursor) and `pc` (previous cursor) tokens. Pass them back as `?cursor=<token>` to navigate pages. Tokens are opaque — do not parse or modify them.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "query",
            "name": "rail",
            "required": false,
            "description": "Filter by rail. `swap` transactions have no rail and are excluded when this filter is set.",
            "schema": {
              "example": "bank",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "transaction_type",
            "required": false,
            "description": "Filter by canonical transaction type. `deposit`/`withdrawal` match all rails; `swap` has no rail.",
            "schema": {
              "example": "withdrawal",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "currency",
            "required": false,
            "description": "Filter by currency ticker. Matches against both the fiat currency (`currency`) and the crypto currency (`crypto_currency`) of the transaction (e.g. `ARS`, `BTC`, `USDT`).",
            "schema": {
              "example": "ARS",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "payment_method_id",
            "required": false,
            "description": "Filter by payment method ID.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "description": "Opaque cursor token for pagination. Use the `nc` value from the previous response to fetch the next page, or `pc` for the previous page. Omit to start from the first page.",
            "schema": {
              "example": "cD0yMDI2LTAyLTI0KzAw...",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Transaction list retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "properties": {
                        "results": {
                          "items": {
                            "description": "Transaction object returned by the transactions list, detail and creation endpoints (`GET /transactions/`, `GET /transactions/{id}/`, and the 201 responses of every `/transactions/{rail}/{action}/` endpoint). All three surfaces share this exact shape.",
                            "properties": {
                              "id": {
                                "description": "Unique transaction identifier (source: `pk`). Same value returned by list, detail and creation endpoints.",
                                "type": "integer",
                                "example": 12345
                              },
                              "external_id": {
                                "description": "External provider reference for this transaction, when applicable.",
                                "type": "string",
                                "example": null
                              },
                              "transaction_type": {
                                "description": "Canonical public transaction type.",
                                "type": "string",
                                "example": "withdrawal"
                              },
                              "rail": {
                                "description": "Canonical rail. `null` for `swap`, which has no rail.",
                                "type": "string",
                                "example": "bank"
                              },
                              "status": {
                                "description": "Transaction status. `WTG`=waiting, `WTR`=waiting receipt, `PEN`=pending, `PMA`=pending manual approval, `PRO`=processing, `PAP`=partially paid, `COM`=completed, `CAN`=cancelled, `EXP`=expired, `ERR`=error, `REF`=refunded, `REJ`=rejected, `HOLD`=hold, `SUS`=suspended.",
                                "type": "string",
                                "example": "PEN"
                              },
                              "gateway_details": {
                                "description": "Extra gateway-specific detail. For `rail=crypto` this is the blockchain network. For `rail=ripio` transfers (`deposit`/`withdrawal`) this is the literal string `\"ripio_tag\"`. `null` for `swap` (a conversion, not a transfer) and for `bank`/`pix`.",
                                "type": "string",
                                "example": null
                              },
                              "transaction_hash": {
                                "description": "Blockchain transaction hash, when applicable (crypto transactions).",
                                "type": "string",
                                "example": null
                              },
                              "from_currency": {
                                "description": "Currency ticker being debited/converted from.",
                                "type": "string",
                                "example": "ARS"
                              },
                              "to_currency": {
                                "description": "Currency ticker being credited/converted to. Equal to `from_currency` for transfers (deposit/withdrawal); different for `swap`.",
                                "type": "string",
                                "example": "ARS"
                              },
                              "fiat_currency": {
                                "description": "Fiat currency used to express `amount_fiat`, regardless of `from_currency`/`to_currency`.",
                                "type": "string",
                                "example": "ARS"
                              },
                              "fee_currency": {
                                "description": "Currency in which the fee is charged. `null` when no fee applies.",
                                "type": "string",
                                "example": "ARS"
                              },
                              "fee": {
                                "description": "Fee amount as a decimal string, in `fee_currency`. `null` when no fee applies.",
                                "type": "string",
                                "example": "0.00"
                              },
                              "fee_fiat": {
                                "description": "Fee amount expressed in `fiat_currency`, as a decimal string. `null` when no fee applies.",
                                "type": "string",
                                "example": "0.00"
                              },
                              "rate": {
                                "description": "Exchange rate applied between `from_currency` and `to_currency`, as a decimal string.",
                                "type": "string",
                                "example": "1"
                              },
                              "rate_usd": {
                                "description": "Exchange rate applied against USD, as a decimal string.",
                                "type": "string",
                                "example": "1050.00"
                              },
                              "amount_from": {
                                "description": "Amount debited in `from_currency`, as a decimal string.",
                                "type": "string",
                                "example": "5000.00"
                              },
                              "amount_to": {
                                "description": "Amount credited in `to_currency`, as a decimal string.",
                                "type": "string",
                                "example": "5000.00"
                              },
                              "amount_fiat": {
                                "description": "Amount expressed in `fiat_currency`, as a decimal string.",
                                "type": "string",
                                "example": "5000.00"
                              },
                              "amount_usd": {
                                "description": "Amount expressed in USD, as a decimal string.",
                                "type": "string",
                                "example": "4.76"
                              },
                              "origin": {
                                "description": "Origin address/account of the transaction, when applicable.",
                                "type": "string",
                                "example": null
                              },
                              "destination": {
                                "description": "Destination address/account of the transaction, when applicable (e.g. bank alias, blockchain address, `ripio_tag` handle).",
                                "type": "string",
                                "example": "some.bank.alias"
                              },
                              "tax": {
                                "description": "Tax amount as a decimal string, when applicable.",
                                "type": "string",
                                "example": null
                              },
                              "tax_currency": {
                                "description": "Tax currency, when applicable.",
                                "type": "string",
                                "example": null
                              },
                              "created_at": {
                                "description": "ISO 8601 timestamp when the transaction was created.",
                                "type": "string",
                                "example": "2026-04-13T12:00:00Z"
                              },
                              "updated_at": {
                                "description": "ISO 8601 timestamp of the last update.",
                                "type": "string",
                                "example": "2026-04-13T12:01:00Z"
                              },
                              "extra_data": {
                                "description": "Allowlisted, per-key additional detail. Only the keys `provider_reference`, `bank_account` and `bank_name` may appear here — internal identifiers such as `person_id`, `person_name`, `user_full_name`, `user_id` or `user_uuid` are NEVER exposed, even if the backend computes them internally. Empty object (`{}`) when no allowlisted key applies.",
                                "properties": {
                                  "provider_reference": {
                                    "description": "External payment provider's reference for this transaction.",
                                    "type": "string"
                                  },
                                  "bank_account": {
                                    "description": "Bank account identifier/alias involved in the transaction.",
                                    "type": "string"
                                  },
                                  "bank_name": {
                                    "description": "Name of the bank involved in the transaction.",
                                    "type": "string"
                                  }
                                },
                                "type": "object",
                                "example": {
                                  "bank_account": "some.bank.alias"
                                }
                              }
                            },
                            "required": [
                              "id",
                              "external_id",
                              "transaction_type",
                              "rail",
                              "status",
                              "gateway_details",
                              "transaction_hash",
                              "from_currency",
                              "to_currency",
                              "fiat_currency",
                              "fee_currency",
                              "fee",
                              "fee_fiat",
                              "rate",
                              "rate_usd",
                              "amount_from",
                              "amount_to",
                              "amount_fiat",
                              "amount_usd",
                              "origin",
                              "destination",
                              "tax",
                              "tax_currency",
                              "created_at",
                              "updated_at",
                              "extra_data"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "nc": {
                          "description": "Next cursor token. Pass as `?cursor=<nc>` to fetch the next page. `null` when there is no next page.",
                          "type": "string",
                          "example": "cD0yMDI2LTAyLTI0KzAw..."
                        },
                        "pc": {
                          "description": "Previous cursor token. Pass as `?cursor=<pc>` to fetch the previous page. `null` on the first page.",
                          "type": "string",
                          "example": null
                        }
                      },
                      "required": [
                        "results",
                        "nc",
                        "pc"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": {
                      "results": [
                        {
                          "id": 12345,
                          "external_id": null,
                          "transaction_type": "withdrawal",
                          "rail": "bank",
                          "status": "COM",
                          "gateway_details": null,
                          "transaction_hash": null,
                          "from_currency": "ARS",
                          "to_currency": "ARS",
                          "fiat_currency": "ARS",
                          "fee_currency": "ARS",
                          "fee": "0.00",
                          "fee_fiat": "0.00",
                          "rate": "1",
                          "rate_usd": "1050.00",
                          "amount_from": "5000.00",
                          "amount_to": "5000.00",
                          "amount_fiat": "5000.00",
                          "amount_usd": "4.76",
                          "origin": null,
                          "destination": "some.bank.alias",
                          "tax": null,
                          "tax_currency": null,
                          "created_at": "2026-04-13T12:00:00Z",
                          "updated_at": "2026-04-13T12:01:00Z",
                          "extra_data": {
                            "bank_account": "some.bank.alias"
                          }
                        },
                        {
                          "id": 12346,
                          "external_id": null,
                          "transaction_type": "withdrawal",
                          "rail": "crypto",
                          "status": "COM",
                          "gateway_details": "bitcoin",
                          "transaction_hash": "abc123txhash",
                          "from_currency": "BTC",
                          "to_currency": "BTC",
                          "fiat_currency": "ARS",
                          "fee_currency": "BTC",
                          "fee": "0.00005",
                          "fee_fiat": "5.25",
                          "rate": "1",
                          "rate_usd": "65000.00",
                          "amount_from": "0.001",
                          "amount_to": "0.001",
                          "amount_fiat": "65.00",
                          "amount_usd": "65.00",
                          "origin": null,
                          "destination": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
                          "tax": null,
                          "tax_currency": null,
                          "created_at": "2026-04-13T12:00:00Z",
                          "updated_at": "2026-04-13T12:01:00Z",
                          "extra_data": {}
                        }
                      ],
                      "nc": "cD0yMDI2LTAyLTI0KzAw...",
                      "pc": null
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          }
        }
      }
    },
    "/wallet/transactions/{pk}/": {
      "get": {
        "summary": "transactions - Get a transaction by ID",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Returns the details of a single transaction identified by its internal numeric `pk`.\n\nThe `pk` is returned as the `id` field in every transaction object from the list and creation endpoints.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "path",
            "name": "pk",
            "required": true,
            "description": "This property was not properly documented",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Transaction retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "description": "Transaction object returned by the gateway API.",
                      "properties": {
                        "id": {
                          "description": "Unique transaction identifier.",
                          "type": "integer",
                          "example": 12345
                        },
                        "external_id": {
                          "description": "External provider reference ID, if available.",
                          "type": "string",
                          "example": null
                        },
                        "operation_type": {
                          "description": "Normalized operation type from the user's perspective. Some raw types are mapped for clarity (e.g. `SEND` → `WITHDRAWAL`, `RECEIVE` → `DEPOSIT`, balance `BUY`/`SELL` → `SWAP`).",
                          "type": "string",
                          "example": "WITHDRAWAL"
                        },
                        "txn_type": {
                          "description": "Raw transaction type as stored in the database, without normalization.",
                          "type": "string",
                          "example": "WIT"
                        },
                        "gateway": {
                          "description": "Gateway used for this transaction.",
                          "type": "string",
                          "example": "bank-transfer-cvu"
                        },
                        "gateway_details": {
                          "description": "Extra detail about the gateway (e.g. network name, payment rail).",
                          "type": "string",
                          "example": null
                        },
                        "gateway_detail": {
                          "description": "Alias of `gateway_details`.",
                          "type": "string",
                          "example": null
                        },
                        "from_currency": {
                          "description": "Source currency ticker.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "to_currency": {
                          "description": "Destination currency ticker.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fiat_currency": {
                          "description": "Fiat currency of the user's account.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee_currency": {
                          "description": "Currency in which the fee is charged.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee": {
                          "description": "Fee amount as a decimal string, expressed in `fee_currency`.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "fee_fiat": {
                          "description": "Fee amount expressed in the account's fiat currency.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "rate": {
                          "description": "Exchange rate between `from_currency` and `to_currency`. `1.00` when no conversion applies.",
                          "type": "string",
                          "example": "1.00"
                        },
                        "rate_usd": {
                          "description": "Exchange rate of the destination currency to USD.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "amount_from": {
                          "description": "Amount sent/spent in `from_currency`.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_to": {
                          "description": "Amount received in `to_currency`.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_fiat": {
                          "description": "Equivalent of `amount_to` in the account's fiat currency.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_usd": {
                          "description": "Equivalent of `amount_to` in USD.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "status": {
                          "description": "Transaction status. `PEN`=pending, `PRO`=processing, `COM`=completed, `ERR`=error, `WTG`=waiting, `CAN`=cancelled, `REF`=refunded, `REJ`=rejected.",
                          "type": "string",
                          "example": "COM"
                        },
                        "created_at": {
                          "description": "ISO 8601 timestamp when the transaction was created.",
                          "type": "string",
                          "example": "2026-04-13T12:00:00"
                        },
                        "updated_at": {
                          "description": "ISO 8601 timestamp of the last update.",
                          "type": "string",
                          "example": "2026-04-13T12:01:00"
                        },
                        "origin": {
                          "description": "Origin of the funds (e.g. CVU, blockchain address, rp_tag).",
                          "type": "string",
                          "example": null
                        },
                        "destination": {
                          "description": "Destination of the funds (e.g. CVU, blockchain address, rp_tag).",
                          "type": "string",
                          "example": null
                        },
                        "tax": {
                          "description": "Tax amount as a decimal string. `0` when not applicable.",
                          "type": "string",
                          "example": "0"
                        },
                        "tax_currency": {
                          "description": "Currency of the tax charge.",
                          "type": "string",
                          "example": null
                        },
                        "extra_data": {
                          "description": "Additional gateway-specific fields. Common keys: `provider_reference`, `bank_account`, `person_id`, `person_name`, `memo`, `external_url`, `network_code`, `description`.",
                          "type": "object",
                          "example": {}
                        }
                      },
                      "required": [
                        "id",
                        "operation_type",
                        "txn_type",
                        "gateway",
                        "from_currency",
                        "to_currency",
                        "fiat_currency",
                        "fee",
                        "fee_fiat",
                        "rate",
                        "rate_usd",
                        "amount_from",
                        "amount_to",
                        "amount_fiat",
                        "amount_usd",
                        "status",
                        "created_at",
                        "updated_at",
                        "extra_data"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": {
                      "id": "12345",
                      "currency": "BTC",
                      "alt_fee_currency": null,
                      "date_created": "2026-04-13T12:00:00Z",
                      "status": "COM",
                      "amount": "0.001",
                      "fee_currency": "BTC",
                      "fee": "0.00",
                      "total": "0.00105",
                      "alt_fee": "0.00",
                      "address_from": null,
                      "address_to": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
                      "address_to_memo": null,
                      "network": "BTC",
                      "network_fee": "0.00005",
                      "amount_network_fee": "0.00005",
                      "crypto_amount": "0.001",
                      "rate_currency": null,
                      "description": null,
                      "expiring_date": null,
                      "barcode": null,
                      "invoice_pdf": null,
                      "redirect": null,
                      "gateway": "crypto",
                      "txn_hash": "abc123txhash",
                      "txn_type": "SEND",
                      "txn_class": "transfer",
                      "phone_refill": null,
                      "currency_pair": null,
                      "balance_transfer_hash": null,
                      "investment_id": null,
                      "txn_hash_url": "https://blockstream.info/tx/abc123txhash",
                      "reference_code": "abc123xyz",
                      "gateway_data": {},
                      "is_swap": false,
                      "reference_id": null,
                      "network_standard": "BTC"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          },
          "404": {
            "description": "Error response 404"
          }
        }
      }
    },
    "/wallet/transactions/crypto/send/": {
      "post": {
        "summary": "transactions - [DEPRECATED] Create a crypto withdrawal (legacy alias of...",
        "tags": [
          "Ripio Wallet",
          "Frontend Only"
        ],
        "description": "> ⚠️ **Frontend Only** — This endpoint can only be accessed from the web application frontend.\n\n**Deprecated:** use `POST /transactions/crypto/withdrawal/` instead. This path is kept as a temporary alias pointing to the same view.\n\nInitiates a crypto WITHDRAWAL transaction to an external blockchain address for the authenticated user.\n\nThe `address_to` field must be a valid address for the given `currency` and `network`.\n\n**Whitelisted contacts only:** The destination address must be a previously whitelisted crypto contact of the user. Use `POST /contacts/` to create and whitelist a crypto contact before calling this endpoint.\n\n**How to obtain the required values:**\n- `gateway_data.network`: use the `GET /currency-networks/` endpoint. Use the `code` field of the desired network (e.g. `\"bitcoin\"`, `\"ethereum\"`, `\"polygon\"`).\n- `network_fee`: use the `GET /currency-networks/` endpoint. Use the `network_fee` field of the chosen network.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "amount": {
                    "description": "Amount to send as a decimal string.",
                    "type": "string",
                    "example": "123.32"
                  },
                  "currency": {
                    "description": "Crypto currency ticker to send.",
                    "type": "string",
                    "example": "USDT"
                  },
                  "address_to": {
                    "description": "Destination blockchain address.",
                    "type": "string",
                    "example": "0x1234567890123456789012345678901234567890"
                  },
                  "network_fee": {
                    "description": "Network fee as a decimal string. Must be ≥ 0. Obtain the recommended value from the `network_fee` field in `GET /currency-networks/`.",
                    "type": "string",
                    "example": "0.01"
                  },
                  "gateway_data": {
                    "description": "Gateway-specific data for the crypto send.",
                    "properties": {
                      "network": {
                        "description": "Blockchain network code. Must match the `code` field returned by `GET /currency-networks/` (e.g. `\"bitcoin\"`, `\"ethereum\"`, `\"polygon\"`). This is NOT the currency ticker.",
                        "type": "string",
                        "example": "plasma"
                      },
                      "memo_id": {
                        "description": "Optional memo/tag required by some networks (e.g. Ripple requires a numeric memo). Only needed when the network supports memos.",
                        "type": "string",
                        "example": "123456789"
                      }
                    },
                    "required": [
                      "network"
                    ],
                    "type": "object"
                  },
                  "source": {
                    "description": "Optional field to indicate funds come from wallet or ripio trade (default is wallet)",
                    "type": "string",
                    "example": "trade"
                  }
                },
                "required": [
                  "amount",
                  "currency",
                  "address_to",
                  "network_fee",
                  "gateway_data"
                ],
                "type": "object"
              },
              "examples": {
                "send_usdt_plasma": {
                  "summary": "Send USDT via Plasma network",
                  "value": {
                    "amount": "4.980176",
                    "currency": "USDT",
                    "address_to": "0x1234567890123456789012345678901234567890",
                    "network_fee": "0.01",
                    "gateway_data": {
                      "network": "plasma"
                    }
                  }
                },
                "send_btc": {
                  "summary": "Send BTC via Bitcoin network with Trade balance",
                  "value": {
                    "amount": "0.001",
                    "currency": "BTC",
                    "address_to": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
                    "network_fee": "0.00005",
                    "gateway_data": {
                      "network": "bitcoin"
                    },
                    "source": "trade"
                  }
                },
                "send_eth": {
                  "summary": "Send ETH via Ethereum network",
                  "value": {
                    "amount": "0.01",
                    "currency": "ETH",
                    "address_to": "0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe",
                    "network_fee": "0.0005",
                    "gateway_data": {
                      "network": "ethereum"
                    }
                  }
                },
                "send_usdt_polygon": {
                  "summary": "Send USDT via Polygon network",
                  "value": {
                    "amount": "10.00",
                    "currency": "USDT",
                    "address_to": "0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe",
                    "network_fee": "0.001",
                    "gateway_data": {
                      "network": "polygon"
                    }
                  }
                },
                "send_xrp_with_memo": {
                  "summary": "Send XRP via Ripple network (with memo)",
                  "value": {
                    "amount": "5.00",
                    "currency": "XRP",
                    "address_to": "rN7n3473SaZBCG4dFL75SaZBCG4dFL75",
                    "network_fee": "0.00001",
                    "gateway_data": {
                      "network": "ripple",
                      "memo_id": "123456789"
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Send transaction created successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "description": "Transaction object returned by the transactions list, detail and creation endpoints (`GET /transactions/`, `GET /transactions/{id}/`, and the 201 responses of every `/transactions/{rail}/{action}/` endpoint). All three surfaces share this exact shape.",
                      "properties": {
                        "id": {
                          "description": "Unique transaction identifier (source: `pk`). Same value returned by list, detail and creation endpoints.",
                          "type": "integer",
                          "example": 12345
                        },
                        "external_id": {
                          "description": "External provider reference for this transaction, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "transaction_type": {
                          "description": "Canonical public transaction type.",
                          "type": "string",
                          "example": "withdrawal"
                        },
                        "rail": {
                          "description": "Canonical rail. `null` for `swap`, which has no rail.",
                          "type": "string",
                          "example": "bank"
                        },
                        "status": {
                          "description": "Transaction status. `WTG`=waiting, `WTR`=waiting receipt, `PEN`=pending, `PMA`=pending manual approval, `PRO`=processing, `PAP`=partially paid, `COM`=completed, `CAN`=cancelled, `EXP`=expired, `ERR`=error, `REF`=refunded, `REJ`=rejected, `HOLD`=hold, `SUS`=suspended.",
                          "type": "string",
                          "example": "PEN"
                        },
                        "gateway_details": {
                          "description": "Extra gateway-specific detail. For `rail=crypto` this is the blockchain network. For `rail=ripio` transfers (`deposit`/`withdrawal`) this is the literal string `\"ripio_tag\"`. `null` for `swap` (a conversion, not a transfer) and for `bank`/`pix`.",
                          "type": "string",
                          "example": null
                        },
                        "transaction_hash": {
                          "description": "Blockchain transaction hash, when applicable (crypto transactions).",
                          "type": "string",
                          "example": null
                        },
                        "from_currency": {
                          "description": "Currency ticker being debited/converted from.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "to_currency": {
                          "description": "Currency ticker being credited/converted to. Equal to `from_currency` for transfers (deposit/withdrawal); different for `swap`.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fiat_currency": {
                          "description": "Fiat currency used to express `amount_fiat`, regardless of `from_currency`/`to_currency`.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee_currency": {
                          "description": "Currency in which the fee is charged. `null` when no fee applies.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee": {
                          "description": "Fee amount as a decimal string, in `fee_currency`. `null` when no fee applies.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "fee_fiat": {
                          "description": "Fee amount expressed in `fiat_currency`, as a decimal string. `null` when no fee applies.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "rate": {
                          "description": "Exchange rate applied between `from_currency` and `to_currency`, as a decimal string.",
                          "type": "string",
                          "example": "1"
                        },
                        "rate_usd": {
                          "description": "Exchange rate applied against USD, as a decimal string.",
                          "type": "string",
                          "example": "1050.00"
                        },
                        "amount_from": {
                          "description": "Amount debited in `from_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_to": {
                          "description": "Amount credited in `to_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_fiat": {
                          "description": "Amount expressed in `fiat_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_usd": {
                          "description": "Amount expressed in USD, as a decimal string.",
                          "type": "string",
                          "example": "4.76"
                        },
                        "origin": {
                          "description": "Origin address/account of the transaction, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "destination": {
                          "description": "Destination address/account of the transaction, when applicable (e.g. bank alias, blockchain address, `ripio_tag` handle).",
                          "type": "string",
                          "example": "some.bank.alias"
                        },
                        "tax": {
                          "description": "Tax amount as a decimal string, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "tax_currency": {
                          "description": "Tax currency, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "created_at": {
                          "description": "ISO 8601 timestamp when the transaction was created.",
                          "type": "string",
                          "example": "2026-04-13T12:00:00Z"
                        },
                        "updated_at": {
                          "description": "ISO 8601 timestamp of the last update.",
                          "type": "string",
                          "example": "2026-04-13T12:01:00Z"
                        },
                        "extra_data": {
                          "description": "Allowlisted, per-key additional detail. Only the keys `provider_reference`, `bank_account` and `bank_name` may appear here — internal identifiers such as `person_id`, `person_name`, `user_full_name`, `user_id` or `user_uuid` are NEVER exposed, even if the backend computes them internally. Empty object (`{}`) when no allowlisted key applies.",
                          "properties": {
                            "provider_reference": {
                              "description": "External payment provider's reference for this transaction.",
                              "type": "string"
                            },
                            "bank_account": {
                              "description": "Bank account identifier/alias involved in the transaction.",
                              "type": "string"
                            },
                            "bank_name": {
                              "description": "Name of the bank involved in the transaction.",
                              "type": "string"
                            }
                          },
                          "type": "object",
                          "example": {
                            "bank_account": "some.bank.alias"
                          }
                        }
                      },
                      "required": [
                        "id",
                        "external_id",
                        "transaction_type",
                        "rail",
                        "status",
                        "gateway_details",
                        "transaction_hash",
                        "from_currency",
                        "to_currency",
                        "fiat_currency",
                        "fee_currency",
                        "fee",
                        "fee_fiat",
                        "rate",
                        "rate_usd",
                        "amount_from",
                        "amount_to",
                        "amount_fiat",
                        "amount_usd",
                        "origin",
                        "destination",
                        "tax",
                        "tax_currency",
                        "created_at",
                        "updated_at",
                        "extra_data"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": {
                      "id": 12346,
                      "external_id": null,
                      "transaction_type": "withdrawal",
                      "rail": "crypto",
                      "status": "COM",
                      "gateway_details": "bitcoin",
                      "transaction_hash": "abc123txhash",
                      "from_currency": "BTC",
                      "to_currency": "BTC",
                      "fiat_currency": "ARS",
                      "fee_currency": "BTC",
                      "fee": "0.00005",
                      "fee_fiat": "5.25",
                      "rate": "1",
                      "rate_usd": "65000.00",
                      "amount_from": "0.001",
                      "amount_to": "0.001",
                      "amount_fiat": "65.00",
                      "amount_usd": "65.00",
                      "origin": null,
                      "destination": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
                      "tax": null,
                      "tax_currency": null,
                      "created_at": "2026-04-13T12:00:00Z",
                      "updated_at": "2026-04-13T12:01:00Z",
                      "extra_data": {}
                    },
                    "timestamp": 1777674497268
                  }
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Bad Request — validation error in the request body.",
                  "properties": {
                    "error_code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": "ADR_0400",
                    "message": "La dirección de destino no es válida. ADR_0400",
                    "data": null,
                    "timestamp": 1777674872826
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Forbidden — insufficient JWT permissions or account not fully operative.",
                  "properties": {
                    "error_code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": "ERR_0009",
                    "message": "Forbidden",
                    "data": null
                  }
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Conflict — insufficient balance.",
                  "properties": {
                    "error_code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": "BAL_0400",
                    "message": "No tenés suficiente saldo disponible para realizar esta operación. BAL_0400",
                    "data": null,
                    "timestamp": 1777674791342
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error response 429"
          },
          "503": {
            "description": "Error response 503"
          }
        }
      }
    },
    "/wallet/account/": {
      "get": {
        "summary": "accounts - Get Account",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Returns the sanitized account profile for the authenticated user. Same shape for all countries: country-specific internal fields (e.g. `cuit`/`cvu` in AR, `rfc` in MX, `paymatico_reference`/`investor_survey` in ES/CL) are not part of this public contract.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Account profile retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "description": "Sanitized account profile. Same shape for every country — country-specific internal fields (`cuit`/`cvu`, `rfc`, `paymatico_reference`, `investor_survey`, etc.) are not part of the public contract.",
                      "properties": {
                        "id": {
                          "description": "Internal Ripio account ID.",
                          "type": "integer",
                          "example": 12345
                        },
                        "first_name": {
                          "type": "string",
                          "example": "Juan"
                        },
                        "last_name": {
                          "type": "string",
                          "example": "Perez"
                        },
                        "birthday": {
                          "type": "string",
                          "example": "1990-05-20"
                        },
                        "country": {
                          "description": "ISO 3166-1 alpha-2 country code.",
                          "type": "string",
                          "example": "AR"
                        },
                        "currency": {
                          "description": "Account default fiat currency (ISO 4217 code).",
                          "type": "string",
                          "example": "ARS"
                        },
                        "postal_code": {
                          "type": "string",
                          "example": "1900"
                        },
                        "gender": {
                          "description": "Gender as recorded during KYC verification.",
                          "type": "string",
                          "example": "M"
                        },
                        "validation_level": {
                          "description": "KYC level: 0=unverified, 1=basic, 2=intermediate, 3=advanced, 4=full.",
                          "type": "integer",
                          "example": 3
                        },
                        "id_number": {
                          "description": "National ID number (e.g. DNI in AR).",
                          "type": "string",
                          "example": "30123456"
                        },
                        "id_number_type": {
                          "description": "Type of the national ID document. Null if unset.",
                          "type": "string",
                          "example": "DNI"
                        },
                        "phone": {
                          "description": "E.164 formatted phone number.",
                          "type": "string",
                          "example": "+5491112345678"
                        },
                        "username": {
                          "description": "Ripio username (email address).",
                          "type": "string",
                          "example": "user@example.com"
                        },
                        "phone_validated": {
                          "type": "boolean",
                          "example": true
                        },
                        "status": {
                          "description": "Account status. `OK` = active, `NR` = needs review, `SS` = suspended, `CD` = closed.",
                          "type": "string",
                          "example": "OK"
                        },
                        "address": {
                          "type": "string",
                          "example": "Av. Siempre Viva 742"
                        },
                        "address_number": {
                          "type": "string",
                          "example": "742"
                        },
                        "address_flat": {
                          "type": "string",
                          "example": null
                        },
                        "city": {
                          "type": "string",
                          "example": "La Plata"
                        },
                        "state": {
                          "type": "string",
                          "example": "Buenos Aires"
                        },
                        "district": {
                          "type": "string",
                          "example": null
                        },
                        "kyc_status": {
                          "description": "Status of the account's active or last finished KYC process. `OK` = approved, `INI` = initial, `UNR` = unreviewed, `DIS` = disapproved. Null if no KYC process exists.",
                          "type": "string",
                          "example": "OK"
                        },
                        "schemas": {
                          "description": "KYC validation schemas applied to the account, in application order.",
                          "items": {
                            "properties": {
                              "schema": {
                                "description": "Validation schema code.",
                                "type": "string",
                                "example": "FULL"
                              },
                              "status": {
                                "description": "Status of this schema. `OK` = approved, `INI` = initial, `UNR` = unreviewed, `DIS` = disapproved.",
                                "type": "string",
                                "example": "OK"
                              }
                            },
                            "required": [
                              "schema",
                              "status"
                            ],
                            "type": "object"
                          },
                          "type": "array",
                          "example": [
                            {
                              "schema": "FULL",
                              "status": "OK"
                            }
                          ]
                        },
                        "rp_tag": {
                          "description": "Unique Ripio handle (@tag).",
                          "type": "string",
                          "example": "juanperez"
                        },
                        "reference_currency": {
                          "description": "Currency used as reference for valuations (usually USD).",
                          "type": "string",
                          "example": "USD"
                        },
                        "deposit_currency": {
                          "description": "Default currency for deposits.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "features": {
                          "description": "Feature flags for this account. Structure varies by flag.",
                          "type": "object",
                          "example": {}
                        }
                      },
                      "required": [
                        "id",
                        "first_name",
                        "last_name",
                        "birthday",
                        "country",
                        "currency",
                        "postal_code",
                        "gender",
                        "validation_level",
                        "id_number",
                        "id_number_type",
                        "phone",
                        "username",
                        "phone_validated",
                        "status",
                        "address",
                        "address_number",
                        "address_flat",
                        "city",
                        "state",
                        "district",
                        "kyc_status",
                        "schemas",
                        "rp_tag",
                        "reference_currency",
                        "deposit_currency",
                        "features"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": {
                      "id": 12345,
                      "first_name": "Juan",
                      "last_name": "Perez",
                      "birthday": "1990-05-20",
                      "country": "AR",
                      "currency": "ARS",
                      "postal_code": "1900",
                      "gender": "M",
                      "validation_level": 3,
                      "id_number": "30123456",
                      "id_number_type": "DNI",
                      "phone": "+5491112345678",
                      "username": "user@example.com",
                      "phone_validated": true,
                      "status": "OK",
                      "address": "Av. Siempre Viva 742",
                      "address_number": "742",
                      "address_flat": null,
                      "city": "La Plata",
                      "state": "Buenos Aires",
                      "district": null,
                      "kyc_status": "OK",
                      "schemas": [
                        {
                          "schema": "FULL",
                          "status": "OK"
                        }
                      ],
                      "rp_tag": "juanperez",
                      "reference_currency": "USD",
                      "deposit_currency": "ARS",
                      "features": {}
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Error response 400"
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          }
        }
      }
    },
    "/wallet/banking/cvu/": {
      "get": {
        "summary": "banking - [DEPRECATED] Get own CVU deposit account (alias of GET /banking/deposit-accounts/)",
        "tags": [
          "Ripio Wallet",
          "Frontend Only"
        ],
        "description": "> ⚠️ **Frontend Only** — This endpoint can only be accessed from the web application frontend.\n\n**Deprecated:** use `GET /banking/deposit-accounts/` instead. This path is kept as a temporary alias for clients still integrated against the legacy CVU endpoint; it reads the same underlying CVU record but returns it in the older, non-discriminated shape (`cvu_id`/`cvu_label` only, no `type`/`account_number`/`deposit_constraint`).\n\n**Country restriction:** Only available for accounts with `country = AR`.\n\nReturns `404` if the authenticated user does not have a CVU provisioned.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "CVU account retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "description": "Legacy CVU shape (predates the `/banking/deposit-accounts/` discriminated union).",
                      "properties": {
                        "cvu_id": {
                          "type": "string",
                          "example": "0000003100088888888888"
                        },
                        "cvu_label": {
                          "description": "Alias for the CVU. `null` when the account has no valid alias assigned.",
                          "type": "string",
                          "example": "mi.cuenta.alias"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Forbidden. Account country is not AR or account is not fully operative.",
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "CVU not found for the account.",
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/wallet/health/": {
      "get": {
        "summary": "General endpoints - Health check.",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Simple check for authentication. No permissions required.\n\n---\n\n**Authorization**\n\n- No API key required — this endpoint is public.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Service is healthy.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "properties": {
                        "status": {
                          "type": "string",
                          "example": "ok"
                        }
                      },
                      "required": [
                        "status"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": {
                      "status": "ok"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/wallet/contacts/": {
      "get": {
        "summary": "contacts - List external contacts",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Returns the authenticated user's saved contacts, cursor-paginated. `crypto` and `bank` share the same underlying store and are merged into a single feed/cursor; when `contact_type` is omitted, both are returned together. `rp_tag` (internal Ripio P2P contacts) is **excluded by default**: it is only returned when `contact_type=rp_tag` is passed explicitly, and it paginates with its own independent cursor — there is no combined feed across all three types.\n\nRequires the `contacts_read` permission. The account must be fully operative.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "query",
            "name": "contact_type",
            "required": false,
            "description": "Filters the type of contact returned. If omitted, returns `crypto`+`bank` together — `rp_tag` is excluded by default and requires this filter set explicitly.",
            "schema": {
              "example": "crypto",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "currency",
            "required": false,
            "description": "Filter by currency ticker (e.g. `BTC`, `ETH`). Only applied when `contact_type=crypto`. Ignored when `contact_type=rp_tag`. Case-insensitive.",
            "schema": {
              "example": "BTC",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Contacts retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "properties": {
                        "results": {
                          "items": {
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "nc": {
                          "description": "Next cursor token. Pass as `?cursor=<nc>` to fetch the next page. `null` when there is no next page.",
                          "type": "string",
                          "example": "cD0yMDI2LTAyLTI0KzAw..."
                        },
                        "pc": {
                          "description": "Previous cursor token. Pass as `?cursor=<pc>` to fetch the previous page. `null` on the first page.",
                          "type": "string",
                          "example": null
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "Error response 400"
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "contacts - Create external contact (crypto, bank or rp_tag)",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Creates a new contact. The body field `type` discriminates the flow: `crypto` saves a blockchain address (`network` + `currency` codes), `bank` saves an AR/ARS banking account (`entity_number` — CBU/alias; **replaces the old `type=fiat`, which now responds `400`**), or `rp_tag` adds another Ripio account as a P2P contact by its `rp_tag` handle (auto-whitelisted on creation, same semantics as the now-deprecated legacy `rp_tag` endpoint).\n\n**Idempotent + auto-whitelist (crypto/bank):** If an equivalent crypto/bank contact already exists for this account it is returned without creating a duplicate — and if it was not yet whitelisted, it is whitelisted as part of this call.\n\n**Rate limit:** Subject to the `contacts_gateway_hour` hourly rate limit. Only write operations (POST and DELETE) count toward this limit; GET is not throttled.\n\nRequires the `contacts_write` permission. The account must be fully operative.\n\n**NOTE:** Contacts created via this endpoint are automatically whitelisted, meaning they will not require OTP for operations. For this reason it is **strongly** recommended to have a separate api key with the contacts_write permission.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              },
              "examples": {
                "crypto": {
                  "summary": "Save a crypto address",
                  "description": "Body shape when `type=crypto`. `memo` is optional and only valid for networks that support it (e.g. Stellar, XRP, TON).",
                  "value": {
                    "type": "crypto",
                    "entity_name": "My BTC wallet",
                    "network": "bitcoin",
                    "currency": "BTC",
                    "address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"
                  }
                },
                "bank": {
                  "summary": "Save an AR/ARS banking account (CVU/CBU/alias)",
                  "description": "Body shape when `type=bank` (replaces the old `type=fiat`). Only `entity_number` is taken from the client — the owner name, ID and bank metadata are fetched from the issuer bank.",
                  "value": {
                    "type": "bank",
                    "entity_number": "0000003100012345678901"
                  }
                },
                "rp_tag": {
                  "summary": "Add and whitelist an rp_tag contact",
                  "description": "Body shape when `type=rp_tag`. Adds a Ripio user (identified by their `rp_tag`) to the authenticated user's contact list, auto-whitelisted.",
                  "value": {
                    "type": "rp_tag",
                    "rp_tag": "juanperez"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Contact created (or returned if already existed, for crypto/bank).",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "429": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/wallet/banking/accounts/": {
      "get": {
        "summary": "banking - List own bank accounts",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Returns the list of the authenticated user's own registered bank accounts.\n\n**Country restriction:** Only available for accounts with `country = AR` or `country = BR`.\n\n- **AR** — returns Argentine bank accounts (CBU, CVU, alias). Each item has `type = \"bank\"`.\n- **BR** — returns Pix keys. Each item has `type = \"pix\"`.\n\nBoth types appear in the same `data` array; use the `type` field to distinguish them.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Own bank accounts retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "items": {
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          }
        }
      },
      "post": {
        "summary": "banking - Register an own bank account",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Registers a bank account owned by the authenticated user.\n\n**Country restriction:** Only available for accounts with `country = AR` or `country = BR`.\n\n- **AR** — accepts a CBU (22 digits), CVU (22 digits), or alias (alphanumeric with dots). Account ownership is validated against an external service before registration. Returns `201` if the account is newly registered, `200` if it was already registered.\n- **BR** — accepts a Pix key: e-mail, CPF (11 digits), CNPJ (14 digits), phone in E.164 format, or EVP (UUID). Ownership is validated before registration. Returns `201` if the key is new, `200` if it already exists.\n\n**Throttling:** Maximum 5 requests per minute and 20 requests per hour per user.\n\n**Domain error codes** (returned inside `data.detail[]`):\n- `BANK_0001` — the account does not belong to the authenticated user.\n- `BANK_0002` — conflict; the operation cannot be completed.\n- `BANK_0003` — the external validation service is temporarily unavailable.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "account_number": {
                    "description": "The account identifier to register:\n- AR: CBU (22 digits), CVU (22 digits), or alias (alphanumeric with dots).\n- BR: Pix key — e-mail, CPF (11 digits), CNPJ (14 digits), phone (E.164), or EVP (UUID).",
                    "type": "string",
                    "example": "mi.cuenta.alias"
                  }
                },
                "required": [
                  "account_number"
                ],
                "type": "object"
              },
              "examples": {
                "ar_alias": {
                  "summary": "AR — alias",
                  "value": {
                    "account_number": "mi.cuenta.alias"
                  }
                },
                "ar_cbu": {
                  "summary": "AR — CBU",
                  "value": {
                    "account_number": "0720010088000000000000"
                  }
                },
                "ar_cvu": {
                  "summary": "AR — CVU",
                  "value": {
                    "account_number": "0000003100088888888888"
                  }
                },
                "br_email": {
                  "summary": "BR — Pix email",
                  "value": {
                    "account_number": "usuario@email.com"
                  }
                },
                "br_cpf": {
                  "summary": "BR — Pix CPF",
                  "value": {
                    "account_number": "12345678901"
                  }
                },
                "br_evp": {
                  "summary": "BR — Pix EVP",
                  "value": {
                    "account_number": "550e8400-e29b-41d4-a716-446655440000"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Bank account already registered. Returns the existing account.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Bank account registered successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "Error response 400"
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          },
          "409": {
            "description": "Error response 409"
          },
          "429": {
            "description": "Error response 429"
          },
          "503": {
            "description": "Error response 503"
          }
        }
      }
    },
    "/wallet/contacts/{pk}/": {
      "delete": {
        "summary": "contacts - Delete external contact",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Deletes a contact entity (crypto or banking).\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "path",
            "name": "pk",
            "required": true,
            "description": "This property was not properly documented",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Contact deleted successfully. No body returned.",
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "429": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/wallet/contacts/rp_tag/": {
      "get": {
        "summary": "contacts - [DEPRECATED] List rp_tag contacts (legacy)",
        "tags": [
          "Ripio Wallet",
          "Frontend Only"
        ],
        "description": "> ⚠️ **Frontend Only** — This endpoint can only be accessed from the web application frontend.\n\n**Deprecated:** use `GET /contacts/?type=rp_tag` instead. This path is kept as a temporary alias for clients still integrated against the legacy rp_tag-only endpoint.\n\nReturns the authenticated user's rp_tag (internal Ripio P2P) contacts only, cursor-paginated. Does not include crypto or bank contacts.\n\nRequires the `contacts_read` permission. The account must be fully operative.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "query",
            "name": "contact_type",
            "required": false,
            "description": "Filters the type of contact returned. If omitted, returns `crypto`+`bank` together — `rp_tag` is excluded by default and requires this filter set explicitly.",
            "schema": {
              "example": "crypto",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "currency",
            "required": false,
            "description": "Filter by currency ticker (e.g. `BTC`, `ETH`). Only applied when `contact_type=crypto`. Ignored when `contact_type=rp_tag`. Case-insensitive.",
            "schema": {
              "example": "BTC",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Contacts retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "properties": {
                        "results": {
                          "items": {
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "nc": {
                          "description": "Next cursor token. Pass as `?cursor=<nc>` to fetch the next page. `null` when there is no next page.",
                          "type": "string",
                          "example": "cD0yMDI2LTAyLTI0KzAw..."
                        },
                        "pc": {
                          "description": "Previous cursor token. Pass as `?cursor=<pc>` to fetch the previous page. `null` on the first page.",
                          "type": "string",
                          "example": null
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "Error response 400"
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "contacts - [DEPRECATED] Create rp_tag contact (legacy alias of /contacts/)",
        "tags": [
          "Ripio Wallet",
          "Frontend Only"
        ],
        "description": "> ⚠️ **Frontend Only** — This endpoint can only be accessed from the web application frontend.\n\n**Deprecated:** use `POST /contacts/` with `\"type\": \"rp_tag\"` instead. This path is kept as a temporary alias for clients still integrated against the legacy rp_tag-only endpoint.\n\nAdds another Ripio account as a P2P contact by its `rp_tag` handle. The contact is auto-whitelisted on creation (same semantics as the unified endpoint's rp_tag flow), so it will not require OTP for operations.\n\n**Rate limit:** Subject to the `contacts_gateway_hour` hourly rate limit.\n\nRequires the `contacts_write` permission. The account must be fully operative.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "rp_tag": {
                    "description": "rp_tag handle of the Ripio account to add as a contact.",
                    "type": "string",
                    "example": "juan.perez"
                  }
                },
                "required": [
                  "rp_tag"
                ],
                "type": "object"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Contact created successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": "OK"
                    },
                    "data": {
                      "properties": {
                        "id": {
                          "type": "integer",
                          "example": 123
                        },
                        "account": {
                          "description": "Minimal data of the authenticated account.",
                          "type": "object"
                        },
                        "contact": {
                          "description": "Minimal data of the added rp_tag account.",
                          "type": "object"
                        },
                        "created_at": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Bad Request — rp_tag inválido o no encontrado.",
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          },
          "409": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Conflict — error al agregar el contacto.",
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/wallet/banking/accounts/{rail_type}/{id}/": {
      "get": {
        "summary": "banking - Get own bank account detail",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Returns the detail of a specific bank account owned by the authenticated user.\n\nUse the `rail_type` path parameter to indicate the account rail:\n- `bank` — Argentine bank account (CBU/CVU/alias). Only available for `country = AR`.\n- `pix` — Brazilian Pix key. Only available for `country = BR`.\n\nReturns `404` if the account does not exist, does not belong to the authenticated user, or `rail_type` is not recognized.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "path",
            "name": "rail_type",
            "required": true,
            "description": "Rail type of the account. Use `bank` for Argentine CBU/CVU/alias accounts, `pix` for Brazilian Pix keys.",
            "schema": {
              "example": "bank",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "description": "Unique identifier of the bank account.",
            "schema": {
              "example": 42,
              "type": "integer"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Bank account detail retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          },
          "404": {
            "description": "Error response 404"
          }
        }
      },
      "delete": {
        "summary": "banking - Remove an own bank account",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Removes a bank account owned by the authenticated user.\n\n- **AR (`bank` rail):** performs a soft delete. Returns `409` (`BANK_0002`) if the account has pending movements.\n- **BR (`pix` rail):** disables the Pix key (soft delete). Always succeeds if the key exists.\n\n**Domain error codes** (returned inside `data.detail[]` on error):\n- `BANK_0002` — the account has pending movements and cannot be removed.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "path",
            "name": "rail_type",
            "required": true,
            "description": "Rail type of the account to remove. Use `bank` for Argentine accounts, `pix` for Brazilian Pix keys.",
            "schema": {
              "example": "bank",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "description": "Unique identifier of the bank account.",
            "schema": {
              "example": 42,
              "type": "integer"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Bank account removed successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "properties": {
                        "id": {
                          "type": "integer"
                        },
                        "deleted": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          },
          "404": {
            "description": "Error response 404"
          },
          "409": {
            "description": "Error response 409"
          }
        }
      }
    },
    "/wallet/transactions/limits/": {
      "get": {
        "summary": "transactions - Get transaction limits",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Returns the transaction limits for the authenticated user, grouped by rail.\n\nEach entry represents a rail (`bank`, `pix`, `crypto`, `ripio`, or `null` for the account-wide global limit) with its allowed transaction types (`deposit`, `withdrawal`, `swap`) and the corresponding per-currency limits and remaining amounts for the current period. `swap` lives under `rail: \"ripio\"` (RN-003); `rail: null` is exclusively the account-wide global limit (RN-009). An unlimited period is returned as `null` (never the internal `-1`); `currency` is never `null` (fiat of the user, or USDT for swap).\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "query",
            "name": "rail",
            "required": false,
            "description": "Filter limits by rail. `ripio` includes `swap` (RN-003). The account-wide global limit has `rail=null` and is excluded when this filter is set. If omitted, limits for all rails are returned (including the `rail=null` global entry).",
            "schema": {
              "example": "bank",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "transaction_type",
            "required": false,
            "description": "Filter limits by transaction type. Unlike `rail`, this also matches the `rail=null` global limit when its underlying action corresponds to the requested type. If omitted, limits for all types are returned.",
            "schema": {
              "example": "deposit",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Transaction limits retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "items": {
                        "description": "Transaction limits grouped by rail. `swap` lives under `rail: \"ripio\"` (RN-003). `rail` is `null` exclusively for the account-wide global limit (RN-009).",
                        "properties": {
                          "rail": {
                            "description": "Canonical rail identifier. `swap` is under `ripio`. `null` means the account-wide global limit (RN-009).",
                            "type": "string",
                            "example": "bank"
                          },
                          "transaction_types": {
                            "items": {
                              "description": "Limit definition for a specific transaction type and currency within a rail.",
                              "properties": {
                                "transaction_type": {
                                  "description": "Public transaction type this limit applies to.",
                                  "type": "string",
                                  "example": "deposit"
                                },
                                "currency": {
                                  "description": "Currency code (ISO 4217 or crypto ticker). Never `null`: for non-swap limits it is backfilled with the user's fiat currency; for `swap` it is the display currency (USDT in AR/BR), since swap amounts are stored in USD (RN-NEW-2).",
                                  "type": "string",
                                  "example": "ARS"
                                },
                                "currency_balance_id": {
                                  "description": "Internal Ripio currency balance ID.",
                                  "type": "integer",
                                  "example": 2
                                },
                                "limits": {
                                  "description": "Absolute limit amounts for a given period. Any field is `null` when unlimited or absent (the internal sentinel `-1` is never surfaced).",
                                  "properties": {
                                    "min_amount": {
                                      "description": "Minimum transaction amount, or `null` if there is no minimum.",
                                      "type": "number",
                                      "example": 100
                                    },
                                    "max_amount": {
                                      "description": "Maximum single transaction amount, or `null` if unlimited.",
                                      "type": "number",
                                      "example": 500000
                                    },
                                    "daily_amount": {
                                      "description": "Maximum total amount per day, or `null` if unlimited.",
                                      "type": "number",
                                      "example": 500000
                                    },
                                    "daily_qty": {
                                      "description": "Maximum number of transactions per day, or `null` if unlimited.",
                                      "type": "number",
                                      "example": 5
                                    },
                                    "monthly_amount": {
                                      "description": "Maximum total amount per month, or `null` if unlimited.",
                                      "type": "number",
                                      "example": 2000000
                                    },
                                    "monthly_qty": {
                                      "description": "Maximum number of transactions per month, or `null` if unlimited.",
                                      "type": "number",
                                      "example": 30
                                    },
                                    "annual_amount": {
                                      "description": "Maximum total amount per year, or `null` if unlimited.",
                                      "type": "number",
                                      "example": 10000000
                                    },
                                    "annual_qty": {
                                      "description": "Maximum number of transactions per year, or `null` if unlimited.",
                                      "type": "number",
                                      "example": 365
                                    }
                                  },
                                  "type": "object"
                                },
                                "remaining": {
                                  "description": "Remaining allowance for the current period (daily, monthly, annual). A field is `null` when the corresponding period limit is unlimited. A negative value is legitimate (the user consumed more than the limit) and is NOT nulled — null tracks an unlimited limit, not a negative remaining.",
                                  "properties": {
                                    "daily_amount": {
                                      "description": "Remaining amount for today, or `null` if the daily limit is unlimited.",
                                      "type": "number",
                                      "example": 450000
                                    },
                                    "daily_qty": {
                                      "description": "Remaining transaction count for today, or `null` if the daily qty limit is unlimited.",
                                      "type": "number",
                                      "example": 4
                                    },
                                    "monthly_amount": {
                                      "description": "Remaining amount this month, or `null` if the monthly limit is unlimited.",
                                      "type": "number",
                                      "example": 1500000
                                    },
                                    "monthly_qty": {
                                      "description": "Remaining transaction count this month, or `null` if the monthly qty limit is unlimited.",
                                      "type": "number",
                                      "example": 28
                                    },
                                    "annual_amount": {
                                      "description": "Remaining amount this year, or `null` if the annual limit is unlimited.",
                                      "type": "number",
                                      "example": 9000000
                                    },
                                    "annual_qty": {
                                      "description": "Remaining transaction count this year, or `null` if the annual qty limit is unlimited.",
                                      "type": "number",
                                      "example": 362
                                    }
                                  },
                                  "type": "object"
                                }
                              },
                              "required": [
                                "transaction_type",
                                "currency",
                                "currency_balance_id",
                                "limits",
                                "remaining"
                              ],
                              "type": "object"
                            },
                            "type": "array"
                          }
                        },
                        "required": [
                          "rail",
                          "transaction_types"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": [
                      {
                        "rail": "bank",
                        "transaction_types": [
                          {
                            "transaction_type": "deposit",
                            "currency": "ARS",
                            "currency_balance_id": 2,
                            "limits": {
                              "min_amount": 100,
                              "max_amount": 500000,
                              "daily_amount": 500000,
                              "daily_qty": 5,
                              "monthly_amount": 2000000,
                              "monthly_qty": 30,
                              "annual_amount": 10000000,
                              "annual_qty": 365
                            },
                            "remaining": {
                              "daily_amount": 450000,
                              "daily_qty": 4,
                              "monthly_amount": 1500000,
                              "monthly_qty": 28,
                              "annual_amount": 9000000,
                              "annual_qty": 362
                            }
                          }
                        ]
                      },
                      {
                        "rail": "ripio",
                        "transaction_types": [
                          {
                            "transaction_type": "swap",
                            "currency": "USDT",
                            "currency_balance_id": 12,
                            "limits": {
                              "min_amount": 10,
                              "max_amount": 50000,
                              "daily_amount": 50000,
                              "daily_qty": 5,
                              "monthly_amount": 200000,
                              "monthly_qty": 30,
                              "annual_amount": 1000000,
                              "annual_qty": 365
                            },
                            "remaining": {
                              "daily_amount": 45000,
                              "daily_qty": 4,
                              "monthly_amount": 150000,
                              "monthly_qty": 28,
                              "annual_amount": 900000,
                              "annual_qty": 362
                            }
                          }
                        ]
                      },
                      {
                        "rail": null,
                        "transaction_types": [
                          {
                            "transaction_type": "withdrawal",
                            "currency": "ARS",
                            "currency_balance_id": 2,
                            "limits": {
                              "min_amount": 100,
                              "max_amount": 500000,
                              "daily_amount": 500000,
                              "daily_qty": 5,
                              "monthly_amount": 2000000,
                              "monthly_qty": 30,
                              "annual_amount": 10000000,
                              "annual_qty": 365
                            },
                            "remaining": {
                              "daily_amount": 450000,
                              "daily_qty": 4,
                              "monthly_amount": 1500000,
                              "monthly_qty": 28,
                              "annual_amount": 9000000,
                              "annual_qty": 362
                            }
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          }
        }
      }
    },
    "/wallet/transactions/crypto/withdrawal/": {
      "post": {
        "summary": "transactions - Send crypto to an external address",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Initiates a crypto WITHDRAWAL transaction to an external blockchain address for the authenticated user.\n\nThe `address_to` field must be a valid address for the given `currency` and `network`.\n\n**Whitelisted contacts only:** The destination address must be a previously whitelisted crypto contact of the user. Use `POST /contacts/` to create and whitelist a crypto contact before calling this endpoint.\n\n**How to obtain the required values:**\n- `gateway_data.network`: use the `GET /currency-networks/` endpoint. Use the `code` field of the desired network (e.g. `\"bitcoin\"`, `\"ethereum\"`, `\"polygon\"`).\n- `network_fee`: use the `GET /currency-networks/` endpoint. Use the `network_fee` field of the chosen network.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "amount": {
                    "description": "Amount to send as a decimal string.",
                    "type": "string",
                    "example": "123.32"
                  },
                  "currency": {
                    "description": "Crypto currency ticker to send.",
                    "type": "string",
                    "example": "USDT"
                  },
                  "address_to": {
                    "description": "Destination blockchain address.",
                    "type": "string",
                    "example": "0x1234567890123456789012345678901234567890"
                  },
                  "network_fee": {
                    "description": "Network fee as a decimal string. Must be ≥ 0. Obtain the recommended value from the `network_fee` field in `GET /currency-networks/`.",
                    "type": "string",
                    "example": "0.01"
                  },
                  "gateway_data": {
                    "description": "Gateway-specific data for the crypto send.",
                    "properties": {
                      "network": {
                        "description": "Blockchain network code. Must match the `code` field returned by `GET /currency-networks/` (e.g. `\"bitcoin\"`, `\"ethereum\"`, `\"polygon\"`). This is NOT the currency ticker.",
                        "type": "string",
                        "example": "plasma"
                      },
                      "memo_id": {
                        "description": "Optional memo/tag required by some networks (e.g. Ripple requires a numeric memo). Only needed when the network supports memos.",
                        "type": "string",
                        "example": "123456789"
                      }
                    },
                    "required": [
                      "network"
                    ],
                    "type": "object"
                  },
                  "source": {
                    "description": "Optional field to indicate funds come from wallet or ripio trade (default is wallet)",
                    "type": "string",
                    "example": "trade"
                  }
                },
                "required": [
                  "amount",
                  "currency",
                  "address_to",
                  "network_fee",
                  "gateway_data"
                ],
                "type": "object"
              },
              "examples": {
                "send_usdt_plasma": {
                  "summary": "Send USDT via Plasma network",
                  "value": {
                    "amount": "4.980176",
                    "currency": "USDT",
                    "address_to": "0x1234567890123456789012345678901234567890",
                    "network_fee": "0.01",
                    "gateway_data": {
                      "network": "plasma"
                    }
                  }
                },
                "send_btc": {
                  "summary": "Send BTC via Bitcoin network with Trade balance",
                  "value": {
                    "amount": "0.001",
                    "currency": "BTC",
                    "address_to": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
                    "network_fee": "0.00005",
                    "gateway_data": {
                      "network": "bitcoin"
                    },
                    "source": "trade"
                  }
                },
                "send_eth": {
                  "summary": "Send ETH via Ethereum network",
                  "value": {
                    "amount": "0.01",
                    "currency": "ETH",
                    "address_to": "0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe",
                    "network_fee": "0.0005",
                    "gateway_data": {
                      "network": "ethereum"
                    }
                  }
                },
                "send_usdt_polygon": {
                  "summary": "Send USDT via Polygon network",
                  "value": {
                    "amount": "10.00",
                    "currency": "USDT",
                    "address_to": "0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe",
                    "network_fee": "0.001",
                    "gateway_data": {
                      "network": "polygon"
                    }
                  }
                },
                "send_xrp_with_memo": {
                  "summary": "Send XRP via Ripple network (with memo)",
                  "value": {
                    "amount": "5.00",
                    "currency": "XRP",
                    "address_to": "rN7n3473SaZBCG4dFL75SaZBCG4dFL75",
                    "network_fee": "0.00001",
                    "gateway_data": {
                      "network": "ripple",
                      "memo_id": "123456789"
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Send transaction created successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "description": "Transaction object returned by the transactions list, detail and creation endpoints (`GET /transactions/`, `GET /transactions/{id}/`, and the 201 responses of every `/transactions/{rail}/{action}/` endpoint). All three surfaces share this exact shape.",
                      "properties": {
                        "id": {
                          "description": "Unique transaction identifier (source: `pk`). Same value returned by list, detail and creation endpoints.",
                          "type": "integer",
                          "example": 12345
                        },
                        "external_id": {
                          "description": "External provider reference for this transaction, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "transaction_type": {
                          "description": "Canonical public transaction type.",
                          "type": "string",
                          "example": "withdrawal"
                        },
                        "rail": {
                          "description": "Canonical rail. `null` for `swap`, which has no rail.",
                          "type": "string",
                          "example": "bank"
                        },
                        "status": {
                          "description": "Transaction status. `WTG`=waiting, `WTR`=waiting receipt, `PEN`=pending, `PMA`=pending manual approval, `PRO`=processing, `PAP`=partially paid, `COM`=completed, `CAN`=cancelled, `EXP`=expired, `ERR`=error, `REF`=refunded, `REJ`=rejected, `HOLD`=hold, `SUS`=suspended.",
                          "type": "string",
                          "example": "PEN"
                        },
                        "gateway_details": {
                          "description": "Extra gateway-specific detail. For `rail=crypto` this is the blockchain network. For `rail=ripio` transfers (`deposit`/`withdrawal`) this is the literal string `\"ripio_tag\"`. `null` for `swap` (a conversion, not a transfer) and for `bank`/`pix`.",
                          "type": "string",
                          "example": null
                        },
                        "transaction_hash": {
                          "description": "Blockchain transaction hash, when applicable (crypto transactions).",
                          "type": "string",
                          "example": null
                        },
                        "from_currency": {
                          "description": "Currency ticker being debited/converted from.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "to_currency": {
                          "description": "Currency ticker being credited/converted to. Equal to `from_currency` for transfers (deposit/withdrawal); different for `swap`.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fiat_currency": {
                          "description": "Fiat currency used to express `amount_fiat`, regardless of `from_currency`/`to_currency`.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee_currency": {
                          "description": "Currency in which the fee is charged. `null` when no fee applies.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee": {
                          "description": "Fee amount as a decimal string, in `fee_currency`. `null` when no fee applies.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "fee_fiat": {
                          "description": "Fee amount expressed in `fiat_currency`, as a decimal string. `null` when no fee applies.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "rate": {
                          "description": "Exchange rate applied between `from_currency` and `to_currency`, as a decimal string.",
                          "type": "string",
                          "example": "1"
                        },
                        "rate_usd": {
                          "description": "Exchange rate applied against USD, as a decimal string.",
                          "type": "string",
                          "example": "1050.00"
                        },
                        "amount_from": {
                          "description": "Amount debited in `from_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_to": {
                          "description": "Amount credited in `to_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_fiat": {
                          "description": "Amount expressed in `fiat_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_usd": {
                          "description": "Amount expressed in USD, as a decimal string.",
                          "type": "string",
                          "example": "4.76"
                        },
                        "origin": {
                          "description": "Origin address/account of the transaction, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "destination": {
                          "description": "Destination address/account of the transaction, when applicable (e.g. bank alias, blockchain address, `ripio_tag` handle).",
                          "type": "string",
                          "example": "some.bank.alias"
                        },
                        "tax": {
                          "description": "Tax amount as a decimal string, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "tax_currency": {
                          "description": "Tax currency, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "created_at": {
                          "description": "ISO 8601 timestamp when the transaction was created.",
                          "type": "string",
                          "example": "2026-04-13T12:00:00Z"
                        },
                        "updated_at": {
                          "description": "ISO 8601 timestamp of the last update.",
                          "type": "string",
                          "example": "2026-04-13T12:01:00Z"
                        },
                        "extra_data": {
                          "description": "Allowlisted, per-key additional detail. Only the keys `provider_reference`, `bank_account` and `bank_name` may appear here — internal identifiers such as `person_id`, `person_name`, `user_full_name`, `user_id` or `user_uuid` are NEVER exposed, even if the backend computes them internally. Empty object (`{}`) when no allowlisted key applies.",
                          "properties": {
                            "provider_reference": {
                              "description": "External payment provider's reference for this transaction.",
                              "type": "string"
                            },
                            "bank_account": {
                              "description": "Bank account identifier/alias involved in the transaction.",
                              "type": "string"
                            },
                            "bank_name": {
                              "description": "Name of the bank involved in the transaction.",
                              "type": "string"
                            }
                          },
                          "type": "object",
                          "example": {
                            "bank_account": "some.bank.alias"
                          }
                        }
                      },
                      "required": [
                        "id",
                        "external_id",
                        "transaction_type",
                        "rail",
                        "status",
                        "gateway_details",
                        "transaction_hash",
                        "from_currency",
                        "to_currency",
                        "fiat_currency",
                        "fee_currency",
                        "fee",
                        "fee_fiat",
                        "rate",
                        "rate_usd",
                        "amount_from",
                        "amount_to",
                        "amount_fiat",
                        "amount_usd",
                        "origin",
                        "destination",
                        "tax",
                        "tax_currency",
                        "created_at",
                        "updated_at",
                        "extra_data"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": {
                      "id": 12346,
                      "external_id": null,
                      "transaction_type": "withdrawal",
                      "rail": "crypto",
                      "status": "COM",
                      "gateway_details": "bitcoin",
                      "transaction_hash": "abc123txhash",
                      "from_currency": "BTC",
                      "to_currency": "BTC",
                      "fiat_currency": "ARS",
                      "fee_currency": "BTC",
                      "fee": "0.00005",
                      "fee_fiat": "5.25",
                      "rate": "1",
                      "rate_usd": "65000.00",
                      "amount_from": "0.001",
                      "amount_to": "0.001",
                      "amount_fiat": "65.00",
                      "amount_usd": "65.00",
                      "origin": null,
                      "destination": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
                      "tax": null,
                      "tax_currency": null,
                      "created_at": "2026-04-13T12:00:00Z",
                      "updated_at": "2026-04-13T12:01:00Z",
                      "extra_data": {}
                    },
                    "timestamp": 1777674497268
                  }
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Bad Request — validation error in the request body.",
                  "properties": {
                    "error_code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": "ADR_0400",
                    "message": "La dirección de destino no es válida. ADR_0400",
                    "data": null,
                    "timestamp": 1777674872826
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Forbidden — insufficient JWT permissions or account not fully operative.",
                  "properties": {
                    "error_code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": "ERR_0009",
                    "message": "Forbidden",
                    "data": null
                  }
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Conflict — insufficient balance.",
                  "properties": {
                    "error_code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": "BAL_0400",
                    "message": "No tenés suficiente saldo disponible para realizar esta operación. BAL_0400",
                    "data": null,
                    "timestamp": 1777674791342
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error response 429"
          },
          "503": {
            "description": "Error response 503"
          }
        }
      }
    },
    "/wallet/transactions/crypto/deposit/reprocess-hash/": {
      "post": {
        "summary": "transactions - Reprocess a crypto receive transaction by hash",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Triggers a reprocess of a crypto receive transaction identified by its blockchain hash.\n\nUseful when a deposit was not automatically detected or processed. The service will re-query the blockchain for the given hash and network combination.\n\nThe account must be fully operative for crypto operations.\n\n**Rate limit:** 1 request per hash per reprocess window (cache-lock throttle). Additionally subject to the hourly rate limit scope `txn_reprocess_hash_hour`.\n\n**How to obtain the required values:**\n- `network`: use the `GET /network/currency-networks/{currency}/` endpoint. Use the `code` field of the desired network (e.g. `\"bitcoin\"`, `\"ethereum\"`).\n- `currency`: ISO 4217 crypto currency code (e.g. `\"BTC\"`, `\"ETH\"`, `\"USDT\"`).\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "txn_hash": {
                    "description": "Blockchain transaction hash to reprocess.",
                    "type": "string",
                    "example": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890ab"
                  },
                  "currency": {
                    "description": "ISO 4217 crypto currency code.",
                    "type": "string",
                    "example": "BTC"
                  },
                  "network": {
                    "description": "Network code for the transaction (e.g. bitcoin, ethereum, polygon).",
                    "type": "string",
                    "example": "bitcoin"
                  }
                },
                "required": [
                  "txn_hash",
                  "currency",
                  "network"
                ],
                "type": "object"
              },
              "examples": {
                "reprocess_btc": {
                  "summary": "Reprocess BTC transaction on Bitcoin network",
                  "value": {
                    "txn_hash": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890ab",
                    "currency": "BTC",
                    "network": "bitcoin"
                  }
                },
                "reprocess_usdt_eth": {
                  "summary": "Reprocess USDT transaction on Ethereum network",
                  "value": {
                    "txn_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef12",
                    "currency": "USDT",
                    "network": "ethereum"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Reprocess started successfully. No response body is returned.",
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          },
          "409": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "data": null,
                    "error_code": "NET_0400",
                    "message": "La red proporcionada no es válida. NET_0400"
                  }
                }
              }
            }
          },
          "429": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "503": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "data": [
                      {
                        "code": "TXN_0500",
                        "detail": "Ocurrio un error al reprocesar la transaccion. TXN_0500"
                      }
                    ],
                    "error_code": "ERR_0006",
                    "message": "Service unavailable"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/wallet/banking/deposit-accounts/": {
      "get": {
        "summary": "banking - List Ripio deposit accounts",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Returns the list of Ripio deposit accounts (fiat funding rails) the authenticated user can use to fund their account. Each list item is a discriminated union member sharing a common core (`type`, `account_number`, `account_label`, `currency`, `deposit_constraint`) plus rail-specific fields.\n\nDiscriminated by `type`, depending on the account's country:\n- `country = AR` → `type: \"cvu\"`. Deposit by CVU (Clave Virtual Uniforme). `deposit_constraint` is `null` (any valid CVU may deposit).\n- `country = BR` → `type: \"pix\"`. Deposit by Pix, with `deposit_constraint.same_holder` indicating the required holder (CPF) for the originating account.\n\n`deposit_constraint` is always present: `null` means no restriction; an object communicates a rule.\n\nOnly available for accounts with country `AR` or `BR`. Returns `403` for other countries.\n\nReturns `404` if the authenticated user does not have a Ripio deposit account provisioned. In that case, contact support.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Deposit accounts retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "items": {
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          },
          "404": {
            "description": "Error response 404"
          }
        }
      }
    },
    "/wallet/contacts/{type}/{pk}/": {
      "delete": {
        "summary": "contacts - Delete external contact",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Deletes/unlinks a contact, identified by the composite key `(type, id)` (same pattern as `banking/accounts/{rail_type}/{id}/`): the auto-incrementing IDs of the crypto/bank store and of the rp_tag store collide with each other, so `type` is required to disambiguate and is authoritative for resolving the entity. `type=crypto`/`type=bank` unlinks (soft delete) the contact from the account; `type=rp_tag` deletes the P2P contact. Returns `404` if the `id` does not exist within the store selected by `type`, including when the `id` exists but belongs to a different type (no existence leak across types).\n\nRequires the `contacts_write` permission. The account must be fully operative.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "path",
            "name": "type",
            "required": true,
            "description": "Contact type discriminator. Required to disambiguate colliding IDs across the crypto/bank and rp_tag stores.",
            "schema": {
              "example": "crypto",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "pk",
            "required": true,
            "description": "ID of the contact/entity to delete, within the store selected by `type`.",
            "schema": {
              "example": 42,
              "type": "integer"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Contact deleted/unlinked successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "properties": {
                        "id": {
                          "type": "integer"
                        },
                        "deleted": {
                          "type": "boolean"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "Error response 400"
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "429": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/wallet/transactions/bank/withdrawal/": {
      "post": {
        "summary": "transactions - Create a CVU bank withdrawal",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Initiates an ARS withdrawal to a registered CVU/CBU bank account for the authenticated user.\n\nThe `gateway_data.bank_account` field must be a valid CBU, CVU or alias.\n\n**Whitelisted contacts only:** The destination bank account must be a previously whitelisted contact of the user. Use `POST /contacts/` to create and whitelist a banking contact before calling this endpoint.\n\n**Own account exception:** If the destination CVU/CBU belongs to the authenticated user (i.e., it is registered as one of their own bank accounts), whitelisting is not required.\n\n**Country restriction:** Only available for accounts with `country = AR`.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "amount": {
                    "description": "Withdrawal amount as a decimal string. Must be ≥ 0.01, with up to 2 decimal places.",
                    "type": "string",
                    "example": "5000.00"
                  },
                  "currency": {
                    "description": "Currency to withdraw. Only `ARS` is accepted.",
                    "type": "string",
                    "example": "ARS"
                  },
                  "gateway_data": {
                    "description": "Gateway-specific data for the withdrawal.",
                    "properties": {
                      "bank_account": {
                        "description": "Is the CVU/CBU account number or an account alias to withdraw to.",
                        "type": "integer",
                        "example": "alias.destino"
                      }
                    },
                    "required": [
                      "bank_account"
                    ],
                    "type": "object"
                  },
                  "promise": {
                    "description": "Signed JWT from the swap service. When provided, a crypto-to-ARS swap is executed before the withdrawal. Omit for a direct ARS withdrawal.",
                    "type": "string"
                  },
                  "source": {
                    "description": "Optional field to indicate funds come from wallet or ripio trade (default is wallet)",
                    "type": "string",
                    "example": "trade"
                  }
                },
                "required": [
                  "amount",
                  "currency",
                  "gateway_data"
                ],
                "type": "object"
              },
              "examples": {
                "direct_withdrawal": {
                  "summary": "Direct ARS withdrawal",
                  "value": {
                    "amount": "5000.00",
                    "currency": "ARS",
                    "gateway_data": {
                      "bank_account": "some.bank.alias"
                    }
                  }
                },
                "withdrawal_with_source_trade": {
                  "summary": "Withdrawal with source of funds Ripio Trade",
                  "value": {
                    "amount": "5000.00",
                    "currency": "ARS",
                    "gateway_data": {
                      "bank_account": "some.bank.alias"
                    },
                    "source": "trade"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Withdrawal transaction created successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "description": "Transaction object returned by the transactions list, detail and creation endpoints (`GET /transactions/`, `GET /transactions/{id}/`, and the 201 responses of every `/transactions/{rail}/{action}/` endpoint). All three surfaces share this exact shape.",
                      "properties": {
                        "id": {
                          "description": "Unique transaction identifier (source: `pk`). Same value returned by list, detail and creation endpoints.",
                          "type": "integer",
                          "example": 12345
                        },
                        "external_id": {
                          "description": "External provider reference for this transaction, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "transaction_type": {
                          "description": "Canonical public transaction type.",
                          "type": "string",
                          "example": "withdrawal"
                        },
                        "rail": {
                          "description": "Canonical rail. `null` for `swap`, which has no rail.",
                          "type": "string",
                          "example": "bank"
                        },
                        "status": {
                          "description": "Transaction status. `WTG`=waiting, `WTR`=waiting receipt, `PEN`=pending, `PMA`=pending manual approval, `PRO`=processing, `PAP`=partially paid, `COM`=completed, `CAN`=cancelled, `EXP`=expired, `ERR`=error, `REF`=refunded, `REJ`=rejected, `HOLD`=hold, `SUS`=suspended.",
                          "type": "string",
                          "example": "PEN"
                        },
                        "gateway_details": {
                          "description": "Extra gateway-specific detail. For `rail=crypto` this is the blockchain network. For `rail=ripio` transfers (`deposit`/`withdrawal`) this is the literal string `\"ripio_tag\"`. `null` for `swap` (a conversion, not a transfer) and for `bank`/`pix`.",
                          "type": "string",
                          "example": null
                        },
                        "transaction_hash": {
                          "description": "Blockchain transaction hash, when applicable (crypto transactions).",
                          "type": "string",
                          "example": null
                        },
                        "from_currency": {
                          "description": "Currency ticker being debited/converted from.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "to_currency": {
                          "description": "Currency ticker being credited/converted to. Equal to `from_currency` for transfers (deposit/withdrawal); different for `swap`.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fiat_currency": {
                          "description": "Fiat currency used to express `amount_fiat`, regardless of `from_currency`/`to_currency`.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee_currency": {
                          "description": "Currency in which the fee is charged. `null` when no fee applies.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee": {
                          "description": "Fee amount as a decimal string, in `fee_currency`. `null` when no fee applies.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "fee_fiat": {
                          "description": "Fee amount expressed in `fiat_currency`, as a decimal string. `null` when no fee applies.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "rate": {
                          "description": "Exchange rate applied between `from_currency` and `to_currency`, as a decimal string.",
                          "type": "string",
                          "example": "1"
                        },
                        "rate_usd": {
                          "description": "Exchange rate applied against USD, as a decimal string.",
                          "type": "string",
                          "example": "1050.00"
                        },
                        "amount_from": {
                          "description": "Amount debited in `from_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_to": {
                          "description": "Amount credited in `to_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_fiat": {
                          "description": "Amount expressed in `fiat_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_usd": {
                          "description": "Amount expressed in USD, as a decimal string.",
                          "type": "string",
                          "example": "4.76"
                        },
                        "origin": {
                          "description": "Origin address/account of the transaction, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "destination": {
                          "description": "Destination address/account of the transaction, when applicable (e.g. bank alias, blockchain address, `ripio_tag` handle).",
                          "type": "string",
                          "example": "some.bank.alias"
                        },
                        "tax": {
                          "description": "Tax amount as a decimal string, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "tax_currency": {
                          "description": "Tax currency, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "created_at": {
                          "description": "ISO 8601 timestamp when the transaction was created.",
                          "type": "string",
                          "example": "2026-04-13T12:00:00Z"
                        },
                        "updated_at": {
                          "description": "ISO 8601 timestamp of the last update.",
                          "type": "string",
                          "example": "2026-04-13T12:01:00Z"
                        },
                        "extra_data": {
                          "description": "Allowlisted, per-key additional detail. Only the keys `provider_reference`, `bank_account` and `bank_name` may appear here — internal identifiers such as `person_id`, `person_name`, `user_full_name`, `user_id` or `user_uuid` are NEVER exposed, even if the backend computes them internally. Empty object (`{}`) when no allowlisted key applies.",
                          "properties": {
                            "provider_reference": {
                              "description": "External payment provider's reference for this transaction.",
                              "type": "string"
                            },
                            "bank_account": {
                              "description": "Bank account identifier/alias involved in the transaction.",
                              "type": "string"
                            },
                            "bank_name": {
                              "description": "Name of the bank involved in the transaction.",
                              "type": "string"
                            }
                          },
                          "type": "object",
                          "example": {
                            "bank_account": "some.bank.alias"
                          }
                        }
                      },
                      "required": [
                        "id",
                        "external_id",
                        "transaction_type",
                        "rail",
                        "status",
                        "gateway_details",
                        "transaction_hash",
                        "from_currency",
                        "to_currency",
                        "fiat_currency",
                        "fee_currency",
                        "fee",
                        "fee_fiat",
                        "rate",
                        "rate_usd",
                        "amount_from",
                        "amount_to",
                        "amount_fiat",
                        "amount_usd",
                        "origin",
                        "destination",
                        "tax",
                        "tax_currency",
                        "created_at",
                        "updated_at",
                        "extra_data"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": {
                      "id": 12345,
                      "external_id": null,
                      "transaction_type": "withdrawal",
                      "rail": "bank",
                      "status": "PEN",
                      "gateway_details": null,
                      "transaction_hash": null,
                      "from_currency": "ARS",
                      "to_currency": "ARS",
                      "fiat_currency": "ARS",
                      "fee_currency": "ARS",
                      "fee": "0.00",
                      "fee_fiat": "0.00",
                      "rate": "1",
                      "rate_usd": "1050.00",
                      "amount_from": "5000.00",
                      "amount_to": "5000.00",
                      "amount_fiat": "5000.00",
                      "amount_usd": "4.76",
                      "origin": null,
                      "destination": "some.bank.alias",
                      "tax": null,
                      "tax_currency": null,
                      "created_at": "2026-04-13T12:00:00Z",
                      "updated_at": "2026-04-13T12:00:00Z",
                      "extra_data": {
                        "bank_account": "some.bank.alias"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Bad Request — validation error in the request body.",
                  "properties": {
                    "error_code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": "TXN_0450",
                    "message": "Missing bank account. TXN_0450",
                    "data": null,
                    "timestamp": 1777674872826
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Forbidden — insufficient JWT permissions or account not fully operative (e.g. suspended, unverified).",
                  "properties": {
                    "error_code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": "ERR_0009",
                    "message": "Forbidden",
                    "data": null
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error response 429"
          },
          "503": {
            "description": "Error response 503"
          }
        }
      }
    },
    "/wallet/transactions/ripio/withdrawal/": {
      "post": {
        "summary": "transactions - Send balance to another user via ripio_tag",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Performs an internal balance-to-balance transfer (P2P) to another user identified by their `ripio_tag`.\n\nThe transfer is instantaneous when both accounts are valid, fully operative and in the same country. No external blockchain transaction is created.\n\n**Whitelisted contacts only:** The destination `ripio_tag` must be a previously whitelisted contact of the user. Use `POST /contacts/` with `type=rp_tag` to add and whitelist an rp_tag contact before calling this endpoint.\n\n**How to obtain the required values:**\n- `gateway_data.to_rp_tag`: the destination user's public handle. The destination account must be fully operative and from the same country as the origin account.\n- `currency`: any enabled currency (crypto or fiat) supported for SEND via the balance gateway.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "amount": {
                    "description": "Amount to transfer as a decimal string. Up to 8 decimal places.",
                    "type": "string",
                    "example": "1.0014"
                  },
                  "currency": {
                    "description": "Currency ticker to transfer (e.g. `\"ARS\"`, `\"USDT\"`, `\"BTC\"`).",
                    "type": "string",
                    "example": "USDT"
                  },
                  "gateway_data": {
                    "description": "Internal transfer data.",
                    "properties": {
                      "to_rp_tag": {
                        "description": "Destination user's ripio_tag handle (without `@`).",
                        "type": "string",
                        "example": "barrilete"
                      },
                      "reason": {
                        "description": "Optional free-text reason shown to the recipient. Max 100 chars.",
                        "type": "string",
                        "example": "Pago del almuerzo"
                      }
                    },
                    "required": [
                      "to_rp_tag"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "amount",
                  "currency",
                  "gateway_data"
                ],
                "type": "object"
              },
              "examples": {
                "default": {
                  "value": {
                    "amount": "1.0014",
                    "currency": "USDT",
                    "gateway_data": {
                      "to_rp_tag": "barrilete",
                      "reason": "Pago del almuerzo"
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Internal transfer completed successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "description": "Transaction object returned by the transactions list, detail and creation endpoints (`GET /transactions/`, `GET /transactions/{id}/`, and the 201 responses of every `/transactions/{rail}/{action}/` endpoint). All three surfaces share this exact shape.",
                      "properties": {
                        "id": {
                          "description": "Unique transaction identifier (source: `pk`). Same value returned by list, detail and creation endpoints.",
                          "type": "integer",
                          "example": 12345
                        },
                        "external_id": {
                          "description": "External provider reference for this transaction, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "transaction_type": {
                          "description": "Canonical public transaction type.",
                          "type": "string",
                          "example": "withdrawal"
                        },
                        "rail": {
                          "description": "Canonical rail. `null` for `swap`, which has no rail.",
                          "type": "string",
                          "example": "bank"
                        },
                        "status": {
                          "description": "Transaction status. `WTG`=waiting, `WTR`=waiting receipt, `PEN`=pending, `PMA`=pending manual approval, `PRO`=processing, `PAP`=partially paid, `COM`=completed, `CAN`=cancelled, `EXP`=expired, `ERR`=error, `REF`=refunded, `REJ`=rejected, `HOLD`=hold, `SUS`=suspended.",
                          "type": "string",
                          "example": "PEN"
                        },
                        "gateway_details": {
                          "description": "Extra gateway-specific detail. For `rail=crypto` this is the blockchain network. For `rail=ripio` transfers (`deposit`/`withdrawal`) this is the literal string `\"ripio_tag\"`. `null` for `swap` (a conversion, not a transfer) and for `bank`/`pix`.",
                          "type": "string",
                          "example": null
                        },
                        "transaction_hash": {
                          "description": "Blockchain transaction hash, when applicable (crypto transactions).",
                          "type": "string",
                          "example": null
                        },
                        "from_currency": {
                          "description": "Currency ticker being debited/converted from.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "to_currency": {
                          "description": "Currency ticker being credited/converted to. Equal to `from_currency` for transfers (deposit/withdrawal); different for `swap`.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fiat_currency": {
                          "description": "Fiat currency used to express `amount_fiat`, regardless of `from_currency`/`to_currency`.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee_currency": {
                          "description": "Currency in which the fee is charged. `null` when no fee applies.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee": {
                          "description": "Fee amount as a decimal string, in `fee_currency`. `null` when no fee applies.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "fee_fiat": {
                          "description": "Fee amount expressed in `fiat_currency`, as a decimal string. `null` when no fee applies.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "rate": {
                          "description": "Exchange rate applied between `from_currency` and `to_currency`, as a decimal string.",
                          "type": "string",
                          "example": "1"
                        },
                        "rate_usd": {
                          "description": "Exchange rate applied against USD, as a decimal string.",
                          "type": "string",
                          "example": "1050.00"
                        },
                        "amount_from": {
                          "description": "Amount debited in `from_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_to": {
                          "description": "Amount credited in `to_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_fiat": {
                          "description": "Amount expressed in `fiat_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_usd": {
                          "description": "Amount expressed in USD, as a decimal string.",
                          "type": "string",
                          "example": "4.76"
                        },
                        "origin": {
                          "description": "Origin address/account of the transaction, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "destination": {
                          "description": "Destination address/account of the transaction, when applicable (e.g. bank alias, blockchain address, `ripio_tag` handle).",
                          "type": "string",
                          "example": "some.bank.alias"
                        },
                        "tax": {
                          "description": "Tax amount as a decimal string, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "tax_currency": {
                          "description": "Tax currency, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "created_at": {
                          "description": "ISO 8601 timestamp when the transaction was created.",
                          "type": "string",
                          "example": "2026-04-13T12:00:00Z"
                        },
                        "updated_at": {
                          "description": "ISO 8601 timestamp of the last update.",
                          "type": "string",
                          "example": "2026-04-13T12:01:00Z"
                        },
                        "extra_data": {
                          "description": "Allowlisted, per-key additional detail. Only the keys `provider_reference`, `bank_account` and `bank_name` may appear here — internal identifiers such as `person_id`, `person_name`, `user_full_name`, `user_id` or `user_uuid` are NEVER exposed, even if the backend computes them internally. Empty object (`{}`) when no allowlisted key applies.",
                          "properties": {
                            "provider_reference": {
                              "description": "External payment provider's reference for this transaction.",
                              "type": "string"
                            },
                            "bank_account": {
                              "description": "Bank account identifier/alias involved in the transaction.",
                              "type": "string"
                            },
                            "bank_name": {
                              "description": "Name of the bank involved in the transaction.",
                              "type": "string"
                            }
                          },
                          "type": "object",
                          "example": {
                            "bank_account": "some.bank.alias"
                          }
                        }
                      },
                      "required": [
                        "id",
                        "external_id",
                        "transaction_type",
                        "rail",
                        "status",
                        "gateway_details",
                        "transaction_hash",
                        "from_currency",
                        "to_currency",
                        "fiat_currency",
                        "fee_currency",
                        "fee",
                        "fee_fiat",
                        "rate",
                        "rate_usd",
                        "amount_from",
                        "amount_to",
                        "amount_fiat",
                        "amount_usd",
                        "origin",
                        "destination",
                        "tax",
                        "tax_currency",
                        "created_at",
                        "updated_at",
                        "extra_data"
                      ],
                      "type": "object"
                    }
                  },
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": {
                      "id": 12347,
                      "external_id": null,
                      "transaction_type": "withdrawal",
                      "rail": "ripio",
                      "status": "COM",
                      "gateway_details": "ripio_tag",
                      "transaction_hash": null,
                      "from_currency": "USDT",
                      "to_currency": "USDT",
                      "fiat_currency": "ARS",
                      "fee_currency": null,
                      "fee": null,
                      "fee_fiat": null,
                      "rate": "1",
                      "rate_usd": "1.00",
                      "amount_from": "100.00",
                      "amount_to": "100.00",
                      "amount_fiat": "105000.00",
                      "amount_usd": "100.00",
                      "origin": null,
                      "destination": "barrilete",
                      "tax": null,
                      "tax_currency": null,
                      "created_at": "2026-04-13T12:00:00Z",
                      "updated_at": "2026-04-13T12:01:00Z",
                      "extra_data": {}
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Bad Request — validation error.",
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Forbidden — missing `internal_balance_transfer_write` permission, account not fully operative, or country not in [AR, BR].",
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Conflict — business rule violation (invalid destination, insufficient balance, limits, etc).",
                  "type": "string"
                }
              }
            }
          },
          "503": {
            "description": "Error response 503"
          }
        }
      }
    },
    "/wallet/transactions/quotes/": {
      "post": {
        "summary": "transactions - Create a swap promise (quote)",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Creates a swap promise for a currency pair. A promise is a short-lived signed quote (JWT) returned in the `uuid` field that must be sent back to `POST /transactions/swap/` to execute the swap before it expires.\n\nThe swap can be fiat-to-crypto, crypto-to-fiat or crypto-to-crypto. The `amount` can be expressed either in `from_currency` or in `to_currency`, indicated by `amount_currency`.\n\nThe pair must be enabled for swap for the account (currency availability and per-account rollout apply); otherwise a 409 is returned.\n\n**How to obtain the required values:**\n- `from_currency` / `to_currency`: enabled swap currencies for the account's country.\n- `amount_currency`: must equal `from_currency` or `to_currency`.\n- `gateway`: use `\"balance\"` for the balance swap.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "from_currency": {
                    "description": "Currency ticker to swap from.",
                    "type": "string",
                    "example": "ARS"
                  },
                  "to_currency": {
                    "description": "Currency ticker to swap to.",
                    "type": "string",
                    "example": "BTC"
                  },
                  "amount_currency": {
                    "description": "Currency in which `amount` is expressed. Must equal `from_currency` or `to_currency`.",
                    "type": "string",
                    "example": "ARS"
                  },
                  "amount": {
                    "description": "Amount to swap as a decimal string, expressed in `amount_currency`.",
                    "type": "string",
                    "example": "10000"
                  },
                  "gateway": {
                    "description": "Gateway identifier for the swap.",
                    "type": "string",
                    "example": "balance"
                  }
                },
                "required": [
                  "from_currency",
                  "to_currency",
                  "amount_currency",
                  "amount",
                  "gateway"
                ],
                "type": "object"
              },
              "examples": {
                "default": {
                  "value": {
                    "from_currency": "ARS",
                    "to_currency": "BTC",
                    "amount_currency": "ARS",
                    "amount": "10000",
                    "gateway": "balance"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Swap promise created successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "description": "Swap promise (quote) returned by the promises endpoint. The `uuid` is a signed token (JWT) that must be sent to POST /transactions/swap/ to execute the swap before it expires.",
                      "properties": {
                        "uuid": {
                          "description": "Signed promise token (JWT). Pass it as `promise` to execute the swap.",
                          "type": "string",
                          "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
                        },
                        "from_currency": {
                          "description": "Currency ticker to swap from.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "from_currency_id": {
                          "description": "Internal id of the from currency.",
                          "type": "integer",
                          "example": 1
                        },
                        "to_currency": {
                          "description": "Currency ticker to swap to.",
                          "type": "string",
                          "example": "BTC"
                        },
                        "to_currency_id": {
                          "description": "Internal id of the to currency.",
                          "type": "integer",
                          "example": 2
                        },
                        "rate": {
                          "description": "Exchange rate (with spread applied) for the pair.",
                          "type": "string",
                          "example": "0.000000005742"
                        },
                        "inverted_rate": {
                          "description": "Inverted exchange rate.",
                          "type": "string",
                          "example": "174155346.57"
                        },
                        "rate_usd": {
                          "description": "USD reference rate for the from currency.",
                          "type": "string",
                          "example": "0.0255102"
                        },
                        "amount_from": {
                          "description": "Amount debited from the from currency.",
                          "type": "string",
                          "example": "10000.00"
                        },
                        "amount_to": {
                          "description": "Amount credited in the to currency.",
                          "type": "string",
                          "example": "0.00005741"
                        },
                        "amount_usd": {
                          "description": "USD value of the operation.",
                          "type": "string",
                          "example": "255.10"
                        },
                        "currency_pair": {
                          "description": "Pair ticker (`from_to`).",
                          "type": "string",
                          "example": "ARS_BTC"
                        },
                        "alt_currency_pair": {
                          "description": "Alternative currency pair, if applicable.",
                          "type": "string",
                          "example": null
                        },
                        "fee": {
                          "description": "Fee amount, or null when there is no fee.",
                          "type": "string",
                          "example": null
                        },
                        "fee_currency": {
                          "description": "Fee currency, or null when there is no fee.",
                          "type": "string",
                          "example": null
                        },
                        "alt_fee": {
                          "description": "Alternative fee, if applicable.",
                          "type": "string",
                          "example": null
                        },
                        "action": {
                          "description": "Promise action.",
                          "type": "string",
                          "example": "SWAP"
                        },
                        "created_at": {
                          "description": "ISO 8601 creation timestamp.",
                          "type": "string",
                          "example": "2026-04-13T12:00:00.000000Z"
                        },
                        "expires_at": {
                          "description": "ISO 8601 expiration timestamp.",
                          "type": "string",
                          "example": "2026-04-13T12:02:00.000000Z"
                        },
                        "expires_in": {
                          "description": "Seconds until the promise expires.",
                          "type": "integer",
                          "example": 120
                        }
                      },
                      "required": [
                        "uuid",
                        "from_currency",
                        "to_currency",
                        "rate",
                        "amount_from",
                        "amount_to",
                        "currency_pair",
                        "expires_at",
                        "expires_in"
                      ],
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Bad Request — validation error (invalid currency, amount, or amount_currency not equal to from/to).",
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Forbidden — missing `trading_write` permission or account not fully operative for crypto.",
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Conflict — pair not available for swap, gateway disabled, or quote could not be created.",
                  "type": "string"
                }
              }
            }
          },
          "429": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Too Many Requests — swap promise creation throttled.",
                  "type": "string"
                }
              }
            }
          },
          "503": {
            "description": "Error response 503"
          }
        }
      }
    },
    "/wallet/transactions/swap/": {
      "post": {
        "summary": "transactions - Execute a balance swap from a promise",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Executes a swap using a previously created promise (the `uuid` token returned by `POST /transactions/quotes/`).\n\nThe swap moves the user's balance: the `from_currency` is debited and, once the underlying trade completes, the `to_currency` is credited. The transaction is created in `PRO` (processing) status and completes asynchronously.\n\nThe promise must be valid (not expired, not already used) and the account must have enough `from_currency` balance.\n\n**How to obtain the required values:**\n- `promise`: the `uuid` field returned by create_swap_promise.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "promise": {
                    "description": "The swap promise token (`uuid`) returned by POST /transactions/quotes/.",
                    "type": "string",
                    "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
                  }
                },
                "required": [
                  "promise"
                ],
                "type": "object"
              },
              "examples": {
                "default": {
                  "value": {
                    "promise": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Swap transaction created successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "description": "Transaction object returned by the transactions list, detail and creation endpoints (`GET /transactions/`, `GET /transactions/{id}/`, and the 201 responses of every `/transactions/{rail}/{action}/` endpoint). All three surfaces share this exact shape.",
                      "properties": {
                        "id": {
                          "description": "Unique transaction identifier (source: `pk`). Same value returned by list, detail and creation endpoints.",
                          "type": "integer",
                          "example": 12345
                        },
                        "external_id": {
                          "description": "External provider reference for this transaction, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "transaction_type": {
                          "description": "Canonical public transaction type.",
                          "type": "string",
                          "example": "withdrawal"
                        },
                        "rail": {
                          "description": "Canonical rail. `null` for `swap`, which has no rail.",
                          "type": "string",
                          "example": "bank"
                        },
                        "status": {
                          "description": "Transaction status. `WTG`=waiting, `WTR`=waiting receipt, `PEN`=pending, `PMA`=pending manual approval, `PRO`=processing, `PAP`=partially paid, `COM`=completed, `CAN`=cancelled, `EXP`=expired, `ERR`=error, `REF`=refunded, `REJ`=rejected, `HOLD`=hold, `SUS`=suspended.",
                          "type": "string",
                          "example": "PEN"
                        },
                        "gateway_details": {
                          "description": "Extra gateway-specific detail. For `rail=crypto` this is the blockchain network. For `rail=ripio` transfers (`deposit`/`withdrawal`) this is the literal string `\"ripio_tag\"`. `null` for `swap` (a conversion, not a transfer) and for `bank`/`pix`.",
                          "type": "string",
                          "example": null
                        },
                        "transaction_hash": {
                          "description": "Blockchain transaction hash, when applicable (crypto transactions).",
                          "type": "string",
                          "example": null
                        },
                        "from_currency": {
                          "description": "Currency ticker being debited/converted from.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "to_currency": {
                          "description": "Currency ticker being credited/converted to. Equal to `from_currency` for transfers (deposit/withdrawal); different for `swap`.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fiat_currency": {
                          "description": "Fiat currency used to express `amount_fiat`, regardless of `from_currency`/`to_currency`.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee_currency": {
                          "description": "Currency in which the fee is charged. `null` when no fee applies.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee": {
                          "description": "Fee amount as a decimal string, in `fee_currency`. `null` when no fee applies.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "fee_fiat": {
                          "description": "Fee amount expressed in `fiat_currency`, as a decimal string. `null` when no fee applies.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "rate": {
                          "description": "Exchange rate applied between `from_currency` and `to_currency`, as a decimal string.",
                          "type": "string",
                          "example": "1"
                        },
                        "rate_usd": {
                          "description": "Exchange rate applied against USD, as a decimal string.",
                          "type": "string",
                          "example": "1050.00"
                        },
                        "amount_from": {
                          "description": "Amount debited in `from_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_to": {
                          "description": "Amount credited in `to_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_fiat": {
                          "description": "Amount expressed in `fiat_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_usd": {
                          "description": "Amount expressed in USD, as a decimal string.",
                          "type": "string",
                          "example": "4.76"
                        },
                        "origin": {
                          "description": "Origin address/account of the transaction, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "destination": {
                          "description": "Destination address/account of the transaction, when applicable (e.g. bank alias, blockchain address, `ripio_tag` handle).",
                          "type": "string",
                          "example": "some.bank.alias"
                        },
                        "tax": {
                          "description": "Tax amount as a decimal string, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "tax_currency": {
                          "description": "Tax currency, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "created_at": {
                          "description": "ISO 8601 timestamp when the transaction was created.",
                          "type": "string",
                          "example": "2026-04-13T12:00:00Z"
                        },
                        "updated_at": {
                          "description": "ISO 8601 timestamp of the last update.",
                          "type": "string",
                          "example": "2026-04-13T12:01:00Z"
                        },
                        "extra_data": {
                          "description": "Allowlisted, per-key additional detail. Only the keys `provider_reference`, `bank_account` and `bank_name` may appear here — internal identifiers such as `person_id`, `person_name`, `user_full_name`, `user_id` or `user_uuid` are NEVER exposed, even if the backend computes them internally. Empty object (`{}`) when no allowlisted key applies.",
                          "properties": {
                            "provider_reference": {
                              "description": "External payment provider's reference for this transaction.",
                              "type": "string"
                            },
                            "bank_account": {
                              "description": "Bank account identifier/alias involved in the transaction.",
                              "type": "string"
                            },
                            "bank_name": {
                              "description": "Name of the bank involved in the transaction.",
                              "type": "string"
                            }
                          },
                          "type": "object",
                          "example": {
                            "bank_account": "some.bank.alias"
                          }
                        }
                      },
                      "required": [
                        "id",
                        "external_id",
                        "transaction_type",
                        "rail",
                        "status",
                        "gateway_details",
                        "transaction_hash",
                        "from_currency",
                        "to_currency",
                        "fiat_currency",
                        "fee_currency",
                        "fee",
                        "fee_fiat",
                        "rate",
                        "rate_usd",
                        "amount_from",
                        "amount_to",
                        "amount_fiat",
                        "amount_usd",
                        "origin",
                        "destination",
                        "tax",
                        "tax_currency",
                        "created_at",
                        "updated_at",
                        "extra_data"
                      ],
                      "type": "object"
                    }
                  },
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": {
                      "id": 12348,
                      "external_id": null,
                      "transaction_type": "swap",
                      "rail": null,
                      "status": "PRO",
                      "gateway_details": null,
                      "transaction_hash": null,
                      "from_currency": "BTC",
                      "to_currency": "ARS",
                      "fiat_currency": "ARS",
                      "fee_currency": "ARS",
                      "fee": "50.00",
                      "fee_fiat": "50.00",
                      "rate": "65000000.00",
                      "rate_usd": "65000.00",
                      "amount_from": "0.001",
                      "amount_to": "64950.00",
                      "amount_fiat": "65000.00",
                      "amount_usd": "61.90",
                      "origin": null,
                      "destination": null,
                      "tax": null,
                      "tax_currency": null,
                      "created_at": "2026-04-13T12:00:00Z",
                      "updated_at": "2026-04-13T12:01:00Z",
                      "extra_data": {}
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Bad Request — invalid or expired promise token.",
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Forbidden — missing `trading_write` permission or account not fully operative for crypto.",
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Conflict — promise expired/used or insufficient balance.",
                  "type": "string"
                }
              }
            }
          },
          "503": {
            "description": "Error response 503"
          }
        }
      }
    },
    "/wallet/transactions/{id}/": {
      "get": {
        "summary": "transactions - Get a transaction by ID",
        "tags": [
          "Ripio Wallet"
        ],
        "description": "Returns the details of a single transaction identified by its `id`.\n\nRestricted to the gateway's rails, same as the list endpoint: requesting the `id` of a transaction outside the gateway's rails (e.g. a `BUY`/`SELL`) returns `404`, not a raw/typed payload.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "description": "This property was not properly documented",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Transaction retrieved successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "description": "Transaction object returned by the transactions list, detail and creation endpoints (`GET /transactions/`, `GET /transactions/{id}/`, and the 201 responses of every `/transactions/{rail}/{action}/` endpoint). All three surfaces share this exact shape.",
                      "properties": {
                        "id": {
                          "description": "Unique transaction identifier (source: `pk`). Same value returned by list, detail and creation endpoints.",
                          "type": "integer",
                          "example": 12345
                        },
                        "external_id": {
                          "description": "External provider reference for this transaction, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "transaction_type": {
                          "description": "Canonical public transaction type.",
                          "type": "string",
                          "example": "withdrawal"
                        },
                        "rail": {
                          "description": "Canonical rail. `null` for `swap`, which has no rail.",
                          "type": "string",
                          "example": "bank"
                        },
                        "status": {
                          "description": "Transaction status. `WTG`=waiting, `WTR`=waiting receipt, `PEN`=pending, `PMA`=pending manual approval, `PRO`=processing, `PAP`=partially paid, `COM`=completed, `CAN`=cancelled, `EXP`=expired, `ERR`=error, `REF`=refunded, `REJ`=rejected, `HOLD`=hold, `SUS`=suspended.",
                          "type": "string",
                          "example": "PEN"
                        },
                        "gateway_details": {
                          "description": "Extra gateway-specific detail. For `rail=crypto` this is the blockchain network. For `rail=ripio` transfers (`deposit`/`withdrawal`) this is the literal string `\"ripio_tag\"`. `null` for `swap` (a conversion, not a transfer) and for `bank`/`pix`.",
                          "type": "string",
                          "example": null
                        },
                        "transaction_hash": {
                          "description": "Blockchain transaction hash, when applicable (crypto transactions).",
                          "type": "string",
                          "example": null
                        },
                        "from_currency": {
                          "description": "Currency ticker being debited/converted from.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "to_currency": {
                          "description": "Currency ticker being credited/converted to. Equal to `from_currency` for transfers (deposit/withdrawal); different for `swap`.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fiat_currency": {
                          "description": "Fiat currency used to express `amount_fiat`, regardless of `from_currency`/`to_currency`.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee_currency": {
                          "description": "Currency in which the fee is charged. `null` when no fee applies.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee": {
                          "description": "Fee amount as a decimal string, in `fee_currency`. `null` when no fee applies.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "fee_fiat": {
                          "description": "Fee amount expressed in `fiat_currency`, as a decimal string. `null` when no fee applies.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "rate": {
                          "description": "Exchange rate applied between `from_currency` and `to_currency`, as a decimal string.",
                          "type": "string",
                          "example": "1"
                        },
                        "rate_usd": {
                          "description": "Exchange rate applied against USD, as a decimal string.",
                          "type": "string",
                          "example": "1050.00"
                        },
                        "amount_from": {
                          "description": "Amount debited in `from_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_to": {
                          "description": "Amount credited in `to_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_fiat": {
                          "description": "Amount expressed in `fiat_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_usd": {
                          "description": "Amount expressed in USD, as a decimal string.",
                          "type": "string",
                          "example": "4.76"
                        },
                        "origin": {
                          "description": "Origin address/account of the transaction, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "destination": {
                          "description": "Destination address/account of the transaction, when applicable (e.g. bank alias, blockchain address, `ripio_tag` handle).",
                          "type": "string",
                          "example": "some.bank.alias"
                        },
                        "tax": {
                          "description": "Tax amount as a decimal string, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "tax_currency": {
                          "description": "Tax currency, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "created_at": {
                          "description": "ISO 8601 timestamp when the transaction was created.",
                          "type": "string",
                          "example": "2026-04-13T12:00:00Z"
                        },
                        "updated_at": {
                          "description": "ISO 8601 timestamp of the last update.",
                          "type": "string",
                          "example": "2026-04-13T12:01:00Z"
                        },
                        "extra_data": {
                          "description": "Allowlisted, per-key additional detail. Only the keys `provider_reference`, `bank_account` and `bank_name` may appear here — internal identifiers such as `person_id`, `person_name`, `user_full_name`, `user_id` or `user_uuid` are NEVER exposed, even if the backend computes them internally. Empty object (`{}`) when no allowlisted key applies.",
                          "properties": {
                            "provider_reference": {
                              "description": "External payment provider's reference for this transaction.",
                              "type": "string"
                            },
                            "bank_account": {
                              "description": "Bank account identifier/alias involved in the transaction.",
                              "type": "string"
                            },
                            "bank_name": {
                              "description": "Name of the bank involved in the transaction.",
                              "type": "string"
                            }
                          },
                          "type": "object",
                          "example": {
                            "bank_account": "some.bank.alias"
                          }
                        }
                      },
                      "required": [
                        "id",
                        "external_id",
                        "transaction_type",
                        "rail",
                        "status",
                        "gateway_details",
                        "transaction_hash",
                        "from_currency",
                        "to_currency",
                        "fiat_currency",
                        "fee_currency",
                        "fee",
                        "fee_fiat",
                        "rate",
                        "rate_usd",
                        "amount_from",
                        "amount_to",
                        "amount_fiat",
                        "amount_usd",
                        "origin",
                        "destination",
                        "tax",
                        "tax_currency",
                        "created_at",
                        "updated_at",
                        "extra_data"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": {
                      "id": 12346,
                      "external_id": null,
                      "transaction_type": "withdrawal",
                      "rail": "crypto",
                      "status": "COM",
                      "gateway_details": "bitcoin",
                      "transaction_hash": "abc123txhash",
                      "from_currency": "BTC",
                      "to_currency": "BTC",
                      "fiat_currency": "ARS",
                      "fee_currency": "BTC",
                      "fee": "0.00005",
                      "fee_fiat": "5.25",
                      "rate": "1",
                      "rate_usd": "65000.00",
                      "amount_from": "0.001",
                      "amount_to": "0.001",
                      "amount_fiat": "65.00",
                      "amount_usd": "65.00",
                      "origin": null,
                      "destination": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
                      "tax": null,
                      "tax_currency": null,
                      "created_at": "2026-04-13T12:00:00Z",
                      "updated_at": "2026-04-13T12:01:00Z",
                      "extra_data": {}
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          },
          "404": {
            "description": "Error response 404"
          }
        }
      }
    },
    "/wallet/transactions/bank-transfer-cvu/withdrawal/": {
      "post": {
        "summary": "transactions - [DEPRECATED] Create a CVU bank withdrawal (legacy alias of...",
        "tags": [
          "Ripio Wallet",
          "Frontend Only"
        ],
        "description": "> ⚠️ **Frontend Only** — This endpoint can only be accessed from the web application frontend.\n\n**Deprecated:** use `POST /transactions/bank/withdrawal/` instead. This path is kept as a temporary alias pointing to the same view.\n\nInitiates an ARS withdrawal to a registered CVU/CBU bank account for the authenticated user.\n\nThe `gateway_data.bank_account` field must be a valid CBU, CVU or alias.\n\n**Whitelisted contacts only:** The destination bank account must be a previously whitelisted contact of the user. Use `POST /contacts/` to create and whitelist a banking contact before calling this endpoint.\n\n**Own account exception:** If the destination CVU/CBU belongs to the authenticated user (i.e., it is registered as one of their own bank accounts), whitelisting is not required.\n\n**Country restriction:** Only available for accounts with `country = AR`.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "amount": {
                    "description": "Withdrawal amount as a decimal string. Must be ≥ 0.01, with up to 2 decimal places.",
                    "type": "string",
                    "example": "5000.00"
                  },
                  "currency": {
                    "description": "Currency to withdraw. Only `ARS` is accepted.",
                    "type": "string",
                    "example": "ARS"
                  },
                  "gateway_data": {
                    "description": "Gateway-specific data for the withdrawal.",
                    "properties": {
                      "bank_account": {
                        "description": "Is the CVU/CBU account number or an account alias to withdraw to.",
                        "type": "integer",
                        "example": "alias.destino"
                      }
                    },
                    "required": [
                      "bank_account"
                    ],
                    "type": "object"
                  },
                  "promise": {
                    "description": "Signed JWT from the swap service. When provided, a crypto-to-ARS swap is executed before the withdrawal. Omit for a direct ARS withdrawal.",
                    "type": "string"
                  },
                  "source": {
                    "description": "Optional field to indicate funds come from wallet or ripio trade (default is wallet)",
                    "type": "string",
                    "example": "trade"
                  }
                },
                "required": [
                  "amount",
                  "currency",
                  "gateway_data"
                ],
                "type": "object"
              },
              "examples": {
                "direct_withdrawal": {
                  "summary": "Direct ARS withdrawal",
                  "value": {
                    "amount": "5000.00",
                    "currency": "ARS",
                    "gateway_data": {
                      "bank_account": "some.bank.alias"
                    }
                  }
                },
                "withdrawal_with_source_trade": {
                  "summary": "Withdrawal with source of funds Ripio Trade",
                  "value": {
                    "amount": "5000.00",
                    "currency": "ARS",
                    "gateway_data": {
                      "bank_account": "some.bank.alias"
                    },
                    "source": "trade"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Withdrawal transaction created successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    },
                    "data": {
                      "description": "Transaction object returned by the transactions list, detail and creation endpoints (`GET /transactions/`, `GET /transactions/{id}/`, and the 201 responses of every `/transactions/{rail}/{action}/` endpoint). All three surfaces share this exact shape.",
                      "properties": {
                        "id": {
                          "description": "Unique transaction identifier (source: `pk`). Same value returned by list, detail and creation endpoints.",
                          "type": "integer",
                          "example": 12345
                        },
                        "external_id": {
                          "description": "External provider reference for this transaction, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "transaction_type": {
                          "description": "Canonical public transaction type.",
                          "type": "string",
                          "example": "withdrawal"
                        },
                        "rail": {
                          "description": "Canonical rail. `null` for `swap`, which has no rail.",
                          "type": "string",
                          "example": "bank"
                        },
                        "status": {
                          "description": "Transaction status. `WTG`=waiting, `WTR`=waiting receipt, `PEN`=pending, `PMA`=pending manual approval, `PRO`=processing, `PAP`=partially paid, `COM`=completed, `CAN`=cancelled, `EXP`=expired, `ERR`=error, `REF`=refunded, `REJ`=rejected, `HOLD`=hold, `SUS`=suspended.",
                          "type": "string",
                          "example": "PEN"
                        },
                        "gateway_details": {
                          "description": "Extra gateway-specific detail. For `rail=crypto` this is the blockchain network. For `rail=ripio` transfers (`deposit`/`withdrawal`) this is the literal string `\"ripio_tag\"`. `null` for `swap` (a conversion, not a transfer) and for `bank`/`pix`.",
                          "type": "string",
                          "example": null
                        },
                        "transaction_hash": {
                          "description": "Blockchain transaction hash, when applicable (crypto transactions).",
                          "type": "string",
                          "example": null
                        },
                        "from_currency": {
                          "description": "Currency ticker being debited/converted from.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "to_currency": {
                          "description": "Currency ticker being credited/converted to. Equal to `from_currency` for transfers (deposit/withdrawal); different for `swap`.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fiat_currency": {
                          "description": "Fiat currency used to express `amount_fiat`, regardless of `from_currency`/`to_currency`.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee_currency": {
                          "description": "Currency in which the fee is charged. `null` when no fee applies.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee": {
                          "description": "Fee amount as a decimal string, in `fee_currency`. `null` when no fee applies.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "fee_fiat": {
                          "description": "Fee amount expressed in `fiat_currency`, as a decimal string. `null` when no fee applies.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "rate": {
                          "description": "Exchange rate applied between `from_currency` and `to_currency`, as a decimal string.",
                          "type": "string",
                          "example": "1"
                        },
                        "rate_usd": {
                          "description": "Exchange rate applied against USD, as a decimal string.",
                          "type": "string",
                          "example": "1050.00"
                        },
                        "amount_from": {
                          "description": "Amount debited in `from_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_to": {
                          "description": "Amount credited in `to_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_fiat": {
                          "description": "Amount expressed in `fiat_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_usd": {
                          "description": "Amount expressed in USD, as a decimal string.",
                          "type": "string",
                          "example": "4.76"
                        },
                        "origin": {
                          "description": "Origin address/account of the transaction, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "destination": {
                          "description": "Destination address/account of the transaction, when applicable (e.g. bank alias, blockchain address, `ripio_tag` handle).",
                          "type": "string",
                          "example": "some.bank.alias"
                        },
                        "tax": {
                          "description": "Tax amount as a decimal string, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "tax_currency": {
                          "description": "Tax currency, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "created_at": {
                          "description": "ISO 8601 timestamp when the transaction was created.",
                          "type": "string",
                          "example": "2026-04-13T12:00:00Z"
                        },
                        "updated_at": {
                          "description": "ISO 8601 timestamp of the last update.",
                          "type": "string",
                          "example": "2026-04-13T12:01:00Z"
                        },
                        "extra_data": {
                          "description": "Allowlisted, per-key additional detail. Only the keys `provider_reference`, `bank_account` and `bank_name` may appear here — internal identifiers such as `person_id`, `person_name`, `user_full_name`, `user_id` or `user_uuid` are NEVER exposed, even if the backend computes them internally. Empty object (`{}`) when no allowlisted key applies.",
                          "properties": {
                            "provider_reference": {
                              "description": "External payment provider's reference for this transaction.",
                              "type": "string"
                            },
                            "bank_account": {
                              "description": "Bank account identifier/alias involved in the transaction.",
                              "type": "string"
                            },
                            "bank_name": {
                              "description": "Name of the bank involved in the transaction.",
                              "type": "string"
                            }
                          },
                          "type": "object",
                          "example": {
                            "bank_account": "some.bank.alias"
                          }
                        }
                      },
                      "required": [
                        "id",
                        "external_id",
                        "transaction_type",
                        "rail",
                        "status",
                        "gateway_details",
                        "transaction_hash",
                        "from_currency",
                        "to_currency",
                        "fiat_currency",
                        "fee_currency",
                        "fee",
                        "fee_fiat",
                        "rate",
                        "rate_usd",
                        "amount_from",
                        "amount_to",
                        "amount_fiat",
                        "amount_usd",
                        "origin",
                        "destination",
                        "tax",
                        "tax_currency",
                        "created_at",
                        "updated_at",
                        "extra_data"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": {
                      "id": 12345,
                      "external_id": null,
                      "transaction_type": "withdrawal",
                      "rail": "bank",
                      "status": "PEN",
                      "gateway_details": null,
                      "transaction_hash": null,
                      "from_currency": "ARS",
                      "to_currency": "ARS",
                      "fiat_currency": "ARS",
                      "fee_currency": "ARS",
                      "fee": "0.00",
                      "fee_fiat": "0.00",
                      "rate": "1",
                      "rate_usd": "1050.00",
                      "amount_from": "5000.00",
                      "amount_to": "5000.00",
                      "amount_fiat": "5000.00",
                      "amount_usd": "4.76",
                      "origin": null,
                      "destination": "some.bank.alias",
                      "tax": null,
                      "tax_currency": null,
                      "created_at": "2026-04-13T12:00:00Z",
                      "updated_at": "2026-04-13T12:00:00Z",
                      "extra_data": {
                        "bank_account": "some.bank.alias"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Bad Request — validation error in the request body.",
                  "properties": {
                    "error_code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": "TXN_0450",
                    "message": "Missing bank account. TXN_0450",
                    "data": null,
                    "timestamp": 1777674872826
                  }
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Forbidden — insufficient JWT permissions or account not fully operative (e.g. suspended, unverified).",
                  "properties": {
                    "error_code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "error_code": "ERR_0009",
                    "message": "Forbidden",
                    "data": null
                  }
                }
              }
            }
          },
          "429": {
            "description": "Error response 429"
          },
          "503": {
            "description": "Error response 503"
          }
        }
      }
    },
    "/wallet/transactions/crypto/reprocess-hash/": {
      "post": {
        "summary": "transactions - [DEPRECATED] Reprocess a crypto deposit hash (legacy alias of...",
        "tags": [
          "Ripio Wallet",
          "Frontend Only"
        ],
        "description": "> ⚠️ **Frontend Only** — This endpoint can only be accessed from the web application frontend.\n\n**Deprecated:** use `POST /transactions/crypto/deposit/reprocess-hash/` instead. This path is kept as a temporary alias pointing to the same view.\n\nTriggers a reprocess of a crypto receive transaction identified by its blockchain hash.\n\nUseful when a deposit was not automatically detected or processed. The service will re-query the blockchain for the given hash and network combination.\n\nThe account must be fully operative for crypto operations.\n\n**Rate limit:** 1 request per hash per reprocess window (cache-lock throttle). Additionally subject to the hourly rate limit scope `txn_reprocess_hash_hour`.\n\n**How to obtain the required values:**\n- `network`: use the `GET /network/currency-networks/{currency}/` endpoint. Use the `code` field of the desired network (e.g. `\"bitcoin\"`, `\"ethereum\"`).\n- `currency`: ISO 4217 crypto currency code (e.g. `\"BTC\"`, `\"ETH\"`, `\"USDT\"`).\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "txn_hash": {
                    "description": "Blockchain transaction hash to reprocess.",
                    "type": "string",
                    "example": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890ab"
                  },
                  "currency": {
                    "description": "ISO 4217 crypto currency code.",
                    "type": "string",
                    "example": "BTC"
                  },
                  "network": {
                    "description": "Network code for the transaction (e.g. bitcoin, ethereum, polygon).",
                    "type": "string",
                    "example": "bitcoin"
                  }
                },
                "required": [
                  "txn_hash",
                  "currency",
                  "network"
                ],
                "type": "object"
              },
              "examples": {
                "reprocess_btc": {
                  "summary": "Reprocess BTC transaction on Bitcoin network",
                  "value": {
                    "txn_hash": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890ab",
                    "currency": "BTC",
                    "network": "bitcoin"
                  }
                },
                "reprocess_usdt_eth": {
                  "summary": "Reprocess USDT transaction on Ethereum network",
                  "value": {
                    "txn_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef12",
                    "currency": "USDT",
                    "network": "ethereum"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Reprocess started successfully. No response body is returned.",
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "Error response 403"
          },
          "409": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "data": null,
                    "error_code": "NET_0400",
                    "message": "La red proporcionada no es válida. NET_0400"
                  }
                }
              }
            }
          },
          "429": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object"
                }
              }
            }
          },
          "503": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Gateway error response wrapper.",
                  "properties": {
                    "error_code": {
                      "description": "Error code identifying the failure. Gateway codes: 'ERR_0001'=internal error, 'ERR_0003'=bad request, 'ERR_0004'=not found, 'ERR_0006'=service unavailable, 'ERR_0008'=unauthorized, 'ERR_0009'=forbidden, 'ERR_0010'=method not allowed, 'ERR_0012'=too many requests.",
                      "type": "string",
                      "example": "ERR_0008"
                    },
                    "message": {
                      "description": "Human-readable error message.",
                      "type": "string",
                      "example": "Invalid Gateway JWT"
                    },
                    "data": {
                      "description": "Null for most errors. May contain field-level validation errors as an object with a `detail` array.",
                      "type": "object",
                      "example": null
                    }
                  },
                  "required": [
                    "error_code",
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "data": [
                      {
                        "code": "TXN_0500",
                        "detail": "Ocurrio un error al reprocesar la transaccion. TXN_0500"
                      }
                    ],
                    "error_code": "ERR_0006",
                    "message": "Service unavailable"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/wallet/transactions/balance/send/": {
      "post": {
        "summary": "transactions - [DEPRECATED] Create a Ripio balance withdrawal (legacy alias of...",
        "tags": [
          "Ripio Wallet",
          "Frontend Only"
        ],
        "description": "> ⚠️ **Frontend Only** — This endpoint can only be accessed from the web application frontend.\n\n**Deprecated:** use `POST /transactions/ripio/withdrawal/` instead. This path is kept as a temporary alias pointing to the same view.\n\nPerforms an internal balance-to-balance transfer (P2P) to another user identified by their `ripio_tag`.\n\nThe transfer is instantaneous when both accounts are valid, fully operative and in the same country. No external blockchain transaction is created.\n\n**Whitelisted contacts only:** The destination `ripio_tag` must be a previously whitelisted contact of the user. Use `POST /contacts/` with `type=rp_tag` to add and whitelist an rp_tag contact before calling this endpoint.\n\n**How to obtain the required values:**\n- `gateway_data.to_rp_tag`: the destination user's public handle. The destination account must be fully operative and from the same country as the origin account.\n- `currency`: any enabled currency (crypto or fiat) supported for SEND via the balance gateway.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "amount": {
                    "description": "Amount to transfer as a decimal string. Up to 8 decimal places.",
                    "type": "string",
                    "example": "1.0014"
                  },
                  "currency": {
                    "description": "Currency ticker to transfer (e.g. `\"ARS\"`, `\"USDT\"`, `\"BTC\"`).",
                    "type": "string",
                    "example": "USDT"
                  },
                  "gateway_data": {
                    "description": "Internal transfer data.",
                    "properties": {
                      "to_rp_tag": {
                        "description": "Destination user's ripio_tag handle (without `@`).",
                        "type": "string",
                        "example": "barrilete"
                      },
                      "reason": {
                        "description": "Optional free-text reason shown to the recipient. Max 100 chars.",
                        "type": "string",
                        "example": "Pago del almuerzo"
                      }
                    },
                    "required": [
                      "to_rp_tag"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "amount",
                  "currency",
                  "gateway_data"
                ],
                "type": "object"
              },
              "examples": {
                "default": {
                  "value": {
                    "amount": "1.0014",
                    "currency": "USDT",
                    "gateway_data": {
                      "to_rp_tag": "barrilete",
                      "reason": "Pago del almuerzo"
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Internal transfer completed successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "description": "Transaction object returned by the transactions list, detail and creation endpoints (`GET /transactions/`, `GET /transactions/{id}/`, and the 201 responses of every `/transactions/{rail}/{action}/` endpoint). All three surfaces share this exact shape.",
                      "properties": {
                        "id": {
                          "description": "Unique transaction identifier (source: `pk`). Same value returned by list, detail and creation endpoints.",
                          "type": "integer",
                          "example": 12345
                        },
                        "external_id": {
                          "description": "External provider reference for this transaction, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "transaction_type": {
                          "description": "Canonical public transaction type.",
                          "type": "string",
                          "example": "withdrawal"
                        },
                        "rail": {
                          "description": "Canonical rail. `null` for `swap`, which has no rail.",
                          "type": "string",
                          "example": "bank"
                        },
                        "status": {
                          "description": "Transaction status. `WTG`=waiting, `WTR`=waiting receipt, `PEN`=pending, `PMA`=pending manual approval, `PRO`=processing, `PAP`=partially paid, `COM`=completed, `CAN`=cancelled, `EXP`=expired, `ERR`=error, `REF`=refunded, `REJ`=rejected, `HOLD`=hold, `SUS`=suspended.",
                          "type": "string",
                          "example": "PEN"
                        },
                        "gateway_details": {
                          "description": "Extra gateway-specific detail. For `rail=crypto` this is the blockchain network. For `rail=ripio` transfers (`deposit`/`withdrawal`) this is the literal string `\"ripio_tag\"`. `null` for `swap` (a conversion, not a transfer) and for `bank`/`pix`.",
                          "type": "string",
                          "example": null
                        },
                        "transaction_hash": {
                          "description": "Blockchain transaction hash, when applicable (crypto transactions).",
                          "type": "string",
                          "example": null
                        },
                        "from_currency": {
                          "description": "Currency ticker being debited/converted from.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "to_currency": {
                          "description": "Currency ticker being credited/converted to. Equal to `from_currency` for transfers (deposit/withdrawal); different for `swap`.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fiat_currency": {
                          "description": "Fiat currency used to express `amount_fiat`, regardless of `from_currency`/`to_currency`.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee_currency": {
                          "description": "Currency in which the fee is charged. `null` when no fee applies.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee": {
                          "description": "Fee amount as a decimal string, in `fee_currency`. `null` when no fee applies.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "fee_fiat": {
                          "description": "Fee amount expressed in `fiat_currency`, as a decimal string. `null` when no fee applies.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "rate": {
                          "description": "Exchange rate applied between `from_currency` and `to_currency`, as a decimal string.",
                          "type": "string",
                          "example": "1"
                        },
                        "rate_usd": {
                          "description": "Exchange rate applied against USD, as a decimal string.",
                          "type": "string",
                          "example": "1050.00"
                        },
                        "amount_from": {
                          "description": "Amount debited in `from_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_to": {
                          "description": "Amount credited in `to_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_fiat": {
                          "description": "Amount expressed in `fiat_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_usd": {
                          "description": "Amount expressed in USD, as a decimal string.",
                          "type": "string",
                          "example": "4.76"
                        },
                        "origin": {
                          "description": "Origin address/account of the transaction, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "destination": {
                          "description": "Destination address/account of the transaction, when applicable (e.g. bank alias, blockchain address, `ripio_tag` handle).",
                          "type": "string",
                          "example": "some.bank.alias"
                        },
                        "tax": {
                          "description": "Tax amount as a decimal string, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "tax_currency": {
                          "description": "Tax currency, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "created_at": {
                          "description": "ISO 8601 timestamp when the transaction was created.",
                          "type": "string",
                          "example": "2026-04-13T12:00:00Z"
                        },
                        "updated_at": {
                          "description": "ISO 8601 timestamp of the last update.",
                          "type": "string",
                          "example": "2026-04-13T12:01:00Z"
                        },
                        "extra_data": {
                          "description": "Allowlisted, per-key additional detail. Only the keys `provider_reference`, `bank_account` and `bank_name` may appear here — internal identifiers such as `person_id`, `person_name`, `user_full_name`, `user_id` or `user_uuid` are NEVER exposed, even if the backend computes them internally. Empty object (`{}`) when no allowlisted key applies.",
                          "properties": {
                            "provider_reference": {
                              "description": "External payment provider's reference for this transaction.",
                              "type": "string"
                            },
                            "bank_account": {
                              "description": "Bank account identifier/alias involved in the transaction.",
                              "type": "string"
                            },
                            "bank_name": {
                              "description": "Name of the bank involved in the transaction.",
                              "type": "string"
                            }
                          },
                          "type": "object",
                          "example": {
                            "bank_account": "some.bank.alias"
                          }
                        }
                      },
                      "required": [
                        "id",
                        "external_id",
                        "transaction_type",
                        "rail",
                        "status",
                        "gateway_details",
                        "transaction_hash",
                        "from_currency",
                        "to_currency",
                        "fiat_currency",
                        "fee_currency",
                        "fee",
                        "fee_fiat",
                        "rate",
                        "rate_usd",
                        "amount_from",
                        "amount_to",
                        "amount_fiat",
                        "amount_usd",
                        "origin",
                        "destination",
                        "tax",
                        "tax_currency",
                        "created_at",
                        "updated_at",
                        "extra_data"
                      ],
                      "type": "object"
                    }
                  },
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": {
                      "id": 12347,
                      "external_id": null,
                      "transaction_type": "withdrawal",
                      "rail": "ripio",
                      "status": "COM",
                      "gateway_details": "ripio_tag",
                      "transaction_hash": null,
                      "from_currency": "USDT",
                      "to_currency": "USDT",
                      "fiat_currency": "ARS",
                      "fee_currency": null,
                      "fee": null,
                      "fee_fiat": null,
                      "rate": "1",
                      "rate_usd": "1.00",
                      "amount_from": "100.00",
                      "amount_to": "100.00",
                      "amount_fiat": "105000.00",
                      "amount_usd": "100.00",
                      "origin": null,
                      "destination": "barrilete",
                      "tax": null,
                      "tax_currency": null,
                      "created_at": "2026-04-13T12:00:00Z",
                      "updated_at": "2026-04-13T12:01:00Z",
                      "extra_data": {}
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Bad Request — validation error.",
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Forbidden — missing `internal_balance_transfer_write` permission, account not fully operative, or country not in [AR, BR].",
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Conflict — business rule violation (invalid destination, insufficient balance, limits, etc).",
                  "type": "string"
                }
              }
            }
          },
          "503": {
            "description": "Error response 503"
          }
        }
      }
    },
    "/wallet/transactions/promises/": {
      "post": {
        "summary": "transactions - [DEPRECATED] Create a swap quote (legacy alias of /transactions/quotes/)",
        "tags": [
          "Ripio Wallet",
          "Frontend Only"
        ],
        "description": "> ⚠️ **Frontend Only** — This endpoint can only be accessed from the web application frontend.\n\n**Deprecated:** use `POST /transactions/quotes/` instead. This path is kept as a temporary alias pointing to the same view.\n\nCreates a swap promise for a currency pair. A promise is a short-lived signed quote (JWT) returned in the `uuid` field that must be sent back to `POST /transactions/swap/` to execute the swap before it expires.\n\nThe swap can be fiat-to-crypto, crypto-to-fiat or crypto-to-crypto. The `amount` can be expressed either in `from_currency` or in `to_currency`, indicated by `amount_currency`.\n\nThe pair must be enabled for swap for the account (currency availability and per-account rollout apply); otherwise a 409 is returned.\n\n**How to obtain the required values:**\n- `from_currency` / `to_currency`: enabled swap currencies for the account's country.\n- `amount_currency`: must equal `from_currency` or `to_currency`.\n- `gateway`: use `\"balance\"` for the balance swap.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "from_currency": {
                    "description": "Currency ticker to swap from.",
                    "type": "string",
                    "example": "ARS"
                  },
                  "to_currency": {
                    "description": "Currency ticker to swap to.",
                    "type": "string",
                    "example": "BTC"
                  },
                  "amount_currency": {
                    "description": "Currency in which `amount` is expressed. Must equal `from_currency` or `to_currency`.",
                    "type": "string",
                    "example": "ARS"
                  },
                  "amount": {
                    "description": "Amount to swap as a decimal string, expressed in `amount_currency`.",
                    "type": "string",
                    "example": "10000"
                  },
                  "gateway": {
                    "description": "Gateway identifier for the swap.",
                    "type": "string",
                    "example": "balance"
                  }
                },
                "required": [
                  "from_currency",
                  "to_currency",
                  "amount_currency",
                  "amount",
                  "gateway"
                ],
                "type": "object"
              },
              "examples": {
                "default": {
                  "value": {
                    "from_currency": "ARS",
                    "to_currency": "BTC",
                    "amount_currency": "ARS",
                    "amount": "10000",
                    "gateway": "balance"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Swap promise created successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "description": "Swap promise (quote) returned by the promises endpoint. The `uuid` is a signed token (JWT) that must be sent to POST /transactions/swap/ to execute the swap before it expires.",
                      "properties": {
                        "uuid": {
                          "description": "Signed promise token (JWT). Pass it as `promise` to execute the swap.",
                          "type": "string",
                          "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
                        },
                        "from_currency": {
                          "description": "Currency ticker to swap from.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "from_currency_id": {
                          "description": "Internal id of the from currency.",
                          "type": "integer",
                          "example": 1
                        },
                        "to_currency": {
                          "description": "Currency ticker to swap to.",
                          "type": "string",
                          "example": "BTC"
                        },
                        "to_currency_id": {
                          "description": "Internal id of the to currency.",
                          "type": "integer",
                          "example": 2
                        },
                        "rate": {
                          "description": "Exchange rate (with spread applied) for the pair.",
                          "type": "string",
                          "example": "0.000000005742"
                        },
                        "inverted_rate": {
                          "description": "Inverted exchange rate.",
                          "type": "string",
                          "example": "174155346.57"
                        },
                        "rate_usd": {
                          "description": "USD reference rate for the from currency.",
                          "type": "string",
                          "example": "0.0255102"
                        },
                        "amount_from": {
                          "description": "Amount debited from the from currency.",
                          "type": "string",
                          "example": "10000.00"
                        },
                        "amount_to": {
                          "description": "Amount credited in the to currency.",
                          "type": "string",
                          "example": "0.00005741"
                        },
                        "amount_usd": {
                          "description": "USD value of the operation.",
                          "type": "string",
                          "example": "255.10"
                        },
                        "currency_pair": {
                          "description": "Pair ticker (`from_to`).",
                          "type": "string",
                          "example": "ARS_BTC"
                        },
                        "alt_currency_pair": {
                          "description": "Alternative currency pair, if applicable.",
                          "type": "string",
                          "example": null
                        },
                        "fee": {
                          "description": "Fee amount, or null when there is no fee.",
                          "type": "string",
                          "example": null
                        },
                        "fee_currency": {
                          "description": "Fee currency, or null when there is no fee.",
                          "type": "string",
                          "example": null
                        },
                        "alt_fee": {
                          "description": "Alternative fee, if applicable.",
                          "type": "string",
                          "example": null
                        },
                        "action": {
                          "description": "Promise action.",
                          "type": "string",
                          "example": "SWAP"
                        },
                        "created_at": {
                          "description": "ISO 8601 creation timestamp.",
                          "type": "string",
                          "example": "2026-04-13T12:00:00.000000Z"
                        },
                        "expires_at": {
                          "description": "ISO 8601 expiration timestamp.",
                          "type": "string",
                          "example": "2026-04-13T12:02:00.000000Z"
                        },
                        "expires_in": {
                          "description": "Seconds until the promise expires.",
                          "type": "integer",
                          "example": 120
                        }
                      },
                      "required": [
                        "uuid",
                        "from_currency",
                        "to_currency",
                        "rate",
                        "amount_from",
                        "amount_to",
                        "currency_pair",
                        "expires_at",
                        "expires_in"
                      ],
                      "type": "object"
                    }
                  },
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Bad Request — validation error (invalid currency, amount, or amount_currency not equal to from/to).",
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Forbidden — missing `trading_write` permission or account not fully operative for crypto.",
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Conflict — pair not available for swap, gateway disabled, or quote could not be created.",
                  "type": "string"
                }
              }
            }
          },
          "429": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Too Many Requests — swap promise creation throttled.",
                  "type": "string"
                }
              }
            }
          },
          "503": {
            "description": "Error response 503"
          }
        }
      }
    },
    "/wallet/transactions/balance/swap/": {
      "post": {
        "summary": "transactions - [DEPRECATED] Execute a balance swap (legacy alias of /transactions/swap/)",
        "tags": [
          "Ripio Wallet",
          "Frontend Only"
        ],
        "description": "> ⚠️ **Frontend Only** — This endpoint can only be accessed from the web application frontend.\n\n**Deprecated:** use `POST /transactions/swap/` instead. This path is kept as a temporary alias pointing to the same view.\n\nExecutes a swap using a previously created promise (the `uuid` token returned by `POST /transactions/quotes/`).\n\nThe swap moves the user's balance: the `from_currency` is debited and, once the underlying trade completes, the `to_currency` is credited. The transaction is created in `PRO` (processing) status and completes asynchronously.\n\nThe promise must be valid (not expired, not already used) and the account must have enough `from_currency` balance.\n\n**How to obtain the required values:**\n- `promise`: the `uuid` field returned by create_swap_promise.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "promise": {
                    "description": "The swap promise token (`uuid`) returned by POST /transactions/quotes/.",
                    "type": "string",
                    "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
                  }
                },
                "required": [
                  "promise"
                ],
                "type": "object"
              },
              "examples": {
                "default": {
                  "value": {
                    "promise": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Swap transaction created successfully.",
                  "properties": {
                    "error_code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "description": "Transaction object returned by the transactions list, detail and creation endpoints (`GET /transactions/`, `GET /transactions/{id}/`, and the 201 responses of every `/transactions/{rail}/{action}/` endpoint). All three surfaces share this exact shape.",
                      "properties": {
                        "id": {
                          "description": "Unique transaction identifier (source: `pk`). Same value returned by list, detail and creation endpoints.",
                          "type": "integer",
                          "example": 12345
                        },
                        "external_id": {
                          "description": "External provider reference for this transaction, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "transaction_type": {
                          "description": "Canonical public transaction type.",
                          "type": "string",
                          "example": "withdrawal"
                        },
                        "rail": {
                          "description": "Canonical rail. `null` for `swap`, which has no rail.",
                          "type": "string",
                          "example": "bank"
                        },
                        "status": {
                          "description": "Transaction status. `WTG`=waiting, `WTR`=waiting receipt, `PEN`=pending, `PMA`=pending manual approval, `PRO`=processing, `PAP`=partially paid, `COM`=completed, `CAN`=cancelled, `EXP`=expired, `ERR`=error, `REF`=refunded, `REJ`=rejected, `HOLD`=hold, `SUS`=suspended.",
                          "type": "string",
                          "example": "PEN"
                        },
                        "gateway_details": {
                          "description": "Extra gateway-specific detail. For `rail=crypto` this is the blockchain network. For `rail=ripio` transfers (`deposit`/`withdrawal`) this is the literal string `\"ripio_tag\"`. `null` for `swap` (a conversion, not a transfer) and for `bank`/`pix`.",
                          "type": "string",
                          "example": null
                        },
                        "transaction_hash": {
                          "description": "Blockchain transaction hash, when applicable (crypto transactions).",
                          "type": "string",
                          "example": null
                        },
                        "from_currency": {
                          "description": "Currency ticker being debited/converted from.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "to_currency": {
                          "description": "Currency ticker being credited/converted to. Equal to `from_currency` for transfers (deposit/withdrawal); different for `swap`.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fiat_currency": {
                          "description": "Fiat currency used to express `amount_fiat`, regardless of `from_currency`/`to_currency`.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee_currency": {
                          "description": "Currency in which the fee is charged. `null` when no fee applies.",
                          "type": "string",
                          "example": "ARS"
                        },
                        "fee": {
                          "description": "Fee amount as a decimal string, in `fee_currency`. `null` when no fee applies.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "fee_fiat": {
                          "description": "Fee amount expressed in `fiat_currency`, as a decimal string. `null` when no fee applies.",
                          "type": "string",
                          "example": "0.00"
                        },
                        "rate": {
                          "description": "Exchange rate applied between `from_currency` and `to_currency`, as a decimal string.",
                          "type": "string",
                          "example": "1"
                        },
                        "rate_usd": {
                          "description": "Exchange rate applied against USD, as a decimal string.",
                          "type": "string",
                          "example": "1050.00"
                        },
                        "amount_from": {
                          "description": "Amount debited in `from_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_to": {
                          "description": "Amount credited in `to_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_fiat": {
                          "description": "Amount expressed in `fiat_currency`, as a decimal string.",
                          "type": "string",
                          "example": "5000.00"
                        },
                        "amount_usd": {
                          "description": "Amount expressed in USD, as a decimal string.",
                          "type": "string",
                          "example": "4.76"
                        },
                        "origin": {
                          "description": "Origin address/account of the transaction, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "destination": {
                          "description": "Destination address/account of the transaction, when applicable (e.g. bank alias, blockchain address, `ripio_tag` handle).",
                          "type": "string",
                          "example": "some.bank.alias"
                        },
                        "tax": {
                          "description": "Tax amount as a decimal string, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "tax_currency": {
                          "description": "Tax currency, when applicable.",
                          "type": "string",
                          "example": null
                        },
                        "created_at": {
                          "description": "ISO 8601 timestamp when the transaction was created.",
                          "type": "string",
                          "example": "2026-04-13T12:00:00Z"
                        },
                        "updated_at": {
                          "description": "ISO 8601 timestamp of the last update.",
                          "type": "string",
                          "example": "2026-04-13T12:01:00Z"
                        },
                        "extra_data": {
                          "description": "Allowlisted, per-key additional detail. Only the keys `provider_reference`, `bank_account` and `bank_name` may appear here — internal identifiers such as `person_id`, `person_name`, `user_full_name`, `user_id` or `user_uuid` are NEVER exposed, even if the backend computes them internally. Empty object (`{}`) when no allowlisted key applies.",
                          "properties": {
                            "provider_reference": {
                              "description": "External payment provider's reference for this transaction.",
                              "type": "string"
                            },
                            "bank_account": {
                              "description": "Bank account identifier/alias involved in the transaction.",
                              "type": "string"
                            },
                            "bank_name": {
                              "description": "Name of the bank involved in the transaction.",
                              "type": "string"
                            }
                          },
                          "type": "object",
                          "example": {
                            "bank_account": "some.bank.alias"
                          }
                        }
                      },
                      "required": [
                        "id",
                        "external_id",
                        "transaction_type",
                        "rail",
                        "status",
                        "gateway_details",
                        "transaction_hash",
                        "from_currency",
                        "to_currency",
                        "fiat_currency",
                        "fee_currency",
                        "fee",
                        "fee_fiat",
                        "rate",
                        "rate_usd",
                        "amount_from",
                        "amount_to",
                        "amount_fiat",
                        "amount_usd",
                        "origin",
                        "destination",
                        "tax",
                        "tax_currency",
                        "created_at",
                        "updated_at",
                        "extra_data"
                      ],
                      "type": "object"
                    }
                  },
                  "type": "object",
                  "example": {
                    "error_code": null,
                    "message": null,
                    "data": {
                      "id": 12348,
                      "external_id": null,
                      "transaction_type": "swap",
                      "rail": null,
                      "status": "PRO",
                      "gateway_details": null,
                      "transaction_hash": null,
                      "from_currency": "BTC",
                      "to_currency": "ARS",
                      "fiat_currency": "ARS",
                      "fee_currency": "ARS",
                      "fee": "50.00",
                      "fee_fiat": "50.00",
                      "rate": "65000000.00",
                      "rate_usd": "65000.00",
                      "amount_from": "0.001",
                      "amount_to": "64950.00",
                      "amount_fiat": "65000.00",
                      "amount_usd": "61.90",
                      "origin": null,
                      "destination": null,
                      "tax": null,
                      "tax_currency": null,
                      "created_at": "2026-04-13T12:00:00Z",
                      "updated_at": "2026-04-13T12:01:00Z",
                      "extra_data": {}
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Bad Request — invalid or expired promise token.",
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Error response 401"
          },
          "403": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Forbidden — missing `trading_write` permission or account not fully operative for crypto.",
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Conflict — promise expired/used or insufficient balance.",
                  "type": "string"
                }
              }
            }
          },
          "503": {
            "description": "Error response 503"
          }
        }
      }
    },
    "/trade/public/server-time": {
      "get": {
        "summary": "Public - Server Time",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Returns the server time in miliseconds.\n\n---\n\n**Authorization**\n\n- No API key required — this endpoint is public.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "properties": {
                        "timestamp": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "timestamp"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "message",
                    "data"
                  ],
                  "type": "object",
                  "example": {
                    "data": {
                      "timestamp": 1670004661380
                    },
                    "message": null
                  }
                }
              }
            }
          }
        }
      }
    },
    "/trade/operations": {
      "get": {
        "summary": "General endpoints - Operations",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Lists all active operation types.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - general_data_read",
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "items": {
                        "properties": {
                          "id": {
                            "description": "Operation unique identifier (UUID)",
                            "type": "string",
                            "example": "A1B2C3D4-1234-5678-ABCD-EF1234567890"
                          },
                          "name": {
                            "description": "Operation name",
                            "type": "string",
                            "example": "Buy"
                          }
                        },
                        "required": [
                          "id",
                          "name"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/orders": {
      "put": {
        "summary": "Orders - Update the amount and/or price of an order",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Allows update the amount and/or price of an order, it is not possible to change a canceled or fully executed order.\n\nPublishes updates in the following websocket topics: [`orderbook`](#operation/orderbook), and [`balance`](#operation/balance).\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - trading_write",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "unit_price": {
                    "description": "New order price. Cannot be changed if it would immediately execute against existing orders",
                    "type": "string",
                    "example": "10"
                  },
                  "amount": {
                    "description": "New order amount in base currency",
                    "type": "string",
                    "example": "100"
                  },
                  "order_id": {
                    "description": "Unique identifier of the order to update",
                    "type": "string",
                    "example": "00CE34E9-0168-4050-9D58-10C705A1AC81"
                  }
                },
                "required": [
                  "order_id"
                ],
                "type": "object"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "type": "number"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Orders - Cancel Order",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Cancels an active order by its `id`.\n\nPublishes updates in the following websocket topics: [`orderbook`](#operation/orderbook), [`balance`](#operation/balance) and [`order_status`](#operation/order_status).\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - trading_write",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "id": {
                    "description": "Order `id`",
                    "type": "string",
                    "example": "7155ED34-9EC4-4733-8B32-1E4319CB662F"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "id": {
                          "description": "Order identifier",
                          "type": "string"
                        },
                        "create_date": {
                          "description": "Datetime of the order creation",
                          "type": "string"
                        },
                        "executed_amount": {
                          "description": "Executed amount",
                          "type": "number"
                        },
                        "remaining_amount": {
                          "description": "Remaining amount",
                          "type": "number"
                        },
                        "remaining_value": {
                          "description": "Remaining value",
                          "type": "number"
                        },
                        "requested_amount": {
                          "description": "Requested amount",
                          "type": "number"
                        },
                        "side": {
                          "description": "Order side (sell / buy)",
                          "type": "string"
                        },
                        "status": {
                          "description": "Order status (executed_completely / executed_partially / open / canceled)",
                          "type": "string"
                        },
                        "total_value": {
                          "description": "Total value",
                          "type": "number"
                        },
                        "type": {
                          "description": "Order type (limit / market)",
                          "type": "string"
                        },
                        "price": {
                          "description": "Price",
                          "type": "number"
                        },
                        "update_date": {
                          "description": "Datetime of the last update",
                          "type": "string"
                        },
                        "pair": {
                          "description": "Currency pair code",
                          "type": "string",
                          "example": "BTC_BRL"
                        },
                        "external_id": {
                          "description": "External id (this is sent by the user when creating an order, and it's optional)",
                          "type": "string",
                          "example": "BEAB10B1-45B0-4999-9B2F-D2ED048D6C42"
                        }
                      },
                      "required": [
                        "id",
                        "create_date",
                        "executed_amount",
                        "remaining_amount",
                        "remaining_value",
                        "requested_amount",
                        "status",
                        "total_value",
                        "price",
                        "update_date",
                        "pair"
                      ],
                      "type": "object",
                      "example": {
                        "create_date": "2017-12-08T23:42:54.960Z",
                        "executed_amount": 0.02347418,
                        "external_id": "B4A9F7F4-9C79-4921-9330-224C17260BDF",
                        "id": "7155ED34-9EC4-4733-8B32-1E4319CB662F",
                        "pair": "BTC_BRL",
                        "price": 42600,
                        "remaining_amount": 0.1,
                        "remaining_value": 0.6,
                        "requested_amount": 0.02347418,
                        "requested_value": 1000,
                        "side": "buy",
                        "status": "canceled",
                        "total_value": 1000,
                        "type": "limit",
                        "update_date": "2017-12-13T21:48:48.817Z"
                      }
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "get": {
        "summary": "Orders - User Orders",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Lists the user's orders.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - trading_read",
        "parameters": [
          {
            "in": "query",
            "name": "pair",
            "required": true,
            "description": "Currency pair code",
            "schema": {
              "example": "BTC_BRL",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "items": {
                "description": "Order status (string or string list separated by commas)",
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "in": "query",
            "name": "side",
            "required": false,
            "description": "Order side (buy or sell)",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "type",
            "required": false,
            "description": "Order type (limit, market, stop_limit, trailing, ceiling or iceberg)",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "ids",
            "required": false,
            "description": "Identifiers list separated by commas (maximum of 10 identifiers)",
            "schema": {
              "example": "a6f7f8b3-e531-4522-810c-4f726f796b10,1594d0af-9239-466b-805b-a4f5df5f16d9",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "start_date",
            "required": false,
            "description": "Initial date filter in ISO-8601 format (shouldn't be before 2017-10-01)",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "end_date",
            "required": false,
            "description": "Final date filter in ISO-8601 format (the interval between the initial and final date shouldn't be greater than 6 months)",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "required": false,
            "description": "Number of records per page",
            "schema": {
              "example": 100,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "current_page",
            "required": false,
            "description": "Page number for pagination",
            "schema": {
              "example": 3,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "c",
            "required": false,
            "description": "The `c` parameter is the cursor you should use to fetch the next page of results",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "orders": {
                          "items": {
                            "properties": {
                              "id": {
                                "description": "Order identifier",
                                "type": "string"
                              },
                              "create_date": {
                                "description": "Creation datetime",
                                "type": "string"
                              },
                              "executed_amount": {
                                "description": "Executed amount",
                                "type": "number"
                              },
                              "external_id": {
                                "description": "External id (this is sent by the user when creating an order, and it's optional)",
                                "type": "string"
                              },
                              "pair": {
                                "description": "Currency pair code",
                                "type": "string",
                                "example": "BTC_BRL"
                              },
                              "remaining_amount": {
                                "description": "Remaining amount",
                                "type": "number"
                              },
                              "remaining_value": {
                                "description": "Remaining value",
                                "type": "number"
                              },
                              "requested_amount": {
                                "description": "Requested amount",
                                "type": "number"
                              },
                              "requested_value": {
                                "description": "Requested value",
                                "type": "number"
                              },
                              "status": {
                                "description": "Order status (executed_completely / executed_partially / open / canceled)",
                                "type": "string"
                              },
                              "type": {
                                "description": "Order type (limit / market)",
                                "type": "string"
                              },
                              "total_value": {
                                "description": "Total value",
                                "type": "number"
                              },
                              "side": {
                                "description": "Order side (buy or sell)",
                                "type": "string"
                              },
                              "price": {
                                "description": "Price",
                                "type": "number"
                              },
                              "update_date": {
                                "description": "Datetime of the last update",
                                "type": "string"
                              },
                              "fee": {
                                "description": "Fee from the transaction",
                                "type": "number"
                              },
                              "fill_or_kill": {
                                "description": "Exclusive for StopLimit orders, it is used in stop-loss or stop-buy scenarios to initiate selling or buying when the market price reaches the specified stop price",
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "id",
                              "create_date",
                              "executed_amount",
                              "pair",
                              "remaining_amount",
                              "remaining_value",
                              "requested_amount",
                              "status",
                              "type",
                              "total_value",
                              "side",
                              "price",
                              "update_date",
                              "fee",
                              "fill_or_kill"
                            ],
                            "type": "object"
                          },
                          "type": "array",
                          "example": [
                            {
                              "create_date": "2017-12-08T23:42:54.960Z",
                              "executed_amount": 0.02347418,
                              "external_id": "B4A9F7F4-9C79-4921-9330-224C17260BDF",
                              "id": "857C0A3B-D70F-4256-9051-1C62FADBA8FA",
                              "pair": "BTC_BRL",
                              "price": 42600,
                              "remaining_amount": 0,
                              "remaining_value": 0,
                              "requested_amount": 0.02347418,
                              "requested_value": 1000,
                              "side": "buy",
                              "status": "executed_completely",
                              "total_value": 1000,
                              "type": "limit",
                              "update_date": "2017-12-13T21:48:48.817Z",
                              "fee": 1
                            },
                            {
                              "create_date": "2017-10-20T00:26:40.403Z",
                              "executed_amount": 0.00033518,
                              "external_id": "13080055-7357-4110-81B1-981E6699FA57",
                              "id": "3ECBE371-DE24-42E8-841C-4281B3164CCE",
                              "pair": "BTC_BRL",
                              "price": 16352.12,
                              "remaining_amount": 0,
                              "remaining_value": 0,
                              "requested_amount": 0.00033518,
                              "requested_value": 5.48090358,
                              "side": "buy",
                              "status": "executed_completely",
                              "total_value": 5.48090358,
                              "type": "limit",
                              "update_date": "2017-10-20T00:26:40.467Z",
                              "fee": 1
                            }
                          ]
                        },
                        "pagination": {
                          "properties": {
                            "current_page": {
                              "description": "Current page",
                              "type": "number"
                            },
                            "page_size": {
                              "description": "Page size",
                              "type": "number"
                            },
                            "registers_count": {
                              "description": "Total number of registers",
                              "type": "number"
                            },
                            "total_pages": {
                              "description": "Total number of pages",
                              "type": "number"
                            }
                          },
                          "required": [
                            "current_page",
                            "page_size",
                            "registers_count",
                            "total_pages"
                          ],
                          "type": "object",
                          "example": {
                            "current_page": 1,
                            "registers_count": 21,
                            "total_pages": 1,
                            "page_size": 100
                          }
                        },
                        "nc": {
                          "description": "Next cursor for pagination",
                          "type": "string"
                        },
                        "pc": {
                          "description": "Previous cursor for pagination",
                          "type": "string"
                        }
                      },
                      "required": [
                        "orders",
                        "pagination"
                      ],
                      "type": "object"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Orders - Create Order",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Creates a new order.\n\nPublishes updates in the following websocket topics: [`trade`](#operation/trade) (if there is a trade), [`orderbook`](#operation/orderbook), [`balance`](#operation/balance) and [`order_status`](#operation/order_status).\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - trading_write",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "external_id": {
                    "description": "Order external identifier (maximum of 36 chars)",
                    "type": "string",
                    "example": "0f4a8504-21fb-4be6-9771-25dcf5f68f87"
                  },
                  "pair": {
                    "description": "Currency pair code",
                    "type": "string"
                  },
                  "side": {
                    "description": "Order's side (buy)",
                    "type": "string"
                  },
                  "type": {
                    "description": "Order's type (limit)",
                    "type": "string"
                  },
                  "amount": {
                    "description": "Order amount in base currency",
                    "type": "number"
                  },
                  "price": {
                    "description": "Limit price",
                    "type": "number"
                  },
                  "post_only": {
                    "description": "If set to `true`, the order will be added directly to the order book without an initial match, provided the request is valid",
                    "type": "boolean"
                  },
                  "expiration": {
                    "description": "If a valid timestamp is provided, the order will be created with an expiration date and time",
                    "type": "number"
                  },
                  "immediate_or_cancel": {
                    "description": "If set to `true`, the order will not be added to the order book after the initial match, any remaining unfilled amount will result in the order being canceled",
                    "type": "boolean"
                  },
                  "fill_or_kill": {
                    "description": "If set to `true`, the order will either be completely filled or canceled",
                    "type": "boolean"
                  },
                  "value": {
                    "description": "Order value in quote currency",
                    "type": "number"
                  },
                  "stop_price": {
                    "description": "Stop price",
                    "type": "number"
                  },
                  "distance": {
                    "description": "Price distance",
                    "type": "number"
                  },
                  "step_amount": {
                    "description": "Step amount (the ratio of amount to step_amount must be less than or equal to 10)",
                    "type": "number"
                  }
                },
                "required": [
                  "pair",
                  "side",
                  "type",
                  "amount",
                  "price",
                  "value",
                  "stop_price",
                  "distance",
                  "step_amount"
                ],
                "type": "object"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "id": {
                          "description": "Order identifier",
                          "type": "string"
                        },
                        "status": {
                          "description": "Order status (executed_completely / executed_partially / open / canceled)",
                          "type": "string"
                        },
                        "create_date": {
                          "description": "Datetime of the order creation",
                          "type": "string"
                        },
                        "external_id": {
                          "description": "External id (this is sent by the user when creating an order, and it's optional)",
                          "type": "string",
                          "example": "BEAB10B1-45B0-4999-9B2F-D2ED048D6C42"
                        },
                        "pair": {
                          "description": "Currency pair code",
                          "type": "string",
                          "example": "BTC_BRL"
                        },
                        "side": {
                          "description": "Order side (sell / buy)",
                          "type": "string"
                        },
                        "executed_amount": {
                          "description": "Executed amount",
                          "type": "number"
                        },
                        "remaining_amount": {
                          "description": "Remaining amount",
                          "type": "number"
                        },
                        "remaining_value": {
                          "description": "Remaining value",
                          "type": "number"
                        },
                        "requested_amount": {
                          "description": "Requested amount",
                          "type": "number"
                        },
                        "requested_value": {
                          "description": "Requested value",
                          "type": "number"
                        }
                      },
                      "required": [
                        "id",
                        "status",
                        "create_date",
                        "pair",
                        "side",
                        "executed_amount",
                        "remaining_amount",
                        "remaining_value",
                        "requested_amount"
                      ],
                      "type": "object",
                      "example": {
                        "id": "7155ED34-9EC4-4733-8B32-1E4319CB662F",
                        "create_date": "2024-03-27T13:27:19.853Z",
                        "executed_amount": 0,
                        "external_id": "BEAB10B1-45B0-4999-9B2F-D2ED048D6C42",
                        "pair": "BTC_BRL",
                        "remaining_amount": 10,
                        "remaining_value": 1000,
                        "requested_amount": 10,
                        "requested_value": 1000,
                        "side": "buy",
                        "status": "open"
                      }
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/orders/{id}": {
      "get": {
        "summary": "Orders - User Order by Id",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Returns the details of an order belonging to the user (by id).\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - trading_read",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "description": "This property was not properly documented",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "id": {
                          "description": "Order identifier",
                          "type": "string"
                        },
                        "create_date": {
                          "description": "Creation datetime",
                          "type": "string"
                        },
                        "executed_amount": {
                          "description": "Executed amount",
                          "type": "number"
                        },
                        "external_id": {
                          "description": "External id (this is sent by the user when creating an order, and it's optional)",
                          "type": "string"
                        },
                        "pair": {
                          "description": "Currency pair code",
                          "type": "string",
                          "example": "BTC_BRL"
                        },
                        "remaining_amount": {
                          "description": "Remaining amount",
                          "type": "number"
                        },
                        "remaining_value": {
                          "description": "Remaining value",
                          "type": "number"
                        },
                        "requested_amount": {
                          "description": "Requested amount",
                          "type": "number"
                        },
                        "requested_value": {
                          "description": "Requested value",
                          "type": "number"
                        },
                        "status": {
                          "description": "Order status (executed_completely / executed_partially / open / canceled)",
                          "type": "string"
                        },
                        "type": {
                          "description": "Order type (limit / market)",
                          "type": "string"
                        },
                        "total_value": {
                          "description": "Total value",
                          "type": "number"
                        },
                        "side": {
                          "description": "Order side (buy or sell)",
                          "type": "string"
                        },
                        "price": {
                          "description": "Price",
                          "type": "number"
                        },
                        "update_date": {
                          "description": "Datetime of the last update",
                          "type": "string"
                        },
                        "fee": {
                          "description": "Fee from the transaction",
                          "type": "number"
                        },
                        "fill_or_kill": {
                          "description": "Exclusive for StopLimit orders, it is used in stop-loss or stop-buy scenarios to initiate selling or buying when the market price reaches the specified stop price",
                          "type": "boolean"
                        },
                        "average_execution_price": {
                          "description": "Average execution price",
                          "type": "number"
                        },
                        "transactions": {
                          "description": "Trades associated with the order",
                          "items": {
                            "properties": {
                              "amount": {
                                "description": "Execution amount in cryptocurrency",
                                "type": "number"
                              },
                              "create_date": {
                                "description": "Timestamp of the execution",
                                "type": "string"
                              },
                              "fee": {
                                "description": "Fee charged for this execution",
                                "type": "number"
                              },
                              "fee_currency": {
                                "description": "Currency code in which the fee was charged",
                                "type": "string"
                              },
                              "total_value": {
                                "description": "Total execution value",
                                "type": "number"
                              },
                              "price": {
                                "description": "Execution price",
                                "type": "number"
                              }
                            },
                            "required": [
                              "amount",
                              "create_date",
                              "fee",
                              "fee_currency",
                              "total_value",
                              "price"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "id",
                        "create_date",
                        "executed_amount",
                        "pair",
                        "remaining_amount",
                        "remaining_value",
                        "requested_amount",
                        "status",
                        "type",
                        "total_value",
                        "side",
                        "price",
                        "update_date",
                        "fee",
                        "fill_or_kill",
                        "transactions"
                      ],
                      "type": "object",
                      "example": {
                        "average_execution_price": 42600,
                        "create_date": "2017-12-08T23:42:54.960Z",
                        "external_id": "C90796F2-2CC3-4797-9AC3-A16BCC6936F0",
                        "executed_amount": 0.02347418,
                        "id": "8DE12108-4643-4E9F-8425-0172F1B96876",
                        "remaining_amount": 0,
                        "requested_amount": 0.02347418,
                        "requested_value": 1000,
                        "remaining_value": 0,
                        "pair": "BTC_BRL",
                        "price": 42600,
                        "side": "buy",
                        "status": "executed_completely",
                        "fee": 0.002,
                        "total_value": 1000,
                        "type": "limit",
                        "update_date": "2017-12-13T21:48:48.817Z",
                        "transactions": [
                          {
                            "amount": 0.2,
                            "create_date": "2020-02-21T20:24:43.433Z",
                            "fee": 0.12,
                            "fee_currency": "BTC",
                            "price": 5000,
                            "total_value": 1000
                          },
                          {
                            "amount": 0.2,
                            "create_date": "2020-02-21T20:49:37.450Z",
                            "fee": 0.12,
                            "fee_currency": "BTC",
                            "price": 5000,
                            "total_value": 1000
                          }
                        ]
                      }
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/user/statement": {
      "get": {
        "summary": "User - Statement",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Lists the user's statement.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - statement_read",
        "parameters": [
          {
            "in": "query",
            "name": "start_time",
            "required": false,
            "description": "Start of datetime range (ISO-8601 format, default is 6 months ago, minimum is 2017-10-01)",
            "schema": {
              "example": "2020-01-01T03:00:00.000Z",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "end_time",
            "required": false,
            "description": "Final datetime filter in ISO-8601 format (the interval between the initial and final datetime shouldn't be greater than 6 months)",
            "schema": {
              "example": "2020-01-03T02:59:59.000Z",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "required": false,
            "description": "Number of records per page",
            "schema": {
              "example": 100,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "current_page",
            "required": false,
            "description": "Page number for pagination",
            "schema": {
              "example": 3,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "operation_id",
            "required": false,
            "description": "Filter by operation id",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "statement": {
                          "items": {
                            "properties": {
                              "amount": {
                                "description": "Transaction amount",
                                "type": "number"
                              },
                              "after_balance": {
                                "description": "Account balance after the operation",
                                "type": "number"
                              },
                              "currency": {
                                "description": "Currency code",
                                "type": "string",
                                "example": "BTC"
                              },
                              "date": {
                                "description": "Timestamp of the operation",
                                "type": "string"
                              },
                              "operation": {
                                "description": "Description of the operation (e.g., \"Buy\", \"Sell\", \"Tax over buy, ...\")",
                                "type": "string"
                              },
                              "operation_id": {
                                "description": "Id of the operation",
                                "type": "string",
                                "example": "3f7d8c29-4b1e-4f9a-b8e2-1c6a9d0e5f23"
                              }
                            },
                            "required": [
                              "amount",
                              "after_balance",
                              "currency",
                              "date",
                              "operation",
                              "operation_id"
                            ],
                            "type": "object"
                          },
                          "type": "array",
                          "example": [
                            {
                              "amount": -0.00000476,
                              "after_balance": 8605.31353851,
                              "currency": "BTC",
                              "date": "2022-01-27T18:16:10.557Z",
                              "operation": "Buy Maker Fee",
                              "operation_id": "3f7d8c29-4b1e-4f9a-b8e2-1c6a9d0e5f23"
                            },
                            {
                              "amount": 0.00119048,
                              "after_balance": 8605.31354327,
                              "currency": "BTC",
                              "date": "2022-01-27T18:16:10.557Z",
                              "operation": "Buy",
                              "operation_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
                            }
                          ]
                        },
                        "pagination": {
                          "properties": {
                            "current_page": {
                              "description": "Current page",
                              "type": "number"
                            },
                            "page_size": {
                              "description": "Page size",
                              "type": "number"
                            },
                            "registers_count": {
                              "description": "Total number of registers",
                              "type": "number"
                            },
                            "total_pages": {
                              "description": "Total number of pages",
                              "type": "number"
                            }
                          },
                          "required": [
                            "current_page",
                            "page_size",
                            "registers_count",
                            "total_pages"
                          ],
                          "type": "object",
                          "example": {
                            "current_page": 1,
                            "registers_count": 21,
                            "total_pages": 1,
                            "page_size": 100
                          }
                        }
                      },
                      "required": [
                        "statement",
                        "pagination"
                      ],
                      "type": "object"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/orders/open": {
      "get": {
        "summary": "Orders - Get User Open Orders",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Lists the user's open orders.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - trading_read",
        "parameters": [
          {
            "in": "query",
            "name": "pair",
            "required": false,
            "description": "Currency pair code",
            "schema": {
              "example": "BTC_BRL",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "side",
            "required": false,
            "description": "Order side (buy or sell)",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "required": false,
            "description": "Number of records per page",
            "schema": {
              "example": 100,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "current_page",
            "required": false,
            "description": "Page number for pagination",
            "schema": {
              "example": 3,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "c",
            "required": false,
            "description": "The `c` parameter is the cursor you should use to fetch the next page of results",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "orders": {
                          "items": {
                            "properties": {
                              "id": {
                                "description": "Order identifier",
                                "type": "string"
                              },
                              "create_date": {
                                "description": "Creation datetime",
                                "type": "string"
                              },
                              "executed_amount": {
                                "description": "Executed amount",
                                "type": "number"
                              },
                              "external_id": {
                                "description": "External id (this is sent by the user when creating an order, and it's optional)",
                                "type": "string"
                              },
                              "pair": {
                                "description": "Currency pair code",
                                "type": "string",
                                "example": "BTC_BRL"
                              },
                              "remaining_amount": {
                                "description": "Remaining amount",
                                "type": "number"
                              },
                              "remaining_value": {
                                "description": "Remaining value",
                                "type": "number"
                              },
                              "requested_amount": {
                                "description": "Requested amount",
                                "type": "number"
                              },
                              "requested_value": {
                                "description": "Requested value",
                                "type": "number"
                              },
                              "status": {
                                "description": "Order status (executed_completely / executed_partially / open / canceled)",
                                "type": "string"
                              },
                              "type": {
                                "description": "Order type (limit / market)",
                                "type": "string"
                              },
                              "total_value": {
                                "description": "Total value",
                                "type": "number"
                              },
                              "side": {
                                "description": "Order side (buy or sell)",
                                "type": "string"
                              },
                              "price": {
                                "description": "Price",
                                "type": "number"
                              },
                              "update_date": {
                                "description": "Datetime of the last update",
                                "type": "string"
                              },
                              "fee": {
                                "description": "Fee from the transaction",
                                "type": "number"
                              },
                              "fill_or_kill": {
                                "description": "Exclusive for StopLimit orders, it is used in stop-loss or stop-buy scenarios to initiate selling or buying when the market price reaches the specified stop price",
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "id",
                              "create_date",
                              "executed_amount",
                              "pair",
                              "remaining_amount",
                              "remaining_value",
                              "requested_amount",
                              "status",
                              "type",
                              "total_value",
                              "side",
                              "price",
                              "update_date",
                              "fee",
                              "fill_or_kill"
                            ],
                            "type": "object"
                          },
                          "type": "array",
                          "example": [
                            {
                              "create_date": "2017-12-08T23:42:54.960Z",
                              "executed_amount": 0.02347418,
                              "external_id": "B4A9F7F4-9C79-4921-9330-224C17260BDF",
                              "id": "857C0A3B-D70F-4256-9051-1C62FADBA8FA",
                              "pair": "BTC_BRL",
                              "price": 42600,
                              "remaining_amount": 0,
                              "remaining_value": 0,
                              "requested_amount": 0.02347418,
                              "requested_value": 1000,
                              "side": "buy",
                              "status": "executed_completely",
                              "fee": 0.004,
                              "total_value": 1000,
                              "type": "limit",
                              "update_date": "2017-12-13T21:48:48.817Z"
                            },
                            {
                              "create_date": "2017-10-20T00:26:40.403Z",
                              "executed_amount": 0.00033518,
                              "external_id": "13080055-7357-4110-81B1-981E6699FA57",
                              "id": "3ECBE371-DE24-42E8-841C-4281B3164CCE",
                              "pair": "BTC_BRL",
                              "price": 16352.12,
                              "remaining_amount": 0,
                              "remaining_value": 0,
                              "requested_amount": 0.00033518,
                              "requested_value": 5.48090358,
                              "side": "buy",
                              "status": "executed_completely",
                              "fee": 0.004,
                              "total_value": 5.48090358,
                              "type": "limit",
                              "update_date": "2017-10-20T00:26:40.467Z"
                            }
                          ]
                        },
                        "pagination": {
                          "properties": {
                            "current_page": {
                              "description": "Current page",
                              "type": "number"
                            },
                            "page_size": {
                              "description": "Page size",
                              "type": "number"
                            },
                            "registers_count": {
                              "description": "Total number of registers",
                              "type": "number"
                            },
                            "total_pages": {
                              "description": "Total number of pages",
                              "type": "number"
                            }
                          },
                          "required": [
                            "current_page",
                            "page_size",
                            "registers_count",
                            "total_pages"
                          ],
                          "type": "object",
                          "example": {
                            "current_page": 1,
                            "registers_count": 21,
                            "total_pages": 1,
                            "page_size": 100
                          }
                        },
                        "nc": {
                          "description": "Next cursor for pagination",
                          "type": "string"
                        },
                        "pc": {
                          "description": "Previous cursor for pagination",
                          "type": "string"
                        }
                      },
                      "required": [
                        "orders",
                        "pagination"
                      ],
                      "type": "object"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/orders/trades": {
      "get": {
        "summary": "Orders - Get Trades based on a order id",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Get the trades from an order.\n\n**Attention:** Due to performance concerns, this endpoint now uses cursor-based pagination. The pagination object currently included in the response is now a placeholder and will be entirely removed as of 2026-06-01. The parameter current_page is also a placeholder and will be removed at the same time. Please update your integration accordingly and refer to the documentation for the correct pagination handling.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - trading_read",
        "parameters": [
          {
            "in": "query",
            "name": "order_id",
            "required": true,
            "description": "Order id from a valid order",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "required": false,
            "description": "Number of records per page",
            "schema": {
              "example": 100,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "c",
            "required": false,
            "description": "The `c` parameter is the cursor you should use to fetch the next page of results",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "trades": {
                          "items": {
                            "properties": {
                              "amount": {
                                "description": "Amount",
                                "type": "number"
                              },
                              "id": {
                                "description": "Trade id",
                                "type": "string"
                              },
                              "price": {
                                "description": "Price",
                                "type": "number"
                              },
                              "timestamp": {
                                "description": "Current timestamp",
                                "type": "number",
                                "example": 1675708481219
                              },
                              "total_value": {
                                "description": "Total value",
                                "type": "number"
                              },
                              "date": {
                                "description": "Trade date",
                                "type": "string"
                              },
                              "side": {
                                "description": "Order side (buy or sell)",
                                "type": "string"
                              },
                              "type": {
                                "description": "Order type (limit or market)",
                                "type": "string"
                              },
                              "fee": {
                                "description": "Exchange fee",
                                "type": "number"
                              },
                              "fee_currency": {
                                "description": "Code of the currency used to charge the fee",
                                "type": "string",
                                "example": "BTC"
                              },
                              "pair_code": {
                                "description": "Currency pair code",
                                "type": "string",
                                "example": "BTC_BRL"
                              },
                              "taker_or_maker": {
                                "description": "Provides or removes liquidity (maker or taker)",
                                "type": "string",
                                "example": "maker"
                              },
                              "maker_order_id": {
                                "description": "Maker order id",
                                "type": "string"
                              },
                              "taker_order_id": {
                                "description": "Taker order id",
                                "type": "string"
                              }
                            },
                            "required": [
                              "amount",
                              "id",
                              "price",
                              "timestamp",
                              "total_value",
                              "date",
                              "side",
                              "type",
                              "fee",
                              "fee_currency",
                              "pair_code",
                              "taker_or_maker",
                              "maker_order_id",
                              "taker_order_id"
                            ],
                            "type": "object"
                          },
                          "type": "array",
                          "example": [
                            {
                              "amount": 0.00270754,
                              "date": "2019-04-02T11:22:22.403Z",
                              "fee": 0.25,
                              "fee_currency": "USDC",
                              "id": "488F9395-47ED-4924-98AB-C860E1733A03",
                              "maker_order_id": "1FD30735-E055-4200-AD3D-007B02A5BA92",
                              "pair_code": "BTC_USDC",
                              "taker_or_maker": "maker",
                              "price": 18550,
                              "side": "sell",
                              "taker_order_id": "DBC6D4AF-D454-46DF-80EC-E19528A0FB25",
                              "timestamp": 1675708481219,
                              "type": "market",
                              "total_value": 50.22
                            },
                            {
                              "amount": 0.0026938,
                              "date": "2019-04-02T11:25:41.512Z",
                              "fee": 0.00001347,
                              "fee_currency": "BTC",
                              "id": "C79ED37D-DC21-4D54-8AFC-4262347E3F8D",
                              "maker_order_id": "F49F5BD8-3F5B-4364-BCEE-F36F62DB966A",
                              "pair_code": "BTC_USDC",
                              "taker_or_maker": "taker",
                              "price": 18550,
                              "side": "buy",
                              "taker_order_id": "FEAB5CEC-7F9E-4F95-B67D-9E8D5C739BE3",
                              "timestamp": 1675708481220,
                              "type": "market",
                              "total_value": 49.96
                            }
                          ]
                        },
                        "pagination": {
                          "properties": {
                            "current_page": {
                              "description": "Current page",
                              "type": "number"
                            },
                            "page_size": {
                              "description": "Page size",
                              "type": "number"
                            },
                            "registers_count": {
                              "description": "Total number of registers",
                              "type": "number"
                            },
                            "total_pages": {
                              "description": "Total number of pages",
                              "type": "number"
                            }
                          },
                          "required": [
                            "current_page",
                            "page_size",
                            "registers_count",
                            "total_pages"
                          ],
                          "type": "object",
                          "example": {
                            "current_page": 1,
                            "registers_count": 21,
                            "total_pages": 1,
                            "page_size": 100
                          }
                        },
                        "nc": {
                          "description": "This is the next cursor, use its value with the `c` parameter to retrieve the next page",
                          "type": "string"
                        },
                        "pc": {
                          "description": "This is the previous cursor, use its value with the `c` parameter to retrieve the previous page",
                          "type": "string"
                        }
                      },
                      "required": [
                        "trades",
                        "pagination"
                      ],
                      "type": "object"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/orders/cancel": {
      "post": {
        "summary": "Orders - Cancel Order",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Cancels an active order by its `id` using POST.\n\nPublishes updates in the following websocket topics: [`orderbook`](#operation/orderbook), [`balance`](#operation/balance) and [`order_status`](#operation/order_status).\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - trading_write",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "id": {
                    "description": "Order `id`",
                    "type": "string",
                    "example": "7155ED34-9EC4-4733-8B32-1E4319CB662F"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "id": {
                          "description": "Order identifier",
                          "type": "string"
                        },
                        "create_date": {
                          "description": "Datetime of the order creation",
                          "type": "string"
                        },
                        "executed_amount": {
                          "description": "Executed amount",
                          "type": "number"
                        },
                        "remaining_amount": {
                          "description": "Remaining amount",
                          "type": "number"
                        },
                        "remaining_value": {
                          "description": "Remaining value",
                          "type": "number"
                        },
                        "requested_amount": {
                          "description": "Requested amount",
                          "type": "number"
                        },
                        "side": {
                          "description": "Order side (sell / buy)",
                          "type": "string"
                        },
                        "status": {
                          "description": "Order status (executed_completely / executed_partially / open / canceled)",
                          "type": "string"
                        },
                        "total_value": {
                          "description": "Total value",
                          "type": "number"
                        },
                        "type": {
                          "description": "Order type (limit / market)",
                          "type": "string"
                        },
                        "price": {
                          "description": "Price",
                          "type": "number"
                        },
                        "update_date": {
                          "description": "Datetime of the last update",
                          "type": "string"
                        },
                        "pair": {
                          "description": "Currency pair code",
                          "type": "string",
                          "example": "BTC_BRL"
                        },
                        "external_id": {
                          "description": "External id (this is sent by the user when creating an order, and it's optional)",
                          "type": "string",
                          "example": "BEAB10B1-45B0-4999-9B2F-D2ED048D6C42"
                        }
                      },
                      "required": [
                        "id",
                        "create_date",
                        "executed_amount",
                        "remaining_amount",
                        "remaining_value",
                        "requested_amount",
                        "status",
                        "total_value",
                        "price",
                        "update_date",
                        "pair"
                      ],
                      "type": "object",
                      "example": {
                        "create_date": "2017-12-08T23:42:54.960Z",
                        "executed_amount": 0.02347418,
                        "external_id": "B4A9F7F4-9C79-4921-9330-224C17260BDF",
                        "id": "7155ED34-9EC4-4733-8B32-1E4319CB662F",
                        "pair": "BTC_BRL",
                        "price": 42600,
                        "remaining_amount": 0.1,
                        "remaining_value": 0.6,
                        "requested_amount": 0.02347418,
                        "requested_value": 1000,
                        "side": "buy",
                        "status": "canceled",
                        "total_value": 1000,
                        "type": "limit",
                        "update_date": "2017-12-13T21:48:48.817Z"
                      }
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/orders/by-external-id": {
      "delete": {
        "summary": "Orders - Cancel Order By External Id",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Cancels an active order by its `external_id`.\n\nPublishes updates in the following websocket topics: [`orderbook`](#operation/orderbook), [`balance`](#operation/balance) and [`order_status`](#operation/order_status).\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - trading_write",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "external_id": {
                    "description": "Order `external_id`",
                    "type": "string",
                    "example": "0F4A8504-21FB-4BE6-9771-25DCF5F68F87"
                  }
                },
                "required": [
                  "external_id"
                ],
                "type": "object"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "id": {
                          "description": "Order identifier",
                          "type": "string"
                        },
                        "create_date": {
                          "description": "Datetime of the order creation",
                          "type": "string"
                        },
                        "executed_amount": {
                          "description": "Executed amount",
                          "type": "number"
                        },
                        "remaining_amount": {
                          "description": "Remaining amount",
                          "type": "number"
                        },
                        "remaining_value": {
                          "description": "Remaining value",
                          "type": "number"
                        },
                        "requested_amount": {
                          "description": "Requested amount",
                          "type": "number"
                        },
                        "side": {
                          "description": "Order side (sell / buy)",
                          "type": "string"
                        },
                        "status": {
                          "description": "Order status (executed_completely / executed_partially / open / canceled)",
                          "type": "string"
                        },
                        "total_value": {
                          "description": "Total value",
                          "type": "number"
                        },
                        "type": {
                          "description": "Order type (limit / market)",
                          "type": "string"
                        },
                        "price": {
                          "description": "Price",
                          "type": "number"
                        },
                        "update_date": {
                          "description": "Datetime of the last update",
                          "type": "string"
                        },
                        "pair": {
                          "description": "Currency pair code",
                          "type": "string",
                          "example": "BTC_BRL"
                        },
                        "external_id": {
                          "description": "External id (this is sent by the user when creating an order, and it's optional)",
                          "type": "string",
                          "example": "BEAB10B1-45B0-4999-9B2F-D2ED048D6C42"
                        }
                      },
                      "required": [
                        "id",
                        "create_date",
                        "executed_amount",
                        "remaining_amount",
                        "remaining_value",
                        "requested_amount",
                        "status",
                        "total_value",
                        "price",
                        "update_date",
                        "pair"
                      ],
                      "type": "object",
                      "example": {
                        "create_date": "2017-12-08T23:42:54.960Z",
                        "executed_amount": 0.02347418,
                        "external_id": "B4A9F7F4-9C79-4921-9330-224C17260BDF",
                        "id": "7155ED34-9EC4-4733-8B32-1E4319CB662F",
                        "pair": "BTC_BRL",
                        "price": 42600,
                        "remaining_amount": 0.1,
                        "remaining_value": 0.6,
                        "requested_amount": 0.02347418,
                        "requested_value": 1000,
                        "side": "buy",
                        "status": "canceled",
                        "total_value": 1000,
                        "type": "limit",
                        "update_date": "2017-12-13T21:48:48.817Z"
                      }
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/orders/cancel-by-external-id": {
      "post": {
        "summary": "Orders - Cancel Order By External Id",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Cancels an active order by its `external_id` using POST.\n\nPublishes updates in the following websocket topics: [`orderbook`](#operation/orderbook), [`balance`](#operation/balance) and [`order_status`](#operation/order_status).\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - trading_write",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "external_id": {
                    "description": "Order `external_id`",
                    "type": "string",
                    "example": "0F4A8504-21FB-4BE6-9771-25DCF5F68F87"
                  }
                },
                "required": [
                  "external_id"
                ],
                "type": "object"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "id": {
                          "description": "Order identifier",
                          "type": "string"
                        },
                        "create_date": {
                          "description": "Datetime of the order creation",
                          "type": "string"
                        },
                        "executed_amount": {
                          "description": "Executed amount",
                          "type": "number"
                        },
                        "remaining_amount": {
                          "description": "Remaining amount",
                          "type": "number"
                        },
                        "remaining_value": {
                          "description": "Remaining value",
                          "type": "number"
                        },
                        "requested_amount": {
                          "description": "Requested amount",
                          "type": "number"
                        },
                        "side": {
                          "description": "Order side (sell / buy)",
                          "type": "string"
                        },
                        "status": {
                          "description": "Order status (executed_completely / executed_partially / open / canceled)",
                          "type": "string"
                        },
                        "total_value": {
                          "description": "Total value",
                          "type": "number"
                        },
                        "type": {
                          "description": "Order type (limit / market)",
                          "type": "string"
                        },
                        "price": {
                          "description": "Price",
                          "type": "number"
                        },
                        "update_date": {
                          "description": "Datetime of the last update",
                          "type": "string"
                        },
                        "pair": {
                          "description": "Currency pair code",
                          "type": "string",
                          "example": "BTC_BRL"
                        },
                        "external_id": {
                          "description": "External id (this is sent by the user when creating an order, and it's optional)",
                          "type": "string",
                          "example": "BEAB10B1-45B0-4999-9B2F-D2ED048D6C42"
                        }
                      },
                      "required": [
                        "id",
                        "create_date",
                        "executed_amount",
                        "remaining_amount",
                        "remaining_value",
                        "requested_amount",
                        "status",
                        "total_value",
                        "price",
                        "update_date",
                        "pair"
                      ],
                      "type": "object",
                      "example": {
                        "create_date": "2017-12-08T23:42:54.960Z",
                        "executed_amount": 0.02347418,
                        "external_id": "B4A9F7F4-9C79-4921-9330-224C17260BDF",
                        "id": "7155ED34-9EC4-4733-8B32-1E4319CB662F",
                        "pair": "BTC_BRL",
                        "price": 42600,
                        "remaining_amount": 0.1,
                        "remaining_value": 0.6,
                        "requested_amount": 0.02347418,
                        "requested_value": 1000,
                        "side": "buy",
                        "status": "canceled",
                        "total_value": 1000,
                        "type": "limit",
                        "update_date": "2017-12-13T21:48:48.817Z"
                      }
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/public/tickers": {
      "get": {
        "summary": "Public - Tickers",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Returns a 24 hour window statistics for all pairs.\n\n---\n\n**Authorization**\n\n- No API key required — this endpoint is public.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "items": {
                        "properties": {
                          "pair": {
                            "description": "Currency pair code",
                            "type": "string",
                            "example": "BTC_BRL"
                          },
                          "price_change_percent_24h": {
                            "description": "24-hr % price change of market pair",
                            "type": "string"
                          },
                          "high": {
                            "description": "Highest price in the last 24 hours",
                            "type": "number"
                          },
                          "low": {
                            "description": "Lowest price in the last 24 hours",
                            "type": "number"
                          },
                          "volume": {
                            "description": "Volume in the last 24 hours",
                            "type": "number"
                          },
                          "trades_quantity": {
                            "description": "Trades quantity in the last 24 hours",
                            "type": "number"
                          },
                          "last": {
                            "description": "Price of the last trade",
                            "type": "number"
                          },
                          "bid": {
                            "description": "Price of the current best buy order in the orderbook",
                            "type": "number"
                          },
                          "ask": {
                            "description": "Price of the current best sell order in the orderbook",
                            "type": "number"
                          },
                          "date": {
                            "description": "Timestamp of the last update (UTC)",
                            "type": "string"
                          },
                          "first": {
                            "description": "Price of the first trade in the last 24 hours window",
                            "type": "number"
                          },
                          "is_frozen": {
                            "description": "Whether the market is currently frozen (disabled)",
                            "type": "boolean"
                          },
                          "base_code": {
                            "description": "Base currency code",
                            "type": "string"
                          },
                          "base_id": {
                            "description": "Base currency ID",
                            "type": "string"
                          },
                          "quote_id": {
                            "description": "Quote currency ID",
                            "type": "string"
                          },
                          "quote_code": {
                            "description": "Quote currency code",
                            "type": "string"
                          },
                          "quote_volume": {
                            "description": "Quote currency volume",
                            "type": "number"
                          }
                        },
                        "required": [
                          "pair",
                          "price_change_percent_24h",
                          "high",
                          "low",
                          "volume",
                          "trades_quantity",
                          "last",
                          "bid",
                          "ask",
                          "date",
                          "first",
                          "is_frozen",
                          "base_code",
                          "base_id",
                          "quote_id",
                          "quote_code",
                          "quote_volume"
                        ],
                        "type": "object"
                      },
                      "type": "array",
                      "example": [
                        {
                          "ask": 250000.15,
                          "base_code": "BTC",
                          "base_id": "9A5E2EF4-9547-418A-8EC6-C6EADBB8B32F",
                          "bid": 240000.15,
                          "date": "2017-10-20T00:00:00.000Z",
                          "first": 245000.15,
                          "high": 250000.15,
                          "is_frozen": false,
                          "last": 245000.15,
                          "low": 200000.15,
                          "pair": "BTC_BRL",
                          "price_change_percent_24h": "-12",
                          "quote_code": "BRL",
                          "quote_id": "48898138-8623-4555-9468-B1A1505A9352",
                          "quote_volume": 150.1,
                          "trades_quantity": 123,
                          "volume": 123.12345678
                        },
                        {
                          "ask": 15600.12,
                          "base_code": "ETH",
                          "base_id": "13A4B83B-E74F-425C-BC0A-03A9C0F29FAD",
                          "bid": 15400.12,
                          "date": "2017-10-20T00:00:00.000Z",
                          "first": 15999.15,
                          "high": 15999.12,
                          "is_frozen": false,
                          "last": 15500.12,
                          "low": 15000.12,
                          "pair": "ETH_BRL",
                          "price_change_percent_24h": "-12",
                          "quote_id": "48898138-8623-4555-9468-B1A1505A9352",
                          "quote_code": "BRL",
                          "quote_volume": 180.1,
                          "trades_quantity": 123,
                          "volume": 123.12345678
                        }
                      ]
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/public/tickers/{pair}": {
      "get": {
        "summary": "Public - Ticker By Pair",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Returns a 24 hour window statistics for a given pair.\n\n---\n\n**Authorization**\n\n- No API key required — this endpoint is public.",
        "parameters": [
          {
            "in": "path",
            "name": "pair",
            "required": true,
            "description": "This property was not properly documented",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "high": {
                          "description": "Highest price in the last 24 hours",
                          "type": "number"
                        },
                        "low": {
                          "description": "Lowest price in the last 24 hours",
                          "type": "number"
                        },
                        "volume": {
                          "description": "Volume in the last 24 hours",
                          "type": "number"
                        },
                        "trades_quantity": {
                          "description": "Number of trades in the last 24 hours",
                          "type": "number"
                        },
                        "last": {
                          "description": "Price of the most recent trade",
                          "type": "number"
                        },
                        "bid": {
                          "description": "Best bid price (highest price a buyer is willing to pay)",
                          "type": "number"
                        },
                        "ask": {
                          "description": "Best ask price (lowest price a seller is willing to accept)",
                          "type": "number"
                        },
                        "date": {
                          "description": "Timestamp of the last update (UTC)",
                          "type": "string"
                        },
                        "first": {
                          "description": "Price of the first trade in the last 24 hours window",
                          "type": "number"
                        },
                        "is_frozen": {
                          "description": "Whether the market is currently frozen (disabled)",
                          "type": "boolean"
                        },
                        "base_code": {
                          "description": "Base currency code",
                          "type": "string"
                        },
                        "base_id": {
                          "description": "Base currency ID",
                          "type": "string"
                        },
                        "quote_id": {
                          "description": "Quote currency ID",
                          "type": "string"
                        },
                        "quote_code": {
                          "description": "Quote currency code",
                          "type": "string"
                        },
                        "quote_volume": {
                          "description": "Quote currency volume",
                          "type": "number"
                        },
                        "price_change_percent_24h": {
                          "description": "24-hr % price change of market pair",
                          "type": "string"
                        }
                      },
                      "required": [
                        "high",
                        "low",
                        "volume",
                        "trades_quantity",
                        "last",
                        "bid",
                        "ask",
                        "date",
                        "first",
                        "is_frozen",
                        "base_code",
                        "base_id",
                        "quote_id",
                        "quote_code",
                        "quote_volume",
                        "price_change_percent_24h"
                      ],
                      "type": "object",
                      "example": {
                        "ask": 95629,
                        "base_code": "BTC",
                        "base_id": "9A5E2EF4-9547-418A-8EC6-C6EADBB8B32F",
                        "bid": 94171,
                        "date": "2022-11-11T01:31:35.820Z",
                        "first": 98444,
                        "high": 98444,
                        "is_frozen": false,
                        "last": 94311,
                        "low": 85034,
                        "pair": "BTC_BRL",
                        "price_change_percent_24h": "-12",
                        "quote_id": "48898138-8623-4555-9468-B1A1505A9352",
                        "quote_code": "BRL",
                        "quote_volume": 150.1,
                        "trades_quantity": 1199,
                        "volume": 27.26776846
                      }
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/public/orders/level-3": {
      "get": {
        "summary": "Public - Orderbook Level 3",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Returns the level 3 orderbook.\n\n---\n\n**Authorization**\n\n- No API key required — this endpoint is public.",
        "parameters": [
          {
            "in": "query",
            "name": "pair",
            "required": true,
            "description": "Currency pair code",
            "schema": {
              "example": "BTC_BRL",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Maximum number of records to return per request",
            "schema": {
              "example": 25,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "timestamp": {
                          "description": "Current timestamp",
                          "type": "number",
                          "example": 1675708481219
                        },
                        "asks": {
                          "description": "Sell orders",
                          "items": {
                            "properties": {
                              "amount": {
                                "description": "Currency amount",
                                "type": "number"
                              },
                              "id": {
                                "description": "Order id",
                                "type": "string"
                              },
                              "price": {
                                "description": "Price",
                                "type": "number"
                              }
                            },
                            "required": [
                              "amount",
                              "id",
                              "price"
                            ],
                            "type": "object"
                          },
                          "type": "array",
                          "example": [
                            {
                              "amount": 0.01187517,
                              "id": "554F2D70-04B9-4E26-9548-9C35B025A018",
                              "price": 14704.45
                            },
                            {
                              "amount": 1,
                              "id": "C1C5DA8E-A069-4E20-87D1-12B19426A013",
                              "price": 1873.48
                            }
                          ]
                        },
                        "bids": {
                          "description": "Buy orders",
                          "items": {
                            "properties": {
                              "amount": {
                                "description": "Currency amount",
                                "type": "number"
                              },
                              "id": {
                                "description": "Order id",
                                "type": "string"
                              },
                              "price": {
                                "description": "Price",
                                "type": "number"
                              }
                            },
                            "required": [
                              "amount",
                              "id",
                              "price"
                            ],
                            "type": "object"
                          },
                          "type": "array",
                          "example": [
                            {
                              "amount": 0.46097295,
                              "id": "E6D05F51-D79B-47CF-84C5-B157120EBC25",
                              "price": 14650.25
                            },
                            {
                              "amount": 1,
                              "id": "CE743407-66BE-4F4C-AD0E-AB376468C5F6",
                              "price": 1610.15
                            }
                          ]
                        },
                        "hash": {
                          "description": "Hash of asks and bids",
                          "type": "string",
                          "example": "16757084812196786445"
                        }
                      },
                      "required": [
                        "timestamp",
                        "asks",
                        "bids",
                        "hash"
                      ],
                      "type": "object"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/public/orders/level-2": {
      "get": {
        "summary": "Public - Orderbook Level 2",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Returns the level 2 orderbook.\n\n---\n\n**Authorization**\n\n- No API key required — this endpoint is public.",
        "parameters": [
          {
            "in": "query",
            "name": "pair",
            "required": true,
            "description": "Currency pair code",
            "schema": {
              "example": "BTC_BRL",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Maximum number of records to return per request. Can specify 'max' to use the service maximum.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "timestamp": {
                          "description": "Current timestamp",
                          "type": "number",
                          "example": 1675708481219
                        },
                        "asks": {
                          "description": "Sell orders",
                          "items": {
                            "properties": {
                              "amount": {
                                "description": "Amount",
                                "type": "number"
                              },
                              "price": {
                                "description": "Price",
                                "type": "number"
                              }
                            },
                            "required": [
                              "amount",
                              "price"
                            ],
                            "type": "object"
                          },
                          "type": "array",
                          "example": [
                            {
                              "amount": 0.01187517,
                              "price": 14704.45
                            },
                            {
                              "amount": 1,
                              "price": 1873.48
                            }
                          ]
                        },
                        "bids": {
                          "description": "Buy orders",
                          "items": {
                            "properties": {
                              "amount": {
                                "description": "Amount",
                                "type": "number"
                              },
                              "price": {
                                "description": "Price",
                                "type": "number"
                              }
                            },
                            "required": [
                              "amount",
                              "price"
                            ],
                            "type": "object"
                          },
                          "type": "array",
                          "example": [
                            {
                              "amount": 0.46097295,
                              "price": 14650.25
                            },
                            {
                              "amount": 1,
                              "price": 1610.15
                            }
                          ]
                        },
                        "hash": {
                          "description": "Hash of asks and bids",
                          "type": "string",
                          "example": "16757084812196786445"
                        }
                      },
                      "required": [
                        "timestamp",
                        "asks",
                        "bids",
                        "hash"
                      ],
                      "type": "object"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/public/trades": {
      "get": {
        "summary": "Public - Trades",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Lists the trades history based on the filtering criteria.\n\n**Attention:** Due to performance concerns, this endpoint now uses cursor-based pagination. The pagination object currently included in the response is now a placeholder and will be entirely removed as of 2026-06-01. The parameter current_page is also a placeholder and will be removed at the same time. Please update your integration accordingly and refer to the documentation for the correct pagination handling.\n\n---\n\n**Authorization**\n\n- No API key required — this endpoint is public.",
        "parameters": [
          {
            "in": "query",
            "name": "pair",
            "required": true,
            "description": "Currency pair code",
            "schema": {
              "example": "BTC_BRL",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "start_time",
            "required": false,
            "description": "Initial datetime filter in ISO-8601 format",
            "schema": {
              "example": "2020-01-01T03:00:00.000Z",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "end_time",
            "required": false,
            "description": "Final datetime filter in ISO-8601 format",
            "schema": {
              "example": "2020-01-03T02:59:59.000Z",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "required": false,
            "description": "Number of records per page",
            "schema": {
              "example": 100,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "current_page",
            "required": false,
            "description": "Page number for pagination",
            "schema": {
              "example": 3,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "c",
            "required": false,
            "description": "The `c` parameter is the cursor you should use to fetch the next page of results",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "trades": {
                          "items": {
                            "properties": {
                              "amount": {
                                "description": "Amount",
                                "type": "number"
                              },
                              "date": {
                                "description": "Trade date (UTC format)",
                                "type": "string"
                              },
                              "id": {
                                "description": "Trade id",
                                "type": "string"
                              },
                              "maker_order_id": {
                                "description": "Maker order id",
                                "type": "string"
                              },
                              "maker_side": {
                                "description": "Maker order side (sell / buy)",
                                "type": "string"
                              },
                              "maker_type": {
                                "description": "Maker order type (market / limit)",
                                "type": "string"
                              },
                              "price": {
                                "description": "Price",
                                "type": "number"
                              },
                              "pair": {
                                "description": "Currency pair code",
                                "type": "string",
                                "example": "BTC_BRL"
                              },
                              "taker_order_id": {
                                "description": "Taker order id",
                                "type": "string"
                              },
                              "taker_side": {
                                "description": "Taker order side (sell / buy)",
                                "type": "string"
                              },
                              "taker_type": {
                                "description": "Taker order type (market / limit)",
                                "type": "string"
                              },
                              "timestamp": {
                                "description": "Current timestamp",
                                "type": "number",
                                "example": 1675708481219
                              },
                              "total_value": {
                                "description": "Total value",
                                "type": "number"
                              }
                            },
                            "required": [
                              "amount",
                              "date",
                              "id",
                              "maker_order_id",
                              "maker_side",
                              "maker_type",
                              "price",
                              "pair",
                              "taker_order_id",
                              "taker_side",
                              "taker_type",
                              "timestamp",
                              "total_value"
                            ],
                            "type": "object"
                          },
                          "type": "array",
                          "example": [
                            {
                              "amount": 0.2404764,
                              "date": "2019-01-03T02:27:33.947Z",
                              "id": "2B222F22-5235-45FA-97FC-E9DBFA2575EE",
                              "maker_order_id": "F49F5BD8-3F5B-4364-BCEE-F36F62DB966A",
                              "maker_side": "buy",
                              "maker_type": "limit",
                              "pair": "BTC_BRL",
                              "price": 15160,
                              "taker_order_id": "FEAB5CEC-7F9E-4F95-B67D-9E8D5C739BE3",
                              "taker_side": "sell",
                              "taker_type": "market",
                              "timestamp": 1675708481219,
                              "total_value": 3638.4
                            },
                            {
                              "amount": 0.00563617,
                              "date": "2019-01-03T02:27:33.943Z",
                              "id": "CDC492A5-B1BF-4353-BE7A-43F51C371388",
                              "maker_order_id": "53BF30D2-901C-43D5-B0D1-62CD05DFD02A",
                              "maker_side": "buy",
                              "maker_type": "limit",
                              "pair": "BTC_BRL",
                              "price": 15163,
                              "taker_order_id": "E4B1B38D-C871-4476-9314-3DC23292F45E",
                              "taker_side": "sell",
                              "taker_type": "limit",
                              "timestamp": 1675708481220,
                              "total_value": 84.91
                            },
                            {
                              "amount": 0.00680154,
                              "date": "2019-01-03T02:27:33.940Z",
                              "id": "910AA20F-211F-4755-90A7-94227DB407D8",
                              "maker_order_id": "1FD30735-E055-4200-AD3D-007B02A5BA92",
                              "maker_side": "buy",
                              "maker_type": "limit",
                              "pair": "BTC_BRL",
                              "price": 15163.03,
                              "taker_order_id": "DBC6D4AF-D454-46DF-80EC-E19528A0FB25",
                              "taker_side": "sell",
                              "taker_type": "limit",
                              "timestamp": 1675708481221,
                              "total_value": 104.1
                            }
                          ]
                        },
                        "pagination": {
                          "properties": {
                            "current_page": {
                              "description": "Current page",
                              "type": "number"
                            },
                            "page_size": {
                              "description": "Page size",
                              "type": "number"
                            },
                            "registers_count": {
                              "description": "Total number of registers",
                              "type": "number"
                            },
                            "total_pages": {
                              "description": "Total number of pages",
                              "type": "number"
                            }
                          },
                          "required": [
                            "current_page",
                            "page_size",
                            "registers_count",
                            "total_pages"
                          ],
                          "type": "object",
                          "example": {
                            "current_page": 1,
                            "registers_count": 21,
                            "total_pages": 1,
                            "page_size": 100
                          }
                        },
                        "nc": {
                          "description": "This is the next cursor, use its value with the `c` parameter to retrieve the next page",
                          "type": "string"
                        },
                        "pc": {
                          "description": "This is the previous cursor, use its value with the `c` parameter to retrieve the previous page",
                          "type": "string"
                        }
                      },
                      "required": [
                        "trades"
                      ],
                      "type": "object"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/public/pairs": {
      "get": {
        "summary": "Public - Pairs",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Lists the active currency pairs available in the platform.\n\n---\n\n**Authorization**\n\n- No API key required — this endpoint is public.",
        "parameters": [
          {
            "in": "query",
            "name": "pair",
            "required": false,
            "description": "Currency pair code",
            "schema": {
              "example": "BTC_BRL",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "countries",
            "required": false,
            "description": "Countries (One or many, use \",\" to separate)",
            "schema": {
              "example": "BR,AR",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "items": {
                        "properties": {
                          "amount_tick": {
                            "description": "Smallest amount increment allowed",
                            "type": "number"
                          },
                          "base_decimal_places": {
                            "description": "Number of decimal places for the base currency (the asset being bought or sold)",
                            "type": "number"
                          },
                          "base": {
                            "description": "Base currency code",
                            "type": "string"
                          },
                          "base_name": {
                            "description": "Base currency full name",
                            "type": "string"
                          },
                          "quote": {
                            "description": "Quote currency code",
                            "type": "string"
                          },
                          "quote_name": {
                            "description": "Quote currency full name",
                            "type": "string"
                          },
                          "symbol": {
                            "description": "Currency pair code (format: BASE_QUOTE)",
                            "type": "string"
                          },
                          "enabled": {
                            "description": "Whether the pair is currently available for trading",
                            "type": "boolean"
                          },
                          "min_amount": {
                            "description": "Minimum order amount in base currency",
                            "type": "number"
                          },
                          "price_tick": {
                            "description": "Smallest price increment allowed",
                            "type": "number"
                          },
                          "quote_decimal_places": {
                            "description": "Number of decimal places for the quote currency (the currency used to price the base)",
                            "type": "number"
                          },
                          "min_value": {
                            "description": "Minimum order value in quote currency",
                            "type": "number"
                          },
                          "countries": {
                            "description": "Available countries",
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "max_price_variation": {
                            "description": "Maximum price variation (in percentage), applicable either upward or downward, relative to the best price in the order book (e.g., `10` means `10%`)",
                            "type": "number"
                          }
                        },
                        "required": [
                          "amount_tick",
                          "base_decimal_places",
                          "base",
                          "base_name",
                          "quote",
                          "quote_name",
                          "symbol",
                          "enabled",
                          "min_amount",
                          "price_tick",
                          "quote_decimal_places",
                          "min_value",
                          "countries"
                        ],
                        "type": "object",
                        "example": {
                          "amount_tick": 0.0001,
                          "base_decimal_places": 4,
                          "base": "BTC",
                          "base_name": "Bitcoin",
                          "enabled": true,
                          "min_amount": 0.0005,
                          "min_value": 10,
                          "price_tick": 1,
                          "quote_decimal_places": 0,
                          "quote": "BRL",
                          "quote_name": "Brazilian real",
                          "symbol": "BTC_BRL",
                          "countries": [
                            "BR"
                          ],
                          "max_price_variation": 10
                        }
                      },
                      "type": "array"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/user/trades": {
      "get": {
        "summary": "User - Get User Trades",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Lists the user's trades.\n\n**Attention:** Due to performance concerns, this endpoint now uses cursor-based pagination. The pagination object currently included in the response is now a placeholder and will be entirely removed as of 2026-06-01. The parameter current_page is also a placeholder and will be removed at the same time. Please update your integration accordingly and refer to the documentation for the correct pagination handling.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - trading_read",
        "parameters": [
          {
            "in": "query",
            "name": "pair",
            "required": true,
            "description": "Currency pair code",
            "schema": {
              "example": "BTC_BRL",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "start_date",
            "required": false,
            "description": "Initial date filter in ISO-8601 format (shouldn't be before 2017-10-01)",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "end_date",
            "required": false,
            "description": "Final date filter in ISO-8601 format",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "required": false,
            "description": "Number of records per page",
            "schema": {
              "example": 100,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "current_page",
            "required": false,
            "description": "Page number for pagination",
            "schema": {
              "example": 3,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "order_id",
            "required": false,
            "description": "Order id",
            "schema": {
              "example": "F49F5BD8-3F5B-4364-BCEE-F36F62DB966A",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "external_id",
            "required": false,
            "description": "External id",
            "schema": {
              "example": "90FcPa1Zm75",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "c",
            "required": false,
            "description": "The `c` parameter is the cursor you should use to fetch the next page of results",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "trades": {
                          "items": {
                            "properties": {
                              "amount": {
                                "description": "Amount",
                                "type": "number"
                              },
                              "id": {
                                "description": "Trade id",
                                "type": "string"
                              },
                              "price": {
                                "description": "Price",
                                "type": "number"
                              },
                              "timestamp": {
                                "description": "Current timestamp",
                                "type": "number",
                                "example": 1675708481219
                              },
                              "total_value": {
                                "description": "Total value",
                                "type": "number"
                              },
                              "date": {
                                "description": "Trade date",
                                "type": "string"
                              },
                              "side": {
                                "description": "Order side (buy or sell)",
                                "type": "string"
                              },
                              "type": {
                                "description": "Order type (limit or market)",
                                "type": "string"
                              },
                              "fee": {
                                "description": "Exchange fee",
                                "type": "number"
                              },
                              "fee_currency": {
                                "description": "Code of the currency used to charge the fee",
                                "type": "string",
                                "example": "BTC"
                              },
                              "pair_code": {
                                "description": "Currency pair code",
                                "type": "string",
                                "example": "BTC_BRL"
                              },
                              "taker_or_maker": {
                                "description": "Provides or removes liquidity (maker or taker)",
                                "type": "string",
                                "example": "maker"
                              },
                              "maker_order_id": {
                                "description": "Maker order id",
                                "type": "string"
                              },
                              "taker_order_id": {
                                "description": "Taker order id",
                                "type": "string"
                              }
                            },
                            "required": [
                              "amount",
                              "id",
                              "price",
                              "timestamp",
                              "total_value",
                              "date",
                              "side",
                              "type",
                              "fee",
                              "fee_currency",
                              "pair_code",
                              "taker_or_maker",
                              "maker_order_id",
                              "taker_order_id"
                            ],
                            "type": "object"
                          },
                          "type": "array",
                          "example": [
                            {
                              "amount": 0.00270754,
                              "date": "2019-04-02T11:22:22.403Z",
                              "fee": 0.25,
                              "fee_currency": "USDC",
                              "id": "488F9395-47ED-4924-98AB-C860E1733A03",
                              "maker_order_id": "1FD30735-E055-4200-AD3D-007B02A5BA92",
                              "pair_code": "BTC_USDC",
                              "taker_or_maker": "maker",
                              "price": 18550,
                              "side": "sell",
                              "taker_order_id": "DBC6D4AF-D454-46DF-80EC-E19528A0FB25",
                              "timestamp": 1675708481219,
                              "type": "market",
                              "total_value": 50.22
                            },
                            {
                              "amount": 0.0026938,
                              "date": "2019-04-02T11:25:41.512Z",
                              "fee": 0.00001347,
                              "fee_currency": "BTC",
                              "id": "C79ED37D-DC21-4D54-8AFC-4262347E3F8D",
                              "maker_order_id": "F49F5BD8-3F5B-4364-BCEE-F36F62DB966A",
                              "pair_code": "BTC_USDC",
                              "taker_or_maker": "taker",
                              "price": 18550,
                              "side": "buy",
                              "taker_order_id": "FEAB5CEC-7F9E-4F95-B67D-9E8D5C739BE3",
                              "timestamp": 1675708481220,
                              "type": "market",
                              "total_value": 49.96
                            }
                          ]
                        },
                        "pagination": {
                          "properties": {
                            "current_page": {
                              "description": "Current page",
                              "type": "number"
                            },
                            "page_size": {
                              "description": "Page size",
                              "type": "number"
                            },
                            "registers_count": {
                              "description": "Total number of registers",
                              "type": "number"
                            },
                            "total_pages": {
                              "description": "Total number of pages",
                              "type": "number"
                            }
                          },
                          "required": [
                            "current_page",
                            "page_size",
                            "registers_count",
                            "total_pages"
                          ],
                          "type": "object",
                          "example": {
                            "current_page": 1,
                            "registers_count": 21,
                            "total_pages": 1,
                            "page_size": 100
                          }
                        },
                        "nc": {
                          "description": "This is the next cursor, use its value with the `c` parameter to retrieve the next page",
                          "type": "string"
                        },
                        "pc": {
                          "description": "This is the previous cursor, use its value with the `c` parameter to retrieve the previous page",
                          "type": "string"
                        }
                      },
                      "required": [
                        "trades",
                        "pagination"
                      ],
                      "type": "object"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/transactions/sync": {
      "post": {
        "summary": "Transactions - Synchronize Transaction",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Manually synchronize a cryptocurrency deposit.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - deposit_read",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "Transaction parameters request",
                "properties": {
                  "hash": {
                    "description": "Transaction hash",
                    "type": "string"
                  },
                  "currency_code": {
                    "description": "Currency code",
                    "type": "string"
                  },
                  "block_id": {
                    "description": "Transaction block id\n\n⚠️ Check the information about this currency in the public currencies endpoint to check if this currency demands block number for transaction sync",
                    "type": "number"
                  }
                },
                "required": [
                  "hash",
                  "currency_code"
                ],
                "type": "object",
                "example": {
                  "block_id": 123456,
                  "currency_code": "BTC",
                  "hash": "7b6155e3d010b530f484e0cd05429328a514dd0158dc31c23cdd3ebb59f335ae"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "type": "number"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/wallets/{currency_code}/{network}": {
      "get": {
        "summary": "Wallets - Get User Wallet",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Get user network's currency address\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - deposit_read",
        "parameters": [
          {
            "in": "path",
            "name": "currency_code",
            "required": true,
            "description": "Currency code",
            "schema": {
              "example": "BTC",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "network",
            "required": true,
            "description": "Network",
            "schema": {
              "example": "bitcoin",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "address": {
                          "description": "Address",
                          "type": "string"
                        },
                        "currency_code": {
                          "description": "Currency code",
                          "type": "string",
                          "example": "BTC"
                        },
                        "tag": {
                          "description": "Address tag - Check the information about this currency in the public currencies endpoint to check if this currency / network needs tag for deposits",
                          "type": "string"
                        },
                        "memo": {
                          "description": "Address memo - Check the information about this currency in the public currencies endpoint to check if this currency / network needs memo for deposits",
                          "type": "string"
                        },
                        "network": {
                          "description": "Network",
                          "type": "string"
                        }
                      },
                      "required": [
                        "address",
                        "currency_code",
                        "tag",
                        "memo",
                        "network"
                      ],
                      "type": "object"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/public/currencies": {
      "get": {
        "summary": "Public - Currencies",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Lists the active currencies available in the platform.\n\n---\n\n**Authorization**\n\n- No API key required — this endpoint is public.",
        "parameters": [
          {
            "in": "query",
            "name": "currency_code",
            "required": false,
            "description": "Currency code",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "countries",
            "required": false,
            "description": "Countries (One or many, use \",\" to separate)",
            "schema": {
              "example": "BR,AR",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "items": {
                        "properties": {
                          "active": {
                            "description": "Whether the currency is currently active for trading",
                            "type": "boolean"
                          },
                          "can_deposit": {
                            "description": "Whether deposits are enabled for this currency",
                            "type": "boolean"
                          },
                          "can_withdraw": {
                            "description": "Whether withdrawals are enabled for this currency",
                            "type": "boolean"
                          },
                          "code": {
                            "description": "Currency code",
                            "type": "string",
                            "example": "BTC"
                          },
                          "id": {
                            "description": "Currency id",
                            "type": "string"
                          },
                          "min_withdraw_amount": {
                            "description": "Minimum withdrawal amount",
                            "type": "number"
                          },
                          "name": {
                            "description": "Currency name",
                            "type": "string"
                          },
                          "needs_block_id_for_tx_sync": {
                            "description": "Whether the currency requires a block ID for transaction synchronization",
                            "type": "boolean"
                          },
                          "networks": {
                            "description": "Supported networks for the currency (undefined for fiduciary currency)",
                            "items": {
                              "properties": {
                                "code": {
                                  "description": "Network code",
                                  "type": "string"
                                },
                                "memo": {
                                  "properties": {
                                    "deposit": {
                                      "description": "Flag that indicates if the network has memo for deposit",
                                      "type": "boolean"
                                    },
                                    "withdrawal": {
                                      "description": "Flag that indicates if the network has memo for withdrawal",
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "deposit",
                                    "withdrawal"
                                  ],
                                  "type": "object"
                                },
                                "tag": {
                                  "properties": {
                                    "deposit": {
                                      "description": "Flag that indicates if the network has tag for deposit",
                                      "type": "boolean"
                                    },
                                    "withdrawal": {
                                      "description": "Flag that indicates if the network has tag for withdrawal",
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "deposit",
                                    "withdrawal"
                                  ],
                                  "type": "object"
                                }
                              },
                              "required": [
                                "code",
                                "memo",
                                "tag"
                              ],
                              "type": "object"
                            },
                            "type": "array"
                          },
                          "precision": {
                            "description": "Currency decimal places",
                            "type": "number"
                          },
                          "decimal_places": {
                            "description": "Number of decimal places for this currency",
                            "type": "number"
                          },
                          "logo": {
                            "properties": {
                              "svg": {
                                "description": "Currency svg logo",
                                "type": "string"
                              }
                            },
                            "required": [
                              "svg"
                            ],
                            "type": "object"
                          },
                          "countries": {
                            "description": "Available countries",
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          }
                        },
                        "required": [
                          "active",
                          "can_deposit",
                          "can_withdraw",
                          "code",
                          "id",
                          "min_withdraw_amount",
                          "name",
                          "needs_block_id_for_tx_sync",
                          "precision",
                          "decimal_places",
                          "logo",
                          "countries"
                        ],
                        "type": "object",
                        "example": {
                          "active": true,
                          "can_deposit": true,
                          "can_withdraw": true,
                          "code": "BTC",
                          "id": "e7a079d8-828d-42c8-bf48-8ee3ac1862d1",
                          "min_withdraw_amount": 0.001,
                          "name": "Bitcoin",
                          "needs_block_id_for_tx_sync": true,
                          "networks": [
                            {
                              "code": "bitcoin",
                              "memo": {
                                "deposit": false,
                                "withdrawal": false
                              },
                              "tag": {
                                "deposit": false,
                                "withdrawal": false
                              }
                            }
                          ],
                          "precision": 8,
                          "decimal_places": 8,
                          "countries": [
                            "BR",
                            "AR"
                          ],
                          "logo": {
                            "svg": "https://cryptocurrency-logos.ripio.com/svg/btc.svg"
                          }
                        }
                      },
                      "type": "array"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/public/countries": {
      "get": {
        "summary": "Public - Countries",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Lists the active countries available in the platform.\n\n---\n\n**Authorization**\n\n- No API key required — this endpoint is public.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "items": {
                        "properties": {
                          "name": {
                            "description": "Name of the country",
                            "type": "string"
                          },
                          "code": {
                            "description": "Acronym of the country",
                            "type": "string"
                          }
                        },
                        "required": [
                          "name",
                          "code"
                        ],
                        "type": "object",
                        "example": {
                          "name": "Brazil",
                          "code": "BR"
                        }
                      },
                      "type": "array"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/pairs": {
      "get": {
        "summary": "General endpoints - Pairs",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Lists the active currency pairs available in the platform.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - general_data_read",
        "parameters": [
          {
            "in": "query",
            "name": "pair",
            "required": false,
            "description": "Currency pair code",
            "schema": {
              "example": "BTC_BRL",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "countries",
            "required": false,
            "description": "Countries (One or many, use \",\" to separate)",
            "schema": {
              "example": "BR,AR",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "items": {
                        "properties": {
                          "amount_tick": {
                            "description": "Smallest amount increment allowed",
                            "type": "number"
                          },
                          "base_decimal_places": {
                            "description": "Number of decimal places for the base currency (the asset being bought or sold)",
                            "type": "number"
                          },
                          "base": {
                            "description": "Base currency code",
                            "type": "string"
                          },
                          "base_name": {
                            "description": "Base currency full name",
                            "type": "string"
                          },
                          "quote": {
                            "description": "Quote currency code",
                            "type": "string"
                          },
                          "quote_name": {
                            "description": "Quote currency full name",
                            "type": "string"
                          },
                          "symbol": {
                            "description": "Currency pair code (format: BASE_QUOTE)",
                            "type": "string"
                          },
                          "enabled": {
                            "description": "Whether the pair is currently available for trading",
                            "type": "boolean"
                          },
                          "min_amount": {
                            "description": "Minimum order amount in base currency",
                            "type": "number"
                          },
                          "price_tick": {
                            "description": "Smallest price increment allowed",
                            "type": "number"
                          },
                          "quote_decimal_places": {
                            "description": "Number of decimal places for the quote currency (the currency used to price the base)",
                            "type": "number"
                          },
                          "min_value": {
                            "description": "Minimum order value in quote currency",
                            "type": "number"
                          },
                          "countries": {
                            "description": "Available countries",
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "max_price_variation": {
                            "description": "Maximum price variation (in percentage), applicable either upward or downward, relative to the best price in the order book (e.g., `10` means `10%`)",
                            "type": "number"
                          }
                        },
                        "required": [
                          "amount_tick",
                          "base_decimal_places",
                          "base",
                          "base_name",
                          "quote",
                          "quote_name",
                          "symbol",
                          "enabled",
                          "min_amount",
                          "price_tick",
                          "quote_decimal_places",
                          "min_value",
                          "countries"
                        ],
                        "type": "object",
                        "example": {
                          "amount_tick": 0.0001,
                          "base_decimal_places": 4,
                          "base": "BTC",
                          "base_name": "Bitcoin",
                          "enabled": true,
                          "min_amount": 0.0005,
                          "min_value": 10,
                          "price_tick": 1,
                          "quote_decimal_places": 0,
                          "quote": "BRL",
                          "quote_name": "Brazilian real",
                          "symbol": "BTC_BRL",
                          "countries": [
                            "BR"
                          ],
                          "max_price_variation": 10
                        }
                      },
                      "type": "array"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/trades": {
      "get": {
        "summary": "Orders - Trades",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Lists the trades history based on the filtering criteria.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - general_data_read",
        "parameters": [
          {
            "in": "query",
            "name": "pair",
            "required": true,
            "description": "Currency pair code",
            "schema": {
              "example": "BTC_BRL",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "start_time",
            "required": false,
            "description": "Initial datetime filter in ISO-8601 format",
            "schema": {
              "example": "2020-01-01T03:00:00.000Z",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "end_time",
            "required": false,
            "description": "Final datetime filter in ISO-8601 format",
            "schema": {
              "example": "2020-01-03T02:59:59.000Z",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "required": false,
            "description": "Number of records per page",
            "schema": {
              "example": 100,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "c",
            "required": false,
            "description": "The `c` parameter is the cursor you should use to fetch the next page of results",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "trades": {
                          "items": {
                            "properties": {
                              "amount": {
                                "description": "Amount",
                                "type": "number"
                              },
                              "date": {
                                "description": "Trade date (UTC format)",
                                "type": "string"
                              },
                              "id": {
                                "description": "Trade id",
                                "type": "string"
                              },
                              "maker_order_id": {
                                "description": "Maker order id",
                                "type": "string"
                              },
                              "maker_side": {
                                "description": "Maker order side (sell / buy)",
                                "type": "string"
                              },
                              "maker_type": {
                                "description": "Maker order type (market / limit)",
                                "type": "string"
                              },
                              "price": {
                                "description": "Price",
                                "type": "number"
                              },
                              "pair": {
                                "description": "Currency pair code",
                                "type": "string",
                                "example": "BTC_BRL"
                              },
                              "taker_order_id": {
                                "description": "Taker order id",
                                "type": "string"
                              },
                              "taker_side": {
                                "description": "Taker order side (sell / buy)",
                                "type": "string"
                              },
                              "taker_type": {
                                "description": "Taker order type (market / limit)",
                                "type": "string"
                              },
                              "timestamp": {
                                "description": "Current timestamp",
                                "type": "number",
                                "example": 1675708481219
                              },
                              "total_value": {
                                "description": "Total value",
                                "type": "number"
                              }
                            },
                            "required": [
                              "amount",
                              "date",
                              "id",
                              "maker_order_id",
                              "maker_side",
                              "maker_type",
                              "price",
                              "pair",
                              "taker_order_id",
                              "taker_side",
                              "taker_type",
                              "timestamp",
                              "total_value"
                            ],
                            "type": "object"
                          },
                          "type": "array",
                          "example": [
                            {
                              "amount": 0.2404764,
                              "date": "2019-01-03T02:27:33.947Z",
                              "id": "2B222F22-5235-45FA-97FC-E9DBFA2575EE",
                              "maker_order_id": "F49F5BD8-3F5B-4364-BCEE-F36F62DB966A",
                              "maker_side": "buy",
                              "maker_type": "limit",
                              "pair": "BTC_BRL",
                              "price": 15160,
                              "taker_order_id": "FEAB5CEC-7F9E-4F95-B67D-9E8D5C739BE3",
                              "taker_side": "sell",
                              "taker_type": "market",
                              "timestamp": 1675708481219,
                              "total_value": 3638.4
                            },
                            {
                              "amount": 0.00563617,
                              "date": "2019-01-03T02:27:33.943Z",
                              "id": "CDC492A5-B1BF-4353-BE7A-43F51C371388",
                              "maker_order_id": "53BF30D2-901C-43D5-B0D1-62CD05DFD02A",
                              "maker_side": "buy",
                              "maker_type": "limit",
                              "pair": "BTC_BRL",
                              "price": 15163,
                              "taker_order_id": "E4B1B38D-C871-4476-9314-3DC23292F45E",
                              "taker_side": "sell",
                              "taker_type": "limit",
                              "timestamp": 1675708481220,
                              "total_value": 84.91
                            },
                            {
                              "amount": 0.00680154,
                              "date": "2019-01-03T02:27:33.940Z",
                              "id": "910AA20F-211F-4755-90A7-94227DB407D8",
                              "maker_order_id": "1FD30735-E055-4200-AD3D-007B02A5BA92",
                              "maker_side": "buy",
                              "maker_type": "limit",
                              "pair": "BTC_BRL",
                              "price": 15163.03,
                              "taker_order_id": "DBC6D4AF-D454-46DF-80EC-E19528A0FB25",
                              "taker_side": "sell",
                              "taker_type": "limit",
                              "timestamp": 1675708481221,
                              "total_value": 104.1
                            }
                          ]
                        },
                        "nc": {
                          "description": "This is the next cursor, use its value with the `c` parameter to retrieve the next page",
                          "type": "string"
                        },
                        "pc": {
                          "description": "This is the previous cursor, use its value with the `c` parameter to retrieve the previous page",
                          "type": "string"
                        }
                      },
                      "required": [
                        "trades"
                      ],
                      "type": "object"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/currencies": {
      "get": {
        "summary": "General endpoints - Currencies",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Lists the active currencies available in the platform.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - general_data_read",
        "parameters": [
          {
            "in": "query",
            "name": "currency_code",
            "required": false,
            "description": "Currency code",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "countries",
            "required": false,
            "description": "Countries (One or many, use \",\" to separate)",
            "schema": {
              "example": "BR,AR",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "items": {
                        "properties": {
                          "active": {
                            "description": "Whether the currency is currently active for trading",
                            "type": "boolean"
                          },
                          "can_deposit": {
                            "description": "Whether deposits are enabled for this currency",
                            "type": "boolean"
                          },
                          "can_withdraw": {
                            "description": "Whether withdrawals are enabled for this currency",
                            "type": "boolean"
                          },
                          "code": {
                            "description": "Currency code",
                            "type": "string",
                            "example": "BTC"
                          },
                          "id": {
                            "description": "Currency id",
                            "type": "string"
                          },
                          "min_withdraw_amount": {
                            "description": "Minimum withdrawal amount",
                            "type": "number"
                          },
                          "name": {
                            "description": "Currency name",
                            "type": "string"
                          },
                          "needs_block_id_for_tx_sync": {
                            "description": "Whether the currency requires a block ID for transaction synchronization",
                            "type": "boolean"
                          },
                          "networks": {
                            "description": "Supported networks for the currency (undefined for fiduciary currency)",
                            "items": {
                              "properties": {
                                "code": {
                                  "description": "Network code",
                                  "type": "string"
                                },
                                "memo": {
                                  "properties": {
                                    "deposit": {
                                      "description": "Flag that indicates if the network has memo for deposit",
                                      "type": "boolean"
                                    },
                                    "withdrawal": {
                                      "description": "Flag that indicates if the network has memo for withdrawal",
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "deposit",
                                    "withdrawal"
                                  ],
                                  "type": "object"
                                },
                                "tag": {
                                  "properties": {
                                    "deposit": {
                                      "description": "Flag that indicates if the network has tag for deposit",
                                      "type": "boolean"
                                    },
                                    "withdrawal": {
                                      "description": "Flag that indicates if the network has tag for withdrawal",
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "deposit",
                                    "withdrawal"
                                  ],
                                  "type": "object"
                                }
                              },
                              "required": [
                                "code",
                                "memo",
                                "tag"
                              ],
                              "type": "object"
                            },
                            "type": "array"
                          },
                          "precision": {
                            "description": "Currency decimal places",
                            "type": "number"
                          },
                          "decimal_places": {
                            "description": "Number of decimal places for this currency",
                            "type": "number"
                          },
                          "logo": {
                            "properties": {
                              "svg": {
                                "description": "Currency svg logo",
                                "type": "string"
                              }
                            },
                            "required": [
                              "svg"
                            ],
                            "type": "object"
                          },
                          "countries": {
                            "description": "Available countries",
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          }
                        },
                        "required": [
                          "active",
                          "can_deposit",
                          "can_withdraw",
                          "code",
                          "id",
                          "min_withdraw_amount",
                          "name",
                          "needs_block_id_for_tx_sync",
                          "precision",
                          "decimal_places",
                          "logo",
                          "countries"
                        ],
                        "type": "object",
                        "example": {
                          "active": true,
                          "can_deposit": true,
                          "can_withdraw": true,
                          "code": "BTC",
                          "id": "e7a079d8-828d-42c8-bf48-8ee3ac1862d1",
                          "min_withdraw_amount": 0.001,
                          "name": "Bitcoin",
                          "needs_block_id_for_tx_sync": true,
                          "networks": [
                            {
                              "code": "bitcoin",
                              "memo": {
                                "deposit": false,
                                "withdrawal": false
                              },
                              "tag": {
                                "deposit": false,
                                "withdrawal": false
                              }
                            }
                          ],
                          "precision": 8,
                          "decimal_places": 8,
                          "countries": [
                            "BR",
                            "AR"
                          ],
                          "logo": {
                            "svg": "https://cryptocurrency-logos.ripio.com/svg/btc.svg"
                          }
                        }
                      },
                      "type": "array"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/ticker": {
      "get": {
        "summary": "Ticker - Tickers",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Returns a 24 hour window statistics for all pairs.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - general_data_read",
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "items": {
                        "properties": {
                          "pair": {
                            "description": "Currency pair code",
                            "type": "string",
                            "example": "BTC_BRL"
                          },
                          "price_change_percent_24h": {
                            "description": "24-hr % price change of market pair",
                            "type": "string"
                          },
                          "high": {
                            "description": "Highest price in the last 24 hours",
                            "type": "number"
                          },
                          "low": {
                            "description": "Lowest price in the last 24 hours",
                            "type": "number"
                          },
                          "volume": {
                            "description": "Volume in the last 24 hours",
                            "type": "number"
                          },
                          "trades_quantity": {
                            "description": "Trades quantity in the last 24 hours",
                            "type": "number"
                          },
                          "last": {
                            "description": "Price of the last trade",
                            "type": "number"
                          },
                          "bid": {
                            "description": "Price of the current best buy order in the orderbook",
                            "type": "number"
                          },
                          "ask": {
                            "description": "Price of the current best sell order in the orderbook",
                            "type": "number"
                          },
                          "date": {
                            "description": "Timestamp of the last update (UTC)",
                            "type": "string"
                          },
                          "first": {
                            "description": "Price of the first trade in the last 24 hours window",
                            "type": "number"
                          },
                          "is_frozen": {
                            "description": "Whether the market is currently frozen (disabled)",
                            "type": "boolean"
                          },
                          "base_code": {
                            "description": "Base currency code",
                            "type": "string"
                          },
                          "base_id": {
                            "description": "Base currency ID",
                            "type": "string"
                          },
                          "quote_id": {
                            "description": "Quote currency ID",
                            "type": "string"
                          },
                          "quote_code": {
                            "description": "Quote currency code",
                            "type": "string"
                          },
                          "quote_volume": {
                            "description": "Quote currency volume",
                            "type": "number"
                          }
                        },
                        "required": [
                          "pair",
                          "price_change_percent_24h",
                          "high",
                          "low",
                          "volume",
                          "trades_quantity",
                          "last",
                          "bid",
                          "ask",
                          "date",
                          "first",
                          "is_frozen",
                          "base_code",
                          "base_id",
                          "quote_id",
                          "quote_code",
                          "quote_volume"
                        ],
                        "type": "object"
                      },
                      "type": "array",
                      "example": [
                        {
                          "ask": 250000.15,
                          "base_code": "BTC",
                          "base_id": "9A5E2EF4-9547-418A-8EC6-C6EADBB8B32F",
                          "bid": 240000.15,
                          "date": "2017-10-20T00:00:00.000Z",
                          "first": 245000.15,
                          "high": 250000.15,
                          "is_frozen": false,
                          "last": 245000.15,
                          "low": 200000.15,
                          "pair": "BTC_BRL",
                          "price_change_percent_24h": "-12",
                          "quote_code": "BRL",
                          "quote_id": "48898138-8623-4555-9468-B1A1505A9352",
                          "quote_volume": 150.1,
                          "trades_quantity": 123,
                          "volume": 123.12345678
                        },
                        {
                          "ask": 15600.12,
                          "base_code": "ETH",
                          "base_id": "13A4B83B-E74F-425C-BC0A-03A9C0F29FAD",
                          "bid": 15400.12,
                          "date": "2017-10-20T00:00:00.000Z",
                          "first": 15999.15,
                          "high": 15999.12,
                          "is_frozen": false,
                          "last": 15500.12,
                          "low": 15000.12,
                          "pair": "ETH_BRL",
                          "price_change_percent_24h": "-12",
                          "quote_id": "48898138-8623-4555-9468-B1A1505A9352",
                          "quote_code": "BRL",
                          "quote_volume": 180.1,
                          "trades_quantity": 123,
                          "volume": 123.12345678
                        }
                      ]
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/ticker/{pair}": {
      "get": {
        "summary": "Ticker - Ticker By Pair",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Returns a 24 hour window statistics for a given pair.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - general_data_read",
        "parameters": [
          {
            "in": "path",
            "name": "pair",
            "required": true,
            "description": "This property was not properly documented",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "high": {
                          "description": "Highest price in the last 24 hours",
                          "type": "number"
                        },
                        "low": {
                          "description": "Lowest price in the last 24 hours",
                          "type": "number"
                        },
                        "volume": {
                          "description": "Volume in the last 24 hours",
                          "type": "number"
                        },
                        "trades_quantity": {
                          "description": "Number of trades in the last 24 hours",
                          "type": "number"
                        },
                        "last": {
                          "description": "Price of the most recent trade",
                          "type": "number"
                        },
                        "bid": {
                          "description": "Best bid price (highest price a buyer is willing to pay)",
                          "type": "number"
                        },
                        "ask": {
                          "description": "Best ask price (lowest price a seller is willing to accept)",
                          "type": "number"
                        },
                        "date": {
                          "description": "Timestamp of the last update (UTC)",
                          "type": "string"
                        },
                        "first": {
                          "description": "Price of the first trade in the last 24 hours window",
                          "type": "number"
                        },
                        "is_frozen": {
                          "description": "Whether the market is currently frozen (disabled)",
                          "type": "boolean"
                        },
                        "base_code": {
                          "description": "Base currency code",
                          "type": "string"
                        },
                        "base_id": {
                          "description": "Base currency ID",
                          "type": "string"
                        },
                        "quote_id": {
                          "description": "Quote currency ID",
                          "type": "string"
                        },
                        "quote_code": {
                          "description": "Quote currency code",
                          "type": "string"
                        },
                        "quote_volume": {
                          "description": "Quote currency volume",
                          "type": "number"
                        },
                        "price_change_percent_24h": {
                          "description": "24-hr % price change of market pair",
                          "type": "string"
                        }
                      },
                      "required": [
                        "high",
                        "low",
                        "volume",
                        "trades_quantity",
                        "last",
                        "bid",
                        "ask",
                        "date",
                        "first",
                        "is_frozen",
                        "base_code",
                        "base_id",
                        "quote_id",
                        "quote_code",
                        "quote_volume",
                        "price_change_percent_24h"
                      ],
                      "type": "object",
                      "example": {
                        "ask": 95629,
                        "base_code": "BTC",
                        "base_id": "9A5E2EF4-9547-418A-8EC6-C6EADBB8B32F",
                        "bid": 94171,
                        "date": "2022-11-11T01:31:35.820Z",
                        "first": 98444,
                        "high": 98444,
                        "is_frozen": false,
                        "last": 94311,
                        "low": 85034,
                        "pair": "BTC_BRL",
                        "price_change_percent_24h": "-12",
                        "quote_id": "48898138-8623-4555-9468-B1A1505A9352",
                        "quote_code": "BRL",
                        "quote_volume": 150.1,
                        "trades_quantity": 1199,
                        "volume": 27.26776846
                      }
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/book/orders/level-3": {
      "get": {
        "summary": "Book - Orderbook Level 3",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Returns the level 3 orderbook.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - general_data_read",
        "parameters": [
          {
            "in": "query",
            "name": "pair",
            "required": true,
            "description": "Currency pair code",
            "schema": {
              "example": "BTC_BRL",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Maximum number of records to return per request",
            "schema": {
              "example": 25,
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "timestamp": {
                          "description": "Current timestamp",
                          "type": "number",
                          "example": 1675708481219
                        },
                        "asks": {
                          "description": "Sell orders",
                          "items": {
                            "properties": {
                              "amount": {
                                "description": "Amount",
                                "type": "number"
                              },
                              "id": {
                                "description": "Order id",
                                "type": "string"
                              },
                              "price": {
                                "description": "Price",
                                "type": "number"
                              }
                            },
                            "required": [
                              "amount",
                              "id",
                              "price"
                            ],
                            "type": "object"
                          },
                          "type": "array",
                          "example": [
                            {
                              "amount": 0.1283746,
                              "id": "554F2D70-04B9-4E26-9548-9C35B025A018",
                              "price": 1923847
                            }
                          ]
                        },
                        "bids": {
                          "description": "Buy orders",
                          "items": {
                            "properties": {
                              "amount": {
                                "description": "Amount",
                                "type": "number"
                              },
                              "id": {
                                "description": "Order id",
                                "type": "string"
                              },
                              "price": {
                                "description": "Price",
                                "type": "number"
                              }
                            },
                            "required": [
                              "amount",
                              "id",
                              "price"
                            ],
                            "type": "object"
                          },
                          "type": "array",
                          "example": [
                            {
                              "amount": 0.256566,
                              "id": "E6D05F51-D79B-47CF-84C5-B157120EBC25",
                              "price": 1915200
                            }
                          ]
                        },
                        "hash": {
                          "description": "Hash of asks and bids",
                          "type": "string",
                          "example": "16757084812196786445"
                        }
                      },
                      "required": [
                        "timestamp",
                        "asks",
                        "bids",
                        "hash"
                      ],
                      "type": "object"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/book/orders/level-2": {
      "get": {
        "summary": "Book - Orderbook Level 2",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Returns the level 2 orderbook.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - general_data_read",
        "parameters": [
          {
            "in": "query",
            "name": "pair",
            "required": true,
            "description": "Currency pair code",
            "schema": {
              "example": "BTC_BRL",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "Maximum number of records to return per request. Can specify 'max' to use the service maximum.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "timestamp": {
                          "description": "Current timestamp",
                          "type": "number",
                          "example": 1675708481219
                        },
                        "asks": {
                          "description": "Sell orders",
                          "items": {
                            "description": "Construct a type with the properties of T except for those in type K.",
                            "type": "object"
                          },
                          "type": "array",
                          "example": [
                            {
                              "amount": 0.1283746,
                              "price": 1923847
                            }
                          ]
                        },
                        "bids": {
                          "description": "Buy orders",
                          "items": {
                            "description": "Construct a type with the properties of T except for those in type K.",
                            "type": "object"
                          },
                          "type": "array",
                          "example": [
                            {
                              "amount": 0.1283746,
                              "price": 1923847
                            }
                          ]
                        }
                      },
                      "required": [
                        "timestamp",
                        "asks",
                        "bids"
                      ],
                      "type": "object"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/orders/by-external-id/{external_id}": {
      "get": {
        "summary": "Orders - User Order by External Id",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Returns the details of a order belonging to the user (by external id).\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - trading_read",
        "parameters": [
          {
            "in": "path",
            "name": "external_id",
            "required": true,
            "description": "This property was not properly documented",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "id": {
                          "description": "Order identifier",
                          "type": "string"
                        },
                        "create_date": {
                          "description": "Creation datetime",
                          "type": "string"
                        },
                        "executed_amount": {
                          "description": "Executed amount",
                          "type": "number"
                        },
                        "external_id": {
                          "description": "External id (this is sent by the user when creating an order, and it's optional)",
                          "type": "string"
                        },
                        "pair": {
                          "description": "Currency pair code",
                          "type": "string",
                          "example": "BTC_BRL"
                        },
                        "remaining_amount": {
                          "description": "Remaining amount",
                          "type": "number"
                        },
                        "remaining_value": {
                          "description": "Remaining value",
                          "type": "number"
                        },
                        "requested_amount": {
                          "description": "Requested amount",
                          "type": "number"
                        },
                        "requested_value": {
                          "description": "Requested value",
                          "type": "number"
                        },
                        "status": {
                          "description": "Order status (executed_completely / executed_partially / open / canceled)",
                          "type": "string"
                        },
                        "type": {
                          "description": "Order type (limit / market)",
                          "type": "string"
                        },
                        "total_value": {
                          "description": "Total value",
                          "type": "number"
                        },
                        "side": {
                          "description": "Order side (buy or sell)",
                          "type": "string"
                        },
                        "price": {
                          "description": "Price",
                          "type": "number"
                        },
                        "update_date": {
                          "description": "Datetime of the last update",
                          "type": "string"
                        },
                        "fee": {
                          "description": "Fee from the transaction",
                          "type": "number"
                        },
                        "fill_or_kill": {
                          "description": "Exclusive for StopLimit orders, it is used in stop-loss or stop-buy scenarios to initiate selling or buying when the market price reaches the specified stop price",
                          "type": "boolean"
                        },
                        "average_execution_price": {
                          "description": "Average execution price",
                          "type": "number"
                        },
                        "transactions": {
                          "description": "Trades associated with the order",
                          "items": {
                            "properties": {
                              "amount": {
                                "description": "Execution amount in cryptocurrency",
                                "type": "number"
                              },
                              "create_date": {
                                "description": "Timestamp of the execution",
                                "type": "string"
                              },
                              "fee": {
                                "description": "Fee charged for this execution",
                                "type": "number"
                              },
                              "fee_currency": {
                                "description": "Currency code in which the fee was charged",
                                "type": "string"
                              },
                              "total_value": {
                                "description": "Total execution value",
                                "type": "number"
                              },
                              "price": {
                                "description": "Execution price",
                                "type": "number"
                              }
                            },
                            "required": [
                              "amount",
                              "create_date",
                              "fee",
                              "fee_currency",
                              "total_value",
                              "price"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "id",
                        "create_date",
                        "executed_amount",
                        "pair",
                        "remaining_amount",
                        "remaining_value",
                        "requested_amount",
                        "status",
                        "type",
                        "total_value",
                        "side",
                        "price",
                        "update_date",
                        "fee",
                        "fill_or_kill",
                        "transactions"
                      ],
                      "type": "object",
                      "example": {
                        "average_execution_price": 42600,
                        "create_date": "2017-12-08T23:42:54.960Z",
                        "external_id": "C90796F2-2CC3-4797-9AC3-A16BCC6936F0",
                        "executed_amount": 0.02347418,
                        "id": "8DE12108-4643-4E9F-8425-0172F1B96876",
                        "remaining_amount": 0,
                        "requested_amount": 0.02347418,
                        "requested_value": 1000,
                        "remaining_value": 0,
                        "pair": "BTC_BRL",
                        "price": 42600,
                        "side": "buy",
                        "status": "executed_completely",
                        "fee": 0.002,
                        "total_value": 1000,
                        "type": "limit",
                        "update_date": "2017-12-13T21:48:48.817Z",
                        "transactions": [
                          {
                            "amount": 0.2,
                            "create_date": "2020-02-21T20:24:43.433Z",
                            "fee": 0.12,
                            "fee_currency": "BTC",
                            "price": 5000,
                            "total_value": 1000
                          },
                          {
                            "amount": 0.2,
                            "create_date": "2020-02-21T20:49:37.450Z",
                            "fee": 0.12,
                            "fee_currency": "BTC",
                            "price": 5000,
                            "total_value": 1000
                          }
                        ]
                      }
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/orders/estimate-price/{pair}": {
      "get": {
        "summary": "Orders - Estimate Price",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Estimates the market unit price for a specific amount of a given currency pair.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - trading_read",
        "parameters": [
          {
            "in": "query",
            "name": "amount",
            "required": true,
            "description": "Amount to be used in the estimative.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "side",
            "required": true,
            "description": "Order side (buy or sell)",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "pair",
            "required": true,
            "description": "This property was not properly documented",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "price": {
                          "description": "Estimated price",
                          "type": "number",
                          "example": 54049.12
                        }
                      },
                      "required": [
                        "price"
                      ],
                      "type": "object"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/deposits": {
      "get": {
        "summary": "Cryptocurrency Deposits - List Cryptocurrency Deposits",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Lists the user's cryptocurrency deposits.\n\n**Attention:** Due to performance concerns, this endpoint now uses cursor-based pagination. The pagination object currently included in the response is now a placeholder and will be entirely removed as of 2026-06-01. The parameter current_page is also a placeholder and will be removed at the same time. Please update your integration accordingly and refer to the documentation for the correct pagination handling.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - deposit_read",
        "parameters": [
          {
            "in": "query",
            "name": "currency_code",
            "required": false,
            "description": "Currency code",
            "schema": {
              "example": "BTC",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "description": "Deposit status",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "start_date",
            "required": false,
            "description": "Initial date filter in ISO-8601 format",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "end_date",
            "required": false,
            "description": "Final date filter in ISO-8601 format",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "required": false,
            "description": "Number of records per page",
            "schema": {
              "example": 100,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "current_page",
            "required": false,
            "description": "Page number for pagination",
            "schema": {
              "example": 3,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "network",
            "required": false,
            "description": "Network",
            "schema": {
              "example": "bitcoin",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "c",
            "required": false,
            "description": "The `c` parameter is the cursor you should use to fetch the next page of results",
            "schema": {
              "example": "BTC",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "deposits": {
                          "items": {
                            "properties": {
                              "id": {
                                "description": "Deposit identifier",
                                "type": "string"
                              },
                              "currency_code": {
                                "description": "Currency code",
                                "type": "string",
                                "example": "BTC"
                              },
                              "hash": {
                                "description": "Deposit hash",
                                "type": "string"
                              },
                              "amount": {
                                "description": "Amount",
                                "type": "number"
                              },
                              "status": {
                                "description": "Deposit status",
                                "type": "string"
                              },
                              "create_date": {
                                "description": "Datetime of the creation",
                                "type": "string"
                              },
                              "confirmation_date": {
                                "description": "Datetime of the confirmation",
                                "type": "string"
                              },
                              "tag": {
                                "description": "Destination address tag - Check the information about this currency in the public currencies endpoint to check if this currency / network needs tag for deposits",
                                "type": "string"
                              },
                              "memo": {
                                "description": "Destination address memo - Check the information about this currency in the public currencies endpoint to check if this currency / network needs memo for deposits",
                                "type": "string"
                              },
                              "network": {
                                "description": "Network",
                                "type": "string"
                              },
                              "is_internal": {
                                "description": "If true, indicates that the deposit was sent internally by another exchange user",
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "id",
                              "currency_code",
                              "hash",
                              "amount",
                              "status",
                              "create_date",
                              "confirmation_date",
                              "is_internal"
                            ],
                            "type": "object",
                            "example": {
                              "amount": 2.29999999,
                              "confirmation_date": "2017-10-12T22:40:08.273Z",
                              "create_date": "2017-10-12T22:40:08.273Z",
                              "currency_code": "BTC",
                              "id": "3D41EEF3-A709-4EE5-BDEE-B6435CAA84C8",
                              "is_internal": false,
                              "hash": "4f87d009d88524e627b60c6fbe4ebe671a99lk9ad72aab17e0963c5fbef118e2",
                              "network": "bitcoin",
                              "status": "confirmed"
                            }
                          },
                          "type": "array",
                          "example": [
                            {
                              "amount": 2.29999999,
                              "confirmation_date": "2017-10-12T22:40:08.273Z",
                              "create_date": "2017-10-12T22:40:08.273Z",
                              "currency_code": "BTC",
                              "id": "3D41EEF3-A709-4EE5-BDEE-B6435CAA84C8",
                              "is_internal": false,
                              "hash": "4f87d009d88524e627b60c6fbe4ebe671a99lk9ad72aab17e0963c5fbef118e2",
                              "network": "bitcoin",
                              "status": "confirmed"
                            },
                            {
                              "amount": 2.29999999,
                              "confirmation_date": "2017-10-12T20:06:52.983Z",
                              "create_date": "2017-10-12T20:06:52.983Z",
                              "currency_code": "BTC",
                              "id": "3011675E-A549-46F3-A70B-0F0B0A01A2D6",
                              "is_internal": false,
                              "hash": "181378774394ec47b9861d9facfcd4d4ea11a447tr82532c654d5ee1306b4857",
                              "network": "bitcoin",
                              "status": "confirmed"
                            }
                          ]
                        },
                        "pagination": {
                          "properties": {
                            "current_page": {
                              "description": "Current page",
                              "type": "number"
                            },
                            "page_size": {
                              "description": "Page size",
                              "type": "number"
                            },
                            "registers_count": {
                              "description": "Total number of registers",
                              "type": "number"
                            },
                            "total_pages": {
                              "description": "Total number of pages",
                              "type": "number"
                            }
                          },
                          "required": [
                            "current_page",
                            "page_size",
                            "registers_count",
                            "total_pages"
                          ],
                          "type": "object",
                          "example": {
                            "current_page": 1,
                            "registers_count": 21,
                            "total_pages": 1,
                            "page_size": 100
                          }
                        },
                        "nc": {
                          "description": "This is the next cursor, use its value with the `c` parameter to retrieve the next page",
                          "type": "string"
                        },
                        "pc": {
                          "description": "This is the previous cursor, use its value with the `c` parameter to retrieve the previous page",
                          "type": "string"
                        }
                      },
                      "required": [
                        "deposits",
                        "pagination"
                      ],
                      "type": "object"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/deposits/deposit": {
      "get": {
        "summary": "Cryptocurrency Deposits - Get Cryptocurrency Deposit",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Gets a cryptocurrency deposit.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - deposit_read",
        "parameters": [
          {
            "in": "query",
            "name": "id",
            "required": false,
            "description": "Deposit identifier",
            "schema": {
              "example": "000A650D-F8A5-419A-A4C4-194452345981",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hash",
            "required": false,
            "description": "Transaction hash",
            "schema": {
              "example": "000A650D-F8A5-419A-A4C4-194452345981",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "id": {
                          "description": "Deposit identifier",
                          "type": "string"
                        },
                        "currency_code": {
                          "description": "Currency code",
                          "type": "string",
                          "example": "BTC"
                        },
                        "hash": {
                          "description": "Deposit hash",
                          "type": "string"
                        },
                        "amount": {
                          "description": "Amount",
                          "type": "number"
                        },
                        "status": {
                          "description": "Deposit status",
                          "type": "string"
                        },
                        "create_date": {
                          "description": "Datetime of the creation",
                          "type": "string"
                        },
                        "confirmation_date": {
                          "description": "Datetime of the confirmation",
                          "type": "string"
                        },
                        "tag": {
                          "description": "Destination address tag - Check the information about this currency in the public currencies endpoint to check if this currency / network needs tag for deposits",
                          "type": "string"
                        },
                        "memo": {
                          "description": "Destination address memo - Check the information about this currency in the public currencies endpoint to check if this currency / network needs memo for deposits",
                          "type": "string"
                        },
                        "network": {
                          "description": "Network",
                          "type": "string"
                        },
                        "is_internal": {
                          "description": "If true, indicates that the deposit was sent internally by another exchange user",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "id",
                        "currency_code",
                        "hash",
                        "amount",
                        "status",
                        "create_date",
                        "confirmation_date",
                        "is_internal"
                      ],
                      "type": "object",
                      "example": {
                        "amount": 2.29999999,
                        "confirmation_date": "2017-10-12T22:40:08.273Z",
                        "create_date": "2017-10-12T22:40:08.273Z",
                        "currency_code": "BTC",
                        "id": "3D41EEF3-A709-4EE5-BDEE-B6435CAA84C8",
                        "is_internal": false,
                        "hash": "4f87d009d88524e627b60c6fbe4ebe671a99lk9ad72aab17e0963c5fbef118e2",
                        "network": "bitcoin",
                        "status": "confirmed"
                      }
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/withdrawals": {
      "get": {
        "summary": "Cryptocurrency Withdrawals - List Cryptocurrency Withdrawals",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Lists the user's cryptocurrency withdrawals.\n\n**Attention:** Due to performance concerns, this endpoint now uses cursor-based pagination. The pagination object currently included in the response is now a placeholder and will be entirely removed as of 2026-06-01. The parameter current_page is also a placeholder and will be removed at the same time. Please update your integration accordingly and refer to the documentation for the correct pagination handling.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - withdrawal_read",
        "parameters": [
          {
            "in": "query",
            "name": "currency_code",
            "required": false,
            "description": "Currency code",
            "schema": {
              "example": "BTC",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "description": "Withdrawal status",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "start_date",
            "required": false,
            "description": "Initial date filter in ISO-8601 format",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "end_date",
            "required": false,
            "description": "Final date filter in ISO-8601 format",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "required": false,
            "description": "Number of records per page",
            "schema": {
              "example": 100,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "current_page",
            "required": false,
            "description": "Page number for pagination",
            "schema": {
              "example": 3,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "network",
            "required": false,
            "description": "Network",
            "schema": {
              "example": "bitcoin",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "c",
            "required": false,
            "description": "The `c` parameter is the cursor you should use to fetch the next page of results",
            "schema": {
              "example": "BTC",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "withdrawals": {
                          "items": {
                            "properties": {
                              "amount": {
                                "description": "Amount",
                                "type": "number",
                                "example": 0.1
                              },
                              "create_date": {
                                "description": "Datetime of the creation",
                                "type": "string",
                                "example": "2019-01-25T16:37:15.443Z"
                              },
                              "currency_code": {
                                "description": "Currency code",
                                "type": "string",
                                "example": "BTC"
                              },
                              "destination_address": {
                                "description": "Destination address",
                                "type": "string",
                                "example": "rw9nf3WgsagJiZnkAeZzXZuqeCQ6LHm2h1"
                              },
                              "external_id": {
                                "description": "External id (this is sent by the user when creating a withdrawal, and it's optional)",
                                "type": "string",
                                "example": "rtd-9012-lkju-908"
                              },
                              "is_internal": {
                                "description": "Flag that indicates if it's an internal wallet",
                                "type": "boolean",
                                "example": false
                              },
                              "link": {
                                "description": "Withdrawal link",
                                "type": "string",
                                "example": null
                              },
                              "miner_fee": {
                                "description": "Miner fee",
                                "type": "number",
                                "example": 0
                              },
                              "miner_fee_type": {
                                "description": "Miner fee type",
                                "type": "string",
                                "example": 1
                              },
                              "network": {
                                "description": "Network",
                                "type": "string",
                                "example": "bitcoin"
                              },
                              "status": {
                                "description": "Withdrawal status",
                                "type": "string"
                              },
                              "transaction_id": {
                                "description": "Transaction id",
                                "type": "string",
                                "example": null
                              },
                              "update_date": {
                                "description": "Datetime of the last update",
                                "type": "string",
                                "example": "2019-01-25T16:37:15.443Z"
                              },
                              "id": {
                                "description": "Withdrawal identifier",
                                "type": "string",
                                "example": "A1DCD3B6-1CBD-4F17-ADA0-230ADEC04173"
                              },
                              "fee": {
                                "description": "Fee charged by the exchange",
                                "type": "number",
                                "example": 0
                              },
                              "hash": {
                                "description": "Transaction hash",
                                "type": "string",
                                "example": null
                              },
                              "memo": {
                                "description": "Destination address memo - Check the information about this currency in the public currencies endpoint to check if this currency / network offers memo for withdrawals",
                                "type": "string"
                              },
                              "tag": {
                                "description": "Destination address tag - Check the information about this currency in the public currencies endpoint to check if this currency / network offers tag for withdrawals",
                                "type": "string"
                              }
                            },
                            "required": [
                              "amount",
                              "create_date",
                              "currency_code",
                              "destination_address",
                              "link",
                              "miner_fee",
                              "miner_fee_type",
                              "status",
                              "transaction_id",
                              "update_date",
                              "id",
                              "fee",
                              "hash"
                            ],
                            "type": "object"
                          },
                          "type": "array",
                          "example": [
                            {
                              "amount": 0.1,
                              "create_date": "2019-01-25T16:37:15.443Z",
                              "currency_code": "BTC",
                              "destination_address": "rw9nf3WgsagJiZnkAeZzXZuqeCQ6LHm2h1",
                              "external_id": "rtd-9012-lkju-908",
                              "is_internal": true,
                              "link": null,
                              "miner_fee": 0.000012,
                              "miner_fee_type": "regular",
                              "network": "bitcoin",
                              "status": "pending",
                              "transaction_id": "5890ASHIUHC089189YSHBNJKHAG978891",
                              "update_date": "2019-01-25T16:37:15.017Z",
                              "id": "A1DCD3B6-1CBD-4F17-ADA0-230ADEC04173",
                              "fee": 0,
                              "hash": null,
                              "memo": "656899",
                              "tag": "0100000020"
                            },
                            {
                              "amount": 0.1,
                              "create_date": "2019-01-25T16:37:15.443Z",
                              "currency_code": "BTC",
                              "destination_address": "rw9nf3WgsagJiZnkAeZzXZuqeCQ6LHm2h1",
                              "external_id": "rtd-9012-lkju-908",
                              "is_internal": true,
                              "link": null,
                              "miner_fee": 0.000012,
                              "miner_fee_type": "regular",
                              "network": "bitcoin",
                              "status": "pending",
                              "transaction_id": "5890ASHIUHC089189YSHBNJKHAG978891",
                              "update_date": "2019-01-25T16:37:15.017Z",
                              "id": "A1DCD3B6-1CBD-4F17-ADA0-230ADEC04173",
                              "fee": 0,
                              "hash": null,
                              "memo": "656899",
                              "tag": "0100000020"
                            }
                          ]
                        },
                        "pagination": {
                          "properties": {
                            "current_page": {
                              "description": "Current page",
                              "type": "number"
                            },
                            "page_size": {
                              "description": "Page size",
                              "type": "number"
                            },
                            "registers_count": {
                              "description": "Total number of registers",
                              "type": "number"
                            },
                            "total_pages": {
                              "description": "Total number of pages",
                              "type": "number"
                            }
                          },
                          "required": [
                            "current_page",
                            "page_size",
                            "registers_count",
                            "total_pages"
                          ],
                          "type": "object",
                          "example": {
                            "current_page": 1,
                            "registers_count": 21,
                            "total_pages": 1,
                            "page_size": 100
                          }
                        },
                        "nc": {
                          "description": "This is the next cursor, use its value with the `c` parameter to retrieve the next page",
                          "type": "string"
                        },
                        "pc": {
                          "description": "This is the previous cursor, use its value with the `c` parameter to retrieve the previous page",
                          "type": "string"
                        }
                      },
                      "required": [
                        "withdrawals",
                        "pagination"
                      ],
                      "type": "object"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Cryptocurrency Withdrawals - Create Cryptocurrency Withdrawal",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Creates a cryptocurrency withdrawal.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - withdrawal_write",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "fee_included": {
                    "description": "If `true`, the fee is deducted from the amount specified. This means the total charge remains exactly equal to the requested amount, and the recipient receives the net amount after the fee is subtracted. *Example:*  If you request a withdrawal of 100 and the fee is 1, the user is charged 100 and receives 99. Default value is `true`.",
                    "type": "boolean",
                    "example": true
                  },
                  "external_id": {
                    "description": "Withdrawal external identifier (maximum of 36 chars)",
                    "type": "string",
                    "example": "2352b104-3f8c-47da-b817-46c942350c95"
                  },
                  "tag": {
                    "description": "Destination tag\n\n⚠️ Check the information about this currency in the public currencies endpoint to check if this currency offers tag for withdrawals, and if has tag for deposit in case of a Ripio Trade address destination",
                    "type": "string"
                  },
                  "network": {
                    "description": "Destination network",
                    "type": "string",
                    "example": "bitcoin"
                  },
                  "memo": {
                    "description": "Destination memo\n\n⚠️ Check the information about this currency in the public currencies endpoint to check if this currency offers memo for withdrawals, and if has memo for deposit in case of a Ripio Trade address destination",
                    "type": "string"
                  },
                  "amount": {
                    "description": "Amount",
                    "type": "number",
                    "example": 7.77
                  },
                  "destination": {
                    "description": "Destination address. This address needs to be bound to a registered wallet.\nYou can register a wallet on: <https://trade.ripio.com/market/api/wallets>",
                    "type": "string",
                    "example": "1AU4BoYaxSunkEWikEMYXJ41c9bvQG6Wa2"
                  },
                  "currency_code": {
                    "description": "Currency code",
                    "type": "string"
                  }
                },
                "required": [
                  "amount",
                  "destination",
                  "currency_code"
                ],
                "type": "object"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "description": "From T, pick a set of properties whose keys are in the union K",
                      "properties": {
                        "id": {
                          "description": "Withdrawal identifier",
                          "type": "string",
                          "example": "A1DCD3B6-1CBD-4F17-ADA0-230ADEC04173"
                        },
                        "amount": {
                          "description": "Amount",
                          "type": "number",
                          "example": 0.1
                        },
                        "create_date": {
                          "description": "Datetime of the creation",
                          "type": "string",
                          "example": "2019-01-25T16:37:15.443Z"
                        },
                        "currency_code": {
                          "description": "Currency code",
                          "type": "string",
                          "example": "BTC"
                        },
                        "destination_address": {
                          "description": "Destination address",
                          "type": "string",
                          "example": "rw9nf3WgsagJiZnkAeZzXZuqeCQ6LHm2h1"
                        },
                        "external_id": {
                          "description": "External id (this is sent by the user when creating a withdrawal, and it's optional)",
                          "type": "string",
                          "example": "rtd-9012-lkju-908"
                        },
                        "link": {
                          "description": "Withdrawal link",
                          "type": "string",
                          "example": null
                        },
                        "miner_fee": {
                          "description": "Miner fee",
                          "type": "number",
                          "example": 0
                        },
                        "network": {
                          "description": "Network",
                          "type": "string",
                          "example": "bitcoin"
                        },
                        "status": {
                          "description": "Withdrawal status",
                          "type": "string"
                        },
                        "transaction_id": {
                          "description": "Transaction id",
                          "type": "string",
                          "example": null
                        },
                        "update_date": {
                          "description": "Datetime of the last update",
                          "type": "string",
                          "example": "2019-01-25T16:37:15.443Z"
                        },
                        "fee": {
                          "description": "Fee charged by the exchange",
                          "type": "number",
                          "example": 0
                        },
                        "hash": {
                          "description": "Transaction hash",
                          "type": "string",
                          "example": null
                        },
                        "memo": {
                          "description": "Destination address memo - Check the information about this currency in the public currencies endpoint to check if this currency / network offers memo for withdrawals",
                          "type": "string"
                        },
                        "tag": {
                          "description": "Destination address tag - Check the information about this currency in the public currencies endpoint to check if this currency / network offers tag for withdrawals",
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "amount",
                        "create_date",
                        "currency_code",
                        "destination_address",
                        "link",
                        "miner_fee",
                        "status",
                        "transaction_id",
                        "update_date",
                        "fee",
                        "hash"
                      ],
                      "type": "object"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/withdrawals/estimate-fee/{currency_code}": {
      "get": {
        "summary": "Cryptocurrency Withdrawals - Estimate Withdrawal Fee",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Estimates the miner fee for a cryptocurrency withdrawal.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - withdrawal_read",
        "parameters": [
          {
            "in": "query",
            "name": "network",
            "required": false,
            "description": "Network",
            "schema": {
              "example": "bitcoin",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "amount",
            "required": false,
            "description": "Amount",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "currency_code",
            "required": true,
            "description": "This property was not properly documented",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "amount": {
                          "description": "Amount",
                          "type": "number"
                        },
                        "network": {
                          "description": "Network",
                          "type": "string"
                        }
                      },
                      "required": [
                        "amount"
                      ],
                      "type": "object"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/withdrawals/withdrawal": {
      "get": {
        "summary": "Cryptocurrency Withdrawals - Get Cryptocurrency Withdrawal",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Gets a cryptocurrency withdrawal.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - withdrawal_read",
        "parameters": [
          {
            "in": "query",
            "name": "id",
            "required": false,
            "description": "Withdrawal identifier",
            "schema": {
              "example": "000A650D-F8A5-419A-A4C4-194452345981",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "external_id",
            "required": false,
            "description": "Withdrawal external identifier",
            "schema": {
              "example": "000A650D-F8A5-419A-A4C4-194452345981",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "amount": {
                          "description": "Amount",
                          "type": "number",
                          "example": 0.1
                        },
                        "create_date": {
                          "description": "Datetime of the creation",
                          "type": "string",
                          "example": "2019-01-25T16:37:15.443Z"
                        },
                        "currency_code": {
                          "description": "Currency code",
                          "type": "string",
                          "example": "BTC"
                        },
                        "destination_address": {
                          "description": "Destination address",
                          "type": "string",
                          "example": "rw9nf3WgsagJiZnkAeZzXZuqeCQ6LHm2h1"
                        },
                        "external_id": {
                          "description": "External id (this is sent by the user when creating a withdrawal, and it's optional)",
                          "type": "string",
                          "example": "rtd-9012-lkju-908"
                        },
                        "is_internal": {
                          "description": "Flag that indicates if it's an internal wallet",
                          "type": "boolean",
                          "example": false
                        },
                        "link": {
                          "description": "Withdrawal link",
                          "type": "string",
                          "example": null
                        },
                        "miner_fee": {
                          "description": "Miner fee",
                          "type": "number",
                          "example": 0
                        },
                        "miner_fee_type": {
                          "description": "Miner fee type",
                          "type": "string",
                          "example": 1
                        },
                        "network": {
                          "description": "Network",
                          "type": "string",
                          "example": "bitcoin"
                        },
                        "status": {
                          "description": "Withdrawal status",
                          "type": "string"
                        },
                        "transaction_id": {
                          "description": "Transaction id",
                          "type": "string",
                          "example": null
                        },
                        "update_date": {
                          "description": "Datetime of the last update",
                          "type": "string",
                          "example": "2019-01-25T16:37:15.443Z"
                        },
                        "id": {
                          "description": "Withdrawal identifier",
                          "type": "string",
                          "example": "A1DCD3B6-1CBD-4F17-ADA0-230ADEC04173"
                        },
                        "fee": {
                          "description": "Fee charged by the exchange",
                          "type": "number",
                          "example": 0
                        },
                        "hash": {
                          "description": "Transaction hash",
                          "type": "string",
                          "example": null
                        },
                        "memo": {
                          "description": "Destination address memo - Check the information about this currency in the public currencies endpoint to check if this currency / network offers memo for withdrawals",
                          "type": "string"
                        },
                        "tag": {
                          "description": "Destination address tag - Check the information about this currency in the public currencies endpoint to check if this currency / network offers tag for withdrawals",
                          "type": "string"
                        }
                      },
                      "required": [
                        "amount",
                        "create_date",
                        "currency_code",
                        "destination_address",
                        "link",
                        "miner_fee",
                        "miner_fee_type",
                        "status",
                        "transaction_id",
                        "update_date",
                        "id",
                        "fee",
                        "hash"
                      ],
                      "type": "object"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/ticket": {
      "post": {
        "summary": "Ticket - WebSocket ticket",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Creates a new websocket ticket. Should be sent in the body property called `ticket` to subscribe to the websocket private topics.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - websocket_ticket",
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "ticket": {
                          "description": "Ticket for subscribing to the WebSocket's private topics",
                          "type": "string"
                        }
                      },
                      "required": [
                        "ticket"
                      ],
                      "type": "object",
                      "example": {
                        "ticket": "D90A9A10-06AF-44AF-8592-BAF866DD1503"
                      }
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/user/balances": {
      "get": {
        "summary": "User - Balances",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Lists the user's balances\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - balance_read",
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "items": {
                        "properties": {
                          "currency_code": {
                            "description": "Currency code",
                            "type": "string",
                            "example": "BTC"
                          },
                          "available_amount": {
                            "description": "Available amount for trading or withdrawing",
                            "type": "number"
                          },
                          "last_update": {
                            "description": "Datetime of the last update",
                            "type": "string"
                          },
                          "locked_amount": {
                            "description": "Amount in use",
                            "type": "number"
                          }
                        },
                        "required": [
                          "currency_code",
                          "available_amount",
                          "last_update",
                          "locked_amount"
                        ],
                        "type": "object",
                        "example": [
                          {
                            "available_amount": 5.23423423,
                            "currency_code": "BTC",
                            "last_update": "2020-10-20T18:39:45.198Z",
                            "locked_amount": 0
                          }
                        ]
                      },
                      "type": "array"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/user/balances/{date}": {
      "get": {
        "summary": "User - Balance On Date",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Lists the user's balances in the given date.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - balance_read",
        "parameters": [
          {
            "in": "path",
            "name": "date",
            "required": true,
            "description": "This property was not properly documented",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "items": {
                        "properties": {
                          "currency_code": {
                            "description": "Currency code",
                            "type": "string",
                            "example": "BTC"
                          },
                          "available_amount": {
                            "description": "Available amount for trading or withdrawing",
                            "type": "number"
                          },
                          "last_update": {
                            "description": "Datetime of the last update",
                            "type": "string"
                          }
                        },
                        "required": [
                          "currency_code",
                          "available_amount",
                          "last_update"
                        ],
                        "type": "object"
                      },
                      "type": "array",
                      "example": [
                        {
                          "available_amount": 5.23423423,
                          "currency_code": "BTC",
                          "last_update": "2020-10-20T18:39:45.198Z"
                        }
                      ]
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/user/trading-fees": {
      "get": {
        "summary": "User - Trading Fees",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Get the user trading fees\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - trading_read",
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "items": {
                        "properties": {
                          "taker": {
                            "type": "number"
                          },
                          "maker": {
                            "type": "number"
                          },
                          "side": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "taker",
                          "maker",
                          "side"
                        ],
                        "type": "object"
                      },
                      "type": "array",
                      "example": [
                        {
                          "side": "buy",
                          "maker": 0.21,
                          "taker": 0.3
                        },
                        {
                          "side": "sell",
                          "maker": 0.21,
                          "taker": 0.3
                        }
                      ]
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/orders/all": {
      "delete": {
        "summary": "Orders - Cancel All Orders",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Cancels all the user's active orders.\n\nPublishes updates in the following websocket topics: [`orderbook`](#operation/orderbook), [`balance`](#operation/balance) and [`order_status`](#operation/order_status).\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - trading_write",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "pair": {
                    "description": "Currency pair code",
                    "type": "string",
                    "example": "BTC_BRL"
                  }
                },
                "type": "object"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "items": {
                        "properties": {
                          "pair_code": {
                            "description": "Pair code",
                            "type": "string",
                            "example": "BTC_BRL"
                          },
                          "order_id": {
                            "description": "Order identifier",
                            "type": "string"
                          },
                          "success": {
                            "description": "Success flag",
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "pair_code",
                          "order_id",
                          "success"
                        ],
                        "type": "object"
                      },
                      "type": "array",
                      "example": [
                        {
                          "order_id": "F6D2661E-4D6F-4770-BBE6-CC063CBA3770",
                          "pair_code": "BTC_BRL",
                          "success": true
                        },
                        {
                          "order_id": "7155ED34-9EC4-4733-8B32-1E4319CB662F",
                          "pair_code": "BTC_BRL",
                          "success": false
                        }
                      ]
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/user/statement/{currency_code}": {
      "get": {
        "summary": "User - Statement by Currency",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Lists the user's statement by currency.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - statement_read",
        "parameters": [
          {
            "in": "query",
            "name": "start_time",
            "required": false,
            "description": "Initial datetime filter in ISO-8601 format",
            "schema": {
              "example": "2020-01-01T03:00:00.000Z",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "end_time",
            "required": false,
            "description": "Final datetime filter in ISO-8601 format",
            "schema": {
              "example": "2020-01-03T02:59:59.000Z",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "required": false,
            "description": "Number of records per page",
            "schema": {
              "example": 100,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "current_page",
            "required": false,
            "description": "Page number for pagination",
            "schema": {
              "example": 3,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "operation_id",
            "required": false,
            "description": "Filter by operation id",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "currency_code",
            "required": true,
            "description": "This property was not properly documented",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "statement": {
                          "items": {
                            "properties": {
                              "amount": {
                                "description": "Transaction amount",
                                "type": "number"
                              },
                              "after_balance": {
                                "description": "Account balance after the operation",
                                "type": "number"
                              },
                              "currency": {
                                "description": "Currency code",
                                "type": "string",
                                "example": "BTC"
                              },
                              "date": {
                                "description": "Timestamp of the operation",
                                "type": "string"
                              },
                              "operation": {
                                "description": "Description of the operation (e.g., \"Buy\", \"Sell\", \"Tax over buy, ...\")",
                                "type": "string"
                              },
                              "operation_id": {
                                "description": "Id of the operation",
                                "type": "string",
                                "example": "3f7d8c29-4b1e-4f9a-b8e2-1c6a9d0e5f23"
                              }
                            },
                            "required": [
                              "amount",
                              "after_balance",
                              "currency",
                              "date",
                              "operation",
                              "operation_id"
                            ],
                            "type": "object"
                          },
                          "type": "array",
                          "example": [
                            {
                              "amount": -0.00000476,
                              "after_balance": 8605.31353851,
                              "currency": "BTC",
                              "date": "2022-01-27T18:16:10.557Z",
                              "operation": "Buy Maker Fee",
                              "operation_id": "3f7d8c29-4b1e-4f9a-b8e2-1c6a9d0e5f23"
                            },
                            {
                              "amount": 0.00119048,
                              "after_balance": 8605.31354327,
                              "currency": "BTC",
                              "date": "2022-01-27T18:16:10.557Z",
                              "operation": "Buy",
                              "operation_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
                            }
                          ]
                        },
                        "pagination": {
                          "properties": {
                            "current_page": {
                              "description": "Current page",
                              "type": "number"
                            },
                            "page_size": {
                              "description": "Page size",
                              "type": "number"
                            },
                            "registers_count": {
                              "description": "Total number of registers",
                              "type": "number"
                            },
                            "total_pages": {
                              "description": "Total number of pages",
                              "type": "number"
                            }
                          },
                          "required": [
                            "current_page",
                            "page_size",
                            "registers_count",
                            "total_pages"
                          ],
                          "type": "object",
                          "example": {
                            "current_page": 1,
                            "registers_count": 21,
                            "total_pages": 1,
                            "page_size": 100
                          }
                        }
                      },
                      "required": [
                        "statement",
                        "pagination"
                      ],
                      "type": "object"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/ripio-wallet/balance": {
      "get": {
        "summary": "Ripio Wallet - List Balances",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Lists user balances from the Ripio Wallet.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - internal_balance_transfer_read",
        "parameters": [
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "items": {
                        "properties": {
                          "amount": {
                            "description": "Balance amount as a string to preserve precision",
                            "type": "string",
                            "example": "1.23456789"
                          },
                          "currency_code": {
                            "description": "Currency code",
                            "type": "string",
                            "example": "BTC"
                          }
                        },
                        "required": [
                          "amount",
                          "currency_code"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/ripio-wallet/transfer": {
      "get": {
        "summary": "Ripio Wallet - List Transfers",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Lists transfers between Ripio Wallet and Ripio Trade.\n\nReturns paginated transfer records filtered by date range, currency, type, and status.\nUse the `cursor` field from the response to navigate through pages.\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - internal_balance_transfer_read",
        "parameters": [
          {
            "in": "query",
            "name": "start_date",
            "required": true,
            "description": "Initial datetime filter in ISO-8601 format",
            "schema": {
              "example": "2020-01-01T03:00:00.000Z",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "end_date",
            "required": true,
            "description": "Final datetime filter in ISO-8601 format",
            "schema": {
              "example": "2020-01-03T02:59:59.000Z",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "required": true,
            "description": "Number of records per page",
            "schema": {
              "example": 100,
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "type",
            "required": false,
            "description": "Transfer type",
            "schema": {
              "example": "deposit",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "currency_code",
            "required": false,
            "description": "Currency code (BTC, ETH, USDT, ...)",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "description": "Transfer status filter: `pending`, `completed`, or `failed`",
            "schema": {
              "example": "pending",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "c",
            "required": false,
            "description": "Cursor from the previous response to fetch the next page. Omit this parameter for the first page.",
            "schema": {
              "example": "2024-01-01T00:00:00.000Z",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "order_by",
            "required": false,
            "description": "Order direction",
            "schema": {
              "example": "asc",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "properties": {
                        "pc": {
                          "description": "Previous cursor for pagination",
                          "type": "string",
                          "example": "2024-01-01T00:00:00.000Z"
                        },
                        "nc": {
                          "description": "Next cursor for pagination",
                          "type": "string",
                          "example": "2025-01-01T00:00:00.000Z"
                        },
                        "transfers": {
                          "items": {
                            "properties": {
                              "created_at": {
                                "description": "Datetime of the transfer creation in ISO 8601 format",
                                "type": "string",
                                "example": "2024-01-01T00:00:00.000Z"
                              },
                              "status": {
                                "description": "Current status of the transfer:\n- `pending`: Transfer is being processed\n- `confirmed`: Transfer completed successfully\n- `canceled`: Transfer was canceled",
                                "type": "string",
                                "example": "confirmed"
                              },
                              "type": {
                                "description": "Transfer direction type:\n- `deposit`: Transfer from Ripio Wallet to Ripio Trade (cash-in to Trade)\n- `withdrawal`: Transfer from Ripio Trade to Ripio Wallet (cash-out from Trade)",
                                "type": "string",
                                "example": "deposit"
                              },
                              "currency": {
                                "description": "Currency code of the transfer",
                                "type": "string",
                                "example": "BTC"
                              },
                              "amount": {
                                "description": "Amount of the transfer",
                                "type": "string",
                                "example": "9.005589"
                              },
                              "id": {
                                "description": "Id of the transfer",
                                "type": "string",
                                "example": "vx64qwe-qwe778qwe-4qwe1dasc-qwe4"
                              }
                            },
                            "required": [
                              "created_at",
                              "status",
                              "type",
                              "currency",
                              "amount",
                              "id"
                            ],
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "transfers"
                      ],
                      "type": "object"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/trade/ripio-wallet/transfer/{currency}": {
      "post": {
        "summary": "Ripio Wallet - Execute Transfer",
        "tags": [
          "Ripio Trade"
        ],
        "description": "Executes a transfer of funds between Ripio Trade and Ripio Wallet.\n\nThe transfer can be initiated in both directions:\n- **TO_WALLET**: Moves funds from Ripio Trade to Ripio Wallet\n- **FROM_WALLET**: Moves funds from Ripio Wallet to Ripio Trade\n\n---\n\n**Authorization**\n\n- Requires a valid API key.\n- Required API-key permission(s):\n  - internal_balance_transfer_write",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "amount": {
                    "description": "Amount to transfer in the specified currency. Must be greater than 0.\nThe amount is validated against available balance and minimum transfer limits.",
                    "type": "string",
                    "example": "100"
                  },
                  "direction": {
                    "description": "Transfer direction indicating the fund flow:\n- **TO_WALLET**: Transfer from Ripio Trade to Ripio Wallet\n- **FROM_WALLET**: Transfer from Ripio Wallet to Ripio Trade",
                    "type": "string",
                    "example": "TO_WALLET"
                  }
                },
                "required": [
                  "amount",
                  "direction"
                ],
                "type": "object"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "currency",
            "required": true,
            "description": "This property was not properly documented",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "authorization",
            "required": true,
            "description": "The API key as a string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "signature",
            "required": true,
            "description": "See the [Generating Signature](/static/api/authentication#generating-signature) section for more details.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "timestamp",
            "required": true,
            "description": "A timestamp in milliseconds. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          },
          {
            "in": "header",
            "name": "timstamp-tolerance",
            "required": false,
            "description": "An additional, non-required parameter, that you can send to specify the number of milliseconds after the timestamp for the request to be valid. See the [Timestamp Security](/static/api/authentication#timestamp-security) section for more details.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ok",
                  "properties": {
                    "data": {
                      "type": "number"
                    },
                    "error_code": {
                      "type": "number",
                      "example": null
                    },
                    "message": {
                      "type": "string",
                      "example": null
                    }
                  },
                  "required": [
                    "data",
                    "error_code",
                    "message"
                  ],
                  "type": "object"
                }
              }
            }
          }
        }
      }
    }
  }
}