• Categories
  • Recent
  • Tags
  • Popular
  • Solved
  • Unsolved
  • Users
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Darkly)
  • No Skin
Collapse
brainCloud Forums

administrators

Private

Posts


    Should Redemption Code be used as the recovery record for failed reward fulfillment?
  • J JasonL

    For a shared/multi-use Redemption Code, a specific user’s redeemed record can only be reset or deleted through the tester-only deleteRedemptionForTester() flow, so there is no supported production operator/API path for non-tester accounts, and the tester reset should be treated as a QA/dev tool rather than a live recovery mechanism.

    If reward fulfillment fails after redemption, it does not provide an automatic recovery or re-execution path that restores the same user’s redemption state in production; synchronous failures record a failed attempt, async flows can end in Failed on timeout, and any retry is only possible if the code type’s maxRetries still allows another user-initiated redeemCode() attempt.

    customRedemptionInfo can be used as a persistent per-user audit field if your fulfillment script writes it back, since it stores the script response on the user’s code record. However, it is not designed to be updated later through a direct external API after the fact.

    The tester reset is explicitly intended for testing/cleanup only, not as a production recovery operation.

    For production operational rewards, the safest pattern is a shared Redemption Code for claim detection, plus a separate Custom Entity for the fulfillment state, which provides auditable handling of pending/fulfilled/failed/retrying without relying on the Redemption Code record as the source of truth.


  • Inquiry regarding temporary "App is disabled" error during Builder API deployment
  • Paul WinterhalderP Paul Winterhalder

    Hi @moondory77 ,

    Yes, you observed correctly.

    During the data migration portion of the deployment (which occurs after the system has done a bunch of validation and consistency checks), the system temporarily disables your app to do the actual data migration.

    This is to protect the data integrity of your app - as your app's metadata, reference data and cloud code scripts are all changing underneath it. So we disable the app, make the changes, and re-enable the app.

    All of this normally takes just a few seconds - though it does depend upon the number of changes being made.

    I hope that helps to clarify things!

    Paul.


  • MyServers Permission
  • Paul WinterhalderP Paul Winterhalder

    Hi @noah,

    I agree that this would be a good feature.

    I've been doing some thinking on it...

    What if we could restrict an S2S server to only being able to call a specific set of scripts? That way you would be in full control as to the scope of the API that you are making available.

    Would that work for your use case?

    Paul.


  • brainBot 6 is live! What do you think?
  • Paul WinterhalderP Paul Winterhalder

    Hi folks,

    brainCloud 6 with brainBot is now live!
    (https://updates.braincloudservers.com/braincloud-6.0-with-brainbot-is-here-1x54Sk)

    Thoughts on brainBot - or the new features in general?

    We're eager to hear what you think!

    Paul.


  • Questions about brainCloud Friends and Social Leaderboard behavior
  • J JasonL

    Hi @gyutaelee,

    Thanks for the follow-ups. Here are answers to your three new questions:

    A1: Right now, pagination for GetSocialLeaderboard (or other social leaderboard APIs) is not supported, and adding it would be a non-trivial server-side change, not a quick configuration tweak. It’s something we’d like to improve, but it’s not on the short-term roadmap at the moment.

    A2: Raising maxMultipleLeaderboardScoreLimit to 100
    The maxMultipleLeaderboardScoreLimit value is configurable on a per-app basis, with a default of 10. We do try to keep this value low because GetMultiSocialLeaderboard is quite expensive on the server, but for your use case we should be able to bump it to 20 for your app so you can safely call GetMultiSocialLeaderboard([leaderboardId], 20, replaceName). We’re not normally bumping this limit to 100, but 20 is reasonable. If you’d like us to do that, just let us know your appId and we can review and apply the change.

    A3: Getting only the current player’s rank/score in their friends leaderboard**
    There’s no dedicated API currently that returns just “my rank among my friends” in a single call. However, you can get both the top list and your “my rank” context in one call using GetMultiSocialLeaderboard with a single leaderboardId and a leaderboardResultCount set to your truncated top‑N (e.g., 50 or 20). The response includes a selfIndex field computed server-side:

    • If the current player is inside the top‑N, selfIndex is their rank (0-based).
    • If the current player is outside the top‑N, selfIndex is -1, and you can show something like “Your rank: > N” in the UI.

  • Segment Code Bug Report
  • J JasonL

    All fields are editable during the cloning step, and the Code field is also editable there. I’m not sure why it’s looking like the Code field isn’t editable for you, it should work the same whether it’s under or over the 12‑character limit.


  • Question about using unique indexes for Custom Entities
  • Paul WinterhalderP Paul Winterhalder

    Hi @gyutaelee - this has been done!


  • Question about CloudCode API Hook and Global Property read costs / usage count
  • J JasonL

    Hi @gyutaelee,

    Thanks for the follow-up. Based on the current behavior, the “first 2 API calls are free” allowance is applied across the whole request chain, not separately for the Pre-hook and the original CloudCode script. In other words, internal bridge.callAPI() usage from both executions shares the same allowance for that request/session.

    So if the Pre-hook makes 1 internal API call and the original script makes 3 more, the first 2 total internal calls are free, and the remaining 2 are billed according to the normal post-free rate.

    For your current version-gate use case, this does not change anything because bridge.getGlobalProperty() is not counted as an API call. But if either the Pre-hook or the original script starts using bridge.callAPI() later, the calls will pool under the same request-level allowance.


  • [Feature Request] Bulk actions for Custom Entities in the User tab
  • Paul WinterhalderP Paul Winterhalder

    Ah - gotcha - that makes more sense!

    We'll look into it.


  • Automated Promotion no longer activates with New entrants to the segment only
  • Paul WinterhalderP Paul Winterhalder

    Hi @gyutaelee ,

    Are you by any chance taking an automated promotion that you had used before and just changing the dates? Or maybe changing the criteria in some other way (the xp level?)

    Because that won't work. Our system keeps track of the fact that the user has participated in that promotion before - no matter what the criteria is.

    I mention this because the promotion id is 6 - which of course means it was the 6th promotion ever created. I figure such a low number means you are likely re-using an existing promotion.

    Just a guess though -- try creating a brand-new promotion to see if you get the same behaviour.

Member List

bcadminB bcadmin
Mark DouthwrightM Mark Douthwright
J JasonL
C Claire Raby
Markus DouthwrightM Markus Douthwright
C Corey Clarke
Adam PilkingtonA Adam Pilkington
Paul WinterhalderP Paul Winterhalder
R Roger Masse
  • Login

  • Login or register to search.
  • First post
    Last post
0
  • Categories
  • Recent
  • Tags
  • Popular
  • Solved
  • Unsolved
  • Users