Endpoints - lafraga93/yapcip-challenge GitHub Wiki

Observação: O prefixo de acesso é /v1. Por padrão a aplicação irá rodar na porta 9000, portanto o endereço de consumo dos endpoints será: http://localhost:9000/v1

Realizar transferências entre usuários

/transactions

POST

Request

Exemplo de payload:

{
    "value" : 50.00,
    "payer" : 2,
    "payee" : 25
}

sendo,

value: É o valor da transação. Seu tipo é decimal e é de preenchimento obrigatório

payer: É o pagador. Seu tipo é integer e é de preenchimento obrigatório

payee: É o destinatário do valor. Seu tipo é integer e é de preenchimento obrigatório


Exemplo de requisição via cURL:

curl -X POST \
  http://localhost:9000/v1/transactions \
  -H 'Content-Type: application/json' \
  -d '{
    "value" : 50.00,
    "payer" : 2,
    "payee" : 25
}'

Response

  • Em caso de sucesso
{
    "message": "Transação realizada com sucesso!",
    "data": [
        "transaction_id": 1
    ]
}
  • Em caso de tentativa de envio de valores por usuário lojistas
{
    "message": "Somente usuários comuns podem realizar transferências.",
    "data": []
}
  • Em caso de insuficiência de saldo
{
    "message": "Saldo insuficiente para realizar a transação.",
    "data": []
}

Obs¹.: Esses são apenas alguns exemplos. Existe uma estrutura padrão de resposta, devendo apenas variar o seu conteúdo
Obs².: O código de status estará sempre presente no cabeçalho da resposta de acordo com a ocorrência

Realizar rollback de uma transação

/transactions/reverse

POST

Request

Exemplo de payload:

{
    "transaction" : 1
}

sendo,

transaction: É o identificador da transação. Seu tipo é integer e é de preenchimento obrigatório


Exemplo de requisição via cURL:

curl -X POST \
  http://localhost:9000/v1/transactions/reverse \
  -H 'Content-Type: application/json' \
  -d '{
    "transaction" : 1
}'

Response

  • Em caso de sucesso
{
    "message": "Operação realizada com sucesso!",
    "data": []
}