Pular para o conteúdo principal
POST
/
v1
/
reservations
Reservar capacidade de transação
curl --request POST \
  --url https://tracer.sandbox.lerian.net/v1/reservations \
  --header 'Content-Type: <content-type>' \
  --header 'X-API-Key: <api-key>' \
  --data '
{
  "transactionId": "019c96a0-1071-7a0d-9916-a831221de252",
  "requestId": "019c96a0-10ce-75fc-a273-dc799079a99c",
  "transactionType": "CARD",
  "amount": "1500.00",
  "currency": "USD",
  "transactionTimestamp": "2026-01-30T10:00:00Z",
  "account": {
    "accountId": "019c96a0-0c0d-7915-84b9-e497bfee9916",
    "type": "checking",
    "status": "active"
  }
}
'
import requests

url = "https://tracer.sandbox.lerian.net/v1/reservations"

payload = {
"transactionId": "019c96a0-1071-7a0d-9916-a831221de252",
"requestId": "019c96a0-10ce-75fc-a273-dc799079a99c",
"transactionType": "CARD",
"amount": "1500.00",
"currency": "USD",
"transactionTimestamp": "2026-01-30T10:00:00Z",
"account": {
"accountId": "019c96a0-0c0d-7915-84b9-e497bfee9916",
"type": "checking",
"status": "active"
}
}
headers = {
"Content-Type": "<content-type>",
"X-API-Key": "<api-key>"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {'Content-Type': '<content-type>', 'X-API-Key': '<api-key>'},
body: JSON.stringify({
transactionId: '019c96a0-1071-7a0d-9916-a831221de252',
requestId: '019c96a0-10ce-75fc-a273-dc799079a99c',
transactionType: 'CARD',
amount: '1500.00',
currency: 'USD',
transactionTimestamp: '2026-01-30T10:00:00Z',
account: {
accountId: '019c96a0-0c0d-7915-84b9-e497bfee9916',
type: 'checking',
status: 'active'
}
})
};

fetch('https://tracer.sandbox.lerian.net/v1/reservations', 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://tracer.sandbox.lerian.net/v1/reservations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'transactionId' => '019c96a0-1071-7a0d-9916-a831221de252',
'requestId' => '019c96a0-10ce-75fc-a273-dc799079a99c',
'transactionType' => 'CARD',
'amount' => '1500.00',
'currency' => 'USD',
'transactionTimestamp' => '2026-01-30T10:00:00Z',
'account' => [
'accountId' => '019c96a0-0c0d-7915-84b9-e497bfee9916',
'type' => 'checking',
'status' => 'active'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: <content-type>",
"X-API-Key: <api-key>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://tracer.sandbox.lerian.net/v1/reservations"

payload := strings.NewReader("{\n \"transactionId\": \"019c96a0-1071-7a0d-9916-a831221de252\",\n \"requestId\": \"019c96a0-10ce-75fc-a273-dc799079a99c\",\n \"transactionType\": \"CARD\",\n \"amount\": \"1500.00\",\n \"currency\": \"USD\",\n \"transactionTimestamp\": \"2026-01-30T10:00:00Z\",\n \"account\": {\n \"accountId\": \"019c96a0-0c0d-7915-84b9-e497bfee9916\",\n \"type\": \"checking\",\n \"status\": \"active\"\n }\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Content-Type", "<content-type>")
req.Header.Add("X-API-Key", "<api-key>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://tracer.sandbox.lerian.net/v1/reservations")
.header("Content-Type", "<content-type>")
.header("X-API-Key", "<api-key>")
.body("{\n \"transactionId\": \"019c96a0-1071-7a0d-9916-a831221de252\",\n \"requestId\": \"019c96a0-10ce-75fc-a273-dc799079a99c\",\n \"transactionType\": \"CARD\",\n \"amount\": \"1500.00\",\n \"currency\": \"USD\",\n \"transactionTimestamp\": \"2026-01-30T10:00:00Z\",\n \"account\": {\n \"accountId\": \"019c96a0-0c0d-7915-84b9-e497bfee9916\",\n \"type\": \"checking\",\n \"status\": \"active\"\n }\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://tracer.sandbox.lerian.net/v1/reservations")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = '<content-type>'
request["X-API-Key"] = '<api-key>'
request.body = "{\n \"transactionId\": \"019c96a0-1071-7a0d-9916-a831221de252\",\n \"requestId\": \"019c96a0-10ce-75fc-a273-dc799079a99c\",\n \"transactionType\": \"CARD\",\n \"amount\": \"1500.00\",\n \"currency\": \"USD\",\n \"transactionTimestamp\": \"2026-01-30T10:00:00Z\",\n \"account\": {\n \"accountId\": \"019c96a0-0c0d-7915-84b9-e497bfee9916\",\n \"type\": \"checking\",\n \"status\": \"active\"\n }\n}"

response = http.request(request)
puts response.read_body
{
  "transactionId": "019c96a0-1071-7a0d-9916-a831221de252",
  "denied": false,
  "reservationIds": [
    "019c96a0-10d2-7193-8841-0d7347efd09a"
  ]
}

Autorizações

X-API-Key
string
header
obrigatório

Autenticação por API Key. Usada por implantações single-tenant (MULTI_TENANT_ENABLED=false). Enviada em todas as requisições /v1/*.

Cabeçalhos

Content-Type
string
obrigatório

O tipo de mídia do recurso. Deve ser application/json.

X-API-Key
string
obrigatório

A chave de API para autenticação. Este header é obrigatório para todos os endpoints, exceto verificações de integridade.

X-Request-Id
string<uuid>

Um identificador único usado para rastrear cada requisição.

Corpo

application/json

Requisição de reserva para a fase um. Espelha a carga útil de validação de transação e adiciona o transactionId do ledger no qual o ciclo de vida da reserva é indexado. Para reservas, transactionType e account são opcionais porque o ledger pode não conhecer o trilho de pagamento ou um UUID de conta interno no ponto de reserva; requestId, amount, currency e transactionTimestamp permanecem obrigatórios.

transactionId
string<uuid>
obrigatório

ID de correlação da transação do ledger no qual a reserva é indexada. Também é o grão de idempotência para reservas repetidas.

requestId
string<uuid>
obrigatório

ID único gerado pelo cliente para idempotência e correlação da trilha de auditoria.

amount
string
obrigatório

Valor da transação como cadeia decimal (por exemplo, "1500.00"). Deve ser um valor decimal positivo.

currency
string
obrigatório

Código de moeda ISO 4217 (maiúsculas). Códigos em minúsculas são rejeitados.

Required string length: 3
transactionTimestamp
string<date-time>
obrigatório

Carimbo de data/hora da transação no formato RFC3339 com fuso horário.

longLived
boolean
padrão:false

Seleciona o tempo de vida da reserva. Use true para uma transação pendente que não deve expirar enquanto permanecer válida; false (o valor padrão) para uma transação direta.

transactionType
enum<string>

Tipo de transação (método de pagamento). Opcional para reservas.

Opções disponíveis:
CARD,
WIRE,
Pix,
CRYPTO
subType
string

Subtipo de transação para contexto adicional (por exemplo, débito, crédito, pré-pago).

Maximum string length: 50
account
object

Contexto da conta para validação.

segment
object

Contexto do segmento (opcional). Se fornecido, segmentId é obrigatório.

portfolio
object

Contexto do portfólio (opcional). Se fornecido, portfolioId é obrigatório.

merchant
object

Contexto do estabelecimento (opcional, recomendado para transações de cartão). Se fornecido, merchantId é obrigatório.

metadata
object

Pares chave-valor personalizados para as expressões de regras.

Resposta

Indica que a reserva foi processada. Verifique denied para confirmar se a capacidade foi concedida ou rejeitada por um limite de gastos.

Identificador devolvido em uma reserva bem-sucedida. Quando denied é true nenhuma capacidade foi retida e reservationIds está vazio; caso contrário, reservationIds contém um ID para cada limite respaldado por contador que o ledger deve confirmar ou liberar mais tarde.

transactionId
string<uuid>
obrigatório

O ID de correlação da transação do ledger da requisição.

denied
boolean
obrigatório

Se a reserva foi rejeitada porque um limite de gastos seria excedido. Quando é true, nenhuma capacidade é retida.

reservationIds
string<uuid>[]
obrigatório

Um ID de reserva para cada limite respaldado por contador que confirmar ou liberar na fase dois. Vazio quando rejeitada.