Pular para o conteúdo principal

Issue diplomas (issuer only)

This page is for institutions that issue diplomas and have them registered by another institution, the registrar. The organization must be of type Emissora (issuer) or Emissora e Registradora.

An emission (emissão) is the issuer's side of a diploma:

  1. Digiploma generates the academic documentation XML from your data, and collects the issuer's signatures in Lacuna Signer.
  2. The signed XML goes to the registrar, which registers the diploma and signs the diploma XML.
  3. The diploma XML comes back, and Digiploma creates the diploma, with its visual representation (RVDD) and its final academic transcript.

How the registrar receives the emission​

The registrationType of each emission decides how steps 2 and 3 happen:

registrationTypeHow it works
ManualOutside Digiploma. You download the signed academic documentation XML, send it to the registrar, and later upload the diploma XML the registrar sends back.
SubscriptionThe registrar is another organization in the same Digiploma instance (registradora credenciada). The request goes to it automatically, you follow its progress on the emission, and the diploma is created when it is registered. The partnership between the two organizations is set up by the instance administrator; registryId is the registrar organization's id.
IntegrationThe registrar uses another Digiploma instance. It works like Subscription, between separate applications, for example diplomas.issuer.edu.br and diplomas.registrar.edu.br. Both institutions configure the integration in their organization settings first, exchanging API keys.

To register the diplomas yourself, in the same organization, see Issue and register instead.

Before you start​

  • The Signer API key must be set in the organization's Configurações (Settings) (SignerApiKeyNotSet).
  • You need an academic transcript template, for the final transcript generated when the diploma is registered, and optionally a diploma template: without one, the diploma has no RVDD. See Templates.
  • You need the signers: a saved signature flow of type Emission, or the signers inline in each request.
  • For Subscription, the partnership with the registrar (EmisionForbiddenRegistry otherwise); for Integration, the integration with the registrar's instance (IntegrationRegistryNotFound, IntegrationRegistryInvalid).

Create an emission​

POST /api/emissions creates one emission. To create many from a JSON file, use a batch.

{
"registrationType": "Manual",
"templateId": "0f8b1c2e-…",
"academicTranscriptTemplateId": "6a1d9e44-…",
"documentFlowId": "c2f0e7a1-…",
"emission": {
"degreeType": "Default",
"dadosDiploma": { "diplomado": { … }, "dadosCurso": { … }, "iesEmissora": { … }, "dataConclusao": "2026-06-30", … },
"documentacaoAcademica": {
"registro": { "dadosPrivadosDiplomado": { … }, "termoResponsabilidade": { … }, "documentacaoComprobatoria": [ … ] }
}
}
}
FieldRequiredDescription
registrationTypeYesManual, Subscription or Integration (see above).
registryIdFor SubscriptionThe registrar organization.
emissionYesThe MEC data: dadosDiploma and documentacaoAcademica.registro (the graduate's private data, the statement of responsibility and the supporting documents, as Base64 PDF/A files), plus degreeType and visualRepresentationFieldsContent, as in Issue and register. There is no dadosRegistro: the registrar provides it.
academicTranscriptTemplateIdYesThe academic transcript template.
templateIdNoThe diploma template. Without it, the diploma has no RVDD.
documentFlowId / documentFlowOne of the twoThe signers. Only issuingFlow (the issuer's representatives with e-CPF and the issuer itself with e-CNPJ) and academicTranscriptFlow may be filled (DocumentFlowInvalidEmissionData).
newFolderName / signerFolderIdNoThe Signer folder for the document, new or existing.

A complete example of the data is in the JSON sample file.

The response is {success, id, errors}. As with the other creation operations, generation failures, such as data rejected by the MEC XML schema, return HTTP 200 with "success": false and the processing log in errors. See Creation results.

Statuses​

statusMeaning
CreatedCreated; waiting for the issuer's signatures.
SignedThe academic documentation XML is signed.
SentToRegistrySent to the registrar (Subscription and Integration).
AcceptedByRegistryThe registrar accepted the request, when its instance requires acceptance.
RegisteredThe diploma XML was received: the diploma exists.
CanceledCanceled, by the issuer or because the registrar rejected or canceled the request.

With Subscription and Integration, GET /api/emissions/{id} also shows the registrar's side: registryName, registrationStatus, registrationStatusDescription and registrationUpdateDate.

Get the academic documentation XML​

GET /api/emissions/{id}/academic-documentation-ticket returns a ticket to download the signed academic documentation XML. The download fails with DegreeAcademicDocumentationNotSigned until it is signed. With registrationType Manual, this is the file you send to the registrar.

Complete the emission with the diploma XML​

With registrationType Manual, complete the emission when the registrar sends back the signed diploma XML:

  1. Upload the XML file with POST /api/uploads or POST /api/uploads/bytes.

  2. Call POST /api/emissions/{id}/degree-xml with the upload:

    { "id": "5d3b…", "name": "diploma.xml", "contentType": "application/xml" }

The emission must be Signed, SentToRegistry or AcceptedByRegistry (EmissionInvalidStatus); calling it again for a Registered emission does nothing. Digiploma then checks that:

  • the XML is the diploma of this emission: its IdDocumentacaoAcademica must match the academic documentation generated for it (EmissionInvalidIdDocumentacaoAcademica);
  • the data follows the MEC rules and the XML schema;
  • the signatures are complete: the issuer's representatives and e-CNPJ on DadosDiploma, the registrar's representatives on DadosRegistro, matching the signers listed in the XML, and the registrar's archiving signature (e-CNPJ, AD-RA policy) on the whole file.

The response is {success, errors, structureErrors, signatureErrors}. A file that fails these checks returns HTTP 200 with "success": false, and the problems listed in the three arrays.

When the file is accepted, the emission becomes Registered and Digiploma creates the diploma, already Active, with its RVDD if the emission has a diploma template. GET /api/emissions/{id} returns its degreeId and degreeVerificationCode, and from then on it is managed with the Degrees API. Digiploma also generates the final academic transcript, except for a second copy or a judicial-decision diploma.

With Subscription and Integration, this step happens automatically when the registrar's diploma XML is signed.

Cancel an emission​

POST /api/emissions/{id}/cancellation, with a reason of up to 500 characters, cancels an emission that is Created or Signed. If the document is not signed yet, it is deleted from Signer. Once the emission has been sent to the registrar, only the registrar can reject or cancel it (EmissionCannotBeCanceled). To annul a diploma that already exists, change the diploma's status.

  • GET /api/emissions/{id} returns the emission; GET /api/emissions/{id}/information returns its public data (dadosDiploma), read from the academic documentation XML.
  • GET /api/emissions/{id}/history returns the status changes, newest first.
  • GET /api/emissions returns a page of emissions. Besides the paging parameters, it filters by Status, BatchId, creation date (StartDateUtc inclusive, EndDateUtc exclusive), IsSigned=true and Q (student's CPF, name or social name, or course). Results are sorted by update date.

Webhooks​

EventWhen
EmissionCreatedThe emission was created.
EmissionSignedThe academic documentation XML was signed.
EmissionSentToRegistryThe emission was sent to the registrar.
EmissionRegistrationAccepted, EmissionRegistrationApproved, EmissionRegistrationRegisteredThe registrar accepted, approved or registered the request (Subscription and Integration).
EmissionRegistrationRejected, EmissionRegistrationCanceledThe registrar rejected or canceled the request. The emission becomes Canceled, and EmissionCanceled is not sent.
EmissionRegisteredThe diploma XML was accepted. The payload carries the degreeId.
EmissionCanceledThe issuer canceled the emission.

See Webhooks for the payloads.

Operation reference​

OperationDescription
POST /api/emissionsCreate an emission
GET /api/emissionsList emissions
GET /api/emissions/{id}Get an emission
GET /api/emissions/{id}/informationGet the public data of an emission
GET /api/emissions/{id}/historyGet the status history
GET /api/emissions/{id}/academic-documentation-ticketDownload the signed academic documentation XML
POST /api/emissions/{id}/degree-xmlComplete the emission with the diploma XML
POST /api/emissions/{id}/cancellationCancel an emission
View as Markdown