Ambiente:
https://apihml.revvotech.com.br

Revvo CMS - Plataforma Automotiva para Concessionárias

API RESTful completa do Revvo CMS. Gerencie concessionárias, veículos seminovos, marcas e integrações. Autenticação JWT, filtros avançados e suporte a imagens.

Base URL

https://apihml.revvotech.com.br

Versão

v1.0.1

Formato

JSON

Autenticação

JWT Bearer Token

Regras Importantes

Rate Limiting: Máximo de 60 requisições por minuto por token.
Autenticação: Todos os endpoints (exceto login) requerem token JWT.
Content-Type: Sempre use application/json para POST e PUT.
Códigos HTTP: 200/201 = Sucesso, 400 = Dados inválidos, 401 = Não autorizado, 429 = Rate limit.
Tokens: Tokens expiram conforme campo "expiration" no login.

Autenticação

Sistema de autenticação baseado em JWT tokens para acesso seguro aos endpoints.

Obter Token JWT

Autentica usuário e retorna token para acessar endpoints protegidos

POST /api/User/Login

Parâmetros

Tipo Nome Tipo de Dados Condição Descrição
BODY email string Obrigatório Email do usuário cadastrado
BODY passWord string Obrigatório Senha do usuário (case-sensitive)

Retorno

200
{
  "isSuccess": true,
  "errors": null,
  "type": 200,
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "refreshToken": "string",
    "expiration": "900s"
  }
}

Nota: Campo "expiration" indica tempo de vida do token (s=segundos, m=minutos, h=horas).

400
{
  "isSuccess": false,
  "errors": ["Email ou senha inválidos"],
  "type": 400
}
401
Credenciais inválidas ou usuário não encontrado

Exemplos

curl https://api.revvotech.com.br/api/User/Login \ -X POST \ -H 'Content-Type: application/json' \ -d '{ "email": "usuario@exemplo.com", "passWord": "minhasenha123" }'
$ch = curl_init('https://api.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://api.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); // Armazenar token para próximas requisições localStorage.setItem('revvo_token', token); }

Gestão de Empresas

Endpoints para consulta de empresas cadastradas no sistema.

Buscar Empresas

Consulta empresas com filtros e paginação

POST /api/Company/GetByFilter

Body Parameters

Nome Tipo Condição Descrição
page integer Opcional Número da página
pageSize integer Opcional Itens por página
filterString string Opcional Busca por nome ou CNPJ
active boolean Opcional Filtrar apenas ativas
companyId uuid Opcional ID específico

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 searchCompanies = async (filters = {}) => { 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", ...filters }) }); const data = await response.json(); if (data.isSuccess) { console.log(`Encontradas ${data.data.length} empresas`); console.log('Paginação:', data.pagedInfo); return data.data; } else { console.error('Erro na busca:', data.errors); } }; searchCompanies();
$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']) { echo "Encontradas " . count($data['data']) . " empresas\n"; foreach ($data['data'] as $company) { echo "ID: {$company['id']} - {$company['name']}\n"; } } else { echo "Erro na busca: " . implode(", ", $data['errors']) . "\n"; }

Gestão de Veículos

Endpoints para CRUD completo de veículos seminovos com filtros avançados e suporte a imagens.

Buscar Veículos com Filtros

Busca veículos aplicando filtros como marca, ano, preço, estilo com paginação

POST /api/PreOwnedVehicle/GetByFilter

Headers

Nome Valor Condição Descrição
Authorization Bearer {token} Obrigatório Token JWT obtido no login
Content-Type application/json Obrigatório Tipo de conteúdo

Body Parameters

Nome Tipo Condição Descrição
page integer Opcional Número da página (padrão: 1)
pageSize integer Opcional Itens por página (padrão: 10, max: 100)
sortBy string Opcional Campo ordenação: "originalPrice", "model", "mileage"
sortDesc boolean Opcional Ordenação decrescente (padrão: false)
style VehicleStyleTypeEnum Opcional Estilo do veículo (0-15, ver Enumerações)
filterString string Opcional Busca textual (modelo, marca, descrição)
brandValue integer Opcional ID numérico da marca
initialYear integer Opcional Ano inicial (inclusive)
finalYear integer Opcional Ano final (inclusive)
initialPrice double Opcional Preço mínimo
finalPrice double Opcional Preço máximo
companyId uuid Opcional Filtrar por empresa específica

Exemplo de Requisição

Criar Veículo

Cadastra um novo veículo seminovo no sistema com dados completos

POST /api/PreOwnedVehicle/CreateAPI

Headers

NomeValorCondição
Authorization Bearer {token} Obrigatório
Content-Type application/json Obrigatório

Body Parameters (Principais)

Nome Tipo Condição Descrição
model string Obrigatório Modelo do veículo
originalPrice double Obrigatório Preço original
promotionalPrice double Opcional Preço promocional
mileage integer Obrigatório Quilometragem
mainColor string Obrigatório Cor principal
description string Obrigatório Descrição detalhada
plate string Obrigatório Placa (formato: ABC-1234 ou ABC1D23)
companyId uuid Obrigatório ID da empresa proprietária
images string[] Obrigatório Array de imagens Base64
Campos Técnicos Adicionais

A API suporta campos técnicos detalhados como:

  • motorType: Tipo do motor (enum)
  • refrigerationType: Tipo de refrigeração (enum)
  • style: Estilo do veículo (enum)
  • starType: Tipo de partida (enum)
  • brakeType: Tipo de freio (enum)
  • feedType: Tipo de alimentação (enum)
  • march: Quantidade de marchas (enum)
  • cylinder: Cilindradas (float)
  • yearProduction: Ano de fabricação
  • modelYear: Ano do modelo

Exemplo Completo

curl https://api.revvotech.com.br/api/PreOwnedVehicle/CreateAPI \ -X POST \ -H 'Authorization: Bearer SEU_TOKEN_AQUI' \ -H 'Content-Type: application/json' \ -d '{ "model": "CB 600F Hornet", "originalPrice": 25000.00, "promotionalPrice": 23000.00, "mileage": 15000, "motorType": 1, "mainColor": "Vermelha", "refrigerationType": 1, "style": 5, "cylinder": 600.0, "starType": 0, "brakeType": 0, "feedType": 1, "march": 6, "description": "Honda CB 600F Hornet em excelente estado de conservação, revisões em dia, pneus novos.", "yearProduction": 2020, "modelYear": 2021, "specifications": "ABS, Freios CBS, Painel Digital", "security": "Alarme, Trava de Ignição, Rastreador", "technology": "Painel LCD, Entrada USB", "plate": "ABC-1234", "chassis": "9C2JC50001R000001", "companyId": "550e8400-e29b-41d4-a716-446655440000", "brand": { "label": "Honda", "value": 1 }, "images": [ "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD...", "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..." ] }'

Atualizar Veículo

Atualiza informações de um veículo existente

PUT /api/PreOwnedVehicle/updateAPI

Headers

NomeValorCondição
Authorization Bearer {token} Obrigatório
Content-Type application/json Obrigatório
Importante

Utiliza os mesmos parâmetros do endpoint de criação, porém sem o campo images. O campo id é obrigatório para identificar o veículo a ser atualizado.

Exemplo Completo

curl https://apihml.revvotech.com.br/api/PreOwnedVehicle/updateAPI \ -X PUT \ -H 'Authorization: Bearer SEU_TOKEN_AQUI' \ -H 'Content-Type: application/json' \ -d '{ "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "model": "CB 600F Hornet", "originalPrice": 26000.00, "promotionalPrice": 24000.00, "mileage": 16000, "motorType": 1, "mainColor": "Vermelha", "refrigerationType": 1, "style": 5, "cylinder": 600.0, "starType": 0, "brakeType": 0, "feedType": 1, "march": 6, "description": "Honda CB 600F Hornet em excelente estado, revisões em dia", "yearProduction": 2020, "modelYear": 2021, "specifications": "ABS, Freios CBS, Painel Digital", "security": "Alarme, Trava de Ignição", "technology": "Painel LCD, Entrada USB", "plate": "ABC-1234", "chassis": "9C2JC50001R000001", "brand": { "label": "HONDA", "value": 80 } }'
const token = localStorage.getItem('revvo_token'); const updateVehicle = async (vehicleData) => { const response = await fetch('https://apihml.revvotech.com.br/api/PreOwnedVehicle/updateAPI', { method: 'PUT', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ id: "3fa85f64-5717-4562-b3fc-2c963f66afa6", model: "CB 600F Hornet", originalPrice: 26000.00, promotionalPrice: 24000.00, mileage: 16000, motorType: 1, mainColor: "Vermelha", refrigerationType: 1, style: 5, cylinder: 600.0, starType: 0, brakeType: 0, feedType: 1, march: 6, description: "Honda CB 600F Hornet em excelente estado, revisões em dia", yearProduction: 2020, modelYear: 2021, specifications: "ABS, Freios CBS, Painel Digital", security: "Alarme, Trava de Ignição", technology: "Painel LCD, Entrada USB", plate: "ABC-1234", chassis: "9C2JC50001R000001", brand: { label: "HONDA", value: 80 } }) }); const data = await response.json(); if (data.isSuccess) { console.log('Veículo atualizado com sucesso'); return data; } else { console.error('Erro ao atualizar:', data.errors); } }; updateVehicle();
$ch = curl_init('https://apihml.revvotech.com.br/api/PreOwnedVehicle/updateAPI'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'PUT', CURLOPT_HTTPHEADER => [ 'Authorization: Bearer SEU_TOKEN_AQUI', 'Content-Type: application/json' ], CURLOPT_POSTFIELDS => json_encode([ 'id' => '3fa85f64-5717-4562-b3fc-2c963f66afa6', 'model' => 'CB 600F Hornet', 'originalPrice' => 26000.00, 'promotionalPrice' => 24000.00, 'mileage' => 16000, 'motorType' => 1, 'mainColor' => 'Vermelha', 'refrigerationType' => 1, 'style' => 5, 'cylinder' => 600.0, 'starType' => 0, 'brakeType' => 0, 'feedType' => 1, 'march' => 6, 'description' => 'Honda CB 600F Hornet em excelente estado, revisões em dia', 'yearProduction' => 2020, 'modelYear' => 2021, 'specifications' => 'ABS, Freios CBS, Painel Digital', 'security' => 'Alarme, Trava de Ignição', 'technology' => 'Painel LCD, Entrada USB', 'plate' => 'ABC-1234', 'chassis' => '9C2JC50001R000001', 'brand' => [ 'label' => 'HONDA', 'value' => 80 ] ]), CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER => false ]); $response = curl_exec($ch); $data = json_decode($response, true); curl_close($ch); if ($data['isSuccess']) { echo "Veículo atualizado com sucesso\n"; } else { echo "Erro ao atualizar: " . implode(", ", $data['errors']) . "\n"; }

Ativar Veículo

Ativa um veículo previamente desativado

PATCH /api/PreOwnedVehicle/Activate?preOwnedVehicleId={id}

Exemplos

curl 'https://apihml.revvotech.com.br/api/PreOwnedVehicle/Activate?preOwnedVehicleId=550e8400-e29b-41d4-a716-446655440000' \ -X PATCH \ -H 'Authorization: Bearer SEU_TOKEN_AQUI'
const token = localStorage.getItem('revvo_token'); const vehicleId = '550e8400-e29b-41d4-a716-446655440000'; const activateVehicle = async (id) => { const response = await fetch(`https://apihml.revvotech.com.br/api/PreOwnedVehicle/Activate?preOwnedVehicleId=${id}`, { method: 'PATCH', headers: { 'Authorization': `Bearer ${token}` } }); const data = await response.json(); if (data.isSuccess) { console.log('Veículo ativado com sucesso'); return data; } else { console.error('Erro ao ativar:', data.errors); } }; activateVehicle(vehicleId);
$vehicleId = '550e8400-e29b-41d4-a716-446655440000'; $url = 'https://apihml.revvotech.com.br/api/PreOwnedVehicle/Activate?preOwnedVehicleId=' . $vehicleId; $ch = curl_init($url); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'PATCH', CURLOPT_HTTPHEADER => [ 'Authorization: Bearer SEU_TOKEN_AQUI' ], CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER => false ]); $response = curl_exec($ch); $data = json_decode($response, true); curl_close($ch); if ($data['isSuccess']) { echo "Veículo ativado com sucesso\n"; } else { echo "Erro ao ativar: " . implode(", ", $data['errors']) . "\n"; }

Desativar Veículo

Desativa um veículo sem removê-lo do sistema

PATCH /api/PreOwnedVehicle/Deactivate?preOwnedVehicleId={id}

Exemplos

curl 'https://apihml.revvotech.com.br/api/PreOwnedVehicle/Deactivate?preOwnedVehicleId=550e8400-e29b-41d4-a716-446655440000' \ -X PATCH \ -H 'Authorization: Bearer SEU_TOKEN_AQUI'
const token = localStorage.getItem('revvo_token'); const vehicleId = '550e8400-e29b-41d4-a716-446655440000'; const deactivateVehicle = async (id) => { const response = await fetch(`https://apihml.revvotech.com.br/api/PreOwnedVehicle/Deactivate?preOwnedVehicleId=${id}`, { method: 'PATCH', headers: { 'Authorization': `Bearer ${token}` } }); const data = await response.json(); if (data.isSuccess) { console.log('Veículo desativado com sucesso'); return data; } else { console.error('Erro ao desativar:', data.errors); } }; deactivateVehicle(vehicleId);
$vehicleId = '550e8400-e29b-41d4-a716-446655440000'; $url = 'https://apihml.revvotech.com.br/api/PreOwnedVehicle/Deactivate?preOwnedVehicleId=' . $vehicleId; $ch = curl_init($url); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'PATCH', CURLOPT_HTTPHEADER => [ 'Authorization: Bearer SEU_TOKEN_AQUI' ], CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER => false ]); $response = curl_exec($ch); $data = json_decode($response, true); curl_close($ch); if ($data['isSuccess']) { echo "Veículo desativado com sucesso\n"; } else { echo "Erro ao desativar: " . implode(", ", $data['errors']) . "\n"; }

Excluir Veículo

Remove permanentemente um veículo do sistema

DELETE /api/PreOwnedVehicle?preOwnedVehicleId={id}
Atenção: Esta operação é irreversível. O veículo será removido permanentemente do sistema.

Exemplos

curl 'https://apihml.revvotech.com.br/api/PreOwnedVehicle?preOwnedVehicleId=550e8400-e29b-41d4-a716-446655440000' \ -X DELETE \ -H 'Authorization: Bearer SEU_TOKEN_AQUI'
const token = localStorage.getItem('revvo_token'); const vehicleId = '550e8400-e29b-41d4-a716-446655440000'; const deleteVehicle = async (id) => { // Confirmação antes de excluir if (!confirm('Tem certeza que deseja excluir este veículo? Esta ação é irreversível.')) { return; } const response = await fetch(`https://apihml.revvotech.com.br/api/PreOwnedVehicle?preOwnedVehicleId=${id}`, { method: 'DELETE', headers: { 'Authorization': `Bearer ${token}` } }); const data = await response.json(); if (data.isSuccess) { console.log('Veículo excluído com sucesso'); return data; } else { console.error('Erro ao excluir:', data.errors); } }; deleteVehicle(vehicleId);
$vehicleId = '550e8400-e29b-41d4-a716-446655440000'; $url = 'https://apihml.revvotech.com.br/api/PreOwnedVehicle?preOwnedVehicleId=' . $vehicleId; $ch = curl_init($url); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'DELETE', CURLOPT_HTTPHEADER => [ 'Authorization: Bearer SEU_TOKEN_AQUI' ], CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER => false ]); $response = curl_exec($ch); $data = json_decode($response, true); curl_close($ch); if ($data['isSuccess']) { echo "Veículo excluído com sucesso\n"; } else { echo "Erro ao excluir: " . implode(", ", $data['errors']) . "\n"; }

Gestão de Marcas

Endpoints para consulta de marcas de veículos baseadas na tabela FIPE.

Registros de Marcas

Lista as marcas de veículos disponíveis com seus respectivos IDs baseados na tabela FIPE

POST /api/Brand/UpdateBrandRegisters

Headers

Nome Valor Condição Descrição
Authorization Bearer {token} Obrigatório Token JWT obtido no login
Content-Type application/json Obrigatório Tipo de conteúdo

Body Parameters

Nome Tipo Condição Descrição
vehicleType integer Obrigatório Tipo do veículo: 1 = Automóveis, 2 = Motocicletas, 3 = Caminhões e Micro-ônibus
monthCode integer Obrigatório Código do mês de referência FIPE (incremental, atualizado dia 10 de cada mês). Exemplo: 326 = Outubro
Sobre a Tabela FIPE

Este endpoint utiliza a tabela FIPE (Fundação Instituto de Pesquisas Econômicas) como referência para as marcas de veículos:

  • Tipo de Veículo:
    • 1 - Automóveis (carros de passeio)
    • 2 - Motocicletas
    • 3 - Caminhões e Micro-ônibus
  • Código do Mês: Valor incremental que representa o período de referência da tabela FIPE
  • Atualização: A tabela FIPE é atualizada no dia 10 de cada mês com novos valores e marcas
  • Uso: Os IDs retornados devem ser usados no campo brand.value ao criar/atualizar veículos

Retorno

200

Exemplo - Motocicletas (vehicleType: 2):

{
  "isSuccess": true,
  "errors": [],
  "type": 200,
  "data": [
    { "label": "ADLY", "value": 60 },
    { "label": "AGRALE", "value": 61 },
    { "label": "BMW", "value": 67 },
    { "label": "DUCATI", "value": 74 },
    { "label": "HARLEY-DAVIDSON", "value": 77 },
    { "label": "HONDA", "value": 80 },
    { "label": "KAWASAKI", "value": 85 },
    { "label": "KTM", "value": 87 },
    { "label": "SUZUKI", "value": 99 },
    { "label": "TRIUMPH", "value": 100 },
    { "label": "YAMAHA", "value": 101 },
    { "label": "Royal Enfield", "value": 192 },
    ...
  ]
}

Exemplo - Automóveis (vehicleType: 1):

{
  "isSuccess": true,
  "errors": [],
  "type": 200,
  "data": [
    { "label": "Acura", "value": 1 },
    { "label": "Audi", "value": 6 },
    { "label": "BMW", "value": 7 },
    { "label": "Fiat", "value": 21 },
    { "label": "Ford", "value": 22 },
    { "label": "GM - Chevrolet", "value": 23 },
    { "label": "Honda", "value": 25 },
    { "label": "Hyundai", "value": 26 },
    { "label": "Jeep", "value": 29 },
    { "label": "Nissan", "value": 43 },
    { "label": "Renault", "value": 48 },
    { "label": "Toyota", "value": 56 },
    { "label": "VW - VolksWagen", "value": 59 },
    ...
  ]
}
400
{
  "isSuccess": false,
  "errors": ["Parâmetros inválidos"],
  "type": 400
}
401
Token não fornecido ou inválido

Exemplos de Requisição

# Listar marcas de motocicletas (outubro) curl https://apihml.revvotech.com.br/api/Brand/UpdateBrandRegisters \ -X POST \ -H 'Authorization: Bearer SEU_TOKEN_AQUI' \ -H 'Content-Type: application/json' \ -d '{ "vehicleType": 2, "monthCode": 326 }' # Listar marcas de automóveis (outubro) curl https://apihml.revvotech.com.br/api/Brand/UpdateBrandRegisters \ -X POST \ -H 'Authorization: Bearer SEU_TOKEN_AQUI' \ -H 'Content-Type: application/json' \ -d '{ "vehicleType": 1, "monthCode": 326 }'
const token = localStorage.getItem('revvo_token'); // Buscar marcas de motocicletas const getBrands = async (vehicleType, monthCode) => { const response = await fetch('https://apihml.revvotech.com.br/api/Brand/UpdateBrandRegisters', { method: 'POST', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ vehicleType: vehicleType, monthCode: monthCode }) }); const data = await response.json(); if (data.isSuccess) { console.log(`Encontradas ${data.data.length} marcas`); return data.data; } }; // Exemplo: Buscar marcas de motocicletas getBrands(2, 326).then(brands => { console.log('Marcas de motocicletas:', brands); }); // Exemplo: Buscar marcas de automóveis getBrands(1, 326).then(brands => { console.log('Marcas de automóveis:', brands); });
$ch = curl_init('https://apihml.revvotech.com.br/api/Brand/UpdateBrandRegisters'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_HTTPHEADER => [ 'Authorization: Bearer SEU_TOKEN_AQUI', 'Content-Type: application/json' ], CURLOPT_POSTFIELDS => json_encode([ 'vehicleType' => 2, // Motocicletas 'monthCode' => 326 // Outubro ]), CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER => false ]); $response = curl_exec($ch); $data = json_decode($response, true); curl_close($ch); if ($data['isSuccess']) { $brands = $data['data']; echo "Encontradas " . count($brands) . " marcas\n"; foreach ($brands as $brand) { echo "ID: {$brand['value']} - {$brand['label']}\n"; } }

Guia de Marcas Populares

Motocicletas - Marcas Populares

80 Honda - Líder de mercado, modelos populares e esportivos
101 Yamaha - Esportivas e touring de alto desempenho
99 Suzuki - Motos esportivas e street
85 Kawasaki - Esportivas de alta performance
67 BMW - Motos premium e touring
77 Harley-Davidson - Motos custom e cruiser
74 Ducati - Esportivas italianas de alto desempenho
100 Triumph - Motos clássicas e modernas britânicas
87 KTM - Off-road e adventure
192 Royal Enfield - Motos clássicas estilo retrô

Automóveis - Marcas Populares

23 GM - Chevrolet - Onix, Tracker, S10
59 VW - VolksWagen - Gol, Polo, T-Cross
21 Fiat - Argo, Mobi, Strada
56 Toyota - Corolla, Hilux, RAV4
26 Hyundai - HB20, Creta, Tucson
29 Jeep - Renegade, Compass, Commander
48 Renault - Kwid, Sandero, Duster
25 Honda - Civic, HR-V, City
43 Nissan - Kicks, Versa, Frontier
22 Ford - Ranger, Territory, Mustang
Como Usar os IDs de Marca

Após obter a lista de marcas, utilize o campo value retornado ao criar ou atualizar veículos:

// Exemplo ao criar uma motocicleta Honda
{
  "model": "CB 600F Hornet",
  "brand": {
    "label": "HONDA",
    "value": 80  // ID obtido do endpoint de marcas para motocicletas
  },
  ...
}

// Exemplo ao criar um automóvel Honda
{
  "model": "Civic EXL 2.0",
  "brand": {
    "label": "Honda",
    "value": 25  // ID obtido do endpoint de marcas para automóveis
  },
  ...
}

Importante: Os IDs de marca são diferentes para cada tipo de veículo (motocicletas, automóveis, caminhões). A mesma marca (ex: Honda) possui IDs distintos dependendo do vehicleType. Sempre consulte o endpoint para obter os IDs corretos conforme o tipo de veículo.

Exemplos Práticos

Exemplos completos de uso da API em situações reais.

Fluxo Completo

Exemplo de integração completa: Login → Busca → Criação

#!/bin/bash # 1. Fazer login e obter token echo "=== FAZENDO LOGIN ===" LOGIN_RESPONSE=$(curl -s -X POST https://api.revvotech.com.br/api/User/Login \ -H 'Content-Type: application/json' \ -d '{ "email": "seu@email.com", "passWord": "suasenha" }') # Extrair token da resposta TOKEN=$(echo $LOGIN_RESPONSE | jq -r '.data.token') echo "Token obtido: ${TOKEN:0:20}..." # 2. Buscar veículos existentes echo -e "\n=== BUSCANDO VEÍCULOS ===" SEARCH_RESPONSE=$(curl -s -X POST https://api.revvotech.com.br/api/PreOwnedVehicle/GetByFilter \ -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: application/json' \ -d '{ "page": 1, "pageSize": 5, "style": 3 }') VEHICLE_COUNT=$(echo $SEARCH_RESPONSE | jq '.pagedInfo.totalCount') echo "Veículos encontrados: $VEHICLE_COUNT" # 3. Buscar empresas para obter companyId echo -e "\n=== BUSCANDO EMPRESAS ===" COMPANIES_RESPONSE=$(curl -s -X POST https://api.revvotech.com.br/api/Company/GetByFilter \ -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: application/json' \ -d '{"active": true, "page": 1, "pageSize": 1}') COMPANY_ID=$(echo $COMPANIES_RESPONSE | jq -r '.data[0].id') echo "Usando empresa: $COMPANY_ID" # 4. Criar novo veículo echo -e "\n=== CRIANDO VEÍCULO ===" CREATE_RESPONSE=$(curl -s -X POST https://api.revvotech.com.br/api/PreOwnedVehicle/CreateAPI \ -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: application/json' \ -d "{ \"model\": \"CB 600F Hornet\", \"originalPrice\": 25000.00, \"promotionalPrice\": 23000.00, \"mileage\": 15000, \"motorType\": 1, \"mainColor\": \"Vermelha\", \"refrigerationType\": 1, \"style\": 5, \"cylinder\": 600.0, \"starType\": 0, \"brakeType\": 0, \"feedType\": 1, \"march\": 6, \"description\": \"Moto em excelente estado\", \"yearProduction\": 2020, \"modelYear\": 2021, \"plate\": \"ABC-1234\", \"companyId\": \"$COMPANY_ID\", \"brand\": {\"label\": \"Honda\", \"value\": 1}, \"images\": [\"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==\"] }") SUCCESS=$(echo $CREATE_RESPONSE | jq '.isSuccess') if [ "$SUCCESS" = "true" ]; then echo "Veículo criado com sucesso!" else echo "Erro ao criar veículo:" echo $CREATE_RESPONSE | jq '.errors' fi
class RevvoAPI { constructor() { this.baseUrl = 'https://api.revvotech.com.br'; this.token = null; } async login(email, password) { console.log('Fazendo login...'); const response = await fetch(`${this.baseUrl}/api/User/Login`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, passWord: password }) }); const data = await response.json(); if (data.isSuccess) { this.token = data.data.token; console.log('Login realizado com sucesso'); console.log(`Token expira em: ${data.data.expiration}`); return true; } else { console.error('Erro no login:', data.errors); return false; } } async searchVehicles(filters = {}) { console.log('Buscando veículos...'); const defaultFilters = { page: 1, pageSize: 10, ...filters }; const response = await fetch(`${this.baseUrl}/api/PreOwnedVehicle/GetByFilter`, { method: 'POST', headers: { 'Authorization': `Bearer ${this.token}`, 'Content-Type': 'application/json' }, body: JSON.stringify(defaultFilters) }); const data = await response.json(); if (data.isSuccess) { console.log(`Encontrados ${data.data.length} veículos`); console.log(`Total: ${data.pagedInfo.totalCount} | Páginas: ${data.pagedInfo.totalPages}`); return data; } else { console.error('Erro na busca:', data.errors); return null; } } async getCompanies() { console.log('Buscando empresas...'); const response = await fetch(`${this.baseUrl}/api/Company/GetByFilter`, { method: 'POST', headers: { 'Authorization': `Bearer ${this.token}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ active: true, page: 1, pageSize: 10 }) }); const data = await response.json(); if (data.isSuccess) { console.log(`Encontradas ${data.data.length} empresas`); return data.data; } else { console.error('Erro ao buscar empresas:', data.errors); return []; } } async createVehicle(vehicleData) { console.log('Criando veículo...'); const response = await fetch(`${this.baseUrl}/api/PreOwnedVehicle/CreateAPI`, { method: 'POST', headers: { 'Authorization': `Bearer ${this.token}`, 'Content-Type': 'application/json' }, body: JSON.stringify(vehicleData) }); const data = await response.json(); if (data.isSuccess) { console.log('Veículo criado com sucesso'); return true; } else { console.error('Erro ao criar veículo:', data.errors); return false; } } } // Exemplo de uso async function exemploCompleto() { const api = new RevvoAPI(); // 1. Login const loginSuccess = await api.login('seu@email.com', 'suasenha'); if (!loginSuccess) return; // 2. Buscar veículos existentes await api.searchVehicles({ style: 3, filterString: 'Honda', initialPrice: 20000, finalPrice: 50000 }); // 3. Obter empresas const companies = await api.getCompanies(); if (companies.length === 0) return; // 4. Criar novo veículo const vehicleData = { model: "CB 600F Hornet", originalPrice: 25000.00, promotionalPrice: 23000.00, mileage: 15000, motorType: 1, mainColor: "Vermelha", refrigerationType: 1, style: 5, cylinder: 600.0, starType: 0, brakeType: 0, feedType: 1, march: 6, description: "Honda CB 600F Hornet em excelente estado", yearProduction: 2020, modelYear: 2021, plate: "ABC-1234", companyId: companies[0].id, // Usar primeira empresa brand: { label: "Honda", value: 1 }, images: ["data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=="] }; await api.createVehicle(vehicleData); } // Executar exemplo exemploCompleto();

Gerenciamento de Veículos

Exemplos de ativação, desativação e exclusão

# Definir variáveis TOKEN="seu_token_jwt_aqui" VEHICLE_ID="550e8400-e29b-41d4-a716-446655440000" # Ativar veículo echo "Ativando veículo..." curl -X PATCH "https://api.revvotech.com.br/api/PreOwnedVehicle/Activate?preOwnedVehicleId=$VEHICLE_ID" \ -H "Authorization: Bearer $TOKEN" # Aguardar um pouco sleep 2 # Desativar veículo echo -e "\nDesativando veículo..." curl -X PATCH "https://api.revvotech.com.br/api/PreOwnedVehicle/Deactivate?preOwnedVehicleId=$VEHICLE_ID" \ -H "Authorization: Bearer $TOKEN" # Excluir veículo (cuidado!) echo -e "\nExcluindo veículo permanentemente..." read -p "Tem certeza? (s/N): " confirm if [ "$confirm" = "s" ] || [ "$confirm" = "S" ]; then curl -X DELETE "https://api.revvotech.com.br/api/PreOwnedVehicle?preOwnedVehicleId=$VEHICLE_ID" \ -H "Authorization: Bearer $TOKEN" echo "Veículo excluído." else echo "Operação cancelada." fi

Schemas de Dados

Estruturas de dados utilizadas pela API.

Result (Base)

{
  "isSuccess": boolean,
  "errors": string[] | null,
  "type": integer (HTTP status code)
}

PagedInfo

{
  "page": integer,
  "pageSize": integer,
  "totalCount": integer,
  "totalPages": integer
}

Vehicle (Resume)

{
  "id": "uuid",
  "model": "string",
  "mileage": float,
  "originalPrice": double,
  "promotionalPrice": double | null,
  "formattedOriginalPrice": "string",
  "formattedPromotionalPrice": "string",
  "style": "string",
  "brandLabel": "string",
  "active": boolean
}

Company

{
  "id": "uuid",
  "name": "string",
  "cnpj": "string",
  "active": boolean
}

Brand

{
  "label": "string",
  "value": integer
}

Login Response

{
  "token": "string (JWT)",
  "refreshToken": "string",
  "expiration": "string"
}

Enumerações

Valores possíveis para campos enum da API.

VehicleStyleTypeEnum

0 Ciclomotor
1 Custom
2 Elétrica
3 Esportiva
4 Mini Cross
5 Naked
6 Off-Road
7 Quadriciclo
8 Scooter
9 Street
10 Supermoto
11 Touring
12 Dupla Proposta
13 Trial
14 Triciclo
15 Utilitária

MotorTypeEnum

0 2 Tempos
1 4 Tempos
2 Elétrico de corrente contínua

RefrigerationTypeEnum

0 Ar
1 Líquido

StartVehicleTypeEnum

0 Elétrico
1 Pedal
2 Pedal e Elétrico

BrakeVehicleTypeEnum

0 Disco e Disco
1 Disco e Tambor
2 Tambor e Disco
3 Tambor e Tambor

FeedVehicleTypeEnum

0 Carburador
1 Injeção Eletrônica

QntMarchEnum

0 Automático
1 1 Marcha
2 2 Marchas
3 3 Marchas
4 4 Marchas
5 5 Marchas
6 6 Marchas
7 7 Marchas

HTTP Status Codes

200 OK
201 Created
204 No Content
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
429 Too Many Requests
500 Internal Server Error