Move lists to another schema sync scope, assign lists that no scope manages to a scope, or release lists from their scope. See moving lists between scopes.
POST https://api.jsonpad.io/sync-schema/movecurl https://api.jsonpad.io/sync-schema/move?dryRun=true \
-H "Content-Type: application/json" \
-H "x-api-token: <YOUR TOKEN>" \
-d '{
"lists": ["recipes", "ratings"],
"scope": "cookbook-app"
}'dryRunbooleanhttps://api.jsonpad.io/sync-schema/move?dryRun=trueReturn the plan without changing anything. The response says whether a real move would be refused, in blockedBy.x-api-tokenstringYour API token. The token needs the sync-schema permission, and permission to update each list it moves.Either lists or fromScope is required, but not both.
listsstring[]["recipes", "ratings"]The lists to move, by id or path name. 1-100 lists.fromScopestring"recipe-app"Move every list this scope manages, e.g. to rename the scope. If the scope doesn't manage any lists, nothing changes, and the response has a warning.scopestring | null"cookbook-app"The scope to move the lists to, or null to release them from their scope. 1-50 letters, numbers, hyphens and underscores.{moveId: "2a5d9f7e-3c1b-4e8a-9f0d-6b7c8d9e0f1a"dryRun: falseapplied: truescope: "cookbook-app"summary: {move: 1assign: 1release: 0noChange: 0error: 0}changes: [0: {list: "recipes"listId: "1bbd0b1e-4b3a-4c52-8f2a-0b8b0a2b5d0e"action: "move"from: "recipe-app"to: "cookbook-app"indexes: 2fields: {tags: {from: [0: "recipe-app"]to: [0: "cookbook-app"]}}}1: {list: "ratings"listId: "7c2e4a6b-8d0f-4b1c-9e3a-5f6d7e8a9b0c"action: "assign"from: nullto: "cookbook-app"fields: {tags: {from: []to: [0: "cookbook-app"]}}}]warnings: []blockedBy: null}moveIdstringIdentifies this move in the attachments of the list-updated events it logs.appliedbooleanWhether the changes were made. Always false in a dry run.changesobject[]One entry for each list. action is move (from one scope to another), assign (a list no scope managed), release, no-change (the list is already in that scope) or error. from and to are the list's scope before and after.
indexes is how many of the list's indexes the scope manages, which move (or are released) with it. An assigned list's indexes aren't managed by the scope until a sync declares them. fields shows the list's tags changing, as the scope's tag moves with the list.
warnings and errors are included when there are any. A list can't be moved if it doesn't exist, if it can't be updated (e.g. it's readonly or locked), if it has no path name (it can only be released), or if adding the scope's tag would give it too many tags.
warningsstring[]Warnings about the move as a whole, e.g. that fromScope doesn't manage any lists.blockedByobject | nullWhy the move wasn't applied (or, in a dry run, wouldn't be): SCHEMA_SYNC_PLAN_HAS_ERRORS.A move is all or nothing: if any list can't be moved, nothing is changed. The response has the usual error name, code and message, as well as the whole plan described above. The JS SDK's moveLists returns the plan rather than throwing, so check applied.
No response headers
2026-09-15