UI
Źródło pól
Render / format
Header
symbol, interval
Tekst
Snapshot
market_snapshot.last_price, market_snapshot.atr14
Price 2dp, ATR 4dp
Direction
trade_panel.verdict
LONG/SHORT/NEUTRAL, kolor pill
Trade Probability
trade_panel.trade_probability_pct (fallback: confidence_score)
0–100, progress bar + marker + kolor wg progów z legendy
Trend Filter
trade_panel.trend_filter.text_pl|text_en
Label obok paska
Kontekst
trade_panel.context.badge, message, opcj. position_label
Badge + opis (anty-FOMO)
Reasons (3)
trade_panel.reasons[].message_pl|message_en
3 pigułki, ellipsis
Levels
trade_panel.levels
Entry/SL/TP + guardy, preferuj *_pct_text
UI
Źródło pól
Uwagi bezpieczeństwa
Echo Rynku
echo_rynku.bias, confidence_label, summary_pl|summary_en, opcj. ui_score
Agregat — brak k/n/up/down/median
Timeline
timeline.items[].label_pl|label_en, recency, total_changes
Bez from/to/ts
UI
Źródło pól
Uwagi bezpieczeństwa
AFI
statistical_panel.afi.score, statistical_panel.afi.label
Render jako badge + liczba
Best hours
statistical_panel.best_hours.best_buy_hour, best_sell_hour
Tylko godziny (agregat)
Timing hint
statistical_panel.timing_hint_pl|timing_hint_en
Tekst do UI
Stabilność kontraktu
Renderuj wyłącznie pola publiczne opisane w /api/v1/legend. Preferuj pola v1.1 (np. trade_probability_pct, *_pct_text, summary_*, label_*) i traktuj fallbacki jako przejściowe.
Minimalizuje regresje przy aktualizacjach.
Błędy i retry
Jeśli ok != true, pokaż error state i wykonaj retry z backoffem. Dla 429 respektuj Retry-After.
API może bronić się przed burstem i chwilowymi ograniczeniami upstream.
Caching / odświeżanie
To jest produktowy kontrakt do UI (nie tick-feed). Odświeżaj rozsądnie (np. klik / interwał), stosuj krótki cache po swojej stronie i nie odpalaj requestu na każdy re-render komponentu.
Stabilny UX i fair-use dla API.
Strefa czasu
best_hours traktuj jako godziny 0–23 w czasie PL (CET/CEST) — renderuj wprost, bez własnych przeliczeń.
Unikasz przesunięć i niespójności w UI.
Język
Jeśli aplikacja jest PL/EN, renderuj pola *_pl / *_en zgodnie z językiem. Gdy brak — fallback na drugi język lub neutralny tekst.
Spójność UX bez dodatkowej logiki po stronie partnera.
IP / bezpieczeństwo
Kontrakt publiczny jest „presentation-ready” i nie ujawnia telemetrii silnika. Nie próbuj odtwarzać mechaniki (reverse engineering) ani nie loguj payloadów do publicznych narzędzi analitycznych bez anonimizacji.
Ochrona IP i danych handlowych.