Pré-visualização do modelo renderizada pelo servidor
POST/api/certificates/templates/{id}/preview
- Auth
- Exige token
- X-CommunityId
X-CommunityIdEnvie 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
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
idobrigatório | path | string (uuid) | |
formatopcional | query | png | pdf |
Headers
| Nome | Tipo | Descrição |
|---|---|---|
X-CommunityIdopcional | string (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
| Nome | Tipo | Descrição |
|---|---|---|
nameopcional | string | Nome interno do modelo. |
slugopcional | string | Endereç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 |
titleopcional | string | Título impresso ("Certificado de conclusão"). |
descriptionopcional | string | Aceita {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. |
workloadHoursopcional | number | |
languageopcional | string | Nasce com o idioma da comunidade. |
timezoneopcional | string | Fuso IANA da data impressa. |
signersopcional | object[] | |
signers[].nameobrigatório | string | |
signers[].roleopcional | string | |
signers[].signatureImageUrlopcional | string | URL devolvida pelo upload de assinatura. |
layoutopcional | object[] | Só no tipo IMAGE. |
layout[].keyobrigatório | recipientName | issuedAt | qr | title | description | workload | subjectTitle | code | signer1 | signer2 | |
layout[].boxobrigatório | object | |
layout[].box.xopcional | number | ≥ 0, ≤ 100 |
layout[].box.yopcional | number | ≥ 0, ≤ 100 |
layout[].box.wopcional | number | ≥ 0.1, ≤ 100 |
layout[].box.hopcional | number | ≥ 0.1, ≤ 100 |
layout[].fontopcional | inter | montserrat | lora | playfair-display | eb-garamond | great-vibes | noto-sans | Obrigatório fora do `qr`. |
layout[].weightopcional | 400 | 700 | |
layout[].sizeopcional | number | % da altura da página (6 ≈ 36 pt). |
layout[].minSizeopcional | number | O texto encolhe até aqui antes de quebrar em duas linhas. |
layout[].coloropcional | string | |
layout[].alignopcional | left | center | right | |
layout[].valignopcional | top | middle | bottom | |
layout[].uppercaseopcional | boolean |
Respostas
| Código | Descrição |
|---|---|
200 | A imagem ou o PDF. |
400 | Requisição inválida — falha de validação. |
401 | Token ausente, inválido ou expirado. |
403 | Autenticado, mas sem permissão para esta operação. |
404 | Recurso não encontrado. |
500 | Erro 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 '{}'