Ir para a documentação
SparkGlimSparkGlim Programadores
Pesquisar em toda a documentação

Experimente um tema na sua língua ou um caminho API exato.

    Guias de integração

    Adicionar membros pelo percurso Revendedor real

    Use sessão e relação de equipa existentes sem inventar uma API de registo de criadores.

    Antes de começar

    • Sessão de operador Revendedor aprovado com gestão de membros permitida.
    • Contrato separado do portal; não se aplicam chaves Organização nem acesso público.
    • Autorização explícita para um membro de teste controlado, sem registos ou mensagens reais automáticos.
    01

    Ler o contexto da conta

    No servidor use GET /api/white-label/portal/reseller com a sessão Bearer existente. Server resolve conta e permissões; um token do visitante não escolhe um papel administrativo.

    Mantenha sessões privadas e no-store. Ler um perfil não autoriza qualquer membro nem outra conta.

    Pedido ilustrativo com valores de exemplo
    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 suportado

    POST /api/white-label/portal/reseller/members aceita displayName, contacto, memberType e relações permitidas. O exemplo evita owner e elevação de permissões e só atua com teste explicitamente autorizado.

    Server usa a equipa Criador e conserva a relação Revendedor separada. A antiga /invitations devolve 410. Não invente criação direta de criadores nem ative contas não aprovadas.

    Pedido ilustrativo com valores de exemplo
    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 no acesso de equipa

    Use o resultado real e o percurso normal de perfil, verificação e entrada de organizador/equipa. Estado, OTP, campanhas e permissões ficam no servidor.

    Trate 401, recusas e validação honestamente. Um registo devolvido não garante um membro ativo; consulte o estado e as rotas existentes.

    Verifique a sua integração

    • Verificar leitura autorizada e recusa de chamadas não autorizadas.
    • Preservar limites e permissões sem chaves Organização ou convites obsoletos.