Sandbox

O sandbox é o ambiente de testes do Lumen. É nele que você desenvolve e valida a sua integração do começo ao fim, com chaves de teste, escolas cheias de dados de demonstração e acesso ao sistema web como a própria escola, sem nenhum risco para os dados reais. Nada do que acontece no sandbox chega à produção ou a pessoas reais.

Endereço do sandbox

https://sandbox.lumenerp.app.br

Como o sandbox funciona

O sandbox é uma instância separada do Lumen, com banco de dados, filas, rotinas automáticas e arquivos próprios. Ele roda sempre a mesma versão da produção, então os endpoints, as validações e o formato das respostas são idênticos: o código que funciona no sandbox funciona em produção trocando só as credenciais.

Serviço Endereço
API https://sandbox.lumenerp.app.br/api/v1
Sistema web https://sandbox.lumenerp.app.br
Caixa de saída https://sandbox.lumenerp.app.br/sandbox/caixa-de-saida (com login)
Portal do Parceiro Só em produção. Chaves, clientes de teste, webhooks e logs do sandbox são gerenciados no portal.
  • Só chaves de teste (lmn_test_…) funcionam no sandbox, e só nos clientes de teste do seu app. Nenhum outro parceiro vê os seus dados, e você não vê os deles.
  • Filas e rotinas agendadas rodam como em produção: processamento de faltas, alertas, lembretes, PDFs e demais tarefas em segundo plano acontecem de verdade, e geram os mesmos webhooks.
  • Toda resposta traz o cabeçalho X-Lumen-Environment: test. Use-o para confirmar em qual ambiente a sua integração está falando.
  • Os dados ficam como você deixou: não há limpeza automática. Para voltar ao estado inicial, use "Recriar dados" (veja Limites e regras).

Preparando o ambiente

Tudo é feito por você, no Portal do Parceiro, em poucos minutos e sem depender de aprovação.

  1. 1

    Crie a conta e o app

    Cadastre-se no portal, confirme o e-mail e crie um app. Todo app nasce no status Sandbox.

  2. 2

    Gere uma chave de teste

    Na aba Credenciais do app, gere uma chave lmn_test_… e guarde-a: ela é exibida uma única vez. Ela vai no cabeçalho X-Partner.

  3. 3

    Crie os clientes de teste

    Ainda na aba Credenciais, clique em "Criar cliente" no cartão Rede privada e/ou Rede pública (SEDUC). Em alguns segundos o cartão mostra o endereço da API, o X-Client, o X-Authorization, o CNPJ da escola e o login no sistema. A senha do login aparece uma única vez.

  4. 4

    Configure o endpoint de teste dos webhooks

    Na aba Webhooks, informe o Endpoint de teste e os eventos que quer receber. Tudo o que acontece nos seus clientes de teste é entregue ali.

  5. 5

    Faça a primeira chamada

    Chame a API do sandbox com a chave, o X-Client e o X-Authorization do cliente de teste. Use o quadro Dados de teste para preencher os parâmetros dos endpoints.

  6. 6

    Entre no sistema como a escola

    Clique em "Entrar no sandbox" no cartão do cliente para abrir o sistema web já logado como a rede de ensino, e use-o como a escola usaria.

Clientes de teste

Cada app pode ter até dois clientes de teste: uma rede privada e uma rede pública (SEDUC). Os dois são criados pelo mesmo processo de implantação de um cliente real, com uma escola, o Colégio Demonstração, com CNPJ próprio e dados de demonstração. Crie o tipo que corresponde aos clientes que vão usar a sua integração, ou os dois, se ela atende ambos.

Rede privada

Escola particular. Tem todos os módulos pedagógicos e de gestão da referência da API, com dados também nos que existem só na rede privada: Financeiro (contratos de matrícula) e CRM de Prospecção.

Rede pública (SEDUC)

Secretaria de Educação, com os módulos de uma rede pública, inclusive o Orçamento Público (endpoints budget/*). Módulos que só existem num tipo de rede (Financeiro/contratos e CRM na privada; Orçamento Público na pública) respondem sem dados no cliente do outro tipo.

O que o cartão do cliente mostra

API Endereço base da API do sandbox.
X-Partner O prefixo da sua chave de teste. A chave completa você guardou quando a gerou.
X-Client Slug do cliente de teste.
X-Authorization Token do cliente de teste. Diferente da produção, ele fica visível no portal enquanto o cliente existir.
CNPJ da escola O valor do parâmetro {cnpj} dos endpoints por escola.
Login no sistema E-mail do usuário principal da rede, para entrar no sistema web do sandbox.

Dados de teste

O Colégio Demonstração já vem com dados em todos os módulos da referência da API: turmas, alunos, responsáveis, professores, horários, aulas, notas, frequência, diário de classe, conselho de classe, ocorrências, fotos e os módulos de ERP. Todo endpoint GET documentado devolve dados desde o primeiro dia.

Para não ter de procurar IDs, abra o quadro Dados de teste no cartão do cliente. Ele traz um valor pronto para cada parâmetro de caminho:

{cnpj} {classroom_id} {enrollment_number} {cpf} {student_id} {enrollment_id} {lesson_id} ?date= {entry_id} {score_id} {gradeId} {subjectId} {school_year_id} {event} {goal} {contract} {title} {copy} {loan} {onlineCourse} {exerciseGroup} {opportunity} {preenrollment} {visit}
  • Os valores se encaixam entre si: a turma é a que tem mais dados, o aluno está matriculado nela, o CPF é do responsável dele e a data é de uma aula com frequência e plano de aula registrados.
  • O quadro também traz o ID de um registro de cada recurso endereçado por {id} (turma, professor, disciplina, ano letivo, aviso da agenda, aula, conselho de classe, ocorrência disciplinar, portão, espaço físico…). Parâmetros nomeados como {event} e {contract} aparecem junto com os demais. Valores de módulos que o tipo de rede não tem (contrato e CRM na rede pública, por exemplo) não aparecem.
  • Os valores são lidos na hora em que você abre o quadro, então acompanham o que você alterou ou excluiu.
  • Os dados são fictícios. Nunca cadastre dados reais de alunos, responsáveis ou funcionários no sandbox.

Chamando a API do sandbox

Guarde o endereço da API e as três credenciais em variáveis de ambiente, nunca no código. Assim, ir para a produção é só trocar a configuração. Este exemplo busca a frequência de um dia da turma de demonstração, com os valores do quadro Dados de teste:

.env da sua integração (ambiente de desenvolvimento)
LUMEN_API_URL=https://sandbox.lumenerp.app.br/api/v1
LUMEN_KEY=lmn_test_{sua_chave}
LUMEN_CLIENT={X-Client do cliente de teste}
LUMEN_TOKEN={X-Authorization do cliente de teste}
curl "$LUMEN_API_URL/partners/school/{cnpj}/classroom/{classroom_id}/attendance/day?date={date}" \
  -H "X-Partner: $LUMEN_KEY" \
  -H "X-Client: $LUMEN_CLIENT" \
  -H "X-Authorization: $LUMEN_TOKEN"

Substitua {cnpj}, {classroom_id} e {date} pelos valores do quadro Dados de teste.

Usando o sistema web

O sandbox tem o sistema web completo do Lumen. Use-o para fazer, como a escola, o que vai disparar a sua integração, e para conferir na tela o que a sua integração gravou pela API.

Entrar no sandbox

O botão no cartão do cliente abre o sistema já logado como o usuário principal da rede de ensino, com todas as permissões. O link vale uma única vez e por 5 minutos; clique de novo quando precisar.

Login com e-mail e senha

Você também pode entrar direto em sandbox.lumenerp.app.br com o e-mail do cartão e a senha exibida ao criar o cliente. Se perdê-la, use "Gerar nova senha".

Outros perfis

Cadastre secretários, coordenadores, professores, inspetores e demais funcionários pelo cadastro normal do sistema. A senha de cada novo usuário chega na Caixa de saída, e você pode entrar com ele para testar o que aquele perfil vê e faz.

Portais do Responsável e do Aluno

Os portais web do Responsável e do Aluno também funcionam no sandbox. Os aplicativos móveis do Lumen não se conectam ao sandbox.

Caixa de saída e serviços simulados

Nada sai do sandbox para o mundo real. Os serviços externos que o Lumen usa em produção são capturados ou simulados, sem custo e sem risco de atingir pessoas reais.

Em produção No sandbox
E-mail, SMS, WhatsApp e push Vão para a Caixa de saída. Com o sistema aberto, o botão amarelo "Ambiente sandbox · Caixa de saída", no canto da tela, leva até ela. Cada cliente vê só as próprias mensagens, com filtro por canal e busca por destinatário.
Cobranças (Asaas) Simuladas. O link de uma cobrança abre uma página do sandbox onde você clica em "Simular pagamento". A escola recebe a confirmação como receberia do Asaas, e os webhooks de pagamento são enviados.
Assinatura eletrônica (Assinafy) Simulada. O link de assinatura abre uma página do sandbox onde você clica em "Assinar documento". A assinatura é registrada e o fluxo segue como em produção.
Correções e relatórios com IA Respostas fixas, geradas sem custo. Servem para testar o fluxo, não a qualidade do texto.
Catracas, câmeras, agregador bancário e integrações de terceiros Desligados. Qualquer outra chamada externa é bloqueada.
Webhooks para o seu app Enviados de verdade para o seu endpoint de teste. É a única coisa que sai do sandbox.

Webhooks no sandbox

O endpoint de teste recebe todos os eventos dos seus clientes de teste, qualquer que seja a origem: uma chamada da sua integração à API, uma ação feita no sistema web ou uma rotina automática. Isso permite testar o caminho de volta, quando a escola faz algo e a sua integração precisa reagir.

  • As entregas têm o mesmo formato e a mesma assinatura da produção, com "environment": "test" e "client" com o slug do cliente de teste. Veja como validar a assinatura.
  • O endpoint precisa ser público. Endereços como localhost, domínios .local/.test e IPs de rede privada são recusados. Para receber na sua máquina, use um túnel público (ngrok, Cloudflare Tunnel ou similar).
  • Mudanças no endpoint de teste, nos eventos escolhidos ou no segredo chegam ao sandbox em poucos segundos.
  • Na aba Webhooks do portal você envia eventos de teste, vê o histórico de entregas e reenvia uma entrega, o que serve para testar se a sua integração descarta repetições pelo webhook-id.

Roteiro para validar a integração

Antes de pedir a aprovação para produção, percorra no sandbox todos os caminhos que a sua integração vai usar. Este roteiro cobre o que a equipe Lumen avalia na revisão do app.

1

Leitura

Chame cada endpoint GET que a integração usa, com os valores do quadro Dados de teste, e confira que a paginação e todos os campos são tratados (inclusive os que podem vir nulos).

2

Escrita

Crie, edite e exclua pela API e confira o resultado no sistema web, entrando como a escola. Provoque erros de validação (422) e confira que a sua integração mostra a mensagem certa.

3

Caminho de volta

Faça no sistema web, como secretário ou professor, as ações que a integração precisa acompanhar (cadastro de aluno, frequência, nota, pagamento…) e confira que o webhook chega e é processado.

4

Webhooks robustos

Valide a assinatura, rejeite timestamps antigos, descarte repetições pelo webhook-id e responda rápido (2xx), processando em segundo plano. Reenvie entregas pelo portal para testar.

5

Erros e limites

Trate 401, 403, 404, 422 e 429. O limite do sandbox (60 requisições por minuto) é menor que o da produção, então ele ajuda a encontrar rajadas: respeite Retry-After e os cabeçalhos X-RateLimit-*.

6

Rede pública

Se a integração atende redes públicas, rode tudo também no cliente da rede pública. Módulos que só existem num tipo de rede (Financeiro/contratos e CRM na privada; Orçamento Público na pública) respondem sem dados no cliente do outro tipo.

7

Plano sem ERP

Desligue a chave Gestão Escolar (ERP) no cartão do cliente e confira que a integração trata o ERP_REQUIRED dos módulos ERP, como acontece com escolas do plano simplificado em produção.

8

Logs

Confira na aba Logs do portal as chamadas feitas, com status e duração, para achar erros e requisições repetidas sem necessidade.

Limites e regras

Requisições 60 por minuto, contadas por app.
Chaves de teste Até 5 por app. Use uma por máquina ou servidor de homologação, para saber qual revogar se uma vazar.
Clientes de teste Um da rede privada e um da rede pública por app.
Persistência Os dados ficam como você deixou, sem limpeza automática.
Recriar dados Apaga o cliente e tudo o que você cadastrou nele, e cria um novo com os dados de demonstração. X-Client, X-Authorization, CNPJ e login mudam; os antigos param de funcionar na hora.
Gestão Escolar (ERP) Chave no cartão de cada cliente. Desligada, o cliente passa ao plano simplificado: os módulos ERP somem do sistema web e respondem 403 com "code": "ERP_REQUIRED" na API. Os dados de demonstração continuam lá e voltam ao religar. O plano escolhido é mantido ao recriar os dados.
App suspenso Enquanto o app ou a conta estiver suspenso, as chaves de teste também respondem 403.
Excluir o app Os clientes de teste do app são desativados junto com as chaves.
Dados pessoais Use só dados fictícios. O sandbox não é lugar para dados reais de alunos, responsáveis ou funcionários.

Erros comuns no sandbox

Além dos erros gerais da API e dos erros de acesso do portal:

Status Resposta O que fazer
403 "code": "SANDBOX_HOST" Chave de teste enviada para a produção. Aponte a integração para https://sandbox.lumenerp.app.br/api/v1.
403 Production keys (lmn_live_) do not work in the sandbox. … Chave de produção enviada para o sandbox. Use uma chave lmn_test_.
401 Only Portal do Parceiro test keys (lmn_test_) work in the sandbox. Credenciais de parceiro antigas não funcionam no sandbox. Crie um app no portal e use a chave de teste dele.
401 Unauthorized. X-Client e X-Authorization não são de um cliente de teste ativo do seu app. Copie de novo do cartão do cliente (eles mudam ao recriar os dados).
404 CNPJ not found. O {cnpj} não é de uma escola desse cliente. Use o CNPJ do cartão ou do quadro Dados de teste.
403 "code": "ERP_REQUIRED" Módulo do plano Gestão Escolar (ERP) chamado num cliente com a chave Gestão Escolar (ERP) desligada. Comportamento esperado; trate-o na integração.

Do sandbox para a produção

Com o roteiro validado, peça a aprovação na aba Visão geral do app. Depois da aprovação e da liberação de cada cliente (veja Portal do Parceiro), troque só a configuração. O código da integração não muda.

Sandbox Produção
LUMEN_API_URL https://sandbox.lumenerp.app.br/api/v1 https://lumenerp.app.br/api/v1
LUMEN_KEY lmn_test_… lmn_live_…
LUMEN_CLIENT Slug do cliente de teste (aba Credenciais) Slug do cliente (aba Clientes)
LUMEN_TOKEN Token do cliente de teste (aba Credenciais) Token da conexão, lmn_conn_… (aba Clientes)
Webhooks Endpoint de teste Endpoint de produção

Em produção, as ações têm efeitos reais: mensagens chegam a responsáveis e funcionários, e cobranças são emitidas. Mantenha o sandbox para testar cada mudança da integração antes de publicá-la.