Mambo 6
6.3.6
Released on: 26 March 2024
Engine
Fixed
- Behaviour repetition limits could be ignored under rare circumstances: In situations of unusually high concurrency, when multiple activities for the same behaviour were posted at the same time, the behaviour's repetition limit could be ignored.
6.3.5
Released on: 29 February 2024
Engine
Fixed
- Empty lists or objects were removed from certain JSON responses: Empty lists/objects as well as null properties inside any JSON response that also contained nested rewards or behaviours, were incorrectly removed.
6.3.4
Released on: 28 February 2024
Engine
Fixed
-
Changing a point's decimals caused inconsistencies in leaderboard sorting: Modifying the decimal precision of an existing point led to inconsistencies in the user ranking for leaderboards that used that point. To prevent this issue, it is no longer possible to change a point's decimals after its creation.
-
Missing versioning when retrieving a list of notifications containing an AwardedCoupon: When retrieving notifications with a pinned version (or Accept-Version header) lower than 6.3.0, the response could incorrectly contain notifications for AwardedCoupons.
-
Java SDK: An exception was thrown when deserializing json responses containing unknown properties or subtypes.
-
Java SDK: Retrieving a notification that contained an AwardedCoupon caused a deserialization error.
-
Versioning for "Filter by Tag" not applied to nested rewards or behaviours: The versioning change that maintained compatibility of the old tagFilter property in versions prior to 6.3.0, was not applied to rewards and behaviours that were nested inside other objects.
6.3.3
Released on: 9 February 2024
Administration Panel
Fixed
- Deleting a site using the search functionality removes the wrong site: When deleting a site while the list of sites is filtered with a search term, the wrong site was deleted instead of the selected one.
Engine
Fixed
-
Cloned mechanics didn't always have the "active" property set to false: When copying a mechanic, the value of the active property was also copied, while it should always be set to false.
-
Endpoint to retrieve the list of KPI states returned incorrect number of elements per page: When retrieving the list of KPI states, the paged results could contain the wrong number of documents per page.
6.3.2
Released on: 27 January 2024
Administration Panel
Fixed
- Switching sites from a config or user page caused an error: Switching sites when you have a config page open or a user profile open, caused an error to be displayed on the screen.
Engine
Fixed
- Upgrade procedure to Mambo 6.2.1 occasionally crashed: The upgrade migration to add an activityId to CouponStates arising from KPI activities could occasionally crash.
6.3.1
Released on: 23 January 2024
Engine
Fixed
- Endpoint to retrieve the list of DataStores returns inconsistent results across pages: When retrieving the list of DataStores, the paged results could contain duplicates or missing entries.
6.3.0
Released on: 13 December 2023
Administration Panel
Fixed
-
Coupon limited series does not work when changing coupon code type: In the Coupon editor page, when switching from single coupon code to multi coupon code, the limited series input box is disabled. However, switching back did not enable the input again.
-
Dialog to create a new tag does not always expand: On certain pages, the dialog to create a new tag would not appear upon clicking the "Create new Tag" button.
Engine
Deprecated
-
API endpoints to create activities: The current v1 POST endpoints to create activities have been replaced by new asynchronous endpoints (v2). Current v1 endpoints have been deprecated and marked for removal in June 2024. Refer to the API and SDK documentation for further information on how to use the new v2 endpoints.
-
SDKs prior to 6.3.0: Older versions of the SDK have been deprecated and will no longer work after June 2024. Please upgrade your SDKs to a newer version.
Added
-
New high performance end-point to create activities: A new API endpoint for POST requests to create new activities is released under (
/v2/{site}/activities). This new endpoint is asynchronous: it always returns immediately an activity id, and the activity is added to a queue for asynchronous processing. -
CouponStateExpiredEvent added to webhooks: It is now possible to trigger a Webhook call using the CouponStateExpiredEvent, which is fired every time a user's coupon expires.
-
Configurable signing key for OAuth2 tokens: The cryptographic key used for signing OAuth2 tokens is now explicitly configured through the oauth.token.signing_key property in mambo.properties.
-
Leaderboards report user ranks and points for previous periods: Leaderboards, in addition to the current rank and points of each user, now also report the rank and points for the previous day/week/month. This allows determining if a user's rank has been climbing or dropping over time. This information could be used, for example, to display rank changes in a UI.
Changed
-
Improved filtering capabilities when retrieving CouponStates: When retrieving the list of CouponStates, it is now possible to filter the results so that the results only contain coupons that are still redeemable, were already redeemed or have expired.
-
Rename the "Filter by Tag" flag: In order to avoid confusion and better signify functionality, the "Filter by Tag" configuration flag of Behaviours and Rewards has been renamed to "Award only if the user's personalisation tags match".
Fixed
- Activities and Notifications contain prize coupons that were not awarded: Under rare circumstances, activities and notifications could contain prize coupons that in reality were not awarded to the user, either because the coupon was inactive, its scarcity limits were hit or, in the case of multi-code codes, there were no codes left to assign. The bug has now been fixed and these coupons are no longer added to activities nor notifications.
Widgets
Added
- Leaderboard widget shows user ranking change over time: Next to a user's rank, the Leaderboard widget displays an up or down arrow indicating the user's rank change relative to the previous period.
6.2.4
Released on: 3 November 2023
Administration Panel
Changed
- Show assigned coupon codes in the Coupon editor: Along with the list of all codes associated with the coupon, the coupon editor now also shows the list of coupons that have already been assigned to a user.
Engine
Fixed
- Assigned Coupon Codes can be deleted: It was possible to delete coupon codes from a coupon even after they had already been assigned to a user. This made it impossible for the user to redeem the coupon even though they could still see it as available. This version removes the possibility to delete coupon codes that have already been assigned to a user.
6.2.3
Released on: 1 November 2023
Administration Panel
Fixed
- Data table filters not updating on site change: When selecting a different site from the sites drop down menu, the filters associated to the data table were not updating until the page was either refreshed or you navigated away and back to the page.
Engine
Fixed
- Retrieving all coupons for a user isn't versioned: When retrieving all the coupons available to a user, the latest versioning transformation was not being applied to the data model of the "unlocked" property.
6.2.2
Released on: 23 October 2023
Engine
Changed
- Guarantee order of tags: The order of tags associated to an object is now guaranteed. If you need the tags to be in a specific order or want to rely on their order, it's now possible to do so.
Fixed
-
Cloning DataStores doesn't update creation date: When cloning a datastore, the creation date was copied from the DataStore being cloned instead of being set to the time of the cloning.
-
Paging CouponStates isn't working as expected: When paging the list of CouponStates the pages were not returning the full list of records on each page. States were being removed after the paging had been applied which resulted in pages with less than the number of records expected.
-
API authentication creates sessions: Making API requests using tokens was causing the system to generate a new session for each request instead of being stateless.
6.2.1
Released on: 12 October 2023
Administration Panel
Changed
- Mission rewards selection screen: When opening the mission rewards selection screen the currently selected rewards were not highlighted. This could cause confusion in terms of what had or hadn't already been selected. This has been improved and the screen will now show currently selected rewards.
Fixed
- Unlock if any/all criteria are met: When creating a reward it's possible to determine if all or any number of the criteria need to be met in order to unlock the reward. Changing the list of criteria (adding or removing them) would cause the any/all option to reset which could easily be missed. Adding or removing criteria no longer resets the option.
Engine
Changed
- Deploy Mambo on-premise on non-root contexts: It's now possible to deploy Mambo on a non-root context within your webserver.
Fixed
-
Webhook logs show the wrong site: The logging in place for the webhooks could show the wrong site in the log file as the site context wasn't cleared.
-
Rejecting activities could result in negative point based KPIs: When rejecting an activity, it was possible for the point total within the KPI to be negative even though the balance of the user was not.
-
Clearing all user notifications is slow: When clearing all of a user's notifications the system could take some time to process particularly if there were many unread notifications.
-
Gift activities with rewards which unlock internal points: When creating a gift activity which unlocks a reward with points that are internal only, then the activity does not contain the points. The points were not present in the reward itself, nor in the points list. This meant that retrieving the activities with internal points included was not showing these points.
6.2.0
Released on: 22 September 2023
Administration Panel
Fixed
-
Create activity modal has no coupons: When creating a coupon based activity, the coupons available to the user were not being displayed.
-
Missing Accept-Version header in API documentation requests: When trying the API endpoints from the documentation, the Accept-Version header was not being sent with the request. This resulted in the pinned version of the data always being returned instead of the selected version.
-
Site not populated in API documentation: When trying a request from the API documentation, the site was not being automatically populated.
Engine
Added
- Idempotency: We have added idempotency to all of the available POST APIs. You can now add the Idempotency-Key header to a POST request which will make the request idempotent. If there is a network issue or failure, you will be able to replay the request with the same idempotency key which will guarantee that no duplicates are created in the system.
Changed
- CouponRedeemedEvent added to webhooks: It's now possible to trigger a webhook call using the CouponRedeemedEvent which is fired every time a user redeems a coupon.
Fixed
- Coupons state endpoint returns duplicates: When retrieving the list of coupon states the paged data could contain duplicates.
6.1.2
Released on: 20 September 2023
Administration Panel
Fixed
- Data store page doesn't show site drop down: When on the data store configuration page the site drop down was not visible.
Engine
Fixed
-
UUIDs with HTML encoded characters cannot be deleted or updated: When creating a user or administrator with HTML encoded characters in the UUID, it was no longer possible to delete or update the user.
-
Old webhook deliveries for CouponStateEvent don't load: Viewing older pages of webhook deliveries for CouponStateEvents, the page would fail to load and result in an error.
6.1.1
Released on: 1 August 2023
Administration Panel
Fixed
- Bulk reject documentation shows fields which are not present: The data model documentation for the bulk reject criteria was showing the userId and targetUserId fields which are not present.
Engine
Fixed
-
Coupon state is created when coupon is not awarded: Users had a coupon state created with no awarded details when using awarding multi-code coupons that had all their available codes assigned. If all the codes are assigned and the coupon cannot be awarded, then the coupon state is no longer created.
-
Leaderboard regenerate fails with expired points: When running the leaderboard regeneration using expirable points the calculations were incorrect if the point was past its expiration date but had not yet been expired by the system.
-
Gifting and bountying did not remove them from the source user: When creating a gift or a bounty, the points were being redeemed from the source user rather than being decremented. The issue is that this can cause a cycle where users can gift each other points without end and ultimately game the system. The points are now being deducted from the source user avoiding this issue.
6.1.0
Released on: 28 July 2023
Administration Panel
Changed
- Data dictionary: The data dictionary now indicates which data model fields are deprecated.
Fixed
-
Create activities doesn't allow metadata: When creating a flexible behaviour based activity in the UI, it was not possible to add metadata to the flexible behaviour unless there were metadata rules defined for the specific behaviour. That has been fixed and it's now possible to add metadata to flexible behaviours which don't specify any metadata rules.
-
User search doesn't work: The user search box was not working for all administrators. The issue was with the request validation which was stopping requests which did not have any ordering or filtering applied.
-
Data dictionary: The data dictionary was showing objects, object properties and database fields which were for internal use only. The data dictionary now only shows objects and object properties that are available through the APIs.
-
Change version in documentation hides data models: When switching versions in the API Documentation, the shared data models in the data dictionary were being hidden from the UI.
-
Webhook delivery "Completed" label is red: The UI was showing the completed label on the webhook deliveries list in red rather than green.
Engine
Changed
- Align naming of coupon, leaderboard and KPIs: The API returned data models with different naming conventions for the user's coupon, leaderboard and KPI states. We've aligned the naming convention and the existing data models have been renamed them as follows:
- AwardedCoupon is now CouponState
- LeaderboardUser is now LeaderboardState
- KPIUser is now KPIState
Fixed
- Webhooks allow empty payload version: When creating a webhook it was possible to leave the payload version property empty which would in turn cause the API used to get webhooks to fail. Webhooks now require the payload version field to be set.
6.0.1
Released on: 10 July 2023
Administration Panel
Changed
- Recommended CSP directives: We've added the basic recommended Content Security Policy (CSP) directives to the documentation so that you can quickly add them to your application or use them to modify your existing CSPs.
Engine
Fixed
- Gifting from the widgets not working: When sending a gift through the widgets or using the JavaScript APIs, the requests would fail as they were being directed to an invalid endpoint within the system.
6.0.0
Released on: 3 July 2023
From Mambo 6.0.0 the minimum Java Runtime Environment version required to run the application is Java17.
Engine
Added
- API Versioning: Added the ability to update your accounts API independently of platform updates. Your account APIs will be pinned to a specific version of the API (starting with the version of when the account was created). If the platform is updated with any changes to the current API data models, these will be available as a new version. Your account will remain on your pinned version until you decide it's the right time to upgrade to the latest version of the API. This offers greater stability to your integration and allows you to upgrade following your own cadence.
Changed
- Support ISO 8601 without milliseconds: It's now possible to use dates without millisecond precision following the ISO 8601 standard.
Fixed
-
Analytics count cancelled or awarded bounties incorrectly: When a new bounty is started before cancelling or awarding the previous one, the cancelling and awarding were not being correctly counted in the analytics data.
-
Translations were not updating correctly: When updating a translation the values of the different languages could end up mixed in with the wrong language.