stubkit docs

Feature · Account

User links

App groups handle the case where the same external_id exists in multiple apps. User links handle the inverse: one person has two differentexternal_id values because the tenant's auth systems aren't shared (e.g. an iOS-only login vs a Web Auth0 account).

How it works

Create a link between two users and their subscriptions get unioned at entitlement lookup time. One-hop traversal — if A is linked to B and B is linked to C, querying A returns A+B but not C. Explicit links between each pair are required. Keeps the query cost bounded.

Use cases

  • Support ticket: user paid on web, installed the iOS app under a new local-only account, Pro doesn't apply. Link them.
  • Migration from a legacy ID system — link old → new so entitlements continue.

Cache

Users with at least one link bypass the entitlement KV cache (two parallel queries per lookup: one for group membership, one for link existence). On link creation we invalidate cache entries for both sides.

REST endpoints

  • GET /v1/admin/users/:id/links
  • POST /v1/admin/users/:id/links — body: { other_user_id, reason? }
  • DELETE /v1/admin/user-links/:id