Guia de casos de uso do Data Kiosk

How to use the Data Kiosk API.

Versão da API: 15/11/2023

O que é a API do Data Kiosk?

Com a API do parceiro de vendas do Data Kiosk, é possível enviar consultas GraphQL de vários esquemas com o intuito de ajudar os parceiros de vendas a gerenciarem seus negócios.

Pontos-chave

  • Como resposta da operação, o Data Kiosk pode devolver um documento de dados ou um documento de erro getQuery. Pode ser que ele não retorne nenhum documento, no caso de a consulta ter sido bem-sucedida.
    • O documento de dados contém a saída no formatoJSONL quando uma solicitação é bem-sucedida e é processada com o DONE status de processamento.
    • O documento de erro fica no formato JSON e contém a mensagem de erro de uma solicitação mal-sucedida com status de processamento FATAL.
  • Uma processingStatus do DONE sem errorDocumentId ou dataDocumentId na resposta da getQuery operação significa que a solicitação foi concluída sem dados ou que não há dados para o determinado intervalo de datas. Repita a solicitação com parâmetros diferentes.
  • A API do Data Kiosk não oferece suporte ao agendamento de consultas.
  • A API do Data Kiosk não suporta o acúmulo de consultas. O próprio Data Kiosk limita o número de consultas não terminais simultâneas por parceiro de vendas e por consulta GraphQL.

Tutorial: Solicite e filtre dados com uma consulta GraphQL

Este tutorial descreve como solicitar e filtrar dados com uma consulta GraphQL.

Pré-requisitos:

Para concluir este tutorial, você precisará do seguinte:

  • Uma função apropriada para os dados que você está solicitando. Este tutorial usa dados de vendas e tráfego em seus exemplos, o que exige a Função do Brand Analytics.

Etapa 1: Crie uma solicitação de consulta

Crie uma solicitação de consulta assíncrona especificando o tipo. É necessário ser uma consulta GraphQL válida que adere ao esquema. Os parâmetros de entrada da consulta podem ser modificados conforme desejar e os campos de resposta podem ser incluídos ou excluídos em qualquer ordem.

Chame a operação createQuery e forneça a consulta no corpo:

Parâmetro do corpo

Nome Type Descrição Obrigatório
query string The GraphQL query that is compliant with the schema. A query can be at most 8,000 characters after unnecessary whitespace is removed. Refer to the schema to build your query. Sim

Exemplos de solicitações

Exemplo 1: Crie uma solicitação de consulta salesAndTrafficByDate para obter um subconjunto de campos na resposta.

POST https://sellingpartnerapi-na.amazon.com/dataKiosk/2023-11-15/queries { "query": "{analytics_salesAndTraffic_2023_11_15{salesAndTrafficByDate(startDate:\"2023-01-01\" endDate:\"2023-10-31\" aggregateBy:DAY marketplaceIds:[\"ATVPDKIKX0DER\"]){endDate marketplaceId startDate traffic{averageOfferCount browserPageViews averageParentItems browserPageViewsB2B browserSessions}sales{averageSalesPerOrderItem{amount currencyCode}averageSalesPerOrderItemB2B{amount currencyCode}averageSellingPrice{amount currencyCode}claimsGranted refundRate unitsOrderedB2B unitsRefunded unitsShipped}}}}" }

Exemplo 2: Crie uma solicitação de consulta salesAndTrafficByAsin para obter um subconjunto de campos na resposta.

POST https://sellingpartnerapi-na.amazon.com/dataKiosk/2023-11-15/queries { "query": "{analytics_salesAndTraffic_2023_11_15{salesAndTrafficByAsin(startDate:\"2023-01-01\" endDate:\"2023-10-31\" aggregateBy:PARENT marketplaceIds:[\"ATVPDKIKX0DER\"]){childAsin endDate marketplaceId parentAsin sales{orderedProductSales{amount currencyCode}totalOrderItems totalOrderItemsB2B}sku startDate traffic{browserPageViews browserPageViewsB2B browserPageViewsPercentage browserPageViewsPercentageB2B browserSessionPercentage unitSessionPercentageB2B unitSessionPercentage}}}}" }

Resposta

Uma resposta bem-sucedida tem a propriedade a seguir:

Nome Type Descrição
queryId string Um identificador da consulta. Ele é exclusivo apenas em combinação com um ID de parceiro de vendas.

Exemplo de resposta

{ "queryId": "012345678901" }

Etapa 2: Confirme se o processamento da consulta foi concluído

Assim que for feita a ligação para a operação createQuery, a Amazon recebe a solicitação e começa o processamento da consulta. Confirme se o processamento foi concluído antes de continuar. Para isso, consulte Verifique se o processamento da consulta foi concluído.

Etapa 3: Obtenha as informações necessárias para recuperar o resultado da consulta

Ligue para a operação getDocument para obter as informações necessárias a fim de recuperar o conteúdo do documento de resultado da consulta. Isso inclui um URL pré-assinado para o documento. Se esse documento estiver compactado, Content-Encoding o cabeçalho mostrará o algoritmo de compressão. Observe que isso difere da forma como a API de relatórios fornece informações sobre compactação.

Parâmetro do caminho

Nome Type Descrição Obrigatório
documentId string Um identificador do documento de resultado da consulta. O identificador é exclusivo apenas em combinação com um ID de parceiro de vendas. Sim

Exemplo de solicitação

GET https://sellingpartnerapi-na.amazon.com/dataKiosk/2023-11-15/documents/DOC-b8b0-4226-b4b9-0ee058ea5760

Resposta

Uma resposta bem-sucedida inclui o seguinte:

Nome Type Descrição
documentId string Um identificador do documento de consulta. O identificador é exclusivo apenas em combinação com um ID de parceiro de vendas.
documentUrl string Um URL pré-assinado que pode ser usado para recuperar o documento do Data Kiosk. Esse URL expira após cinco minutos. Se o documento do Data Kiosk estiver compactado, Content-Encoding o cabeçalho indicará o algoritmo de compressão.

Exemplo de resposta

{ "documentId": "DOC-b8b0-4226-b4b9-0ee058ea5760", "documentUrl": "https://d34o8swod1owfl.cloudfront.net/SampleResult%2BKey%3DSample%2BINITVEC%3D58+fa+bf+a7+08+11+95+0f+c1+a8+c6+e0+d5+6f+ae+c8" }

Salve o documentUrl para usar na etapa seguinte.

Etapa 4: Baixe o documento

Você deve baixar o documento de consulta usando as informações utilizadas na Etapa 3.

O código de amostra a seguir demonstra como baixar um documento do Data Kiosk. Use o valor documentUrl da etapa anterior como argumento para o parâmetro url do método download da classe DownloadExample.

Observação: Mantenha sempre a criptografia em repouso. O conteúdo do documento de resultado da consulta não criptografado nunca deve ser armazenado em disco, mesmo temporariamente, porque pode conter informações confidenciais. O código de amostra a seguir demonstra esse princípio:

// DownloadExample.java // This example is for use with the Selling Partner API for Data Kiosk, Version: 2023-11-15 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.Request; import com.squareup.okhttp.Response; import com.squareup.okhttp.ResponseBody; /** * Example that downloads a Data Kiosk document. */ public class DownloadExample { public static void main(String[] args) { String url = "<URL from the getDocument response>"; DownloadExample obj = new DownloadExample(); try { obj.download(url); } catch (IOException e) { // Handle exceptions here. e.printStackTrace(); } } /** * Download the document from the given Amazon Simple Storage Service (Amazon S3) URL. * * @param url the signed Amazon S3 URL to retrieve the document from. * @throws IOException when there is an error reading the response. */ public void download(String url) throws IOException { OkHttpClient httpclient = new OkHttpClient(); Request request = new Request.Builder() .url(url) .get() .build(); Response response = httpclient.newCall(request).execute(); if (!response.isSuccessful()) { System.out.printf("Call to download content was unsuccessful with response code: %d and message: %s%n", response.code(), response.message()); return; } try (ResponseBody responseBody = response.body(); InputStream inputStream = responseBody.byteStream(); // Note: If the Data Kiosk document is compressed, the 'Content-Encoding' header will indicate the // compression algorithm. Most HTTP clients are capable of automatically decompressing downloaded files // based on the 'Content-Encoding' header. // More Information: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding // // The OkHttp client will automatically set the "Accept-Encoding" header and respect the // "Content-Encoding" header, so it is not required to unzip the stream. // For clients which do not automatically decompress, wrapping the stream in a GZIP stream may be // required, for example: // InputStream unzippedInputStream = new GZIPInputStream(inputStream); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8); BufferedReader reader = new BufferedReader(inputStreamReader)) { String line; while ((line = reader.readLine()) != null) { // Process line by line. System.out.println(line); } } } }

Esta página ajudou você?