Exchange
suibets
Severity
MEDIUM
What Our Normalizer Expects
core/src/exchanges/suibets/normalizer.ts:57 reads raw.sport for the market category, defaulting to 'sports':
// normalizer.ts:57
category: raw.sport || 'sports',
What The Live API Returns
The live GET https://www.suibets.com/api/p2p/offers response does not contain sport. The field is now named sportName:
[].sportName: str ← present (was: sport)
[].sport ← ABSENT
Endpoint tested: GET https://www.suibets.com/api/p2p/offers
Impact
MEDIUM: raw.sport is always undefined, so every Suibets market is categorized as 'sports' regardless of the actual sport. Category-based filtering (e.g. "Football", "Basketball", "Tennis") is broken — all markets appear under the same generic category.
Suggested Fix
Update the normalizer to read raw.sportName:
// normalizer.ts:57
category: raw.sportName || 'sports',
Also update the SuibetsRawOffer interface to rename sport to sportName.
Found by automated response shape drift audit
Exchange
suibets
Severity
MEDIUM
What Our Normalizer Expects
core/src/exchanges/suibets/normalizer.ts:57readsraw.sportfor the market category, defaulting to'sports':What The Live API Returns
The live
GET https://www.suibets.com/api/p2p/offersresponse does not containsport. The field is now namedsportName:Endpoint tested:
GET https://www.suibets.com/api/p2p/offersImpact
MEDIUM:
raw.sportis alwaysundefined, so every Suibets market is categorized as'sports'regardless of the actual sport. Category-based filtering (e.g. "Football", "Basketball", "Tennis") is broken — all markets appear under the same generic category.Suggested Fix
Update the normalizer to read
raw.sportName:Also update the
SuibetsRawOfferinterface to renamesporttosportName.Found by automated response shape drift audit