API de marca
Personalice las superficies orientadas al cliente (el marco de la SPA, los correos de invitación, las cabeceras + pies de página de los informes PDF) con su logotipo, colores de acento y nombre de producto. El objeto de marca es por organización y se aplica a todas las sesiones emitidas bajo esa organización.
El objeto de marca
{
"logo_url": "https://cdn.acme.com/logo.png",
"wordmark_url": "",
"favicon_url": "https://cdn.acme.com/favicon.ico",
"primary_color": "#0F3D91",
"accent_color": "#FFB400",
"product_name_override": "Acme FieldView",
"support_email": "support@acme.com",
"support_url": "https://help.acme.com",
"email_from_name": "Acme Claims",
"pdf_footer_text": "Acme Insurance — claim report",
"updated_at": "2026-05-10T14:00:00Z"
} | Campo | Tipo | Notas |
|---|---|---|
logo_url | URL | Cuadrado o apaisado; se renderiza a 40px de alto en la cabecera de la SPA, 64px en la cabecera del PDF. |
wordmark_url | URL | Opcional. Se usa junto a logo_url en marcos más anchos. |
favicon_url | URL | PNG / ICO de 32×32. Servido desde su CDN; no se replica. |
primary_color | hex (#rrggbb) | Acento principal: se usa para botones, enlaces y la banda de portada del PDF. |
accent_color | hex (#rrggbb) | Acento secundario: se usa para resaltes, insignias y trazos de sparkline. |
product_name_override | string ≤ 120 | Reemplaza "NexBasira" en las cadenas visibles para el usuario (título de página, líneas de asunto de correo). |
support_email | Se muestra en las páginas de error + en los pies de los correos de invitación. Vacío = valor predeterminado de la plataforma. | |
support_url | URL | Igual: enlaza desde el menú de ayuda de la SPA. |
email_from_name | string ≤ 120 | Nombre del remitente en el correo transaccional saliente (aun así enrutado a través de nuestro dominio autenticado para preservar la alineación DMARC). |
pdf_footer_text | string ≤ 255 | Pie de página de una línea en cada página del informe de auditoría en PDF. |
Cadena vacía en cualquier campo = valor predeterminado de la plataforma. La fila de marca se crea automáticamente en el primer GET, por lo que nunca verá un 404 aquí.
Leer la marca
GET /api/v1/public/branding — alcance branding:read
curl https://app.nexbasira.com/api/v1/public/branding \
-H "Authorization: Bearer nb_sec_..." Actualizar la marca
PATCH /api/v1/public/branding — alcance branding:write
Actualización parcial: proporcione solo los campos que desee cambiar. Envíe "" en cualquier campo para revertirlo al valor predeterminado de la plataforma. Los colores hex se validan contra #rrggbb; un valor no válido devuelve 400.
curl -X PATCH https://app.nexbasira.com/api/v1/public/branding \
-H "Authorization: Bearer nb_sec_..." \
-H "Content-Type: application/json" \
-d '{
"primary_color": "#0F3D91",
"logo_url": "https://cdn.acme.com/logo-2026.png"
}' Devuelve el objeto de marca recién actualizado. El cambio es inmediato en la siguiente carga de página: no hay caché de CDN que invalidar para la SPA. Para los correos de invitación + PDFs, la nueva marca se aplica a todo lo generado después de que el PATCH se aplique.
Errores comunes
| Estado | Código | Cuándo |
|---|---|---|
| 400 | validation_error | Color hex no válido, URL mal formada o cadena que supera la longitud máxima. |
| 403 | permission_denied | La credencial carece del ámbito (branding:read para GET, branding:write para PATCH). |
Notas
- Sin carga de imágenes. La plataforma no aloja sus recursos: proporcione URLs HTTPS a imágenes que ya sirva desde su CDN. Esto mantiene la invalidación de caché bajo su control.
- Cumplimiento del mismo origen. Las URLs del logotipo + favicon deben servir
Access-Control-Allow-Origin: *(o el origen de su SPA) para que el navegador pueda renderizarlas dentro del widget embebido en iframe. - Auditado. Cada PATCH registra un evento de auditoría
org.branding_updatedcon el diff a nivel de campo, de modo que un logotipo manipulado es rastreable hasta una credencial + marca de tiempo.