CRPRO HubEntrar no painel

Templates

GET
/api/v1/channels/{id}/templates

Lista os templates do canal

Repassa a lista direto da Meta (message_templates), sem cache local — o status refletido é o mais atual possível. Exige que o canal tenha WABA conectada; senão responde 409 CHANNEL_NOT_CONNECTED. O token hub_ch_... do canal também autentica esta chamada, mas nunca autoriza ler templates de outro canal.

Autenticação
Sessão do painel, Chave de API, Token do canal
Escopo
templates:read
Limite
120 requisições por minuto por organização e credencial

Parâmetros de caminho

ParâmetroTipoObrigatórioDescrição
idUUIDSimIdentificador do canal.
Requisição
curl https://crprohub.com/api/v1/channels/CHANNEL_UUID/templates \
  -H "Authorization: Bearer hub_pk_EXEMPLO_NAO_REAL"
Resposta
{
  "data": {
    "templates": [
      {
        "id": "9876543210987654",
        "name": "boas_vindas",
        "language": "pt_BR",
        "category": "UTILITY",
        "status": "APPROVED"
      }
    ],
    "paging": null
  }
}
POST
/api/v1/channels/{id}/templates

Cria um template na Meta

Cria o template direto na Meta e espelha uma cópia local (por nome + idioma); o status inicial normalmente é PENDING — o template não pode ser usado em mensagens até a Meta aprovar. O corpo inteiro não pode passar de 64 KB, senão responde 400 INVALID_TEMPLATE. O token hub_ch_... do canal também autentica esta chamada, mas nunca autoriza criar template em outro canal.

Autenticação
Sessão do painel, Chave de API, Token do canal
Escopo
templates:write
Limite
120 requisições por minuto por organização e credencial

Parâmetros de caminho

ParâmetroTipoObrigatórioDescrição
idUUIDSimIdentificador do canal.

Corpo

ParâmetroTipoObrigatórioDescrição
namestringSimSó letras minúsculas, dígitos e underscore, até 512 caracteres (regex ^[a-z0-9_]+$).
languagestringSimCódigo de idioma da Meta, ex.: pt_BR ou en.
categoryenumSimMARKETING, UTILITY ou AUTHENTICATION.
componentslista de objetosSimDe 1 a 20 componentes. Cada um: { type: HEADER|BODY|FOOTER|BUTTONS, format?: TEXT|IMAGE|VIDEO|DOCUMENT|LOCATION, text?: string, example?: objeto, buttons?: lista de até 10 { type: QUICK_REPLY|URL|PHONE_NUMBER|COPY_CODE|OTP, text?, url?, phone_number?, example?, otp_type? } }.
allow_category_changebooleanoNãoPermite que a Meta reclassifique a categoria automaticamente durante a revisão.
Requisição
curl -X POST https://crprohub.com/api/v1/channels/CHANNEL_UUID/templates \
  -H "Authorization: Bearer hub_pk_EXEMPLO_NAO_REAL" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "boas_vindas",
    "language": "pt_BR",
    "category": "UTILITY",
    "components": [
      { "type": "BODY", "text": "Olá {{1}}, bem-vindo!" }
    ]
  }'
Resposta
{
  "data": {
    "template": {
      "id": "9876543210987654",
      "status": "PENDING",
      "category": "UTILITY"
    }
  }
}
DELETE
/api/v1/channels/{id}/templates/{templateId}

Remove um template

Só remove templates que foram criados por esta API (o POST /templates é o único que grava a cópia local): se não houver uma cópia local com esse templateId para este canal, responde 404 mesmo que o template exista na Meta. A remoção é direto na Meta e não é reversível. O token hub_ch_... do canal também autentica esta chamada, mas nunca autoriza remover template de outro canal.

Autenticação
Sessão do painel, Chave de API, Token do canal
Escopo
templates:write
Limite
120 requisições por minuto por organização e credencial

Parâmetros de caminho

ParâmetroTipoObrigatórioDescrição
idUUIDSimIdentificador do canal.
templateIdstringSimID numérico do template na Meta (5 a 30 dígitos), não o "name" do template.
Requisição
curl -X DELETE https://crprohub.com/api/v1/channels/CHANNEL_UUID/templates/9876543210987654 \
  -H "Authorization: Bearer hub_pk_EXEMPLO_NAO_REAL"
Resposta
{
  "data": {
    "deleted": true
  }
}