Changelog
O que mudou em cada versão do SDK React e da API, com o impacto para quem integra e o que fazer para atualizar.
Abrir como MarkdownVersões mais recentes
| Componente | Versão | Data | Destaques |
|---|---|---|---|
@rhizzalab/report-react | 0.30.0 | 28/09/2026 | Aba Marca no widget; apresentação salva junto com o modelo |
| API RhizzaDocs | 28/09/2026 | 28/09/2026 | Dados da marca da empresa e de cada cliente; apresentação por versão do modelo |
@rhizzalab/report-react 0.30.0
Versão MINOR e aditiva: nenhuma prop, método ou tipo existente mudou. Hosts que só atualizam a dependência passam a ver as novidades sem alterar código.
- Aba Marca na rail. A barra lateral esquerda ganhou uma terceira opção — Inserir, Modelo, Marca, Imagens, Tema — que mostra os dados da marca do cliente: logos para fundo claro e escuro, endereço, telefone, WhatsApp, site, Instagram e cores primária/secundária. Valores herdados do padrão da empresa aparecem com o selo “Padrão da empresa”.
- Inserir e copiar. Cada dado pode ser inserido no cursor do documento numa única ação desfazível (site e Instagram entram como link) ou copiado. O painel é somente leitura: o cadastro fica no portal ou na API.
- Temas usam a marca. Na sidebar do tema, textos ligados à marca mostram o selo “Marca · Endereço” (etc.), e a imagem de logo preenchida pelo servidor aparece como “Logo da marca”. O padrão automático de logo da biblioteca não sobrescreve esses slots.
- Apresentação salva no modelo. Tema, textos e imagens editáveis do tema e o sumário passam a ser salvos com a versão do modelo — trocar só a aparência já habilita salvar. Usa o protocolo 5 do bootstrap.
- Novos exports:
ReportClient.getBrandProfile?,EDITOR_BRAND_PROFILE_ENDPOINT_PATH, os tiposEditorBrandProfileeGetBrandProfileOptions, e o painel"brand"emopenPanel/onPanelChange.
API — dados da marca
Com a mesma credencial da troca de token (desde a primeira), o backend do host registra os dados que os temas reutilizam. Todos os campos são opcionais e existem em dois níveis: o padrão da empresa e cada cliente, identificado pelo mesmo workspaceId enviado na troca de token. Na prévia e no PDF, cada campo usa o valor do cliente e, sem ele, o padrão da empresa.
| Método e rota | O que faz |
|---|---|
GET /v1/brand-profile | Lê o padrão da empresa |
PATCH /v1/brand-profile | Atualiza campos; ausente mantém, null limpa |
PUT /v1/brand-profile/logos/{variante} | Envia a logo: light (fundo claro) ou dark (fundo escuro), multipart com o campo file |
DELETE /v1/brand-profile/logos/{variante} | Remove a logo (idempotente) |
Qualquer rota acima + ?workspaceId=… | Mesma operação para um cliente |
curl -X PATCH "https://api.rhizzalab.com/v1/brand-profile?workspaceId=cliente-42" \
-u "$RP_CLIENT_ID:$RP_CLIENT_SECRET" \
-H "content-type: application/json" \
-d '{"phone":"(11) 3333-4444","instagram":"@cliente","primaryColor":"#1d4ed8"}'
curl -X PUT "https://api.rhizzalab.com/v1/brand-profile/logos/light?workspaceId=cliente-42" \
-u "$RP_CLIENT_ID:$RP_CLIENT_SECRET" \
-F file=@logo.png- Campos:
address,phone,whatsapp,website,instagram,primaryColor,secondaryColor(#rrggbb) e as logoslightedark. - Logos: JPEG, PNG ou WebP até 2 MB; a API guarda um PNG que cabe em 1024 px, sem recortar e preservando transparência.
- Servidor a servidor apenas: sem CORS de navegador; o
clientSecretnunca sai do seu backend. Falha de autenticação é sempre401 AUTH_REQUIRED. - Validação:
422 INVALID_DATAcomissuespor campo (/phone,/file,/workspaceId). Limites: 60 requisições/min por credencial e IP; 30 escritas/min por empresa. - O mesmo cadastro está no portal: página Dados da marca e aba Dados da marca no detalhe de cada cliente. O detalhe de cada credencial em Integrações traz exemplos prontos.
API — apresentação na versão do modelo
- Cada versão de modelo guarda a apresentação: tema, textos e ligações do tema, imagens por
assetIde o sumário. Criar, copiar e versionar preservam esse estado, sem armazenar dados comerciais. - O bootstrap envia
templatePresentationsomente no protocolo 5 (SDK 0.30.0). Protocolos 1–4 recebem o envelope anterior, então SDKs antigos continuam funcionando. - Salvar como novo aceita
sourceTemplateRef: { id, version }para herdar a versão do modelo realmente aplicado.