Saiba como adaptar seu desenvolvimento para catálogo no Mercado Livre

Saiba como adaptar seu desenvolvimento para catálogo

Agora os vendedores podem criar via API, publicações em catálogo a partir de suas publicações atuais ou de forma direta, sem utilizar uma publicação já existente e assim competir para ganhar a exposição na página do produto, onde estarão posicionadas nos primeiros lugares dos resultados nas buscas.
Antes de começar, não esqueça de ler a documentação sobre Domínios e Produtos, que ajudará você a ter as informações certas para seus produtos.
Prepare seu desenvolvimento com a ajuda deste manual!

 

Como o catálogo funciona?

Tradicionalmente no Mercado Livre, os anúncios são criados exclusivamente pelos vendedores e são eles quem fornecem as informações sobre o que estão vendendo (títulos, fotos e descrições), bem como as condições de venda (preço, envio, meios de pagamento etc.).
A partir de agora, além da forma tradicional de anunciar, é possível criar anúncios de catálogo, onde o conteúdo do anúncio (títulos, fotos, descrições e ficha técnica) são fornecidos pelo Mercado Livre. Os produtos são vendidos através de uma página unificada, na qual as vendas são orientadas para o vendedor que oferecer as melhores condições de venda e melhor experiência para os compradores.

 

Onde os compradores encontram os anúncios de catálogo?

Na hora da busca, os compradores verão os produtos de catálogo nos primeiros resultados. Ao acessar um produto, o vendedor que oferecer as melhores condições de venda e de preço terá a possibilidade de vender esse produto. Na página de produto, também haverá um link para ver a lista completa dos vendedores que oferecem o mesmo produto. Serão destacados os vendedores que oferecem o produto em outras condições de venda relevantes para o comprador como, por exemplo, com “frete grátis” ou “envio no mesmo dia”.
Diferentemente dos anúncios tradicionais que têm sua própria fileira nos resultados de busca, os anúncios de catálogo não têm uma fileira exclusiva nos resultados, mas obtêm suas visitas e vendas através das fileiras destinadas a produtos de catálogo, os quais aparecem no início da lista.
Saiba mais sobre o catálogo.

Em resumo:

  • Até hoje, eram os vendedores que criavam e atualizavam os anúncios, gerando seu conteúdo e determinando suas condições de venda.
  • A partir de agora, além da forma tradicional de anunciar, é possível anunciar no catálogo através de um produto descrito pelo Mercado Livre.
  • Os vendedores obtêm as vendas dos produtos competindo com outros vendedores que procuram oferecer as melhores condições e experiência de compra.
  • Os produtos ocuparão as primeiras posições nas buscas e recomendações do site.
  • Dependendo do país e do domínio onde forem anunciados, o catálogo oferece benefícios de até 23% nas tarifas de venda.

 

Conteúdos

→Como anunciar em catálogo
↳Anunciar diretamente no catálogo versus a partir de um anúncio existente
↳Quais são as diferenças?
↳O que acontece se eu modificar, pausar ou remover meu anúncio de catálogo associado a um anúncio tradicional?
↳É necessário saber mais alguma coisa sobre o gerenciamento dos anúncios de catálogo?
↳É possível anunciar qualquer item em catálogo?
↳O que acontece se, por engano, eu associar um item a um produto errado?
 ↳Etapas para anunciar no catálogo a partir de um anúncio existente
↳Etapas para anunciar no catálogo de forma direta, sem um anúncio associado
→Conferir se um anúncio possa ser escolhido para o catálogo
↳Tag de elegibilidade para itens
↳Elegibilidade de um anúncio existente sem catalog_product_id associado
↳Elegibilidade de um anúncio existente com catalog_product_id associado
↳Considerações
↳Descrição dos campos
→Conferir se vários anúncio são elegíveis para o catálogo com multiget
↳Descrição dos campos
→Filtro de itens por vendedor
→Determinar o produto exato a ser vendido
↳Produtos pai e filho
↳Escolhendo o produto específico para meu anúncio
→Anunciar no catálogo a partir de um anúncio existente
↳Criação automática de publicações de catálogo
→Anúncio diretamente no catálogo: buscador de produtos
→Concorrendo para ganhar as vendas
↳Receba notificações de posts que mudam de status na competição
↳Como conhecer o preço para ganhar
↳Conheça as condições e o preço do item vencedor
↳Como conhecer a relação de publicações para um produto
→Mais sobre anúncios de catálogo
↳Como reconhecer o anúncio de catálogo e o original
↳Como saber a relação entre anúncios associados
↳Como gerenciar as perguntas nos anúncios de catálogo
↳Como gerenciar as orders, visitas, etc.
↳Como gerenciar as vendas dos anúncios de catálogo
↳Ciclo de vida de anúncios associados
↳O que pode ser modificado no anúncio de catálogo

 

Anunciar diretamente no catálogo versus a partir de um anúncio existente

Há duas formas de criar anúncios de catálogo:

  • Criando um anúncio de catálogo a partir de um anúncio tradicional.
  • Anunciando diretamente no catálogo.

 

Quais são as diferenças?

Os anúncios de catálogo criados a partir de um anúncio tradicional compartilham estoque entre si. Ou seja, se através do item MLB1234 criarmos o anúncio de catálogo cujo item é MLB1235, a venda em qualquer um desses dois itens atualizará automaticamente o estoque do outro, pois eles são sincronizados. Se uma venda é cancelada em qualquer um desses itens, a quantidade também retornará automaticamente para o estoque de ambos. Os anúncios associados permitem que o vendedor comece a vender em catálogo enquanto continua vendendo através de seus anúncios tradicionais. Os anúncios que são criados diretamente no catálogo sem estarem associados a um anúncio tradicional, são completamente independentes e não compartilham estoque com nenhum outro anúncio atual.

 

O que acontece se eu modificar, pausar ou remover meu anúncio de catálogo associado a um anúncio tradicional?

Com exceção do estoque, os anúncios de catálogo são itens independentes dos anúncios tradicionais, é possível alterar suas condições de venda e gerenciar seu ciclo de vida de forma independente. Se o anúncio de catálogo for removido, a relação com o anúncio tradicional se perde e para voltar a anunciar em catálogo, é necessário repetir o processo de anunciar em catálogo. Tenha em conta que para desvincular a relação, o estatus do item de catálogo deverá ser “delete”.

 

É necessário saber mais alguma coisa sobre o gerenciamento dos anúncios de catálogo?

Considerando que o conteúdo dos anúncios de catálogo é gerenciado pelo Mercado Livre, os campos editáveis, como título, imagens, descrição e atributos da ficha técnica do recurso/item não podem ser editados nos anúncios de catálogo.

 

Os campos referentes às condições de venda como, por exemplo, o preço continuam sendo gerenciados pelos vendedores. Nas seções a seguir, explicaremos mais sobre os recursos disponíveis para você realizar um gerenciamento eficiente das condições de venda.

 

Não, atualmente os requisitos são:

  • Somente produtos novos (não são permitidos produtos recondicionados ou usados),
  • Todos os vendedores sem discriminação de reputação.
  • No domínio CELLPHONES, só é permitido anunciar telefones celulares desbloqueados (que funcionam com qualquer operadora).

 

Importante:

  • Para poder usar um catalog_product_id, é imprescindível que o vendedor preencha a ficha técnica do item.
  • Se o vendedor incluir um identificador de produto universal no anúncio, isso aumenta as chances de podermos associar seu item a um catalog_product_id.
  • Quando tiver itens sem catalog_product_id associado, você pode realizar a busca dele através do “buscador de produtos”, ele te permitirá identificar o catalog_product_id correto para adicioná-lo no POST no momento de realizar o OPTIN.

Essas condições podem mudar com o tempo e, por conta disso, na seção a seguir você encontrará as ferramentas necessárias para saber se um anúncio pode ser escolhido para catálogo.

 

O que acontece se por engano eu associar um item a um produto errado?

Nos anúncios de catálogo, é extremamente importante que não exista nenhuma discrepância entre o produto de catálogo e a oferta.
Como o conteúdo dos produtos é fornecido pelo Mercado Livre, qualquer discrepância entre o produto descrito e a oferta anunciada pelo vendedor pode resultar em um comprador recebendo algo diferente do esperado.
Caso tenha detectado algum erro, é essencial que finalize a publicação de catálogo, realizando o mesmo fluxo de como finalizar uma publicação tradicional. Em primeira instância, você deve realizar um PUT com status=”closed” e logo após, outro PUT com delete=”true” no item de catálogo para finalizar a publicação.
Tanto o vendedor quanto o integrador podem ser responsáveis por erros no anúncio de catálogo e estão sujeitos a punições que vão desde a queda na reputação até a suspensão da conta.

 

Etapas para anunciar em catálogo a partir de um anúncio existente

  1.  Verificamos que a publicação seja elegível para o catálogo com o recurso /items/{item_id}/catalog_listing_eligibility.
  2.  Dependendo se o ítem conta com um catalog_product_id associado com el recurso /items/{item_id}/catalog_listing_eligibility verificaremos se é elegível ou não.
  3.  Se o item não conta com um catalog_product_id associado, devemos buscar no recurso /products/search o catalog_product_id que coincida exatamente con o producto que correto.
  4.  Comprovamos que a publicação sem catalog_product_id associado seja elegível para o catálogo con o recurso /items/{item_id}/catalog_listing_eligibility?catalog_product_id={catalog_product_id}&variation_id={variation_id}.
  5. Realizamos um POST com o recurso /items/catalog_listings para criar a publicação de catálogo relacionada com uma publicação existente.

 

Etapas para anunciar em catálogo de forma direta, sem um anúncio associado

  1.  Usar o recurso /products/search para identificar o catalog_product_id que corresponda exatamente ao produto a ser vendido.
  2. Criar o JSON pelo recurso /items, incluindo catalog_listing=true e o catalog_product_id validado com o recurso /products/search.
  3.  Usar o recurso /items para criar o anúncio de catálogo de forma direta.

Nas seções a seguir, mostraremos detalhadamente como seguir essas etapas.

 

Importante:
Este recurso estará disponível na Argentina, México e Brasil a partir do dia 14 de agosto.

Como mencionado na seção anterior, neste momento só podem participar de catálogo certos anúncios que atendem alguns requisitos, entre eles: serem novos e do domínio CELLPHONES, os aparelhos devem ser desbloqueados.
Para conferir a possibilidade de um anúncio ser elegível para catálogo em qualquer domínio, você deve usar a API catalog_listing_eligibility. Lembre-se de que a resposta será diferente dependendo do anúncio ter ou não variações.
Além do mais, você pode verificar se uma publicação sem catalog_product_id associado é elegível para publicar em catálogo usando o mesmo recurso catalog_listing_eligibility mais os parâmetros de catalog_product_id e variation_id, dependendo das características do item. Tenha em conta que para identificar o catalog_product_id correto, você deverá seguir os passos correspondentes detalhados na seção buscador de produtos.

 

Tag de elegibilidade para itens

Importante:
Esta funcionalidade estará disponível a partir de 6 de março de 2020 para Argentina, Brasil e Mexico.

Através do recurso search, poderá identificar todos os itens dos vendedores que são elegíveis para catálogo, que ainda não foram publicados, pela tag catalog_listing_eligible. Para consultá-los realize a seguinte chamada:

 

Chamada:

curl -X GET https://api.mercadolibre.com/users/$USER_ID/items/search?tags=catalog_listing_eligible&access_token=$ACCESS_TOKEN

Exemplo:

curl -X GET https://api.mercadolibre.com/users/123456987/items/search?tags=catalog_listing_eligible&access_token=$ACCESS_TOKEN

Resposta curta:

{
    "seller_id": "123456987",
    "query": null,
    "paging": {
        "limit": 50,
        "offset": 0,
        "total": 1
    },
    "results": [
        "MLA123456789"
    ],
    "filters": [],
    "available_filters": [
            ]
}
Nota:
A resposta do search mostrará todos os itens do vendedor com a tag catalog_listing_eligible.

Exemplo de item elegível:

{
  "id": "MLA123456789",
  "site_id": "MLA",
  "title": "Item De Testeo, Por Favor No Ofertar --kc:off",
  "subtitle": null,
  "seller_id": 123456987,
  "category_id": "MLA3530",
  "official_store_id": null,
  "price": 50,
  "base_price": 50,
  "original_price": null,
  "currency_id": "ARS",
  "initial_quantity": 1,
  "available_quantity": 1,
  "sold_quantity": 0,
  "sale_terms": [
  ],
  "buying_mode": "buy_it_now",
  "listing_type_id": "free",
  "start_time": "2020-02-17T16:30:39.000Z",
  "stop_time": "2020-04-17T04:00:00.000Z",
  "condition": "used",
  "permalink": "https://articulo.mercadolibre.com.ar/MLA-839616438-item-de-testeo-por-favor-no-ofertar-kcoff-_JM",
  "thumbnail": "http://mla-s1-p.mlstatic.com/951410-MLA40807113659_022020-I.jpg",
  "secure_thumbnail": "https://mla-s1-p.mlstatic.com/951410-MLA40807113659_022020-I.jpg",
  "pictures": [],
  "video_id": null,
  "descriptions": [
  ],
  "accepts_mercadopago": true,
  "non_mercado_pago_payment_methods": [
  ],
  "shipping": {},
  "international_delivery_mode": "none",
  "seller_address": {},
  "seller_contact": null,
  "location": {
  },
  "geolocation": {},
  "coverage_areas": [
  ],
  "attributes": [],
  "warnings": [
  ],
  "listing_source": "",
  "variations": [
  ],
  "status": "active",
  "sub_status": [
  ],
  "tags": [
    "catalog_listing_eligible",
    "good_quality_picture",
    "test_item",
    "immediate_payment"
  ],
  "warranty": null,
  "catalog_product_id": null,
  "domain_id": "MLA-UNCLASSIFIED_PRODUCTS",
  "parent_item_id": null,
  "differential_pricing": null,
  "deal_ids": [
  ],
  "automatic_relist": false,
  "date_created": "2020-02-17T16:30:40.000Z",
  "last_updated": "2020-02-17T16:34:12.000Z",
  "health": 0.4,
  "catalog_listing": false
}

Elegibilidade de um anúncio existente sem catalog_product_id associado

Exemplo sem variação:

curl -X GET https://api.mercadolibre.com/items/MLA123456788/catalog_listing_eligibility?catalog_product_id=MLA6352027&access_token={ACCESS_TOKEN}

Resposta:

{
   "id": "MLA123456788",
   "site_id": "MLA",
   "domain_id": "MLA-MICROWAVES",
   "status": "READY_FOR_OPTIN",
   "buy_box_eligible": true,
   "variations": []
}

Exemplo com variação:

curl -X GET https://api.mercadolibre.com/items/MLA123456789/catalog_listing_eligibility?catalog_product_id=MLA9452524&variation_id=43278798243&access_token=$ACCESS_TOKEN

Resposta:

{
  "id": "MLA123456789",
  "site_id": "MLA",
  "domain_id": "MLA-CELLPHONES",
  "status": null,
  "buy_box_eligible": null,
  "variations": [
    {
      "id": 43278798243,
      "status": "READY_FOR_OPTIN",
      "buy_box_eligible": true
    }
  ]
}

Caso o item não conte com um catalog_product_id e no recurso de eligibilidade também não seja enviado o parâmetro com um valor de catalog_product_id correto, a resposta informará que o catalog_product_id é “null”.

 

Exemplo sem parámetro:

curl -X GET https://api.mercadolibre.com/items/MLA123456789/catalog_listing_eligibility?access_token={ACCESS_TOKEN}

Resposta:

{
   "id": "MLA123456789",
   "site_id": "MLA",
   "domain_id": "MLA-MICROWAVES",
   "status": "CATALOG_PRODUCT_ID_NULL",
   "buy_box_eligible": false,
   "variations": []
}

Elegibilidade de um anuncio existente com catalog_product_id associado

Os seguintes exemplos mostram como validar a elegibilidade de uma publicação existente para vincular uma nova publicação de catálogo com estoque sincronizado que conte com um catalog_product_id associado.

 

Chamada:

curl -X GET https://api.mercadolibre.com/items/{item_id}/catalog_listing_eligibility?access_token={ACCESS_TOKEN}

Exemplo com variações:

curl -X GET https://api.mercadolibre.com/items/MLA1234/catalog_listing_eligibility?access_token={ACCESS_TOKEN}

Resposta:

{
    "id": "MLA1234",
    "site_id": "MLA",
    "domain_id": "MLA-CELLPHONES",
    "status": null,
    "buy_box_eligible": null,
    "variations": [
        {
            "id": 1312323,
            "status": "READY_FOR_OPTIN",
            "buy_box_eligible": true
        },
        {
            "id": 1312444,
            "status": "READY_FOR_OPTIN",
            "buy_box_eligible": true
        }
    ]
}

Exemplo sem variações

curl -X GET https://api.mercadolibre.com/items/MLB1234/catalog_listing_eligibility?access_token={ACCESS_TOKEN}

Resposta:

{
    "id": "MLB1234",
    "site_id": "MLB",
    "domain_id": "MLB-MICROWAVES",
    "status": "READY_FOR_OPTIN",
    "buy_box_eligible": true,
    "variations": []
}

Considerações

  • Se o item não possuir variações, a elegibilidade será expressada no campo buy_box_eligible de primeiro nível no JSON de resposta e a seção variations estará vazia.
  • Se o item possuir variações, a elegibilidade de cada uma delas será expressada na seção variations, que conterá um array por variação com um campo buy_box_eligible para cada uma delas.

Descrição dos campos:

  • id: ID do anúncio que estamos consultando.
  • site_id: ID do país ao qual o item corresponde.
  • domain_id: ID do domínio ao qual o item corresponde.
  • buy_box_eligible: indica se o item/variação é elegível ou não para participar de catálogo.
  • variations: são todas as variações de um item. Cada uma terá um status associado e um valor para o campo buy_box_eligible.
  • status: define a situação do item tradicional com relação ao catálogo. Os diferentes status podem ser:

Elegível:

  • READY_FOR_OPTIN: o item pode ser anunciado no catálogo.

Não elegíveis:

 

  • ALREADY_OPTED_IN: o item tradicional consultado já possui um item de catálogo associado.
  • CLOSED: o item encontra-se em um status que não pode mais ser vendido.
  • PRODUCT_INACTIVE: o item está associado a um produto que ainda não foi habilitado para o catálogo ou o item ainda não possui um catalog_product_id associado.
  • NOT_ELIGIBLE: existe uma regra de negócio que impede que o item seja elegível para o catálogo.

 

Por exemplo, celular usado, celular bloqueado. Lembre-se de que, se você consultar um item de catálogo que estiver competindo, o status será COMPETING.

 

Conferir se vários anúncio são elegíveis para o catálogo com multiget

Para verificar se várias publicações são elegíveis para o catálogo fazendo uma única chamada, você deve incorporá-las ao parâmetro ids, bem como efetuar a chamada multiget, da seguinte maneira:

 

Chamada:

https://api.mercadolibre.com/multiget/catalog_listing_eligibility?ids=$item_id,$item_id&access_token=$ACCESS_TOKEN

Exemplo:

https://api.mercadolibre.com/multiget/catalog_listing_eligibility?ids=MLA818878419,MLA820167922&access_token=$ACCESS_TOKEN

Resposta:

[
    {
        "code": 200,
        "body": {
            "buy_box_eligible": null,
            "domain_id": "MLA-CELLPHONES",
            "id": "MLA818878419",
            "site_id": "MLA",
            "status": null,
            "variations": [
                {
                    "buy_box_eligible": true,
                    "id": 44612657634,
                    "status": "READY_FOR_OPTIN"
                },
                {
                    "buy_box_eligible": false,
                    "id": 44890704657,
                    "status": "ALREADY_OPTED_IN"
                }
            ]
        }
    },
    {
        "code": 200,
        "body": {
            "buy_box_eligible": null,
            "domain_id": "MLA-CELLPHONES",
            "id": "MLA820167922",
            "site_id": "MLA",
            "status": null,
            "variations": [
                {
                    "buy_box_eligible": true,
                    "id": 44931385066,
                    "status": "READY_FOR_OPTIN"
                },
                {
                    "buy_box_eligible": true,
                    "id": 44931385069,
                    "status": "READY_FOR_OPTIN"
                }
            ]
        }
    }
]

Descrição dos campos

  • code: é o código de status HTTP que retorna a consulta com cada item_id; se não houver erro, ele deve ser 200.
  • body: corpo da mensagem que retorna essa consulta à API de elegibilidade.

Filtro de itens por vendedor

Adicionamos ao recurso de busca de publicações de um vendedor, um filtro que permitirá conhecer as publicações que são de catálogo e aquelas que são as tradicionais. Para isso você deverá passar na busca o parâmetro “catalog_listing” com o valor true ou false, dependendo do que você deseja consultar.
Em primeiro lugar identificamos todos os itens de catálogo de um seller, tenha em conta que você deverá passar o parâmetro de status correspondente caso queira adicionar um filtro como por exemplo status=“active”.

 

Chamada:

curl -X GET https://api.mercadolibre.com/users/{user_id}/items/search?catalog_listing=true&access_token={ACCESS_TOKEN}

Exemplo:

curl -X GET https://api.mercadolibre.com/users/123456789/items/search?catalog_listing=true&access_token={ACCESS_TOKEN}

Resposta resumida de itens que são de catálogo:

{
  "seller_id": "123456789",
  "query": null,
  "paging": {
    "limit": 50,
    "offset": 0,
    "total": 8
  },
  "results": [
    "MLA123456789",
    "MLA234567890",
    "MLA345678912",
    "MLA456789123",
    "MLA567891234",
    "MLA678912345",
    "MLA789123456",
    "MLA891234567"
  ],
  "filters": [
  ],
  "available_filters": [],
  "orders": [],
  "available_orders": []
}

Por outro lado você poderá realizar o mesmo filtro para identificar todos os itens de um seller que não são de catálogo.

 

Chamada:

curl -X GET https://api.mercadolibre.com/users/{user_id}/items/search?catalog_listing=false&access_token={ACCESS_TOKEN}

Exemplo:

curl -X GET https://api.mercadolibre.com/users/123456789/items/search?catalog_listing=false&access_token={ACCESS_TOKEN}

Resposta resumida de itens que não são de catálogo:

{
  "seller_id": "123456789",
  "query": null,
  "paging": {
    "limit": 50,
    "offset": 0,
    "total": 2902
  },
  "results": [
    "MLA987654321",
    "MLA123789456",
    "MLA456789123",
    "MLA132465798",
    "MLA978645312",
    "MLA312645978",
    "MLA654987321",
    "MLA123789654",
      ],
  "filters": [
  ],
  "available_filters": [],
  "orders": [],
  "available_orders": []
}

Determinar o produto exato a ser vendido

Para que um item possa ser anunciado no catálogo e ser comprado, ele deve estar associado a um produto específico o bastante, para que o comprador possa saber exatamente o que está comprando, e para o qual o Mercado Livre tenha criado o conteúdo (produtos com status ”active” no recurso /products/{catalog_product_id})

Importante:
O conteúdo do anúncio de catálogo é fornecido pelo Mercado Livre. Portanto, o vendedor é responsável por conferir que o produto a ser associado coincida com as características específicas mostradas na plataforma.
Se houver alguma diferença entre o que o usuário comprar e o produto associado, é possível que existam reclamações e/ou cancelamentos que vão impactar negativamente na sua reputação e, por conseguinte, será inabilitado para anunciar em catálogo, levando, eventualmente, ao cancelamento da conta.

Produtos pai e filho

Em muitos domínios (não em todos), existem dois níveis de produtos:

  • Produtos pai (“parents“), que reúnem produtos específicos e que não podem ser comprados. Por exemplo: Motorola Moto G6 ⇐ Não tem a capacidade nem a cor especificadas!
  • Produtos filho (“children“) suficientemente especificados para sua compra. Por exemplo: Motorola Moto G6 32GB Índigo escuro.
curl -X GET https://api.mercadolibre.com/products/MLB9652753

Resposta:

{
  "id": "MLB9652753",
  "status": "inactive",
  "domain_id": "MLB-CELLPHONES",
  "permalink": "https://www.mercadolivre.com.br/p/MLB9652753",
  "name": "Motorola Moto G6",
  "buy_box_winner": null,
  "pickers": null,
  "pictures": null,
  "main_features": null,
  "attributes": [],
  "short_description": {},
  "parent_id": "",
  "children_ids": [
    "MLB9652754",
    "MLB9652755",
    "MLB9652756",
    "MLB9652757",
    "MLB9707910",
    "MLB9707911",
    "MLB9707912",
    "MLB9707913"
  ]
}

Exemplo de produto children (específico e pode ser usado para anunciar e comprar, se estiver ativo):

curl -X GET https://api.mercadolibre.com/products/MLB9652754

Resposta:

{
  "id": "MLA9652754",
  "status": "active",
  "domain_id": "MLA-CELLPHONES",
  "permalink": "https://www.mercadolibre.com.ar/p/MLA9652754",
  "name": "Motorola G6 32 GB Índigo oscuro",
  "buy_box_winner": {},
  "pickers": [],
  "pictures": [],
  "main_features": [],
  "attributes": [],
  "short_description": {},
  "parent_id": "MLA9652753",
  "children_ids": [
  ]
}

O que nos interessa em relação ao anúncio é:

  • children_ids
    • Se o campo estiver vazio, trata-se de um produto filho e é específico o bastante para ser anunciado.
    • Se contém IDs de outros produtos, isso quer dizer que o catalog_product_id atual corresponde a um produto pai (não completamente especificado). Para anunciar no catálogo, devemos buscar o produto específico entre seus children_ids.
  • status
    • Para poder criar um anúncio de catálogo, é necessário que o produto tenha status ”active”.
    • Os produtos “parent” nunca terão status ”active”, pois não podem ser comprados.

 

Escolhendo o produto específico para o meu anúncio

Seu anúncio e/ou suas variações elegíveis para catálogo terão um catalog_product_id onde você deverá conferir se é adequado para ser anunciado usando o recurso /products/{catalog_product_id}

Exemplo de “catalog_product_id” em um item:

curl -X GET  https://api.mercadolibre.com/items/MLB123456789?access_token={ACCESS_TOKEN}

Resposta resumida:

{
    "id": "MLB123456789",
    "site_id": "MLB",
    "title": "ITEM DE TESTE",
    "subtitle": null,
    "seller_id": 337011113,
    "category_id": "MLB22195",
    "price": 14330,
    "available_quantity": 50,
    "catalog_product_id": "MLB14793781",
    "domain_id": "MLB-AUTOMOTIVE_TIRES"
}

Na hora de criar um anúncio de catálogo a partir de um anúncio existente elegível, você deve conferir com nosso recurso de Produtos:

  • Se o catalog_product_id corresponder a um produto com status “active”, você pode anunciar no catálogo usando esse catalog_product_id
  • Se o catalog_product_id corresponder a um produto que está com status “inactive”.
    • Se o array children_ids estiver vazio, isso quer dizer que o anúncio ou variação já foi associada ao produto mais específico que temos e este ainda não está pronto para ser anunciado no catálogo, portanto, você não pode criar o anúncio de catálogo até que o produto tenha sido editado pelo Mercado Livre.
    • Se o array children_ids não estiver vazio, você deve procurar entre os produtos filho aquele que corresponder exatamente ao que você estiver vendendo.
  • Se você encontrar um catalog_product_id filho ativo que corresponder exatamente ao que você quer vender, pode usá-lo na etapa seguinte para criar seu anúncio de catálogo.
  • Se você não encontrar seu produto exato entre os catalog_product_id filho, ou se encontrar mas não estiver ativo, você não pode anunciar esse produto no catálogo e deve esperar até que o Mercado Livre crie e edite o produto.

Anunciar no catálogo a partir de um anúncio existente

Importante:
Lembre que este recurso estará disponível na Argentina, México e Brasil.

Após conferir que seu anúncio existente é elegível para o catálogo e tiver obtido o catalog_product_id ativo que corresponde exatamente ao que você está anunciando, deve criar o anúncio de catálogo a partir de um POST no recurso /items/catalog_listings.

Sobre as variações

  • Nos domínios onde atualmente existe catálogo, os anúncios de catálogo não contém variações, pois elas estão associadas a um produto específico. Portanto, se seu anúncio original possuía variações, você terá um anúncio de catálogo para cada uma delas. As informações importantes de suas variações (por exemplo, a cor do item) não serão perdidas, mas estarão refletidas nos atributos do produto de catálogo. No futuro, é possível que existam domínios onde o produto nunca especifique perfeitamente o que é vendido (o tamanho em roupas, por exemplo) e é possível que as variações sejam permitidas. Vamos informar quando isso acontecer.
  • Se seu item contém variações, você deve fazer um POST para cada uma delas, enviando o campo variation_id no corpo do POST.

Exemplo de um item com variações:

curl -X POST https://api.mercadolibre.com/items/catalog_listings?access_token={ACCESS_TOKEN}
{
  "item_id":"MLB1234",
  "variation_id": 4321,
  "catalog_product_id":"MLB9876"
}

Exemplo de um item sem variações:

curl -X POST https://api.mercadolibre.com/items/catalog_listings?access_token={ACCESS_TOKEN}
{
  "item_id":"MLB1234",
  "catalog_product_id":"MLB9876" 
}

Exemplo resumido de resposta para a criação de um item:

Resposta:

{
    "id": "MLB1234",
    "site_id": "MLB",
    "title": "Samsung Galaxy J7 Prime 16 Gb Negro",
    "warranty": null,
    "catalog_product_id": "MLB9876",
    "domain_id": "MLB-CELLPHONES",
    "seller_custom_field": null,
    "parent_item_id": null,
    "differential_pricing": null,
    "deal_ids": [],
    "automatic_relist": false,
    "date_created": "2019-08-02T11:33:31.270Z",
    "last_updated": "2019-08-02T11:33:31.270Z",
    "total_listing_fee": null,
    "health": null,
    "catalog_listing": true,
    "item_relations": [
        {
            "id": "MLB123456789",
            "variation_id": null,
            "stock_relation": 1
        }
    ]
}

Além disso, lembre-se de que:

  • Se o item tiver variações, mas for enviado sem elas, o POST falhará, retornando um erro 400.
  • catalog_product_id é um campo obrigatório no POST, o item possuindo ou não variações.

 

Importante:
A partir de 13 de dezembro de 2019, começaremos a criar publicações de catálogo sobre aqueles que são elegíveis.

Essas publicações do catálogo serão criadas com o status pausado e marcadas com a tag catalog_boost. Os vendedores terão 7 (sete) dias para confirmar que vendem exatamente os produtos aos quais os associamos. Após essa data, ativaremos as publicações automaticamente e perderemos a tag com a qual elas foram reconhecidas.

 

Para conhecer o produto ao qual seu item de catálogo pertence, você pode consultar o recurso /products/{product_id}.

Importante:
Lembre-se de ouvir o feed do item e reconhecer quando novos itens são criados.

 

Se a sua ferramenta não permite que o vendedor confirme que vende exatamente os produtos que associamos, você deverá recomendar o seller acessar a lista de publicações em sua conta do Mercado Livre até que se adapte sua ferramenta.

 

Em seguida, você pode ver como o JSON de um item de catálogo se parece.

 

Exemplo de item de catálogo marcado:

curl -X GET https://api.mercadolibre.com/items/MLA123456789

Resposta:

{
   "id":"MLA123456789",
   "site_id":"MLA",
   "title":"Samsung Galaxy A10 32 Gb Negro 2 Gb Ram",
   "subtitle":null,
   "seller_id":12312345,
   "category_id":"MLA1055",
   "official_store_id":null,
   "price":14498.49,
   "base_price":14498.49,
   "original_price":null,
   "currency_id":"ARS",
   "initial_quantity":1,
   "available_quantity":1,
   "sold_quantity":0,
   "sale_terms":[

   ],
   "buying_mode":"buy_it_now",
   "listing_type_id":"gold_special",
   "start_time":"2020-02-25T13:30:06.000Z",
   "stop_time":"2040-02-20T04:00:00.000Z",
   "condition":"new",
   "permalink":"https://articulo.mercadolibre.com.ar/MLA-840863454-samsung-galaxy-a10-32-gb-negro-2-gb-ram-_JM",
   "thumbnail":"http://mla-s1-p.mlstatic.com/935364-MLA31838804614_082019-I.jpg",
   "secure_thumbnail":"https://mla-s1-p.mlstatic.com/935364-MLA31838804614_082019-I.jpg",
   "pictures":[

   ],
   "video_id":"63vjmsBa3nw",
   "descriptions":[

   ],
   "accepts_mercadopago":true,
   "non_mercado_pago_payment_methods":[

   ],
   "shipping":{

   },
   "international_delivery_mode":"none",
   "seller_address":{

   },
   "seller_contact":null,
   "location":{

   },
   "geolocation":{

   },
   "coverage_areas":[

   ],
   "attributes":[

   ],
   "warnings":[

   ],
   "listing_source":"",
   "variations":[

   ],
   "status":"active",
   "sub_status":[

   ],
   "tags":[
      "brand_verified",
      "extended_warranty_eligible",
      "catalog_boost",
      "good_quality_picture",
      "good_quality_thumbnail",
      "immediate_payment",
      "cart_eligible"
   ],
   "warranty":"Garantía del vendedor: 6 meses",
   "catalog_product_id":"MLA14648964",
   "domain_id":"MLA-CELLPHONES",
   "parent_item_id":null,
   "differential_pricing":null,
   "deal_ids":[

   ],
   "automatic_relist":false,
   "date_created":"2020-02-25T13:30:06.000Z",
   "last_updated":"2020-02-28T16:28:14.000Z",
   "health":0.9,
   "catalog_listing":false
}
Nota:
Você poderá realizar uma busca por seller para identificar os ítems que estejam marcados con a tag utilizando o seguinte recurso.

Exemplo:

curl -X GET https://api.mercadolibre.com/users/1234567/items/search?status=paused&tags=catalog_boost&access_token={ACCESS_TOKEN}

 

Para te orientar e realizar testes, você poderá utilizar um usuario de teste, criar um item que cumpra todas as condições necessárias para que esteja elegível ao catálogo, reconhecer qual é o produto específico ativo em catálogo para associá-lo e realizar o POST no recurso /items/catalog_listings
Observação: A publicação de teste NÃO irá competir em catálogo.
Etapas:

  1. Criar user de teste e o item de teste que não terá um catalog_product_id associado.
  2.  Validar o item criado com o recurso de /products/search qual é o catalog_product_id correto para o item.
  3. Uma vez identificado o catalog_product_id, você poderá verificar a elegibilidade com o recurso /items/{item_id}/catalog_listing_eligibility passando o parâmetro catalog_product_id e a variação dependendo das características do item. Desta forma, será verificado se o item é elegível para catálogo.
  4. Uma vez identificado que o item com o catalog_prodcut_id são elegíveis, o próximo passo é realizar o Optin para terminar de associar o item de teste com um item de catálogo.
  5. Realizamos um POST com o recurso /items/catalog_listings para criar a publicação de catálogo relacionada ao item de teste.

Anúncio diretamente no catálogo: Buscador de produtos

Importante:
Este recurso está disponível na Argentina, México e Brasil.

Para publicar um anúncio diretamente no catálogo, é necessário localizar o catalog_product_id que corresponde exatamente com o produto a ser vendido. Com este recurso, você terá uma sugestão de produtos com base em certos parâmetros de busca.

Importante:
O conteúdo do anúncio de catálogo é fornecido pelo Mercado Livre. Portanto, o vendedor é responsável por conferir que o produto a ser associado corresponda às características específicas mostradas na plataforma.
Se houver alguma diferença entre o que o usuário comprar e o produto associado, é possível que existam reclamações e/ou cancelamentos que vão impactar negativamente na sua reputação e, por isso, será suspenso para anunciar no catálogo, levando, eventualmente, ao cancelamento da conta.

Os parâmetros do buscador de produtos podem ser o código universal ou um conjunto de palavras-chave como, por exemplo, marca e modelo.
Parâmetros:

  • site_id: string que representa o país. Obrigatório.
  • status: pode ser que, embora o produto esteja identificado dentro do nosso catálogo, ainda não seja elegível para ser associado a um anúncio.

-status “active”: retorna os produtos que já podem ser escolhidos para associar a um anúncio.
-status “inactive”: retorna os produtos que ainda não podem ser escolhidos para associar a um anúncio.
Esclarecimento: se este parâmetro não for enviado, por padrão, ele trará todos os resultados, tanto ativos quanto inativos.

  • q: string com palavras-chave de busca. Exemplo: “Celular Samsung Galaxy S8” Obrigatório, caso não seja enviado um product_identifier.
  • product_identifier: string com o código universal do produto. Exemplo: EAN, UPC, ISBN etc. Obrigatório, caso não seja enviada uma cadeia de palavras-chave.
  • domain_id: string com o domínio no qual se quer anunciar (opcional).
  • offset: posição da qual são retornados os resultados da busca (opcional).
  • limit: número de resultados retornados pela busca (opcional).

 

Chamada com parâmetro “q”:

curl -X GET https://api.mercadolibre.com/products/search?status={status_id}&site_id={site_id}&q={q}

Exemplo com parâmetro “q”:

curl -X GET https://api.mercadolibre.com/products/search?status=active&site_id=MLB&q=Samsung%20Galaxy%20S8

Resposta com parâmetro “q”:

{
    "keywords": "Samsung Galaxy S8",
    "paging": {
        "total": 5,
        "limit": 10,
        "offset": 0
    },
    "results": [
        {
            "id": "MLB6408702",
            "status": "active",
            "domain_id": "MLB-CELLPHONES",
            "name": "Samsung Galaxy S8 64 GB Azul-coral",
            "attributes": [
                {
                    "id": "BRAND",
                    "name": "Marca",
                    "value_id": "206",
                    "value_name": "Samsung"
                },
            ],
            "pictures": [
                {
                    "id": "907751-MLA31348023274_072019",
                    "url": "https://mla-s2-p.mlstatic.com/907751-MLA31348023274_072019-F.jpg"
                },
                {
                    "id": "972557-MLA31347859895_072019",
                    "url": "https://mla-s1-p.mlstatic.com/972557-MLA31347859895_072019-F.jpg"
                },
                {
                    "id": "727533-MLA31348023275_072019",
                    "url": "https://mla-s1-p.mlstatic.com/727533-MLA31348023275_072019-F.jpg"
                },
                {
                    "id": "779614-MLA31348110125_072019",
                    "url": "https://mla-s1-p.mlstatic.com/779614-MLA31348110125_072019-F.jpg"
                }
            ]
        }
    ]
}

Chamada com parâmetros “q” e “domain_id”:

curl -X GET https://api.mercadolibre.com/products/search?status={status_id}&site_id={site_id}&q={q}&domain_id={domain_id}

Exemplo com parâmetros “q” e “domain_id”:

curl -X GET https://api.mercadolibre.com/products/search?status=active&site_id=MLB&q=Samsung%20Galaxy%20S8&domain_id=MLA-CELLPHONES

Resposta com parâmetros “q” e “domain_id”:

{
  "q": "Samsung Galaxy S8",
  "domain_id":"MLB-CELLPHONES",
  "paging": {
    "total": 10,
    "offset": 0,
    "limit": 10
  },
  "results": [
    {
      "id": "MLB6408699",
      "status": "active",
      "domain_id": "MLB-CELLPHONES",
      "name": "Samsung Galaxy S8 64 GB Gris orquídea",
      "description": "descripción",
      "attributes": [
        {
          "id": "BRAND",
          "name": "Marca",
          "value_id": "206",
          "value_name": "Samsung"
        }
      ],
      "pictures": [
        {
          "id": "924348-MLB31003000895_062019",
          "url": "https://mlb-s2-p.mlstatic.com/924348-MLB31003000895_062019-F.jpg"
        }
      ]
    }
  ]
}

Chamada com parâmetro “product_identifier”:

curl -X GET https://api.mercadolibre.com/products/search?status={status_id}&site_id={site_id}&product_identifier={product_identifier}

Exemplo com parâmetro “product_identifier”:

curl -X GET https://api.mercadolibre.com/products/search?status=active&site_id=MLB&product_identifier=0123456789

Resposta com parâmetro “product_identifier”:

{ 
  "product_identifier": "0123456789", 
  "paging": {
      "total": 10, 
      "offset": 0, 
      "limit": 10 
   }, 
   "results": [ 
        { 
          "id": "MLB6408699", 
          "status": "active", 
          "domain_id": "MLB-CELLPHONES", 
          "name": "Samsung Galaxy S8 64 GB Gris orquídea", 
          "description": "descripción", 
          "attributes": [
                { 
                   "id": "BRAND", 
                  "name": "Marca", 
                  "value_id": "206", 
                  "value_name": "Samsung" 
                } 
           ], 
         "pictures": [ 
              { 
                 "id": "924348-MLB31003000895_062019", 
                 "url": "https://mla-s2-p.mlstatic.com/924348-MLB31003000895_062019-F.jpg" 
              } 
           ] 
        } 
     ] 
  }

Considerações:

  • Dependendo dos parâmetros usados na busca, haverá como resultado um ou vários produtos como sugestão.
  • Se um product_identifier for usado como parâmetro, só será obtido um produto.
  • Se uma palavra-chave for usada como parâmetro, com ou sem domínio, poderá ser obtido um ou vários produtos relacionados aos valores informados.

 

Criar uma publicação de catálogo de maneira direta

Além de realizar publicações de catálogo com uma publicação original, você também pode criar itens de catálogo sem a necessidade de utilizar um item de marketplace para vincular. Tenha em conta que para criar o item de catálogo você deverá considerar os mesmos requisitos mencionados no É possível publicar qualquer ítem em catálogo.
Importante: Tenah em conta que no momento de realizar o POST é necessário enviar os seguintes valores para que seja criada a publicação de catálogo.

  • “catalog_product_id”: este valor deve ser confirmado com o recurso de search/product.
  • “catalog_listing”: true: é necessário enviar o valor como true para gerar o item de catálogo.

 

Chamada:

curl -X POST \https://api.mercadolibre.com/items?access_token={ACCESS_TOKEN}

Exemplo:

curl -X POST -H "Content-Type: application/json" -d
'{
    "site_id": "MLA",
    "title": "Item de test no ofertar",
    "category_id": "MLA1055",
    "price": 10000000,
    "currency_id": "ARS",
    "available_quantity": 1,
    "buying_mode": "buy_it_now",
    "listing_type_id": "gold_special",
    "pictures": [],
    "attributes": [
        {
            "id": "CARRIER",
            "name": "Compañía telefónica",
            "value_id": "298335",
            "value_name": "Liberado",
            "value_struct": null,
            "attribute_group_id": "OTHERS",
            "attribute_group_name": "Otros"
        },
        {
            "id": "ITEM_CONDITION",
            "name": "Condición del ítem",
            "value_id": "2230284",
            "value_name": "Nuevo",
            "value_struct": null,
            "attribute_group_id": "OTHERS",
            "attribute_group_name": "Otros"
        }
    ],
    "catalog_product_id": "MLA6005934",
    "catalog_listing": true
}'
https://api.mercadolibre.com/items?access_token={ACCESS_TOKEN}

Resposta:

{
    "id": "MLA811894603",
    "site_id": "MLA",
    "title": "Apple iPhone iPhone 3g 8 Gb Negro 128 Mb Ram",
    "subtitle": null,
    "seller_id": 464161506,
    "category_id": "MLA1055",
    "official_store_id": null,
    "price": 10000000,
    "base_price": 10000000,
    "original_price": null,
    "inventory_id": null,
    "currency_id": "ARS",
    "initial_quantity": 1,
    "available_quantity": 1,
    "sold_quantity": 0,
    "sale_terms": [],
    "buying_mode": "buy_it_now",
    "listing_type_id": "gold_special",
    "start_time": "2019-08-29T14:49:42.945Z",
    "historical_start_time": "2019-08-29T14:49:42.945Z",
    "stop_time": "2039-08-24T04:00:00.000Z",
    "end_time": "2039-08-24T04:00:00.000Z",
    "expiration_time": "2019-11-17T14:49:42.987Z",
    "condition": "new",
    "permalink": "http://articulo.mercadolibre.com.ar/MLA-811894603-apple-iphone-iphone-3g-8-gb-negro-128-mb-ram-_JM",
    "pictures": [
        {
            "id": "675782-MLA31138875214_062019",
            "url": "http://mla-s1-p.mlstatic.com/675782-MLA31138875214_062019-O.jpg",
            "secure_url": "https://mla-s1-p.mlstatic.com/675782-MLA31138875214_062019-O.jpg",
            "size": "249x500",
            "max_size": "598x1200",
            "quality": ""
        },
        {
            "id": "915001-MLA31138546867_062019",
            "url": "http://mla-s2-p.mlstatic.com/915001-MLA31138546867_062019-O.jpg",
            "secure_url": "https://mla-s2-p.mlstatic.com/915001-MLA31138546867_062019-O.jpg",
            "size": "250x500",
            "max_size": "600x1200",
            "quality": ""
        },
        {
            "id": "881441-MLA31138332972_062019",
            "url": "http://mla-s2-p.mlstatic.com/881441-MLA31138332972_062019-O.jpg",
            "secure_url": "https://mla-s2-p.mlstatic.com/881441-MLA31138332972_062019-O.jpg",
            "size": "243x500",
            "max_size": "585x1200",
            "quality": ""
        },
        {
            "id": "804666-MLA31139286536_062019",
            "url": "http://mla-s1-p.mlstatic.com/804666-MLA31139286536_062019-O.jpg",
            "secure_url": "https://mla-s1-p.mlstatic.com/804666-MLA31139286536_062019-O.jpg",
            "size": "405x500",
            "max_size": "836x1030",
            "quality": ""
        }
    ],
    "video_id": null,
    "descriptions": [
        {
            "id": "MLA811894603-2265773390"
        }
    ],
    "accepts_mercadopago": true,
    "non_mercado_pago_payment_methods": [],
    "shipping": {
        "mode": "not_specified",
        "local_pick_up": false,
        "free_shipping": false,
        "methods": [],
        "dimensions": null,
        "tags": [],
        "logistic_type": "not_specified",
        "store_pick_up": false
    },
    "international_delivery_mode": "none",
    "seller_address": {
        "id": 1061221617,
        "comment": "",
        "address_line": "Test Address 123",
        "zip_code": "1414",
        "city": {
            "id": "",
            "name": "Palermo"
        },
        "state": {
            "id": "AR-C",
            "name": "Capital Federal"
        },
        "country": {
            "id": "AR",
            "name": "Argentina"
        },
        "latitude": 38.11569,
        "longitude": 13.3614868,
        "search_location": {
            "neighborhood": {
                "id": "TUxBQlBBTDI1MTVa",
                "name": "Palermo"
            },
            "city": {
                "id": "TUxBQ0NBUGZlZG1sYQ",
                "name": "Capital Federal"
            },
            "state": {
                "id": "TUxBUENBUGw3M2E1",
                "name": "Capital Federal"
            }
        }
    },
    "seller_contact": null,
    "location": {},
    "geolocation": {
        "latitude": 38.11569,
        "longitude": 13.3614868
    },
    "coverage_areas": [],
    "attributes": [
        {
            "id": "CARRIER",
            "name": "Compañía telefónica",
            "value_id": "298335",
            "value_name": "Liberado",
            "value_struct": null,
            "attribute_group_id": "OTHERS",
            "attribute_group_name": "Otros"
        },
        {
            "id": "ITEM_CONDITION",
            "name": "Condición del ítem",
            "value_id": "2230284",
            "value_name": "Nuevo",
            "value_struct": null,
            "attribute_group_id": "OTHERS",
            "attribute_group_name": "Otros"
        },
        {
            "id": "BRAND",
            "name": "Marca",
            "value_id": "9344",
            "value_name": "Apple",
            "value_struct": null,
            "attribute_group_id": "OTHERS",
            "attribute_group_name": "Otros"
        },
        {
            "id": "LINE",
            "name": "Línea",
            "value_id": "58993",
            "value_name": "iPhone",
            "value_struct": null,
            "attribute_group_id": "OTHERS",
            "attribute_group_name": "Otros"
        },
        {
            "id": "MODEL",
            "name": "Modelo",
            "value_id": "14605",
            "value_name": "iPhone 3G",
            "value_struct": null,
            "attribute_group_id": "OTHERS",
            "attribute_group_name": "Otros"
        },
        {
            "id": "IS_DUAL_SIM",
            "name": "Es Dual SIM",
            "value_id": "242084",
            "value_name": "No",
            "value_struct": null,
            "attribute_group_id": "OTHERS",
            "attribute_group_name": "Otros"
        },
        {
            "id": "COLOR",
            "name": "Color",
            "value_id": "52049",
            "value_name": "Negro",
            "value_struct": null,
            "attribute_group_id": "OTHERS",
            "attribute_group_name": "Otros"
        },
        {
            "id": "INTERNAL_MEMORY",
            "name": "Memoria interna",
            "value_id": "59566",
            "value_name": "8 GB",
            "value_struct": {
                "number": 8,
                "unit": "GB"
            },
            "attribute_group_id": "OTHERS",
            "attribute_group_name": "Otros"
        },
        {
            "id": "RAM",
            "name": "Memoria RAM",
            "value_id": "366239",
            "value_name": "128 MB",
            "value_struct": {
                "number": 128,
                "unit": "MB"
            },
            "attribute_group_id": "OTHERS",
            "attribute_group_name": "Otros"
        },
        {
            "id": "MAIN_COLOR",
            "name": "Color principal",
            "value_id": "2450295",
            "value_name": "Negro",
            "value_struct": null,
            "attribute_group_id": "OTHERS",
            "attribute_group_name": "Otros"
        },
        {
            "id": "OPERATING_SYSTEM_NAME",
            "name": "Nombre del sistema operativo",
            "value_id": "7404961",
            "value_name": "iOS",
            "value_struct": null,
            "attribute_group_id": "OTHERS",
            "attribute_group_name": "Otros"
        },
        {
            "id": "WITH_IMEI",
            "name": "Con IMEI",
            "value_id": "242085",
            "value_name": "Sí",
            "value_struct": null,
            "attribute_group_id": "OTHERS",
            "attribute_group_name": "Otros"
        }
    ],
    "warnings": [],
    "listing_source": "",
    "variations": [],
    "thumbnail": "http://mla-s1-p.mlstatic.com/675782-MLA31138875214_062019-I.jpg",
    "secure_thumbnail": "https://mla-s1-p.mlstatic.com/675782-MLA31138875214_062019-I.jpg",
    "status": "active",
    "sub_status": [],
    "tags": [
        "immediate_payment",
        "test_item"
    ],
    "warranty": null,
    "catalog_product_id": "MLA6005934",
    "domain_id": "MLA-CELLPHONES",
    "seller_custom_field": null,
    "parent_item_id": null,
    "differential_pricing": null,
    "deal_ids": [],
    "automatic_relist": false,
    "date_created": "2019-08-29T14:49:43.099Z",
    "last_updated": "2019-08-29T14:49:43.099Z",
    "total_listing_fee": null,
    "health": null,
    "catalog_listing": true,
    "item_relations": []
}

 

Concorrendo para ganhar as vendas

Receba notificações de posts que mudam de status na competição

Você pode se inscrever no tópico item competition para começar a receber notificações sobre a mudança de status dos itens do catálogo. Ele permite identificar as modificações no status de competição para vencedor ou vice-versa.

Para visualizar as informações da concorrência e revisar as condições com as que o vendedor está competindo para ganhar a página de produto, deve utilizar o recurso /price_to_win e entender que ações deve tomar.

Saiba mais sobre como receber notificações.

 

Como conhecer o preço para ganhar

As publicações de catálogo concorrem para obter as vendas da página de produto e existe um algoritmo que determina quem será o vencedor nessas vendas, baseado nas características da publicação e do vendedor.
O algoritmo que avalia qual será a publicação vencedora considera principalmente:

  • preço da publicação
  • parcelas sem juros
  • envio full, envio grátis, envio no dia

Observações:

  • Algumas dessas características podem aplicar somente a alguns compradores (exemplo: envio no dia ou desconto de Mercado Pontos). Nesses casos, fazemos o melhor esforço por escolher um vencedor considerando o comprador particular, levando em consideração que características são aplicáveis a ele.
  • Pelo dito acima, apesar de que falemos de “vencedor” de forma unívoca, eventualmente o vendedor poderia estar vencendo em geral, mas não em particular, para certos usuários (ex.: se morarem muito longe e não obteriam nunca o envio no dia).

Para que os vendedores possam concorrer eficientemente, oferecemos um recurso que indica o estado em que está a publicação de catálogo, isso pode variar, pois uma publicação pode ser vencedora, competitiva ou listada. O último estado tem os motivos pelos quais a publicação não concorre.

Chamada:

curl -X GET https://api.mercadolibre.com/items/$ITEM_ID/price_to_win?access_token=$ACCESS_TOKEN

Exemplo de item concorrente:

curl -X GET https://api.mercadolibre.com/items/MLB1234/price_to_win?access_token=$ACCESS_TOKEN

Resposta:

"item_id": "MLA123456789",
    "current_price": 21499.0,
    "currency_id": "ARS",
    "price_to_win": 17600.0,
    "boosts": {
        "fulfillment": false,
        "free_installments": false,
        "free_shipping": true,
        "same_day_shipping": false
    },
    "status": "competing",
    "reason": [],
    "catalog_product_id": "MLA9652755"
}

Exemplo de item vencedor:

curl -X GET https://api.mercadolibre.com/items/MLB123456710/price_to_win?access_token=$ACCESS_TOKEN

Resposta:

{
    "item_id": "MLA123456710",
    "current_price": 20499.0,
    "currency_id": "ARS",
    "price_to_win": 20499.0,
    "boosts": {
        "fulfillment": false,
        "free_installments": true,
        "free_shipping": true,
        "same_day_shipping": false
    },
    "status": "winning",
    "reason": [],
    "catalog_product_id": "MLA9652755"
}

Exemplo de item que não concorre:

curl -X GET https://api.mercadolibre.com/items/MLB123456710/price_to_win?access_token=$ACCESS_TOKEN

Resposta:

{
    "item_id": "MLA123456710",
    "current_price": 68000,
    "currency_id": "ARS",
    "price_to_win": null,
    "boosts": {
        "same_day_shipping": false,
        "fulfillment": false,
        "free_installments": false,
        "free_shipping": true,
        "cross_docking": false,
        "drop_off": true,
        "shipping_quarantine": false
    },
    "status": "listed",
    "reason": [
        "item_paused"
    ]

 

Como ler a resposta:

  • O campo status indica se estamos ganhando para o público geral (poderíamos estar ganhando para segmentos minoritários com os que não aproveitam o envio no dia). Quando estamos ganhando, o valor é winning, quando não estamos ganhando, é competing.
  • O campo boosts indica quais características da nossa publicação estão aportando para as chances de ganhar. As possibilidades são:
    • same_day_shipping: Envios no dia pelo Mercado Envíos.
    • fulfillment: Mercado Envios Full.
    • free_installments: Parcelamento sem juros.
    • free_shipping: Envio sem custo pelo Mercado Envios.
    • shipping_quarantine: Envios com normalidade.
    • shipping_collect: Mercado Envios coleta.
  • O campo price_to_win indica qual é o preço (na moeda atual da publicação) para ser o ganhador. Isto é que, fazendo um PUT ao recurso /itens com o preço sugerido, você garante ser o ganhador.

 

  • O campo reason mostrará informações quando o item não estiver competindo, podendo identificar o motivo pelo qual ele não está fazendo isso.

 

Valores possíveis para reason

Reason Descrição
non_trusted_seller O vendedor não está na lista de permissões de fraude. Não pode competir. Ele aparece nas listagens em segundo plano.
reputation_below_threshold O vendedor não atinge a reputação mínima para ganhar. Não pode competir. Aparece apenas nas listagens.
winner_has_better_reputation O vendedor tem uma reputação que pode competir, mas há um vencedor com uma reputação melhor. No momento, ele aparece apenas nas listagens (caixa amarela com vencedor verde).
manufacturing_time O item possui manufacturing time, aparece apenas nas listagens e não pode vencer porque o vencedor possui estoque imediato.
temporarily_winning_manufacturing_time O item possui manufacturing time, está ganhando temporariamente porque não há concorrentes no mesmo nível de reputação sem MF.
temporarily_competing_manufacturing_time O item tiene manufacturing time, esta compitiendo temporalmente porque no hay competidores en el mismo nivel de reputación sin MF, el winner también tiene MF.
temporarily_winning_best_reputation_available O vendedor não é verde, mas tem uma reputação que pode ganhar e é a melhor oferta disponível. Ele está ganhando temporariamente. Se uma oferta melhor aparecer, pare de ganhar.
temporarily_competing_best_reputation_available O vendedor não é verde, mas é a melhor reputação disponível, está competindo temporariamente. O vencedor também é da mesma reputação. Se um best-seller aparecer, ele será listado apenas novamente.
item_paused O item está em pausa, não pode ser listado.
item_not_opted_in O item não fiz opt in, não pode ser listado ou é um item de teste.

Neste chamado, você deverá utilizar um item_id de uma publicação de catálogo, no caso de não poder fazê-lo, você obterá um código de erro 4XX.
Além disso, existem variáveis como a reputação, que são utilizadas para determinar o ganhador. Contudo, para um bom vendedor, as variáveis acima serão as utilizadas para determinar o ganhador.
Importante: em breve disponibilizaremos um recurso para receber notificações quando o vendedor se transforme em ganhador de um produto.

Conheça as condições e o preço do item vencedor

A tabela de competição permitirá que os vendedores comparem e melhorem as condições do item. Com a nova versão do recurso price_to_win, você pode adicionar via API uma tabela de competição para comparar as condições de um item que está competindo e as do vencedor. Com essa funcionalidade em seu desenvolvimento, os vendedores terão conhecimento de quais condições melhorar para ganhar a página do produto.

Chamada:

curl -X GET https://api.mercadolibre.com/items/$ITEM_ID/price_to_win?siteId=$SITE_ID&version=v2

Exemplo:

curl -X GET https://api.mercadolibre.com/items/MLA123456789/price_to_win?siteId=MLA&version=v2

Resposta:

{
    "item_id": "MLA848886211",
    "current_price": 85990,
    "currency_id": "ARS",
    "price_to_win": 65200,
    "boosts": [
        {
            "id": "same_day_shipping",
            "status": "opportunity",
            "description": "Envíos en el dia por Mercado Envíos"
        },
        {
            "id": "fulfillment",
            "status": "opportunity",
            "description": "Mercado Envíos Full"
        },
        {
            "id": "free_installments",
            "status": "opportunity",
            "description": "Cuotas sin interés"
        },
        {
            "id": "free_shipping",
            "status": "not_boosted",
            "description": "Envíos gratis por Mercado Envíos"
        },
        {
            "id": "shipping_quarantine",
            "status": "boosted",
            "description": "Envío con normalidad"
        },
        {
            "id": "shipping_collect",
            "status": "boosted",
            "description": "Mercado Envíos Colecta"
        }
    ],
    "status": "competing",
    "reason": [],
    "catalog_product_id": "MLA14186099",
    "winner": {
        "item_id": "MLA849174940",
        "price": 76999,
        "currency_id": "ARS",
        "boosts": [
            {
                "id": "same_day_shipping",
                "status": "not_apply",
                "description": "Envíos en el dia por Mercado Envíos"
            },
            {
                "id": "fulfillment",
                "status": "boosted",
                "description": "Mercado Envíos Full"
            },
            {
                "id": "free_installments",
                "status": "boosted",
                "description": "Cuotas sin interés"
            },
            {
                "id": "free_shipping",
                "status": "not_boosted",
                "description": "Envíos gratis por Mercado Envíos"
            },
            {
                "id": "shipping_quarantine",
                "status": "boosted",
                "description": "Envío con normalidad"
            },
            {
                "id": "shipping_collect",
                "status": "opportunity",
                "description": "Mercado Envíos Colecta"
            }
        ]
    }
}

Na nova versão do recurso, além dos campos já conhecidos na versão anterior, adicionamos as informações do item que estamos consultando e as do item que está ganhando (caso o item consultado esteja competindo).

Portanto, primeiro visualizamos o preço e as condições de venda listadas nos boosts, com um status e uma explicação, permitindo comparar rapidamente com a segunda lista que se refere à publicação que está ganhando a página do produto.

Os boosts são aqueles já mencionados nos campos de resposta da versão anterior. Agora, você pode reconhecer o status deles no boost e desenhar uma tabela comparativa de acordo.

Estado dos boost Detalhe
boosted tem a condição de venda e atualmente aplica o aumento.
not_boosted possui a condição de venda, mas não é um boost que aumenta as chances de ganhar.
opportunity não possui condição de venda. Caso aplique, melhoraria as chances de ganhar.
not_apply a condição de vendas não se aplica como um boost ao produto em que o item concorre.
Nota:
Lembre-se de que essas informações permitem comparar rapidamente com a segunda listagem sobre a publicação do item que está ganhando a página do produto.

Conheça a publicação que está ganhando um produto

Usando o recurso de /products/{product_id} , além de conhecer as características e o status do produto, você pode reconhecer a publicação que está ganhando a página do produto com o campo buy_box_winner.

 

Como conhecer a relação de publicações para um produto

Se você precisar conhecer quais são os itens (de todos os vendedores) que concorrem pelas vendas de um produto em particular, tem um recurso que entrega a você essas informações.

Chamada:

curl -X GET https://api.mercadolibre.com/products/{product_id}/items

Exemplo:

curl -X GET https://api.mercadolibre.com/products/MLB6309815/items

Resposta simplificada:

{
  "paging": {
    "total": 7,
    "offset": 0,
    "limit": 100
  },
  "results": [
    {
      "item_id": "MLA824759321",
      "category_id": "MLA1055",
      "seller_id": 90205574,
      "price": 13999,
      "currency_id": "ARS",
      "sold_quantity": 0,
      "available_quantity": 1,
      "installments": {
        "quantity": 1,
        "amount": 13999,
        "rate": 0,
        "currency_id": "ARS"
      },
      "shipping": {
        "mode": "me2",
        "tags": [
          "mandatory_free_shipping"
        ],
        "free_shipping": true,
        "logistic_type": "fulfillment",
        "store_pick_up": false
      },
      "warranty": "Garantía de fábrica: 1 años",
      "condition": "new",
      "sale_terms": [
        {
          "id": "INVOICE",
          "name": "Facturación",
          "value_id": "6891885",
          "value_name": "Factura A",
          "value_struct": null
        },
        {
          "id": "WARRANTY_TYPE",
          "name": "Tipo de garantía",
          "value_id": "2230279",
          "value_name": "Garantía de fábrica",
          "value_struct": null
        },
        {
          "id": "WARRANTY_TIME",
          "name": "Tiempo de garantía",
          "value_id": null,
          "value_name": "1 años",
          "value_struct": {
            "number": 1,
            "unit": "años"
          }
        }
      ],
      "official_store_id": null,
      "original_price": null,
      "listing_type_id": "gold_special",
      "accepts_mercadopago": true,
      "seller_address": {
        "city": {
          "id": "TUxBQ0xBWmI3M2Q3",
          "name": "Santa Fe"
        },
        "state": {
          "id": "TUxBUFNBTmU5Nzk2",
          "name": "Santa Fe"
        },
        "neighborhood": {
          "id": "TUxBQk9UUjQyMjJa",
          "name": "Otros Barrios"
        }
      },
      "international_delivery_mode": "none",
      "tags": [
        "brand_verified",
        "extended_warranty_eligible",
        "good_quality_picture",
        "good_quality_thumbnail",
        "immediate_payment",
        "cart_eligible"
      ],
      "tier": ""
    },
    {},
    {},
    {},
    {},
    {},
    {}
  ]
}

Tenha em conta que em “results” terá os itens que estão competindo para ganhar esse produto.

 

Filtro

O filtro funcionará da mesma forma que no recurso de Search (/sites/{site}/search) onde utilizar os valores de available_filters como parâmetro na URI é possível.

Atualmente, você tem as seguintes opções de filtragem:

Parâmetros Valor Descrição
official_store all Para mostrar apenas produtos com vencedor de Lojas Oficiais.
official_store_id id Para mostrar os produtos vencedores de uma loja oficial.
discount 10-100 Para mostrar os produtos vencedores com desconto maior ou igual a 10%.
price 100-200 Para produtos vencedores com preço entre 100 e 200.
*100 para produtos com vencedor com preço maior ou igual a 100.
*200 para produtos com vencedor com preço menor ou igual a 200.
installments no_interest Para produtos com vencedor com parcelamentos sem juros.
shipping fulfillment Para produtos com vencedor com FBM.
shipping mercadoenvios Para produtos com vencedor sem FBM.
shipping_cost free Para produtos con vencedor com frete grátis.
shipping_time sameday/ nextday Deve ser usado junto com a query param b.buyer_zones, que indica em quais áreas o comprador está localizado.
seller_id id Obter o vencedor user_id

Ejemplo:

curl -X GET https://api.mercadolibre.com/products/MLB6309815/items?shipping_cost=free

Exemplo:

curl -X GET https://api.mercadolibre.com/products/MLB6309815/items?shipping=free

Criar um anúncio de catálogo associado a um anúncio existente significa criar um novo item do recurso /items com uma ID própria e única. Ao ser criado o novo item de catálogo, você receberá notificações, tanto de criação quanto de alteração, como de costume. Exemplo resumido de consulta no anúncio tradicional.

 

Chamada:

curl -X GET https://api.mercadolibre.com/items/{item_id}?access_token={ACCESS_TOKEN}

Exemplo:

curl -X GET https://api.mercadolibre.com/items/MLB1234?access_token={ACCESS_TOKEN}

Resposta:

{ 
  "variations": [ 
     { 
      "id": 36296213011, 
      "price": 50, 
      "attribute_combinations": [
         { 
           "id": "COLOR", 
           "name": "Color", 
           "value_id": "52014", 
           "value_name": "Verde" 
         }, 
         { 
           "id": "SIZE", 
           "name": "Talle", 
           "value_id": null, 
           "value_name": "8 litros" 
        } 
     ], 
     "available_quantity": 2, 
     "sold_quantity": 0, 
     "sale_terms": [], 
     "picture_ids": [ 
        "937728-MLB26910896929_1111111", 
        "911601-MLB26910896930_1111111", 
        "762115-MLB26910896931_1111111", 
        "827037-MLB26910896928_1111111" 
     ], 
    "seller_custom_field": null, 
    "catalog_product_id": null,
    "attributes": [ 
        { 
          "id": "T_SHIRT_SIZE", 
         "name": "Talle de la remera", 
         "value_id": "5727532", 
         "value_name": "6XL" 
       } 
     ], 
    "item_relations": [ 
       { 
         "id": "MLA987654321", 
         "variation_id": null, 
         "stock_relation": 1 
       }
     ]
    } 
  ], 
    "catalog_listing": false, 
    "item_relations": [] 
}

Exemplo resumido de item de catálogo:
Chamada:

curl -X GET https://api.mercadolibre.com/items/{item_id}/?access_token={ACCESS_TOKEN}

Exemplo:

curl -X GET https://api.mercadolibre.com/items/MLB1234?access_token={ACCESS_TOKEN}

Resposta:

{
   "variations": [], 
   "catalog_listing": true, 
   "item_relations": [
        { 
          "id": "MLA1234", 
          "variation_id": 36296213006, 
          "stock_relation": 1 
        }
    ] 
 }

Como reconhecer o anúncio de catálogo e o original

Para entender qual é o anúncio de catálogo e qual é o tradicional, você conta com o campo catalog_listing. no recurso /items. Se o valor for “true”, é um anúncio de catálogo. Se o valor for “false”, é o anúncio tradicional associado. Para ver as informações completas do item, você deve usar o access token.

Como conhecer a relação entre anúncios associados

O campo item_relations no recurso /items (com access token), informará quais anúncios estão associados ao atual. O único dado que será compartilhado nos dois anúncios será o estoque. Por isso, quando o vendedor receber uma venda ou alterar o estoque em um anúncio, ambos serão automaticamente ajustados.
No futuro, pode haver diversos anúncios associados e a relação de diminuição de estoque poderá ser diferente de 1. Leve isso em consideração ao elaborar seu sistema.

As perguntas nos anúncios de catálogo são gerenciadas da mesma forma que nos anúncios tradicionais, porém, elas não estão sincronizadas. Isso quer dizer que as perguntas e respostas que você receber pelos anúncios de catálogo não serão visíveis nos anúncios tradicionais e vice-versa.
No site, quando uma pergunta é feita na página de produto, a consulta fica unicamente associada ao item vencedor desse momento e não é compartilhada com outro item que, em outro momento, possa ser vencedor na página de produto.

 

Como gerenciar as orders, visitas, etc.

As publicações de catálogo são itens como qualquer outro, logo a administração das orders é igual a de uma publicação tradicional, com exceção de que estas orders contarão com a tag catalog para diferenciar as orders tradicionais. Na resposta do recurso /orders, o item_id fará referencia ao produto que tenha sido comprado.
As publicações relacionadas não compartilham nenhuma outra informação a não ser o stock. Por exemplo, as visitas e vendas que estão completamente individuais.
Exemplo resumido de uma order de catálogo:

 

Chamada:

curl -X GET https://api.mercadolibre.com/orders/{order_id}?access_token={ACCESS_TOKEN} 

Exemplo:

curl -X GET https://api.mercadolibre.com/orders/1234567890?access_token={ACCESS_TOKEN} 

Resposta:

{
  "id": 1234567890,
  "date_created": "2019-08-27T23:39:10.000-04:00",
  "date_closed": "2019-08-28T10:46:14.000-04:00",
  "last_updated": "2019-08-28T10:46:14.000-04:00",
  "manufacturing_ending_date": null,
  "feedback": {},
  "mediations": [
  ],
  "comments": null,
  "pack_id": null,
  "pickup_id": null,
  "order_request": {},
  "fulfilled": null,
  "total_amount": 16000,
  "total_amount_with_shipping": 16000,
  "paid_amount": 16000,
  "coupon": {},
  "expiration_date": "2019-09-25T10:46:14.000-04:00",
  "order_items": [
    {
      "item": {
        "id": "MLA123456789",
        "title": "Motorola G6 Plus 64 Gb",
        "category_id": "MLA1055",
        "variation_id": null,
        "seller_custom_field": "MO-CEL-N0011",
        "variation_attributes": [
        ],
        "warranty": "Garantía de fábrica: 12 meses",
        "condition": "new",
        "seller_sku": "MO-CEL-N0011"
      },
      "quantity": 1,
      "unit_price": 16000,
      "full_unit_price": 16000,
      "currency_id": "ARS",
      "manufacturing_days": null
    }
  ],
  "currency_id": "ARS",
  "payments": [],
  "shipping": {},
  "status": "paid",
  "status_detail": null,
  "tags": [
    "catalog",
    "not_delivered",
    "paid"
  ],
  "buyer": {},
  "seller": {},
  "taxes": {
    "amount": null,
    "currency_id": null
  }
}

As vendas das publicações de catálogo são gestionadas da mesma forma que as de publicaciones tradicionais. Isto quer dizer que por cada venda que seja gerada desde un item de catálogo, será criada uma order com a mesma informação que contém uma venda de uma publicação tradicional, com a diferença que iremos identificá-las com a tag de “catalog”. A order terá asociada o item de catálogo. E enviaremos notificações tanto quando for criada como quando houver alguma atualização.

Ciclo de vida de anúncios associados

Se você remover ou pausar uma variação de um item de marketplace relacionada a um item de catálogo, a relação entre os anúncios se perderá, mas o item de catálogo não será desativado. Se você excluir o item de catálogo, o anúncio tradicional continuará ativo.
Os anúncios de catálogo podem ser criados e excluídos sempre que necessário. Os vendedores cujo comportamento de vendas for estável não terão sua capacidade de obter vendas da página de produto impactada pelo histórico de vendas do anúncio.

Condições de venda como preço, forma de envio e a condição poderão ser alteradas. Além disso, elas podem ser diferentes das condições do anúncio original.
Fotos, títulos, descrições e fichas técnicas não poderão ser alterados, porque são informações padronizadas pelo Mercado Livre. A condição do produto também não pode ser modificada.

 

Fonte: https://developers.mercadolivre.com.br/pt_br/o-catalogo-chegou-saiba-como-adaptar-sua-integracao

API do Twilio

API do Twilio : O Twilio é uma estrutura de comunicações em nuvem que permite aos desenvolvedores de software fazer e receber chamadas telefônicas programaticamente e enviar e receber mensagens de texto usando suas APIs de serviço da Web usando HTTP. Usando o Twilio, você pode criar aplicativos de telefonia e ter um sistema de telefonia on-line completo na nuvem. Oferece recursos como números sob demanda em mais de 40 países, aceita ligações telefônicas para números de twilio, grava mensagens de áudio, reúne respostas de usuários, processa lógica de back-end capturando número de telefone e respostas de usuários, conferência, fala para texto e uma API muito poderosa.

 

Fontehttps://www.twilio.com/

Princípios Básicos da API SOAP do PayPal

A API do PayPal SOAP é baseada em padrões abertos conhecidos coletivamente como serviços da Web, que incluem o SOAP (Simple Object Access Protocol), o WSDL (Web Services Definition Language) e o XSD (XML Schema Definition language). Uma ampla variedade de ferramentas de desenvolvimento em diversas plataformas oferece suporte a serviços da Web.

Como muitos serviços da Web, o PayPal SOAP é uma combinação de esquemas do lado do cliente e do lado do servidor, servidores de hardware e software e serviços principais.

Diagrama de alto nível do PayPal SOAP

Em um modelo de processamento orientado a objetos, a interface para solicitações / respostas SOAP é um objeto na linguagem de programação nativa do seu aplicativo. Seu cliente SOAP de terceiros gera interfaces de objeto de negócios e stubs de rede dos arquivos WSDL e XSD fornecidos pelo PayPal que especificam a estrutura de mensagens do PayPal SOAP, seu conteúdo e as ligações de serviço da API do PayPal. Um aplicativo de negócios trabalha com dados na forma de propriedades do objeto para enviar e receber dados chamando métodos de objeto. O cliente SOAP manipula os detalhes da criação da solicitação SOAP, enviando-a ao serviço do PayPal e convertendo a resposta de volta para um objeto.

Definições de esquema do PayPal WSDL / XSD

O esquema de Serviços da Web do PayPal e seus componentes básicos e base do eBay Business Language (eBL) são necessários para o desenvolvimento de aplicativos com a API de serviços da Web do PayPal. A seguir estão os locais dos arquivos WSDL e XSD.

Localização dos arquivos PayPal WSDL e XSD
Desenvolvimento e teste com a sandbox do PayPal
Esquema do PayPal https://www.sandbox.paypal.com/wsdl/PayPalSvc.wsdl
Componentes básicos e componentes do eBL https://www.sandbox.paypal.com/wsdl/eBLBaseComponents.xsd 
https://www.sandbox.paypal.com/wsdl/CoreComponentTypes.xsd
Produção com a API do PayPal ao vivo
Esquema do PayPal https://www.paypal.com/wsdl/PayPalSvc.wsdl
Componentes básicos e componentes do eBL https://www.paypal.com/wsdl/eBLBaseComponents.xsd 
https://www.paypal.com/wsdl/CoreComponentTypes.xsd

Definições da API do SOAP do PayPal

A API do PayPal para SOAP inclui definições de API individuais para funções comerciais específicas. Como base, a API depende dos componentes básicos e básicos da eBay Business Language (eBL). As principais estruturas do eBL AbstractRequestTypeAbstractResponseTypesão a base da solicitação e resposta do SOAP de cada API do PayPal. AbstractResponseTypetambém é a estrutura para mensagens de erro comuns em todas as APIs do PayPal.

O PayPal tomou algumas decisões de design de esquema que podem afetar como os negócios projetam seus próprios aplicativos.

  • Enumerações – Enumerações são definidas diretamente no esquema da API do PayPal.
  • Informações de solução de problemas – A API do PayPal retorna informações sobre elementos que acionam erros.
  • Compatibilidade retroativa – A API do PayPal é versionada para que os aplicativos de negócios sejam compatíveis com versões anteriores quando novos elementos são introduzidos no esquema do lado do servidor.

Nota: O eBL define muitas estruturas específicas para leilões de processamento. O esquema SOAP do PayPal inclui essas definições para manter a compatibilidade com o SOAP do eBay. O material se concentra apenas nas definições de SOAP pertinentes ao uso da API do PayPal SOAP.

Segurança

O serviço da API SOAP do PayPal é protegido para garantir que apenas membros autorizados do PayPal o usem. Existem quatro níveis de segurança:

  1. Uma API Usernamee uma API obrigatórias Password.
  2. Um terceiro mecanismo de autenticação obrigatório, que é um dos seguintes:
    • Assinatura de solicitação do lado do cliente usando um certificado de API emitido pelo PayPal
    • Solicitar autenticação usando uma assinatura de API incluída na solicitação
  3. Se você estiver chamando a API em nome de um comerciante de terceiros, deverá especificar o endereço de e-mail registrado no PayPal do comerciante de terceiros ou o ID da conta do comerciante (às vezes chamado de ID do pagador) no Subjectcampo.

    Nota: Terceiros podem obter seu ID de comerciante entrando no paypal.com , clicando no ícone do perfil ( Menu Perfil) no canto superior direito da página e selecionando Perfil e configurações no menu Perfil de negócios . (Se o ícone do perfil na parte superior da página não estiver visível, clique em Perfil , que aparece no menu superior quando a guia Minha conta estiver selecionada.) Clique em Informações da minha empresa à esquerda e o ID da conta do comerciante é exibido no lista de itens de perfil à direita.

    Normalmente, um comerciante concede permissões de terceiros a um carrinho de compras, portanto, o carrinho de compras pode chamar a API em nome do comerciante. O comerciante deve ter concedido anteriormente permissão para executar a operação da API.

  4. Transporte de dados TLS (Transport Layer Security). Consulte as diretrizes de segurança das informações do desenvolvedor do PayPal para obter mais informações sobre o TLS.

Uma falha na segurança autenticada em qualquer um desses níveis nega acesso ao serviço da API do PayPal SOAP.

RequesterCredentials SOAP: nome de usuário, senha, assinatura e assunto

Para a segurança de seus negócios, o PayPal deve verificar se os comerciantes ou desenvolvedores de terceiros têm permissão para iniciar uma transação antes de fazer uma. O PayPal autentica cada solicitação. Se a solicitação não puder ser autenticada, uma falha de segurança SOAP será retornada.

No cabeçalho da solicitação SOAP, seu cliente SOAP deve definir os elementos UsernamePasswordpara passar uma combinação de nome de usuário / senha da API. Além disso, você pode definir o Signaturepara especificar sua string de assinatura de API. Se você estiver chamando a API em nome de um comerciante de terceiros, deverá definir o Subjectelemento para especificar o endereço de e-mail de terceiros ou o ID da conta do comerciante (às vezes chamado de ID do pagador).

Nota: Terceiros podem obter seu ID de comerciante entrando no paypal.com , clicando no ícone do perfil ( Menu Perfil) no canto superior direito da página e selecionando Perfil e configurações no menu Perfil de negócios . (Se o ícone do perfil na parte superior da página não estiver visível, clique em Perfil , que aparece no menu superior quando a guia Minha conta estiver selecionada.) Clique em Informações da minha empresa à esquerda e o ID da conta do comerciante é exibido no lista de itens de perfil à direita.

Normalmente, um comerciante concede permissões de terceiros a um carrinho de compras, portanto, o carrinho de compras pode chamar a API em nome do comerciante. O comerciante deve ter concedido anteriormente permissão para executar a operação da API.

O exemplo a seguir mostra parte dos RequesterCredentialselementos.

A maioria desses elementos é necessária para todas as solicitações SOAP.

<SOAP-ENV:Header>
  <RequesterCredentials xmlns="urn:ebay:api:PayPalAPI" xsi:type="ebl:CustomSecurityHeaderType">
  <Credentials xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:UserIdPasswordType">
    <Username>API-Username</Username>
    <Password>API-Password</Password>
    <Signature>API-Signature</Signature>
    <Subject>Authorizing-Merchant-Email -or- Authorizing-Merchant-Account-ID</Subject>
  </Credentials>
  </RequesterCredentials>
</SOAP-ENV:Header>
Elementos de autenticação RequesterCredentials no cabeçalho SOAP
Elemento Valor Descrição
Username API-Username Seu nome de usuário da API, que é gerado automaticamente pelo PayPal quando vocêsolicita credenciais de API de certificado ou assinatura para usar a API do PayPal SOAP. Você pode ver esse valor em https://www.paypal.com/ em seu perfil em Acesso à API> Credenciais da API.
Password API-Password Sua senha da API, que você especifica quandosolicita credenciais de API de certificado ou assinatura para usar a API do PayPal SOAP.
Signature API-Signature Sua assinatura de API , se você usar uma em vez de um certificado de API.
Subject Authorizing-Merchant-Email

ou

Authorizing-Merchant-Account-ID

O endereço de e-mail ou ID da conta do comerciante (às vezes chamado de ID do pagador) de um terceiro para quem você está enviando solicitações para a API do PayPal para SOAP. Seu nome de usuário da API deve terrecebido permissão desse terceiro para fazer uma solicitação da API do PayPal em seu nome.

Pontos de extremidade do serviço SOAP

O terminal em serviço que processa suas solicitações SOAP depende do tipo de credenciais da API.

Pontos de extremidade do serviço SOAP
Tipo de credenciais da API Ponto de extremidade de produção ao vivo Ponto de extremidade de teste (sandbox)
Certificado de API https://api.paypal.com/2.0/ https://api.sandbox.paypal.com/2.0/
Assinatura API https://api-3t.paypal.com/2.0/ https://api-3t.sandbox.paypal.com/2.0/

Envelope de pedido SOAP

O diagrama a seguir ilustra o conteúdo de um envelope de solicitação do PayPal SOAP.

Todas as APIs do PayPal são baseadas em duas estruturas principais: AbstractRequestTypeAbstractResponseType.

Diagrama do envelope de solicitação SOAP

Solicitar estrutura

A descrição anotada a seguir da estrutura de solicitação SOAP mostra os elementos requeridos pela API do PayPal SOAP.

Estrutura geral da solicitação SOAP da API do PayPal

1.  <?xml version="1.0" encoding="UTF-8"?>
2.  <SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
3.    <SOAP-ENV:Header>
4.      <RequesterCredentials xmlns="urn:ebay:api:PayPalAPI">
5.        <Credentials xmlns="urn:ebay:apis:eBLBaseComponents">
6.          <Username>API-Username</Username>
7.          <Password>API-Password</Password>
8.          <Signature/>
9.          <Subject/>
10.       </Credentials>
11.     </RequesterCredentials>
12.   </SOAP-ENV:Header>
13.   <SOAP-ENV:Body>
14.     <Specific-API-Name-Req xmlns="urn:ebay:api:PayPalAPI">
15.       <Specific-API-Name-Request>
16.         <Version xmlns="urn:ebay:apis:eBLBaseComponents">API-Version</Version>
17.         <Required-Or-Optional-Fields xs:type="Type">Data</Required-Or-Optional-Fields>
18.       </Specific-API-Name-Request>
19.     </Specific-API-Name-Req>
20.   </SOAP-ENV:Body>
21. </SOAP-ENV:Envelope>
Anotação de solicitação SOAP genérica
Linhas Comente
6, 7 Os campos UsernamePasswordsão parte do RequesterCredentialsmecanismo de autenticação de segurança da API SOAP do PayPal que você deve construir para cada cabeçalho de solicitação SOAP. Veja RequesterCredentials para mais informações.
8 Signatureelemento deve incluir sua assinatura de API se esse for o tipo de credencial de API que você está usando.
9 Subjectelemento deve ser incluído ao usar permissões de terceiros (realizando transações em nome de outro comerciante que tenha autorizado você a fazer isso). Passe o ID da conta do comerciante de terceiros autorizador (às vezes chamado de ID do pagador) ou endereço de e-mail.
13 a 20 A solicitação SOAP para cada API do PayPal segue esse padrão de nomenclatura de elemento. O nome específico da API é anexado com Reqe, nesse elemento, o nomeSpecific-API-Name-Reqé aninhado. Cada Specific-API-Name-Requestum tem um correspondente Specific-API-Name-RequestType.
16 O número da versão da API do PayPal SOAP é necessário em cada solicitação SOAP. Este número de versão é o valor de ns:versionem https://www.paypal.com/wsdl/PayPalSvc.wsdl .
17 Para detalhes sobre elementos obrigatórios e opcionais e valores para solicitações específicas, consulte as referências da API .

Estilo da Mensagem SOAP: doc-literal

PayPal usa doc-literalmensagens SOAP, não rpc-encoding. Com doc-literal, uma única chamada de interface de serviço passa um documento XML na solicitação para o servidor da API do PayPal, que responde com uma instância do documento XML.

Estrutura de Resposta

A seguir, uma descrição anotada da estrutura de uma resposta SOAP bem-sucedida da API do PayPal, em que Ack=Success:

1.  <?xml version="1.0"?>
2.  <SOAP-ENV:Envelope
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:cc="urn:ebay:apis:CoreComponentTypes"
    xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility"
    xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
    xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
    xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext"
    xmlns:ebl="urn:ebay:apis:eBLBaseComponents"
    xmlns:ns="urn:ebay:api:PayPalAPI">
3.    <SOAP-ENV:Header>
4.      <Security xmlns="http://schemas.xmlsoap.org/ws/2002/12/secext"xsi:type="wsse:SecurityType"/>
5.      <RequesterCredentials xmlns="urn:ebay:api:PayPalAPI" xsi:type="ebl:CustomSecurityHeaderType">
6.        <Credentials xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:UserIdPasswordType"/>
7.      </RequesterCredentials>
8.    </SOAP-ENV:Header>
9.    <SOAP-ENV:Body id="_0">
10.     <Specific-API-Operation-Name>-Response xmlns="urn:ebay:api:PayPalAPI">
11.       <Timestamp xmlns="urn:ebay:api:PayPalAPI">DateTime-In-UTC/GMT-Format</TIMESTAMP>
12.       <Ack xmlns="urn:ebay:apis:eBLBaseComponents">Success</Ack>
13.       <Version xmlns="urn:ebay:apis:eBLBaseComponents">API-Version</Version>
14.       <CorrelationId xmlns="urn:ebay:apis:eBLBaseComponents">Correlation-ID</CorrelationID>
15.       <Build xmlns="urn:ebay:apis:eBLBaseComponents">API-Build-Number</Build>
16.       <Elements-For-Specific-API-Response></Elements-For-Specific-API-Response>
17.     </Specific-API-Operation-Name-Response>
18.   </SOAP-ENV:Body>
19. </SOAP-ENV:Envelope>
Anotação de Resposta SOAP Genérica
Linhas Comente
10 a 17 Os elementos de início e fim. Um exemplo de uma operação da API é . Consulte a referência da API NVP / SOAP para obter uma lista completa.Specific-API-Operation-Name-ResponseSetExpressCheckout
11 Cada resposta da API contém uma Timestampdata e hora no formato UTC / GMT.
12 Ackelemento acknowledgement ( ) contém a string Successindicando que a solicitação correspondente foi processada com sucesso. Quando há um erro, ele Acké definido como um valor diferente de Successe o corpo da resposta contém um Errorselemento com informações para ajudá-lo a solucionar a causa do erro. Veja Respostas de erros para mais informações.
14 CorrelationIDelemento contém informações sobre o aplicativo do PayPal que processou a solicitação. Use o valor desse elemento se você precisar solucionar um problema com uma das suas solicitações.
16 As diferentes APIs do PayPal retornam elementos diferentes, dependendo de suas definições de resposta. Para informações detalhadas, consulte as descrições na referência da API .

Nota: Como um campo é definido na estrutura formal de uma resposta da API, isso não significa que o campo seja necessariamente retornado. Os dados são retornados em uma resposta somente se o PayPal registrou dados que correspondem ao campo.

Respostas de erro

Se o Ackvalor não for Success, o pagamento ou ação desejada pode não passar.

Os valores possíveis do Ackcampo de resposta são os seguintes:

  • Success – O pedido foi bem sucedido.
  • SuccessWithWarning – A solicitação foi bem-sucedida, mas um código de erro de aviso também foi retornado.
  • Failure– A solicitação da API falhou. Veja mensagens de erro para detalhes.
  • FailureWithWarning – A solicitação da API falhou e mensagens de aviso adicionais foram retornadas.

Se uma solicitação estiver mal formada ou contiver algum outro erro, o corpo da resposta SOAP conterá um Errorselemento com outros elementos que podem ajudá-lo a solucionar a causa do erro.

A estrutura das mensagens de erro é a seguinte:

O mais importante desses elementos adicionais é o seguinte:

  • ShortMessage
  • LongMessage
  • ErrorCode

Informações adicionais podem aparecer como parte de ErrorParametersType. Por exemplo, se a resposta retornada dentro do ParamIDelemento for ProcessorResponse, o Valueelemento conterá um erro específico do processador de placa de terceiros, como 0091. Os valores definidos no ErrorParametersTypenão são definidos pelo PayPal; em vez disso, eles são passados ​​da fonte.

Nota: o PayPal apenas transmite os valores selecionados em ErrorParametersType.

O exemplo a seguir mostra a resposta de erro se o nome de usuário e a senha da API não corresponderem a um nome de usuário e senha legítimos da API registrados no PayPal.

Exemplo da resposta de erro SOAP: Nome de usuário ou senha inválidos

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV: Envelope [DETAILS NOT SHOWN]>
  <SOAP-ENV:Header>[DETAILS NOT SHOWN]</SOAP-ENV:Header>
  <SOAP-ENV:Body id="_0">
    <GetTransactionDetailsResponse xmlns="urn:ebay:api:PayPalAPI">
    <Timestamp xmlns="urn:ebay:apis:eBLBaseComponents">2005-02-09T21:51:26Z</Timestamp>
    <Ack xmlns="urn:ebay:apis:eBLBaseComponents">Failure</Ack>
    <Errors xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:ErrorType">
      <ShortMessage xsi:type="xs:string">Authentication/Authorization Failed</ShortMessage>
      <LongMessage xsi:type="xs:string">Username/Password is incorrect</LongMessage>
      <ErrorCode xsi:type="xs:token">10002</ErrorCode>
      <SeverityCode xmlns="urn:ebay:apis:eBLBaseComponents">Error</SeverityCode>
    </Errors>
    <CorrelationID xmlns="urn:ebay:apis:eBLBaseComponents">Debugging-Info</CorrelationID>
    <Version xmlns="urn:ebay:apis:eBLBaseComponents">124.00</Version>
    <Build xmlns="urn:ebay:apis:eBLBaseComponents">1.0006</Build>
    <...other elements="" in="" response...="">
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

CorrelationID para relatar problemas ao PayPal

O valor retornado CorrelationIDé importante para o PayPal determinar a causa precisa de qualquer erro que você possa encontrar. Se você tiver que solucionar um problema com suas solicitações, sugerimos que você capture o valor CorrelationIDpara que você possa denunciá-lo ao PayPal.

Codificação de caracteres UTF-8

A API do PayPal supõe que todos os dados nas solicitações estejam em Unicode, especificamente, o formato de codificação de 8 bits (UTF-8) Unicode (ou UCS) Transformation Format.

Nas respostas, a API sempre retorna dados em UTF-8.

Formatos de data / hora

O esquema da API do PayPal para o SOAP define valores de data / hora como Hora Universal Coordenada (UTC / GMT), usando o formato ISO 8601 e do tipo ns:dateTime.

Um exemplo de data / hora é 2006-08-24T05: 38: 48Z

Tipo de dados do valor da moeda central

O tipo de dados da quantia monetária principal é chamado BasicAmountTypee é derivado de string. Todos os campos de valor monetário têm a seguinte estrutura:

  1. currencyIDatributo é obrigatório.
  2. O valor deve ter duas casas decimais, exceto no caso de moedas que não suportam valores decimais .
  3. O separador decimal deve ser um período (“.”).
  4. Você não deve usar nenhum separador de milhares.
  5. BasicAmountTypetem um tipo de dados ebl:CurrencyCodeType, que define um grande número de diferentes códigos de moeda. No entanto, para que seu processamento seja bem-sucedido, você deve definir currencyCode como um código de moeda válido .

Exemplo

O nome do campo Amount, é um exemplo; os nomes dos campos reais podem variar dependendo da operação específica da API .

<Amount currencyCode="USD">3.00</Amount>


FONTE: https://developer.paypal.com/docs/classic/api/PayPalSOAPAPIArchitecture/

Web Speech API – Reconhecimento de voz com JavaScript

Imagine websites onde os usuários podem navegar pelas páginas ou preencher campos de formulário usando a sua voz e até mesmo interagir com a página enquanto dirige, sem tirar os olhos da estrada.

O reconhecimento de voz tem várias aplicações no mundo real. Muitas pessoas tornaram-se familiarizadas com este conceito graças a softwares como o Siri e S-Voice. Esta aplicação pode melhorar drasticamente a usabilidade dos websites, principalmente para deficientes visuais. Imagine websites onde os usuários podem navegar pelas páginas ou preencher campos de formulário usando a sua voz e até mesmo interagir com a página enquanto dirige, sem tirar os olhos da estrada.

 

 

O que é Web Speech API?

A Web Speech API foi lançada no final de 2012 e permite que os desenvolvedores forneçam a entrada de voz e recursos de saída de texto-para-voz em um navegador web. Esta API cuida da privacidade dos usuários, pois antes de deixar o site para acessar a voz através do microfone, o usuário deve explicitamente conceder a permissão. Curiosamente, o pedido de autorização é o mesmo que a API getUserMedia, apesar de não precisar da webcam. Se a página que executa esta API usa o protocolo HTTPS, o navegador solicita a permissão apenas uma vez.

 

 

Então veremos logo abaixo, um exemplo básico de como podemos implementar esta nova API aos nossos projetos:

Criando a primeira página com reconhecimento de voz:

Passo 1 – Estrutura HTML:

A estrutura HTML é bem simples, vejamos a marcação abaixo:

<p id="ola">Olá tableless, você falou:</p>

<button id=”rect”>Gravar</button> <span id=”unsupported” class=”hidden”>API not supported</span>

Onde:

  • Transcription – Onde se encontrará o texto informando oque o usuário falou
  • Rect – Botão para reconhecer a voz do usuário
  • unsupported – Caso a API não seja suportada pelo browser

Passo 2 – Testando

Como qualquer API, temos que verificar primeiramente se o browser suporta SpeechRecognition:

// Test browser support
window.SpeechRecognition = window.SpeechRecognition ||
window.webkitSpeechRecognition ||
null;

//caso não suporte esta API DE VOZ            
if (window.SpeechRecognition === null) {
    document.getElementById('unsupported').classList.remove('hidden');
}else {
    //......
}

Passo 3 – Métodos e propriedades

Depois de testar a compatibilidade da API, iremos instanciar o reconhecedor de  voz, usando o speechRecognition(). Como o código listado abaixo:

var recognizer = new window.SpeechRecognition();

Este objeto expõe os seguintes métodos:

  • onstart: Define um callback que é disparado quando o serviço de reconhecimento começou a ouvir o áudio com a intenção de reconhecer.
  • onResult: Define um callback que é disparado quando o reconhecedor de voz retorna um resultado.
  • onerror: Define um callback que é acionado quando ocorre um erro de reconhecimento de voz.
  • onend: Define um callback que é disparado quando o serviço foi desligado. O evento deve sempre ser gerado quando a sessão termina, não importa o que a razão.

Iremos criar uma varável que será responsável por exibir o texto que o usuário falou e também iremos definir a propriedade continuous = true, que faz com que o reconhecedor de voz não pare de ouvir, mesmo que tenha pausas do usuário.

var transcription = document.getElementById("transcription");

            //Para o reconhecedor de voz, não parar de ouvir, mesmo que tenha pausas no usuario
            recognizer.continuous = true;

Agora iremos definir a função “onresult” que define um callback que é disparado quando o reconhecedor de voz retorna um resultado.

recognizer.onresult = function(event){
                transcription.textContent = "";
                for (var i = event.resultIndex; i < event.results.length; i++) {
                    if(event.results[i].isFinal){
                        transcription.textContent = event.results[i][0].transcript+' (Taxa de acerto [0/1] : ' + event.results[i][0].confidence + ')';
                    }else{
                        transcription.textContent += event.results[i][0].transcript;
                    }
                }
            }

Vamos analisar este código um pouco mais detalhadamente:

transcription.textContent = “”;    Faz com que limpe o texto que se encontra dentro da “

for (var i = event.resultIndex; i < event.results.length; i++) {  Loop que pecorre o evento que contém o texto que o usuário falou.

Note que dentro deste loop, há uma condição, que verifica se o evento se encontra na última posição (event.results[i].isFinal), caso seja verdadeira, ele irá imprimir todo o texto, junto com a taxa de acerto, que vai de “0” até “1”. Caso seja falsa, ele vai adicionar mais texto na nossa div

Passo 4 – Anexando o evento de click

Agora iremos anexar um evento de click, ao nosso botão, segue 0 código abaixo :

document.querySelector("#rect").addEventListener("click",function(){
                try {
                    recognizer.start();
                  } catch(ex) {
                    alert("error: "+ex.message);
                  }
            });

Onde:

recognizer.start(); – Inicia o record ( a gravação );

catch(ex) {

alert(“error: “+ex.message);

} –  tratamento de log, caso exista, algum erro de gravação

É importante observarmos que o reconhecedor demora um pouco para poder interpretar a sua voz, mais ou menos uns 3 à 4 segundos, esta API ainda está em teste e que infelizmente até agora, só é  suportada no chrome,

Finalizando

Bem pessoal, essa foi uma breve introdução sobre Web Speech API. Futuramente irei trazer mais artigo

Disponibilizei o código no github e também disponibilizei uma demo.

Clique aqui para ver a demo online

Clique aqui, para ir ao código completo.

 

Fonte:https://tableless.com.br/web-speech-api-reconhecimento-de-voz-com-javascript/

 

 

 

 

 

Software para Windows de Eugene Muzychenko

Software comercial

Cabo de áudio virtual (VAC)

Driver de multimídia do Windows que cria um ” cabo virtual ” representado por dois dispositivos de forma de onda, entrada e saída, com ligação interna entre eles. Permite transferência de som direta e intocada entre diferentes aplicativos. Útil para gravar a saída de áudio do aplicativo em tempo real e salvar um fluxo de som de saída de aplicativos que não permitem gravá-lo diretamente no arquivo WAV. VAC é uma “versão de onda” do “cabo de loopback MIDI”, como os drivers Loopback do MultiMid ou do Hubi . Ao contrário do Total Recorder, você pode simplesmente salvar o fluxo de áudio, o VAC permite rotear em tempo real.,Foobar2000 , AIMP , Audacity , Audition , Skype , Flex-Radio etc.).

Cabo de áudio virtual 4 páginas (XP / 2k3 / Vista / Win 7/8 / 8.1 / 10)

Cabo de áudio virtual 3 páginas (9x / ME / NT4 / 2k / XP / 2k3)

Software grátis

Wave Clone

Ferramenta multimídia do Windows para compartilhar as portas Wave (MME) entre várias aplicações. Traz um recurso multi-cliente para qualquer dispositivo Wave. O Wave Clone é uma “versão de onda” dos “complementos de múltiplos clientes MIDI”, como os drivers de Loopback do MultiMid ou do Hubi .

Página Wave Clone (9x / ME / NT4 / 2k / XP / 2k3)

 

Manuais MIDI

Permite dividir seu teclado MIDI em dois manuais independentes (zonas), atribuir-lhes diferentes instrumentos MIDI e tocar as duas mãos ao mesmo tempo, produzindo peças de duas partes. Você não pode fazer isso usando um software de sequenciador popular.

Página de Manuales MIDI  (todos os sistemas)

 

FlushVol

Utilitário para liberar, uma vez ou periodicamente, buffers de arquivos de volume. Funciona como sync.exe de Mark Russinovich, mas enumera todos
os volumes fixos, incluindo montado em NTFS Mount Points . Pode ser instalado como um serviço para iniciar automaticamente e liberar buffers de volume com uma interfal dada.

Baixe FlushVol 1.4.2 (2k / XP / 2k3 / Vista / Win7 / 8/10 )

 

mscetool

O mscetool opera com o arquivo de cabeçalho MSCE dos arquivos WinCE CAB (um arquivo com extensão .000 que descreve o processo de instalação). O principal objetivo desse utilitário é mudar a arquitetura e / ou os campos do número de versão do WinCE no cabeçalho. Existem muitos programas que podem funcionar sob versões específicas do WinCE, mas são distribuídos em arquivos CAB com uma arquitetura forte e os números de versão mínima / máxima especificados.

Faça o download do mscetool 1.0 (2k / XP / 2k3 / Vista / Win7)

 

b000fftool

O b000fftool opera com arquivos de imagem gravados MS B000FF (MSBIN) contendo imagens do Windows CE / ROM móvel. Pode ser útil para corrigir valores de endereço de carga incorretos em imagens CE6 BIN produzidas por BOOOFF, XipPort, Remaker e ferramentas similares.

Baixe o b000fftool 1.0 (2k / XP / 2k3 / Vista / Win7)

 

tcctoolce

O tcctoolce executa algumas operações específicas para os dispositivos baseados em CPU ARCH da Telechips sob o WinCE (apenas a implementação de imagens instantâneas está implementada).

Baixe tcctoolce 1.0.1 (WinCE 4.2 ou superior)

 

TaskbarControlCE

TaskbarControlCE destina-se a controlar a aparência da barra de tarefas do Explorer em caso de alternar entre janelas normais e em tela cheia. Inicialmente desenvolvido para a estação multimídia do carro Createc / Joy-J-2619.

Baixar TaskbarControlCE 1.0.1 (WinCE 4.2 ou superior)

 

Driver SiLabs CP210x VCP para WinCE 4.2

Um driver VCP (Virtual Communication Port) para CP210x (CP2101, CP2102, CP2103, CP2104), chips USB para Serial Bridge fabricados pela Silicon Laboratories (anteriormente Cygnal). O driver cria COMn: porta serial virtual disponível para qualquer aplicativo de comunicação serial (emuladores de terminal, software de navegação GPS, etc.).

O driver funciona apenas em CPUs ARMV4 no Windows CE 4.2 (por exemplo, Windows Mobile 2003 SE ou Pocket PC 2003). Os drivers do CE 5.0 e 6.0 estão disponíveis no site do SiLabs .

Baixe cp210xvcp_ce42_2_0_1_0 (CE 4.2)

 

shrinkvd

shrinkvd é um utilitário de linha de comando para encadear arquivos de disco virtual VMware pré-alocados de acordo com um espaço realmente ocupado por partições. Útil para otimizar os hóspedes do Vista / Win7 / Win8.

Baixar shrinkvd 1.2 (todos os sistemas PC Windows)

 

pegue a senha

getpassword é um utilitário de linha de comando para solicitar uma senha do teclado, escondendo a entrada e retornando via saída padrão (por exemplo, para um arquivo de comando / lote).

Baixe o getpassword 1.0 (todos os sistemas PC Windows)

 

getfileinfo

getfileinfo é um utilitário de linha de comando para extrair e imprimir várias informações de arquivo (data, hora, versão, especificação). Os resultados da versão do arquivo podem ser úteis para criar nomes de arquivos versionados. Os qualificadores de especificação de arquivo podem ser úteis para extrair substituição de argumento de unidade, caminho, nome e extensão, como o processador de lote (cmd.exe), mas sem expandir caracteres curiosos para nomes de arquivos existentes. As peças de especificação extraídas contendo curingas podem ser usadas para processamento posterior de arquivos.

Baixe o getfileinfo 1.9 (todos os sistemas PC Windows)

 

MixerInfo

MixerInfo mostra todas as informações sobre um mixer de áudio fornecido.

Baixar MixerInfo (com código fonte)

 

ArrangeChildren

ArrangeChildren destina-se a organizar várias janelas filho na área de cliente da janela MDI do aplicativo. Ele pode ser usado para arrumar janelas de projeto em IDEs (ambientes de desenvolvedores integrados), como Visual Studio , Sound Forge , Photoshop e outros.

Download ArrangeChildren 1.00

Baixe ArrangeChildren 1.04

 

CopyFileFragm

CopyFileFragm é um utilitário de console destinado a manipular fragmentos de arquivos binários e expandir / encolher arquivos. Pode extrair um fragmento de arquivo para outro arquivo ou stdout, escrever um fragmento em outro arquivo no lugar, substituir / expandir arquivos etc.

Baixar CopyFileFragm 1.11

 

copywobuf

copywobuf é um utilitário de linha de comando do console que copia um arquivo (sem curingas), abrindo arquivos de origem e de destino com
FILE_FLAG_NO_BUFFERING para impedir o armazenamento em cache de arquivos. É útil copiar arquivos de / para pastas compartilhadas em convidados da VMware para evitar o bloqueio do arquivo host pelo processo vmware-vmx.exe.

Baixe copywobuf 1.3

 

waveinfo

waveinfo é um utilitário de linha de comando do console que mostra informações sobre arquivos RIFF / WAVE (.wav).

Baixe o waveinfo 1.3

VMWRefresh

O VMWRefresh permite que você use o SoftICE 3.x ou 4.x no Windows 2000 / XP executado no VMWare 4.5.1 forçando a janela de convidado do VMWare a atualizar periodicamente.

Faça o download do VMWRefresh 1.04

 

picoc para Win32

Picoc é um intérprete de linguagem C muito pequeno, projetado para sistemas baseados em UNIX. Existe uma porta para Win32 (x86 / x64).

Baixar picoc para Win32 2,2 m

 

RASPPPoE 0.98b patch de tempo limite

Um patch para os drivers do protocolo RASPPPeE escrito por Robert Schlabbach . Aumenta RASPPPoE tempo limite para 120..150 segundos para permitir sessão PPP a persistir durante a reconexão modem DSL.

Baixe o patch de tempo limite RASPPPo 0.98b

 

Fonte: http://software.muzychenko.net/eng/

O Maior Hub Brasileiro de APIs

O 99APIs é um hub público com informações sobre APIs abertas do Brasil e do mundo, com o objetivo de proporcionar à comunidade um espaço gratuito e livre para a troca de informações sobre APIs.

É claro, queremos ajudar devs a construírem apps cada vez mais incríveis e empresas a exporem e promoverem suas APIs. A divulgação de APIs no 99APIs é gratuita. Promova suas APIs aqui!

As informações são abertas e a curadoria será realizada continuamente pela equipe Sensedia. O 99APIs conta com as APIs brasileiras mais relevantes e as ”popstars” internacionais e é construído usando a plataforma Smart Canvas da CI&T (http://ciandt.com).

 

http://99apis.com/card/99apis


apis2