Update Shared Object
horizon_update_shared_objectReplaces a shared object's opaque bytes and search data at its exact revision for explicit world-map or async-PvP access. Requires a signed-in player session and current owner/group permission.
Instructions
Replaces one object's opaque bytes and configured search data under its exact revision. Use when: explicit world-map/async-PvP object access after reading horizon://docs/shared-objects. Not for: background polling, automatic page traversal, interpreting opaque bytes or using this as a combat validator. Requires: userId and the player's session: sign in with horizon_signin_email or horizon_signin_anonymous and pass its accessToken as sessionToken. Side effects: Current owner/group permission required; owner/group/expiry stay immutable. One HTTP attempt. Returns: {object,usage,pollAfterSeconds,serverTime} Errors: 409 revision/state/permission conflict or lost response: explicitly reread owned objects/usage and reconcile original intent, never automatically retry with newer revisions or a replacement ID. 404 does not distinguish missing/private/expired data. 422 retains existing data on quota/archive failure. 401 means the session is missing or expired: sign in again and retry with the new accessToken. 403 for a session means the token belongs to another user: pass the userId that signed in. Needs HORIZON_API_KEY. Every failure returns an error result (isError) with the HTTP status and body: a 401 that horizon_test_connection also returns means HORIZON_API_KEY is wrong, 429 means the account's per-minute rate limit was reached (wait a minute, then retry).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| search | Yes | Complete configured search fields; safe integers or bounded UTF-8 strings | |
| userId | Yes | Active player UUID matching the authenticated session and project | |
| objectId | Yes | Original server-generated object UUID from the reviewed snapshot | |
| position | No | Complete safe-integer grid position when enabled, otherwise null or omitted | |
| collection | Yes | Permanent collection or configured field key, lowercase ASCII | |
| dataBase64 | Yes | Opaque canonical padded Base64 bytes; never interpret or replace them implicitly | |
| sessionToken | Yes | Player accessToken, sent only as Bearer | |
| expectedRevision | Yes | Original reviewed revision; never substitute a newer revision after an uncertain write |