Please review below FAQ's for any related questions you may have.
The client receives a full image on reconnection which overwrites all older prices. The client will need to process the market message for every market, and the market_update message for every market that matches their subscription.
Up to 2 days after the event.
You will receive settlement information for that event.
Subscriptions are not shared between connections. In a scenario of a reconnect, you will receive a market message with all the markets available just as you do when you initialize a connection. You then must re-subscribe to the markets. Once you have re-subscribed you will receive a market_update for all the markets which match your subscriptions. Each connection is independent and does not hold memory of its previous connection.
We won't send fractions, we'll send decimals (like in the example), but that's the correct structure. "settlement": { "stake_returned":0.0, "payout_returned": 0.5 },
Elaborating question: If you want to "remove" a market created with the following "market" message: "type": "market", "id": "golf_14754_threeball_hole~7cgolfer_ids~3d24~2c1544~2c1548~7chole_num~3d1~7cround_num~3d1", Will you send this? "type": "remove_markets", "msg": ["golf_14754_threeball_hole~7cgolfer_ids~3d24~2c1544~2c1548~7chole_num~3d1~7cround_num~3d1"] or this: "type": "remove_markets", "msg": ["golf_14754_threeball_hole"] To answer this: Every market message will have a property called ID. Let's say that this property is of type MarketID. It's a "slug", which is defined in the documentation: “A slug is defined as a string which may only contain the following characters: digits 0-9, a-z and A-Z, hyphen (-), underscore (_), period (.), and tilde (~). A slug is represented equivalently in ASCII or UTF-8 and may be used in URLs without escaping.” A market's id property is globally unique - we will never re-use them. The msg property of the remove_markets message has type List[MarketID]. Each ID we send will refer to either one or zero markets that we've sent market messages for. The zero there is because it's possible that we would send a remove_markets message for a market we hadn't sent a market message for. We don't expect this ever to actually happen in practice though. Also note that markets are part of a hierarchy. Every market has a parent event, and every event a parent competition. If we send a remove_events message, then any market which belongs to those events should also be removed by that message.
Start time for Markets is always null. That's never set. We do set the start time for events which is dependent on when the Tee Times become available.
You can subscribe to any combination of tags (sport, competition, event, and market type), but the additive nature means that multiple subscriptions are not usually required.
Some examples:
["sp.golf"] will subscribe to all golf markets
["comp.golf_pga"] subscribes to all PGA Tour golf markets
["ev.golf_14586"] will subscribe to all markets from event ev.golf_14586
["ev.golf_14586", "mt.twoball"] will subscribe to all markets from event ev.golf_14586, and also all markets (from any event) of type mt.twoball
Yes, in case of late entries for example. You should see the markets listed as "ended" which is to indicate that you should not listen to any further updates.
We have noticed that within the market_update feed, under the selection_updates the price is returned as 0/1. Is this expected? Should we suspend markets in this case?
That usually happens when a selection does not have a legitimate price for some reason. When it happens, the selection itself should either be settled or suspended
That's correct. We don't offer odds that a player won't make the cut.
The market reports are the best way to tell. As a rule, Mustard will create all markets which are appropriate for that event type (L1, L2 etc)
You'll receive the union of the markets which match your subscription, not the intersection: if you subscribe to "ev.golf_7" and "mt.outright", you'll get all markets for event ID 7, and any market of type "mt.outright", rather than markets of type "mt.outright" in event 7.
Currently, it's not possible to subscribe to all markets of a particular type within a particular event.
They can subscribe to any combination of tags (sport, competition, event, and market type), but the additive nature means that multiple subscriptions are not usually required.
Some examples:
["sp.golf"] will subscribe to all golf markets
["comp.golf_pga"] subscribes to all PGA Tour golf markets
["ev.golf_14586"] will subscribe to all markets from event ev.golf_14586
["ev.golf_14586", "mt.twoball"] will subscribe to all markets from event ev.golf_14586, and also all markets (from any event) of type mt.twoball
2021-02-19 20:25:50.421 [main] INFO ssh_traffic:26 - {"mode":"push","type":"market_update","msg":[{"id":"golf_14759_threeball_hole~7cgolfer_ids~3d547~2c4787~2c5179~7chole_num~3d9~7cround_num~3d2","status":"active","ew_terms":null,"meta":{"group_id":11,"hole_num":9,"round_num":2,"event_id":"254"},"selection_updates":[{"display":true,"id":"g:547","meta":{"golfer_id":3397},"name":"Cameron
Tringale","note":"","order":1,"price":"13/8","reason":"","status":"active"},{"display":true,"id":"g:4787","meta":{"golfer_id":3402},"name":"Joel Dahmen","note":"","order":2,"price":"19/10","reason":"","status":"active"},{"display":true,"id":"g:5179","meta":{"golfer_id":7451},"name":"Will Zalatoris","note":"","order":0,"price":"13/8","reason":"","status":"active"}],"display":true,"related_place_markets":null}]}
2021-02-19 20:26:02.295 [main] INFO ssh_traffic:26 - {"mode":"push","type":"market_update","msg":[{"id":"golf_14759_threeball_hole~7cgolfer_ids~3d547~2c4787~2c5179~7chole_num~3d9~7cround_num~3d2","status":"active","ew_terms":null,"meta":{"group_id":11,"hole_num":9,"round_num":2,"event_id":"254"},"selection_updates":[{"id":"g:4787","price":"9/5"}],"display":true,"related_place_markets":null}]}
Yes, this is expected. As explained in https://docs.imgarena.com/mustard-systems-odds-distribution-service/-MKdexAVg8N0obU0S5dH/odds-distribution-service/feed-specification#market-status-update, the selection_updates field will only contain selections that have changed.
Markets cannot be generated until static data is received i.e. tee times.
2 connections per customer to each environment.
A subscription is a set of tags. A tag can be a sport, competition, event, market type, or market id. If multiple tags are provided, you will receive markets that match any of the provided tags. For example, "tags": ["ev.golf_1", "mt.outright"] will provide both "all markets for ev.golf_1" and "all markets of type mt.outright"
This may be because the market does not match your subscription - please note that each session can only have one subscription at time, for example, subscribing to ev.golf_2 after previously subscribing to ev.golf_1 will mean you no longer get markets from ev.golf_1.
This may also be because the market is not available for that event. If you think you should be receiving a market but aren't, please provide your session ID along with the subscription message that are you using
Only the first market_update message will necessarily contain every selection. Future messages will only contain deltas, for example if only one selection changes, the update message will only contain that selection.
There are two fields: stake_returned and payout_returned. Both will be decimals between 0.0 and 1.0 inclusive. A losing selection will have 0.0 for both stake and pay out returned. A winning selection will typically have 0.0 stake and 1.0 pay out. If two selections dead-heat, they will both get 0.5 for payout_returned. A void selection would get 1.0 stake and 0.0 pay out.
Results are provided for the main market and the related place market independently. Clients are responsible for using these accordingly. This is because each-way terms can change during the lifecycle of a market. Related place markets are published as a dictionary in the market_update message, for example "related_place_markets": {"4": "golf_123_topn7cnplaces3d4"]"} means that the results for 4 places can be found in the market golf_123_topn7cnplaces3d4.
Some markets will offer each-way terms. Depending on the each-way settings (e.g. 4 places or 5 places), clients will need to look at more than just the main market to settle customer bets. For example, if the main outright market has each-way settings for 4 places, the related place market would be the "Top 4" market. A customer's bet on selection S would depend on that selection's result in both the main outright and the related place markets. Related place markets are published as a dictionary in the market_update message, for example "related_place_markets": {"4": "golf_123_topn7cnplaces3d4"]"} means that the results for 4 places can be found in the market golf_123_topn7cnplaces3d4.
‘Top Region’ markets have moving EW terms so these are updated throughout the tournament to give the correct offering for the changes in the market. The ‘Alternate EW’ markets have static EW terms which don’t change at any point during the tournament.