Menu QaldyDocs

Versions and edits

An app’s version history, comparing two versions as permission facts, rolling back, and changing an app by a sentence. 6 routes, from the API’s own OpenAPI document.

6 routes. Every path starts at https://cloud-api.qaldy.com. Sign-in, tokens, errors and limits are on the overview.

Routes

MethodPathWhat it does
POST/​v1/​apps/​{id}/​changesPlan a change to an app from a sentence: the permission diff, nothing built yet
GET/​v1/​apps/​{id}/​versionsAn app’s versions, newest first, and its rollbacks
POST/​v1/​apps/​{id}/​versions/​{versionId}/​rollbackGo back to an older version: one pointer move, no rebuild
GET/​v1/​apps/​{id}/​versions/​compareWhat one version may do that another could not, in permission sentences
GET/​v1/​changes/​{changeId}Where a change is: planned, building, live or failed
POST/​v1/​changes/​{changeId}/​approveApprove a planned change: the new version is written and the app moves to it

Reference

POST /v1/apps/{id}/changes

Plan a change to an app from a sentence: the permission diff, nothing built yet.

  • Authentication: the console’s session cookie.
  • Token: a personal access token or an MCP sign-in with the write scope.
  • Who: can_edit
ParameterInTypeRequiredNotes
idpathstringyes1 to 128 characters

Request body (application/json)

FieldTypeRequiredNotes
instructionstringyes4 to 2000 characters

Response 200

FieldTypeRequiredNotes
changeIdstringyesat least 1 characters
appIdstringyesat least 1 characters
appNamestringyesat least 1 characters
baseVersionIdstringyesat least 1 characters
instructionstringyes
summarystringyes1 to 300 characters
manifestobjectyes
manifest.namestringyes2 to 60 characters
manifest.descriptionstringyes4 to 280 characters
manifest.archetype"kiosk" · "tower" · "warehouse" · "workshop" · "bank" · "townhall" · "clocktower" · "printhouse" · …yes
manifest.category"interface" · "data" · "messaging" · "money" · "ai" · "time" · "people" · "growth"yes
manifest.permissionsobjectyes
manifest.triggersobject[]yes
manifest.sharingobjectyes
manifest.roiobjectyes
diffobjectyes
diff.gainsobject[]yes
diff.lossesobject[]yes
diff.triggersAddedobject[]yes
diff.triggersRemovedobject[]yes
diff.detailsobject[]yes
stepsstring[]yes
rebuildsCodebooleanyes
builder"claude" · "offline"yes
modelstring or nullyes
templateIdstring or nullyes
notesstring[]yesup to 8 items
adminApprovalobjectyes
adminApproval.requiredbooleanyes
adminApproval.connectorsstring[]yes

…and 2 more fields. The full schema is in openapi.json.

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

GET /v1/apps/{id}/versions

An app’s versions, newest first, and its rollbacks.

  • Authentication: the console’s session cookie.
  • Token: a personal access token or an MCP sign-in with the read scope.
  • Who: can_view
ParameterInTypeRequiredNotes
idpathstringyes1 to 128 characters

Response 200

FieldTypeRequiredNotes
appIdstringyesat least 1 characters
currentVersionIdstring or nullyes
versionsobject[]yes
versions[].idstringyesat least 1 characters
versions[].appIdstringyesat least 1 characters
versions[].numberintegeryesat least 1
versions[].createdAtstring (date-time)yes
versions[].createdBystringyesat least 1 characters
versions[].createdByNamestring or nullyes
versions[].bundleHashstringyesat least 1 characters
versions[].trustScoreintegeryes0 to 100
versions[].trustBand"pass" · "review" · "fail"yes
versions[].kind"build" · "edit" · "seed"yes
versions[].summarystringyes1 to 300 characters
versions[].instructionstring or nullyes
versions[].baseVersionIdstring or nullyes
versions[].isCurrentbooleanyes
versions[].runnablebooleanyes
versions[].builder"claude" · "offline" · null or nullyes
rollbacksobject[]yes
rollbacks[].atstring (date-time)yes
rollbacks[].byNamestring or nullyes
rollbacks[].fromVersionIdstringyesat least 1 characters
rollbacks[].toVersionIdstringyesat least 1 characters
canEditbooleanyes

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

POST /v1/apps/{id}/versions/{versionId}/rollback

Go back to an older version: one pointer move, no rebuild.

  • Authentication: the console’s session cookie.
  • Token: a personal access token or an MCP sign-in with the write scope.
  • Who: can_edit
ParameterInTypeRequiredNotes
idpathstringyes1 to 128 characters
versionIdpathstringyes1 to 128 characters

Request body (application/json)

FieldTypeRequiredNotes
expectCurrentVersionIdstringyesat least 1 characters

Response 200

FieldTypeRequiredNotes
appIdstringyesat least 1 characters
fromVersionIdstringyesat least 1 characters
toVersionIdstringyesat least 1 characters
trustScoreintegeryes0 to 100
diffobjectyes
diff.gainsobject[]yes
diff.lossesobject[]yes
diff.triggersAddedobject[]yes
diff.triggersRemovedobject[]yes
diff.detailsobject[]yes

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

GET /v1/apps/{id}/versions/compare

What one version may do that another could not, in permission sentences.

  • Authentication: the console’s session cookie.
  • Token: a personal access token or an MCP sign-in with the read scope.
  • Who: can_view
ParameterInTypeRequiredNotes
idpathstringyes1 to 128 characters
toquerystringyes1 to 128 characters
fromquerystring1 to 128 characters

Response 200

FieldTypeRequiredNotes
fromobjectyes
from.idstringyesat least 1 characters
from.appIdstringyesat least 1 characters
from.numberintegeryesat least 1
from.createdAtstring (date-time)yes
from.createdBystringyesat least 1 characters
from.createdByNamestring or nullyes
from.bundleHashstringyesat least 1 characters
from.trustScoreintegeryes0 to 100
from.trustBand"pass" · "review" · "fail"yes
from.kind"build" · "edit" · "seed"yes
from.summarystringyes1 to 300 characters
from.instructionstring or nullyes
from.baseVersionIdstring or nullyes
from.isCurrentbooleanyes
from.runnablebooleanyes
from.builder"claude" · "offline" · null or nullyes
toobjectyes
to.idstringyesat least 1 characters
to.appIdstringyesat least 1 characters
to.numberintegeryesat least 1
to.createdAtstring (date-time)yes
to.createdBystringyesat least 1 characters
to.createdByNamestring or nullyes
to.bundleHashstringyesat least 1 characters
to.trustScoreintegeryes0 to 100
to.trustBand"pass" · "review" · "fail"yes
to.kind"build" · "edit" · "seed"yes
to.summarystringyes1 to 300 characters
to.instructionstring or nullyes

…and 8 more fields. The full schema is in openapi.json.

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

GET /v1/changes/{changeId}

Where a change is: planned, building, live or failed.

  • Authentication: the console’s session cookie.
  • Token: a personal access token or an MCP sign-in with the read scope.
  • Who: plan's owner
ParameterInTypeRequiredNotes
changeIdpathstringyes1 to 128 characters

Response 200

FieldTypeRequiredNotes
changeIdstringyesat least 1 characters
appIdstringyesat least 1 characters
state"planned" · "building" · "live" · "failed" · "expired"yes
messagestring or nullyes
versionIdstring or nullyes
trustScoreinteger or nullyes0 to 100
stagestring or nullyes
planobject or null
plan.changeIdstringyesat least 1 characters
plan.appIdstringyesat least 1 characters
plan.appNamestringyesat least 1 characters
plan.baseVersionIdstringyesat least 1 characters
plan.instructionstringyes
plan.summarystringyes1 to 300 characters
plan.manifestobjectyes
plan.diffobjectyes
plan.stepsstring[]yes
plan.rebuildsCodebooleanyes
plan.builder"claude" · "offline"yes
plan.modelstring or nullyes
plan.templateIdstring or nullyes
plan.notesstring[]yesup to 8 items
plan.adminApprovalobjectyes
plan.needsConsolestring[]yes
plan.expiresAtstring (date-time)yes

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

POST /v1/changes/{changeId}/approve

Approve a planned change: the new version is written and the app moves to it.

  • Authentication: the console’s session cookie.
  • Token: a personal access token or an MCP sign-in with the write scope.
  • Who: plan's owner with can_edit; over a token only inside the safe band
ParameterInTypeRequiredNotes
changeIdpathstringyes1 to 128 characters

Request body (application/json)

FieldTypeRequiredNotes
manifestobjectyes
manifest.namestringyes2 to 60 characters
manifest.descriptionstringyes4 to 280 characters
manifest.archetype"kiosk" · "tower" · "warehouse" · "workshop" · "bank" · "townhall" · "clocktower" · "printhouse" · …yes
manifest.category"interface" · "data" · "messaging" · "money" · "ai" · "time" · "people" · "growth"yes
manifest.permissionsobjectyes
manifest.permissions.dataobject[]yes
manifest.permissions.connectorsobject[]yes
manifest.permissions.egressobject[]yes
manifest.permissions.aiobject or nullyes
manifest.triggersobject[]yes
manifest.sharingobjectyes
manifest.sharing.default"private" · "team" · "workspace"yes
manifest.roiobjectyes
manifest.roi.manualMinutesPerRunnumberyes0 to 1440

Response 200

FieldTypeRequiredNotes
changeIdstringyesat least 1 characters
appIdstringyesat least 1 characters
state"planned" · "building" · "live" · "failed" · "expired"yes
messagestring or nullyes
versionIdstring or nullyes
trustScoreinteger or nullyes0 to 100
stagestring or nullyes
planobject or null
plan.changeIdstringyesat least 1 characters
plan.appIdstringyesat least 1 characters
plan.appNamestringyesat least 1 characters
plan.baseVersionIdstringyesat least 1 characters
plan.instructionstringyes
plan.summarystringyes1 to 300 characters
plan.manifestobjectyes
plan.diffobjectyes
plan.stepsstring[]yes
plan.rebuildsCodebooleanyes
plan.builder"claude" · "offline"yes
plan.modelstring or nullyes
plan.templateIdstring or nullyes
plan.notesstring[]yesup to 8 items
plan.adminApprovalobjectyes
plan.needsConsolestring[]yes
plan.expiresAtstring (date-time)yes

Errors: 400, 401, 403, 404, 409, 429 (the error format is on the overview).

Type to search. Up and down to choose, Enter to open, Esc to close.