Emitir diplomas (apenas emissora)
Esta página é para instituições que emitem diplomas e deixam o registro a cargo de outra instituição, a registradora. A organização precisa ser do tipo Emissora ou Emissora e Registradora.
A emissão é a parte do diploma que cabe à emissora:
- O Digiploma gera o XML da documentação acadêmica a partir dos dados que você envia e coleta as assinaturas da emissora no Lacuna Signer.
- O XML assinado vai para a registradora, que registra o diploma e assina o XML do diploma.
- O XML do diploma volta, e o Digiploma cria o diploma, com a representação visual (RVDD) e o histórico escolar final.
Como a emissão chega à registradora
O registrationType de cada emissão define como acontecem os passos 2 e 3:
registrationType | Como funciona |
|---|---|
Manual | Fora do Digiploma. Você baixa o XML da documentação acadêmica assinado, envia esse arquivo à registradora e depois faz upload do XML do diploma que a registradora devolver. |
Subscription | A registradora é outra organização na mesma instância do Digiploma (Registradora credenciada). A requisição vai para ela automaticamente, você acompanha o andamento pela emissão, e o diploma é criado quando a requisição é registrada. A parceria entre as duas organizações é configurada pelo administrador da instância; registryId é o id da organização registradora. |
Integration | A registradora usa outra instância do Digiploma. Funciona como Subscription, mas entre aplicações separadas, por exemplo diplomas.emissora.edu.br e diplomas.registradora.edu.br. Antes, as duas instituições configuram a integração nas configurações das respectivas organizações, trocando chaves de API. |
Para registrar os diplomas na própria organização, veja Emissão e registro.
Antes de começar
- A chave de API do Signer precisa estar definida nas Configurações da organização (
SignerApiKeyNotSet). - Você precisa de um modelo de histórico escolar, para o histórico final gerado quando o diploma é registrado, e, opcionalmente, de um modelo de diploma: sem ele, o diploma não tem RVDD. Veja Modelos.
- Você precisa dos signatários: um fluxo de assinatura salvo, do tipo
Emission, ou os signatários informados na própria requisição. - Com
Subscription, a parceria com a registradora (caso contrário,EmisionForbiddenRegistry); comIntegration, a integração com a instância da registradora (IntegrationRegistryNotFound,IntegrationRegistryInvalid).
Criar uma emissão
POST /api/emissions cria uma emissão. Para criar várias a partir de um arquivo JSON, use um lote.
{
"registrationType": "Manual",
"templateId": "0f8b1c2e-…",
"academicTranscriptTemplateId": "6a1d9e44-…",
"documentFlowId": "c2f0e7a1-…",
"emission": {
"degreeType": "Default",
"dadosDiploma": { "diplomado": { … }, "dadosCurso": { … }, "iesEmissora": { … }, "dataConclusao": "2026-06-30", … },
"documentacaoAcademica": {
"registro": { "dadosPrivadosDiplomado": { … }, "termoResponsabilidade": { … }, "documentacaoComprobatoria": [ … ] }
}
}
}
| Campo | Obrigatório | Descrição |
|---|---|---|
registrationType | Sim | Manual, Subscription ou Integration (veja acima). |
registryId | Com Subscription | A organização registradora. |
emission | Sim | Os dados do MEC: dadosDiploma e documentacaoAcademica.registro (os dados privados do diplomado, o termo de responsabilidade e a documentação comprobatória, em arquivos PDF/A em Base64), além de degreeType e visualRepresentationFieldsContent, como em Emissão e registro. Não há dadosRegistro: quem fornece esses dados é a registradora. |
academicTranscriptTemplateId | Sim | O modelo de histórico escolar. |
templateId | Não | O modelo de diploma. Sem ele, o diploma não tem RVDD. |
documentFlowId / documentFlow | Um dos dois | Os signatários. Só podem ser preenchidos issuingFlow (os representantes da emissora, com e-CPF, e a própria emissora, com e-CNPJ) e academicTranscriptFlow (DocumentFlowInvalidEmissionData). |
newFolderName / signerFolderId | Não | A pasta do Signer para o documento, nova ou existente. |
Há um exemplo completo dos dados no arquivo JSON de exemplo.
A resposta é {success, id, errors}. Como nas outras operações de criação, falhas na geração, como dados rejeitados pelo schema XML do
MEC, retornam HTTP 200 com "success": false e o log de processamento em errors. Veja
Resultado da criação.
Status
status | Significado |
|---|---|
Created | Criada; aguardando as assinaturas da emissora. |
Signed | O XML da documentação acadêmica está assinado. |
SentToRegistry | Enviada à registradora (Subscription e Integration). |
AcceptedByRegistry | A registradora aceitou a requisição, quando a instância dela exige aceitação. |
Registered | O XML do diploma foi recebido: o diploma existe. |
Canceled | Cancelada pela emissora, ou porque a registradora recusou ou cancelou a requisição. |
Com Subscription e Integration, GET /api/emissions/{id} também mostra o lado da registradora: registryName, registrationStatus,
registrationStatusDescription e registrationUpdateDate.
Obter o XML da documentação acadêmica
GET /api/emissions/{id}/academic-documentation-ticket retorna um ticket para baixar o XML da
documentação acadêmica assinado. O download falha com DegreeAcademicDocumentationNotSigned até o XML ser assinado. Com
registrationType Manual, é esse o arquivo que você envia à registradora.
Concluir a emissão com o XML do diploma
Com registrationType Manual, conclua a emissão quando a registradora devolver o XML do diploma assinado:
-
Faça upload do arquivo XML com
POST /api/uploadsouPOST /api/uploads/bytes. -
Chame
POST /api/emissions/{id}/degree-xmlcom o upload:{ "id": "5d3b…", "name": "diploma.xml", "contentType": "application/xml" }
A emissão precisa estar Signed, SentToRegistry ou AcceptedByRegistry (EmissionInvalidStatus); chamar a operação de novo para uma
emissão Registered não tem efeito. Em seguida, o Digiploma verifica se:
- o XML é o diploma desta emissão: o
IdDocumentacaoAcademicadele precisa corresponder à documentação acadêmica gerada para ela (EmissionInvalidIdDocumentacaoAcademica); - os dados seguem as regras do MEC e o schema XML;
- as assinaturas estão completas: os representantes e o e-CNPJ da emissora em
DadosDiploma, os representantes da registradora emDadosRegistro, conferindo com os signatários listados no XML, e a assinatura de arquivamento da registradora (e-CNPJ, política AD-RA) no arquivo inteiro.
A resposta é {success, errors, structureErrors, signatureErrors}. Um arquivo que não passa nessas verificações retorna HTTP 200 com
"success": false, e os problemas são listados nos três arrays.
Quando o arquivo é aceito, a emissão passa a Registered e o Digiploma cria o diploma, já Active, com o RVDD se a emissão tiver um
modelo de diploma. GET /api/emissions/{id} retorna o degreeId e o degreeVerificationCode do diploma, que a partir daí é gerenciado
pela API de diplomas. O Digiploma também gera o histórico escolar final,
exceto para segunda via ou diploma por decisão judicial.
Com Subscription e Integration, esta etapa acontece automaticamente quando o XML do diploma da registradora é assinado.
Cancelar uma emissão
POST /api/emissions/{id}/cancellation, com um reason de até 500 caracteres, cancela uma emissão Created ou Signed. Se o documento
ainda não estiver assinado, ele é excluído do Signer. Depois que a emissão é enviada à registradora, só a registradora pode recusá-la ou
cancelá-la (EmissionCannotBeCanceled). Para anular um diploma que já existe, altere o
status do diploma.
Consultar e pesquisar
GET /api/emissions/{id}retorna a emissão;GET /api/emissions/{id}/informationretorna os dados públicos dela (dadosDiploma), lidos do XML da documentação acadêmica.GET /api/emissions/{id}/historyretorna as mudanças de status, da mais recente para a mais antiga.GET /api/emissionsretorna uma página de emissões. Além dos parâmetros de paginação, filtra porStatus,BatchId, data de criação (StartDateUtcinclusive,EndDateUtcexclusive),IsSigned=trueeQ(CPF, nome ou nome social do aluno, ou curso). Os resultados são ordenados pela data de atualização.
Webhooks
| Evento | Quando |
|---|---|
EmissionCreated | A emissão foi criada. |
EmissionSigned | O XML da documentação acadêmica foi assinado. |
EmissionSentToRegistry | A emissão foi enviada à registradora. |
EmissionRegistrationAccepted, EmissionRegistrationApproved, EmissionRegistrationRegistered | A registradora aceitou, aprovou ou registrou a requisição (Subscription e Integration). |
EmissionRegistrationRejected, EmissionRegistrationCanceled | A registradora recusou ou cancelou a requisição. A emissão passa a Canceled, e EmissionCanceled não é enviado. |
EmissionRegistered | O XML do diploma foi aceito. Os dados do evento trazem o degreeId. |
EmissionCanceled | A emissora cancelou a emissão. |
Os dados de cada evento estão em Webhooks.
Referência das operações
| Operação | Descrição |
|---|---|
POST /api/emissions | Criar uma emissão |
GET /api/emissions | Listar emissões |
GET /api/emissions/{id} | Obter uma emissão |
GET /api/emissions/{id}/information | Obter os dados públicos de uma emissão |
GET /api/emissions/{id}/history | Obter o histórico de status |
GET /api/emissions/{id}/academic-documentation-ticket | Baixar o XML da documentação acadêmica assinado |
POST /api/emissions/{id}/degree-xml | Concluir a emissão com o XML do diploma |
POST /api/emissions/{id}/cancellation | Cancelar uma emissão |