Link Identity Rows
Changed onMoves a guest id's experiment and analytics rows to the signed-in id, from the app, with the publishable key. Use it to keep a pre-login funnel and experiment assignment when the person logs in.
Without link_token this endpoint never moves purchases and never touches a customer record. It moves experiment impressions, assignments, exposures, outcome rows and funnel events from previous_user_id (or previous_install_id) to user_id. It skips an id that a live account owns, and an id that was already merged away, and answers status: "skipped" with zero counts. Where user_id already holds a row for the same experiment, that row wins and the guest's row is left in place. Nothing is dropped.
With link_token it is a full reconcile, the same as Present Link Token: purchases move too, the same limits and refusals apply, and the response also carries reconciliation_id. Ids sent beside a token must both be present and match the token, or neither.
With a zs_anon_ previous_user_id (an id minted by iOS 1.7.0, Android 1.4.0 and Flutter 1.9.0 or later) and no token, the endpoint folds the anonymous id into the account. If user_id has no history yet (no purchases, entitlements, Stripe customer or funnel events), everything moves: purchases, entitlements, events and experiment assignments, and identity.reconciled fires with actor of identity_link. If user_id already has history, nothing moves and the answer is switched. A retry returns the same result. Ids without the prefix behave as described above. user_id must not start with zs_anon_: that prefix is reserved and answers 400 invalid_user_id. The merge is authorized by the publishable key alone, so make user ids hard to guess.
Without a token it is rate limited to 60 calls a minute per client IP and 6,000 a minute per app. Over a limit the response is 429 with Retry-After.
Request
- Base URLhttps://api.zerosettle.io/v1
- URLhttps://api.zerosettle.io/v1/iap/identity-link/
- AuthAPI key in header X-ZeroSettle-Key
Request body
Response
Processed.
Changes
- breaking
added to the response body
oneOflist for the response status - breaking
the response's body type changed from
objectto no type for status - breaking
the response property
became nullable for the status - breaking
removed the required property
from the response with the status - warning
removed the optional property
from the response with the status - warning
removed the optional property
from the response with the status - warning
removed the optional property
from the response with the status - warning
added the new
mergedenum value to theresponse property for the response status - warning
added the new
switchedenum value to theresponse property for the response status
- breaking
- info
endpoint added
- info