Manifeste & enregistrement
Pour qu'une intégration soit installable, ShopiMind doit la connaître : son slug, sa configuration, ses widgets, ses webhooks. Vous fournissez ces informations sous forme d'un manifeste — un JSON neutre généré depuis votre code — que l'équipe ShopiMind enregistre. L'enregistrement est manuel et validé (gage de qualité de la marketplace).
1. Générer le manifeste
Le kit fournit buildIntegrationManifest(integration). Ajoutez un petit script à votre intégration :
// src/print-manifest.ts
import { buildIntegrationManifest } from '@shopimind/integration-kit-js';
import { myIntegration } from './integration.js';
console.log(JSON.stringify(buildIntegrationManifest(myIntegration), null, 2));// package.json
{
"scripts": {
"print:manifest": "node dist/print-manifest.js"
}
}Puis :
yarn build
yarn print:manifest > integration.manifest.json2. Ce que contient le manifeste
| Champ | Contenu |
|---|---|
manifest_version | 1. |
slug, name, version | Identité de l'intégration. |
categories? | Catégories (slugs neutres, ex. ['pos']). |
icon_url?, short_description?, description?, documentation_url? | Métadonnées d'affichage. |
config_schema | Votre formulaire de configuration. |
widgets | Vos widgets. |
webhooks | Chemins relatifs : /webhook/receive, /webhook/test-connection, /webhook/remote-data/{resource}. |
lifecycle_events | ['install','activate','deactivate','uninstall','config_updated']. |
remote_resources | Les ressources de vos select dynamiques (ex. ['stores']). |
Un artefact volontairement neutre
Le manifeste ne contient aucun secret, aucun SQL, aucun identifiant de partenaire, aucun statut, aucune URL absolue. Il décrit votre intégration ; il ne touche pas au plan de contrôle interne de ShopiMind. Vous pouvez le versionner et le partager sans risque.
3. L'envoyer à ShopiMind
Envoyez votre integration.manifest.json à dev@shopimind.com avec :
- l'URL publique de votre intégration (l'hôte où tournent vos webhooks, ex.
https://my-app.example.com) ; - le partenaire (votre organisation) à rattacher.
4. Ce que fait ShopiMind
L'équipe technique :
- valide le manifeste ;
- résout les catégories (vos slugs → identifiants internes) ;
- génère un
webhook_secret(le secret HMAC qui signera les webhooks vers votre intégration) ; - compose les URLs absolues de vos webhooks à partir de votre hôte public (ex.
https://my-app.example.com/webhook/receive) ; - choisit le statut (généralement
inactiveau départ, le temps de la revue), puis enregistre l'intégration.
5. Récupérer le webhook_secret
ShopiMind vous communique le webhook_secret généré. Reportez-le dans la variable d'environnement WEBHOOK_SECRET de votre intégration : c'est avec ce secret que le kit vérifie la signature de chaque webhook entrant (voir Cycle de vie & webhooks).
# .env de l'intégration
WEBHOOK_SECRET=whsec_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxGardez le secret côté serveur
Le webhook_secret est un secret partagé. Il ne doit jamais apparaître dans un dépôt public, un journal, ou côté client.
Mettre à jour une intégration
Quand votre intégration évolue (nouveau champ de config, nouveau widget, nouvelle version) : régénérez le manifeste (yarn print:manifest) et renvoyez-le à dev@shopimind.com. Le slug identifie votre intégration ; l'enregistrement est mis à jour. Votre webhook_secret reste inchangé.
Pour aller plus loin
- Cycle de vie & webhooks — comment le
webhook_secretest utilisé. - Configuration & Widgets — ce qui alimente le manifeste.
- Exemple complet (Hiboutik) — du code au manifeste.