Obtener un asset público de Docs
Sirve un fichero de media público de Docs ya generado desde `GET /api/public/docs/assets/{path}`. La ruta es pública y de solo lectura; devuelve media binaria solo después de limpiar la ruta solicitada y mantenerla dentro de la raíz de assets de Docs configurada.
En este artículo
Usa esta guía cuando un artículo de ayuda público muestre un clip o imagen ausente, o cuando necesites verificar que la experiencia de Docs de la landing puede cargar media empaquetada sin sesión de la app.
La ruta de assets no elige por sí misma locale, plataforma ni tema. El detalle del artículo hace primero esa selección y devuelve valores `article.media[].src` que ya apuntan a la URL pública del asset.
La respuesta es el fichero de media, no un artículo JSON de Docs. Mantén la resolución de problemas centrada en la raíz de assets de Docs y en la ruta relativa exacta.
Antes de empezar
- El backend está en ejecución con las rutas públicas de Docs registradas.
- `DOCS_ASSETS_PATH` o la ruta de assets de Docs configurada apunta a la media generada de Docs. Si no hay una ruta de assets explícita configurada, los assets se leen desde `{DOCS_CONTENT_PATH}/assets`.
- El fichero de media existe bajo esa raíz. Ejemplo: `iphone/light/es/responder-invitacion-ubicacion/access-invites-location-accept-flow.mp4`.
- El proceso del backend puede leer el fichero de destino.
Instrucciones
- 1.
Parte de la URL pública del asset
Usa la URL de asset devuelta por un artículo público de Docs, o llama directamente a `GET /api/public/docs/assets/iphone/light/es/responder-invitacion-ubicacion/access-invites-location-accept-flow.mp4`. No se requiere inicio de sesión, organización, ubicación, miembro del personal ni rol.
- 2.
Deja que el backend resuelva el fichero de forma segura
El handler limpia la ruta, la une a la raíz de assets de Docs configurada y rechaza las rutas que resuelven fuera de esa raíz. Esta ruta sirve solo ficheros de media de Docs, no objetos del almacén de ficheros de la app, enlaces de S3 ni registros `/api/app/files/{id}`.
- 3.
Comprueba la respuesta de media
Si el destino existe y no es un directorio, el backend transmite los bytes de la media. Para `.mp4`, espera un tipo de contenido de vídeo cuando la extensión se reconoce y la política de caché de assets de Docs configurada, que por defecto es `public, max-age=31536000, immutable`.
- 4.
Localiza la ruta del asset desde el detalle del artículo
Si la ruta del asset es desconocida, solicita `GET /api/public/docs/accesos-e-invitaciones/es-responder-invitacion-ubicacion?locale=es&platform=mobile&theme=light` e inspecciona `article.media[].src`. Locale, plataforma y tema se aplican ahí antes de hacer la petición del asset.
Validaciones y límites
- Solo se aceptan `GET` y el `HEAD` soportado por la implementación; cualquier otro método devuelve `metodo no permitido`.
- Llamar a `/api/public/docs/assets` sin ruta de fichero devuelve `archivo no encontrado`.
- Las rutas en blanco, de solo punto, todavía relativas o que escapan de la raíz devuelven `archivo invalido`.
- Los ficheros ausentes y las rutas de directorio devuelven `archivo no encontrado`.
- Si el contenido de Docs no está configurado, la ruta devuelve `documentacion no configurada`.
- La ruta es pública y de solo lectura; no crea tickets, registros de media, ficheros de captura, usuarios, organizaciones, ubicaciones ni entradas del almacén de ficheros.
- El handler de assets no comprueba `articles.json` ni el estado de publicación de la media para peticiones directas de assets.
- `locale`, `platform`, `theme` y los parámetros de búsqueda afectan al detalle del artículo, no al servicio directo de assets.
Resultado esperado
El navegador o el cliente de API recibe el fichero de media existente de Docs desde la raíz de assets configurada con las cabeceras de caché y contenido aplicables. No cambia ningún dato autenticado de la app.