# Descargar CFDI o CR #

Obtiene el Xml,el Xml y la representación impresa o únicamente la representación impresa de un CFDI o CR disponible en la plataforma de Induxsoft.

Este servicio requiere autenticación por usuario o por CTD (Cuenta de Transacciones Digitales)/CTI (Cuenta de Timbrado Induxsoft), por lo que deberá presentar el par de credenciales (usuario/contraseña) o un Id de sesión válido.

End point: https://factudesk.api.induxsoft.net/comprobantes/descargar/

Solicitud POST con usuario y contraseña
```
Method: POST
Content-Type: application/json;charset=utf-8
{
  "uid":"Id de usuario (correo o teléfono móvil)",
  "pwd":"Contraseña del usuario",
  "doc":"UUID del CFDI o Idd",
  "tpo":"cfdi/cr (opcional)",
  "res":"(Opcional) tipo de resultado deseado",
  "pln":"(Opcional) Identificador de plantilla de representación impresa"
}
```
Solicitud POST con Id de sesión
```
Method: POST
Content-Type: application/json;charset=utf-8
{
  "ids":"Id de sesión válido",
  "doc":"UUID del CFDI o Idd",
  "tpo":"cfdi/cr (opcional)",
  "res":"(Opcional) tipo de resultado deseado",
  "pln":"(Opcional) Identificador de plantilla de representación impresa"
}
```

Solicitud POST con cuenta de timbrado y contraseña
```
Method: POST
Content-Type: application/json;charset=utf-8
{
  "cti":"Cuenta de timbrado",
  "pwd":"Contraseña de la cuenta de timbrado",
  "doc":"UUID del CFDI o Idd",
  "tpo":"cfdi/cr (opcional)",
  "res":"(Opcional) tipo de resultado deseado",
  "pln":"(Opcional) Identificador de plantilla de representación impresa"
}
```
Solicitud GET con Id de sesión
```
https://factudesk.api.induxsoft.net/comprobantes/descargar/?uid=id-de-usuario&pwd=contraseña&doc=uuid-o-idd&tpo=cfdi/cr&res=opc&pln=id-plantilla
```
Solicitud GET con usuario y contraseña
```
https://factudesk.api.induxsoft.net/comprobantes/descargar/?uid=id-de-usuario&pwd=contraseña&doc=uuid-o-idd&tpo=cfdi/cr&res=opc&pln=id-plantilla
```

Solicitud GET con cuenta de timbrado y contraseña
```
https://factudesk.api.induxsoft.net/comprobantes/descargar/?cti=cuenta-de-timbrado&pwd=contraseña-de-la-cuenta&doc=uuid-o-idd&tpo=cfdi/cr&res=opc&pln=id-plantilla
```
El parámetro ```doc``` será el UUID de un CFDI o una constancia de retención, si se requiere más de 1, deberán delimitarse por comas. Tratándose de descarga de más de un comprobante, únicamente se admitirán en ```res``` los valores: ziplnk y zipraw, siendo predeterminado ziplnk. El máximo de comprobantes a devolver será de 50.

El parámetro ```tpo``` indica el tipo de documento solicitado: cfdi-CFDI o cr-Constancia de retención, si se omite, se asume el valor cfdi como predeterminado.

Opciones para el parámetro res:
* xmllnk - Se obtendrá un enlace temporal al documento Xml del CFDI
* prnlnk - Se obtendrá un enlace temporal al documento (pdf) de la representación impresa
* ziplnk - Se obtendrá un enlace a un archivo zip que contiene tanto el xml como su representación impresa
* xmljsn - la respuesta será un objeto JSON con el Xml del CFDI como cadena JSON
* xmlb64 - (Valor predeterminado) la respuesta será un objeto JSON con el Xml del CFDI codificado como base 64 (Xml UTF-8 con BOM)
* xmltxt - El Xml del CFDI con encabezado HTTP ```Content-type: text/xml```
* xmlraw - El Xml del CFDI con encabezado HTTP ```Content-type: application/octet-stream```
* prnraw - El contenido de la representación impresa con encabezado HTTP ```Content-type: application/octet-stream```
* prnpdf - El contenido de la representación impresa con encabezado HTTP ```Content-type: application/pdf```
* zipraw - El contenido de un archivo Zip con el Xml del CFDI y su representación impresa con encabezado HTTP ```Content-type: application/octet-stream```
* links - Se obtendrá un enlace temporal por cada documento pdf, Xml y zip

Parámetro pln
Es una cadena que identifica una plantilla de generación de representación impresa previamente alojada y disponible en la plataforma, si se omite se aplicarán las reglas configuradas en el emisor de FactuDesk Web.

### Respuesta exitosa ###

Para las opciones de resultado xmljsn y xmlb64:
```
Content-Type: application/json;charset=utf-8
{
  "success":true,
  "data": 
  {
  	"content":"El Xml del CFDI como una cadena o un byte array base 64"
  }
}
```

Para las opciones de resultado xmllnk, prnlnk y ziplnk:
```
Content-Type: application/json;charset=utf-8
{
  "success":true,
  "data": 
  {
  	"link":"Enlace temporal al archivo a descargar"
  }
}
```
Para la opción de resultado links:
```
Content-Type: application/json;charset=utf-8
{
  "success":true,
  "data": 
  {
  	"link_pdf":"Enlace temporal al archivo pdf del CFDI",
    "link_xml":"Enlace temporal al archivo xml del CFDI",
    "link_zip":"Enlace temporal al archivo zip, con la representación impresa del CFDI y el archivo xml"
  }
}
```

Para las opciones de resultado xmltxt, xmlraw, prnraw, prnpdf y zipraw:
Se inicia la descarga del contenido directamente (generalmente el navegador descargará o abrirá el archivo).

### Respuesta error ###
Para las opciones xmljsn, xmlb64, xmllnk, prnlnk y ziplnk la respuesta de error será igualmente un objeto JSON de la forma estándar:
```
Content-Type: application/json;charset=utf-8
{
	"success":false,
	"message":"Mensaje de error"
}
```
Para las opciones xmltxt, xmlraw, prnraw, prnpdf y zipraw en caso de error se devolverá una página Html con el mensaje correspondiente al usuario.

