Guía de casos de uso de Data Kiosk

How to use the Data Kiosk API.

Versión de la API: 2023-11-15

¿Qué es la API de Data Kiosk?

La API del colaborador comercial para Data Kiosk te permite enviar consultas a GraphQL desde diversos esquemas para ayudar a los colaboradores comerciales a administrar sus negocios.

Puntos clave

  • Data Kiosk puede devolver un documento de datos o un documento de error en la respuesta de la operación getQuery. También puede suceder que no devuelva ningún documento si la consulta se realiza correctamente pero no se devuelven datos.
    • El documento de datos contiene la salida en el formato JSONL cuando se procesa una solicitud con el estado de procesamiento DONE.
    • El documento de error está en formato JSON y contiene el mensaje de error de una solicitud que no se ha realizado correctamente con el estado de procesamiento FATAL.
  • Un processingStatus de DONE sin errorDocumentId o dataDocumentId en la respuesta de la operación getQuery significa que la solicitud se completó sin datos o que no hay datos para el intervalo de fechas determinado. Vuelve a intentar la solicitud con parámetros diferentes.
  • La API de Data Kiosk no admite la programación de consultas.
  • La API de Data Kiosk no admite el registro de consultas atrasadas. Data Kiosk limita la cantidad de consultas simultáneas no terminales por colaborador comercial y por consulta de GraphQL.

Tutorial: Solicitar y filtrar datos con una consulta de GraphQL

En este tutorial se describe cómo solicitar y filtrar datos con una consulta de GraphQL.

Requisitos previos:

Para completar este tutorial, necesitarás lo siguiente:

  • El rol adecuado para los datos que solicitas. En este tutorial se utilizan datos de ventas y tráfico en los ejemplos, lo que requiere el rol de Brand Analytics.

Paso 1: Crear una solicitud de consulta

Crea una solicitud de consulta asíncrona especificando la consulta. Esta debe ser una consulta de GraphQL válida que cumpla con el esquema. Los parámetros de entrada de la consulta se pueden modificar según quieras y los campos de respuesta se pueden incluir o excluir en cualquier orden.

Llama a la operación createQuery, proporcionando la consulta en el cuerpo:

Parámetro del cuerpo

Nombre Type Descripción Obligatorio
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.

Ejemplos de solicitudes

Ejemplo 1: Crea una solicitud de consulta para salesAndTrafficByDate para obtener un subconjunto de campos en la respuesta.

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

Ejemplo 2: Crea una solicitud de consulta para salesAndTrafficByAsin para obtener un subconjunto de campos en la respuesta.

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

Respuesta

Una respuesta correcta incluye la siguiente propiedad:

Nombre Type Descripción
queryId string El identificador de la consulta. Este identificador es único solo si se combina con un ID de colaborador comercial.

Ejemplo de respuesta

{ "queryId": "012345678901" }

Paso 2: Confirmar que el procesamiento de la consulta ha finalizado

Después de llamar a la operación createQuery, Amazon recibe la solicitud y comienza a procesarla. Confirma que el procesamiento se ha completado antes de continuar. Para confirmar que se ha completado el procesamiento de la consulta, consulta Comprobar que el procesamiento de la consulta ha finalizado.

Paso 3: Obtener la información necesaria para recuperar el resultado de la consulta

Llama a la operación getDocument para obtener la información necesaria para recuperar el contenido del documento con el resultado de la consulta. Esto incluye una URL prefirmada del documento. Si el documento está comprimido, en el encabezado de Content-Encoding se mostrará el algoritmo de compresión. Ten en cuenta que esto difiere de la forma en que la API de informes proporciona información sobre la compresión.

Parámetro de ruta

Nombre Type Descripción Obligatorio
documentId string El identificador del documento de resultados de la consulta. El identificador es único solo si se combina con un ID de colaborador comercial.

Ejemplo de solicitud

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

Respuesta

Una respuesta correcta incluye lo siguiente:

Nombre Type Descripción
documentId string El identificador del documento de consulta. El identificador es único solo si se combina con un ID de colaborador comercial.
documentUrl string Una URL prefirmada que se puede utilizar para recuperar el documento de Data Kiosk. Esta URL caduca a los cinco minutos. Si el documento de Data Kiosk está comprimido, el encabezado de Content-Encoding indicará el algoritmo de compresión.

Ejemplo de respuesta

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

Guarda el documentUrl para su uso en el paso siguiente.

Paso 4: Descargar el documento

Debes descargar el documento de consulta con la información devuelta en el paso 3.

El siguiente código de ejemplo muestra cómo descargar un documento de Data Kiosk. Utiliza el valor de documentUrl del paso anterior como argumento para el parámetro url del método download de la clase DownloadExample.

Nota: debes mantener siempre el cifrado en reposo. El contenido del documento de resultados de consultas sin cifrar nunca debe almacenarse en el disco, ni siquiera temporalmente, ya que el documento de resultados de la consulta puede contener información confidencial. El siguiente código de ejemplo demuestra este principio:

// 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); } } } }

¿Te ha ayudado esta página?