Documentation

Business Core expose un modèle métier piloté par les données. Déclarez vos types, offres et règles, puis exécutez vos opérations — le tout au-dessus du Kernel.

Cette page est un aperçu. Le guide complet — parcours pas à pas, référence détaillée et dépannage — est disponible dans votre console une fois connecté.

Démarrage rapide

Créez votre compte, connectez-vous, modélisez un type métier, créez une application, puis générez sa clé API. La base d'URL est configurable via NEXT_PUBLIC_API_BASE_URL.

inscription.sh
bash
# 1. Créer votre compte développeur (public) — toujours sur le plan gratuit
curl -X POST $API/v1/registration \
  -H "Content-Type: application/json" \
  -d '{ "firstName": "Miguel", "lastName": "Techlan",
        "email": "dev@exemple.com", "password": "••••••",
        "entreprise": "Techfast Technologies" }'

# → { "plan": "FREE", "message": "Compte créé. Vérifiez votre email…" }
login.sh
bash
# 2. Vérifiez votre e-mail (lien envoyé par le Kernel), puis connectez-vous
curl -X POST $API/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{ "principal": "dev@exemple.com", "password": "••••••" }'

# → { "accessToken": "eyJ...", "owner": true }

Authentification

Deux voies, deux périmètres strictement séparés :

  • JWT développeur (Authorization: Bearer) — toute la conception : types métier, versions, applications, clés API, tableau de bord.
  • Clé API (X-BC-Client-Id, votre developerId obtenu via GET /v1/auth/me, et X-BC-Api-Key, le secret de l'application) — l'exécution uniquement : opérations, traces, transactions, acteurs, synchronisation.

Une clé API ne peut jamais créer de type métier, d'application ni d'autre clé : c'est volontaire, une clé compromise ne doit pas permettre d'administrer la plateforme.

appel-machine.sh
bash
# Appel machine-à-machine : surface d'exécution uniquement
curl -X POST "$API/v1/businesses/<applicationId>/operations/vente:execute" \
  -H "X-BC-Client-Id: <developerId>" \
  -H "X-BC-Api-Key: <apiKey>" \
  -H "Content-Type: application/json" \
  -d '{ "parametres": { "quantite": 2 } }'

Référence API

Les endpoints exposés par le backend, avec le mode d'authentification exigé par chacun.

Conception — depuis la console (JWT)

Compte & session

POST/v1/registrationPublic
Créer un compte développeur (firstName, lastName, email, password, entreprise, planCode?)
POST/v1/auth/loginPublic
Se connecter → { accessToken, authorities, organisations, owner }
GET/v1/auth/meJWT
Profil courant → { tenantId, actorId, permissions, owner, developerId, email, plan, entrepriseNom }
GET/v1/dashboardJWT
Tableau de bord : usage, opérations les plus appelées, activité récente
GET/v1/dashboard/sparklineJWT
Série temporelle courte pour le graphique d'usage
GET/v1/requetesJWT
Journal des requêtes reçues (onglet Audit)

Entreprise du développeur

GET/v1/enterprise/statusJWT
État : DEFINIE, CHOIX_REQUIS (options existantes) ou NOM_REQUIS
POST/v1/enterprise/selectJWT
Rattacher une organisation déjà possédée ({ organizationId, nom })
POST/v1/enterprise/provisionJWT
Créer une organisation neuve pour ce nom ({ nom })

Plans & facturation

GET/v1/plansPublic
Catalogue des plans et de leurs quotas
POST/v1/plan/upgradeJWT
Demander un changement de plan → EN_ATTENTE + urlPaiement
POST/v1/plan/finalizeJWT
Vérifier le paiement en attente et activer le plan si confirmé

Types métier

POST/v1/business-typesJWT
Créer un type ({ code, nom, domainCode?, domainNom? })
GET/v1/business-typesJWT
Lister vos types métier
GET/v1/business-types/{typeId}JWT
Consulter un type
POST/v1/business-types/{typeId}/publishJWT
Publier le type (BROUILLON → PUBLIE)
POST/v1/business-types/{typeId}/archiveJWT
Archiver le type
POST/v1/business-types/{typeId}/versionsJWT
Créer une nouvelle version
GET/v1/business-types/{typeId}/versionsJWT
Lister les versions
GET/v1/business-types/{typeId}/versions/{n}JWT
Consulter une version
POST/v1/business-types/{typeId}/versions/{n}/publishJWT
Publier la version (la fige : elle devient immuable)
GET/v1/business-types/{typeId}/versions/{n}/configJWT
Lire les paramètres de configuration de la version
POST/v1/business-types/{typeId}/versions/{n}/configJWT
Définir un paramètre de configuration

Contenu d'une version

POST/v1/business-types/{typeId}/versions/{n}/offersJWT
Déclarer une offre ({ nom, formePrix, prix?, capacites? })
GET/v1/business-types/{typeId}/versions/{n}/offersJWT
Lister les offres
GET/v1/business-types/{typeId}/versions/{n}/offers/{offerId}JWT
Consulter une offre
PUT/v1/business-types/{typeId}/versions/{n}/offers/{offerId}JWT
Modifier une offre
DELETE/v1/business-types/{typeId}/versions/{n}/offers/{offerId}JWT
Supprimer une offre
POST/v1/business-types/{typeId}/versions/{n}/rolesJWT
Déclarer un rôle ({ code, categorie: OPERATEUR | BENEFICIAIRE })
GET/v1/business-types/{typeId}/versions/{n}/rolesJWT
Lister les rôles
PUT/v1/business-types/{typeId}/versions/{n}/roles/{roleId}JWT
Modifier un rôle
DELETE/v1/business-types/{typeId}/versions/{n}/roles/{roleId}JWT
Supprimer un rôle
POST/v1/business-types/{typeId}/versions/{n}/rulesJWT
Déclarer une règle ({ declencheur, condition, effet, rolesAutorisesADeroger? })
GET/v1/business-types/{typeId}/versions/{n}/rulesJWT
Lister les règles de la version
GET/v1/business-types/{typeId}/versions/{n}/rules/{ruleId}JWT
Consulter une règle
PUT/v1/business-types/{typeId}/versions/{n}/rules/{ruleId}JWT
Modifier une règle
DELETE/v1/business-types/{typeId}/versions/{n}/rules/{ruleId}JWT
Supprimer une règle
POST/v1/business-types/{typeId}/versions/{n}/operationsJWT
Déclarer une opération et ses étapes de saga

Applications

POST/v1/applicationsJWT
Créer une application ({ typeId, versionNumber, nom })
GET/v1/applicationsJWT
Lister vos applications
GET/v1/applications/{id}JWT
Consulter une application
PUT/v1/applications/{id}JWT
Renommer une application
DELETE/v1/applications/{id}JWT
Archiver une application
POST/v1/applications/{id}/approveJWT
Approuver l'organisation rattachée
PUT/v1/applications/{id}/lifecycleJWT
Changer le cycle de vie (ACTIVE | SUSPENDUE | FERMEE)
GET/v1/applications/{id}/contractJWT
Lire le contrat technique (URLs de callback/retour)
PUT/v1/applications/{id}/contractJWT
Définir callbackUrl, successUrl, errorUrl, cancelUrl
GET/v1/applications/{id}/profileJWT
Lire le profil (description, logo, couleur…)
PUT/v1/applications/{id}/profileJWT
Mettre à jour le profil
GET/v1/applications/{id}/configJWT
Lire la configuration effective de l'application
PUT/v1/applications/{id}/config/{cle}JWT
Surcharger un paramètre pour cette application

Clés API

POST/v1/applications/{id}/api-keysJWT
Créer la clé → { id, apiKey, name, entrepriseId }. 409 si une clé est déjà active
GET/v1/applications/{id}/api-keysJWT
Consulter la clé active — métadonnées ET secret (apiKey null pour les clés créées avant le stockage chiffré)
PATCH/v1/applications/{id}/api-keysJWT
Renommer la clé active
POST/v1/applications/{id}/api-keys:revokeJWT
Révoquer la clé (effet immédiat)

Acteurs & règles locales d'une application

POST/v1/businesses/{id}/actorsJWT
Rattacher une identité kernel déjà connue à un rôle
GET/v1/businesses/{id}/actorsJWT
Lister les acteurs de l'application
GET/v1/businesses/{id}/actors/{actorId}JWT
Consulter un acteur
PUT/v1/businesses/{id}/actors/{actorId}JWT
Modifier un acteur (rôle, état)
DELETE/v1/businesses/{id}/actors/{actorId}JWT
Détacher un acteur
POST/v1/businesses/{id}/rulesJWT
Ajouter une règle propre à cette application
GET/v1/businesses/{id}/rulesJWT
Lister les règles locales
GET/v1/businesses/{id}/rules/{ruleId}JWT
Consulter une règle locale
PUT/v1/businesses/{id}/rules/{ruleId}JWT
Modifier une règle locale
DELETE/v1/businesses/{id}/rules/{ruleId}JWT
Supprimer une règle locale

Exécution — depuis votre backend (clé API)

Identité de l'application

GET/v1/businesses/meJWT ou clé API
L'application à laquelle la clé est scopée

Authentification des acteurs métier

POST/v1/businesses/{id}/actors:registerClé API
Inscrire un acteur ({ roleMetierId, email, password, firstName, lastName }) — rôle OPERATEUR requis
POST/v1/businesses/{id}/actors:loginClé API
Connecter un acteur ({ principal, password }) → JWT acteur + contexte métier
GET/v1/businesses/{id}/actors/meJWT acteur
Contexte de l'acteur porteur du JWT acteur

Opérations

GET/v1/businesses/{id}/operationsJWT ou clé API
Lister les opérations disponibles
GET/v1/businesses/{id}/operations/{name}JWT ou clé API
Consulter une opération par son nom
POST/v1/businesses/{id}/operations/{name}:executeJWT ou clé API
Exécuter → 200 COMPLETEE, 202 EN_COURS (différée), 422 si règle bloquante. En-tête Idempotency-Key accepté

Suivi & historique

GET/v1/businesses/{id}/tracesJWT ou clé API
Lister les traces d'exécution
GET/v1/businesses/{id}/traces/{traceId}JWT ou clé API
Suivre une opération différée (EN_COURS | COMPLETEE | COMPENSEE)
GET/v1/businesses/{id}/transactionsJWT ou clé API
Historique des transactions
GET/v1/businesses/{id}/transactions/{billId}JWT ou clé API
Détail d'une transaction
GET/v1/businesses/{id}/orders/{orderId}JWT ou clé API
Détail d'une commande

Synchronisation & télémétrie

GET/v1/sync?since={curseur}&limit={n}JWT ou clé API
Changements depuis un curseur ; since=0 rejoue tout. Repassez versionCourante au tour suivant
POST/v1/telemetry/requestsJWT ou clé API
Remonter les requêtes de votre application (jamais facturé, jamais bloqué par le quota)

Format d'erreur

Les erreurs suivent la norme RFC 7807 (application/problem+json), enrichies de champs métier (violatedRule, requiredAction…).

erreur.http
http
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/problem+json

{
  "type": "about:blank",
  "title": "Règle métier violée",
  "status": 422,
  "detail": "Un document ordonnance est requis pour cette vente.",
  "violatedRule": "ORDONNANCE_REQUISE"
}

Aller plus loin

Guide pas à pas, gestion des clés, intégration de votre backend et dépannage complet : tout est dans la documentation de votre console.

Créer un compte gratuit