Ohjelmistorajapinta

Ulkoisten sovellusten integrointi Tabellaan voidaan toteuttaa kolmella eri tavalla, jotka mahdollistavat Tabellan tallentamien tietojen lukemisen.

  1. Siirrot tiedostoon

  2. Tabella SQL Export

  3. Tabella Web Service

Tabella SQL Export

Tabella SQL Export on lisensoitu ominaisuus, jossa uloskirjoitetaan ulkopuoliseen tietokantaan Tabellassa olevaa dataa.

Tietokannan taulut ja selitteet:

  • chart_of_accounts = Tilikartta ja raportit

  • chart_of_accounts_calc = Jälkilaskenta

  • companies = Yritykset (pl. G_C, _ER tai Palkka-kuutiot)

  • companies_dimension_details

  • companies_dimensions = Mitä dimensioita yrityksellä on käytössä eli eelaatiot yritysten ja dimensioiden välilllä.

  • companies_transactions = Tapahtumat

  • dimensions = Dimensioiden koodit ja hierarkiat (= rakenteet ja ryhmittelyt)

  • form_data = Lomakkeet, jos käytössä.

  • groups = Käyttäjäryhmät

  • log = Export lokia

  • preferences = Yleisiä Tabellan määrittelyjä mm. aktiivinen kausi

  • saldos = Toteumat, budjetit ja ennusteet

  • users = Käyttäjät

Tabella Web Service -rajapinta

Tabella Web Service -ohjelmistorajapinta mahdollistaa Tabellassa olevan tiedon lukemisen. Rajapinta toimii yksisuuntaisesti eli dataa pystyy ainoastaan lukemaan eikä kirjoittamaan. Web Service toimii Rest (Representational State Transfer) arkkitehtuurin tavoin, joka rakentuu HTTP-protokollan päälle. Palvelimen vastaukset annetaan JSON-formaatissa.

Käyttäjän todentamiseen (authentication) käytetään JSON Webkit Token (JWT). Tässä todentamisessa ohjelmisto lähettää kirjautumistunnukset HTTP-POST methodilla kohde palvelimeen JSON-formaatissa. Onnistuneen todennuksen jälkeen palvelin palauttaa käyttöavaimen (access_token). Käyttöavaimen vanhenemisaika on 15 minuuttia, jonka aikana käyttöavainta hyväksikäyttäen voidaan tehdä pyyntöjä rajapintaa vasten. Kun vanhenemisaika on päättynyt, niin käyttöavain mitätöityy ja rajapinta vaatii uudestaan todennusta.

Rajapinnan käytöstä voi lukea lisää OpenAPI 3.0 muotoisesta dokumentaatiosta: https://app.swaggerhub.com/apis/tabella/Tabella-Rest-API

Curl esimerkkiohjelma

$ curl -H "Content-Type: application/json" -X POST -d '{"username":"test-user","password":"test-pass"}' https://api.tabella.fi/v1/auth/login
<< {"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1ODk2NTQ2NTUsIm5iZiI6MTU4OTY1NDY1NSwianRpIjoiNzBlZTE0ZGItNDQ2OS00YmI0LWI5N2QtNzhiMDdhYzM5YTljIiwiZXhwIjoxNTg5NjU1NTU1LCJpZGVudGl0eSI6InRlc3QiLCJmcmVzaCI6ZmFsc2UsInR5cGUiOiJhY2Nlc3MifQ.op_3aIFXRZyYjfdWf-qvUPFfwAlqWQBpAyuSpS6gdJQ"}
$ export ACCESS="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1ODk2NTQ2NTUsIm5iZiI6MTU4OTY1NDY1NSwianRpIjoiNzBlZTE0ZGItNDQ2OS00YmI0LWI5N2QtNzhiMDdhYzM5YTljIiwiZXhwIjoxNTg5NjU1NTU1LCJpZGVudGl0eSI6InRlc3QiLCJmcmVzaCI6ZmFsc2UsInR5cGUiOiJhY2Nlc3MifQ.op_3aIFXRZyYjfdWf-qvUPFfwAlqWQBpAyuSpS6gdJQ"
$ curl -H "Authorization: Bearer $ACCESS" https://api.tabella.fi/v1/stats
<< {"logged_in_as":"test-user"}
$ curl -H "Authorization: Bearer $ACCESS" https://api.tabella.fi/v1/tenantlist
<< {"tenants": ...

Python esimerkkiohjelma

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import requests
import json
from pprint import pprint

def auth():
    login = requests.post('https://api.tabella.fi/v1/auth/login', json = {"username":"test-user","password":"test-pass"})
    r = json.loads(login.text)
    return r["access_token"]

def stats(access_token):
    r = requests.get('https://api.tabella.fi/v1/stats', headers={'Authorization': 'Bearer '+access_token})
    return json.loads(r.text)

def tenantlist(access_token):
    r = requests.get('https://api.tabella.fi/v1/tenantlist', headers={'Authorization': 'Bearer '+access_token})
    return json.loads(r.text)

access_token = auth() # Authentication

stats = stats(access_token) # Get stats
pprint(stats)

tenantlist = tenantlist(access_token)
pprint(tenantlist)