Taxas de câmbio
Atualiza a taxa de uma moeda agora a partir da cotação oficial e consulta o histórico de cada tentativa.
Com autoUpdate ligado, a plataforma atualiza a taxa sozinha. Estas duas rotas deixam você disparar a atualização na hora e auditar o que aconteceu.
Atualizar a taxa agora
Busca a cotação na fonte configurada (ptax, com awesomeapi de reserva), aplica a margem e grava a nova taxa. A moeda principal não pode ser atualizada. Falha de fonte não vira erro HTTP: o resultado vem com status: failed.
/api/v1/admin/currencies/{code}/refresh-rateAdminAtualiza a taxa agora
Parâmetros de caminho
codestringobrigatórioCódigo da moeda.
Exemplo de requisição
bash
curl -X POST "$BASE_URL/api/v1/admin/currencies/EUR/refresh-rate" \
-H "Authorization: Bearer $TOKEN"Resposta
200Resultado da atualização
json
{
"code": "EUR",
"status": "applied",
"appliedRate": 0.1712
}Campos da resposta
codestringMoeda.
statusstringappliedunchangedfailedblocked_variationapplied (nova taxa gravada), unchanged (mesma taxa), failed (fonte indisponível) ou blocked_variation (variação maior que 15%, taxa mantida).appliedRatenumberTaxa em vigor depois da tentativa.
errorstringPresente quando
status é failed.Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não tem o privilégio manage_settings (administrador raiz e administrador total passam). | {"error":"insufficient privileges","required":"manage_settings"} |
| 422 | Tentativa de atualizar a moeda principal. | {"error":"primary currency rate is fixed at 1.0","detail":"..."} |
| 500 | Moeda não cadastrada ou erro interno. | {"error":"failed to refresh rate","detail":"currency XXX not enabled"} |
Consultar o histórico
Uma linha por tentativa de atualização (automática ou manual), da mais recente para a mais antiga.
/api/v1/admin/currencies/{code}/rate-historyAdminHistórico de taxas
Parâmetros de caminho
codestringobrigatórioCódigo da moeda.
Parâmetros de consulta
pageintegerpadrão: 1Página.
per_pageintegerpadrão: 50Itens por página, de 1 a 200; fora disso vale 50.
Exemplo de requisição
bash
curl "$BASE_URL/api/v1/admin/currencies/EUR/rate-history?page=1&per_page=20" \
-H "Authorization: Bearer $TOKEN"Resposta
200Histórico
json
{
"items": [
{
"createdAt": "2026-10-11T12:00:00Z",
"source": "ptax",
"rawRate": 5.85,
"marginPct": 0,
"appliedRate": 0.1709,
"status": "applied"
}
],
"total": 1
}Campos da resposta
totalintegerTotal de linhas.
items[].sourcestringFonte que respondeu.
items[].rawRatenumberCotação bruta, em moeda principal por unidade estrangeira.
items[].marginPctnumberMargem usada.
items[].appliedRatenumberTaxa gravada.
items[].statusstringapplied, unchanged, failed ou blocked_variation.items[].errorstringMotivo, quando falhou.
Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não tem o privilégio manage_settings (administrador raiz e administrador total passam). | {"error":"insufficient privileges","required":"manage_settings"} |