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
.
- O documento de dados contém a saída no formatoJSONL quando uma solicitação é bem-sucedida e é processada com o
- Uma
processingStatus
doDONE
semerrorDocumentId
oudataDocumentId
na resposta dagetQuery
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);
}
}
}
}
Updated 23 days ago