A CegonhaExpress API é uma REST API completa para gerenciamento de entregas de bebês reborn, oferecendo funcionalidades de criação, acompanhamento e cancelamento de encomendas, além de consulta de endereços via CEP.
- Versão: 1.1.0
- Base URL:
http://localhost:8080/api - Formato: JSON
- Autenticação: Não requerida (projeto acadêmico)
- Documentação Interativa:
/swagger-ui.html
Cria uma nova encomenda de entrega com cálculo automático de frete.
POST /api/encomendas
Content-Type: application/jsonCorpo da Requisição:
{
"enderecoDestino": {
"cep": "01001-000",
"logradouro": "Praça da Sé",
"numero": "123",
"complemento": "Apto 45",
"bairro": "Sé",
"cidade": "São Paulo",
"uf": "SP",
"referencia": "Próximo à Catedral"
},
"tipoEntrega": "PADRAO",
"descricaoBebe": "Bebê Alice, 50cm, cabelo loiro cacheado, olhos azuis",
"pesoKg": 2.5,
"alturaCm": 50.0,
"valorDeclarado": 150.00
}Resposta (201 Created):
{
"codigo": "CE1735834567123",
"status": "Pendente",
"valorFrete": "R$ 67,25",
"tempoEstimadoEntrega": "5 dias úteis"
}Retorna lista completa de encomendas cadastradas.
GET /api/encomendasResposta (200 OK):
[
{
"codigo": "CE1234567890123",
"status": "Em Trânsito",
"valorFrete": "R$ 45,50",
"tempoEstimadoEntrega": "3 dias úteis"
},
{
"codigo": "CE9876543210987",
"status": "Entregue",
"valorFrete": "R$ 32,75",
"tempoEstimadoEntrega": "1 dia útil"
}
]Retorna apenas encomendas em andamento (exclui entregues e canceladas).
GET /api/encomendas/ativasResposta (200 OK):
[
{
"codigo": "CE1234567890123",
"status": "Pendente",
"valorFrete": "R$ 45,50",
"tempoEstimadoEntrega": "3 dias úteis"
}
]Localiza encomenda específica pelo código de rastreamento.
GET /api/encomendas/{codigo}Parâmetros:
codigo(path, required): Código único da encomenda (formato: CE + dígitos)
Exemplo:
GET /api/encomendas/CE1234567890123Resposta (200 OK):
{
"codigo": "CE1234567890123",
"status": "Em Trânsito",
"valorFrete": "R$ 45,50",
"tempoEstimadoEntrega": "3 dias úteis"
}Avança o status para o próximo estado válido na sequência.
PUT /api/encomendas/{codigo}/statusSequência de Status:
PENDENTE → CONFIRMADA → EM_TRANSITO → ENTREGUE
Exemplo:
PUT /api/encomendas/CE1234567890123/statusResposta (200 OK):
"CONFIRMADA"Cancela uma encomenda ativa com motivo obrigatório.
PUT /api/encomendas/{codigo}/cancelar
Content-Type: application/jsonCorpo da Requisição:
{
"motivo": "Cliente solicitou cancelamento devido a mudança de endereço"
}Resposta (200 OK):
"CANCELADA"Busca informações completas de endereço brasileiro via CEP.
GET /api/enderecos/cep/{cep}Parâmetros:
cep(path, required): CEP brasileiro (formatos: 00000-000 ou 00000000)
Exemplo:
GET /api/enderecos/cep/01001-000Resposta (200 OK):
{
"cep": "01001-000",
"logradouro": "Praça da Sé",
"complemento": "lado ímpar",
"bairro": "Sé",
"localidade": "São Paulo",
"uf": "SP",
"ibge": "3550308",
"gia": "1004",
"ddd": "11",
"siafi": "7107"
}Retorna catálogo completo de bebês reborn com especificações.
GET /api/encomendas/bebesResposta (200 OK):
[
{
"id": "BB001",
"nome": "Alice",
"linkImg": "https://exemplo.com/bebes/alice.jpg",
"descricao": "Bebê reborn com cabelo loiro cacheado e olhos azuis",
"acessorios": "Vestido rosa, sapatinhos, chupeta",
"peso_kg": 2.5,
"altura_cm": 50.0
},
{
"id": "BB002",
"nome": "Miguel",
"linkImg": "https://exemplo.com/bebes/miguel.jpg",
"descricao": "Bebê reborn com cabelo castanho e olhos verdes",
"acessorios": "Macacão azul, boné, mamadeira",
"peso_kg": 2.8,
"altura_cm": 52.0
}
]{
"enderecoDestino": "EnderecoDTO",
"tipoEntrega": "TipoEntrega",
"descricaoBebe": "string (max: 500)",
"pesoKg": "number (0.1-15.0)",
"alturaCm": "number (20.0-100.0)",
"valorDeclarado": "number (≥0.0)"
}{
"cep": "string (pattern: \\d{5}-?\\d{3})",
"logradouro": "string (required)",
"numero": "string",
"complemento": "string",
"bairro": "string (required)",
"cidade": "string (required)",
"uf": "string (required)",
"referencia": "string"
}{
"codigo": "string",
"status": "string",
"valorFrete": "string (formatted)",
"tempoEstimadoEntrega": "string (formatted)"
}{
"id": "string",
"nome": "string",
"linkImg": "string (URL)",
"descricao": "string",
"acessorios": "string",
"peso_kg": "number",
"altura_cm": "number"
}{
"cep": "string",
"logradouro": "string",
"complemento": "string",
"bairro": "string",
"localidade": "string",
"uf": "string",
"ibge": "string",
"gia": "string",
"ddd": "string",
"siafi": "string"
}{
"motivo": "string (required, max: 500)"
}| Código | Descrição | Quando Ocorre |
|---|---|---|
| 200 | OK | Operação realizada com sucesso |
| 201 | Created | Encomenda criada com sucesso |
| 204 | No Content | Lista vazia ou nenhuma ação possível |
| 400 | Bad Request | Dados inválidos ou formato incorreto |
| 404 | Not Found | Recurso não encontrado |
| 409 | Conflict | Conflito de estado de negócio |
| 415 | Unsupported Media Type | Content-Type incorreto |
| 503 | Service Unavailable | Serviço externo indisponível |
| Status | Descrição |
|---|---|
| PENDENTE | Encomenda criada, aguardando confirmação |
| CONFIRMADA | Encomenda confirmada, preparando envio |
| EM_TRANSITO | Encomenda em trânsito para destino |
| ENTREGUE | Encomenda entregue com sucesso |
| CANCELADA | Encomenda cancelada |
| Tipo | Descrição | Prazo Mínimo |
|---|---|---|
| EXPRESSA | Entrega expressa | 1 dia útil |
| PADRAO | Entrega padrão | 3 dias úteis |
| ECONOMICA | Entrega econômica | 7 dias úteis |
GET /api/enderecos/cep/01001-000POST /api/encomendas
{
"enderecoDestino": {
"cep": "01001-000",
"logradouro": "Praça da Sé",
"numero": "123",
"bairro": "Sé",
"cidade": "São Paulo",
"uf": "SP"
},
"tipoEntrega": "PADRAO",
"descricaoBebe": "Bebê Alice com vestido rosa"
}GET /api/encomendas/CE1735834567123PUT /api/encomendas/CE1735834567123/statusPUT /api/encomendas/CE1735834567123/cancelar
{
"motivo": "Cliente desistiu da compra"
}GET /api/enderecos/cep/abc123
400 Bad Request
{
"timestamp": "2025-01-15 14:30:00",
"status": 400,
"error": "Parâmetro inválido",
"message": "CEP precisa estar com formatação correta",
"path": "/api/enderecos/cep/abc123"
}GET /api/encomendas/CE9999999999999
404 Not Found
{
"timestamp": "2025-01-15 14:30:00",
"status": 404,
"error": "Recurso não encontrado",
"message": "Não existe uma encomenda com este Código",
"path": "/api/encomendas/CE9999999999999"
}POST /api/encomendas
{ "enderecoDestino": { "cep": "invalid" } }
400 Bad Request
{
"timestamp": "2025-01-15 14:30:00",
"status": 400,
"error": "Erro de validação",
"message": "Dados fornecidos são inválidos",
"path": "/api/encomendas",
"fieldErrors": {
"enderecoDestino.cep": "CEP deve ter formato válido (00000-000)",
"descricaoBebe": "Descrição do bebê é obrigatória"
}
}- ViaCEP: Consulta de endereços brasileiros
- Google Maps Distance Matrix: Cálculo de distâncias reais para frete
- Spring Boot 3.5.0
- Java 21
- JPA/Hibernate
- Bean Validation
- OpenAPI 3 / Swagger
# Iniciar aplicação
./mvnw spring-boot:run
# Acessar Swagger UI
http://localhost:8080/swagger-ui.html
# Console H2 (desenvolvimento)
http://localhost:8080/h2-consolePara dúvidas sobre a API:
- Documentação Interativa:
/swagger-ui.html - Projeto: CegonhaExpress
- Versão: 1.1.0
Documentação gerada automaticamente para o projeto acadêmico CegonhaExpress - FATEC 2025 🚀