Introducao
Base URL, autenticacao, formato de resposta, codigos de status e limites da API.
Base URL
Autenticacao
Todas as requisicoes (exceto login) devem incluir o header Authorization com um token JWT valido.
Authorization: Bearer <seu_token>
O token e obtido atraves do endpoint POST /api/User/Login. Caso o token esteja ausente ou invalido, a API retorna 401 Unauthorized.
Formato de Resposta
Todas as respostas seguem a estrutura JSON padrao abaixo:
// Sucesso
{
"isSuccess": true,
"errors": null,
"type": 200,
"data": { ... }
}
// Erro
{
"isSuccess": false,
"errors": ["Descricao do erro"],
"type": 400
}
Sempre verifique o campo isSuccess antes de acessar data. Mesmo com status HTTP 200, o campo pode indicar falha logica.
Codigos de Status HTTP
Rate Limiting
A API permite no maximo 60 requisicoes por minuto por token. Ao exceder esse limite, voce recebera 429 Too Many Requests. Aguarde antes de tentar novamente.
Login
Autentica o usuario e retorna um token JWT para acesso aos endpoints protegidos.
Request Body
Exemplo de Request
{
"email": "usuario@exemplo.com",
"passWord": "minhasenha123"
}
Response (200)
{
"isSuccess": true,
"errors": null,
"type": 200,
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refreshToken": "string",
"expiration": "900s"
}
}
Status Codes
Exemplos
curl https://apihml.revvotech.com.br/api/User/Login \
-X POST \
-H 'Content-Type: application/json' \
-d '{
"email": "usuario@exemplo.com",
"passWord": "minhasenha123"
}'$ch = curl_init('https://apihml.revvotech.com.br/api/User/Login');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'email' => 'usuario@exemplo.com',
'passWord' => 'minhasenha123'
]),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
if ($data['isSuccess']) {
$token = $data['data']['token'];
echo "Token obtido: " . $token;
}const response = await fetch('https://apihml.revvotech.com.br/api/User/Login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
email: 'usuario@exemplo.com',
passWord: 'minhasenha123'
})
});
const data = await response.json();
if (data.isSuccess) {
const token = data.data.token;
console.log('Token obtido:', token);
localStorage.setItem('revvo_token', token);
}Buscar Empresas
Consulta empresas cadastradas com filtros e paginacao.
Request Body
Exemplo de Request
{
"page": 1,
"pageSize": 10,
"filterString": "Auto Center",
"active": true
}
Exemplo de Resposta
{
"isSuccess": true,
"errors": null,
"type": 200,
"data": [
{
"id": "uuid",
"name": "string",
"cnpj": "string",
"email": "string",
"phone": "string?",
"site": "string",
"faceBook": "string?",
"twitter": "string?",
"instagram": "string?",
"linkedin": "string?",
"tikTok": "string?",
"workWithUs": "string?",
"whatsAppPhrase": "string?",
"active": boolean,
"isRevvoCompany": boolean,
"logoURL": "string",
"favIconURL": "string",
"address": {
"id": "uuid",
"cep": "string",
"city": "string",
"street": "string",
"numberAddress": long?,
"state": "string",
"district": "string",
"complement": "string?"
}
}
],
"pagedInfo": {
"page": int,
"pageSize": int,
"totalPages": int,
"totalItems": int,
"hasNext": boolean,
"hasPrevious": boolean
}
}
Status Codes
Exemplos
curl https://apihml.revvotech.com.br/api/Company/GetByFilter \
-X POST \
-H 'Authorization: Bearer SEU_TOKEN_AQUI' \
-H 'Content-Type: application/json' \
-d '{
"page": 1,
"pageSize": 10,
"active": true,
"filterString": "revenda"
}'const token = localStorage.getItem('revvo_token');
const response = await fetch('https://apihml.revvotech.com.br/api/Company/GetByFilter', {
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
page: 1,
pageSize: 10,
active: true,
filterString: "revenda"
})
});
const data = await response.json();
if (data.isSuccess) {
console.log(`Encontradas ${data.data.length} empresas`);
console.log('Paginacao:', data.pagedInfo);
}$ch = curl_init('https://apihml.revvotech.com.br/api/Company/GetByFilter');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer SEU_TOKEN_AQUI',
'Content-Type: application/json'
],
CURLOPT_POSTFIELDS => json_encode([
'page' => 1,
'pageSize' => 10,
'active' => true,
'filterString' => 'revenda'
]),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
if ($data['isSuccess']) {
foreach ($data['data'] as $company) {
echo "ID: {$company['id']} - {$company['name']}\n";
}
}Buscar Veiculos com Filtros
Busca veiculos aplicando filtros como marca, ano, preco e estilo com paginacao.
Request Body
Exemplo de Request
{
"page": 1,
"pageSize": 10,
"sortBy": "originalPrice",
"sortDesc": true,
"brandValue": 25,
"initialYear": 2020,
"finalYear": 2024,
"initialPrice": 50000.00,
"finalPrice": 150000.00
}
Exemplo de Resposta
{
"isSuccess": true,
"errors": null,
"type": 200,
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"modelLabel": "Civic",
"mileage": 32000,
"originalPrice": 95000.00,
"promotionalPrice": null,
"formattedOriginalPrice": "95.000,00",
"formattedPromotionalPrice": null,
"style": "Sedan",
"brandLabel": "Honda",
"active": true
}
],
"pagedInfo": {
"page": 1,
"pageSize": 10,
"totalPages": 1,
"totalItems": 1,
"hasNext": false,
"hasPrevious": false
}
}
Status Codes
Exemplos
curl https://apihml.revvotech.com.br/api/PreOwnedVehicle/GetByFilter \
-X POST \
-H 'Authorization: Bearer SEU_TOKEN_AQUI' \
-H 'Content-Type: application/json' \
-d '{
"page": 1,
"pageSize": 10,
"sortBy": "originalPrice",
"sortDesc": false,
"style": 3,
"filterString": "Honda",
"initialYear": 2020,
"finalYear": 2023,
"initialPrice": 15000.0,
"finalPrice": 40000.0
}'const token = localStorage.getItem('revvo_token');
const response = await fetch('https://apihml.revvotech.com.br/api/PreOwnedVehicle/GetByFilter', {
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
page: 1,
pageSize: 10,
sortBy: "originalPrice",
sortDesc: false,
style: 3,
filterString: "Honda",
initialYear: 2020,
finalYear: 2023,
initialPrice: 15000.0,
finalPrice: 40000.0
})
});
const data = await response.json();
if (data.isSuccess) {
console.log(`Encontrados ${data.data.length} veiculos`);
console.log('Paginacao:', data.pagedInfo);
}Criar Veiculo
Cadastra um novo veiculo no sistema com dados completos, especificacoes tecnicas e imagens.
Dados Principais
1 (Car).Objetos — brand*, model*, version*
vehicleSpecifications — Carro
Objetos Comuns — images[]*, advancedSettings, accessories
Exemplo de Request
{
"companyId": "550e8400-e29b-41d4-a716-446655440000",
"vehicleType": 1,
"originalPrice": 95000.00,
"mileage": 32000,
"mainColor": "Prata",
"description": "Honda Civic EXL 2.0 completo.",
"yearProduction": 2022,
"modelYear": 2023,
"plate": "XYZ4H56",
"condition": 2,
"conservationState": 1,
"brand": { "label": "Honda", "value": 25, "vehicleType": 1 },
"model": { "label": "Civic", "value": 2831 },
"version": { "label": "EXL 2.0", "value": 9012 },
"vehicleSpecifications": {
"brakeType": 0,
"fuelType": 1,
"doors": 4,
"engineSize": 2.0,
"power": 155,
"transmission": 4,
"bodyType": 2,
"tractionControl": 0,
"seatingCapacity": 5,
"trunkCapacity": 519
},
"specifications": "Direcao eletrica, ar condicionado digital...",
"security": "6 airbags, freios ABS, controle de estabilidade...",
"technology": "Central multimidia 9 pol, Android Auto, Apple CarPlay...",
"images": [
{ "base64Image": "data:image/jpeg;base64,/9j/4AAQ...", "order": 0, "altTextImage": "Foto frontal" }
],
"advancedSettings": {
"metaTitle": "Honda Civic EXL 2023",
"metaDescription": "Honda Civic EXL 2.0 completo com baixa km.",
"socialTitle": "Honda Civic EXL 2023",
"socialDescription": "Honda Civic EXL 2.0 completo com baixa km.",
"friendlyURL": "honda-civic-exl-2023",
"base64Image": "data:image/jpeg;base64,/9j/4AAQ..."
},
"accessories": [
"a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"b2c3d4e5-f6a7-8901-bcde-f12345678901"
]
}
Exemplo de Resposta
{
"isSuccess": true,
"errors": null,
"type": 200
"data": {
"id": "uuid",
}
}
Dados Principais
2 (Motorcycle).Objetos — brand*, model*
Motos nao utilizam o objeto version.
vehicleSpecifications — Motocicleta
Objetos Comuns — images[]*, advancedSettings, accessories
Exemplo de Request
{
"companyId": "550e8400-e29b-41d4-a716-446655440000",
"vehicleType": 2,
"originalPrice": 25000.00,
"promotionalPrice": 23000.00,
"mileage": 15000,
"mainColor": "Vermelha",
"description": "Honda CB 600F Hornet em excelente estado.",
"yearProduction": 2020,
"modelYear": 2021,
"plate": "ABC1D23",
"chassis": "9C2JC50001R000001",
"condition": 2,
"conservationState": 1,
"brand": { "label": "HONDA", "value": 80, "vehicleType": 2 },
"model": { "label": "CB 600F HORNET", "value": 3921 },
"vehicleSpecifications": {
"brakeType": 0,
"fuelType": 2,
"cylinder": 600.0,
"style": 5,
"motorType": 1,
"refrigerationType": 1,
"feedType": 1,
"starType": 0,
"march": 4
},
"specifications": "Motor 4 cilindros em linha, DOHC 16 valvulas...",
"security": "Freios ABS, sensor de inclinacao...",
"technology": "Painel digital LCD, iluminacao full LED...",
"images": [
{ "base64Image": "data:image/jpeg;base64,/9j/4AAQ...", "order": 0, "altTextImage": "Foto frontal" },
{ "base64Image": "data:image/jpeg;base64,/9j/4AAQ...", "order": 1, "altTextImage": "Foto lateral" }
],
"advancedSettings": {
"metaTitle": "Honda CB 600F Hornet 2021",
"metaDescription": "CB 600F Hornet em excelente estado.",
"socialTitle": "Honda CB 600F Hornet 2021",
"socialDescription": "CB 600F Hornet em excelente estado.",
"friendlyURL": "honda-cb-600f-hornet-2021",
"base64Image": "data:image/jpeg;base64,/9j/4AAQ..."
},
"accessories": [
"a1b2c3d4-e5f6-7890-abcd-ef1234567890"
]
}
Exemplo de Resposta
{
"isSuccess": true,
"errors": null,
"type": 200
"data": {
"id": "uuid",
}
}
Status Codes
Atualizar Veiculo
Atualiza informacoes de um veiculo existente, incluindo especificacoes, imagens e configuracoes avancadas.
O endpoint de Update utiliza os mesmos campos base do Create, com as seguintes diferencas:
id(Guid) — obrigatorio para identificar o veiculoadvancedSettings— obrigatorio e inclui campoidvehicleSpecifications— inclui campoidcompanyId— não é enviado no Updateimages— não é enviado no Update (gerênciadas separadamente)
Campos Exclusivos do Update
Dados Principais
Todos os campos da secao "Dados Principais" do endpoint Create sao aceitos aqui, exceto companyId. Consulte a secao Criar Veiculo para detalhes de cada campo.
Objetos — advancedSettings*
Objetos — vehicleSpecifications
Os demais campos de vehicleSpecifications sao os mesmos do endpoint Create (brakeType, fuelType, doors, engineSize, etc.).
Status Codes
Exemplo
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"originalPrice": 26000.00,
"promotionalPrice": 24000.00,
"mileage": 16000,
"mainColor": "Vermelha",
"description": "Honda CB 600F Hornet - revisoes em dia",
"yearProduction": 2020,
"modelYear": 2021,
"plate": "ABC1D23",
"vehicleType": 2,
"condition": 2,
"conservationState": 1,
"brand": { "label": "HONDA", "value": 80, "vehicleType": 2 },
"model": { "label": "CB 600F HORNET", "value": 3921 },
"vehicleSpecifications": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"brakeType": 0,
"fuelType": 2,
"cylinder": 600.0,
"style": 5,
"motorType": 1,
"refrigerationType": 1,
"feedType": 1,
"starType": 0,
"march": 4
},
"advancedSettings": {
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"metaTitle": "Honda CB 600F Hornet 2020",
"metaDescription": "Compre sua Honda Hornet seminova",
"friendlyURL": "honda-cb-600f-hornet-2020"
},
"accessories": ["c3d4e5f6-a7b8-9012-cdef-123456789012"]
}
Ativar Veiculo
Ativa um veiculo previamente desativado.
Query Parameters
Exemplo de Request
PATCH /api/PreOwnedVehicle/Activate?preOwnedVehicleId=550e8400-e29b-41d4-a716-446655440000 Authorization: Bearer SEU_TOKEN_AQUI
Exemplo de Resposta
{
"isSuccess": true,
"errors": null,
"type": 200
}
Status Codes
Desativar Veiculo
Desativa um veiculo sem remove-lo do sistema.
Query Parameters
Exemplo de Request
PATCH /api/PreOwnedVehicle/Deactivate?preOwnedVehicleId=550e8400-e29b-41d4-a716-446655440000 Authorization: Bearer SEU_TOKEN_AQUI
Exemplo de Resposta
{
"isSuccess": true,
"errors": null,
"type": 200
}
Status Codes
Excluir Veiculo
Remove permanentemente um veiculo do sistema.
Esta operacao e irreversivel. O veiculo sera removido permanentemente do sistema.
Query Parameters
Exemplo de Request
DELETE /api/PreOwnedVehicle?preOwnedVehicleId=550e8400-e29b-41d4-a716-446655440000 Authorization: Bearer SEU_TOKEN_AQUI
Exemplo de Resposta
{
"isSuccess": true,
"errors": null,
"type": 200
}
Status Codes
Listar Lojas (Simplificado)
Retorna a lista simplificada de lojas vinculadas ao usuario autenticado, com filtros opcionais por empresa e CNPJ.
Query Parameters
Response — ReturnStoreManagementGetAllDTO[]
Exemplo de Request
GET /api/StoreManagement/GetStoresSimplified Authorization: Bearer SEU_TOKEN_AQUI
Exemplo de Resposta
{
"isSuccess": true,
"errors": null,
"type": 200,
"data": [
{
"id": "uuid",
"name": "string",
"address": "string",
"city": "string",
"phone": "string",
"active": boolean,
"slug": "string",
"cnpj": "string?"
},
...
]
}
Exemplo de Request filtrando pela empresa
GET /api/StoreManagement/GetStoresSimplified?companyId=550e8400-e29b-41d4-a716-446655440000 Authorization: Bearer SEU_TOKEN_AQUI
Exemplo de Resposta
{
"isSuccess": true,
"errors": null,
"type": 200,
"data": [
{
"id": "uuid",
"name": "string",
"address": "string",
"city": "string",
"phone": "string",
"active": boolean,
"slug": "string",
"cnpj": "string?"
},
...
]
}
Exemplo de Request filtrando pelo CNPJ
GET /api/StoreManagement/GetStoresSimplified?cnpj=70572921000104 Authorization: Bearer SEU_TOKEN_AQUI
Exemplo de Resposta
{
"isSuccess": true,
"errors": null,
"type": 200,
"data": [
{
"id": "uuid",
"name": "string",
"address": "string",
"city": "string",
"phone": "string",
"active": boolean,
"slug": "string",
"cnpj": "string?"
}
]
}
Status Codes
Marcas de Veiculos
Lista as marcas de veiculos disponiveis com seus respectivos IDs baseados na tabela FIPE.
Request Body
Exemplo de Request
{
"vehicleType": 2
}
Exemplo de Resposta
{
"isSuccess": true,
"errors": [],
"type": 200,
"data": [
{ "label": "HONDA", "value": 80 },
{ "label": "YAMAHA", "value": 101 },
...
]
}
Status Codes
Marcas Populares — Motocicletas (vehicleType: 2)
Marcas Populares — Automoveis (vehicleType: 1)
A mesma marca (ex: Honda) possui IDs distintos para motos (80) e carros (25). Sempre use o value retornado pela API para o vehicleType correto.
Exemplos
# Marcas de motocicletas curl https://apihml.revvotech.com.br/api/Brand/GetAllBrands \ -X POST \ -H 'Authorization: Bearer SEU_TOKEN_AQUI' \ -H 'Content-Type: application/json' \ -d '{ "vehicleType": 2 }' # Marcas de automoveis curl https://apihml.revvotech.com.br/api/Brand/GetAllBrands \ -X POST \ -H 'Authorization: Bearer SEU_TOKEN_AQUI' \ -H 'Content-Type: application/json' \ -d '{ "vehicleType": 1 }'
const getBrands = async (vehicleType) => {
const response = await fetch('https://apihml.revvotech.com.br/api/Brand/GetAllBrands', {
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ vehicleType })
});
const data = await response.json();
if (data.isSuccess) return data.data;
};
// Motocicletas
const motos = await getBrands(2);
// Automoveis
const carros = await getBrands(1);Listar acessórios
Retorna a lista de acessórios disponíveis, com filtro pelo tipo de veículo.
Query Parameters
Response — ReturnVehicleAccessoriesDTO[]
Exemplo de Request
GET /api/VehicleAccessories/GetAll?vehicleType=1 Authorization: Bearer SEU_TOKEN_AQUI
Exemplo de Resposta
{
"isSuccess": true,
"errors": null,
"type": 200,
"data": [
{
"id": "uuid",
"accessoryName": "string",
},
...
]
}
Status Codes
Schemas de Dados
Estruturas de dados utilizadas pela API.
{
"isSuccess": boolean,
"errors": string[] | null,
"type": integer
}
{
"page": integer,
"pageSize": integer,
"totalCount": integer,
"totalPages": integer
}
{
"label": "string",
"value": integer,
"vehicleType": VehicleTypeFipeEnum
}
{
"label": "string" | null,
"value": integer | null
}
{
"base64Image": "string",
"order": integer,
"altTextImage": "string"
}
{
"brakeType": enum,
"fuelType": enum?,
"doors": enum?,
"engineSize": decimal?,
"power": int?,
"torque": decimal?,
"tractionControl": enum?,
"seatingCapacity": int?,
"trunkCapacity": int?,
"cylinder": float?,
"style": enum?,
"motorType": enum?,
"refrigerationType": enum?,
"feedType": enum?,
"starType": enum?,
"march": enum?,
"bodyType": enum?,
"transmission": enum?
}
{
"metaTitle": "string?",
"metaDescription": "string?",
"socialTitle": "string?",
"socialDescription": "string?",
"friendlyURL": "string?",
"base64Image": "string"
}
{
"id": "uuid",
"metaTitle": "string?",
"metaDescription": "string?",
"socialTitle": "string?",
"socialDescription": "string?",
"friendlyURL": "string?",
"base64Image": "string?"
}
{
"token": "string (JWT)",
"refreshToken": "string",
"expiration": "string"
}
Enumerações
Valores possiveis para campos enum da API.