Documentação da Issue: Solicitação de Corridas
Descrição
Usuários podem solicitar corridas especificando o ponto de partida e destino. Esta funcionalidade permite que um usuário inicie uma solicitação de corrida fornecendo os detalhes necessários para encontrar um motorista disponível e iniciar a corrida.
Requisição
A solicitação deve ser feita via uma chamada POST para o endpoint /api/rides/request
.
JSON de Requisição
O corpo da requisição deve ser enviado no formato JSON e deve incluir os seguintes campos:
userId
: ID do usuário que está solicitando a corrida.
pickupLocation
: Objeto contendo as informações do ponto de partida.
latitude
: Latitude do ponto de partida.
longitude
: Longitude do ponto de partida.
address
: (Opcional) Endereço do ponto de partida.
dropoffLocation
: Objeto contendo as informações do destino.
latitude
: Latitude do destino.
longitude
: Longitude do destino.
address
: (Opcional) Endereço do destino.
Exemplo de JSON de requisição:
{
"userId": "12345",
"pickupLocation": {
"latitude": -23.561414,
"longitude": -46.656540,
"address": "Av. Paulista, 1000, São Paulo, SP"
},
"dropoffLocation": {
"latitude": -23.550520,
"longitude": -46.633309,
"address": "Praça da Sé, São Paulo, SP"
}
}
Resposta
A resposta será um JSON contendo os detalhes da solicitação de corrida, incluindo o status da solicitação e, se disponível, os detalhes do motorista e do veículo que atenderão à solicitação.
JSON de Resposta
A resposta bem-sucedida incluirá os seguintes campos:
rideId
: ID da corrida criada.
status
: Status da solicitação da corrida (ex: pending
, accepted
, rejected
).
driver
: (Opcional) Objeto contendo informações sobre o motorista.
driverId
: ID do motorista.
name
: Nome do motorista.
rating
: Avaliação do motorista.
vehicle
: Objeto contendo informações sobre o veículo.
make
: Marca do veículo.
model
: Modelo do veículo.
plateNumber
: Placa do veículo.
estimatedPickupTime
: Estimativa de tempo para o motorista chegar ao ponto de partida.
estimatedFare
: Estimativa do valor da corrida.
Exemplo de JSON de resposta:
{
"rideId": "67890",
"status": "pending",
"driver": {
"driverId": "54321",
"name": "João Silva",
"rating": 4.8,
"vehicle": {
"make": "Toyota",
"model": "Corolla",
"plateNumber": "ABC-1234"
}
},
"estimatedPickupTime": "2024-06-20T14:30:00Z",
"estimatedFare": 35.50
}
Possíveis Erros
A API pode retornar os seguintes códigos de erro:
400 Bad Request
: Se algum campo obrigatório estiver ausente ou se os valores forem inválidos.
401 Unauthorized
: Se o usuário não estiver autenticado.
500 Internal Server Error
: Se ocorrer um erro inesperado no servidor.
Exemplo de Resposta de Erro
{
"error": "Bad Request",
"message": "pickupLocation.latitude is required"
}
Considerações
- A localização (latitude e longitude) deve ser validada para garantir que seja uma coordenada válida.
- O serviço deve assegurar que o usuário está autenticado antes de permitir a solicitação de corrida.
- O status inicial da solicitação de corrida será
pending
até que um motorista aceite a corrida.
- O sistema deve lidar com situações em que não há motoristas disponíveis e retornar uma mensagem apropriada ao usuário.