Thanks for the detailed report, you haven't missed anything, the current AuthenticateApple implementation only accepts a single Apple client ID. It performs a strict equality check on the token's aud claim, so there's no built-in way to configure multiple valid client IDs. The implementation may be accepting a list of client IDs and checking membership instead of a single value. I'll forward this request to the team for consideration.
administrators
Posts
-
[Feature request] Support multiple Apple client IDs (aud values) for AuthenticateApple -
[Feature Request] Design > Segments – Condition for missing attributes (or segment membership as an alternative)Thanks for the suggestion, you’re correct that current segment criteria only support value comparisons and simple membership/range checks, so there’s no explicit “attribute does not exist / is not set” operator, nor any way to reference segment membership (e.g., “is in segment X” / “is not in segment X”) in segment definitions, so we don’t currently have a real workaround that delivers the exact semantics you’re asking for, I’ll forward your request to the team for consideration.
-
Subject: Inquiry regarding selective CustomEntity migration via Builder APIHi @moondory77 ,
The work on this is running in our development environment. The Builder API support is in place - and we're currently looking at the possibility of adding it as a new tab in the Deployment screen of the Portal.
Paul.
-
Support for Bulk Rich/Template Push to Arbitrary ProfileId ListHi,
Apologies for the slow response.
We don't have any calls that could directly handle a "file" of profileIds. We do have a few "toBatch" calls that are callable from S2S though - so you could probably have an offboard system make those calls - and call braincloud to send the notifications in batches.
Where are these profileIds coming from? An offboard analytics system of some sort?
To answer your questions:
- We are planning a revamp of our notifications system and it's APIs. I'll add this conversation so that it will be considered as we're planning that.
- As mentioned above, using one of the "Batch" calls would make the most sense - and keep your API counts reasonable
- There's an API call to call the SendRichPushNotificationWithParams, plus a second api call for the sending the push notification itself. So that would be <numReceivers> x 2 for API costs. Less if called from within a script. But the *Batch() calls would be
- Substitutions and custom metadata/custom data - the current APIs don't - so you'd probably need to handle those client side. Are the substitutions highly personal - like player's name?
I hope that helps to clarify things,
Paul.
-
Request for Zero-Downtime Migration Options (Avoiding "App is disabled") for LiveUpdateHi @moondory77 ,
We hear you - and are looking to see what options we can provide.
The thing to understand is that there are a lot of dependencies between metadata in the brainCloud system - and our deployment mechanisms work hard to ensure the integrity of the data that gets pushed. Even more importantly - it works to prevent user data from being corrupted by a mis-match of data during deployments - which is why apps are very temporarily disabled during a deployment.
These deployments normally take well under a minute and aren't much more troublesome than a common wifi interruption for clients [depends upon the client implementation though]... (note - the deployment may seem like it takes longer on the web - as there is a lot of data dependency checking to do - but all of that is done BEFORE we disable the app... which happens just for the actually data migration activity itself).
If you contact us via the support chat with your appId and the time you last did a deployment - we can take a look to see if your deployment times are above normal.
Also - we are working to provide a separate custom entity deployment mechanism - similar to what has been done for item management.
Paul.
-
Question about identifying Notification Template on client sideUnfortunately, our notification templating system is very simple and currently only supports simple text notifications. It does not currently push a template id.
We do have plans to revamp the system on our "to-do" list - but it has not been scheduled yet.
We recommend folks use the "raw" template calls - they give devs the most control over what gets sent to the various notification systems.
Paul.
-
Subject: Inquiry regarding selective CustomEntity migration via Builder APITo answer your questions:
- Yes - it's essentially the same - though I think the specific code paths vary.
- We do not currently have an selective migration for custom entities via the builder api - but I'll raise that with the devs. I would think that would be very doable.
- Not currently
I'll get the devs looking into #2.
Paul.
-
Billing/API Count impact of brainCloud Portal-triggered operationsHi,
API calls triggered by the backend DO count towards API usage -- so using the API Explorer to make calls do get counted as API calls. So - if you use API explorer to trigger a user batch job that then runs scripts on all of your users - yes, yes that does get counted as API calls.

Also - uploads of files to and from the portal do get counted in the file transfer costs.
Other normal portal operations - like viewing users, viewing logs, editing scripts, etc - do NOT get charged in API counts. So to clarify - using the API explorer to view a leaderboard is going to add an API count - but using the leaderboard viewer at App > Global > Leaderboards > Leaderboards does not!
To be honest - in general - usaging of the portal is negligible. You won't really notice the usage added by what you're doing in the API explorer or working through the portal. It's only if you use the API Explorer to kick off a large job that API counts would be noticable <-- as you'd expect!
I hope that helps!
Paul.
-
Question about AppStore SYS_GET_TRANSACTIONS_PAGE behavior in S2S Cloud CodeHmm - we'll look into it. Definitely looks like it isn't hooked up to the S2S proxy properly.
Thanks for reporting this.
-
Should Redemption Code be used as the recovery record for failed reward fulfillment?Yes, your current design matches the recommended pattern: Redemption Code is a one-way gate for “has this user consumed this shared code?”, while your claim entity is the authoritative state machine for fulfillment, retries, and audit (
Redeeming → Redeemed → Granting → Granted / GrantFailed), with Granted as the idempotency guard for duplicate grants. The main thing to watch is call ordering: it’s preferable to write the claim to Redeeming first as an intent record, then call redeemCode(), so any Redeeming with no further progress is detectable and recoverable by your server without depending on the Redemption Code record.Consolidating the brainCloud-side claim init + redemption into a single CloudCode script is a good fit, provided the script is strictly idempotent and fulfillment stays in your server pipeline. The script should read the claim state, upsert to Redeeming if needed, call
redeemCode()(skipping if already Redeemed or beyond), update the claim to Redeemed, and return rich state (claimState, claimId, rewardDataId) so your server can then perform fulfillment and issue a final Granted / GrantFailed update. This gives you a clean two-call pattern from the server to brainCloud on the happy path, while the script’s state checks make retries safe even though CloudCode itself is not transactional.