Importação de Anúncios (Inserção/Edição/Deleção)
Autenticação oAuth no Eu Preciso
Para utilizar a integração de anúncios via API, é necessário autenticar-se em nome de um usuário do Eu Preciso através do protocolo oAuth. A documentação da autenticação oAuth encontra-se aqui.
Na autenticação, o sistema solicitante receberá o client_id e o client_secret que deverão ser usados na URL de conexão. Durante o fluxo oAuth será requisitado que o usuário dê permissão ao integrador para gerenciar seus anúncios no Eu Preciso. No handshake do oAuth, é requisitado também o scope que a aplicação-cliente necessitará. Para utilizar o sistema de integração de anúncios via API, é preciso o scope autoupload.
Importação de Anúncios
O processo de integração de anúncios via API consiste no envio de um arquivo no formato JSON descrevendo um ou mais anúncios para inserção, edição ou deleção.
A URL usada para envio da requisição é: https://apps.eupreciso.com.br/v1.0/integradores/autoupload/import
O nosso servidor deve receber a chamada com método do tipo POST e o header enviado deverá ser: Content-type: application/json, Authorization: seu access_token. O formato do encode do JSON deverá ser UTF-8 e o tamanho do payload não pode ultrapassar 1 MB.
Inserção ou Edição de Anúncios
Para uma inserção ou edição de anúncios, é necessário montar o JSON com parâmetros básicos para quaisquer categorias, além de específicos de cada categoria e/ou subcategoria.
A seguir um JSON de exemplo com uma inserção:
{
"ad_list": [
{
"id": "12345678910",
"action": "insert",
"category": "Autos e peças",
"subcategory": "Carros, vans e utilitários",
"title": "BMW X1 2022 em Excelente Estado",
"body": "Vendo carro...",
"operation": "venda",
"price": 240000,
"zipcode": 89221000,
"showPhone": "1",
"acceptNoValidatedChat": false,
"images": ["..."],
"params": {
//inserir parâmetros específicos da subcategoria
}
}
]
}Parâmetros Básicos
| Parâmetro | Valores | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
access_token | string | Sim | Token de acesso, segue no headers da requisição. | |
id | Regular expression: [A-Za-z0-9_{}-]{1,19} | string | Sim | O identificador do anúncio. Deve ser único no JSON (caso haja mais de um anúncio no JSON). |
action | insert ou delete | string | Sim | Valores para identificar qual será a ação a ser feita: insert para inserir ou editar anúncios, delete para despublicar anúncios. |
category | string | Sim | Categoria do anúncio. | |
subcategory | string | Sim | Subcategoria do anúncio. | |
title | string | Sim | Título do anúncio. Mínimo de 2 e máximo de 90 caracteres. | |
body | string | Sim | Descrição do anúncio. Mínimo de 2 e máximo de 6 mil caracteres. | |
operation | venda ou aluguel | string | Sim | Tipo de oferta do anúncio. |
price | integer | Não | Preço do anúncio (não aceita centavos). | |
zipcode | string numérica | Sim | O CEP do anúncio. | |
showPhone | "1" ou "2" | string | Não (interpreta como “1” se não enviado) | Exibir telefone? "1" para sim e "2" para ocultar o telefone no anúncio. Caso não envie o comando, ele será interpretado como "1" e o telefone será exibido. |
params | object | Não | Lista de parâmetros com as características do anúncio. Os valores dessa lista variam de acordo com a categoria do anúncio. | |
images | URL da imagem | array de string | Não | URL de imagens que serão inseridas no anúncio do eupreciso.com.br. Não pode haver URLs repetidas neste array. Máximo de 20 imagens. Importante: a primeira imagem da lista será a imagem principal do anúncio! |
youtube | URL do vídeo | string | Não | URL de vídeo que será inserida no anúncio do eupreciso.com.br para o caso de usuários PRO. Deve ser apenas do https://www.youtube.com/. Aceito 1 vídeo por anúncio! |
instagram | URL da postagem ou reels no Instagram | string | Não | URL de postagem/reels do Instagram que será inserida no anúncio do eupreciso.com.br para o caso de usuários PRO. Aceito 1 postagem/reels por anúncio! |
priceExchange | integer | Somente se params.exchange for “1” | Preço do anúncio em caso de troca (não aceita centavos). Esse campo é obrigatório quando o params.exchange é igual a “1”, sendo utilizado na futura implementação do Eu Troco, aplicativo de trocas do Eu Preciso. | |
acceptNoValidatedChat | true ou false | Boolean | Não | Aceitar o envio de chat por pessoas não verificadas. Padrão: false. |
Notas
- Se você não quer enviar um parâmetro não-obrigatório, deixe de enviar o parâmetro no payload. Se você enviar o parâmetro com valor vazio ou 0, a operação vai falhar (a menos, é claro, que o valor 0 seja esperado para esse parâmetro).
- Formato recomendado de URL: https://www.youtube.com/watch?v=6PpdlhZecVs.
- Formatos aceitos de URL: https://www.instagram.com/p/CTQY8Y8J8ZU/ ou https://www.instagram.com/reel/CTQY8Y8J8ZU/
- O recurso de visibilidade em comunidades não é suportado via API. A visibilidade em comunidades deve ser configurada através da plataforma.
IMPORTANTE: Na categoria de imóveis, as fotos do condomínio devem ser enviadas
em campo próprio complex_images nos parâmetros específicos, caso exista o
condomínio na listagem da API Eu Preciso, sob pena de envio do anúncio para
correção. Maiores destalhes na seção de Imóveis.
Parâmetros Específicos
| Categoria | Subcategoria |
|---|---|
| Imóveis | Apartamentos |
| Imóveis | Casas |
| Imóveis | Terrenos, sítios e fazendas |
| Autos e peças | Carros, vans e utilitários |
| Autos e peças | Motos |
- As peças e os veículos são cadastrados sob a mesma categoria no Eu Preciso, sendo que a identificação será dada em params, conforme será demonstrado nessa documentação.
- Outras categorias ainda não são suportadas pela API EU PRECISO.
- As subcategorias não listadas ainda estão sendo implementadas e não são suportadas pela API EU PRECISO.
Pagamento
Os anúncios no Eu Preciso são grátis, independentemente da quantidade, mas o usuário deve ter um plano PRO ativo para usar a integração de terceiros.
A seguir um JSON de exemplo com uma deleção:
{
"ad_list": [
{
"id": "12345678910",
"action": "delete"
}
]
}Deleção de Anúncios
Para uma deleção, basta enviar o id e a action delete.
O access_token deve ser sempre enviado no headers da requisição Authorization.
O anúncio permanecerá publicado a menos que uma operação de deleção seja enviada para o Eu Preciso com o id utilizado em sua inserção. Portanto recomendamos atenção redobrada para o integrador enviar a deleção para o Eu Preciso, para evitar que anúncios de produtos já vendidos continuem publicados - prejudicando a experiência do anunciante e do comprador.
ATENÇÃO: Os vendedores com Recursos PRO possuem renovação automática. Por isso é importante manter a base de anúncios atualizada. Uma semana antes do vencimento é possível desativar a renovação automática, conforme descrito na seção renovação.
Exemplos de JSONs de retorno da API:
{
"token": "78dvsfb4ZdTpMllCgIEqUbWWiOhT",
"statusCode": 0,
"statusMessage": "The ads were imported and will be processed",
"errors": []
}{
"token": null,
"statusCode": -4,
"statusMessage": "An ad had problems on import",
"errors": [
{
"id": "78192371",
"status": "error",
"messages": [
{
"category": "NO_REGION"
}
]
}
]
}Retorno Esperado
O formato do retorno de nosso servidor será do tipo JSON, que contém a seguinte estrutura:
| Parâmetro | Valor | Descrição |
|---|---|---|
token | Retorna uma string com um token a ser usado para posteriormente acessar o status da importação. | |
statusMessage | Explica o retorno síncrono da importação, com detalhamento de erros da validação síncrona. | |
statusCode | Identifica o retorno síncrono da importação. | |
errors | array | Retorna uma lista de erros. |
Os statusCode e statusMessage possíveis são os seguintes:
| Código | Mensagem | Descrição |
|---|---|---|
| 0 | The ads were imported and will be processed | No caso, os anúncios foram validados sincronamente. Não é garantia de publicação, dado que há a validação assíncrona posterior (moderação, etc). |
| -1 | Unexpected error | Erro inesperado. |
| -2 | The request was blocked | Usuário não pode importar pois está bloqueado temporariamente por excesso de requisições. |
| -3 | There is no ad to import | Não há anúncios para importar. |
| -4 | An ad had problems on import | Se um anúncio falhar em sua validação, a importação é cancelada. |
| -5 | Import is down | O serviço de importação está desativado. |
| -6 | Without permission | Usuário sem permissão. |
| -7 | Trying to import “n” ad(s), but user just have slot for “f” more. | O usuário está tentando importar “n” anúncios, mas só pode importar mais “f”. |
| -8 | Trying to import “n” ad(s), only “f” were imported and will be processed. The following ads were ignored due to limit exceeded: “t” | Tentando importar “n” anúncios, só “f” foram importados e serão processados. Os seguintes anúncios foram ignorados devido ao limite tempo “t” excedido. |
No caso do erro do tipo -4, alguma validação síncrona aconteceu e, por isso, algum dos anúncios deixou de ser importado com sucesso. Os possíveis motivos são os seguintes:
| Código | Descrição |
|---|---|
| UNDEFINED_AD_ID | Anúncio enviado sem ID |
| NO_IMAGE | Anúncio enviado sem imagens |
| NO_REGION | CEP enviado corresponde a região inválida |
| NO_REGION | CEP enviado em formato inválido |
| ERROR_FUEL_4_DEPRECATED | Tentando enviar o valor 4 - Gás Natural ou outro valor inválido no campo fuel |
| ERROR_FINANCIAL_INVALID | Tentando enviar o valor 1 - Financiado ou outro valor inválido no parâmetro financial |
| ERROR_CAR_FEATURE_2_INVALID | Tentando enviar o valor 2 - Direção hidráulica no parâmetro car_features |
| ERROR_CAR_TYPE_1_OR_4_INVALID | Tentando enviar o valor 1 ou 4 no parâmetro cartype |
| ERROR_VEHICLE_TAG_INVALID | Placa não enviada ou em formato inválido |
| ERROR_VEHICLE_BRAND_INVALID | Marca não enviada ou em formato inválido |
| ERROR_VEHICLE_MODEL_INVALID | Modelo não enviado ou em formato inválido |
| ERROR_VEHICLE_VERSION_INVALID | Versão não enviada ou em formato inválido |