Aller au contenu principal

Référence de l'API

Votre application appelle la même API REST que les marchands, à l'adresse https://api.dzbuild.app/v1. Deux références la décrivent, et cette page couvre ce qui change quand vous l'appelez avec un jeton d'installation.

Deux références​

La documentation de l'API sur dzbuild.com détaille les principales ressources avec leurs paramètres, leurs réponses et des exemples, en trois langues :

Ces pages sont écrites pour les clés API des marchands. Avec un jeton d'installation, les règles de cette page priment là où elles diffèrent : tous les plans peuvent utiliser votre application, les limites sont dans Limites de requêtes, et certains endpoints sont fermés aux apps.

La description OpenAPI pour les applications est un fichier JSON au format OpenAPI 3.1. Elle liste les 92 opérations qu'un jeton d'installation peut appeler, avec leurs scopes, leurs paramètres et la forme de leurs réponses. Importez-la dans Postman ou Insomnia, ou générez-en des types.

Télécharger dzbuild-apps-v1.json

curl -sO https://dzbuild.dev/openapi/dzbuild-apps-v1.json

Le fichier déclare https://api.dzbuild.app comme serveur. Son schéma de sécurité dzOAuth liste chaque scope avec une description en anglais.

Envoyer le jeton d'installation​

L'échange de jeton vous donne un jeton d'accès par boutique approuvée par le marchand (voir OAuth). Chaque jeton commence par dzpk_live_. Envoyez-le dans l'en-tête Authorization avec le schéma Bearer :

curl https://api.dzbuild.app/v1/whoami \
-H "Authorization: Bearer dzpk_live_xxxxxxxx"

Le jeton détermine la boutique. Les requêtes n'ont pas de paramètre de boutique : pour travailler sur une autre boutique du même marchand, utilisez le jeton de cette boutique dans la liste stores de la réponse d'échange. Gardez les jetons sur votre serveur. Ils n'expirent pas d'eux-mêmes. Un jeton cesse de fonctionner quand le marchand désinstalle votre application, ou quand il la réinstalle sur la même boutique, ce qui remplace le jeton.

StatutMessageCause
401Missing Authorization headerPas d'en-tête Authorization.
401Unsupported Authorization schemeL'en-tête ne commence pas par Bearer.
401Invalid or revoked API keyLe jeton est faux, ou il a été révoqué par une désinstallation.

Chaque jeton d'installation est aussi contrôlé par rapport à l'état de votre application et de la boutique. Un appel refusé répond 403 avec l'un de ces codes :

CodeSignification
app_uninstalledL'application n'est plus installée sur cette boutique.
app_suspendedDZBuild a suspendu l'app.
app_not_approvedL'application est en mode test et ne tourne que sur les boutiques de son développeur.
app_plan_requiredLe plan de la boutique est inférieur au plan minimum fixé pour l'app.

Réponses​

Une réponse réussie place le résultat dans data. Une erreur place un code et un message dans error. Les deux portent meta.request_id : citez-le quand vous contactez DZBuild au sujet d'un appel.

{
"error": { "code": "forbidden", "message": "Missing scope: orders:write" },
"meta": { "request_id": "8f2c1a9d4b7e6035", "api_version": "v1" }
}

Les endpoints de liste répondent ainsi :

{
"data": { "items": [...], "next_cursor": "...", "has_more": true },
"meta": { "request_id": "...", "api_version": "v1" }
}

Renvoyez next_cursor dans le paramètre cursor pour obtenir la page suivante, et arrêtez-vous quand has_more vaut false. GET /v1/orders accepte aussi since (les commandes créées à partir de cet instant), status et customer_phone.

whoami​

GET /v1/whoami n'exige aucun scope. Il indique à quelle boutique appartient un jeton et ce qu'il peut faire. Pour un jeton d'installation, il ajoute un objet app :

{
"data": {
"key_id": "dzpk_live_3c9e1a7f5b2d80",
"store_id": 1234,
"type": "platform",
"rate_limit_tier": "enterprise",
"pilot": true,
"scopes": ["orders:read", "whatsapp:read", "whatsapp:send"],
"app": {
"app_id": 12,
"client_id": "dzapp_4e1b9c07d2a86f35e0b1",
"install_id": 57
}
},
"meta": { "request_id": "8f2c1a9d4b7e6035", "api_version": "v1" }
}
ChampSignification
store_idLa boutique sur laquelle ce jeton agit.
scopesLes scopes accordés par le marchand.
rate_limit_tierToujours enterprise pour les jetons d'installation, quel que soit le plan de la boutique.
app.app_idL'identifiant de votre app.
app.client_idL'identifiant client OAuth de votre app.
app.install_idL'installation sur cette boutique. Les payloads de webhook comme app.uninstalled utilisent le même identifiant.

Endpoints fermés aux applications​

Ces endpoints répondent 403 à un jeton d'installation, quels que soient ses scopes :

EndpointsRéponsePourquoi
/v1/keys et /v1/keys/{key_id}Apps cannot use this endpointLes clés API appartiennent au marchand.
/v1/webhooks et tous ses sous-cheminsApps cannot use this endpointLe webhook de votre application se règle une seule fois dans la console développeur pour toutes les boutiques (voir Webhooks).
/v1/changes et tous ses sous-chemins, annulation compriseApps cannot use this endpointLe journal des modifications et l'annulation restent au marchand.

POST /v1/landing-pages/generate exige le scope ai:generate, que les applications ne peuvent pas demander car il consomme les crédits IA du marchand. Il répond 403 avec Missing scope: ai:generate.

Cette page pour les outils IAVoir en MarkdownOuvrir dans ChatGPTOuvrir dans Claude