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
.
- Le document de données contient la sortie au format JSONL lorsqu'une demande réussie est traitée avec le statut de traitement
- Une valeur
processingStatus
deDONE
sanserrorDocumentId
oudataDocumentId
dans la réponse de l'opérationgetQuery
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);
}
}
}
}
Updated 23 days ago