Dokumentation → Datenstand und Jobs
Dokumentation

Datenstand und Jobs

Frische je Datentopf, Abdeckung, Durchsatz und die Steuerung der Hintergrundläufe. Die /health- und /status-Endpunkte brauchen keinen Schlüssel.

Wozu das gut ist, steht auf der Produktseite: Datenstand und Jobs

GET /coverage

Coverage All

Bestandsuebersicht ueber alle Statement-Toepfe plus Rueckstand je Lane.

Je Topf: Dokumente, Unternehmen und der Zeitraum, den sie abdecken. Je Lane zusaetzlich, wie viel noch offen ist. Gedacht als der eine Aufruf, mit dem sich eine Bestandsluecke feststellen laesst, bevor sie in einer Auswertung auftaucht.

Keine Parameter.

Beispiel

curl "$API/coverage" \
  -H "X-API-Key: $KEY"
GET /healthohne Schlüssel

Health

Keine Parameter.

Beispiel

curl "$API/health"
GET /health/ingestohne Schlüssel

Health Ingest

Freshness-Uebersicht der Statement-Pipelines: letzter Lauf je Quelle (aus ingest_runs, geschrieben von refresh.py) plus grobe Staleness-Ampel. Fuer us zusaetzlich der DERA-Quartalsverzug — ein fehlender Datensatz macht den Lauf nicht rot, laesst aber Berichte fehlen. Auth-frei (unter /health). Nutzbar fuer Monitoring/Alerting.

Keine Parameter.

Beispiel

curl "$API/health/ingest"
{
  "lanes": {
    "us":  { "lastRun": "2026-09-01T02:14:00Z", "stale": false },
    "eu":  { "lastRun": "2026-09-02T03:40:00Z", "stale": false },
    "de":  { "lastRun": null, "stale": true, "reason": "never ran" }
  }
}
GET /jobs

Jobs List

Bulk-Jobs, neueste zuerst.

NameTypBedeutung
limitinteger, in der Abfrage
optional · Vorgabe 20
lanestring, in der Abfrage
optional
Lane filtern, z. B. earnings.dates.repair
statusstring, in der Abfrage
optional
Status filtern: pending, running, done, failed, cancelled, orphaned
typestring, in der Abfrage
optional
Job-Typ filtern

Beispiel

curl "$API/jobs" \
  -H "X-API-Key: $KEY"
GET /jobs/lanes

Jobs Lanes

Pro Lane der juengste Job plus die Zahl der aktuell laufenden.

Das ist der Polling-Endpunkt fuer den Chunk-and-Loop-Betrieb: er beantwortet "laeuft gerade etwas" und "wie weit ist es" in einem Call.

Keine Parameter.

Beispiel

curl "$API/jobs/lanes" \
  -H "X-API-Key: $KEY"
{
  "lanes": [
    { "lane": "statements.esef", "running": 1, "backlog": 412 },
    { "lane": "earnings.dates.repair", "running": 0, "backlog": 0 }
  ]
}
POST /jobs/reap

Jobs Reap

Verwaiste running-Jobs auf orphaned setzen.

Ein Job gilt als verwaist, wenn ihn kein lebender Prozess mehr besitzt — entweder traegt er die Kennung eines fremden Prozesses, oder sein Heartbeat ist aelter als max_heartbeat_age_s.

Das laeuft beim Start und danach periodisch von selbst; dieser Endpunkt ist fuer den Fall, dass man nicht auf den naechsten Durchlauf warten will.

NameTypBedeutung
max_heartbeat_age_sinteger, in der Abfrage
optional · Vorgabe 180

Beispiel

curl -X POST "$API/jobs/reap" \
  -H "X-API-Key: $KEY"
GET /jobs/{job_id}

Jobs Get

NameTypBedeutung
job_idstring, im Pfad
Pflicht

Beispiel

curl "$API/jobs/job_7f3c" \
  -H "X-API-Key: $KEY"
POST /jobs/{job_id}/cancel

Jobs Cancel

Abbruch anfordern.

Der Worker-Pool pollt cancel_requested alle 5 s, laufende Items werden zu Ende gefuehrt. Der Job endet danach mit status: "cancelled".

NameTypBedeutung
job_idstring, im Pfad
Pflicht

Beispiel

curl -X POST "$API/jobs/job_7f3c/cancel" \
  -H "X-API-Key: $KEY"
GET /stats/throughput

Stats Throughput

Durchsatz je Datentopf: Summe und Durchschnitt pro Tag im gewaehlten Fenster.

Beantwortet die Frage "wie viel schafft das System pro Tag?" — im Gegensatz zu /coverage (Bestand) und /health/ingest (Frische). Je Topf werden drei Durchschnitte geliefert: pro Kalendertag, pro Werktag (die aussagekraeftige Zahl, weil an Wochenenden weder veroeffentlicht noch eingereicht wird) und pro Tag mit Bewegung.

dateKind sagt, was gezaehlt wird: business = Ereignisse am Markt (Zufluss), ingest = von uns verarbeitete Datensaetze (Pipeline-Leistung).

NameTypBedeutung
daysinteger, in der Abfrage
optional · Vorgabe 30
Fenster in Tagen (rueckwaerts von heute)
seriesboolean, in der Abfrage
optional · Vorgabe False
Tageswerte mitliefern (fuer Charts)
potsstring, in der Abfrage
optional
Komma-getrennte Auswahl, z.B. directors_dealings,earnings_dates

Beispiel

curl "$API/stats/throughput" \
  -H "X-API-Key: $KEY"
GET /statusohne Schlüssel

Status Overview

Datenstand je Topf plus laufende Hintergrundjobs — ein Call.

Pro Topf: Dokumente, Unternehmen, Zeitpunkt der letzten Aktualisierung (samt Herkunft dieses Zeitstempels), Frische-Ampel, Rueckstand und der zugehoerige Job. text ist die vorlesbare Kurzform, z. B. „29.363 Dokumente von 29.363 Unternehmen — aktualisiert 11.08.2026 12:10 UTC (vor 3 Std.)".

Default ist auf Polling ausgelegt (Metadaten-Zaehlungen, indizierte Zeitstempel). ?deep=true liefert exakte Zahlen und die teuren Zeitstempel — dann dauert es Sekunden bis Minuten.

NameTypBedeutung
deepboolean, in der Abfrage
optional · Vorgabe False
Exakte Zaehlungen und die teuren, direkt aus den Daten gelesenen Zeitstempel (Voll-Scans, Sekunden bis Minuten)
groupstring, in der Abfrage
optional
Nur eine Gruppe: earnings, financials, statements, market, derived, reference
datasetstring, in der Abfrage
optional
Komma-separierte Keys, z. B. earnings.dates,prices
recent_jobsinteger, in der Abfrage
optional · Vorgabe 8
Wie viele beendete Jobs

Beispiel

curl "$API/status"
GET /status/datasetsohne Schlüssel

Status Datasets

Welche Toepfe es gibt und wo ihre Zahlen herkommen — ohne DB-Zugriff.

Nuetzlich, um ?dataset= zu bauen, ohne die volle Abfrage zu bezahlen.

Keine Parameter.

Beispiel

curl "$API/status/datasets"
POST /sync/all

Sync All

Alle Lanes anstossen — der eine Knopf.

Blockiert nicht und wartet auf keine Lane: jede laeuft als eigener Background-Job weiter. Laeuft eine Lane schon oder ist nichts faellig, wird sie uebersprungen statt zu scheitern (409/422 sind hier keine Fehler, sondern die Normalantwort).

NameTypBedeutung
lanesstring, in der Abfrage
optional
Komma-separiert; leer = alle
dry_runboolean, in der Abfrage
optional · Vorgabe False
nur die Rueckstaende melden

Beispiel

curl -X POST "$API/sync/all" \
  -H "X-API-Key: $KEY"