curl --request POST \
--url https://api.example.com/v1/transfers/reconciliation/tick \
--header 'Authorization: Bearer <token>' \
--header 'X-Idempotency: <x-idempotency>'package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/transfers/reconciliation/tick"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-Idempotency", "<x-idempotency>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}const options = {
method: 'POST',
headers: {'X-Idempotency': '<x-idempotency>', Authorization: 'Bearer <token>'}
};
fetch('https://api.example.com/v1/transfers/reconciliation/tick', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.example.com/v1/transfers/reconciliation/tick"
headers = {
"X-Idempotency": "<x-idempotency>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, headers=headers)
print(response.text){
"outcome": "success",
"sweptCount": 3,
"durationMs": 125
}{
"type": "https://errors.lerian.studio/v1/BTF-0001",
"title": "Bad Request",
"status": 400,
"detail": "invalid request body",
"code": "BTF-0001",
"category": "deterministic",
"requestId": "6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f",
"service": "plugin"
}{
"type": "https://errors.lerian.studio/v1/BTF-0401",
"title": "Unauthorized",
"status": 401,
"detail": "Missing Token",
"code": "BTF-0401",
"category": "plugin",
"requestId": "6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f",
"service": "plugin"
}{
"type": "https://errors.lerian.studio/v1/BTF-0405",
"title": "Forbidden",
"status": 403,
"detail": "the credential is not allowed to perform transfers:create on this request",
"code": "BTF-0405",
"category": "plugin",
"requestId": "6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f",
"service": "plugin"
}{
"type": "https://errors.lerian.studio/v1/BTF-0200",
"title": "Not Found",
"status": 404,
"detail": "transfer not found",
"code": "BTF-0200",
"requestId": "6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f",
"service": "plugin",
"category": "deterministic",
"instance": "4bf92f3577b34da6a3ce929d0e0e4736",
"errors": [
{
"message": "transferId must be a valid UUID",
"location": "body.senderAccountId"
}
],
"upstream": {
"code": "AAC90",
"message": "Assinatura invalida"
}
}{
"type": "https://errors.lerian.studio/v1/BTF-9009",
"title": "Conflict",
"status": 409,
"detail": "reconciliation cycle already in progress",
"code": "BTF-9009",
"category": "transient",
"requestId": "6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f",
"service": "plugin"
}{
"type": "https://errors.lerian.studio/v1/BTF-0200",
"title": "Not Found",
"status": 404,
"detail": "transfer not found",
"code": "BTF-0200",
"requestId": "6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f",
"service": "plugin",
"category": "deterministic",
"instance": "4bf92f3577b34da6a3ce929d0e0e4736",
"errors": [
{
"message": "transferId must be a valid UUID",
"location": "body.senderAccountId"
}
],
"upstream": {
"code": "AAC90",
"message": "Assinatura invalida"
}
}{
"type": "https://errors.lerian.studio/v1/BTF-0429",
"title": "Too Many Requests",
"status": 429,
"detail": "Rate limit exceeded",
"code": "BTF-0429",
"category": "rate_limit",
"requestId": "6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f",
"service": "plugin"
}{
"type": "https://errors.lerian.studio/v1/BTF-9000",
"title": "Internal Server Error",
"status": 500,
"detail": "Internal server error",
"code": "BTF-9000",
"category": "plugin",
"requestId": "6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f",
"service": "plugin"
}{
"type": "https://errors.lerian.studio/v1/BTF-0200",
"title": "Not Found",
"status": 404,
"detail": "transfer not found",
"code": "BTF-0200",
"requestId": "6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f",
"service": "plugin",
"category": "deterministic",
"instance": "4bf92f3577b34da6a3ce929d0e0e4736",
"errors": [
{
"message": "transferId must be a valid UUID",
"location": "body.senderAccountId"
}
],
"upstream": {
"code": "AAC90",
"message": "Assinatura invalida"
}
}{
"type": "https://errors.lerian.studio/v1/BTF-0200",
"title": "Not Found",
"status": 404,
"detail": "transfer not found",
"code": "BTF-0200",
"requestId": "6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f",
"service": "plugin",
"category": "deterministic",
"instance": "4bf92f3577b34da6a3ce929d0e0e4736",
"errors": [
{
"message": "transferId must be a valid UUID",
"location": "body.senderAccountId"
}
],
"upstream": {
"code": "AAC90",
"message": "Assinatura invalida"
}
}Trigger reconciliation sweep
Forces one immediate reconciliation cycle for the current tenant. This operator endpoint runs the same reconciliation sweep used by the scheduled background worker. Repeated calls with the same X-Idempotency key replay the cached response.
curl --request POST \
--url https://api.example.com/v1/transfers/reconciliation/tick \
--header 'Authorization: Bearer <token>' \
--header 'X-Idempotency: <x-idempotency>'package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/transfers/reconciliation/tick"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-Idempotency", "<x-idempotency>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}const options = {
method: 'POST',
headers: {'X-Idempotency': '<x-idempotency>', Authorization: 'Bearer <token>'}
};
fetch('https://api.example.com/v1/transfers/reconciliation/tick', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.example.com/v1/transfers/reconciliation/tick"
headers = {
"X-Idempotency": "<x-idempotency>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, headers=headers)
print(response.text){
"outcome": "success",
"sweptCount": 3,
"durationMs": 125
}{
"type": "https://errors.lerian.studio/v1/BTF-0001",
"title": "Bad Request",
"status": 400,
"detail": "invalid request body",
"code": "BTF-0001",
"category": "deterministic",
"requestId": "6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f",
"service": "plugin"
}{
"type": "https://errors.lerian.studio/v1/BTF-0401",
"title": "Unauthorized",
"status": 401,
"detail": "Missing Token",
"code": "BTF-0401",
"category": "plugin",
"requestId": "6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f",
"service": "plugin"
}{
"type": "https://errors.lerian.studio/v1/BTF-0405",
"title": "Forbidden",
"status": 403,
"detail": "the credential is not allowed to perform transfers:create on this request",
"code": "BTF-0405",
"category": "plugin",
"requestId": "6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f",
"service": "plugin"
}{
"type": "https://errors.lerian.studio/v1/BTF-0200",
"title": "Not Found",
"status": 404,
"detail": "transfer not found",
"code": "BTF-0200",
"requestId": "6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f",
"service": "plugin",
"category": "deterministic",
"instance": "4bf92f3577b34da6a3ce929d0e0e4736",
"errors": [
{
"message": "transferId must be a valid UUID",
"location": "body.senderAccountId"
}
],
"upstream": {
"code": "AAC90",
"message": "Assinatura invalida"
}
}{
"type": "https://errors.lerian.studio/v1/BTF-9009",
"title": "Conflict",
"status": 409,
"detail": "reconciliation cycle already in progress",
"code": "BTF-9009",
"category": "transient",
"requestId": "6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f",
"service": "plugin"
}{
"type": "https://errors.lerian.studio/v1/BTF-0200",
"title": "Not Found",
"status": 404,
"detail": "transfer not found",
"code": "BTF-0200",
"requestId": "6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f",
"service": "plugin",
"category": "deterministic",
"instance": "4bf92f3577b34da6a3ce929d0e0e4736",
"errors": [
{
"message": "transferId must be a valid UUID",
"location": "body.senderAccountId"
}
],
"upstream": {
"code": "AAC90",
"message": "Assinatura invalida"
}
}{
"type": "https://errors.lerian.studio/v1/BTF-0429",
"title": "Too Many Requests",
"status": 429,
"detail": "Rate limit exceeded",
"code": "BTF-0429",
"category": "rate_limit",
"requestId": "6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f",
"service": "plugin"
}{
"type": "https://errors.lerian.studio/v1/BTF-9000",
"title": "Internal Server Error",
"status": 500,
"detail": "Internal server error",
"code": "BTF-9000",
"category": "plugin",
"requestId": "6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f",
"service": "plugin"
}{
"type": "https://errors.lerian.studio/v1/BTF-0200",
"title": "Not Found",
"status": 404,
"detail": "transfer not found",
"code": "BTF-0200",
"requestId": "6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f",
"service": "plugin",
"category": "deterministic",
"instance": "4bf92f3577b34da6a3ce929d0e0e4736",
"errors": [
{
"message": "transferId must be a valid UUID",
"location": "body.senderAccountId"
}
],
"upstream": {
"code": "AAC90",
"message": "Assinatura invalida"
}
}{
"type": "https://errors.lerian.studio/v1/BTF-0200",
"title": "Not Found",
"status": 404,
"detail": "transfer not found",
"code": "BTF-0200",
"requestId": "6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f",
"service": "plugin",
"category": "deterministic",
"instance": "4bf92f3577b34da6a3ce929d0e0e4736",
"errors": [
{
"message": "transferId must be a valid UUID",
"location": "body.senderAccountId"
}
],
"upstream": {
"code": "AAC90",
"message": "Assinatura invalida"
}
}Autorizações
JWT Bearer token authentication. The tenantId is derived from the bearer token or authenticated request context and is not supplied through X-Organization-Id.
Cabeçalhos
Required idempotency key for safe retries. Use a UUID v4 or a unique business identifier, made of letters, digits, ., _, and -. If the same key is sent again and the original request was already processed, the cached response is returned.
See Retries and idempotency for details.
255^[a-zA-Z0-9._-]+$Resposta
Reconciliation sweep triggered successfully.
Result of the reconciliation sweep. skipped_operating_window indicates the sweep did not run because it was triggered outside the operating-hours window.
success, skipped_operating_window "success"
Number of transfers processed by the sweep.
3
Sweep duration in milliseconds.
125
Esta página foi útil?

