API Endpoints
Esta seção documenta todos os endpoints disponíveis na API de Gerenciamento de Carros.
Autenticação
/api/v1/auth/token - POST
Gera um token de acesso JWT.
Parâmetros de Requisição:
{
"email": "string",
"password": "string"
}
Resposta de Sucesso (200):
{
"access_token": "string",
"token_type": "bearer"
}
Erros Comuns: - 401: Email ou senha incorretos
/api/v1/auth/refresh_token - POST
Atualiza o token de acesso JWT.
Cabeçalhos Requeridos: - Authorization: Bearer {token}
Resposta de Sucesso (200):
{
"access_token": "string",
"token_type": "bearer"
}
Usuários
/api/v1/users/ - POST
Cria um novo usuário.
Parâmetros de Requisição:
{
"username": "string",
"email": "string",
"password": "string"
}
Resposta de Sucesso (201):
{
"id": 1,
"username": "string",
"email": "string",
"created_at": "2023-01-01T00:00:00",
"updated_at": "2023-01-01T00:00:00"
}
/api/v1/users/ - GET
Lista todos os usuários (requer autenticação).
Cabeçalhos Requeridos: - Authorization: Bearer {token}
Parâmetros de Consulta:
- offset: Número de registros a pular (padrão: 0)
- limit: Limite de registros (padrão: 100, máximo: 100)
Resposta de Sucesso (200):
{
"users": [...],
"offset": 0,
"limit": 100
}
/api/v1/users/{user_id} - GET
Obtém detalhes de um usuário específico (requer autenticação).
Cabeçalhos Requeridos: - Authorization: Bearer {token}
Resposta de Sucesso (200):
{
"id": 1,
"username": "string",
"email": "string",
"created_at": "2023-01-01T00:00:00",
"updated_at": "2023-01-01T00:00:00"
}
/api/v1/users/{user_id} - PUT
Atualiza um usuário existente (requer autenticação).
Cabeçalhos Requeridos: - Authorization: Bearer {token}
Parâmetros de Requisição:
{
"username": "string",
"email": "string",
"password": "string"
}
Resposta de Sucesso (200):
{
"id": 1,
"username": "string",
"email": "string",
"created_at": "2023-01-01T00:00:00",
"updated_at": "2023-01-01T00:00:00"
}
/api/v1/users/{user_id} - DELETE
Exclui um usuário (requer autenticação).
Cabeçalhos Requeridos: - Authorization: Bearer {token}
Resposta de Sucesso (204): - Sem conteúdo
Marcas
/api/v1/brands/ - POST
Cria uma nova marca.
Cabeçalhos Requeridos: - Authorization: Bearer {token}
Parâmetros de Requisição:
{
"name": "string",
"description": "string"
}
Resposta de Sucesso (201):
{
"id": 1,
"name": "string",
"is_active": true,
"description": "string",
"created_at": "2023-01-01T00:00:00",
"updated_at": "2023-01-01T00:00:00"
}
/api/v1/brands/ - GET
Lista todas as marcas (requer autenticação).
Cabeçalhos Requeridos: - Authorization: Bearer {token}
Parâmetros de Consulta:
- offset: Número de registros a pular (padrão: 0)
- limit: Limite de registros (padrão: 100, máximo: 100)
- search: Pesquisa por nome de marca
- is_active: Filtra por status ativo
Resposta de Sucesso (200):
{
"brands": [...],
"offset": 0,
"limit": 100
}
/api/v1/brands/{brand_id} - GET
Obtém detalhes de uma marca específica (requer autenticação).
Cabeçalhos Requeridos: - Authorization: Bearer {token}
Resposta de Sucesso (200):
{
"id": 1,
"name": "string",
"is_active": true,
"description": "string",
"created_at": "2023-01-01T00:00:00",
"updated_at": "2023-01-01T00:00:00"
}
/api/v1/brands/{brand_id} - PUT
Atualiza uma marca existente (requer autenticação).
Cabeçalhos Requeridos: - Authorization: Bearer {token}
Parâmetros de Requisição:
{
"name": "string",
"description": "string",
"is_active": true
}
Resposta de Sucesso (200):
{
"id": 1,
"name": "string",
"is_active": true,
"description": "string",
"created_at": "2023-01-01T00:00:00",
"updated_at": "2023-01-01T00:00:00"
}
/api/v1/brands/{brand_id} - DELETE
Exclui uma marca (requer autenticação).
Cabeçalhos Requeridos: - Authorization: Bearer {token}
Resposta de Sucesso (204): - Sem conteúdo
Carros
/api/v1/cars/ - POST
Cria um novo carro.
Cabeçalhos Requeridos: - Authorization: Bearer {token}
Parâmetros de Requisição:
{
"model": "string",
"factory_year": 2023,
"model_year": 2023,
"color": "string",
"plate": "string",
"fuel_type": "gasoline|ethanol|flex|diesel|electric|hybrid",
"transmission": "manual|automatic|semi_automatic|cvt",
"price": 50000.00,
"description": "string",
"is_available": true,
"brand_id": 1,
"owner_id": 1
}
Resposta de Sucesso (201):
{
"id": 1,
"model": "string",
"factory_year": 2023,
"model_year": 2023,
"color": "string",
"plate": "string",
"fuel_type": "gasoline",
"transmission": "manual",
"price": 50000.00,
"description": "string",
"is_available": true,
"brand_id": 1,
"owner_id": 1,
"created_at": "2023-01-01T00:00:00",
"updated_at": "2023-01-01T00:00:00",
"brand": {...},
"owner": {...}
}
/api/v1/cars/ - GET
Lista todos os carros do usuário autenticado (requer autenticação).
Cabeçalhos Requeridos: - Authorization: Bearer {token}
Parâmetros de Consulta:
- offset: Número de registros a pular (padrão: 0)
- limit: Limite de registros (padrão: 100, máximo: 100)
- search: Pesquisa por modelo, cor ou placa
- brand_id: Filtra por marca
- owner_id: Filtra por proprietário
- fuel_type: Filtra por tipo de combustível
- transmission: Filtra por tipo de transmissão
- is_available: Filtra por disponibilidade
- min_price: Preço mínimo
- max_price: Preço máximo
Resposta de Sucesso (200):
{
"cars": [...],
"offset": 0,
"limit": 100
}
/api/v1/cars/{car_id} - GET
Obtém detalhes de um carro específico (requer autenticação e propriedade).
Cabeçalhos Requeridos: - Authorization: Bearer {token}
Resposta de Sucesso (200):
{
"id": 1,
"model": "string",
"factory_year": 2023,
"model_year": 2023,
"color": "string",
"plate": "string",
"fuel_type": "gasoline",
"transmission": "manual",
"price": 50000.00,
"description": "string",
"is_available": true,
"brand_id": 1,
"owner_id": 1,
"created_at": "2023-01-01T00:00:00",
"updated_at": "2023-01-01T00:00:00",
"brand": {...},
"owner": {...}
}
/api/v1/cars/{car_id} - PUT
Atualiza um carro existente (requer autenticação e propriedade).
Cabeçalhos Requeridos: - Authorization: Bearer {token}
Parâmetros de Requisição:
{
"model": "string",
"factory_year": 2023,
"model_year": 2023,
"color": "string",
"plate": "string",
"fuel_type": "gasoline|ethanol|flex|diesel|electric|hybrid",
"transmission": "manual|automatic|semi_automatic|cvt",
"price": 50000.00,
"description": "string",
"is_available": true,
"brand_id": 1,
"owner_id": 1
}
Resposta de Sucesso (200):
{
"id": 1,
"model": "string",
"factory_year": 2023,
"model_year": 2023,
"color": "string",
"plate": "string",
"fuel_type": "gasoline",
"transmission": "manual",
"price": 50000.00,
"description": "string",
"is_available": true,
"brand_id": 1,
"owner_id": 1,
"created_at": "2023-01-01T00:00:00",
"updated_at": "2023-01-01T00:00:00",
"brand": {...},
"owner": {...}
}
/api/v1/cars/{car_id} - DELETE
Exclui um carro (requer autenticação e propriedade).
Cabeçalhos Requeridos: - Authorization: Bearer {token}
Resposta de Sucesso (204): - Sem conteúdo
Health Check
/health_check - GET
Verifica a saúde da aplicação.
Resposta de Sucesso (200):
{
"status": "ok"
}
Autenticação e Autorização
A maioria dos endpoints requer autenticação JWT. Para acessar endpoints protegidos:
- Faça login em
/api/v1/auth/tokenpara obter um token - Inclua o token no cabeçalho Authorization:
Bearer {token}
Alguns endpoints também exigem autorização específica (por exemplo, somente o proprietário pode modificar ou excluir seu carro).
Filtragem e Paginação
Vários endpoints suportam paginação e filtragem:
- Paginação: Use os parâmetros
offsetelimit - Busca textual: Use o parâmetro
search - Filtros específicos: Vários parâmetros de consulta estão disponíveis dependendo do endpoint