Acceso a la cuenta y al documento
Descargue un archivo adjunto existente de un proyecto de portabilidad perteneciente a su cuenta de API. Utilice una cuenta de API habilitada mediante HTTPS desde una dirección IP permitida. El proyecto no debe estar eliminado. El identificador del documento se busca dentro de ese proyecto; no es un enlace público global de descarga.
Identificar el documento
Lea la respuesta con los detalles del proyecto y utilice una entrada de su lista uploads. La entrada incluye el valor numérico de id, el nombre original del archivo, la extensión almacenada y la URL relativa de download_url. Utilice el valor del proyecto indicado en uniqueid y ese identificador de carga, no el identificador numérico de la fila del proyecto ni el identificador de una fila de número telefónico.
Resuelva las URL relativas devueltas únicamente con respecto al servidor de API de confianza que haya configurado. La descarga requiere la misma autenticación de la cuenta; los metadatos del documento no conceden acceso sin autenticación.
Solicitar y guardar la respuesta
Establezca PROJECT_ID y DOCUMENT_ID con los valores del proyecto de su cuenta. Aplique la codificación URL al identificador del proyecto. Este ejemplo guarda los bytes y las cabeceras de respuesta por separado, utilizando un nombre de salida local fijo en lugar de confiar en el nombre del archivo adjunto.
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
--dump-header document-headers.txt \
--output porting-document.bin \
"https://api.multitel.net/v3/lnp/project/$PROJECT_ID/document/$DOCUMENT_ID"La solicitud es GET y no tiene cuerpo. Lee un único archivo adjunto completo, sin paginación específica del punto de acceso, sin envoltorio JSON y sin un contrato documentado de descarga por rangos.
Respuesta binaria y cabeceras
Si la operación se realiza correctamente, el cuerpo contiene los bytes almacenados del archivo adjunto después del paso de descodificación del almacenamiento heredado, no base64 ni un objeto de respuesta JSON. El método envía una cabecera Content-Disposition de archivo adjunto con el nombre de archivo almacenado, del que se eliminan las comillas dobles. No se garantiza que la cabecera esté codificada conforme a los estándares ni que sea una ruta de archivo local segura; elija su propio nombre para el archivo de destino.
| Extensión almacenada | Content-Type |
|---|---|
| application/pdf | |
| png | image/png |
| jpg, jpeg | image/jpeg |
| doc | application/msword |
| Otros valores | application/octet-stream |
La comparación de extensiones no distingue entre mayúsculas y minúsculas. El tipo MIME se selecciona a partir de la extensión almacenada, no mediante una inspección del contenido, y no garantiza que el documento sea válido.
Verificar el archivo descargado
- Revise tanto el estado HTTP como las cabeceras de respuesta. Los errores de autenticación o de búsqueda pueden devolver una respuesta JSON de la API en lugar de un archivo. No considere que cualquier cuerpo no vacío o archivo de salida guardado sea una descarga correcta de un PDF.
- Si el cuerpo contiene un error JSON, revise
status.codeystatus.msg. Mantenga la salida de error separada del documento esperado. - Compruebe que el archivo resultante no esté vacío y que se abra como el tipo esperado. Si conserva el original, compare su suma de comprobación con la de la copia antes de confiar en ella.
- Si el resultado está vacío, no es válido o difiere del original, deténgase y solicite al equipo de soporte que revise el archivo adjunto almacenado. Las descargas repetidas no reparan el almacenamiento.
Compatibilidad con el almacenamiento heredado
La vía de carga actual de la API y los componentes de escritura de cargas del portal y del sistema heredado que se han revisado almacenan los bytes de los documentos con secuencias de escape. Esta descarga revierte ese proceso de escape. Las pruebas sin conexión del controlador real conservan todos los valores de bytes y las barras invertidas literales para ese formato de almacenamiento.
Esto no constituye una garantía para todos los registros históricos o importados de fuentes externas. El controlador siempre descodifica el bloque binario almacenado y no detecta si un registro se importó sin las secuencias de escape esperadas. Tampoco recurre a una ruta de archivo cuando un registro no tiene un bloque binario almacenado. Estos registros pueden producir bytes alterados o un resultado vacío. Verifique el resultado y solicite al equipo de soporte que investigue el archivo adjunto afectado en lugar de modificar un documento del cliente o suponer que sus metadatos demuestran que el archivo está disponible.
El portal actual utiliza primero esta ruta de la API y dispone de mecanismos locales de respaldo adicionales. Una descarga correcta desde el portal no demuestra que todos los registros heredados se puedan descargar directamente mediante esta API.
Errores y efectos
Si el proyecto no existe, está eliminado o no pertenece a la cuenta, se devuelve el código 404 de la API con un mensaje de proyecto no encontrado. Si no existe la carga dentro de un proyecto perteneciente a la cuenta, se devuelve el código 404 de la API con un mensaje de documento no encontrado. Lea los cuerpos de error de la API, además del estado HTTP. Este controlador no dispone de una respuesta específica y fiable de no encontrado para los registros que existen pero carecen de bytes almacenados útiles.
El punto de acceso revisado lee un archivo adjunto. No carga, modifica ni elimina documentos, no envía solicitudes de portabilidad ni realiza cargos en la cuenta. Los archivos adjuntos de portabilidad pueden contener información de identidad, facturación o autorización: manténgalos dentro de los flujos de trabajo autorizados de la cuenta y fuera de los registros públicos, los sistemas de análisis y las capturas de pantalla de la documentación.