Installation
Démarrage rapide
Créez un article, puis listez le stock en main :Authentification
Passez une clé d’API ou un jeton d’accès OAuth avecWithToken. Créez une clé d’API dans l’application sous Paramètres > Accès > Clés d’API. La clé agit au nom du membre qui l’a créée, et un appel exige à la fois l’autorisation du membre et l’une des portées de la clé.
Pour un jeton OAuth qui expire, passez une fonction avec WithTokenFunc. Le client l’appelle avant chaque requête, et une erreur qu’elle renvoie devient l’erreur de l’appel :
Un
Client peut être utilisé sans risque par plusieurs goroutines. Créez-en un et partagez-le.
Faire des appels
Chaque domaine de l’API est un champ du client, commeCatalog ou Inventory, avec une méthode pour chaque opération. Chaque méthode prend d’abord un context.Context, puis les paramètres de chemin, puis le corps, puis les paramètres de requête :
GET /catalog/items/{item}. Une méthode renvoie les data de la réponse sous forme de type généré. Une réponse vide ne renvoie qu’une erreur, un export CSV ses octets et un fichier la *http.Response, dont vous devez fermer le corps.
Annulez le contexte pour arrêter un appel, nouvelles tentatives et attentes comprises.
Champs facultatifs
Un paramètre de requête que vous pouvez omettre est un pointeur.stockshift.Ptr en crée un à partir d’une valeur.
Un champ du corps de la requête que vous pouvez omettre est un Opt. Sa valeur zéro omet le champ, stockshift.Value(v) envoie v et stockshift.Null[T]() envoie null, ce qui efface le champ là où l’API le permet :
Autres points de terminaison
client.Do appelle n’importe quel chemin et décode la réponse JSON dans une valeur que vous passez. Utilisez-le pour un point de terminaison ajouté à l’API après cette version du paquet :
Pagination
Une liste qui peut grossir renvoie une page à la fois. Chaque liste paginée a une deuxième méthode qui se termine parAll et renvoie un iter.Seq2. Elle suit les curseurs et produit chaque enregistrement :
break l’arrête. Une erreur met fin à la boucle. Pour paginer vous-même, réglez After sur le NextCursor de chaque page jusqu’à ce qu’il soit nil.
Erreurs
Un appel que l’API refuse renvoie une*APIError qui contient le corps des détails du problème RFC 9457. Basez votre logique sur Code, qui est stable. Problem.Detail est rédigé pour des humains et peut changer.
APIError a aussi StatusCode et Header. Un appel qui n’obtient aucune réponse, parce que le réseau a fait défaut ou que la tentative a expiré, renvoie une *ConnectionError qui enveloppe la cause. Quand le contexte prend fin, l’appel renvoie l’erreur du contexte.
Nouvelles tentatives et clés d’idempotence
Le client réessaie un429 après le délai indiqué dans Retry-After. Il le fait pour toutes les méthodes, parce que l’API n’a pas exécuté l’appel. Si Retry-After dépasse WithMaxRetryAfter, il renvoie plutôt l’erreur.
Un 5xx ou une défaillance réseau est réessayé pour GET, PUT et DELETE, avec un court délai progressif. Un POST ou un PATCH n’est réessayé que si vous lui donnez une clé d’idempotence, pour qu’une nouvelle tentative ne puisse pas appliquer la modification deux fois :
CallMaxRetries et CallHeader modifient un seul appel de la même façon.
Webhooks
Vérifiez l’en-têteStockShift-Signature avant de faire confiance à une livraison. WebhookVerifier.Verify a besoin du corps brut, exactement tel qu’il est arrivé :
Tolerance pour changer ce délai. Les nouvelles tentatives d’un événement gardent son ID : conservez-le et ignorez les événements que vous avez déjà traités.
Chaque type d’événement a une constante, comme EventInventoryStockAdjusted, dont le commentaire de documentation nomme le type dans lequel ses Data se décodent. Pour tester votre propre récepteur, SignWebhook signe une charge utile de la même façon que StockShift.
Versions
Le module suit la gestion sémantique de version. La version majeure change quand l’API évolue d’une façon qui peut briser votre code, comme un champ retiré ou un nouveau paramètre obligatoire. En Go, une nouvelle version majeure change aussi le chemin d’importation, par exemplegithub.com/StockShift/go-sdk/v2. Les nouveaux points de terminaison et champs arrivent dans des versions mineures. APIVersion contient la version de la référence de l’API à partir de laquelle le module a été construit.
Les deux versions les plus récentes de Go sont prises en charge, comme le fait l’équipe Go.