Skip to content

Instantly share code, notes, and snippets.

@pbruna
Last active May 18, 2017 19:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pbruna/923606fb29955b3fcf55 to your computer and use it in GitHub Desktop.
Save pbruna/923606fb29955b3fcf55 to your computer and use it in GitHub Desktop.
Ejemplo de consultas y respuestas de API CarterDTE

1. Inicio de Sesion

ENDPOINT: Zimbra

El usuario debe ser validado contra Zimbra usando:

  • LDAP, o
  • La API SOAP

Sólo usuarios con el atributo zimbraIsDelegatedAdminAccount == TRUE o zimbraIsAdmin == TRUE deben ingresar. Al validar correctamente se debe retorar un Carter_Auth_Token el cual se usará para todas las solicitudes siguientes.

2. Búsqueda de Mensajes

ENDPOINT: Elasticsearch

Consulta: GET /messages/?[params]

Donde params pueden ser:

  • rut_emisor, RUT de quien emite el documento
  • rut_receptor, RUT del destinatario del document
  • folio_numero, número de documento
  • folio_tipo, numero que indica si es factura, nota de crédito, etc,
  • from, que puede ser un dominio (example.com) o un email (email@example.com)
  • to, que puede ser un dominio (example.com) o un email (email@example.com)
  • attachment_name, nombre del adjunto
  • per_page, para limitar el número de resultados
  • sort_by, indicar porque atributo se ordena
  • page, para indicar desde que página comenzar
Respuesta

Debe entregar un JSON como el que sigue:

{
  "total_results": 100,
  "next_page": 3,
  "prev_page": 1,
  "results": 10,
  "data": [
    {
      "id":1613,
      "message_id": "dia8a8dlal@xamp.com",
      "to":"saam@facturanet.cl",
      "to_domain": "facturanet.cl",
      "from":"felectronica@cnorte.cl",
      "from_domain": "cnorte.cl",
      "rut_emisor":"76496130-7",
      "rut_receptor":"92048000-4",
      "created_at":"2015-06-01T08:07:25.000-03:00",
      "updated_at":"2015-06-01T08:07:25.000-03:00",
      "delivery_status": "sent", 
      "folio_numero": 633881,
      "folio_tipo": 52,
      "elapsed": 12
    }
  ]
}

delivery_status indica el resultado del envío y puede tener los siguientes valores:

  • sent, enviado correctamente,
  • failed, error en el envío y no fue entregado a ningún destinatario,
  • `partial, se pudo entregar a algunos destinos y otros fallaron,
  • enqueued, en cola para ser despachado

3. Obtener detalle de un mensaje

ENDPOINT: Elasticsearch

Consulta: GET /messages/:id

Permite obtener la información de un Mensaje en específico.

Respuesta
{
  "id":1613,
  "message_id": "dia8a8dlal@xamp.com",
  "to":"saam@facturanet.cl",
  "to_domain": "facturanet.cl",
  "from":"felectronica@cnorte.cl",
  "from_domain": "cnorte.cl",
  "rut_emisor":"76496130-7",
  "rut_receptor":"92048000-4",
  "created_at":"2015-06-01T08:07:25.000-03:00",
  "updated_at":"2015-06-01T08:07:25.000-03:00",
  "delivery_status": "sent", 
  "folio_numero": 633881,
  "folio_tipo": 52,
  "elapsed": 12,
  "zimbra_mailbox": "backup@facturanet.cl",
  "zimbra_item_id": 2912,
  "attachments": ["aat.xml", "dda.xml"],
  "events": [
    {...},
    {...}
  ]
}

4. Obtener Email

ENDPOINT: Zimbra

Consulta: GET /messages/:id/email

Permite obtener el correo electrónico guardado en Zimbra.

Respuesta

Se entrega un JSON con la información del Email y el contenido del mismo:

{
  "Header": {
    "context": {
      "change": {
        "token": 4041964
      },
      "_jsns": "urn:zimbra"
    }
  },
  "Body": {
    "GetMsgResponse": {
      "m": [
        {
          "s": 14044,
          "d": 1404853350000,
          "l": "766109",
          "cid": "1028779",
          "f": "a",
          "rev": 2327502,
          "id": "1028778",
          "fr": "*** CORREO AUTOMATICO. NO RESPONDER *** Estimado cliente, pinchando el siguiente \"Link\" puede obtener su factura. Si no funciona de esta forma copie ...",
          "e": [
            {
              "a": "enviodte@servifactura.cl",
              "d": "enviodte",
              "t": "f"
            },
            {
              "a": "FacturacionMIPYME@sii.cl",
              "d": "FacturacionMIPYME",
              "t": "t"
            },
            {
              "a": "comercial@itlinux.cl",
              "d": "comercial",
              "t": "c"
            }
          ],
          "su": "Factura Electrónica NUBOX",
          "mid": "<08A3B0E1BE2842D6AF4BC76A85216057@servipyme01>",
          "sd": 1404853305000,
          "mp": [
            {
              "part": "TEXT",
              "ct": "multipart/mixed",
              "mp": [
                {
                  "part": "1",
                  "ct": "text/plain",
                  "s": 503,
                  "body": true,
                  "content": "*** CORREO AUTOMATICO. NO RESPONDER ***\r\n\r\nEstimado cliente, pinchando el siguiente \"Link\" puede obtener su factura. Si no funciona de esta forma copie la dirección completa y péguela en el navegador.\r\n\r\nSaluda atentamente,\r\nDepto de Administr\r\n\r\n\r\nNOTA: Para poder ver el documento en formato imprimible (PDF), haga clic sobre el siguiente vínculo:\r\nhttp://www.servifactura.cl/DTE/dteVer.asp?p=SNFQ5hsO6K2N4iyIWHi6Cg%3d%3d\r\nSe adjunta archivo con extensión XML para los fines de Facturación Electrónica"
                },
                {
                  "part": "2",
                  "ct": "text/xml",
                  "s": 10665,
                  "cd": "attachment",
                  "filename": "DTEC_635404357055000000.xml"
                }
              ]
            }
          ]
        }
      ],
      "_jsns": "urn:zimbraMail"
    }
  },
  "_jsns": "urn:zimbraSoap"
}

5. Obtener Adjunto de Email

ENDPOINT: Zimbra

Consulta: GET /messages/:id/email/attachments/:part

Retorna el adjunto solicitado. part corresponde al puesto del adjunto en el correo. Tomando en ejemplo anterior, part == 2:

Respuesta

Se entrega un JSON con la información del Adjunto y su contenido binario:

"Body": {
    "GetMsgResponse": {
      "m": [
        {
          "id": "1537100",
          "part": "2",
          "fr": "[UPS Shield Logo] Señores PATRICIO BRUNA Estimado cliente. Hemos recepcionado a su nombre la mercadería amparada bajo guía aérea adjunta; esta ha ...",
          "s": 7549,
          "mp": [
            {
              "part": "2.1",
              "ct": "text/plain",
              "s": 7549,
              "body": true,
              "content": "4�����3l��������F�!��W{n�����AV�}��a�����#HH��U���5�9�]��}�\r��(�)qL?/�i�*y���=FH�ϟ�};��k�3�O?c���`�����_����盲�Ϙ�ʟ�Դ�\t��?�lo �_��;������G5n��慷�9�g�Z���Pe,~M����'�gƑ�P?p�ϳW�?K����ϯ�˟��/z�~��v�可�|�����k�}��}�FyxfL��@����KZ�\nendstream\nendobj\n15 0 obj\n<<\n/Type/ExtGState\n/CA 1\n>>\nendobj\nxref\n0 16\n0000000000 65535 f \n0000000015 00000 n \n0000000195 00000 n \n0000000243 00000 n \n0000000298 00000 n \n0000000613 00000 n \n0000001804 00000 n \n0000001847 00000 n \n0000002032 00000 n \n0000003264 00000 n \n0000003444 00000 n \n0000004669 00000 n \n0000005329 00000 n \n0000007899 00000 n \n0000023938 00000 n \n0000027191 00000 n \ntrailer\n<<\n/ID[<9E760DD627922D4AB7AF88B2FE76456B><9E760DD627922D4AB7AF88B2FE76456B>]\n/Info 1 0 R\n/Root 2 0 R\n/Size 16\n>>\nstartxref\n27235\n%%EOF\n"
            }
          ]
        }
      ],
      "_jsns": "urn:zimbraMail"
    }
  },
  "_jsns": "urn:zimbraSoap"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment