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 | jqoder hier ohne neues Login, sondern auf der aktuellen Session
curl -H "Authorization: Bearer $(livectl bearer)" https://app.inkasso.live/api/status -s | jqIn 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 | jqHinzufü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/importPython Beispiel:#
ggf. muss noch requests installiert werden:
python3 -m venv ~/venv-test
source ~/venv-test/bin/activate
pip install requestsDann das script aufrufen:
TOKEN=$(livectl bearer) && python3 test.py $TOKENimport 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])