Manual de Referencia: Manejo de API's en CONTPAQi®
×
Menú

2. API Descarga de CFDIs para ISVs v1

 
Con esta API podrás descargar los CFDIs Emitidos o Recibidos, tanto timbrados y cancelados, así como la metadata correspondiente por medio del web service del SAT (por lo que en cualquier momento puede cambiar).
 
Flujo de descargas asíncrono:
 
                                  Solicitud (1 petición) + Verificación (n peticiones) + Obtención URLs descarga (1 petición)
 
 
La API opera bajo las reglas de los servicios de descarga del SAT:
 
Recupera hasta 200 mil registros por solicitud.
Para descargar CFDIs se requiere la FIEL.
Limita a un máximo de 3 veces una descarga idéntica (el SAT lo contabiliza por cualquier origen de descarga). Cuando se exceda a este límite puedes modificar alguno de los parámetros, pudiendo aumentar la hora de la fecha fin para que ya no sea idéntico, pero si considera que se van a ir quemando los rangos según las peticiones que realices.
Tiempo máximo de 72 hrs para que una solicitud de descarga sea atendida.
Descarga por un solo RFC, por tipo (Emitidos, Recibidos) y rango de fechas.
 
 
Beneficio agregado:
 
Servicio REST: Una arquitectura que se integra fácilmente a cualquier lenguaje.
En una sola solicitud recupera los CFDIs y la metadata correspondiente.
Autenticación y solicitud en un solo método.
Recepción de la FIEL con un mecanismo de encriptación.
 
 
Antes de consumir esta API es importante que hayas realizado el proceso de encriptación de la FIEL, pues los métodos de la API solicitarán las 3 llaves y la contraseña encriptada, recuerda que para hacer esto debes de:
 
Haber obtenido la llave de transporte por medio de la API Obtención de llave pública v1 (Recuerda que solo debes recuperar la llave pública una única vez o cuando llegara a cambiar, NO por petición).
Implementado el algoritmo de encriptación.
 
 
Métodos o Endpoints de la API:
 
1. POST: Genera una nueva solicitud de descarga de CFDIs.
2. GET: Obtiene el detalle de una solicitud de descarga.
3. GET: Obtiene las URLs con los archivos obtenidos en la solicitud de la descarga.
 
1. POST Genera una nueva solicitud de descarga de CFDIs.
Con este método inicias el flujo de descargas hacia el SAT, ya que haces la solicitud de descarga, se recibe la solicitud de descarga y se responde síncronamente con un operationID, el cual deberás persistir durante todo el flujo pues el identificador de la operación asíncrona.
 
Encabezado de la solicitud:
 
Campo
Tipo
Descripción
 
License-Code
 
String
Código de licencia de la cuenta CONTPAQi® Nube que tiene disponible CONTPAQi® Descargas.
Puedes acceder a él desde tu perfil.
Obligatorio.
 
Subscription-Key
 
String
Clave de suscripción que proporciona acceso a esta API. Se genera una vez que te suscribiste al producto CONTPAQi® Descargas. Se encuentra en tu perfil.
Obligatorio.
EncryptedCertificate
String
Llave pública de la FIEL encriptada de forma simétrica con AES con la llave de sesión.
EncryptedPrivateKey
String
Llave privada de la FIEL encriptada de forma simétrica con AES con la llave de sesión.
EncryptedPassPhrase
String
Contraseña encriptada de forma simétrica con AES con la llave de sesión.
 
EncryptedTransportKey
 
String
Llave de sesión (Arreglo aleatorio de bytes) encriptado con la llave pública de los servicios de encriptación de certificados de CONTPAQi® Nube con algoritmo RSA OaepSHA256.
 
 
Cuerpo de la solicitud:
 
Fecha de inicio de descarga.
Fecha de fin de descarga.
RFC.
Tipo de solicitud: 1: Emitidos, 2: Recibidos.
 
 
 
Respuesta esperada:
 
operationID: Identificador de la operación asíncrona
RFC: Corresponde al de la FIEL
requestType: Emitido o Recibido
startDate: Fecha de inicio de descarga
endDate: Fecha fin de descarga
totalDownloadDocuments: Cantidad de XMLs descargados 
status: Estado de la solicitud (Pendiente, error, rechazada o Terminado)
detail: Mensaje detalle de error o estado
creationDate: Fecha de la solicitud
 
 
Consideraciones:
 
Realiza solo 1 petición a este método por solicitud de descarga.
Usualmente las peticiones a este método responden con estado Pendiente, ya que es un proceso asíncrono y lleva tiempo en tener respuesta por los servicios del SAT; por lo que ya se podría consultar el status de la solicitud a través del método GET Obtiene el detalle de una solicitud de descarga.
Si por alguna razón respondiera con estado Terminado, ya se podrá solicitar la obtención de las URLs con los archivos obtenidos en la solicitud de la descarga.
En caso de responder con estado Terminado, pero con cero documentos a descarga, se finaliza el flujo, ya que no se debe tratar de obtener las URLs por qué no existen XMLs por descargar bajo los parámetros de la solicitud.
Si por alguna razón respondiera con estado Error, Rechazada, se finaliza el flujo de descargas.
En el flujo asíncrono de descargas, este método solo debe de consumirse una vez por descarga, en caso contrario cada petición será una nueva solicitud de descargas.
Debe corresponder todos los valores de la FIEL.
La validación de la FIEL se realizará en una etapa posterior al envío de la solicitud; la FIEL debe estar vigente: no caduca, ni revocada.
Todos los documentos descargados cuentan en su licenciamiento, aun cuando sea el mismo XML que descargues varias veces por distintas solicitudes.
 
2. GET Obtiene el detalle de una solicitud de descarga.
Una vez que se obtuvo respuesta de la solicitud de descarga y su estatus fue Pendiente, podrás utilizar este método para consultar el detalle de la solicitud por medio de operationID.
 
Estatus de la solicitud:
 
Pendiente: La solicitud se está procesando o se encuentra pendiente de procesar.
Error: Ocurrió un error con la solicitud, verifica el detalle para más información del error.
Rechazada: Ya hiciste una solicitud de descarga con los mismos datos.
Terminado: La solicitud terminó de procesarse y ya es posible descargar los documentos.
 
Parámetros de solicitud:
 
Campo
Tipo
Descripción
operationID
String
Format - uuid. ID de la solicitud de descarga
 
 
Encabezado de la solicitud:
 
Campo
Tipo
Descripción
License-Code
String
Código de licencia de la cuenta CONTPAQi® Nube que tiene disponible CONTPAQi® Descargas.
Puedes acceder a él desde tu perfil.
Obligatorio.
Subscription-Key
String
Clave de suscripción que proporciona acceso a esta API. Se genera una vez que te suscribiste al producto CONTPAQi® Descargas. Se encuentra en tu perfil.
Obligatorio.
 
Respuesta esperada:
 
operationID: Identificador de la operación asíncrona
RFC: Corresponde al de la FIEL
requestType: Emitido o Recibido
startDate: Fecha de inicio de descarga
endDate: Fecha fin de descarga
totalDownloadDocuments: Cantidad de XMLs descargados 
status: Estado de la solicitud (Pendiente, error, rechazada o Terminado)
detail: Mensaje detalle de error o estado
creationDate: Fecha de la solicitud
 
Consideraciones:
Realiza máximo 1 petición por hora por solicitud para este método siempre y cuando el estatus sea Pendiente.
El Total de documentos tendrá valor hasta que el estado cambié a Terminado.
Cuando responda con estatus Terminado y el Total de documentos sea mayor a cero, ya no deberás de realizar más peticiones a este método, si no que deberás de consumir el método GET Obtiene las URLs con los archivos obtenidos en la solicitud de la descarga, pues ya están disponibles las URLs donde se encuentran los archivos .ZIP que contienen los XMLs y el JSON con la metadata que se descargaron del SAT.
Cuando responda con estatus Terminado y el Total de documentos sea cero, debes finalizar el flujo de descarga, por lo que ya no deberás de hacer peticiones a este método ni al método GET Obtiene las URLs con los archivos obtenidos en la solicitud de la descarga pues no hay archivos que descargar.
Tienes hasta un máximo de 2 horas para recuperar las URLs de descargas una vez que consultaste el detalle de una solicitud.
Recuerda que debes persistir el operationID para continuar con el flujo de descargas correctamente.
 
 
 
3. GET Obtiene las URLs con los archivos obtenidos en la solicitud de la descarga.
Regresa URLs para descargar archivos zips con los CFDIs y para descargar archivos de texto (JSON) con la metadata de los CFDIs.
 
Podrás usar este método solo si el método GET Obtiene el detalle de una solicitud de descarga haya respondido con estado Terminado y con total de documentos (totalDownloadDocuments) mayor a cero.
 
En caso contrario no debes consumirlo para el OperationID o solicitud de descarga, finalizando el flujo de la solicitud.
 
Parámetros de solicitud:
 
 
Campo
Tipo
Descripción
operationID
String
Format - uuid. ID de la solicitud de descarga.
 
 
Encabezado de la solicitud:
 
Campo
Tipo
Descripción
License-Code
String
Código de licencia de la cuenta CONTPAQi® Nube que tiene disponible CONTPAQi® Descargas.
Puedes acceder a él desde tu perfil.
Obligatorio.
Subscription-Key
String
Clave de suscripción que proporciona acceso a esta API. Se genera una vez que te suscribiste al producto CONTPAQi® Descargas. Se encuentra en tu perfil.
Obligatorio.
EncryptedCertificate
String
Llave pública de la FIEL encriptada de forma simétrica con AES con la llave de sesión.
EncryptedPrivateKey
String
Llave privada de la FIEL encriptada de forma simétrica con AES con la llave de sesión.
EncryptedPassPhrase
String
Contraseña encriptada de forma simétrica con AES con la llave de sesión.
EncryptedTransportKey
String
Llave de sesión (Arreglo aleatorio de bytes) encriptado con la llave pública de los servicios de encriptación de certificados de CONTPAQi® Nube con algoritmo RSA OaepSHA256.
 
Respuesta esperada:
 
metadataURLs: URL archivo JSON con la metadata de los XMLs descargados.
cfdiURLs: Lista de URLs de donde podrás descargar los "N" ZIPs con los XMLs descargados.
 
 
Consideraciones:
 
Realiza solo 1 petición de este método por solicitud de descargas u OperationID, por lo que debes de persistir las URLs para que en tu flujo puedas ir descargando los ZIPs.
Tienes hasta un máximo de 2 horas para recuperar las URLs de descargas una vez que consultaste el detalle de una solicitud.
El tiempo de vida para ingresar a las URLs y descargar los archivos, tiene una vigencia de 2 horas para que puedas acceder a ellas, de lo contrario, si ya transcurrió este tiempo, las podrás obtener nuevamente  pero las URLs cambiarán y tendrán una nueva vigencia de 2 horas.
Te recomendamos administrar tu flujo y evitar peticiones innecesarias para obtener un funcionamiento óptimo.
Persiste hasta este punto el OperationID para que puedas concluir el flujo de la solicitud.
En este método se requiere también las tres llaves y la contraseña encriptada de la FIEL.
Los datos de la FIEL deben corresponder con los mismos de la solitud (OperationID), cuida la consistencia y persistencia. No debes cruzar datos entre distintas FIELES. Los datos deben ser consistentes durante todo el flujo
 
 
Datos incluidos en la metadata:
 
Uuid    
RfcEmisor    
NombreEmisor         
RfcReceptor
NombreReceptor
RfcPac
FechaEmision
FechaCertificacionSat    
Monto    
EfectoComprobante
Estatus    
FechaCancelacion