Pular para o conteúdo principal

Detalhes do Anúncio

Consulte, atualize ou remova um anúncio específico através do seu ID.

Endpoint

GET /inventory/item/{ad_id}
PUT /inventory/item/{ad_id}
PATCH /inventory/item/{ad_id}
DELETE /inventory/item/{ad_id}

Métodos

  • GET: Retorna os detalhes completos de um anúncio específico
  • PUT: Atualiza completamente um anúncio
  • PATCH: Atualiza parcialmente um anúncio
  • DELETE: Remove um anúncio (marca como vendido ou remove completamente)

Parâmetros de URL

ParâmetroTipoDescrição
ad_idintegerID do anúncio

Autenticação

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

Authorization: Bearer {access_token}

GET - Obter Detalhes do Anúncio

Requisição

Método: GET

Endpoint: /inventory/item/{ad_id}

Exemplo de Resposta

Status Code: 200 OK

{
"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"
}
}

Observações

  • Retorna todos os detalhes do anúncio, incluindo integrações ativas, fotos, opcionais e endereço
  • Campos específicos como version, doors e transmission aparecem apenas para carros (category = 1)
  • O campo integration retorna apenas integrações com status ativo
  • O campo photos retorna apenas fotos não deletadas, ordenadas por ordem de exibição

PUT - Atualizar Completamente o Anúncio

Requisição

Método: PUT

Endpoint: /inventory/item/{ad_id}

Campos Obrigatórios

Todos os campos obrigatórios devem ser fornecidos em uma atualização completa. Consulte a documentação de criação de anúncios para a lista completa de campos obrigatórios.

Exemplos por Categoria

Carro (category = 1)

{
"category": 1,
"version_detail_id": 100,
"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,
"accept_exchange": true,
"alienated": false,
"licensed": true,
"only_owner": true,
"tax_payed": true,
"factory_warranty": true,
"extended_warranty": false,
"inspection": false,
"pwd": false,
"reviews_at_the_dealership": false,
"is_armored": false,
"armored_level": null,
"armored": null,
"version_site": "XEi 2.0",
"youtube_url": "https://www.youtube.com/watch?v=example",
"chassi": "9BW12345678901234",
"note": "Observação adicional",
"address_id": 1,
"features": [1, 2, 3],
"photos": [
{
"order": 1,
"photo_name": "foto1.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAv/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAX/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABmX/9k="
},
{
"order": 2,
"photo_name": "foto2.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAv/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAX/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABmX/9k="
}
],
"text_price_site": "Preço",
"show_price_site": true
}

Campos específicos para carros:

CampoTipoDescrição
is_armoredbooleanIndica se o veículo é blindado
armored_levelintegerNível de blindagem (pode ser null)
armoredintegerTipo de blindagem (pode ser null)

Motocicleta (category = 2)

{
"category": 2,
"version_detail_id": 200,
"color": 3,
"make_year": 2022,
"model_year": 2023,
"km": 5000,
"price": 35000,
"description": "Motocicleta seminova, única dona, revisões em dia",
"license_plate": "XYZ5678",
"is_new": false,
"accept_exchange": false,
"alienated": false,
"licensed": true,
"only_owner": true,
"tax_payed": true,
"factory_warranty": true,
"extended_warranty": false,
"inspection": false,
"pwd": false,
"reviews_at_the_dealership": false,
"gear": 1,
"refrigeration": 2,
"power_supply": 1,
"engine": 1,
"breaks": 1,
"start": 1,
"engine_capacity": 600,
"version_site": "CB 600F",
"youtube_url": null,
"chassi": "9BW98765432109876",
"note": null,
"address_id": 1,
"features": [10, 11],
"photos": [
{
"order": 1,
"photo_name": "moto_foto1.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAv/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAX/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABmX/9k="
}
],
"text_price_site": "Preço",
"show_price_site": true
}

Campos específicos para motocicletas:

CampoTipoDescrição
gearintegerTipo de câmbio (1=Manual, 2=Automático, etc.)
refrigerationintegerTipo de refrigeração (1=Ar, 2=Líquido, etc.)
power_supplyintegerTipo de alimentação (1=Injeção, 2=Carburador, etc.)
engineintegerTipo de motor (1=Monocilíndrico, 2=Bicilíndrico, etc.)
breaksintegerTipo de freio (1=Disco, 2=Tambor, etc.)
startintegerTipo de partida (1=Elétrica, 2=Pedal, etc.)
engine_capacityintegerCapacidade do motor em cc

Caminhão (category = 3)

{
"category": 3,
"version_detail_id": 300,
"color": 2,
"make_year": 2021,
"model_year": 2022,
"km": 80000,
"price": 250000,
"description": "Caminhão em ótimo estado, usado para transporte de carga",
"license_plate": "DEF9012",
"is_new": false,
"accept_exchange": true,
"alienated": false,
"licensed": true,
"only_owner": false,
"tax_payed": true,
"factory_warranty": false,
"extended_warranty": true,
"inspection": true,
"pwd": true,
"reviews_at_the_dealership": true,
"is_armored": false,
"armored_level": null,
"armored": null,
"power": 400,
"load_capacity": 15000,
"pulling_capacity": 30000,
"implement": 1,
"type": 2,
"cabin": 1,
"traction": 2,
"breaks": 1,
"suspension": 1,
"version_site": "FH 440",
"youtube_url": null,
"chassi": "9BW11111111111111",
"note": "Documentação completa",
"address_id": 1,
"features": [20, 21, 22],
"photos": [
{
"order": 1,
"photo_name": "caminhao_foto1.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAv/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAX/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABmX/9k="
},
{
"order": 2,
"photo_name": "caminhao_foto2.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAv/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAX/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABmX/9k="
}
],
"text_price_site": "Consulte",
"show_price_site": false
}

Campos específicos para caminhões:

CampoTipoDescrição
is_armoredbooleanIndica se o veículo é blindado
armored_levelintegerNível de blindagem (pode ser null)
armoredintegerTipo de blindagem (pode ser null)
powerintegerPotência do motor em CV
load_capacityintegerCapacidade de carga em kg
pulling_capacityintegerCapacidade de tração em kg
implementintegerID do tipo de implemento
typeintegerTipo de caminhão (1=Rodoviário, 2=Fora de estrada, etc.)
cabinintegerTipo de cabine (1=Simples, 2=Sleeper, etc.)
tractionintegerTipo de tração (1=4x2, 2=4x4, 3=6x2, etc.)
breaksintegerTipo de freio (1=Ar, 2=Disco, etc.)
suspensionintegerTipo de suspensão (1=Mola, 2=Ar, etc.)

Implemento (category = 4)

{
"category": 4,
"version_detail_id": 400,
"color": 1,
"make_year": 2020,
"model_year": 2021,
"km": 0,
"price": 80000,
"description": "Implemento agrícola em excelente estado",
"license_plate": null,
"is_new": false,
"accept_exchange": false,
"alienated": false,
"licensed": false,
"only_owner": true,
"tax_payed": false,
"factory_warranty": false,
"extended_warranty": false,
"inspection": false,
"pwd": false,
"reviews_at_the_dealership": false,
"number_of_axles": 2,
"version_site": "Arado 5 Discos",
"youtube_url": null,
"chassi": null,
"note": null,
"address_id": 1,
"features": [30],
"photos": [
{
"order": 1,
"photo_name": "implemento_foto1.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAv/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAX/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABmX/9k="
}
],
"text_price_site": "Preço",
"show_price_site": true
}

Campos específicos para implementos:

CampoTipoDescrição
number_of_axlesintegerNúmero de eixos (1, 2, 3, etc.)

Observações para implementos:

  • O campo km pode ser 0 ou null para implementos
  • O campo license_plate pode ser null para implementos
  • O campo chassi pode ser null para implementos

Resposta de Sucesso

Status Code: 200 OK

Retorna o objeto completo do anúncio atualizado (mesma estrutura do GET).

Observações

  • Todos os campos devem ser fornecidos, mesmo que não sejam alterados
  • Campos não fornecidos serão definidos com valores padrão ou null
  • O processamento depende da categoria do veículo, e cada categoria aceita campos específicos:
    • Carros (category = 1) aceitam campos de blindagem
    • Motocicletas (category = 2) aceitam campos específicos de motocicleta (câmbio, refrigeração, etc.)
    • Caminhões (category = 3) aceitam campos específicos de caminhão (potência, capacidade, tipo, etc.)
    • Implementos (category = 4) aceitam campos específicos de implemento (número de eixos)
  • Ao atualizar, o sistema automaticamente:
    • Sincroniza com o site da loja
    • Recalcula o QA Score
    • Processa fotos e opcionais se fornecidos

PATCH - Atualizar Parcialmente o Anúncio

Requisição

Método: PATCH

Endpoint: /inventory/item/{ad_id}

Payload:

{
"price": 82000,
"description": "Preço reduzido! Veículo em excelente estado"
}

Campos Opcionais

Apenas os campos que deseja atualizar precisam ser fornecidos. Todos os campos são opcionais em uma atualização parcial.

Exemplo de Atualização Parcial

Atualizar apenas o preço:

{
"price": 82000
}

Atualizar descrição e adicionar fotos:

{
"description": "Nova descrição atualizada",
"photos": [
{
"order": 3,
"photo_name": "nova_foto.jpg",
"base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAv/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAX/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABmX/9k="
}
]
}

Atualizar ordem de fotos existentes:

{
"photos": [
{
"id": 1,
"order": 1
},
{
"id": 2,
"order": 2
},
{
"id": 3,
"order": 3
}
]
}

Deletar fotos:

{
"photos": [
{
"id": 5,
"delete": true
},
{
"id": 6,
"delete": true
}
]
}

Atualizar opcionais:

{
"features": [1, 2, 3, 5]
}

Estrutura do Campo photos

O campo photos é um array de objetos que pode conter diferentes operações:

Para Adicionar Nova Foto

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..."

Para Atualizar Ordem de Foto Existente

CampoTipoDescrição
idintegerID da foto existente
orderintegerNova ordem de exibição (deve ser >= 0)

Para Deletar Foto Existente

CampoTipoDescrição
idintegerID da foto existente
deletebooleanDeve ser true para deletar a foto

Observações sobre Fotos

  • Para adicionar novas fotos, não inclua o campo id
  • Para atualizar a ordem de fotos existentes, inclua o campo id e order (sem delete)
  • Para deletar fotos, inclua o campo id e delete: true
  • O campo base64 é obrigatório apenas para novas fotos
  • O campo photo_name é obrigatório apenas para novas fotos
  • O campo order é obrigatório para novas fotos e para atualizar ordem
  • Você pode combinar operações diferentes em um único array photos (adicionar, atualizar ordem e deletar)

Resposta de Sucesso

Status Code: 200 OK

Retorna o objeto completo do anúncio atualizado (mesma estrutura do GET).

Observações

  • Apenas os campos fornecidos serão atualizados
  • Campos não fornecidos permanecem inalterados
  • O processamento é determinado pela categoria do anúncio existente, e cada categoria aceita campos específicos
  • Validações são aplicadas apenas aos campos fornecidos
  • Ao atualizar, o sistema automaticamente:
    • Sincroniza com o site da loja
    • Recalcula o QA Score
    • Processa fotos e opcionais se fornecidos

DELETE - Remover Anúncio

Requisição

Método: DELETE

Endpoint: /inventory/item/{ad_id}

Body:

{
"reason": 1,
"keep_in_integrator": false
}

Campos do Body

CampoTipoDescrição
reasonintegerID do motivo da venda (obrigatório)
keep_in_integratorbooleanSe true, mantém o anúncio nos portais de integração (padrão: false)

Resposta de Sucesso

Status Code: 204 No Content (quando bem-sucedido)

ou

Status Code: 200 OK (quando há erros parciais)

{
"status": true,
"message": "Anúncio removido com sucesso",
"error": []
}

Resposta com Erros Parciais

Status Code: 400 Bad Request

{
"status": false,
"message": "Erro ao remover anúncio",
"error": [
"Erro ao remover do portal X",
"Erro ao atualizar cache"
]
}

Observações

  • O anúncio é removido de forma assíncrona
  • Se keep_in_integrator for true, o anúncio será removido apenas do sistema interno, mas permanecerá nos portais de integração
  • Se keep_in_integrator for false, o anúncio será removido tanto do sistema quanto dos portais de integração
  • O campo reason deve ser um ID válido de motivo de venda (consulte o endpoint /inventory/reason-for-sale/{dealer_id})
  • A remoção pode falhar parcialmente (ex: erro em um portal específico), mas o anúncio ainda será removido do sistema principal
  • O campo error contém uma lista de erros que ocorreram durante a remoção, se houver

Estrutura de Dados

A estrutura de dados retornada é a mesma do endpoint de listagem (/inventory/{dealer_id}). Consulte a documentação desse endpoint para detalhes completos sobre todos os campos.

Campos Específicos por Categoria

Para Carros (category = 1)

Campos adicionais retornados:

  • version: Objeto com informações da versão
  • doors: Objeto com número de portas
  • transmission: Objeto com tipo de transmissão
  • is_armored: boolean - Veículo blindado
  • armored_level: integer - Nível de blindagem
  • armored: integer - Tipo de blindagem

Para Motocicletas (category = 2)

Campos adicionais retornados:

  • gear: integer - Tipo de câmbio
  • refrigeration: integer - Tipo de refrigeração
  • power_supply: integer - Tipo de alimentação
  • engine: integer - Tipo de motor
  • breaks: integer - Tipo de freio
  • start: integer - Tipo de partida

Para Caminhões (category = 3)

Campos adicionais retornados:

  • truck_type: integer - Tipo de caminhão
  • truck_cabin: integer - Tipo de cabine
  • truck_traction: integer - Tipo de tração
  • truck_suspension: integer - Tipo de suspensão
  • truck_break: integer - Tipo de freio
  • truck_implement: integer - Tipo de implemento

Para Implementos (category = 4)

Campos adicionais retornados:

  • truck_implement: integer - Tipo de implemento
  • number_of_axles: integer - Número de eixos

Observações Gerais

  • O usuário deve ter permissão para acessar o anúncio específico (o anúncio deve pertencer a uma loja à qual o usuário tem acesso)
  • Todos os métodos retornam ou atualizam o mesmo formato de dados
  • As atualizações (PUT/PATCH) processam fotos e opcionais de forma assíncrona
  • O sistema sincroniza automaticamente com o site da loja após atualizações
  • O QA Score é recalculado automaticamente após atualizações
  • Campos de somente leitura (id, created_at, updated_at, created_by, updated_by) não podem ser alterados

Possíveis Retornos de Erro

400 Bad Request

Retornado quando há erros de validação nos dados enviados.

{
"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"]
}

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 o anúncio especificado.

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

404 Not Found

Retornado quando o anúncio especificado não é encontrado.

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

405 Method Not Allowed

Retornado quando um método HTTP não suportado é utilizado.

{
"detail": "Método \"POST\" não permitido."
}