Pular para o conteúdo principal

Listar Anúncios

Consulte, crie ou remova anúncios cadastrados para uma loja específica.

Endpoint

GET /inventory/{dealer_id}
POST /inventory/{dealer_id}
DELETE /inventory/{dealer_id}

Métodos

  • GET: Lista todos os anúncios ativos da loja
  • POST: Cria um novo anúncio
  • DELETE: Remove um anúncio específico

Parâmetros de URL

ParâmetroTipoDescrição
dealer_idintegerID da loja

Autenticação

Este endpoint requer autenticação via JWT. Inclua o token no header:

Authorization: Bearer {access_token}

Exemplo de Resposta

Lista de Anúncios

Status Code: 200 OK

{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"id": 12345,
"status": 1,
"category": 1,
"year": {
"make": 2023,
"model": 2024
},
"price": 85000,
"km": 15000,
"license_plate": "ABC1234",
"make": {
"id": 1,
"name": "Toyota"
},
"model": {
"id": 10,
"name": "Corolla"
},
"fuel": {
"id": 1,
"name": "Flex"
},
"status_ad_site": true,
"version_site": "XEi 2.0",
"youtube_url": "https://www.youtube.com/watch?v=example",
"accept_exchange": true,
"alienated": false,
"extended_warranty": false,
"factory_warranty": true,
"inspection": false,
"is_imported": false,
"is_new": false,
"licensed": true,
"only_owner": true,
"pwd": false,
"reviews_at_the_dealership": false,
"tax_payed": true,
"text_price_site": "Preço",
"show_price_site": true,
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-20T14:45:00Z",
"created_by": "João Silva",
"updated_by": "Maria Santos",
"first_photo": "https://media.integradordeanuncios.com.br/thumb/10/foto1.jpg",
"total_photo": 5,
"version_detail_id": 100,
"color": {
"id": 5,
"name": "Branco"
},
"integration": [
{
"id": 1,
"portal": {
"id": 5,
"name": "Webmotors",
"logo": "https://media.integradordeanuncios.com.br/media/logo/webmotors.webp"
},
"status": {
"id": 1,
"name": "Ativo"
},
"listing_type": {
"id": 1,
"name": "Plano Básico"
},
"ad_url": "https://www.webmotors.com.br/anuncio/12345",
"ad_title": "Toyota Corolla XEi 2.0 2024",
"created_at": "2024-01-15T10:35:00Z",
"updated_at": "2024-01-20T14:50:00Z",
"is_synced": true,
"sync_error": null
}
],
"features": [
{
"id": 1,
"name": "Ar Condicionado"
},
{
"id": 2,
"name": "Direção Hidráulica"
}
],
"address": {
"id": 1,
"dealer": 10,
"address": "Rua das Flores",
"number": "123",
"complement": "Sala 45",
"neighborhood": "Centro",
"city": {
"id": 1,
"name": "São Paulo",
"capital": true,
"state": {
"id": 1,
"name": "São Paulo",
"initials": "SP"
}
},
"zip_code": "01310-100",
"order": 1,
"map_url": "https://maps.google.com/?q=Rua+das+Flores,+123",
"dealer_name": "LOJA TESTE - MATRIZ",
"landmark": "Próximo ao metrô"
},
"photos": [
{
"id": 1,
"ad_id": 12345,
"order": 1,
"thumb": "https://media.integradordeanuncios.com.br/thumb/10/foto1.jpg",
"url": "https://media.integradordeanuncios.com.br/foto/10/foto1.jpg"
},
{
"id": 2,
"ad_id": 12345,
"order": 2,
"thumb": "https://media.integradordeanuncios.com.br/thumb/10/foto2.jpg",
"url": "https://media.integradordeanuncios.com.br/foto/10/foto2.jpg"
}
],
"chassi": "9BW12345678901234",
"description": "Veículo em excelente estado, único dono, revisões em dia.",
"note": "Observação adicional",
"ad_score": 85,
"url_site": "https://www.lojatest.com.br/anuncio/12345",
"origin": {
"id": 1,
"name": "Manual"
},
"version": {
"id": 100,
"name": "XEi 2.0"
},
"doors": {
"id": 1,
"name": "4 portas"
},
"transmission": {
"id": 1,
"name": "Automática"
}
}
]
}

Estrutura de Dados

A resposta é um objeto paginado com os seguintes campos:

CampoTipoDescrição
countintegerTotal de anúncios encontrados
nextstringURL da próxima página (null se não houver)
previousstringURL da página anterior (null se não houver)
resultsarrayArray com os resultados da página atual

Estrutura de um Item de Anúncio

CampoTipoDescrição
idintegerIdentificador único do anúncio
statusintegerID do status do anúncio
categoryintegerID da categoria (1=Automóvel, 2=Motocicleta, 3=Caminhão, 4=Implemento)
yearobjectObjeto com ano de fabricação e modelo (ver abaixo)
priceintegerPreço do veículo
kmintegerQuilometragem
license_platestringPlaca do veículo (pode ser vazio para veículos novos)
makeobjectObjeto com informações da marca (ver abaixo)
modelobjectObjeto com informações do modelo (ver abaixo)
fuelobjectObjeto com informações do combustível (ver abaixo)
status_ad_sitebooleanIndica se o anúncio está ativo no site
version_sitestringVersão do veículo para exibição no site
youtube_urlstringURL do vídeo do YouTube (pode ser null)
accept_exchangebooleanAceita troca
alienatedbooleanVeículo alienado
extended_warrantybooleanPossui garantia estendida
factory_warrantybooleanPossui garantia de fábrica
inspectionbooleanPossui laudo cautelar
is_importedbooleanVeículo importado
is_newbooleanVeículo novo (zero KM)
licensedbooleanVeículo licenciado
only_ownerbooleanÚnico dono
pwdbooleanPossui PDF
reviews_at_the_dealershipbooleanRevisões na concessionária
tax_payedbooleanIPVA pago
text_price_sitestringTexto personalizado para preço no site
show_price_sitebooleanExibir preço no site
created_atstringData e hora de criação
updated_atstringData e hora de última atualização (pode ser null)
created_bystringNome do usuário que criou o anúncio
updated_bystringNome do usuário que atualizou o anúncio (pode ser null)
first_photostringURL da primeira foto (thumbnail)
total_photointegerTotal de fotos do anúncio
version_detail_idintegerID do detalhe da versão do veículo
colorobjectObjeto com informações da cor (ver abaixo)
integrationarrayArray de objetos com integrações ativas (ver abaixo)
featuresarrayArray de objetos com opcionais/equipamentos (ver abaixo)
addressobjectObjeto com informações do endereço (ver abaixo)
photosarrayArray de objetos com fotos do anúncio (ver abaixo)
chassistringNúmero do chassi (pode ser null)
descriptionstringDescrição do anúncio
notestringObservação adicional (pode ser null)
ad_scoreintegerPontuação de qualidade do anúncio (pode ser null)
url_sitestringURL do anúncio no site da loja
originobjectObjeto com origem do anúncio (ver abaixo)
versionobjectObjeto com versão do veículo (apenas para carros, ver abaixo)
doorsobjectObjeto com número de portas (apenas para carros, ver abaixo)
transmissionobjectObjeto com tipo de transmissão (apenas para carros, ver abaixo)

Estrutura do Objeto year

CampoTipoDescrição
makeintegerAno de fabricação
modelintegerAno do modelo

Estrutura do Objeto make

CampoTipoDescrição
idintegerIdentificador único da marca
namestringNome da marca

Estrutura do Objeto model

CampoTipoDescrição
idintegerIdentificador único do modelo
namestringNome do modelo

Estrutura do Objeto fuel

CampoTipoDescrição
idintegerIdentificador único do combustível
namestringNome do combustível

Estrutura do Objeto color

CampoTipoDescrição
idintegerIdentificador único da cor
namestringNome da cor

Estrutura de um Item em integration

CampoTipoDescrição
idintegerIdentificador único da integração
portalobjectObjeto com informações do portal
statusobjectObjeto com status da integração
listing_typeobjectObjeto com tipo de anúncio/plano
ad_urlstringURL do anúncio no portal
ad_titlestringTítulo do anúncio no portal
created_atstringData e hora de criação da integração
updated_atstringData e hora de última atualização
is_syncedbooleanIndica se está sincronizado
sync_errorstringMensagem de erro de sincronização (pode ser null)

Estrutura de um Item em features

CampoTipoDescrição
idintegerIdentificador único do opcional/equipamento
namestringNome do opcional/equipamento

Estrutura de um Item em photos

CampoTipoDescrição
idintegerIdentificador único da foto
ad_idintegerID do anúncio
orderintegerOrdem de exibição da foto
thumbstringURL da miniatura da foto
urlstringURL completa da foto

Estrutura do Objeto address

Ver documentação do endpoint /dealer/{dealer_id}/addresses para detalhes completos.

Estrutura do Objeto origin

CampoTipoDescrição
idintegerIdentificador único da origem
namestringNome da origem (ex: "Manual", "ERP", "Importado de outra loja")

Estrutura do Objeto version (apenas para carros)

CampoTipoDescrição
idintegerIdentificador único da versão
namestringNome da versão

Estrutura do Objeto doors (apenas para carros)

CampoTipoDescrição
idintegerIdentificador único
namestringNome (ex: "4 portas", "2 portas")

Estrutura do Objeto transmission (apenas para carros)

CampoTipoDescrição
idintegerIdentificador único
namestringNome (ex: "Automática", "Manual")

Filtros

Este endpoint suporta os seguintes filtros através de query parameters:

ParâmetroTipoDescrição
statusintegerFiltra por ID do status
categoryintegerFiltra por categoria (1=Automóvel, 2=Motocicleta, 3=Caminhão, 4=Implemento)
is_newintegerFiltra por veículos novos (1) ou usados (0)
qstringBusca por ID do anúncio, placa, marca, modelo, cor, versão ou chassi
is_not_integrated_inintegerRetorna apenas anúncios NÃO integrados com status ativo no portal especificado
order_byintegerOrdenação dos resultados (ver abaixo)

Opções de Ordenação (order_by)

ValorDescrição
0Preço - Mais Barato
1Preço - Mais Caro
2Ano modelo (mais recente)
3Marca (alfabética)
4Modelo (alfabético)
5Marca + Modelo (alfabético)
6KM - Menor para maior
7KM - Maior para menor

Padrão: Ordenação por ID decrescente (mais recentes primeiro)

Exemplos de Uso de Filtros

Filtrar por status:

GET /inventory/{dealer_id}?status=1

Filtrar por categoria:

GET /inventory/{dealer_id}?category=1

Filtrar apenas veículos novos:

GET /inventory/{dealer_id}?is_new=1

Buscar por texto (placa, marca, modelo, etc.):

GET /inventory/{dealer_id}?q=ABC1234
GET /inventory/{dealer_id}?q=Toyota
GET /inventory/{dealer_id}?q=Corolla

Filtrar anúncios não integrados em um portal específico:

GET /inventory/{dealer_id}?is_not_integrated_in=5

Ordenar por preço (mais barato primeiro):

GET /inventory/{dealer_id}?order_by=0

Combinar múltiplos filtros:

GET /inventory/{dealer_id}?category=1&is_new=0&status=1&order_by=0

Query Parameters de Paginação

ParâmetroTipoDescrição
pageintegerNúmero da página
pageSizeintegerQuantidade de itens por página (padrão: definido nas configurações, máximo: 100)

Criar um Novo Anúncio

Requisição

Método: POST

Endpoint: /inventory/{dealer_id}

Payload:

{
"category": 1,
"version_detail_id": 100,
"color": 5,
"make_year": 2023,
"model_year": 2024,
"km": 15000,
"price": 85000,
"description": "Veículo em excelente estado",
"license_plate": "ABC1234",
"is_new": false,
"accept_exchange": true,
"factory_warranty": true,
"features": [1, 2],
"photos": [
{
"order": 1,
"photo_name": "foto1.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAv/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAX/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABmX/9k="
}
]
}

Campos Obrigatórios

CampoTipoDescrição
categoryintegerCategoria do veículo (1=Automóvel, 2=Motocicleta, 3=Caminhão, 4=Implemento)
version_detail_idintegerID do detalhe da versão do veículo
colorintegerID da cor
make_yearintegerAno de fabricação
model_yearintegerAno do modelo
kmintegerQuilometragem (deve ser > 0 para veículos usados)
priceintegerPreço (deve ser > 0)
descriptionstringDescrição do anúncio

Campos Opcionais

CampoTipoDescrição
license_platestringPlaca do veículo (obrigatório se is_new = false)
is_newbooleanVeículo novo (padrão: false)
notestringObservação adicional
version_sitestringVersão para exibição no site
youtube_urlstringURL do vídeo do YouTube
chassistringNúmero do chassi
alienatedbooleanVeículo alienado (padrão: false)
licensedbooleanVeículo licenciado (padrão: false)
only_ownerbooleanÚnico dono (padrão: false)
tax_payedbooleanIPVA pago (padrão: false)
accept_exchangebooleanAceita troca (padrão: false)
factory_warrantybooleanGarantia de fábrica (padrão: false)
extended_warrantybooleanGarantia estendida (padrão: false)
inspectionbooleanPossui laudo cautelar (padrão: false)
pwdbooleanPossui PDF (padrão: false)
reviews_at_the_dealershipbooleanRevisões na concessionária (padrão: false)
address_idintegerID do endereço (usa primeiro endereço da loja se não informado)
featuresarrayArray de IDs de opcionais/equipamentos
photosarrayArray de objetos com fotos (ver estrutura abaixo)

Estrutura do Campo photos (Criação)

Para criar um novo anúncio, o campo photos deve conter um array de objetos com a seguinte estrutura:

CampoTipoDescrição
photo_namestringNome original do arquivo (ex: "foto.jpg")
orderintegerOrdem de exibição da foto
base64stringImagem codificada em base64. Pode ser uma data URL (data:image/jpeg;base64,...) ou base64 puro

Exemplo de base64 como data URL:

"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRg..."

Exemplo de base64 puro:

"base64": "/9j/4AAQSkZJRg..."

Observação: O campo base64 é obrigatório para novas fotos. O sistema processa a imagem automaticamente e cria versões em thumbnail e WebP.

Campos Específicos por Categoria

Para Carros (category = 1)

CampoTipoDescrição
is_armoredbooleanVeículo blindado (padrão: false)
armored_levelintegerNível de blindagem (pode ser null)
armoredintegerTipo de blindagem (pode ser null)

Resposta de Sucesso

Status Code: 201 Created

Retorna o objeto do anúncio criado com todos os campos populados.

Remover um Anúncio

Requisição

Método: DELETE

Endpoint: /inventory/{dealer_id}

Query Parameters:

ParâmetroTipoDescrição
idintegerID do anúncio a ser removido

Exemplo:

DELETE /inventory/{dealer_id}?id=12345

Resposta de Sucesso

Status Code: 204 No Content

Observações

  • Apenas anúncios ativos são retornados na listagem
  • O campo license_plate é obrigatório para veículos usados (is_new = false), exceto para implementos
  • O campo km deve ser maior que 0 para veículos usados
  • O campo make_year não pode ser maior que model_year
  • A diferença entre make_year e model_year não pode ser maior que 1 ano
  • O campo q pode buscar por ID numérico (busca exata) ou por texto (busca parcial em placa, marca, modelo, cor, versão ou chassi)
  • O filtro is_not_integrated_in retorna apenas anúncios que não possuem integração ativa no portal especificado
  • Os anúncios são ordenados por ID decrescente por padrão (mais recentes primeiro)
  • O campo integration retorna apenas integrações com status ativo
  • O campo photos retorna apenas fotos não deletadas (apagar=0), ordenadas por ordem de exibição
  • Campos específicos como version, doors e transmission aparecem apenas para anúncios de carros (category = 1)
  • Ao criar um anúncio, o sistema automaticamente calcula o QA Score e sincroniza com o site da loja após 30 segundos

Possíveis Retornos de Erro

400 Bad Request

Retornado quando há erros de validação nos dados enviados ou quando o parâmetro dealer_id não é fornecido.

{
"detail": "Parâmetro ID da Loja não encontrado"
}

ou

{
"license_plate": ["License plate cannot be blank for used vehicles"],
"km": ["KM must be greater than 0 for used vehicles"],
"price": ["Preço deve ser maior que 0"],
"make_year": ["make_year cannot be greater than model_year"]
}

401 Unauthorized

Retornado quando o token de autenticação não foi fornecido ou é inválido.

{
"detail": "As credenciais de autenticação não foram fornecidas."
}

ou

{
"detail": "Token inválido ou expirado."
}

403 Forbidden

Retornado quando o usuário autenticado não tem permissão para acessar este recurso.

{
"detail": "Você não tem permissão para executar essa ação."
}

404 Not Found

Retornado quando a loja especificada não é encontrada ou quando tenta remover um anúncio que não existe.

{
"detail": "Não encontrado."
}