Autenticação e descoberta
Estas operações correspondem à área do produtor no app v2, não à descoberta de telas do app legado. Elas pertencem ao domíniocatalog e ao toolset MCP catalog.
Troque a chave e o segredo da empresa por um token em POST /auth, usando Basic Authentication. Todas as chamadas abaixo usam Authorization: Bearer TOKEN. Tokens de vendedor do app e de aluno não dão acesso. A empresa vem exclusivamente do token. Não envie companyId ou company_id no corpo ou na query.
GET /v1/member-courses?page=1&pageSize=10 lista cursos em rascunho e publicados. O filtro opcional productId restringe o produto. A resposta é {success:true,data:[],pagination:{page,pageSize,total,totalPages}}, com o total do conjunto filtrado. As demais operações retornam {success:true,data:...}. Erros usam {success:false,message:...}. Recurso inexistente, de outra empresa ou de outro curso/aula responde 404.
No MCP, comece com ephra_member_courses_list. Depois use ephra_member_courses_get para obter a árvore e os IDs de módulos, aulas, materiais e comentários. Nunca reutilize um ID de outra árvore.
Use um produto com entrega
ephraMembers. O curso começa em rascunho e só publica depois de receber conteúdo válido.Criar e publicar

Editor do curso na área de membros
deliveryType: "ephraMembers". Descubra seu productId com GET /v1/products ou ephra_products_list.
- Guarde o
courseIddedata.id. POST /v1/member-courses/COURSE_ID/modulescom{"title":"Introdução"}. Guarde o módulo retornado na árvore.POST /v1/member-courses/COURSE_ID/modules/MODULE_ID/lessonscom{"slug":"boas-vindas","title":"Boas-vindas","kind":"video","youtubeVideoId":"dQw4w9WgXcQ"}.PATCH /v1/member-courses/COURSE_IDcom{"status":"published"}.
kind: "reading" e body: ["Primeiro parágrafo"], sem vídeo. Publicação exige pelo menos um módulo e uma aula, e cada aula deve ter conteúdo válido. Alterações de um curso publicado também preservam essa regra.
PATCH /v1/member-courses/COURSE_ID altera os campos enviados. DELETE no mesmo caminho exclui permanentemente o curso, módulos, aulas, materiais, comentários, notas, progresso e certificados. Não revoga as matrículas do produto. Confirme a exclusão antes de chamar.
Conteúdo e moderação
Cada criação ou alteração de conteúdo devolve a árvore completa atualizada. Consulte o OpenAPI para os campos de cada corpo.
Materiais são links HTTP/HTTPS, classificados como
link, pdf ou sheet. Esta operação não faz upload de arquivos. Exemplo de criação: {"title":"Referência","kind":"link","url":"https://example.com/referencia"}.
Reordenação exige {"ids":["ID_1","ID_2"]} com todos os IDs do conjunto exatamente uma vez. O array substitui a ordem completa. Um módulo excluído leva suas aulas e dependentes; uma aula excluída leva materiais, comentários, notas e progresso. Exclusões são permanentes.
Comentários vivem em /v1/member-courses/{courseId}/lessons/{lessonId}/comments. GET lista com page/pageSize; POST cria um comentário da equipe com {"body":"Bem-vindos!"}. PATCH /{commentId} edita somente comentários da equipe. DELETE /{commentId} modera comentários de alunos ou da equipe. Nenhuma operação publica como aluno.
Imagens
Um curso tem uma capa opcional. Uma aula tem uma imagem opcional. Não há galeria nem imagem embutida em texto.- Capa:
/v1/member-courses/{courseId}/cover. - Imagem da aula:
/v1/member-courses/{courseId}/lessons/{lessonId}/image.
POST CAMINHO/uploadcom{"contentType":"image/webp"}. A resposta contémuploadUrl,keyeexpiresIn: 900.- Faça
PUTdos bytes emuploadUrl, com o mesmoContent-Type. A ferramenta MCP só devolve a URL; seu cliente precisa enviar os bytes fora do MCP. POST CAMINHO/finalizecom akeyretornada ealtopcional. Exemplo:{"key":"KEY_RETORNADA","alt":"Diagrama do fluxo"}. A API valida o arquivo antes de substituir a imagem anterior.- Para remover,
DELETE CAMINHO. Repetir a remoção é seguro.
{url,alt,expiresAt} ou null.
Para mudar somente o texto alternativo, use PATCH do curso com coverAlt ou da aula com imageAlt. O limite é 500 caracteres; null remove o texto.
Matrículas
Matrículas são do produto, não de um curso individual. Os caminhos são:GET /v1/products/{productId}/member-enrollments?page=1&pageSize=10.POST /v1/products/{productId}/member-enrollmentscom{"email":"aluno@example.com","name":"Ana"}.DELETE /v1/products/{productId}/member-enrollments/{enrollmentId}.
manual, purchase e subscription. Um aluno pode ter várias origens para o mesmo produto. A concessão manual reutiliza a mesma matrícula e envia e-mail de acesso. A revogação permite somente matrícula manual do produto indicado e não remove acesso de compra ou assinatura. Repetir a revogação é seguro.
O MCP usa ephra_products_member_enrollments_list, ephra_products_member_enrollments_grant e ephra_products_member_enrollments_revoke. Não confunda matrícula manual com estorno ou cancelamento de assinatura.