Pular para o conteúdo principal

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:

  1. 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.
  2. O XML assinado vai para a registradora, que registra o diploma e assina o XML do diploma.
  3. 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:

registrationTypeComo funciona
ManualFora 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.
SubscriptionA 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.
IntegrationA 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); com Integration, 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": [ … ] }
}
}
}
CampoObrigatórioDescrição
registrationTypeSimManual, Subscription ou Integration (veja acima).
registryIdCom SubscriptionA organização registradora.
emissionSimOs 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.
academicTranscriptTemplateIdSimO modelo de histórico escolar.
templateIdNãoO modelo de diploma. Sem ele, o diploma não tem RVDD.
documentFlowId / documentFlowUm dos doisOs 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 / signerFolderIdNãoA 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​

statusSignificado
CreatedCriada; aguardando as assinaturas da emissora.
SignedO XML da documentação acadêmica está assinado.
SentToRegistryEnviada à registradora (Subscription e Integration).
AcceptedByRegistryA registradora aceitou a requisição, quando a instância dela exige aceitação.
RegisteredO XML do diploma foi recebido: o diploma existe.
CanceledCancelada 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:

  1. Faça upload do arquivo XML com POST /api/uploads ou POST /api/uploads/bytes.

  2. Chame POST /api/emissions/{id}/degree-xml com 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 IdDocumentacaoAcademica dele 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 em DadosRegistro, 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}/information retorna os dados públicos dela (dadosDiploma), lidos do XML da documentação acadêmica.
  • GET /api/emissions/{id}/history retorna as mudanças de status, da mais recente para a mais antiga.
  • GET /api/emissions retorna uma página de emissões. Além dos parâmetros de paginação, filtra por Status, BatchId, data de criação (StartDateUtc inclusive, EndDateUtc exclusive), IsSigned=true e Q (CPF, nome ou nome social do aluno, ou curso). Os resultados são ordenados pela data de atualização.

Webhooks​

EventoQuando
EmissionCreatedA emissão foi criada.
EmissionSignedO XML da documentação acadêmica foi assinado.
EmissionSentToRegistryA emissão foi enviada à registradora.
EmissionRegistrationAccepted, EmissionRegistrationApproved, EmissionRegistrationRegisteredA registradora aceitou, aprovou ou registrou a requisição (Subscription e Integration).
EmissionRegistrationRejected, EmissionRegistrationCanceledA registradora recusou ou cancelou a requisição. A emissão passa a Canceled, e EmissionCanceled não é enviado.
EmissionRegisteredO XML do diploma foi aceito. Os dados do evento trazem o degreeId.
EmissionCanceledA emissora cancelou a emissão.

Os dados de cada evento estão em Webhooks.

Referência das operações​

OperaçãoDescrição
POST /api/emissionsCriar uma emissão
GET /api/emissionsListar emissões
GET /api/emissions/{id}Obter uma emissão
GET /api/emissions/{id}/informationObter os dados públicos de uma emissão
GET /api/emissions/{id}/historyObter o histórico de status
GET /api/emissions/{id}/academic-documentation-ticketBaixar o XML da documentação acadêmica assinado
POST /api/emissions/{id}/degree-xmlConcluir a emissão com o XML do diploma
POST /api/emissions/{id}/cancellationCancelar uma emissão
Ver em Markdown