Saltar al contenido principal

Compartir y Embed

Esta referencia cubre los endpoints autenticados y publicos del sistema de compartir.

Grupos de Endpoints

GrupoBase
Contextos de compartir/api/v1/share-contexts
Shares de dashboard/api/v1/dashboards/:id/shares, /api/v1/dashboard-shares
Autenticacion externa por correo/api/v1/share-auth
Portal externo autenticado/api/v1/share-portal
Shares publicos por token/api/v1/public/shares/:token
Generacion de embed (autenticado)/api/v1/embed
Consumo de embed (publico)/api/embed
Auditoria/analytics de compartir/api/v1/share-events, /api/v1/share-analytics

1) Contextos de Compartir

Todos requieren JWT interno (Authorization: Bearer <access_token>).

MetodoEndpointDescripcion
GET/api/v1/share-contextsLista contextos de la compania
GET/api/v1/share-contexts/:idDetalla un contexto
POST/api/v1/share-contextsCrea contexto
PUT/api/v1/share-contexts/:idActualiza contexto
PUT/api/v1/share-contexts/:id/grantsActualiza grants del contexto
DELETE/api/v1/share-contexts/:idElimina contexto
GET/api/v1/share-contexts/:id/membersLista miembros
POST/api/v1/share-contexts/:id/membersAgrega miembro (internal_user, group, external_email)
DELETE/api/v1/share-contexts/:id/members/:memberIdElimina miembro

Ejemplo: agregar miembro externo por correo

{
"member_type": "external_email",
"email": "cliente@empresa.com"
}

2) Shares de Dashboard

Tambien requieren JWT interno.

MetodoEndpointDescripcion
GET/api/v1/dashboards/:id/sharesLista shares del dashboard
POST/api/v1/dashboards/:id/sharesCrea share (link o embed)
GET/api/v1/dashboard-sharesLista shares de la compania (paginado)
PUT/api/v1/dashboard-shares/:shareIdActualiza share
DELETE/api/v1/dashboard-shares/:shareIdRevoca share
GET/api/v1/dashboards/:id/share-filter-candidatesLista filtros candidatos para politicas
GET/api/v1/dashboards/:id/embed-parameter-candidatesLista parametros candidatos para embed

Payload de creacion (POST /api/v1/dashboards/:id/shares)

{
"name": "Clientes externos",
"share_type": "link",
"share_context_id": "65f0f4d7b3f0b902f7f7e123",
"expires_at": "2026-12-31T23:59:59.000Z",
"embed_options": {
"allowed_origins": ["https://portal.cliente.com"],
"hide_header": true,
"hide_controls": false
},
"share_filter_policies": [
{
"filter_slug": "status",
"filter_kind": "multi_select",
"mode": "selectable",
"allowed_values": ["Activo", "Pendiente"]
}
]
}

3) Autenticacion Externa por Correo (share-auth)

Publico (sin JWT interno).

MetodoEndpointDescripcion
POST/api/v1/share-auth/requestSolicita codigo de login
POST/api/v1/share-auth/verifyVerifica codigo y devuelve tokens share_access / share_refresh
POST/api/v1/share-auth/refreshRenueva tokens externos
POST/api/v1/share-auth/logoutLogout stateless

Request de codigo

{
"company_slug": "acme",
"email": "cliente@empresa.com"
}

Verify de codigo

{
"company_slug": "acme",
"email": "cliente@empresa.com",
"code": "1234-5678"
}

Respuesta de verify

{
"access_token": "eyJ...",
"refresh_token": "eyJ...",
"access_token_expires_in": 600,
"refresh_token_expires_in": 604800,
"user": {
"id": "...",
"email": "cliente@empresa.com",
"status": "active"
}
}

4) Portal Externo Autenticado (share-portal)

Requiere token externo (Authorization: Bearer <share_access_token>).

MetodoEndpointDescripcion
GET/api/v1/share-portal/contextsLista contextos accesibles
GET/api/v1/share-portal/:company_slug/contextsLista contextos por company slug
GET/api/v1/share-portal/dashboards?context_id=...Lista dashboards por contexto
GET/api/v1/share-portal/:company_slug/dashboardsLista dashboards de la compania (agregado por contextos)
GET/api/v1/share-portal/dashboards/:id?context_id=...Detalla dashboard
GET/api/v1/share-portal/:company_slug/dashboards/:dashboard_slug?context_id=...Detalla dashboard por slug
GET/api/v1/share-portal/dashboards/:id/filters/:filter_slug/options?context_id=...&search=...Resuelve opciones de filtro
GET/api/v1/share-portal/:company_slug/dashboards/:dashboard_slug/filters/:filter_slug/options?context_id=...&search=...Resuelve opciones por slug
POST/api/v1/share-portal/dashboards/:id/executeEjecuta dashboard
POST/api/v1/share-portal/:company_slug/dashboards/:dashboard_slug/executeEjecuta dashboard por slug

Execute (POST) body

{
"context_id": "65f0f4d7b3f0b902f7f7e123",
"parameters": {
"status": ["Activo"]
}
}

5) Shares Publicos por Token (/api/v1/public)

Sin autenticacion.

MetodoEndpointDescripcion
GET/api/v1/public/shares/:token/resolveResuelve token y devuelve requires_auth
GET/api/v1/public/shares/:token/filters/:filter_slug/options?search=...Resuelve opciones de filtro (select/multi_select)
POST/api/v1/public/shares/:token/executeEjecuta share cuando requires_auth=false

Execute (POST) body

{
"parameters": {
"period_start": "2025-01-01",
"period_end": "2025-12-31"
}
}

6) Embed

6.1 Generacion de token/embed URL (JWT interno)

MetodoEndpointDescripcion
POST/api/v1/embed/dashboards/:idGenera embed de dashboard
POST/api/v1/embed/visualizations/:idGenera embed de visualizacion

Body soportado:

{
"fixed_params": { "region": "sur" },
"allowed_params": ["seller_id"],
"required_params": ["region"],
"expires_in": 3600
}

6.2 Consumo publico stateless

MetodoEndpointDescripcion
GET/api/embed/d/:token/infoMetadatos del dashboard
GET/api/embed/d/:token/filters/:filter_slug/options?search=...Opciones dinamicas de filtro en embed
POST/api/embed/d/:token/executeEjecuta dashboard
GET/api/embed/v/:token/infoMetadatos de visualizacion
POST/api/embed/v/:token/executeEjecuta visualizacion

7) Auditoria y Analytics de Compartir

Requiere JWT interno.

MetodoEndpointDescripcion
GET/api/v1/share-eventsLista eventos de compartir/autenticacion
GET/api/v1/share-events/:idDetalla evento
GET/api/v1/share-analyticsDevuelve analytics agregados

Opciones Dinamicas para multi_select

Los 3 modos (publico, portal y embed) exponen endpoint de opciones para filtros select y multi_select.

Respuesta:

{
"filter_slug": "status",
"options": [
{ "label": "Activo", "value": "Activo" }
],
"source": "dynamic"
}
  • source=static: opciones estaticas del filtro.
  • source=dynamic: opciones de SQL del filtro.
  • source=policy: opciones restringidas por politica del share.

Errores Frecuentes

error_codeDonde apareceSignificado
AUTH_REQUIREDpublic/shares/:token/*El share exige login externo
INVALID_CONTEXT_IDshare-portal/*context_id ausente/invalido
FILTER_DISABLED_BY_POLICY*/filters/:filter_slug/optionsFiltro no disponible por politica
DB_QUERY_ERROR*/filters/:filter_slug/optionsFalla SQL de opciones dinamicas
SHARE_FILTER_POLICY_VIOLATIONshare-portal .../executeParametros violan politica
TOKEN_INVALIDpublic/embed/portalToken invalido o expirado

Guias Relacionadas