Kit d'Intégration & Spécification SDK DGS

Kit d'Intégration & Protocole DGS Connector v1.0

Documentation officielle pour connecter les produits de l'écosystème DGS (§6)

Spécification OpenAPI Swagger

Identités Dédiées M2M

Chaque produit dispose de son propre couple Client ID / Client Secret révocable et renouvelable indépendamment.

Contrôle Côté Serveur

Aucun droit n'est basé sur le navigateur. Les vérifications d'abonnements et de quotas sont effectuées serveur-à-serveur.

Télémétrie & Heartbeat

Les applications signalent périodiquement leur état opérationnel et leur version au centre de contrôle.

1. Variables d'environnement pour l'application connectée (.env)
DGS_CENTRAL_URL="https://central.digitalgreensolution.com"
DGS_CLIENT_ID="client_dgs-mon-produit_a1b2c3d4"
DGS_CLIENT_SECRET="dgs_sec_7a2b9f..."
DGS_TECHNICAL_ID="dgs-mon-produit"
DGS_APP_VERSION="1.0.0"
2. Initialisation du client DGS Connector et démarrage du Heartbeat
import { DgsConnectorClient } from '@digitalgreensolution/connector';

export const dgsClient = new DgsConnectorClient({
  centralUrl: process.env.DGS_CENTRAL_URL!,
  clientId: process.env.DGS_CLIENT_ID!,
  clientSecret: process.env.DGS_CLIENT_SECRET!,
  technicalId: process.env.DGS_TECHNICAL_ID!,
  appVersion: process.env.DGS_APP_VERSION || '1.0.0',
});

// Envoie un battement de coeur automatique toutes les 5 minutes
dgsClient.startHeartbeatDaemon(5);
3. Contrôle des droits d'abonnement côté serveur (Entitlements)
// Vérifie que l'organisation cliente dispose d'un abonnement valide
const entitlement = await dgsClient.verifyEntitlement('ORG-DGS-001', 'FEATURE_EXPORT_OHADA');

if (!entitlement.entitled) {
  throw new ForbiddenException(`Accès refusé par DGS Control Center : ${entitlement.reason}`);
}

console.log(`Abonnement actif : ${entitlement.planName} (Max ${entitlement.maxUsers} utilisateurs)`);
4. Validation d'une session SSO DGS pour un utilisateur
const token = req.headers.authorization?.split(' ')[1];
const verifyResult = await dgsClient.verifyUserToken(token);

if (!verifyResult.valid) {
  throw new UnauthorizedException('Session SSO DGS invalide ou expirée');
}

const user = verifyResult.user;
console.log(`Utilisateur connecté : ${user.email} (Rôles : ${user.roles.join(', ')})`);