# Enviar CFDI o CR #

Envía como archivos adjuntos por correo electrónico 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/enviar/

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",
  "to":"Dirección de correo del destinatario",
  "from": "Nombre para mostrar del remitente (opcional)",
  "cc":"Dirección de correo cc (opcional)",
  "cco":"Dirección de correo de copia oculta (opcional)",
  "reply":"Dirección de correo de respuesta (opcional)",
  "subject":"Asunto del mensaje de correo",
  "body":"Cuerpo del mensaje de correo (opcional)",
  "tpo":"cfdi/cr (opcional)",
  "res":"(Opcional) tipo de resultado deseado",
  "pln":"(Opcional) Identificador de plantilla de representación impresa",
  "nombre_archivo":"(Opcional) Nombre de los archivos adjuntos, sin extensión",
  "smtp": { (Opcional) Objeto con la configuración del SMTP para el relay }
}
```
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",
  "to":"Dirección de correo del destinatario",
  "from": "Nombre para mostrar del remitente (opcional)",
  "cc":"Dirección de correo cc (opcional)",
  "cco":"Dirección de correo de copia oculta (opcional)",
  "reply":"Dirección de correo de respuesta (opcional)",
  "subject":"Asunto del mensaje de correo",
  "body":"Cuerpo del mensaje de correo (opcional)",
  "tpo":"cfdi/cr (opcional)",
  "res":"(Opcional) tipo de resultado deseado",
  "pln":"(Opcional) Identificador de plantilla de representación impresa",
  "nombre_archivo":"(Opcional) Nombre de los archivos adjuntos, sin extensión",
  "smtp": { (Opcional) Objeto con la configuración del SMTP para el relay }
}
```
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",
  "to":"Dirección de correo del destinatario",
  "from": "Nombre para mostrar del remitente (opcional)",
  "cc":"Dirección de correo cc (opcional)",
  "cco":"Dirección de correo de copia oculta (opcional)",
  "reply":"Dirección de correo de respuesta (opcional)",
  "subject":"Asunto del mensaje de correo",
  "body":"Cuerpo del mensaje de correo (opcional)",
  "tpo":"cfdi/cr (opcional)",
  "res":"(Opcional) tipo de resultado deseado",
  "pln":"(Opcional) Identificador de plantilla de representación impresa",
  "nombre_archivo":"(Opcional) Nombre de los archivos adjuntos, sin extensión",
  "smtp": { (Opcional) Objeto con la configuración del SMTP para el relay }
}
```
Si se omite el parámetro ```body``` se usará la plantilla de correo predeterminada de Induxsoft.

Solicitud GET con Id de sesión
```
https://factudesk.api.induxsoft.net/comprobantes/enviar/?uid=id-de-usuario&pwd=contraseña&doc=uuid-o-idd&tpo=cfdi/cr&res=opc&pln=id-plantilla&to=destinatario
```
Solicitud GET con usuario y contraseña
```
https://factudesk.api.induxsoft.net/comprobantes/enviar/?uid=id-de-usuario&pwd=contraseña&doc=uuid-o-idd&tpo=cfdi/cr&res=opc&pln=id-plantilla&to=destinatario
```
Solicitud GET con cuenta de timbrado y contraseña
```
https://factudesk.api.induxsoft.net/comprobantes/enviar/?cti=cuenta-de-timbrado&pwd=contraseña-de-la-cuenta&doc=uuid-o-idd&tpo=cfdi/cr&res=opc&pln=id-plantilla&to=destinatario
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. El máximo de comprobantes a enviar será de 50 y solo se admite un destinatario por solicitud.

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:
* both - Ajunta el XML y el PDF (Predeterminado)
* pdf - Adjunta únicamente el PDF
* xml - Adjunta únicamente el XML
* zip - Adjunta un archivo zip con la representación impresa del CFDI y el xml
* link - Link temporal

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.

Parámetro nombre_archivo
(Opcional) Nombre, sin extensión, de los archivos del comprobante que se adjuntan. Si se omite o queda vacío después de limpiarlo, se usa el UUID, como hasta ahora. Por ejemplo, con ```"nombre_archivo":"F1024"``` y ```res=both``` se adjuntan ```F1024.xml``` y ```F1024.pdf```; con ```res=zip```, ```F1024.zip``` con ```F1024.xml``` y ```F1024.pdf``` dentro.
* Se aplica a los adjuntos de both, pdf, xml y zip, y a los archivos dentro del zip.
* No cambia el enlace temporal de la respuesta (```link```): sigue nombrado con el UUID.
* No cambia los adjuntos adicionales que envíe el cliente: conservan su nombre.
* El nombre se limpia antes de usarlo: se quitan los caracteres ```/ \ < > : " | ? *```, los de control y las secuencias de puntos (```..```); se quitan los espacios y puntos del inicio y del final; se recorta a 80 caracteres, y a los nombres reservados de Windows (CON, PRN, AUX, NUL, COM1 a COM9, LPT1 a LPT9) se les antepone ```_```.

### Respuesta exitosa ###

```
Content-Type: application/json;charset=utf-8
{
  "success":true,
  "data":
    {
        "link":"Enlace temporal al archivo a descargar"
    }
}
```

