Release Notes - January 2025
IMPORTANT: As with most of our releases, the intent is that all packages are deployed to their latest versions (stipulated in Docker Images (final images)). This release has a hard dependency on the new Thrill ID v0.1.15 and the new services will not boot successfully without it.
General
- Up to now, some services would incorrectly return a
401error in the case where permissions were missing for a specific request. This has now been addressed and all errors caused by missing permissions will now returnForbidden(403)instead ofUnauthorized(401)responses.
New Features
ThrillPots
-
Jackpot Tipping Point Data
- Tipping point data is now stored in
log_winnerscollection whenever a win occurs;
- Tipping point data is now stored in
-
Raffles Scheduled Duration
- Scheduled duration is now supported for one timed raffle jackpots;
{ "jackpot_type": "Raffle", "raffle_rules": { ... "duration": "Schedule", ... }, ... }- The schedule provided during instantiation determines when the jackpot activates and when it resolves
-
Jackpot Model Switching
- Jackpot model switching API handles the creation of new jackpot instances from a template combined with the process of transfering pot values, optins, sources, etc. from an existing one, while doing a number of validations on whether the result of the switch is appropriate.
- Pot transfer logic is improved to support distribution between multiple targets.
- Maximum pot and seed values are validated and any overflow is transferred accordingly.
- For more information see Switching Jackpot Models
-
Seed value adjustments
- Seed adjustments are now validated to ensure the resulting value will not exceed the maximum defined for the pot;
ThrillPots Gateway
-
Win event metadata decoration
Each contribution request now accepts optional
event_metadatainput that in case of a win will be attached to the win event undermetadata. For example a contribution:curl --location 'http://thrillpots/jackpots/contribute/jackpot' \ --header 'Content-Type: application/json' \ --header 'Authorization: xxx' \ --data '{ "instance_id": "ac2aad1d-16b6-4e9b-9e9a-d94f705a38f7", "token": "token_00001", "brand_id": "thrilltech:brand1", "player_id": "player_00001", "player_country": "MT", "gameround_id": "1", "base_wager": 1, "currency": "EUR", "event_metadata": { "some": "data" } }'Will result in a JackpotWinEvent with metadata.
{ "event_type": "JackpotWinEvent", "event_id": "8b4025fa-b4e7-4bd3-9e8c-3e95a1a2611d", "data": { "brand_id": "thrilltech:brand1", "player_id": "player_00001", "source_id": null, "instance_id": "ac2aad1d-16b6-4e9b-9e9a-d94f705a38f7", "jackpot_name": "QuickHit Instance", "jackpot_currency": "EUR", "timestamp": 1732010393528, "win_pot_id": "major", "win_amount": 100.05624999999992, "currency_multipliers": { "brand_id": "default", "base_currency": "EUR", "multipliers": { "AMD": 430.0904, }, "win_withheld": false, "seed_deficit": 99.68125, "community_winners": null, "games_in_jackpot": [], "seed": 100.0, "metadata": { "some": "data" } } } -
Jackpot update event community split
- Jackpot update event now contains a new optional field called community_split. This field contains the percentage of the pot that will be paid out to the community winners (if any)
- You can find the updated structure here
-
Win event payout reason
- Community winner records now contain payout strategy that caused the win
- You can find the updated structure here
ThrillConnect
- Jackpot Ticker Cache
- ThrillConnect now caches the latest Jackpot Ticker updates (usually receives via the WebSocket) and makes the latest values available via a REST endpoint.
- This endpoint is a low cost manner to retrieve the latest jackpot ticker values for a specific jackpot for frontend as well as CRM and Marketing tools
- The new endpoint is located at
GET thrillconnect/v1/thrillpots/ticker/:instance_id - When called the structure returned is the same as the JackpotUpdateEvent
- Added metrics providing insight over WS usage; Exposed current open WS connections, total messages over WS and total messages proxied.
- Jackpot update event community split
- Jackpot update event now contains a new optional field called community_split. This field contains the percentage of the pot that will be paid out to the community winners (if any)
- You can find the updated structure here
- Win event payout reason
- Community winner records now contain payout strategy that caused the win
- You can find the updated structure here
- Community split in instance details
- Get jackpot by source via ThrillConnect API includes the community_split pot property for community tiers.
- You can find the updated response structure here
ThrillGate
- Added metrics for all wallet requests; Exposed total requests per type and total durations per type.
- Added further configuration options for wallet connectivity behaviour. Operators can now customise behaviour like request timeouts, retry counts, retry backoff delays and so on. More information can be found here
ThrillOffice
- Permission presets on user modal. Admins can now easily assign role-based permission sets to users ( e.g. "reporting" ).
- System status view displays status of each proxied service configured. Services with certified libraries will display their checksums.
- Dashboard view now allows timeframe selection.
- New control on Jackpots Instances view enables 10s polling of the instances data and updates the view accordingly.
- New "Reconciliation" view provides insight over all jackpot instances' key metrics in any point in time. Currently exposed metrics on the view include "GGR", "Seed deficit", "Total contributions", "Seed Value", "Pot Value" and "Total Value". By default hisorical data is bucketed by months and users can select an arbitrary point in time using the filters.
Changes/Improvements
ThrillPots
- Optimised the event throughput from ThrillPots Gateway to its websocket event listeners
- ThrillPots now synchronises its
thrillpots.brandscollection with the organisational structure defined in Thrill-ID. This makes the addition of new brands easier, since you only need to add the brands to the organisation in Thrill-ID and the change will be applied to ThrillPots as well.
ThrillGate
- Added error logging to the Standard Wallet API integration logic to product ERROR logs when a Standard Wallet API call results in an error response
- Single and Batch
CreditTransaction requests to operator wallets now make use of thesource_variantfield for transactions that are wins (amountandjackpot_amount> 0.0). Thesource_variantfield will now carry theidof the pot that was won (for example,minor,major,megaetc) - Extended withheld transactions API to support search by transaction ID.
Thrill-ID
- Thrill-ID organisations can now be defined as a hierarchical structure.
- This feature allows organisations to control sub-organisations, with each organisational level being able to have its own brands
- For existing self-hosted clients, this feature is fully backward compatible with your existing organisational structures and no action is needed unless you specifically need to model more complex organisational relationships.
- The body payload for the
POST thrill-id/admin/organisationsendpoint has been updated to include an optionalparent_idfield. To specify that an organisation is a child of another organisation, specify the parent organisation'sidin theparent_idfield. For example:
{ "id": "child_operation", "name": "Child Organisation", "parent_id": "parent_org_id", "enabled": true, "units": [ "super_casino_child" ] }- If you would like to understand more about what this feature offers, please contact your customer success manager.
Bit-Bridge
- Bit-Bridge is now a client of Thrill-ID. A Thrill-ID migration brings up the default system definitions and credentials. Clients are encouraged to change the default service account password post upgrade. A new set of ENV variables for Bit-Bridge is required for setting up the Thrill-ID client.
You can find the full list of ENV variables and description here.
ThrillOffice
- New installs now infer the initial proxy host configuration for Thrill-ID from ENV variable
TO_THRILLID_HOST. - Reporting views data filtering based on user brand/org.
- All user password flows allowed without any extra Thrill-ID permissions required.
- Improved flow for withheld transactions settlement. Improved dialogues and acknowledgement.
- Opt-Ins view now displays the preferred contribution value of the Opt-In record.
- Liability Report view promoted to Reconciliation and exposes extra instance data.
Bug Fixes
ThrillPots
- Updated indexes on the
thrillpots.log_rejected_contribution_summariescollection to prevent key collissions when a jackpot instance has multiple versions.- This index update is executed as a migration and replaces the old index
entry_type_1_instance_id_1_data.player_id_1_data.brand_id_1with a new index:data.player_id_1_data.brand_id_1_instance_id_1_instance_version_1_entry_type_1
- This index update is executed as a migration and replaces the old index
- Unallocated community payout amounts are now returned to the reinstantiated pot
- Fixed inconsistent opt-in data for jackpots that don't require opting.
ThrillOffice
- Dashboard view now shows correct instance currency.
- Forgot password links fixed.