curl --request GET \
--url https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests/{transferRequestId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests/{transferRequestId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests/{transferRequestId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests/{transferRequestId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests/{transferRequestId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests/{transferRequestId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests/{transferRequestId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"realmId": "<string>",
"organizationId": "<string>",
"accountId": "<string>",
"walletId": "<string>",
"defaultWalletId": "<string>",
"destinationCategory": "FLEX_NATIONAL",
"amount": 123,
"requester": {
"userId": "<string>",
"name": "<string>",
"email": "<string>"
},
"status": "PENDING_APPROVAL",
"createdAt": "<string>",
"updatedAt": "<string>",
"environment": "LIVE",
"walletName": "<string>",
"txnCurrency": "784",
"description": "<string>",
"policyRequestId": "<string>",
"autoResolutionRequestedAt": "<string>",
"scheduledAt": "<string>",
"scheduledTimeZone": "<string>",
"scheduleId": "<string>",
"approvalExpiresAt": "<string>",
"confirmedAt": "<string>",
"canceledAt": "<string>",
"failureReason": "<string>",
"customFields": {},
"confirmingAt": "<string>"
}/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests/{transferRequestId}
curl --request GET \
--url https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests/{transferRequestId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests/{transferRequestId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests/{transferRequestId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests/{transferRequestId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests/{transferRequestId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests/{transferRequestId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests/{transferRequestId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"realmId": "<string>",
"organizationId": "<string>",
"accountId": "<string>",
"walletId": "<string>",
"defaultWalletId": "<string>",
"destinationCategory": "FLEX_NATIONAL",
"amount": 123,
"requester": {
"userId": "<string>",
"name": "<string>",
"email": "<string>"
},
"status": "PENDING_APPROVAL",
"createdAt": "<string>",
"updatedAt": "<string>",
"environment": "LIVE",
"walletName": "<string>",
"txnCurrency": "784",
"description": "<string>",
"policyRequestId": "<string>",
"autoResolutionRequestedAt": "<string>",
"scheduledAt": "<string>",
"scheduledTimeZone": "<string>",
"scheduleId": "<string>",
"approvalExpiresAt": "<string>",
"confirmedAt": "<string>",
"canceledAt": "<string>",
"failureReason": "<string>",
"customFields": {},
"confirmingAt": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Response
Successful response
The persisted Mongoose entity — the commons WalletTransferRequestView (the PINNED wire contract the ruleengine/platform modules being built alongside this one already type their clients against — see commons/app/banking/interfaces/walletTransferRequest.ts) plus two banking-internal fields that never need a place in that contract: - environment (LIVE|TEST): recorded at creation from the x-environment header so confirm/deny/cancel never depend on the CALLER resending one — the ROOT/ruleengine service caller (confirm on quorum-approve, deny on quorum-deny) has no reason to know or carry it. - confirmingAt: the atomic-claim lock confirmWalletTransferRequestCommand uses so a concurrent double-confirm 409s instead of double-moving money (see commands/confirmWalletTransferRequest.ts). Both ride as harmless extra keys on the wire response (banking has no presenter layer — see banking/CLAUDE.md) rather than being stripped; only confirmingAt is deleted by the model's toJSON transform since it is a pure internal lock with no reason to ever reach a client.
The account BOTH wallets belong to (one organization = one account).
The SUBJECT wallet (the path wallet) — never the org default wallet.
The organization's default wallet — the counterparty on every transfer request — snapshotted at creation so a later default-wallet change cannot retarget an already-open request.
The balance category on the SUBJECT wallet's side — see the payload.
FLEX_NATIONAL, FLEX_INTERNATIONAL, FOOD, GAS, MOBILITY, TOLL, FLEX_NATIONAL_WITHOUT_WITHDRAWALS, ADS, SAAS, HOTEL, AIRLINES, TRAVEL Signed integer cents — see CreateWalletTransferRequestPayload.amount.
Show child attributes
Show child attributes
PENDING_APPROVAL, REQUESTED, CONFIRMED, CANCELLED, EXPIRED, FAILED, SCHEDULED LIVE, TEST Display name of the subject wallet, snapshotted at creation from the already-loaded wallet doc (a later rename does not propagate) — carried so the policy-request (and this doc's own reads) can show it without a wallet lookup. Absent on docs created before the field existed and on legacy wallets with no name.
The wallet's currency as an ISO-4217 numeric code, in string form ("986" = BRL). Set from the wallet when the request is created and never accepted as input. Absent on requests created before this field existed.
784, 971, 008, 051, 973, 032, 036, 533, 944, 977, 052, 050, 048, 108, 060, 096, 068, 984, 986, 044, 064, 072, 933, 084, 124, 976, 947, 756, 948, 990, 152, 156, 170, 970, 188, 192, 132, 203, 262, 208, 214, 012, 818, 232, 230, 978, 242, 238, 826, 981, 936, 292, 270, 324, 320, 328, 344, 340, 332, 348, 360, 376, 356, 368, 364, 352, 388, 400, 392, 404, 417, 116, 174, 408, 410, 414, 136, 398, 418, 422, 144, 430, 426, 434, 504, 498, 969, 807, 104, 496, 446, 929, 480, 462, 454, 484, 979, 458, 943, 516, 566, 558, 578, 524, 554, 512, 590, 604, 598, 608, 586, 985, 600, 634, 946, 941, 643, 646, 682, 090, 690, 938, 752, 702, 654, 925, 706, 968, 728, 930, 222, 760, 748, 764, 972, 934, 788, 776, 949, 780, 901, 834, 980, 800, 840, 997, 940, 858, 927, 860, 926, 928, 704, 548, 882, 396, 950, 961, 959, 955, 956, 957, 958, 951, 532, 960, 952, 964, 953, 962, 994, 963, 965, 999, 886, 710, 967, 924 When a confirm first asked the policy engine to execute the matched auto-approving policy for this request. Informational; once set, every later confirm of this request is reconciled against that execution.
ONE l — the fleet spelling for this timestamp (pix/boleto/ted all use canceledAt). The STATUS value keeps two (CANCELLED), which all of them already share; only the timestamp was inconsistent.
Custom-field values, keyed by the definition's slug.
Show child attributes
Show child attributes