Guide des cas d'utilisation de Data Kiosk

How to use the Data Kiosk API.

Version de l'API : 2023-11-15

Qu'est-ce que l'API Data Kiosk ?

L'API partenaire de vente pour Data Kiosk vous permet de soumettre des requêtes GraphQL à partir de divers schémas afin d'aider les partenaires de vente à gérer leurs activités.

Points clés

  • Data Kiosk peut renvoyer un document de données ou un document d'erreur dans la réponse à l'opération getQuery. Il peut également ne renvoyer aucun document dans le cas où la requête a été réussie mais qu'aucune donnée n'a été renvoyée.
    • Le document de données contient la sortie au format JSONL lorsqu'une demande réussie est traitée avec le statut de traitement DONE.
    • Le document d'erreur est au format JSON et contient le message d'erreur pour une demande non réussie avec le statut de traitement FATAL.
  • Une valeur processingStatus de DONE sans errorDocumentId ou dataDocumentId dans la réponse de l'opération getQuery signifie que la demande s'est terminée sans données ou qu'il n'y a pas de données pour la plage de dates donnée. Réessayez la demande avec d'autres paramètres.
  • L'API Data Kiosk ne prend pas en charge la planification des requêtes.
  • L'API Data Kiosk ne prend pas en charge le stockage des requêtes. Data Kiosk limite le nombre de requêtes non terminales simultanées par partenaire de vente et par requête GraphQL.

Tutoriel : Demander et filtrer des données avec une requête GraphQL

Ce tutoriel décrit comment demander et filtrer des données avec une requête GraphQL.

Conditions préalables :

Pour terminer ce tutoriel, vous aurez besoin des éléments suivants :

  • Le rôle approprié pour les données que vous demandez. Ce tutoriel utilise des données sur les ventes et le trafic dans ses exemples, ce qui nécessite le rôle Analyse de marque.

Étape 1. Créer une demande de requête

Créez une demande de requête asynchrone en précisant la requête. La requête doit être une requête GraphQL valide qui respecte le schéma. Les paramètres de saisie de la requête peuvent être modifiés à volonté et les champs de réponse peuvent être inclus ou exclus dans n'importe quelle commande.

Appelez l'opération createQuery, en fournissant la requête dans le corps de l'opération :

Paramètres du corps

Nom Type Description Obligatoire
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. Oui

Exemples de demandes

Exemple 1 : créez une demande de requête pour salesAndTrafficByDate afin d'obtenir un sous-ensemble de champs dans la réponse.

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

Exemple 2 : créez une demande de requête pour salesAndTrafficByAsin afin d'obtenir un sous-ensemble de champs dans la réponse.

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

Réponse

Une réponse réussie inclut la propriété suivante :

Nom Type Description
queryId string Identifiant de la requête. Cet identifiant n'est unique qu'en combinaison avec un identifiant de partenaire de vente.

Exemple de réponse

{ "queryId": "012345678901" }

Étape 2. Confirmer la fin du traitement de la requête

Après avoir appelé l'opération createQuery, Amazon reçoit la demande et commence à traiter la requête. Confirmez que le traitement est terminé avant de continuer. Pour confirmer que le traitement de la requête est terminé, consultez Vérifier que le traitement de la requête est terminé.

Étape 3. Obtenir les informations nécessaires à l'extraction du résultat de la requête

Appelez l'opération getDocument pour obtenir les informations nécessaires à la récupération du contenu du document de résultat de la requête. Ces informations comprennent une URL pré-signée pour le document. Si le document est compressé, l'en-tête Content-Encoding indique l'algorithme de compression. Remarquez que cela diffère de la manière dont l'API Rapports fournit des informations sur la compression.

Paramètre de chemin d'accès

Nom Type Description Obligatoire
documentId string Identifiant du document de résultat de la requête. L'identifiant n'est unique qu'en combinaison avec un identifiant de partenaire de vente. Oui

Exemple de demande

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

Réponse

Une réponse réussie comprend les éléments suivants :

Nom Type Description
documentId string Identifiant du document de la requête. L'identifiant n'est unique qu'en combinaison avec un identifiant de partenaire de vente.
documentUrl string Une URL présignée qui peut être utilisée pour récupérer le document Data Kiosk. Cette URL expire au bout de cinq minutes. Si le document Data Kiosk est compressé, l'en-tête Content-Encoding indique l'algorithme de compression.

Exemple de réponse

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

Enregistrez documentUrl pour l'utiliser à l'étape suivante.

Étape 4. Télécharger le document

Vous devez télécharger le document de la requête en utilisant les informations renvoyées à l'Étape 3.

L'exemple de code suivant montre comment télécharger un document Data Kiosk. Utilisez la valeur documentUrl obtenue à l'étape précédente comme argument pour le paramètre url de la méthode download de la classe DownloadExample.

Remarque : vous devez toujours maintenir le chiffrement au repos. Le contenu non chiffré du document de résultat de la requête ne doit jamais être stocké sur disque, même temporairement, car ces rapports peuvent contenir des informations sensibles. L'exemple de code suivant illustre ce principe :

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

Cette page vous a-t-elle été utile ?