šŸŽ“ InscriƧƵes

You are absolutely right. Looking at the validateUserAndGroupInOrg method in your service, it explicitly calls addGroups and addUsers if they are missing from the Org. This is a side effect that the API consumer must be aware of, as it changes the state of the User/Group relationships, not just the Enrollment.

Here is the updated documentation with a clearer warning about this auto-association behavior.


Esta seção permite inscrever ou remover usuÔrios de grupos (também chamados de turmas ou conteúdos) dentro da plataforma.
As inscrições determinam quais usuÔrios têm acesso aos conteúdos da sua escola.


šŸ“Œ Funcionalidades disponĆ­veis

MétodoEndpointDescrição
GET/enrollmentsLista inscrições existentes com paginação
POST/enrollmentsInscreve um usuƔrio em um grupo
DELETE/enrollmentsExpira (remove) a inscrição de um usuÔrio em um grupo

šŸ” Autenticação e CabeƧalhos

Todas as requisiƧƵes exigem um token de API vƔlido no cabeƧalho:

Authorization: Bearer {SEU_TOKEN_AQUI}
X-Requested-With: XMLHttpRequest
Content-Type: application/json
šŸ”’

O token Ć© exclusivo por plataforma e deve ser gerado previamente pelo administrador.


šŸ“– Listar inscriƧƵes (GET /enrollments)

Retorna uma lista paginada de inscrições existentes, conforme o **recurso InscriptionIndexResource**. Agora inclui dados da organização.

šŸ” ParĆ¢metros de Query

CampoTipoObrigatórioPadrãoDescrição
orgintegerāŒ-ID da Organização (filial) para filtrar.
pageintegerāŒ1NĆŗmero da pĆ”gina.
per_pageintegerāŒ15Quantidade de itens por pĆ”gina.

šŸ’” Exemplo de requisição

GET https://sua-plataforma.ensinio.cloud/public/api/v1/enrollments?org=1&page=1&per_page=15

āœ… Exemplo de resposta

{
  "data": [
    {
      "id": 501,
      "group": {
        "id": 12,
        "name": "Curso Completo de Marketing"
      },
      "user": {
        "id": 9001,
        "first_name": "Ana",
        "last_name": "Silva",
        "email": "[email protected]",
        "phone": "+55 11 99999-0000"
      },
      "org": {
        "id": 1,
        "name": "Filial SĆ£o Paulo"
      },
      "completion_rate": 0.92,
      "inscription_date": "2025-03-01",
      "expiration_date": "2026-03-01"
    }
  ],
  "links": { ... },
  "meta": { ... }
}

šŸ“ Criar inscrição (POST /enrollments)

Inscreve um usuƔrio jƔ existente em um grupo/turma da plataforma.

āš ļø

Atenção ao uso do parâmetro org:

Caso você envie o ID de uma organização e o usuÔrio ou o grupo ainda não pertençam a ela, o sistema irÔ adicionÔ-los automaticamente à organização antes de criar a inscrição.

šŸ“¦ ParĆ¢metros esperados (Body JSON)

CampoTipoObrigatórioDescrição
orgintegerāŒ OpcionalID da Organização (filial/contexto)
emailstringāœ… SimE-mail do usuĆ”rio jĆ” existente no sistema
group_idintegerāœ… SimID do grupo para inscrição
expires_atdatetimeāŒ OpcionalData de expiração da inscrição (ISO-8601)

šŸ’” Exemplo de requisição

{
  "org": 1,
  "email": "[email protected]",
  "group_id": 12,
  "expires_at": "2026-03-01T10:00:00Z"
}

āœ… Exemplo de resposta

{
  "message": "UsuƔrio inscrito no grupo com sucesso"
}

āœ‰ļø Notificação por E-mail

Ao inscrever um usuƔrio com sucesso:

  • A plataforma envia automaticamente um e-mail informando que o usuĆ”rio foi adicionado a um grupo.
  • O envio Ć© automĆ”tico e nĆ£o requer nenhuma ação adicional.
  • O e-mail só serĆ” enviado se o usuĆ”rio possuir um endereƧo de e-mail vĆ”lido.

🧹 Expirar inscrição (DELETE /enrollments)

Remove uma inscrição existente, revogando imediatamente o acesso do usuÔrio ao conteúdo do grupo.

šŸ“¦ ParĆ¢metros esperados (Body JSON)

CampoTipoObrigatórioDescrição
orgintegerāŒ OpcionalID da Organização (filial/contexto)
emailstringāœ… SimE-mail do usuĆ”rio a ser removido
group_idintegerāœ… SimID do grupo do qual o usuĆ”rio serĆ” removido

šŸ’” Exemplo de requisição

{
  "org": 1,
  "email": "[email protected]",
  "group_id": 12
}

āœ… Exemplo de resposta

{
  "message": "Inscrição expirada com sucesso"
}

🧠 Observações importantes

  • O usuĆ”rio precisa estar previamente criado para ser inscrito.
  • A expiração da inscrição revoga imediatamente o acesso ao conteĆŗdo.
  • VĆ­nculo AutomĆ”tico (org): Se um ID de organização for fornecido na criação e o usuĆ”rio (ou grupo) nĆ£o fizer parte dela, ele serĆ” vinculado automaticamente.
  • InscriƧƵes criadas via API sĆ£o marcadas internamente como do tipo "manual".
  • Se o usuĆ”rio jĆ” estiver inscrito, apenas a data de expiração serĆ” atualizada.
  • Caso nenhuma data de expiração seja informada, a inscrição serĆ” considerada vitalĆ­cia.

🚫 Códigos de Erro

CódigoDescrição
400Erro de validação nos parâmetros enviados
401Token invƔlido ou ausente
403Recurso não habilitado no plano do tenant
404UsuÔrio, Grupo ou Organização não encontrado
429Limite de requisiƧƵes excedido (rate limit)
500Erro interno inesperado

🧭 Resumo visual

AçãoMétodoEndpointRetorno esperado
Listar inscriƧƵesGET/enrollmentsLista paginada de inscriƧƵes existentes
Criar nova inscriçãoPOST/enrollmentsMensagem de sucesso ou erro
Expirar/remover inscriçãoDELETE/enrollmentsMensagem de sucesso ou erro