API Beschreibung#

Über ein Restful API können Sie synchron auf den Server zugreifen. Der Endpunkt ist unter /api.

Da der Server über Multi-Faktor Authentifizierung abgesichert ist, benötigen Sie für den Zugriff ein Bearer Token, dass Sie sich vorher während eines Login generieren lassen müssen. Diese Token wechseln bei jeden Login und sind nur eine begrenzte Zeit gültig.

Sie können sich ein Token wie folgt generieren:

$ TOKEN=$(livectl login -q)

curl#

Mit neuem Login / SessionID aka Bearer Token

curl -H "Authorization: Bearer $(livectl login -q)" https://app.inkasso.live/api/status -s | jq

oder hier ohne neues Login, sondern auf der aktuellen Session

curl -H "Authorization: Bearer $(livectl bearer)" https://app.inkasso.live/api/status -s | jq

In Einzelschritten:

TOKEN=$(livectl login -q)
curl -H "Authorization: Bearer $TOKEN" https://app.inkasso.live/api/status -s | jq
curl -H "Authorization: Bearer $TOKEN" https://app.inkasso.live/admin/right -s | jq

Hinzufügen eines Auftragstypen:

TOKEN=$(livectl bearer)
curl -H "Authorization: Bearer $TOKEN" https://app.inkasso.live/api/assignment-type -s \
  | jq '. += [{"id":"neu","Name":"Neue Auftragsart"}]' \
  | curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d @- https://app.inkasso.live/api/assignment-type/import

Python Beispiel:#

ggf. muss noch requests installiert werden:

python3 -m venv ~/venv-test
source ~/venv-test/bin/activate
pip install requests

Dann das script aufrufen:

TOKEN=$(livectl bearer) && python3 test.py $TOKEN
import requests
import json
import sys

def main(token):
    url_get = "https://app.inkasso.live/api/assignment-type"
    url_post = "https://app.inkasso.live/api/assignment-type/import"
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json"
    }

    # GET
    resp = requests.get(url_get, headers={"Authorization": f"Bearer {token}"})
    if not resp.ok:
        print(f"GET fehlgeschlagen: {resp.status_code} {resp.text}", file=sys.stderr)
        sys.exit(1)

    try:
        data = resp.json()
    except Exception as e:
        print(f"Fehler beim Parsen des JSON: {e}", file=sys.stderr)
        sys.exit(2)

    # Erweitern
    data.append({"id": "neu", "Name": "Neue Auftragsart"})

    # POST
    resp2 = requests.post(url_post, headers=headers, data=json.dumps(data))
    if not resp2.ok:
        print(f"POST fehlgeschlagen: {resp2.status_code} {resp2.text}", file=sys.stderr)
        sys.exit(3)

    print(resp2.text)

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print(f"Usage: {sys.argv[0]} <bearer-token>", file=sys.stderr)
        sys.exit(4)
    main(sys.argv[1])