Appeler l'API ShopiMind
Une fois l'événement activate reçu, le access_token remis à l'installation devient utilisable. C'est une clé API que vous envoyez via le header spm-api-key — le plus simple est d'utiliser le SDK JavaScript officiel.
const { SpmClient, SpmDataSources, SpmCustomers } = require('@shopimind/sdk-shopimind');
// Un client lié à l'access_token d'une boutique
const client = SpmClient.getClient('v1', accessToken, { labelSource: null });
await SpmCustomers.bulkSave(client, customers, { chunk: true });La clé n'est valide que pendant le statut « actif »
Tout appel avant activate ou après deactivate / uninstall renvoie 401. Reportez vos appels au moment où l'intégration est active.
labelSource: null
Mettez labelSource: null à la création du client, puis posez vous-même id_data_source sur chaque item. Cela permet d'attribuer vos données à la bonne source (utile pour un modèle multi-sources parent / enfants — un magasin par point de vente, par exemple).
Sources de données
Une source de données identifie l'origine de ce que vous ingérez. Créez une source (parent), puis éventuellement des sous-sources (enfants), et taguez vos items avec id_data_source.
const sources = await SpmDataSources.list(client);
const res = await SpmDataSources.create(client, {
label: 'Hiboutik POS',
type: 'api',
});Données personnalisées (custom data)
Modélisez vos objets métier propres, puis poussez des enregistrements (chunking automatique) :
const { SpmCustomDataDefinitions, SpmCustomDataRecords } = require('@shopimind/sdk-shopimind');
const def = await SpmCustomDataDefinitions.create(client, {
name: 'POS profile',
fields: [ /* … */ ],
});
await SpmCustomDataRecords.bulkSave(client, def.data.data.id, records, { chunk: true });Voir le guide Données personnalisées.
Synchroniser clients, commandes, produits
const { SpmCustomers, SpmOrders, SpmProducts } = require('@shopimind/sdk-shopimind');
await SpmCustomers.bulkSave(client, customers, { chunk: true });
await SpmOrders.bulkSave(client, orders, { chunk: true });
await SpmProducts.bulkSave(client, products, { chunk: true });Les écritures sont idempotentes par identifiant externe (customer_id, order_id, …) : ré-envoyer un item le met à jour. Voir Ressources & méthodes.
Événements
Déclarez un type d'événement, puis déclenchez-le pour un contact :
const { SpmEvents } = require('@shopimind/sdk-shopimind');
await SpmEvents.create(client, {
name: 'Panier abandonné',
code_name: 'cart_abandoned',
properties: { /* … */ },
});
await SpmEvents.trigger(client, 'cart_abandoned', {
contact: { email: 'client@example.com' },
metaData: { cart_total: 42 },
});Voir le guide Événements externes.
Résilience
Le SDK gère pour vous le retry (429 / 5xx / réseau) et le chunking des gros lots. Vérifiez toujours l'enveloppe de réponse :
const res = await SpmCustomers.bulkSave(client, customers, { chunk: true });
if (!res.ok) {
console.error('Échec', res.error); // res.error.code, res.error.retryable
}Détails : Résilience du SDK.