Guides d’intégration
Ajouter un membre dans le vrai parcours Revendeur
Utilisez session et relation d’équipe existantes sans inventer une API d’inscription de créateurs.
Avant de commencer
- Session d’un opérateur Revendeur approuvé avec permission de gestion des membres.
- Contrat du portail Revendeur distinct des clés Organisation et des API publiques.
- Autorisation explicite pour un membre de test contrôlé ; aucun enregistrement ou message réel automatique.
Lire le contexte du compte
Depuis votre serveur, utilisez GET /api/white-label/portal/reseller avec la session Bearer existante. Le serveur résout le compte et les droits ; un jeton fourni par un visiteur ne définit pas un rôle administrateur.
Gardez les sessions privées et no-store. Lire un profil ne permet pas toute création de membre ni l’accès à un autre compte.
export async function readResellerProfile(sessionToken: string) {
const response = await fetch('https://api.sparkglim.net/api/white-label/portal/reseller', {
headers: { Authorization: 'Bearer ' + sessionToken, Accept: 'application/json' },
cache: 'no-store', signal: AbortSignal.timeout(15000)
});
const payload = await response.json();
if (!response.ok || payload.success !== true) throw new Error(payload.error || 'Reseller access denied');
return payload.data;
}Préparer la demande add-member
POST /api/white-label/portal/reseller/members accepte les champs pertinents displayName, contact, memberType et relations autorisées. L’exemple inactif évite owner et élévation de permissions ; il attend un test autorisé explicite.
Le serveur utilise l’équipe Créateur et conserve le lien Revendeur distinct. L’ancien /invitations renvoie 410. N’inventez pas de création directe de créateur et n’activez pas un compte non approuvé.
type MemberInput = { displayName: string; email?: string; phone?: string; memberType: 'sub_creator' | 'operator' | 'finance' | 'support' };
export async function addApprovedTestMember(sessionToken: string, input: MemberInput, approvedTest: boolean) {
if (!approvedTest) throw new Error('Approved test member required');
const response = await fetch('https://api.sparkglim.net/api/white-label/portal/reseller/members', {
method: 'POST', headers: { Authorization: 'Bearer ' + sessionToken, 'Content-Type': 'application/json' },
body: JSON.stringify(input), cache: 'no-store', signal: AbortSignal.timeout(15000)
});
const payload = await response.json();
if (response.status !== 201 || payload.success !== true) throw new Error(payload.error || 'Member not created');
return payload.data;
}Continuer par l’accès d’équipe existant
Suivez le résultat réel puis le parcours normal de profil, vérification et connexion organisateur/équipe. Statut, OTP, campagnes et droits restent sous contrôle serveur.
Traitez 401, refus et validation honnêtement. Un enregistrement retourné ne garantit pas un membre actif ; consultez le statut réel et l’accès d’équipe existant.
Vérifier votre intégration
- Vérifier lecture autorisée et refus des appelants non autorisés.
- Préserver frontières et permissions ; aucune clé Organisation ni ancienne route d’invitation.