Hoppa till innehåll

Analytics-API med skrivskyddad åtkomst

HTTP-API:et api.jonot.io/v1/* ger skrivskyddad åtkomst till din organisations biljett- och ködata — inget admininlogg krävs, bara en bearer-token. Använd det för att hämta data till ett datalager, ett BI-verktyg eller en egen instrumentpanel.

  1. Öppna admin.jonot.io/settings/integrations.
  2. Klicka på fliken API-tokens.
  3. Klicka på Skapa token, ge den ett namn (t.ex. “Power BI”) och bekräfta.
  4. Kopiera token direkt — den visas bara en gång och kan inte återställas. Om du tappar bort den, återkalla den och skapa en ny.

Tokens har prefixet jot_ och löper aldrig ut av sig själva; återkalla dem från samma flik när de inte längre behövs.

Authorization: Bearer jot_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
StatusBetydelse
401Token saknas, är felaktig, okänd eller återkallad.
402Giltig token, men organisationen har inte API-funktionen aktiverad.
429Hastighetsgräns överskriden — se Hastighetsgränser nedan.
400Ogiltiga frågeparametrar, eller ett datumintervall över 90 dagar.

Returnerar din organisations platser och köer, ofiltrerat och opaginerat:

Terminal window
curl https://api.jonot.io/v1/queues \
-H "Authorization: Bearer jot_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
{
"locations": [
{
"id": "loc_…",
"name": "Downtown",
"slug": "downtown",
"queues": [
{
"id": "q_…",
"name": "Main Queue",
"slug": "main-queue",
"status": "ACTIVE"
}
]
}
]
}

Använd de returnerade id-värdena för att filtrera /v1/tickets och CSV-exporten med queueId / locationId.

Paginerad biljettläsning, avgränsad till din organisation.

ParameterKrävsKan upprepasAnmärkningar
fromjanejISO-8601, inkluderande nedre gräns på createdAt.
tojanejISO-8601, exkluderande övre gräns. Max 90 dagars intervall.
queueIdnejjaUpprepa parametern för att filtrera flera köer.
locationIdnejjaUpprepa parametern för att filtrera flera platser.
statusnejjaEn av WAITING, CALLED, COMPLETED, CANCELED, SKIPPED, NO_SHOW.
cursornejnejOgenomskinligt värde från föregående sidas nextCursor.
limitnejnejStandard 100, max 500.
Terminal window
curl "https://api.jonot.io/v1/tickets?from=2026-06-01T00:00:00Z&to=2026-06-08T00:00:00Z&status=COMPLETED" \
-H "Authorization: Bearer jot_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
{
"items": [
{
"id": "tkt_…",
"number": 42,
"queueId": "q_…",
"locationId": "loc_…",
"status": "COMPLETED",
"createdAt": "2026-06-01T09:14:02.000Z",
"calledAt": "2026-06-01T09:20:11.000Z",
"completedAt": "2026-06-01T09:24:47.000Z",
"cancelledAt": null,
"skippedAt": null,
"noShowAt": null,
"calledByDeviceSessionId": "dev_…"
}
],
"nextCursor": "eyJjcmVhdGVkQXQi…"
}

Rader innehåller aldrig biljettens bearer-hash eller kundinmatade personuppgifter (namn, anteckningar, antal personer) — bara id:n, status och livscykelns tidsstämplar.

Paginering: när nextCursor inte är null, skicka det som cursor i nästa begäran för att fortsätta där du slutade (samma from/to/filter). Ett nextCursor-värde på null betyder att du har nått slutet av intervallet.

Samma filter som /v1/tickets (from/to krävs, queueId/locationId/status kan upprepas) minus cursor/limit — hela det matchande intervallet strömmas som ett enda CSV-svar, så det finns ingen 500-rads sidgräns att kringgå för en massuttagning.

Kolumnordningen är stabil, men tolka kolumner efter rubriknamn i stället för fast position. Rubrikraden finns alltid med och matchar exakt den här listan:

id,number,queueId,locationId,status,createdAt,calledAt,completedAt,cancelledAt,skippedAt,noShowAt,calledByDeviceSessionId
Terminal window
curl "https://api.jonot.io/v1/exports/tickets.csv?from=2026-06-01T00:00:00Z&to=2026-07-01T00:00:00Z" \
-H "Authorization: Bearer jot_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-o tickets.csv

Svaret strömmas (Transfer-Encoding: chunked) så en export på 90 dagar/100 000 rader behöver inte buffras i minnet på någon sida — led den direkt till en fil eller en parser.

Varje slutpunkt som tar from/to avvisar ett intervall över 90 dagar med 400. Hämta data stegvis (t.ex. ett anrop per vecka) om du behöver längre historik — biljettens livscykel-tidsstämplar (calledAt, completedAt, …) låter dig återskapa vänte-/betjäningstider utan att hämta samma rader två gånger.

60 förfrågningar/minut per token (inte per IP-adress — kvoten följer token). Varje svar bär med sig:

X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1751328000000

Ett 429-svar bär dessutom med sig Retry-After (sekunder). Vänta och försök igen efter det fönstret; en schemalagd synk var några minuter håller sig bekvämt under gränsen.

import requests
import pandas as pd
TOKEN = "jot_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
BASE = "https://api.jonot.io/v1"
HEADERS = {"Authorization": f"Bearer {TOKEN}"}
def fetch_tickets(frm: str, to: str) -> pd.DataFrame:
rows = []
cursor = None
while True:
params = {"from": frm, "to": to, "limit": 500}
if cursor:
params["cursor"] = cursor
res = requests.get(f"{BASE}/tickets", headers=HEADERS, params=params, timeout=30)
res.raise_for_status()
body = res.json()
rows.extend(body["items"])
cursor = body["nextCursor"]
if not cursor:
break
return pd.DataFrame(rows)
df = fetch_tickets("2026-06-01T00:00:00Z", "2026-07-01T00:00:00Z")
df["waitSeconds"] = (
pd.to_datetime(df["calledAt"]) - pd.to_datetime(df["createdAt"])
).dt.total_seconds()
print(df.groupby("queueId")["waitSeconds"].mean())

Eller läs CSV-exporten direkt — pandas hanterar det strömmade svaret transparent:

df = pd.read_csv(
f"{BASE}/exports/tickets.csv?from=2026-06-01T00:00:00Z&to=2026-07-01T00:00:00Z",
storage_options={"Authorization": f"Bearer {TOKEN}"},
)
  1. I Power BI Desktop: Get Data → Web.
  2. Välj Advanced och bygg URL:en med ditt datumintervall, t.ex. https://api.jonot.io/v1/exports/tickets.csv?from=2026-06-01T00:00:00Z&to=2026-07-01T00:00:00Z.
  3. Under HTTP request header parameters, lägg till ett huvud som heter Authorization med värdet Bearer jot_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
  4. Klicka på OK — Power BI identifierar CSV:n och öppnar tabellförhandsvisningen.
  5. Klicka på Load (eller Transform Data först om du vill sätta kolumntyper — createdAt/calledAt/osv. importeras som text; konvertera dem till Date/Time i Power Query).
  6. Ställ in en schemalagd uppdatering i Power BI-tjänsten om du hämtar data regelbundet; håll intervallet bekvämt under 90 dagar per uppdatering.