RhizzaDocs

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 Markdown

Versões mais recentes

ComponenteVersãoDataDestaques
@rhizzalab/report-react0.30.028/09/2026Aba Marca no widget; apresentação salva junto com o modelo
API RhizzaDocs28/09/202628/09/2026Dados 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 tipos EditorBrandProfile e GetBrandProfileOptions, e o painel "brand" em openPanel/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 rotaO que faz
GET /v1/brand-profileLê o padrão da empresa
PATCH /v1/brand-profileAtualiza 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
shell
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 logos light e dark.
  • 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 clientSecret nunca sai do seu backend. Falha de autenticação é sempre 401 AUTH_REQUIRED.
  • Validação: 422 INVALID_DATA com issues por 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 assetId e o sumário. Criar, copiar e versionar preservam esse estado, sem armazenar dados comerciais.
  • O bootstrap envia templatePresentation somente 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.