Cursos Online

Catálogo de cursos EAD da escola, com matrícula por CRUD completo. Uma integração típica é um LMS externo ou um sistema de pagamento matriculando um aluno diretamente. Progresso, diplomas, dúvidas e avaliações do curso ficam fora desta API — internos à experiência do aluno.

is_paid/price descrevem o preço anunciado do curso, não uma cobrança real — a mesma fronteira do payment_* em Eventos. Uma matrícula em curso pago fica PENDING_APPROVAL até a escola aprovar — a aprovação (que dispara a cobrança) é uma ação interna, fora desta API.

Plano Gestão Escolar (ERP): os endpoints desta página respondem somente para clientes do plano Gestão Escolar (ERP), como no sistema web. Para clientes do plano simplificado, a resposta é 403 com "code": "ERP_REQUIRED".

O modelo curso

id uuid

Identificador único do curso.

teacher object|null

id e name do professor responsável.

title string

Título do curso.

slug string

Identificador amigável, único por escola.

description string|null

Descrição curta.

is_paid boolean

Se o curso tem taxa.

price decimal|null

Valor anunciado, quando pago.

status string

DRAFT, PUBLISHED ou ARCHIVED.

completion_criteria string

ALL_LESSONS_WATCHED ou ALL_LESSONS_AND_EXERCISES.

certificate_enabled boolean

Se emite certificado ao concluir.

modules_count integer

Total de módulos.

lessons_count integer

Total de aulas.

created_at datetime

Data de criação.

Modelo curso
{
  "id": "oc1-0000-0000-0000-000000000001",
  "title": "Inglês Básico",
  "slug": "ingles-basico",
  "is_paid": true,
  "price": "120.00",
  "status": "PUBLISHED",
  "modules_count": 4,
  "lessons_count": 22
}
GET /v1/partners/school/{cnpj}/online-courses/all

Listar cursos

Cursos da escola, paginados.

Códigos de resposta

200

Sucesso.

404

Não encontrado.

Requisição GET
GET /api/v1/partners/school/{cnpj}/online-courses/all
GET /v1/partners/school/{cnpj}/online-course/{id}

Obter um curso

Retorna um curso com o professor responsável.

Códigos de resposta

200

Sucesso.

404

Não encontrado.

Requisição GET
GET /api/v1/partners/school/{cnpj}/online-course/{id}
POST /v1/partners/school/{cnpj}/online-course

Criar curso

Corpo: title (obrigatório); teacher_id, slug, description, long_description, what_you_will_learn, requirements, target_audience, is_paid, price, max_installments, completion_criteria, certificate_enabled (opcionais). Sempre criado como DRAFT.

Códigos de resposta

201

Sucesso.

404

Não encontrado.

Requisição POST
POST /api/v1/partners/school/{cnpj}/online-course
PUT /v1/partners/school/{cnpj}/online-course/{id}

Editar curso

Atualiza os campos enviados.

Códigos de resposta

200

Sucesso.

404

Não encontrado.

Requisição PUT
PUT /api/v1/partners/school/{cnpj}/online-course/{id}
DELETE /v1/partners/school/{cnpj}/online-course/{id}

Excluir curso

Remove o curso (soft delete).

Códigos de resposta

200

Sucesso.

404

Não encontrado.

Requisição DELETE
DELETE /api/v1/partners/school/{cnpj}/online-course/{id}
GET /v1/partners/school/{cnpj}/online-course/{id}/enrollments

Listar matrículas

Aplicações de matrícula no curso, com status.

Códigos de resposta

200

Sucesso.

404

Não encontrado.

Requisição GET
GET /api/v1/partners/school/{cnpj}/online-course/{id}/enrollments
POST /v1/partners/school/{cnpj}/online-course/{id}/enroll

Matricular aluno

Corpo: enrollment_number (obrigatório) — o número de matrícula do aluno na escola. Cria a aplicação como PENDING_APPROVAL.

Códigos de resposta

201

Sucesso.

409

Curso não publicado, aluno sem responsável vinculado, ou já matriculado.

404

Não encontrado.

Requisição POST
POST /api/v1/partners/school/{cnpj}/online-course/{id}/enroll

{ "enrollment_number": "7.553" }