Parking-lot.api é uma API de serviço de controle de estacionamento para empresas.
Certifique-se de ter o Docker e o Docker Compose instalados em sua máquina antes de prosseguir.
- Clone o repositório:
git clone https://github.com/anti-duhring/parking-lot.api.git
- Navegue até o diretório do projeto:
cd <NOME_DO_DIRETÓRIO>
- Crie um arquivo .env: Na raiz do projeto, crie um arquivo chamado .env. Abra o arquivo .env em um editor de texto e defina as variáveis de ambiente necessárias.
DB_HOST=mysql
DB_PORT=3306
DB_USER=root
DB_PASSWORD=root
DB_NAME=parking_dev
JWT_SECRET_KEY=GFncQO5wrS
- Inicie os contêineres do Docker:
docker-compose up --build
- Acesse a API: Com os contêineres em execução, a API estará disponível em http://localhost:3000.
localhost/api
: URL Base.
POST
: Cadastra uma nova empresa no sistema- Body:
{ "name": "Baz", "password": "123456789", "cnpj": "12345678912341", "address": "Rua Foo", "phone": "88221999", "parkingSpots": { "car": 40, // Vagas para carro "motocycle": 50 // Vagas para moto } }
- Retorno:
{ company: DADOS_DA_EMPRESA, accessToken: TOKEN_DE_ACESSO, };
- Body:
POST
: Autentica a empresa- Body:
{ "cnpj": "12345678912341", "password": "123456789" }
- Retorno:
{ company: DADOS_DA_EMPRESA, accessToken: TOKEN_DE_ACESSO, };
- Body:
GET
: Obtém os dados de uma empresa- Retorno:
{ id: 'UUID', name: 'Company A', cnpj: '123456789', password: 'XXXXXXXX', address: '123 Street', phone: '1234567890', createdAt: "2023-05-22T20:41:26.833Z", deletedAt: null, updatedAt: "2023-05-22T20:41:26.833Z", parkingLot: null, vehicles: [], };
- Retorno:
PUT
: Atualiza os dados de uma empresaRequer token
- Body:
{ "name": "Baz", "cnpj": "12345678912341", "address": "Rua Foo", "phone": "88221999", "parkingSpots": { "car": 40, // Vagas para carro "motocycle": 50 // Vagas para moto } }
- Retorno:
{ id: 'UUID', name: 'Baz', cnpj: '12345678912341', address: 'Rua Foo', phone: '88221999', createdAt:"2023-05-22T20:41:26.833Z", deletedAt: null, updatedAt: "2023-05-22T20:41:26.833Z", parkingLot: null, vehicles: [], };
DELETE
: Deleta uma empresaRequer token
- Retorno:
GET
: Obtém os dados de um estacionamento- Retorno:
{ id: 'UUID', company: 'DADOS_DA_EMPRESA', totalCarSpots: 10, totalMotorcycleSpots: 20, totalSpots: 30, parkingEvents: [], createdAt: "2023-05-22T20:41:26.833Z", updatedAt: "2023-05-22T20:41:26.833Z", deletedAt: null, avaliableCarSpots: 10, avaliableMotorcycleSpots: 20, totalAvaliableSpots: 30, };
- Retorno:
PUT
: Atualiza os dados de um estacionamentoRequer token
- Body:
{ totalCarSpots: 15, };
- Retorno:
{ id: 'UUID', company: 'DADOS_DA_EMPRESA', totalCarSpots: 15, totalMotorcycleSpots: 20, totalSpots: 35, parkingEvents: [], createdAt: "2023-05-22T20:41:26.833Z", updatedAt: "2023-05-22T20:41:26.833Z", deletedAt: null, avaliableCarSpots: 15, avaliableMotorcycleSpots: 20, totalAvaliableSpots: 35, };
DELETE
: Deleta um estacionamentoRequer token
- Retorno:
POST
: Cria um veículo- Body:
{ "brand": "Ford", "model": "Fiesta", "color": "white", "plate": "HRQ-3171", "type": "car", "companyId": "{{COMPANY_ID}}" }
- Retorno:
{ "model": "Fiesta", "brand": "Ford", "color": "white", "plate": "HRQ-3171", "type": "car", "company": 'DADOS_DA_EMPRESA', "deletedAt": null, "id": "UUID", "createdAt": "2023-05-22T20:41:26.833Z", "updatedAt": "2023-05-22T20:41:26.833Z" }
- Body:
PUT
: Atualiza um veículoRequer token
- Body:
{ "brand": "Ferrari", }
- Retorno:
{ "model": "Fiesta", "brand": "Ferrari", "color": "white", "plate": "HRQ-3171", "type": "car", "company": 'DADOS_DA_EMPRESA', "deletedAt": null, "id": "UUID", "createdAt": "2023-05-22T20:41:26.833Z", "updatedAt": "2023-05-22T20:41:26.833Z" }
GET
: Obtém dados de um veículo- Retorno:
{ "model": "Fiesta", "brand": "Ford", "color": "white", "plate": "HRQ-3171", "type": "car", "company": 'DADOS_DA_EMPRESA', "deletedAt": null, "id": "UUID", "createdAt": "2023-05-22T20:41:26.833Z", "updatedAt": "2023-05-22T20:41:26.833Z" }
- Retorno:
DELETE
: Deleta um veículoRequer token
- Retorno:
POST
: Cadastra uma entrada no estacionamentoRequer token
- Body:
{ "parkingLotId": "{{PARKING_LOT_ID}}", "vehicleId": "{{VEHICLE_ID}}", "vehicleType": "car" }
- Retorno:
{ "vehicleType": "car", "dateTimeEntry": "2023-05-22T17:47:21.313Z", "parkingLot": 'DADOS_DO_ESTACIONAMENTO', "vehicle": 'DADOS_DO_VEICULO', "dateTimeExit": null, "id": "UUID" }
PUT
: Cadastra uma saída do estacionamentoRequer token
- Retorno:
{ "id": "UUID", "vehicleType": "car", "dateTimeEntry": "2023-05-22T17:47:21.000Z", "dateTimeExit": "2023-05-22T17:49:10.271Z" }