Ir a la documentación
SparkGlimSparkGlim Desarrolladores
Buscar en toda la documentación

Prueba un tema en tu idioma o una ruta API exacta.

    Guías de integración

    Añadir miembros mediante el flujo Revendedor real

    Use sesión y relación de equipo existentes sin inventar una API de registro de creadores.

    Antes de empezar

    • Sesión de operador Revendedor aprobado con gestión de miembros permitida.
    • Contrato separado del portal; no corresponde usar claves Organización ni acceso público.
    • Autorización explícita para un miembro de prueba controlado, sin registros o mensajes reales automáticos.
    01

    Leer el contexto de la cuenta

    Desde su servidor use GET /api/white-label/portal/reseller con la sesión Bearer existente. Server resuelve cuenta y permisos; un token de visitante no selecciona un rol administrador.

    Mantenga sesiones privadas y no-store. Leer un perfil no autoriza todo tipo de miembro ni otra cuenta.

    Solicitud ilustrativa con valores de ejemplo
    typescript
    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;
    }
    02

    Preparar add-member compatible

    POST /api/white-label/portal/reseller/members admite displayName, contacto, memberType y relaciones permitidas. El ejemplo evita owner y escalada de permisos y solo actúa al llamarse con prueba autorizada.

    Server usa el equipo Creador y conserva la relación Revendedor separada. La antigua /invitations devuelve 410. No invente creación directa de creadores ni active cuentas sin aprobar.

    Solicitud ilustrativa con valores de ejemplo
    typescript
    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;
    }
    03

    Continuar en el acceso de equipo

    Use el resultado real y el flujo normal de perfil, verificación e inicio de sesión de organizador/equipo. Estado, OTP, campañas y permisos quedan en el servidor.

    Gestione 401, rechazos y validación honestamente. Un registro devuelto no garantiza un miembro activo; revise el estado y las rutas existentes.

    Compruebe su integración

    • Comprobar lectura autorizada y rechazo de llamadas no autorizadas.
    • Mantener límites y permisos sin claves Organización ni invitaciones obsoletas.