Market-Lese-API
Lesen Sie Ihre eigenen Market-Daten aus einem Skript auf Ihrem Server: Katalogsuche und Listen, Erweiterungskarten, Ihre Beobachtungsliste, Ihre gespeicherten Suchen und das Portfolio-Radar sowie einen CSV-Export. Die API beantwortet dieselben Fragen wie die Market-Ansichten, mit denselben Limits, für das Konto, dem der Schlüssel gehört.
1. Schlüssel erstellen
Öffnen Sie in der Web-App Einstellungen, dann Konto, dann API-Schlüssel und erstellen Sie einen Schlüssel. Der vollständige Schlüssel wird einmal angezeigt, direkt nach dem Erstellen: Legen Sie ihn in Ihrem Secret-Speicher ab. Wir speichern nur seinen SHA-256-Hash, ein verlorener Schlüssel lässt sich daher nicht wiederherstellen, nur ersetzen.
Ein Schlüssel sieht so aus:
eop_k3j5x7q2m4n6p_7t2w4y6a3c5e7g2j4l6n3q5s7u2w4y6a3c5e7g2j4l6n3q5s7u2w4y6a
Der Teil vor dem zweiten Unterstrich ist das öffentliche Präfix des Schlüssels. Die Einstellungen zeigen es neben Name, Erstellungsdatum und letzter Nutzung, damit Sie Schlüssel ohne das Geheimnis unterscheiden können.
2. Die API aufrufen
Senden Sie den Schlüssel als Bearer-Token. Jede Route ist ein GET unter einem Präfix:
curl -s https://extops.dev/api/v1/market/read/watchlist \
-H "Authorization: Bearer $EXTOPS_API_KEY"
| Route | Was sie liefert |
|---|---|
/search | Katalogsuche mit den Parametern des Explorers: Text, Modus, Filter, Sortierung, Seiten. |
/lists/{kind} | Eine der Massenlisten: neu, entfernt, Releases, Aufsteiger und die übrigen. |
/categories | Store-Kategorien mit ihrer Größe. |
/extensions/{id} | Eine Erweiterungskarte mit ihrer Historie und Store-Aktivität. |
/extensions/{id}/timeline | Weitere Seiten der Store-Aktivität einer Karte. |
/watchlist | Die Erweiterungen, die Sie beobachten. |
/segments | Ihre gespeicherten Suchen. |
/segments/{id}/members | Die Erweiterungen einer gespeicherten Suche, Stand des letzten abgeschlossenen Katalogdurchlaufs. |
/portfolio/radar | Alles, was sich in Ihren gespeicherten Suchen, beobachteten und eigenen Erweiterungen bewegt hat, jede Erweiterung genau einmal. |
/export | Eine Suche oder Liste als CSV, bis zu 5.000 Zeilen. |
Die Antworten sind dasselbe JSON, das die Web-App liest; jedes Feld ist in der OpenAPI-Datei beschrieben. Die API liest nur: Es gibt keine Schreibrouten, und jede andere Methode als GET wird abgelehnt.
3. Wessen Daten ein Schlüssel sieht
Ein Schlüssel gehört zu Ihrem Konto und handelt als dieses Konto. Ihre gespeicherten Suchen, die Beobachtungsliste und das Radar gehören nur Ihnen: Die gespeicherte Suche eines anderen Kontos antwortet mit 404, genau wie eine, die es nicht gibt. Kataloglisten werden durch Ihren Tarif gekürzt, genau wie in der App.
4. Limits
- 120 Anfragen pro Minute und Konto, summiert über alle seine Schlüssel: Ein zweiter Schlüssel ist kein zweites Kontingent. Jede Antwort enthält
X-RateLimit-Limit,X-RateLimit-RemainingundX-RateLimit-Reset. - Ihre Aufrufe zählen auch zum selben täglichen Market-Budget wie in der App: Ein Schlüssel sind Sie selbst, kein zweites Kontingent.
- CSV-Export: bis zu 5.000 Zeilen pro Datei und 50 Dateien pro Tag und Konto.
- Bis zu 5 aktive Schlüssel pro Konto, genug für einen Wechsel ohne Ausfall.
Über einem Limit antwortet die API mit 429, Retry-After und der Rücksetzzeit in details.reset_at.
5. Ersetzen, Widerrufen und Tarifwechsel
Ersetzen stellt einen neuen Schlüssel aus und stoppt den alten sofort. Für einen Wechsel ohne Ausfall erstellen Sie einen zweiten Schlüssel, rollen ihn aus und widerrufen dann den ersten. Widerrufen ist in jedem Tarif möglich.
Die API gehört zum Tarif Fleet. Wenn sich der Tarif ändert, werden Ihre Schlüssel nicht gelöscht: Aufrufe antworten mit 403 und plan_required, die Einstellungen zeigen die Schlüssel als pausiert, und dieselben Schlüssel funktionieren wieder, sobald Sie zu Fleet zurückkehren.
6. Fehler
| Status | Code | Bedeutung |
|---|---|---|
| 401 | api_key_invalid | Kein Schlüssel oder ein unbekannter oder fehlerhafter. |
| 401 | api_key_revoked | Der Schlüssel wurde widerrufen oder ersetzt. |
| 403 | api_key_scope | Der Geltungsbereich des Schlüssels deckt diese Route nicht ab. |
| 403 | plan_required | Ihr Tarif enthält die API derzeit nicht. |
| 429 | rate_limited | Ein Limit ist bis zum Zeitpunkt in details.reset_at ausgeschöpft. |