Ein Schlüssel pro Firma
Den Schlüssel erzeugt der Firmen-Admin in den Einstellungen. Er wird einmal angezeigt — bei uns liegt nur sein Fingerabdruck, wir können ihn also selbst nicht lesen.
API
Eine REST-API über demselben Lager, das Sie in der App sehen. Binden Sie einen Onlineshop, ein ERP, Make.com oder ein eigenes Skript daran an. Sie ist in allen Paketen inklusive Free — ein Lager, dessen Anbindung Sie nicht ausprobieren können, bevor Sie zu zahlen beginnen, ist die Katze im Sack.
Den Schlüssel erzeugt der Firmen-Admin in den Einstellungen. Er wird einmal angezeigt — bei uns liegt nur sein Fingerabdruck, wir können ihn also selbst nicht lesen.
Eine Historie mit IP-Adresse, Status, Dauer und Antwort. Wenn eine Integration kippt, müssen Sie nicht raten, warum.
Ein Aufruf sagt, was der gescannte Code ist und wo er liegt. Den eigenen Scanner binden Sie so an einem Nachmittag an.
Authentifizierung
Kein OAuth, keine ablaufenden Tokens. Der Schlüssel gehört auf einen Server — nicht in den Browser oder in eine mobile App, wo ihn jeder auslesen kann.
curl -H "Authorization: Bearer cstrg_ab12cd34_…" \
https://www.cloudstrg.sk/api/v1/info
Wer den Header Authorization nicht setzen kann (manche Low-Code-Werkzeuge), schickt den Schlüssel in X-Api-Key.
{ "ok": true, "data": … }
{ "ok": false, "chyba": { "kod": "nenajdene", "sprava": "…" } }
So muss eine Integration nicht auf den HTTP-Status schauen, um zu wissen, ob sie erfolgreich war — ok genügt. Listen tragen zusätzlich strankovanie mit limit, offset und celkom.
200 / 201 — in Ordnung401 — fehlender oder ungültiger Schlüssel402 — das Paket ist voll, eine neue Position passt nicht mehr hinein404 — die Sache existiert nicht oder gehört nicht Ihrer Firma422 — fehlender oder unsinniger Parameter429 — Aufrufgrenze überschritten; versuchen Sie es in einer MinuteEndpunkte
Die Basis ist https://www.cloudstrg.sk/api/v1. Schreibzugriffe gibt es bewusst nur zwei — einen Behälter anlegen und sagen, wohin er gewandert ist. Die Lagerstruktur über die API zu ändern geht nicht: Das ist eine Entscheidung für einen Menschen am Regal.
| Methode | Pfad | Was es tut |
|---|---|---|
| GET |
/info
|
Wer ich bin, welches Paket ich habe und wie viele Aufrufe mir bleiben. |
| GET |
/sklady
|
Liste der Lager. |
| GET |
/sklady/{id}
|
Ein Lager. |
| GET |
/regaly?sklad_id=
|
Regale im Lager. |
| GET |
/police?regal_id=
|
Fachböden im Regal. |
| GET |
/kontajnery
|
Kartons und Ordner. Filter: sklad_id, polica_id, typ, stav, q, nezaradene, limit, offset. |
| GET |
/kontajnery/{id}
|
Ein Behälter, samt Liste der Dinge darin. |
| POST |
/kontajnery
|
Legt einen Behälter an und weist ihm einen Code zu. Body: nazov, typ, popis, polica_id. |
| POST |
/kontajnery/{id}/presun
|
Verschiebt einen Behälter auf einen Fachboden. Body: polica_id (null = vom Fachboden nehmen). |
| GET |
/kod/{kod}
|
Was dieser Code vom Etikett ist und wo er liegt. |
| GET |
/hladat?q=
|
Suche über Kartons und die Dinge darin. |
| GET |
/grafana/metriky
|
Der Lagerzustand jetzt als flaches Array — für Stat-Panels. |
| GET |
/grafana/rad?metrika=
|
Eine Tageszeitreihe ohne Lücken: hladania, otvorenia, pohyby, api. |
| GET |
/grafana/tabulka?co=
|
Fertige Zeilen für ein Table-Panel: najhladanejsie, bez-vysledku, najziadanejsie, police, sklady. |
| GET |
/grafana/prometheus
|
Dieselben Zahlen im Prometheus-Textformat. |
Beispiele
curl -H "Authorization: Bearer $KLUC" \
https://www.cloudstrg.sk/api/v1/kod/K-9WZ2QK
{
"ok": true,
"data": {
"typ": "kontajner",
"kod": "K-9WZ2QK",
"id": 412,
"nazov": "Účtovníctvo 2023",
"popis": "Košice · R1 · R1-2"
}
}
curl -H "Authorization: Bearer $KLUC" \
"https://www.cloudstrg.sk/api/v1/hladat?q=vŕtačka"
curl -X POST -H "Authorization: Bearer $KLUC" \
-H "Content-Type: application/json" \
-d '{"nazov":"Faktúry 2026","typ":"sanon","polica_id":12}' \
https://www.cloudstrg.sk/api/v1/kontajnery
Der Code wird automatisch vergeben und kommt in der Antwort zurück — das Etikett dazu drucken Sie dann in der App. Über Codes entscheidet die App bewusst, damit nicht zwei gleiche entstehen können.
Grafana
Grafana kommt an unsere Datenbank nicht heran und muss es auch nicht — es bekommt fertige Zahlen über HTTPS. Es braucht nur einen API-Schlüssel und eine Datenquelle.
Fügen Sie in Grafana eine Infinity-Datenquelle hinzu, Typ JSON → URL, und in die Header Authorization: Bearer cstrg_…. Die Antworten sind blanke Objekt-Arrays, es ist also kein root selector einzustellen.
# Stat-Panels — der Lagerzustand gerade jetzt
https://www.cloudstrg.sk/api/v1/grafana/metriky
# Time series — Suchen pro Tag (auch otvorenia, pohyby, api)
https://www.cloudstrg.sk/api/v1/grafana/rad?metrika=hladania&dni=30
# Table — wonach am meisten gegriffen wird
https://www.cloudstrg.sk/api/v1/grafana/tabulka?co=najziadanejsie&dni=30
Die Reihe hat immer eine Zeile pro Tag — auch an Tagen, an denen nichts passiert ist. Ohne das würde Grafana den dritten und den siebten Tag mit einer Geraden verbinden, als wäre dazwischen gearbeitet worden.
scrape_configs:
- job_name: cloudstrg
scrape_interval: 60s
metrics_path: /api/v1/grafana/prometheus
scheme: https
authorization:
credentials: cstrg_ab12cd34_…
static_configs:
- targets: ['www.cloudstrg.sk']
Beide Wege liefern dieselben Zahlen, sie lassen sich also auch kombinieren.
Aufrufe für Grafana zählen auf dieselbe Grenze wie alle anderen. Eine Aktualisierung alle 10 Sekunden sind 360 Aufrufe pro Stunde je Panel — bei zehn Panels wäre selbst das Free-Paket in acht Minuten aufgebraucht. Stellen Sie das Intervall auf eine Minute; Lagerzahlen ändern sich nicht schneller.
Limits
Es unterscheidet sich nur die Aufrufgrenze pro Stunde. Jede Antwort trägt X-RateLimit-Limit und X-RateLimit-Remaining, die Integration weiß also, wo sie steht, ohne raten zu müssen.
500 Aufrufe pro Stunde — kostenlos
2.000 Aufrufe pro Stunde
10.000 Aufrufe pro Stunde
50.000 Aufrufe pro Stunde
Die Grenze gilt je Firma, nicht je Schlüssel — mehrere Schlüssel legen Sie also der Übersicht wegen an, nicht wegen des Limits. Beim Überschreiten kommt 429 und der Header Retry-After; es wird nichts gelöscht und nach einer Minute läuft alles weiter.
Fangen Sie mit einem Regal an
Das Free-Paket ist kostenlos und ohne Zeitlimit — 30 Positionen reichen für ein Regal und dafür, herauszufinden, ob es zu Ihnen passt. Ein bezahltes Paket wählen Sie erst, wenn der Platz ausgeht.