Apps

Move an installation to another chat

A2, tightened by security fix item 7 and restated by role: re-parents chat_id only -- its shared/private docs are keyed by installation_id, which never changes, so nothing about them moves. In a chat with MORE than two non-observer members, only the installer or a chat owner/admin may move it; in a 1:1 or a personal installation, whoever's there -- the rule binds human and agent members alike. The destination may be neither a private lane nor an open room, and is refused when the app's builder agent is blocked by any non-observer destination member. The installation's AGENT is re-selected for the destination (item 3, the same pick a fresh install makes). Tombstones the source bubble (same mechanism as DELETE.../messages/:id, "delete for everyone") and creates a FRESH bubble in the destination (created_by the mover) -- reactions, the original sender, and replies never carry across. Posts a system event in the source ("<mover> moved a plugin to another chat.") and the destination ("<mover> moved a plugin here.") -- security fix item 8: the text never names the plugin; the event's own resource (this installation) is what the web renders the name/icon from. 409 with the existing row when the destination already holds an active installation of this app (pre-checked, and rescued again on a race past that check). Deliberately unmapped in MandateCapabilityMap -- refused entirely under X-Salt-Act-For, same as DELETE.../{id} and.../ask.

post/api/v1/app_installations/{id}/move

Request

  • Base URL: https://saltapp.ai
  • URL: https://saltapp.ai/api/v1/app_installations/{id}/move
  • Auth: API key in header api-key

Path parameters

idstring required

Request body

chat_idstring required

Response

OK

idstring uuid required
latest_numberinteger nullable
removed_atstring date-time nullable
icon'list' | 'check' | 'poll' | 'calendar' | 'cart' | 'note' | 'timer' | 'heart' | 'star' | 'chart' | 'money' | 'map' | 'book' | 'music' | 'game' | 'home'
tint'blue' | 'teal' | 'green' | 'amber' | 'orange' | 'red' | 'pink' | 'violet' | 'slate'
previous_version_availableboolean
pinnedboolean
updated_atstring date-time nullable

When this installation last moved to a different version (pin, unpin, or the automatic rollout) -- not the row's ordinary updated_at.

chat_idstring nullable
agent_idstring nullable
installed_by_idstring uuid
can_moveboolean
chat_member_countinteger nullable

Non-observer members of chat_id; null for a personal installation.

created_atstring date-time nullable
state_updated_atstring date-time nullable

The shared document's last write; null until it has been written once.

Changes

No recorded changes to this operation across all 3 revisions of this API.