API Documentation

Introduction

JAS Docs API es una REST. Nuestra API acepta form-encoded request bodies, y devuelve respuestas del tipo JSON-encoded, y usa codigos de respuesta especiales.

Podes utilizar JAS Docs API en modo TEST, sin afectar el balance de la cuenta real, siguiendo los pasos indicados en el correspondiente apartado. El endpoint utilizado determina el modo de conexion.

Pasos para conectar a la API

Para conectar a la API segui los siguientes pasos:

Para cuentas de prueba/test:
  1. Ingresa al sitio correspondiente:
    • Link al sitio de Test
    • Link al sitio de Produccion, luego selecciona tu pais
  2. Registra tu usuario. Confirma tu email para poder comenzar a utilizar tu usuario de prueba.
  3. Realiza el login en el ambiente de Test
  4. Ingresa a la seccion de Servicios para suscribirte a alguno de los servicios disponibles
  5. Una vez realizada la suscripcion, deberias visualizar la opcion 'API' en el menu izquierdo. Seleccionalo
  6. Gestiona el token para poder consumir la API

Rutas de la API

Las rutas dependen del ambiente al que se quiere apuntar, y la version que se este utilizando de la API:

Ver en

Metodos de la ultima version de la API

keyboard_arrow_rightConsultas y métodos generales

>Enviar Archivo

  • Metodo: POST
  • End Point: uploadFile/
  • Headers:
    • API_KEY : Gestionar en la seccion 'API' del portal
    • Idorg: id que identifica la organizacion (*)
    • Idserv: id del servicio que se desea consultar.

    *) Los resellers deben indicar en este parametro el valor del id de su cliente.

  • Body:{$_FILES}

> Imagenes/Archivos subidos y su status:

> Consultar detalle del documento:

    • Metodo: POST
    • End Point: getDocumentDetail/
    • Params:
      • API_KEY : Gestionar en la seccion 'API' del portal
      • idOrg : id de la organizacion que consulta el documento
      • idEntidad : id del documento, obtenido en la consulta de documentos
    • Response:
      • status: 0=resultado exitoso | 1=se produjo un error
      • mensaje
      • result (JSON): [{id,dsEntidad,keyValues,tableValues}]

> Lista de Organizaciones asociadas al usuario:

> Alta de Organizacion:

  • Para el proceso de alta de una organizacion recomendamos realizarlo respetando los pasos 1 y 2.
    1. Consulta de status CUIT
      • Metodo: POST
      • End Point: getStatusToAddOrganization/
      • Params:
        • API_KEY : Gestionar en la seccion 'API' del portal
        • cuit
      • Response:
        • status: 0=resultado exitoso | 1=se produjo un error
        • mensaje
        • response (JSON): [{
          • respuesta, //1: no existe la org | 2: existe la org y puede realizar cambios | 3: existe la org pero no puede realizar cambios.
          • idOrg //devuelve id de la org en caso de existir
          }]
    2. Nueva / modificar Organizacion
      • Metodo: POST
      • End Point: saveOrganization/
      • Params:
        • API_KEY : Gestionar en la seccion 'API' del portal
        • idOrg
        • cuit
        • razon_social
        • direccion
        • ciudad
      • Response:
        • status: 0=resultado exitoso | 1=se produjo un error
        • mensaje

> Alta de un servicio:

    El alta de servicio requiere de 3 pasos, donde los 2 primeros no son obligatorios pero son recomendados para obtener la informacion correcta para la solicitud del tercer paso.
  1. Consulta de Servicios disponibles
    • Metodo: POST
    • End Point: getEnabledServices/
    • Params:
      • API_KEY : Gestionar en la seccion 'API' del portal
      • idOrg : id de la organizacion
    • Response:
      • status
      • mensaje
      • response
          [{
        • id,
        • nombre,
        • descripcion,
        • icon,
        • tipo,
        • image,
        • habilitado,
        • perfilesDisponibles:
            [{
          • id,
          • nombre,
          • findPlan, //1=requiere de plan |0=el perfil no requiere suscripcion a plan.
          • }]
        • statusSuscripcion:
            {
          • estado, //'Suscripto' si posee suscripcion al servicio
          • user_admin, //usuario administrador
          • fechaSuscripcion,
          • montoMensual,
          • montoAnual,
          • idPlan
          • }
        • },{...}]
  2. Consulta de Planes disponibles
    • Metodo: POST
    • End Point: getEnabledPlans/
    • Params:
      • API_KEY : Gestionar en la seccion 'API' del portal
      • idOrg
      • idServ
      • idPerfil: se puede obtener del request anterior
    • Response:
      • status
      • mensaje
      • response
          [{
        • id,
        • idServicio,
        • Nombre,
        • diasFree, //dias libres sin cargo
        • precioMensual,
        • precioAnual,
        • },{...}]
  3. Grabar suscripcion a servicio
    • Metodo: POST
    • End Point: saveSuscription/
    • Params:
      • API_KEY : Gestionar en la seccion 'API' del portal
      • idOrg
      • idServ
      • idPerfil
      • idPlan
    • Response:
      • status: 0=grabacion exitosa | 1:error al grabar
      • mensaje

keyboard_arrow_rightConsultas y métodos específicos

Dependiendo del servicio se pueden realizar distintos tipos de consulta:

Servicio:
  • Facturas por compras
    • Consulta de facturas con el proceso completo de validacion:
      • Metodo: POST
      • End Point: getFacturaComprasReadyRecords/
      • Params:
        • API_KEY : Gestionar en la seccion 'API' del portal
        • filterDate_from | From Date
        • filterDate_to | To Date
    • Consulta de facturas pendientes de completar worflow:
      • Metodo: POST
      • End Point: getFacturaComprasPendingRecords/
      • Params:
        • API_KEY : Gestionar en la seccion 'API' del portal
        • filterDate_from | From Date
        • filterDate_to | To Date

Código de Ejemplo

                            $version = "v1/";
                            $end_point = "{your_endpoint}";
                            $enviroment_url = "{enviroment_url}";
                            $url = $enviroment_url.$version.$end_point;

                          $request = new Http_Request2($url);
                          $this->request = $request;
                          $this->token = "{your_token}";
                          $this->idOrg = "{your_idOrg_number}";
                          $this->url = $this->request->getUrl($url);
                          $this->headers = array(
                            // Request headers
                          );
                          $this->request->setHeader($this->headers);
                          $this->parameters = array(
                            'token' => $this->token,
                            'idOrg' => $this->idOrg,
                            //... Other params depending on type of request
                          );
                          $this->url->setQueryVariables($this->parameters);
                          $this->request->setMethod(HTTP_Request2::METHOD_GET);
                          $this->request->setBody(json_encode($data));
                          try {
                              $response = $this->request->send();
                              $result = $response->getBody('');
                              $status = $response->getStatus();
                              $responseBody =  $response->getHeader();
                              $result = json_decode(($result), true);

                            } catch (HttpException $e) {
                              $result =  json_decode($e);
                            }
                            import json
                            import time
                            from requests import get, post

                            # Endpoint URL
                            enviroment = r"{enviroment}"
                            version = r"{version}"
                            endpoint = r"{endpoint}"
                            api_token = "{token}"
                            idOrg = "{idOrg}"
                            post_url = enviroment + version + endpoint


                            headers = {
                                #Request Headers
                            }

                            params = {
                                "token": api_token,
                                "idOrg": idOrg,
                                  # Other params depending on type of request
                            }

                            with open(source, "rb") as f:
                                data_bytes = f.read()

                            try:
                                resp = post(url = post_url, data = data_bytes, headers = headers, params = params)
                                if resp.status_code != 202:
                                    print("POST analyze failed:\n%s" % resp.text)
                                    quit()
                                print("POST analyze succeeded:\n%s" % resp.headers)
                                get_url = resp.body
                            except Exception as e:
                                print("POST analyze failed:\n%s" % str(e))
                                quit()
                          
                            #No disponible
                          
                            #No disponible
                          

                          
                            #No disponible
                          
                            #No disponible
                          

Respuesta JSON

                              {
                                "status":"200",
                                "cantidad_files":1,
                                "mensaje":"1 files procesados",
                                "response":[
                                  {"status":"5",
                                  "fileName":"{Nombre_archivo_uploaded}",
                                  "descDoc":"Factura de Compra",
                                  "idEntidad":"688",
                                  "datos":{
                                    "keyValues":{
                                      "PuntoDeVenta":"00003",
                                      "CompNro":"00007084",
                                      "FechaDeEmision":"10\/01\/2020",
                                      "RazonSocial":"{Razon_social_emisor}",
                                      "CUIT":"{CUIT_emisor}",
                                      "DomicilioComercial":"{Domicilio_emisor}",
                                      "IngresosBrutos":"{IIBB_emisor}",
                                      "FechaDeInicioDeActividades":"01\/09\/2002",
                                      "CondicionFrenteAlIVA":"IVA Responsable Inscripto",
                                      "FechaDeVtoParaElPago":"10\/01\/2020",
                                      "PeriodoFacturadoDesde":"10\/01\/2020",
                                      "Hasta":"10\/01\/2020",
                                      "ApellidoYNombreRazonSocial":"{Cliente_del_documento}",
                                      "Subtotal":"{Subtotal_del_documento}",
                                      "ImporteTotal":"{Importe_total}",
                                      "FechaDeVtoDeCAE":"{Vencimiento_CAE}",
                                      "IVA21%":"{Monto_IVA_21}",
                                      "IVA10,5%":"{Monto_IVA_10_5}",
                                      "CAENo":"{CAE}"},
                                    "tables":{
                                      "status":"ok",
                                      "productos":[
                                        [
                                          {"value":"{descripcion_concepto}","key":"Producto \/ Servicio"},
                                          {"value":"{cantidad_item}","key":"Cantidad"},
                                          {"value":"{descripcion_u_m}","key":"U. medida"},
                                          {"value":"{precio_unitario_item}","key":"Precio Unit."},
                                          {"value":"0,00","key":"% Bonif"},
                                          {"value":"{subtotal_item}","key":"Subtotal"},
                                          {"value":"{Alicuota_IVA_item}","key":"Alicuota IVA"},
                                          {"value":"{Monto_subtotal_c_IVA}","key":"Subtotal c\/IVA"}
                                        ]
                                                  ],
                                        "cantidad": "{Cantidad_items}"
                                              }
                                    }
                                  }
                                ]
                              }
                            

Codigos de Respuesta (response->status)

A continuacion se listan los códigos de respuesta y su significado.

  • 0 = Pendiente de Procesar
  • 1 = Error
  • 2 = OK
  • 3 = Se elimino por control de vacios
  • 4 = OK con datos incompletos
  • 5 = OK con workflow pendiente del usuario
  • 6 = Procesando
  • 7 = Error interno de la app
  • 8 = OK con workflow finalizado del usuario