API de AccountingLive

API de AccountingLive

Introducción

La API de AccountingLive le permite conectar su aplicación a AccountingLive para acceder a los datos del sistema. La API se implementa con diferentes endpoints HTTPS que reciben y devuelven objetos JSON a través de peticiones HTTP estándar (GET, POST, PUT y DELETE). La API sigue de cerca la especificación REST.

Nota: La mayoría de los endpoints requieren autenticación. Vaya a la sección de autenticación para más detalles.

La dirección base de la API es https://www.accountingliveapp.com/webapi/ Este es un ejemplo de una llamada completa a la API para obtener la lista de países:


La respuesta, en formato JSON, sería:

  1. {
      "status": "ok",
      "data": [
        {
          "ID": "US",
          "Name": "United States"
        },
        {
          "ID": "CA",
          "Name": "Canada"
        },
        {
          "ID": "MX",
          "Name": "Mexico"
        },
        {
          "ID": "DO",
          "Name": "Dominican Republic"
        },
        {
          "ID": "AF",
          "Name": "Afghanistan"
        },
        {
          "ID": "AX",
          "Name": "Åland Islands"
        },
        {
          "ID": "AL",
          "Name": "Albania"
        },
        {
          "ID": "DZ",
          "Name": "Algeria"
        },
        {
          "ID": "AS",
          "Name": "American Samoa"
        },
        {
          "ID": "AD",
          "Name": "Andorra"
        }
      ]
    }


Puede ingresar la dirección de muestra en su navegador de Internet y ver cómo devuelve datos. Todos los métodos API devuelven una respuesta que tiene dos propiedades:

  1. Estado: Esto devuelve OK o FAIL.
  2. Datos: si el método llamado devuelve algunos datos, estará en ese campo. En caso de una llamada fallida , esta propiedad tendrá el mensaje de  error.

Autenticación

Algunos métodos requieren autenticación básica. La autenticación básica es un estándar en el que el nombre de usuario y la contraseña de la cuenta para acceder se pasan en los encabezados de la llamada web para autenticar al usuario que llama al servicio. Este encabezado debe proporcionarse en cada llamada de servicio que requiera autenticación básica. Dado que AccountingLive también necesita conocer la compañía a la que se conecta el usuario, también se requiere el ID de compañía en cada llamada al método que requiere autenticación. Cada información está separada por dos puntos y luego tiene que estar codificada en base64 para proporcionarla al encabezado. La información anterior está codificada en base 64 sería así:

  1. nombre de usuario: ID de empresa: contraseña

Ejemplo de encabezado con nombre de usuario, ID de empresa y contraseña después de la codificación base64:

  1. Autorización: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ ==

Ejemplos de código

Para facilitar la implementación, hemos creado algunos snippets para distintos frameworks de trabajo.

C# Sample Code

  1. private string callGetServiceWithAuthentication()
  2. {
  3.     //Define URL
  4.     string url = "https://www.accountingliveapp.com/webapi/accounts?skip=0&maxRecords=10";

  5.     //Create Web Client
  6.     var wc = new WebClient();

  7.     //Authenticate - Only Needed if method required authentication
  8.     String userName = "use@domain.com";
  9.     string companyID = "test";
  10.     String passWord = "mypassword";
  11.     wc.Credentials = new System.Net.NetworkCredential(userName + ":" + companyID, passWord);

  12.     //Set headers
  13.     wc.Headers.Add("Accept", "application/json");
  14.     wc.Headers.Add("Content-Type", "application/json");
  15.     wc.Encoding = UTF8Encoding.UTF8;

  16.     //Call Service
  17.     return wc.DownloadString(new Uri(url));
  18. }

Visual Basic.Net Sample Code

  1. Private Function CallGetServiceWithAuthentication()
  2.     'Define URL
  3.     Dim url As String
  4.     url = "https://www.accountingliveapp.com/webapi/accounts?skip=0&maxRecords=10"

  5.     'Create Web Client
  6.     Dim wc = New WebClient()

  7.     'Authenticate - This is only needed if the web method requires Basic Authentication
  8.     Dim userName As String = "user@domain.com"
  9.     Dim password As String = "mypassword"
  10.     Dim companyID As String = "demo"
  11.     wc.Credentials = New NetworkCredential(userName + ":" + companyID, password)

  12.     'Set headers
  13.     wc.Headers.Add("Accept", "application/json")
  14.     wc.Headers.Add("Content-Type", "application/json")
  15.     wc.Encoding = UTF8Encoding.UTF8

  16.     'Call service
  17.     Return wc.DownloadString(New Uri(url))
  18. End Function

Java Sample Code

  1. private static String callGetServiceWithAuthentication() throws Exception {
  2.     
  3.     //Define Address
  4.     String Address = "https://www.accountingliveapp.com/webapi/accounts?skip=0&maxRecords=10"; 

  5.     //Create Authentication String
  6.     //This is only necessary in methods that require basic authentication
  7.     //To make the base 64 string, you need the Apache Commons Codec Library found in
  8.     //http://commons.apache.org/proper/commons-codec/
  9.     String userID = "user@domain.com";
  10.     String password = "mypassword";
  11.     String companyID = "demo";
  12.     String authString = userID + ":" + companyID + ":" + password;
  13.     byte[] authEncBytes = Base64.encodeBase64(authString.getBytes());
  14.     String authStringEnc = new String(authEncBytes);
  15.     //Create Connection
  16.     URL url = new URL(Address);
  17.     URLConnection yc = url.openConnection();
  18.     yc.setRequestProperty("Authorization", "Basic " + authStringEnc);
  19.     BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
  20.     
  21.     //Get output
  22.     String inputLine;        
  23.     String outString = "";
  24.         
  25.     while ((inputLine = in.readLine()) != null) 
  26.         outString += inputLine;
  27.         
  28.     in.close();
  29.         
  30.     //Return
  31.     return outString;
  32. }

PHP Sample Code


  1. function callGetServiceWithAuthentication()
  2. {
  3.     //Init
  4.     $curl = curl_init();

  5.     //Define URL
  6.     $url = "https://www.accountingliveapp.com/WebAPI/accounts?skip=0&maxRecords=10";

  7.     //Authentication - only needed if calling a method that requires Basic Authentication
  8.     $username = "user@domain.com";
  9.     $password = "mypass";
  10.     $companyID = "demo";
  11.     $authString = $username . ":" . $companyID . ":" . $password;
  12.     curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  13.     curl_setopt($curl, CURLOPT_USERPWD, $authString);

  14.     //Config URL
  15.     curl_setopt($curl, CURLOPT_URL, $url);
  16.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

  17.     //Call service
  18.     $result = curl_exec($curl);
  19.     curl_close($curl);

  20.     //Return result
  21.     return $result;
  22. }

Objective C Sample Code

  1. - (NSString*) callGetServiceWithAuthentication
  2. {
  3.     //Define URL
  4.     NSString* url = @"https://www.accountingliveapp.com/webapi/accounts?skip=0&maxRecords=100";
  5.     NSURL *restURL = [NSURL URLWithString:url];
  6.     
  7.     //Create Request
  8.     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:restURL];
  9.     [request addValue:@"application/json" forHTTPHeaderField:@"Accept"];
  10.     [request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
  11.     
  12.     //Authenticate - Only Needed on methods that require basic authentication
  13.     NSString* username = @"user@domain.com";
  14.     NSString* companyID = @"test";
  15.     NSString* password = @"mypassword";
  16.     
  17.     NSString *authStr = [NSString stringWithFormat:@"%@:%@:%@", 
  18.         username, companyID, password];
  19.     NSData *authData = [authStr dataUsingEncoding:NSASCIIStringEncoding];
  20.     NSString *base64String = [authData base64EncodedStringWithOptions:
  21.         NSDataBase64EncodingEndLineWithCarriageReturn];
  22.     NSString *authValue = [NSString stringWithFormat:@"Basic %@", base64String];
  23.     [request setValue:authValue forHTTPHeaderField:@"Authorization"];
  24.     
  25.     //Call Service
  26.     NSURLResponse * response = nil;
  27.     NSError * error = nil;
  28.     NSData* data = [NSURLConnection sendSynchronousRequest:request 
  29.         returningResponse:&response error:&error];
  30.     
  31.     //Extract Json
  32.     NSString *json = [[NSString alloc]
  33.                       initWithBytes: [data bytes]
  34.                       length:[data length]
  35.                       encoding:NSUTF8StringEncoding];
  36.     
  37.     return json;
  38. }
    • Related Articles

    • Herramientas de inicio de sección (Login Tools)

      Obtener lista de empresas por usuario Este endpoint NO requiere autenticación GET /webapi/companylist?skip=0&maxRecords=100&userName=@USERNAME&password=@PASSWORD Respuesta Esperada: {     "status":"ok",     "data":     [         {             ...
    • Entradas de diario (Journals)

      Obtener lista de entradas de diario Este endpoint requiere autenticación GET /webapi/journals?skip=0&maxRecords=10 Respuesta Esperada: {     "status":"ok",     "data":     [         {             "ID":"00000000-0000-0000-0000-000000000000",           ...
    • Métodos de pago (Payment Methods)

      Obtener lista de métodos de pago Este endpoint requiere autenticación GET /webapi/paymentMethods?skip=0&maxRecords=10 Respuesta Esperada: {     "status":"ok",     "data":         [             {                 ...
    • Cuentas de gastos (Expenses classes)

      Obtener lista de cuentas de gastos Este endpoint requiere autenticación GET /webapi/expenseClasses?skip=0&maxRecords=10 Respuesta Esperada: {     "status":"ok",     "data":     [         {             "ID":"9486c625-8d3a-4dcf-b8cd-0a6a5826c70d",     ...
    • Catalogo de cuentas (Chart Accounts)

      Obtener catalogo de cuentas Este endpoint requiere autenticación GET /webapi/chartAccounts?skip=0&maxRecords=10 Respuesta Esperada: {     "status":"ok",     "data":     [         {             "ID":"fee9cce1-6216-4a8f-8f73-94ba125610cf",             ...