Habilitar e alterar moedas
Habilita uma moeda da plataforma, altera taxa e exibição, troca a moeda principal e remove uma moeda.
Quatro operações de escrita. Todas registram o evento no log de ações do painel (tipo settings).
Habilitar uma moeda
Cadastra na loja uma moeda do catálogo. O formato (símbolo, casas, separadores) é copiado do catálogo no momento da habilitação.
/api/v1/admin/currenciesAdminHabilita uma moeda
Corpo da requisição
codestringobrigatórioexchangeRatenumberobrigatórioenabledbooleanpadrão: truepositionintegerpadrão: 0Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/currencies" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"code": "EUR",
"exchangeRate": 0.1708,
"position": 2
}'Resposta
{
"code": "EUR",
"symbol": "€",
"decimals": 2,
"decimalSep": ",",
"thousandsSep": ".",
"symbolAfter": true,
"symbolSpace": true,
"enabled": true,
"isPrimary": false,
"exchangeRate": 0.1708,
"position": 2,
"autoUpdate": false,
"autoSource": "ptax",
"marginPct": 0,
"roundingRule": "none"
}Campos da resposta
codestringsymbolstringdecimalsintegerdecimalSepstringthousandsSepstringsymbolAfterbooleantrue escreve o símbolo depois do valor.symbolSpacebooleanenabledbooleanisPrimarybooleanexchangeRatenumberpositionintegerautoUpdatebooleanautoSourcestringptaxawesomeapiptax ou awesomeapi.marginPctnumberroundingRulestringnoneend_90integernone, end_90 ou integer.Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | code vazio ou corpo inválido. | {"error":"code is required"} |
| 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"} |
| 409 | A moeda já está habilitada. | {"error":"currency already enabled","detail":"currency EUR already enabled"} |
| 422 | Código fora do catálogo ou taxa inválida (zero, negativa ou não finita). | {"error":"invalid exchange rate","detail":"exchange rate must be > 0"} |
Alterar uma moeda
Atualização parcial: só os campos enviados mudam. Sem nenhum campo, devolve a moeda como está.
/api/v1/admin/currencies/{code}AdminAltera uma moeda
Parâmetros de caminho
codestringobrigatórioCorpo da requisição
enabledbooleanexchangeRatenumber1.positionintegerautoUpdatebooleanautoSourcestringptaxawesomeapiptax (padrão) ou awesomeapi.marginPctnumberroundingRulestringnoneend_90integernone, end_90 ou integer.Exemplo de requisição
curl -X PATCH "$BASE_URL/api/v1/admin/currencies/EUR" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"exchangeRate": 0.17,
"autoUpdate": true,
"marginPct": 2
}'Resposta
{
"code": "EUR",
"symbol": "€",
"decimals": 2,
"decimalSep": ",",
"thousandsSep": ".",
"symbolAfter": true,
"symbolSpace": true,
"enabled": true,
"isPrimary": false,
"exchangeRate": 0.17,
"position": 2,
"autoUpdate": true,
"autoSource": "ptax",
"marginPct": 2,
"roundingRule": "none"
}Campos da resposta
codestringsymbolstringdecimalsintegerdecimalSepstringthousandsSepstringsymbolAfterbooleantrue escreve o símbolo depois do valor.symbolSpacebooleanenabledbooleanisPrimarybooleanexchangeRatenumberpositionintegerautoUpdatebooleanautoSourcestringptaxawesomeapiptax ou awesomeapi.marginPctnumberroundingRulestringnoneend_90integernone, end_90 ou integer.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"} |
| 404 | Moeda não cadastrada. | {"error":"currency not enabled on this tenant"} |
| 409 | Tentou desativar a principal, ou desativar moeda usada por mercado ativo. | {"error":"cannot disable primary currency","detail":"..."} |
| 422 | Taxa inválida, ou taxa diferente de 1 na principal. | {"error":"primary currency rate must be 1.0","detail":"..."} |
Definir a moeda principal
Promove uma moeda habilitada a principal e refaz a taxa de todas as outras: a nova taxa de cada uma é a antiga dividida pela taxa da nova principal. Roda em uma transação.
/api/v1/admin/currencies/{code}/set-primaryAdminDefine a moeda principal
Parâmetros de caminho
codestringobrigatórioExemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/currencies/EUR/set-primary" \
-H "Authorization: Bearer $TOKEN"Resposta
Resposta vazia.
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"} |
| 404 | Moeda não cadastrada. | {"error":"currency not enabled on this tenant"} |
| 409 | A moeda está desativada. | {"error":"cannot promote disabled currency","detail":"..."} |
Remover uma moeda
Apaga o cadastro da moeda na loja (não a do catálogo). É idempotente: moeda que não está cadastrada responde 204.
/api/v1/admin/currencies/{code}AdminRemove uma moeda
Parâmetros de caminho
codestringobrigatórioExemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/admin/currencies/EUR" \
-H "Authorization: Bearer $TOKEN"Resposta
Resposta vazia.
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"} |
| 409 | É a moeda principal, ou está em uso por um mercado ativo. | {"error":"cannot remove primary currency","detail":"..."} |