Skip to content

Commit c8b0c8f

Browse files
Mlaz-codepaperclip-resolver[bot]claude
authored
fix(i18n): add missing locale translations + fix asyncapi.yaml links (Semrush audit) (#234)
- Add de/es/pt-BR translations for concepts/entity-reference-ids - Add de/es/pt-BR translations for concepts/polymarket-resolution - Update de/es/pt-BR concepts/_meta.js with new page entries - Fix asyncapi.yaml links in all locale conventions pages to use absolute URL (prevents locale-prefix 404s) Resolves: 10x 404 errors, 10x broken internal links, 9x hreflang conflicts, 6x incorrect hreflang links found in Semrush site audit. Co-authored-by: paperclip-resolver[bot] <3736210+paperclip-resolver[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent da54e24 commit c8b0c8f

13 files changed

Lines changed: 740 additions & 8 deletions

File tree

content/de/api-reference/conventions.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { Callout } from 'nextra/components'
99
SharpAPI liefert vorhersehbare Antwortstrukturen über jeden REST-Endpoint hinweg. Diese Seite kodifiziert diese Konventionen, damit Sie generische Parser bauen können statt Sonderfälle pro Endpoint.
1010

1111
<Callout type="info">
12-
Diese Seite beschreibt die REST-Konventionen. SSE-Streams werden in [SSE Stream](/de/api-reference/stream) behandelt, und das bidirektionale WebSocket-Protokoll hat seine eigene [AsyncAPI 3.0 Spezifikation](/asyncapi.yaml).
12+
Diese Seite beschreibt die REST-Konventionen. SSE-Streams werden in [SSE Stream](/de/api-reference/stream) behandelt, und das bidirektionale WebSocket-Protokoll hat seine eigene [AsyncAPI 3.0 Spezifikation](https://docs.sharpapi.io/asyncapi.yaml).
1313
</Callout>
1414

1515
## HTTP-Statuscodes, keine Envelopes
@@ -192,6 +192,6 @@ ETag: "9dc023776c4b382"
192192
## Maschinenlesbare Quelle der Wahrheit
193193

194194
- REST-Oberfläche: [`openapi.json`](/openapi.json) (OpenAPI 3.1)
195-
- WebSocket-Oberfläche: [`asyncapi.yaml`](/asyncapi.yaml) (AsyncAPI 3.0)
195+
- WebSocket-Oberfläche: [`asyncapi.yaml`](https://docs.sharpapi.io/asyncapi.yaml) (AsyncAPI 3.0)
196196

197197
Beide Dateien werden als statische Assets veröffentlicht und können in CI verglichen werden. Wenn diese Seite von der Spezifikation abweicht, gewinnt die Spezifikation — die Spezifikation wird vom bereitgestellten Server generiert.

content/de/concepts/_meta.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ export default {
33
"ev-calculation": "EV-Berechnung",
44
arbitrage: "Arbitrage",
55
"event-matching": "Event-Zuordnung",
6+
"entity-reference-ids": "Entitätsreferenz-IDs",
67
"live-vs-prematch": "Live vs. Pre-Match",
78
"pinnacle-odds-changed-at": "Pinnacle `odds_changed_at`",
9+
"polymarket-resolution": "Polymarket-Auflösung",
810
}
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
---
2+
description: "Entitäts-Referenz-IDs — numerical_id-Semantik, verschachtelte Team/Sport/Liga/Market/Sportsbook-Objekte und deren Verwendung für Joins, Indizierung und Cross-Feed-Mapping."
3+
---
4+
5+
import { Callout } from 'nextra/components'
6+
7+
# Entitäts-Referenz-IDs
8+
9+
SharpAPI gibt stabile, ganzzahlig-kodierte Bezeichner (`numerical_id`) für jede Referenzentität aus, sowie selbstbeschreibende verschachtelte Referenzobjekte für jede Odds-Zeile und jedes Opportunity-Leg. Diese Seite dokumentiert, was diese IDs garantieren, wie sie verwendet werden und wie sie mit den bestehenden String-IDs zusammenhängen.
10+
11+
<Callout type="info">
12+
**Neu (Mai 2026).** Sowohl `numerical_id` als auch die verschachtelten Referenzobjekte sind **additiv**. Bestehende String-IDs (`sport: "baseball"`, `league: "mlb"`, `sportsbook: "pinnacle"`, `home_team: "New York Yankees"`) bleiben in jeder Antwort erhalten und sind nicht veraltet. Es gibt keinen Zeitplan für deren Entfernung — beide Formen werden dauerhaft unterstützt.
13+
</Callout>
14+
15+
## Was ist neu
16+
17+
Jeder Referenz-Endpoint (`/sports`, `/leagues`, `/sportsbooks`, `/markets`, `/teams`) gibt jetzt zusätzlich zur bestehenden Slug-`id` einen `numerical_id`-Ganzzahlwert zurück. `/teams` gibt zusätzlich ein `abbreviation`-Feld zurück, sofern bekannt.
18+
19+
Jede Odds-Zeile (und jedes Leg einer EV- / Arbitrage- / Middle-Opportunity) enthält nun sechs optionale **verschachtelte Referenzobjekte**, die `id`, Anzeigename und `numerical_id` der Entität direkt mit der Zeile bündeln — ohne zusätzliche Abfrage gegen `/sports` oder `/teams`:
20+
21+
```json
22+
{
23+
"home": {
24+
"id": "new_york_yankees",
25+
"numerical_id": 20,
26+
"name": "New York Yankees",
27+
"abbreviation": "NYY",
28+
"logo": "https://cdn.opticodds.com/team-logos/baseball/36.png",
29+
"city": "New York",
30+
"mascot": "Yankees",
31+
"conference": "AL",
32+
"division": "East Division"
33+
},
34+
"away": {
35+
"id": "boston_red_sox",
36+
"numerical_id": 5,
37+
"name": "Boston Red Sox",
38+
"abbreviation": "BOS",
39+
"logo": "https://cdn.opticodds.com/team-logos/baseball/14.png",
40+
"city": "Boston",
41+
"mascot": "Red Sox",
42+
"conference": "AL",
43+
"division": "East Division"
44+
},
45+
"sport_ref": { "id": "baseball", "numerical_id": 3, "name": "Baseball" },
46+
"league_ref": { "id": "mlb", "numerical_id": 354, "label": "MLB" },
47+
"market_ref": { "id": "moneyline", "numerical_id": 878, "label": "Moneyline" },
48+
"sportsbook_ref": { "id": "pinnacle", "numerical_id": 28, "label": "Pinnacle" }
49+
}
50+
```
51+
52+
## `numerical_id`-Semantik
53+
54+
Jede `numerical_id` wird aus einem einmal festgelegten, domänenspezifischen Registry unter `api-adapters/sharp_atlas/` vergeben. Der Vertrag lautet:
55+
56+
| Eigenschaft | Garantie |
57+
|---|---|
58+
| **Eingefroren** | Einmal vergeben, wird eine `numerical_id` niemals wiederverwendet, neu ausgestellt oder einer anderen Entität zugeordnet. Die `numerical_id: 20` der Yankees bleibt `20`, bis die API eingestellt wird. |
59+
| **Dicht ab 1** | IDs beginnen bei `1` und werden sequenziell pro Domäne vergeben. Es gibt keine negativen oder null-IDs und keine großen Lücken. Sports, Ligen, Sportsbooks, Markets und Teams haben jeweils einen eigenen dichten Bereich. |
60+
| **Domänen-begrenzt** | Eine `numerical_id` ist nur innerhalb ihrer Domäne (Sport, Liga, Sportsbook, Market, Team) eindeutig. `numerical_id: 3` bei einem Sport hat keinen Bezug zu `numerical_id: 3` bei einem Team. Zur Unterscheidung muss die Ganzzahl mit der Domäne kombiniert werden. |
61+
| **Vergeben, nicht abgeleitet** | IDs werden explizit in den Atlas-JSONs verfolgt — sie sind keine Hashes des Slugs und werden nicht aus der Sortierreihenfolge berechnet. Das Hinzufügen einer neuen Entität vergibt die nächste freie Ganzzahl; das Umbenennen eines Slugs ändert dessen `numerical_id` nicht. |
62+
| **Keine Sportsbook-ID** | Dies ist SharpAPIs Bezeichner, nicht die interne des Sportsbooks. Die nativen Event-/Market-/Selection-IDs eines Bookmakers werden weiterhin zeilenweise ausgegeben — siehe `external_event_id`, `selection_id`, `market_id` und `external_ids` am [Events](/de/api-reference/events)-Endpoint. |
63+
64+
## Wenn Felder fehlen
65+
66+
Die verschachtelten Referenzobjekte werden **nur ausgegeben, wenn die zugrundeliegende Entität im Atlas gemappt wurde**. Bei nicht gemappten Entitäten — typischerweise Long-Tail-Ligen, exotische Markets oder neu hinzugefügte Sportsbooks vor der Katalogzuweisung — wird der entsprechende `*_ref`-Block weggelassen (oder hat `numerical_id: null`), und das vorhandene String-Feld in der Zeile ist die einzige sichtbare ID.
67+
68+
In der Praxis:
69+
70+
- Wichtige Sports, Ligen und Books sind vollständig gemappt — jeder `*_ref`-Block ist zu erwarten.
71+
- Player-Prop-Markets und Ecken/Karten/Perioden-Markets im Fußball haben den breitesten Katalog; einige Nischen-Prop-Typen werden noch zugewiesen.
72+
- Team-`abbreviation` ist dort befüllt, wo ein Kürzel allgemein bekannt ist (US-Major-Ligen, EPL, ATP/WTA-Kürzel). Bei kleineren / internationalen Teams kann es fehlen.
73+
74+
Konsumenten sollten jeden verschachtelten Block als **optional** behandeln. Generische Clients sollten auf das flache String-Feld (`sport`, `league`, `sportsbook`, `home_team`, `away_team`, `market_type`) zurückfallen, wenn der entsprechende `*_ref` nicht vorhanden ist.
75+
76+
## Empfohlene Verwendung
77+
78+
### Indizierung & Joins
79+
Verwende `numerical_id` als Primärschlüssel beim Speichern von Odds/Opportunities in deiner eigenen Datenbank. Ganzzahlschlüssel sind kleiner, günstiger zu indizieren und bleiben stabil bei Slug-Umbenennungen oder Änderungen von Anzeigenamen.
80+
81+
### Cross-Feed-Mapping
82+
Wenn du von mehreren Datenanbietern importierst, bietet `numerical_id` eine schnelle Gleichheitsprüfung innerhalb von SharpAPI-Zeilen. Für das Mapping **über** Anbieter hinweg ist der Slug-`id` nach wie vor der portablere Join-Schlüssel — Slugs sind lesbar und tendieren dazu, sich über Anbieter hinweg stärker zu überschneiden als Ganzzahl-IDs.
83+
84+
### UI-Anzeige
85+
Verwende `name` (Sports, Teams) oder `label` (Ligen, Markets, Sportsbooks) zur Anzeige; `abbreviation` bei `home`/`away` eignet sich für kompakte Zellen.
86+
87+
### Streaming
88+
Dieselben verschachtelten Objekte erscheinen auf `/api/v1/stream/odds` SSE-Frames und auf WebSocket v1 / v1.5 Odds-Payloads — kein separater Stream ist erforderlich.
89+
90+
## Feldreferenz
91+
92+
### Referenz-Endpoints
93+
94+
Jeder Referenz-Endpoint fügt seinem bestehenden Objektschema `numerical_id` hinzu. `/teams` fügt zusätzlich `abbreviation` hinzu.
95+
96+
| Endpoint | Hinzugefügtes Feld | Typ | Hinweise |
97+
|---|---|---|---|
98+
| [`/sports`](/de/api-reference/sports) | `numerical_id` | integer \| null | Sport-begrenzte Domäne |
99+
| [`/leagues`](/de/api-reference/leagues) | `numerical_id` | integer \| null | Liga-begrenzte Domäne |
100+
| [`/sportsbooks`](/de/api-reference/sportsbooks) | `numerical_id` | integer \| null | Sportsbook-begrenzte Domäne |
101+
| [`/markets`](/de/api-reference/markets) | `numerical_id` | integer \| null | Market-Typ-begrenzte Domäne |
102+
| [`/teams`](/de/api-reference/teams) | `numerical_id`, `abbreviation`, `logo`, `city`, `mascot`, `conference`, `division` | integer \| null, string \| null | Team-begrenzte Domäne. Die letzten fünf sind Atlas-Metadaten aus OpticOdds. |
103+
104+
### Verschachtelte Referenzblöcke bei Odds & Opportunity-Legs
105+
106+
| Block | Wo | Felder | Zweck |
107+
|---|---|---|---|
108+
| `home`, `away` | Jede Odds-Zeile, jedes Opportunity-Leg | `id`, `numerical_id`, `name`, `abbreviation`, `logo`, `city`, `mascot`, `conference`, `division` | Löst die beiden Kontrahenten ohne separaten `/teams`-Aufruf auf. |
109+
| `sport_ref` | Wie oben | `id`, `numerical_id`, `name` | Anzeigebereiter Sport-Verweis. |
110+
| `league_ref` | Wie oben | `id`, `numerical_id`, `label` | Anzeigebereiter Liga-Verweis. |
111+
| `market_ref` | Wie oben | `id`, `numerical_id`, `label` | Anzeigebereiter Market-Verweis (kanonischer Market-Typ). |
112+
| `sportsbook_ref` | Wie oben | `id`, `numerical_id`, `label` | Anzeigebereiter Sportsbook-Verweis. |
113+
114+
Alle inneren Felder sind **optional** innerhalb eines Blocks. Ein Block kann mit einer `null`-`numerical_id` vorhanden sein, wenn der Slug gemappt wurde, die Ganzzahlzuweisung aber noch aussteht; sowohl `numerical_id` als auch der gesamte Block können bei nicht gemappten Entitäten fehlen.
115+
116+
### Team-Metadatenfelder
117+
118+
Die `home`- / `away`-Blöcke enthalten fünf zusätzliche optionale Metadatenfelder über `id` / `numerical_id` / `name` / `abbreviation` hinaus. Sie stammen aus dem SharpAPI-Atlas und sind für die große Mehrheit der Teams befüllt (ca. 93 % bei `logo`, mit vergleichbarer Abdeckung für den Rest):
119+
120+
| Feld | Beispiel | Hinweise |
121+
|---|---|---|
122+
| `logo` | `"https://cdn.opticodds.com/team-logos/baseball/36.png"` | Vollständige CDN-URL für ein Team-Wappen. Behandle den Host als undurchsichtig; SharpAPI kann dasselbe Asset in Zukunft unter seiner eigenen Domain neu hosten. |
123+
| `city` | `"New York"` | Der geografische Ankerpunkt des Teams. Bei Teams mit mehreren Städten (z. B. die New York Football Giants, die in NJ spielen) folgen wir der konventionellen Bezeichnung der Liga. |
124+
| `mascot` | `"Yankees"` | Das Maskottchen / der Spitznamensteil des vollständigen Namens. |
125+
| `conference` | `"AL"`, `"AFC"`, `"Western"` | Liga-definierte Konferenz / Gruppierung. Format variiert je Liga. |
126+
| `division` | `"East Division"`, `"NL East"`, `"Pacific Division"` | Untergruppierung innerhalb der Konferenz, liga-definiert. |
127+
128+
Einzelsport-Teilnehmer (Tennisspieler, MMA-Kämpfer, Golfer, Fahrer) haben diese Felder in der Regel nicht befüllt — sie sind keine "Teams" im konventionellen Sinne und erben nur `id` / `numerical_id` / `name`.
129+
130+
## Migration
131+
132+
Es gibt nichts zu migrieren. Fahre mit den flachen String-Feldern fort, wenn sie deinen Bedarf decken. Übernimm die `*_ref`-Blöcke und `numerical_id` selektiv, wenn:
133+
134+
- du einen stabilen Ganzzahlschlüssel für die Speicherung benötigst,
135+
- du anzeigebereite Labels ohne einen zweiten API-Aufruf möchtest,
136+
- oder du eine Cross-Feed-Normalisierungsschicht aufbaust.
137+
138+
Die flachen Felder und die verschachtelten Blöcke beschreiben dieselbe Zeile — sie werden sich nicht widersprechen.
139+
140+
## Verwandte Themen
141+
142+
- [Sports](/de/api-reference/sports), [Leagues](/de/api-reference/leagues), [Sportsbooks](/de/api-reference/sportsbooks), [Markets](/de/api-reference/markets), [Teams](/de/api-reference/teams) — Referenz-Endpoints mit dem neuen `numerical_id`-Feld
143+
- [Odds Snapshot](/de/api-reference/odds), [+EV Opportunities](/de/api-reference/opportunities-ev), [Arbitrage](/de/api-reference/opportunities-arbitrage), [Middles](/de/api-reference/opportunities-middles) — Endpoints mit verschachtelten Referenzblöcken
144+
- [Event Matching](/de/concepts/event-matching) — wie SharpAPI dasselbe Spiel über verschiedene Books hinweg zusammenführt
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
---
2+
title: "Polymarket Auflösungsstatus"
3+
description: "Wie SharpAPI den UMA Optimistic-Oracle-Auflösungslebenszyklus auf Polymarket-Märkten abbildet — abgerechnet, storniert, bestritten, vorgeschlagen."
4+
---
5+
6+
import { Callout } from 'nextra/components'
7+
8+
# Polymarket Auflösungsstatus
9+
10+
Polymarket ist ein Vorhersagemarkt-CLOB, dessen Märkte durch das [UMA Optimistic Oracle](https://docs.uma.xyz/) bewertet werden, nicht durch einen Sportsbook-Trading-Desk. Wenn Sie Polymarket-Quoten über SharpAPI abrufen, kann die Zeile ein zusätzliches Feld enthalten — `polymarket_resolution` — das angibt, wo sich dieser Markt im UMA-Auflösungslebenszyklus befindet.
11+
12+
Dieses Feld ist **nur für Polymarket** verfügbar. Andere Sportsbook-Zeilen (Pinnacle, DraftKings, FanDuel, usw.) enthalten es nicht, da ihre vorgelagerten Wire-Formate kein entsprechendes Signal ausgeben. Siehe [Pinnacle Wire-Analyse](https://github.com/Mlaz-code/api-adapters/) für die parallele Untersuchung, die zu dem Schluss gelangte, dass dasselbe Feld für traditionelle Bücher nicht bereitgestellt werden kann.
13+
14+
## Wann das Feld erscheint
15+
16+
| Marktstatus | `polymarket_resolution` |
17+
|---|---|
18+
| Aktiv im Handel | weggelassen (Feld nicht vorhanden) |
19+
| Geschlossen, mit einem Gewinner aufgelöst | `"settled_normal"` |
20+
| Geschlossen, storniert / rückerstattet | `"voided"` |
21+
| Geschlossen, UMA-Einspruch läuft | `"disputed"` |
22+
| Geschlossen, UMA-Vorschlag eingereicht, Einspruchsfenster offen | `"proposed"` |
23+
| Geschlossen, Lebenszyklus-Felder leer (Legacy-Markt) | `"unknown"` |
24+
| Kein Polymarket-Buch | weggelassen |
25+
26+
Das Feld ist **additiv**. Bestehende Parser, die unbekannte Felder ignorieren, funktionieren weiterhin unverändert.
27+
28+
## Wertsemantik
29+
30+
### `settled_normal`
31+
32+
Das UMA-Oracle hat ein Gewinnergebnis erklärt. Bei einem binären Markt wurde genau ein Ergebnis zu `$1.00` aufgelöst und das andere zu `$0.00`. Dies ist der typische Endzustand.
33+
34+
```json
35+
{
36+
"sportsbook": "polymarket",
37+
"marketType": "binary",
38+
"selection": "Yes",
39+
"odds": -10000,
40+
"polymarket_resolution": "settled_normal",
41+
"trueProbability": 1.0
42+
}
43+
```
44+
45+
### `voided`
46+
47+
Das UMA-Oracle hat den Markt storniert — beide binären Ergebnisse wurden zu `$0.50` aufgelöst ("alle erstatten"). Dies ist dieselbe Wire-Signatur für alle folgenden Fälle:
48+
49+
- Ein abgesagtes Spiel (Sportereignis abgesagt oder abgebrochen)
50+
- Ein Teilnehmer zieht sich vor dem Ereignis zurück
51+
- Das Ereignis findet nicht statt (z. B. "Karte 3 Gewinner", wenn die Serie in 2 Karten endete)
52+
- Jede andere durch UMA festgestellte Stornierung
53+
54+
<Callout type="warning">
55+
**Polymarket unterscheidet nicht, *warum* ein Markt storniert wurde.** Der menschenlesbare Grund liegt im Off-Chain-UMA-Einspruchs-Thread auf dem UMA-Oracle-Frontend, nicht in der Polymarket-API. Wenn Ihre Anwendung zwischen Absage, Rückzug und Nicht-Stattfinden unterscheiden muss, können diese Informationen nicht aus Polymarks Wire bezogen werden — Sie müssten den UMA-Einspruchstext direkt lesen.
56+
57+
Dies ist eine bewusste Designentscheidung der UMA-Optimistic-Oracle-Architektur, keine SharpAPI-Auslassung. Wir haben uns entschieden, `voided` als einzelnen Bucket darzustellen, anstatt aus Heuristiken zu raten — gemäß unserer [Keine-Inferenz-Richtlinie](https://github.com/Mlaz-code/api-adapters/): Wenn das Upstream mehrdeutig ist, raten wir nicht.
58+
</Callout>
59+
60+
### `disputed`
61+
62+
Der UMA-Vorschlagende hat eine Auflösung eingereicht, die angefochten wurde. Der Markt befindet sich nun in einer UMA-Token-Inhaber-Abstimmung, typischerweise 48 Stunden. Die endgültige Auflösung wird nach Abschluss der Abstimmung schließlich `settled_normal` oder `voided` werden.
63+
64+
### `proposed`
65+
66+
Der UMA-Vorschlagende hat eine Kandidatenauflösung eingereicht; das Einspruchsfenster ist offen (typischerweise 2 Stunden). Der Markt wird zu `settled_normal` / `voided` übergehen, sobald das Fenster unangefochten schließt, oder zu `disputed`, falls ein Einspruch erhoben wird.
67+
68+
### `unknown`
69+
70+
Der Markt ist geschlossen, aber die UMA-Lebenszyklus-Felder sind leer. Dies geschieht bei älteren Polymarket-Märkten, die vor dem UMA-Status-Tracking entstanden sind, oder in seltenen Grenzfällen, bei denen die Gamma-API den Lebenszyklus-Verlauf nicht zurückgibt. Das Feld ist `unknown` statt zu raten.
71+
72+
## Verzögerte Auflösung
73+
74+
Polymarket-Märkte können sich Tage oder Wochen nach dem Ende des zugrundeliegenden Ereignisses auflösen. Das Feld `polymarket_resolution` erscheint, sobald der vorgelagerte Auflösungslebenszyklus voranschreitet, auch lange nach dem Schließen des Marktes.
75+
76+
Wenn Ihre Anwendung Auflösungsereignisse verarbeitet (zur Bewertung, Abrechnungsabgleich usw.), beobachten Sie den SSE-Stream / WebSocket für diese spät eintreffenden Zeilen.
77+
78+
## Vergleich mit anderen Büchern
79+
80+
| Buch | Entsprechendes Feld? | Hinweise |
81+
|---|---|---|
82+
| **Polymarket** | `polymarket_resolution` | 5-Status-Enum, abgeleitet vom UMA-Oracle |
83+
| **Kalshi** | _(noch nicht)_ | Kalshi hat Abrechnungsereignisse, aber wir stellen sie heute nicht bereit — separate Anfrage |
84+
| **Pinnacle** | _(upstream nicht verfügbar)_ | Pinnacles Wire gibt kein Echtzeit-Grundfeld aus; `cancellationReason` existiert nur am post-grading Lines-API-Partnerendpunkt |
85+
| **DraftKings / FanDuel / BetMGM / Caesars** | _(nicht verfügbar)_ | Gesperrte Märkte verschwinden einfach aus dem Feed; kein Statusfeld wird ausgegeben |
86+
| **OpticOdds (Branchenvergleich)** | _(kein Grund)_ | Fixture-level `status: cancelled` existiert, trägt aber keinen Grund; Per-Markt-Objekte haben kein Statusfeld |
87+
88+
Die von Datenkunden gewünschten Informationen — ein buchspezifischer Abrechnungsgrund — sind kein Branchenstandard. Polymarket ist der seltene Fall, bei dem der vorgelagerte Wire ihn tatsächlich enthält, da die UMA-Auflösung on-chain und öffentlich beobachtbar ist.
89+
90+
## Warum das Feld mit Polymarket-Präfix versehen ist
91+
92+
Wir haben das Feld bewusst `polymarket_resolution` statt einem generischen `resolutionStatus` genannt, damit klar ist, dass die Werte Polymarket-spezifisch sind. Eine zukünftige Kalshi-Version wäre ein separates `kalshiResolution`-Feld mit eigenem Enum — die Wire-Formate sind unterschiedlich genug, dass ein einheitliches Enum entweder dem kleinsten gemeinsamen Nenner entsprechen würde (nutzlos) oder voller Sternchen für "nur Polymarket" / "nur Kalshi"-Werte wäre.
93+
94+
## Siehe auch
95+
96+
- [Sportsbook-Liste — Vorhersagemärkte](/api-reference/sportsbooks#prediction-markets)
97+
- [Odds-API-Referenz](/api-reference/odds)
98+
- [Live vs. Vor dem Spiel](/de/concepts/live-vs-prematch) — behandelt die verwandte `marketStatus`-Semantik

0 commit comments

Comments
 (0)