Pular para o conteúdo

Pré-visualização do modelo renderizada pelo servidor

POST/api/certificates/templates/{id}/preview

Auth
Exige token
X-CommunityId
X-CommunityId Envie o X-CommunityId da comunidade em que a operação acontece.

O mesmo motor da emissão, com dados fictícios (nome longo de propósito). O corpo é opcional e pode trazer edições não salvas (`layout`, `title`, `signers`...). Responde a imagem PNG (1600 px de largura) ou o PDF com `?format=pdf`. O header `X-Certificate-Warnings` lista campos cujo texto não coube nem no tamanho mínimo.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriopathstring (uuid)
formatopcionalquerypng | pdf

Headers

NomeTipoDescrição
X-CommunityIdopcionalstring (uuid)ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade.

Corpo da requisição application/json

NomeTipoDescrição
nameopcionalstringNome interno do modelo.
slugopcionalstringEndereço estável do modelo, para outros módulos (gatilhos de curso e evento) apontarem para ele sem o id. Gerado do nome na criação quando não vier; editável; único na comunidade; minúsculas, números e hífens. Renomear o modelo não muda o slug. Inválido ou já usado: 400 com `param: slug`. · max 60
titleopcionalstringTítulo impresso ("Certificado de conclusão").
descriptionopcionalstringAceita {nome}, {assunto} e {cargaHoraria} ({curso} e {evento} continuam valendo, como apelidos de {assunto}). Trecho entre colchetes é opcional: `concluiu[ {assunto}], com…` some quando a variável dentro dele está vazia. Fora de colchetes, a oração (entre vírgulas) com uma variável vazia é omitida, exceto a primeira, onde só a variável sai.
workloadHoursopcionalnumber
languageopcionalstringNasce com o idioma da comunidade.
timezoneopcionalstringFuso IANA da data impressa.
signersopcionalobject[]
signers[].nameobrigatóriostring
signers[].roleopcionalstring
signers[].signatureImageUrlopcionalstringURL devolvida pelo upload de assinatura.
layoutopcionalobject[]Só no tipo IMAGE.
layout[].keyobrigatóriorecipientName | issuedAt | qr | title | description | workload | subjectTitle | code | signer1 | signer2
layout[].boxobrigatórioobject
layout[].box.xopcionalnumber≥ 0, ≤ 100
layout[].box.yopcionalnumber≥ 0, ≤ 100
layout[].box.wopcionalnumber≥ 0.1, ≤ 100
layout[].box.hopcionalnumber≥ 0.1, ≤ 100
layout[].fontopcionalinter | montserrat | lora | playfair-display | eb-garamond | great-vibes | noto-sansObrigatório fora do `qr`.
layout[].weightopcional400 | 700
layout[].sizeopcionalnumber% da altura da página (6 ≈ 36 pt).
layout[].minSizeopcionalnumberO texto encolhe até aqui antes de quebrar em duas linhas.
layout[].coloropcionalstring
layout[].alignopcionalleft | center | right
layout[].valignopcionaltop | middle | bottom
layout[].uppercaseopcionalboolean

Respostas

CódigoDescrição
200A imagem ou o PDF.
400Requisição inválida — falha de validação.
401Token ausente, inválido ou expirado.
403Autenticado, mas sem permissão para esta operação.
404Recurso não encontrado.
500Erro interno do servidor.

Exemplo com curl

curl -X POST "https://api.memberfy.net/api/certificates/templates/<id>/preview" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-CommunityId: $COMMUNITY_ID" \
  -H "Content-Type: application/json" \
  -d '{}'