Esta é uma API para gerenciamento de veículos, usuários e companhias. Permite criar, listar, atualizar e excluir registros dessas entidades, além de associar veículos a usuários ou companhias.
A API possui as seguintes entidades:
- Pertencem a um único usuário ou a apenas uma única companhia.
- Campos obrigatórios: placa e alias.
- Podem pertencer a uma ou nenhuma companhia.
- Campos obrigatórios: nome, CPF, telefone e email.
- Campos obrigatórios: nome, CNPJ, telefone e email.
A API possui testes de integração para garantir a qualidade e o correto funcionamento dos endpoints. Os testes são executados usando a biblioteca de testes Jest e abrangem cenários como criação, atualização e exclusão de registros, bem como associação de veículos a usuários ou companhias.
Para executar os testes, utilize o comando npm test
.
A API está configurada com um pipeline de CI/CD usando uma ferramenta de integração contínua, como o Jenkins ou o GitLab CI/CD. O pipeline é responsável por executar os testes de integração, garantindo que todas as alterações de código estejam funcionando corretamente antes de serem implantadas em produção.
Esta API serve como base para implementações adicionais, como autenticação de usuários, permissões de acesso, paginação de resultados, entre outros recursos. Sinta-se à vontade para explorar e adicionar novas funcionalidades conforme necessário.
Antes de executar a API, certifique-se de configurar corretamente as variáveis de ambiente, como as informações de conexão com o banco de dados e as chaves de API necessárias.
POST /users - STATUS 200
[
{
"name": "Matheus Silva",
"email": "[email protected]",
"phone": "(99) 9999-9999",
"password": "@Teste123",
"cpf": "12345678978"
}
]
POST /users - FORMATO DA RESPOSTA - STATUS 200
[
{
"name": "Matheus Silva",
"email": "[email protected]",
"phone": "(99) 9999-9999",
"cpf": "12345678978",
"id": "da2cddd1-5412-4421-8586-2f1c5a34a8d7"
}
]
POST /login - STATUS 200
[
{
"email": "[email protected]",
"password": "@Teste123"
}
]
POST /login - FORMATO DA RESPOSTA - STATUS 200
[
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Im1hdGhldXNAZXhhbXBsZS5jb20iLCJpZCI6ImRhMmNkZGQxLTU0MTItNDQyMS04NTg2LTJmMWM1YTM0YThkNyIsImlhdCI6MTY4ODc1NTgyNCwiZXhwIjoxNjg4OTI4NjI0LCJzdWIiOiJkYTJjZGRkMS01NDEyLTQ0MjEtODU4Ni0yZjFjNWEzNGE4ZDcifQ.ADeQ3n-tqCZHkrCFbMuRflO2D-_QhTsTRqB5RbHULz0"
}
]
PATCH /users/:id - STATUS 200
[
{
"name": "Matheus Silva Vicente"
}
]
PATCH /users/:id - FORMATO DA RESPOSTA - STATUS 200
[
{
"id": "da2cddd1-5412-4421-8586-2f1c5a34a8d7",
"name": "Matheus Silva Vicente",
"email": "[email protected]",
"phone": "(99) 9999-9999",
"cpf": "12345678978"
}
]
DELETE /users/:id - FORMATO DA RESPOSTA - STATUS 204
status 204
POST /veiculos/:id(id do Usuario)-FORMATO DA RESPOSTA - 201
{
{
"brand": "Marca",
"model": "Modelo do Veículo",
"year": "1991",
"plate": "br5r984",
}
}
POST /veiculos/:id(id do Usuario) - FORMATO DA RESPOSTA - STATUS 201
{
"brand": "Marca",
"model": "Modelo do Veículo",
"year": "1991",
"plate": "br5r984",
"createdBy": "a50b45fd-db81-4668-bc56-3165a0e94734",
"id": "021e40fb-43b4-4437-9d0e-25b478cc320b"
}
PATCH /veiculo/:id(id do veiculo ) - FORMATO DA REQUISIÇÃO
{
"id": "021e40fb-43b4-4437-9d0e-25b478cc320b",
"brand": "Marca2",
"model": "Modelo do Veículo",
"year": "1991",
"plate": "br5r984",
"createdBy": "a50b45fd-db81-4668-bc56-3165a0e94734"
}
PATCH /veiculos/:id(id do veiculo) - FORMATO DA RESPOSTA - STATUS 200
[
{
"id": "021e40fb-43b4-4437-9d0e-25b478cc320b",
"brand": "Marca2",
"model": "Modelo do Veículo",
"year": "1991",
"plate": "br5r984",
"createdBy": "a50b45fd-db81-4668-bc56-3165a0e94734"
}
]
GET /veiculos/:id(id do veiculo) - FORMATO DA RESPOSTA - STATUS 200
[
{
"id": "021e40fb-43b4-4437-9d0e-25b478cc320b",
"brand": "Marca2",
"model": "Modelo do Veículo",
"year": "1991",
"plate": "br5r984",
"createdBy": "a50b45fd-db81-4668-bc56-3165a0e94734"
}
]
DELETE /veiculos/:id(id do veiculo) - FORMATO DA RESPOSTA - STATUS 204
status 204
POST /users/:id(id do usuario)/veiculos/:id(id do veiculo) - FORMATO DA RESPOSTA
{
"id": "a50b45fd-db81-4668-bc56-3165a0e94734",
"name": "Matheus Silva",
"email": "[email protected]",
"phone": "(99) 9999-9999",
"cpf": "12345678978",
"veiculos": [
{
"id": "021e40fb-43b4-4437-9d0e-25b478cc320b",
"brand": "Marca2",
"model": "Modelo do Veículo",
"year": "1991",
"plate": "br5r984",
"createdBy": "a50b45fd-db81-4668-bc56-3165a0e94734"
}
]
}
REMOVER VEICULO EM PROGRESSO:
DELETE /veiculos/:id(id do veiculo) - FORMATO DA RESPOSTA - STATUS 204
status 204
POST /Companies/:id(id do usuario) - FORMATO DA REQUISIÇÃO - STATUS 204
{
"name": "Empresa 1",
"email": "[email protected]",
"phone": "(99) 99999-9999",
"cnpj": "12345678912345"
}
POST /Companies/:id(id do usuario) - FORMATO DA RESPOSTA - STATUS 200
[
{
"name": "Empresa 1",
"email": "[email protected]",
"phone": "(99) 99999-9999",
"cnpj": "12345678912345",
"createdBy": "a50b45fd-db81-4668-bc56-3165a0e94734",
"id": "5f89c409-6d87-477e-b9c1-830e49d43114"
}
]
PATCH /companies/:id(id da companhia) - FORMATO DA REQUISIÇÃO - STATUS 200
"so deve ser preenchido o compo que sera editado"
{
"name": "Empresa 2"
}
PATCH /companies/:id(id da companhia) - FORMATO DA RESPOSTA - STATUS 200
{
"id": "5f89c409-6d87-477e-b9c1-830e49d43114",
"name": "Empresa 2",
"email": "[email protected]",
"phone": "(99) 99999-9999",
"cnpj": "12345678912345",
"createdBy": "a50b45fd-db81-4668-bc56-3165a0e94734"
}
DELETE /companies/:id(id da companhia) - FORMATO DA RESPOSTA - STATUS 204
status 204
POST /users/:id(id do usuario)/companies/:id(id da companhia) - FORMATO DA RESPOSTA - STATUS 204
{
"id": "a50b45fd-db81-4668-bc56-3165a0e94734",
"name": "Matheus Silva",
"email": "[email protected]",
"phone": "(99) 9999-9999",
"cpf": "12345678978",
"companies": {
"id": "5f89c409-6d87-477e-b9c1-830e49d43114",
"name": "Empresa 2",
"email": "[email protected]",
"phone": "(99) 99999-9999",
"cnpj": "12345678912345",
"createdBy": "a50b45fd-db81-4668-bc56-3165a0e94734"
}
}
REMOVER VEICULO EM PROGRESSO:
DELETE /companies/:id(id da companhia) - FORMATO DA RESPOSTA - STATUS 204
status 204