Table of Contents
Uma API desenvolvida para o teste técnico da Shopper.
Back-end de um serviço que gerencia a leitura individualizada de consumo de água e gás. Para facilitar a coleta da informação, o serviço utilizará IA para obter a medição através da foto de um medidor.
URL base: https://localhost:3333
| Método | Endpoint | Descrição | Body da requisição |
|---|---|---|---|
GET |
/<customer_list>/list?measure_type= |
Responsável por listar as medidas realizadas por um determinado cliente, podendo filtrar pelo tipo: "WATER" ou "GAS" | - |
POST |
/upload |
Responsável por receber uma imagem em base 64, consultar o Gemini e retornar a medida lida pela API | {
"image": "base64",
"customer_code": "string",
"measure_datetime": "datetime",
"measure_type": "WATER" ou "GAS"
} |
PATCH |
/confirm |
Responsável por confirmar ou corrigir o valor lido pelo LLM | {
"measure_uuid": "string",
"confirmed_value": integer
} |
GET /<cutomer_code>/list?measure_type=
| Status Code | Descrição | Resposta |
|---|---|---|
| 200 | Operação realizada com sucesso | {
"customer_code": string,
"measures": [
{
"measure_uuid": string,
"measure_datetime": datetime,
"measure_type": string,
"has_confirmed":boolean,
"image_url": string
},
{
"measure_uuid": string,
"measure_datetime": datetime,
"measure_type": string,
"has_confirmed":boolean,
"image_url": string
}
]
}
|
| 400 | Parâmetro measure type diferente de WATER ou GAS | {
"error_code": "INVALID_TYPE",
"error_description": “Tipo de medição não permitida”
} |
| 404 | Nenhum registro encontrado | {
"error_code": "MEASURES_NOT_FOUND",
"error_description": "Nenhuma leitura encontrada"
} |
POST /upload
| Status Code | Descrição | Resposta |
|---|---|---|
| 200 | Operação realizada com sucesso | {
"image_url": string,
"measure_value": integer,
"measure_uuid": string
}
|
| 400 | Os dados fornecidos no corpo da requisição são inválidos | {
"error_code": "INVALID_DATA",
"error_description": Dados inválidos. Por favor informe customer_code, measure_datetime, measure_type válidos e imagem no formato base64.
}
|
| 409 | Já existe uma leitura para este tipo no mês atual | {
"error_code": "DOUBLE_REPORT",
"error_description": "Leitura do mês já realizada"
} |
PATCH /confirm
| Status Code | Descrição | Resposta |
|---|---|---|
| 200 | Operação realizada com sucesso | {
"success": true
}
|
| 400 | Os dados fornecidos no corpo da requisição são inválidos | {
"error_code": "INVALID_DATA",
"error_description": Dados inválidos. Por favor informe measure_uuid e confirmed_value válidos.
} |
| 404 | Leitura não encontrada | {
"error_code": "MEASURE_NOT_FOUND",
"error_description": "Leitura não encontrada"
} |
| 409 | Leitura já confirmada | {
"error_code": "CONFIRMATION_DUPLICATE",
"error_description": "Leitura do mês já confirmada"
} |
Clone o projeto
git clone https://github.com/aliine98/teste-backend-shopperEntre no diretório do projeto
cd teste-backend-shopperInstale as depêndencias
npm installInicie o docker
docker compose upFeito com ❤️ por Aline Bevilacqua!