Como Criar um Novo Anúncio
Este guia explica como criar um novo anúncio de veículo através da API.
Endpoint
POST /v3/inventory/{dealer_id}
Autenticação
Este endpoint requer autenticação via JWT. Inclua o token no header:
Authorization: Bearer {access_token}
Parâmetros de URL
| Parâmetro | Tipo | Descrição |
|---|---|---|
dealer_id | integer | ID da loja onde o anúncio será criado |
Campos Obrigatórios
Para criar um anúncio, você precisa enviar os seguintes campos no corpo da requisição:
| Campo | Tipo | Descrição |
|---|---|---|
category | integer | ID da categoria do veículo (1=Automóvel, 2=Motocicleta, 3=Caminhão, 4=Implemento) |
version_detail_id | integer | ID da versão detalhada do veículo (obtido através do endpoint /catalog/versions/{model_id}) |
color | integer | ID da cor do veículo (obtido através do endpoint /catalog/color) |
make_year | integer | Ano de fabricação do veículo |
model_year | integer | Ano do modelo do veículo |
km | integer | Quilometragem do veículo (0 se for zero km) |
price | integer | Preço do veículo em reais (número inteiro, sem centavos) |
description | string | Descrição do anúncio |
Campos Condicionais
| Campo | Tipo | Condição |
|---|---|---|
license_plate | string | Obrigatório se is_new for false |
Campos Opcionais
| Campo | Tipo | Descrição |
|---|---|---|
is_new | boolean | Indica se o veículo é zero km (padrão: false) |
note | string | Observações adicionais |
youtube_url | string | URL do vídeo do YouTube |
chassi | string | Número do chassi |
alienated | boolean | Indica se o veículo está alienado |
licensed | boolean | Indica se o veículo está licenciado |
only_owner | boolean | Indica se é único dono |
tax_payed | boolean | Indica se o IPVA está pago |
accept_exchange | boolean | Indica se aceita troca |
factory_warranty | boolean | Indica se possui garantia de fábrica |
extended_warranty | boolean | Indica se possui garantia estendida |
inspection | boolean | Indica se possui laudo cautelar |
pwd | boolean | Indica se é PCD (Pessoa com Deficiência) |
reviews_at_the_dealership | boolean | Indica se revisões foram feitas na concessionária |
address_id | integer | ID do endereço da loja (usa o primeiro se não informado) |
photos | array | Array de objetos com fotos (ver estrutura abaixo) |
features | array | Array de IDs de opcionais (obtidos através do endpoint /catalog/feature) |
Campos Específicos por Categoria
Automóveis (category: 1)
| Campo | Tipo | Descrição |
|---|---|---|
is_armored | boolean | Indica se o veículo é blindado |
armored_level | string | Nível de blindagem (I, II, IIA, III, IIIA, IV, V) |
armored | integer | ID do tipo de blindagem (obtido através do endpoint /catalog/armor-type) |
Motocicletas (category: 2)
| Campo | Tipo | Descrição |
|---|---|---|
breaks | integer | ID do tipo de freio (obtido através do endpoint /catalog/motorcycle/break) |
engine | integer | ID do tipo de motor (obtido através do endpoint /catalog/motorcycle/engine-type) |
engine_capacity | integer | Capacidade do motor em cilindradas |
gear | integer | ID do tipo de marcha (obtido através do endpoint /catalog/motorcycle/gear) |
power_supply | integer | ID do tipo de alimentação (obtido através do endpoint /catalog/motorcycle/power-supply) |
refrigeration | integer | ID do tipo de refrigeração (obtido através do endpoint /catalog/motorcycle/cooling) |
start | integer | ID do tipo de partida (obtido através do endpoint /catalog/motorcycle/start-type) |
Caminhões (category: 3)
| Campo | Tipo | Descrição |
|---|---|---|
is_armored | boolean | Indica se o veículo é blindado |
armored_level | string | Nível de blindagem (I, II, IIA, III, IIIA, IV, V) |
armored | integer | ID do tipo de blindagem (obtido através do endpoint /catalog/armor-type) |
power | integer | Potência do motor |
load_capacity | integer | Capacidade de carga em kg |
pulling_capacity | integer | Capacidade de tração em kg |
implement | integer | ID do implemento (obtido através do endpoint /catalog/truck/implement) |
type | integer | ID do tipo de caminhão (obtido através do endpoint /catalog/truck/type) |
cabin | integer | ID do tipo de cabine (obtido através do endpoint /catalog/truck/cabin) |
traction | integer | ID do tipo de tração (obtido através do endpoint /catalog/truck/traction) |
breaks | integer | ID do tipo de freio (obtido através do endpoint /catalog/truck/break) |
suspension | integer | ID do tipo de suspensão (obtido através do endpoint /catalog/truck/suspension) |
Implementos (category: 4)
| Campo | Tipo | Descrição |
|---|---|---|
number_of_axles | integer | Número de eixos do implemento |
Estrutura de Fotos
O campo photos deve ser um array de objetos com a seguinte estrutura. As fotos devem ser enviadas como Base64:
{
"photos": [
{
"order": 1,
"photo_name": "foto1.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..."
},
{
"order": 2,
"photo_name": "foto2.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..."
}
]
}
| Campo | Tipo | Descrição |
|---|---|---|
order | integer | Ordem da foto (opcional) |
photo_name | string | Nome do arquivo da foto (opcional) |
base64 | string | Imagem codificada em Base64 (obrigatório para novas fotos). Pode incluir o prefixo data:image/tipo;base64, ou apenas a string Base64 |
Exemplo de Requisição
Exemplo: Criar Anúncio de Automóvel
{
"category": 1,
"version_detail_id": 1234,
"color": 5,
"make_year": 2023,
"model_year": 2024,
"km": 15000,
"price": 85000,
"description": "Veículo em excelente estado, único dono, revisões em dia.",
"license_plate": "ABC1234",
"is_new": false,
"only_owner": true,
"tax_payed": true,
"accept_exchange": true,
"factory_warranty": true,
"is_armored": false,
"photos": [
{
"order": 1,
"photo_name": "foto1.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..."
},
{
"order": 2,
"photo_name": "foto2.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..."
}
],
"features": [1, 5, 12, 25]
}
Exemplo: Criar Anúncio de Veículo Zero KM
{
"category": 1,
"version_detail_id": 1234,
"color": 5,
"make_year": 2024,
"model_year": 2024,
"km": 0,
"price": 95000,
"description": "Veículo zero km, lacrado de fábrica.",
"is_new": true,
"factory_warranty": true,
"photos": [
{
"order": 1,
"photo_name": "foto1.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..."
}
],
"features": [1, 5, 12, 25, 30]
}
Exemplo: Criar Anúncio de Motocicleta
{
"category": 2,
"version_detail_id": 5678,
"color": 3,
"make_year": 2023,
"model_year": 2023,
"km": 5000,
"price": 25000,
"description": "Moto em perfeito estado, revisada.",
"license_plate": "XYZ9876",
"is_new": false,
"breaks": 1,
"engine": 2,
"engine_capacity": 300,
"gear": 1,
"power_supply": 1,
"refrigeration": 1,
"start": 1,
"photos": [
{
"order": 1,
"photo_name": "moto1.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..."
}
],
"features": [10, 15]
}
Exemplo: Criar Anúncio de Caminhão
{
"category": 3,
"version_detail_id": 9012,
"color": 2,
"make_year": 2022,
"model_year": 2023,
"km": 50000,
"price": 350000,
"description": "Caminhão em excelente estado de conservação.",
"license_plate": "DEF5678",
"is_new": false,
"power": 400,
"load_capacity": 15000,
"pulling_capacity": 20000,
"implement": 1,
"type": 2,
"cabin": 1,
"traction": 1,
"breaks": 1,
"suspension": 1,
"photos": [
{
"order": 1,
"photo_name": "caminhao1.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..."
}
],
"features": [20, 25, 30]
}
Exemplo: Criar Anúncio de Implemento
{
"category": 4,
"version_detail_id": 3456,
"color": 1,
"make_year": 2023,
"model_year": 2023,
"km": 0,
"price": 120000,
"description": "Implemento novo, nunca usado.",
"is_new": true,
"number_of_axles": 3,
"photos": [
{
"order": 1,
"photo_name": "implemento1.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..."
}
],
"features": [5, 10]
}
Validações Importantes
-
Ano de Fabricação vs Ano do Modelo: O
make_yearnão pode ser maior que omodel_year, e a diferença entre eles não pode ser maior que 1 ano. -
Placa: Se o veículo não for zero km (
is_new: false), a placa é obrigatória e deve estar em formato válido brasileiro. -
Quilometragem: Se o veículo não for zero km, a quilometragem deve ser maior que 0.
-
Preço: O preço deve ser maior que 0 e deve ser enviado como número inteiro em reais, sem centavos (ex: R$ 85.000,00 = 85000).
-
Versão Detalhada: O
version_detail_iddeve existir no catálogo. Use os endpoints de catálogo para obter o ID correto.
Resposta de Sucesso
Status Code: 201 Created
A resposta retornará o objeto completo do anúncio criado, incluindo o ID gerado e todos os dados relacionados.
Possíveis Erros
400 Bad Request
Retornado quando há erros de validação nos dados enviados:
{
"license_plate": ["License plate cannot be blank for used vehicles"]
}
ou
{
"price": ["Preço deve ser maior que 0"]
}
401 Unauthorized
Retornado quando o token de autenticação não foi fornecido ou é inválido.
403 Forbidden
Retornado quando o usuário não tem permissão para criar anúncios na loja especificada.
404 Not Found
Retornado quando a loja (dealer_id) não é encontrada.
Dicas
-
Obter IDs necessários: Antes de criar o anúncio, você precisará consultar os endpoints de catálogo para obter os IDs corretos:
- Categoria:
/catalog/category - Versão detalhada:
/catalog/versions/{model_id} - Cor:
/catalog/color - Opcionais:
/catalog/feature
- Categoria:
-
Preço: O preço deve ser enviado como número inteiro em reais, sem centavos (ex: R$ 100,00 = 100).
-
Fotos: As fotos devem ser enviadas como Base64 no campo
base64de cada objeto do arrayphotos. Você pode incluir o prefixodata:image/tipo;base64,ou apenas a string Base64 pura. -
Categoria: Certifique-se de usar a categoria correta:
1= Automóvel2= Motocicleta3= Caminhão4= Implemento