API reference
Every Storevisor tool over REST: the same 35 tools, wording and rules as the MCP server. Connect your stores first (guides); a tool whose store is not connected says so and changes nothing.
Authentication
- Create a workspace key on the MCP & API page (read, or read and write; it is shown once) and send it as
Authorization: Bearer sws_…. - An OAuth access token this host issued for its MCP server works the same way.
- A key reaches one workspace. Revoking it on the MCP & API page stops it at once.
- A read key never reaches a write tool; a viewer's key, or any key in a workspace whose owner turned AI changes off, is read-only.
Request and response
POST https://storevisor.devino.ca/api/tools/<tool name> with the tool's arguments as one JSON object (an empty body or {} when it needs none).
curl -X POST https://storevisor.devino.ca/api/tools/release_status \
-H "Authorization: Bearer sws_…" \
-H "Content-Type: application/json" \
-d '{}'- 200: the tool's own JSON answer.
- 400: the tool refused (
{"code": …, "message": …}), the arguments did not match its schema, or the body was not JSON. - 401, 404, 413, 429, 502, 503: refused before the tool ran. Every code is on Error codes.
The machine-readable form of this page is https://storevisor.devino.ca/openapi.json (OpenAPI 3.1), generated from the same tool definitions the MCP server lists.
Writes: preview first, then confirm
- Call the write tool with its arguments. Nothing reaches the store: the answer is a preview (the diff or plan) with a
confirm_token(for exampleplay_rollout_update). - Repeat the same call with
"apply": trueand"confirmToken": "<the token>". When the preview returnedcommit_args, merge them into the arguments: they pin the store state the preview saw, and a store that changed since is refused. - The token is single use, valid 10 minutes, and bound to the key or connection, the tool and those exact arguments.
- A preview with
"status": "rejected"carries no token and cannot be committed.
Limits
- 60 calls a minute per key or AI connection, MCP and API together. Over it: 429
rate_limitedwith aRetry-Afterheader (seconds) andretry_after_sin the body. - Request bodies up to 256 KB (413 above).
- A call runs at most 15 minutes (502 after). When every worker is busy: 503 with
Retry-After: 5. - Answers are capped (at most 200 rows per read, 500 for
sql_querywhere offered).
Tools (35)
apple_listing_get · apple_listing_update · apple_cpp_list · apple_cpp_create · apple_screenshots_get · apple_screenshot_delete · apple_screenshots_copy · apple_release_status · apple_cloud_workflow_update · apple_cloud_build_create · apple_version_submit · apple_version_release · apple_submission_cancel · apple_builds_list · apple_testflight_overview · apple_version_create · apple_version_build_attach · apple_app_setup_update · play_listing_get · play_listing_locales · play_listing_update · play_app_details_get · play_app_details_update · play_data_safety_update · play_release_status · play_release_promote · play_rollout_update · ms_listing_get · ms_release_status · ms_listing_update · ms_submission_create · ms_submission_commit · ms_submission_delete · release_status · review_watch_status
apple_listing_get read
Apple: read the live App Store listing. Reads the CURRENT App Store listing for an app straight from App Store Connect (not the warehouse cache): name, subtitle, keywords, description, promotional text, what's new, URLs, and a screenshot-set summary per…
| Argument | Type | What it is |
|---|---|---|
app required | string | app slug, Apple app id, or app name |
locale | string | e.g. en-US, en-CA. Omit for all locales. |
platform | "IOS" | "MAC_OS" | "TV_OS" | "VISION_OS" | default: iOS preferred |
apple_listing_update write
Apple: update App Store listing metadata (gated). Proposes a listing metadata change. ALWAYS snapshots the current listing first and records the change in listing_changes.
| Argument | Type | What it is |
|---|---|---|
app required | string | |
locale required | string | exact ASC locale, e.g. en-US |
fields required | object | only the fields you want to change |
platform | "IOS" | "MAC_OS" | "TV_OS" | "VISION_OS" | whose version the version fields land on; default: iOS preferred |
rationale required | string | why this change — stored in the audit log |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
apple_cpp_list read
Apple: list custom product pages. Lists App Store custom product pages (CPPs) for an app, with their versions and states.
| Argument | Type | What it is |
|---|---|---|
app required | string |
apple_cpp_create write
Apple: create a custom product page (gated). Creates a custom product page with one localization (promotional text only — screenshots are out of scope in this version).
| Argument | Type | What it is |
|---|---|---|
app required | string | |
name required | string | internal CPP name (not customer visible) |
locale required | string | |
promotionalText required | string | max 170 chars |
rationale required | string | |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
apple_screenshots_get read
Apple: read App Store screenshot sets. Reads the screenshot sets live from App Store Connect for the EDITABLE App Store version when one exists (that is the only surface a write can touch), otherwise the live version.
| Argument | Type | What it is |
|---|---|---|
app required | string | app slug, Apple app id, or app name |
locale | string | e.g. en-US. Omit for all locales on the version. |
platform | "IOS" | "MAC_OS" | "TV_OS" | "VISION_OS" | whose version to read (each platform has its own). Omit = every platform, iOS preferred |
apple_screenshot_delete write
Apple: delete an App Store screenshot (gated). Deletes one screenshot from a display-type set on the EDITABLE App Store version's localization.
| Argument | Type | What it is |
|---|---|---|
app required | string | |
locale required | string | |
displayType required | "APP_IPHONE_67" | "APP_IPHONE_65" | "APP_IPHONE_61" | "APP_IPHONE_58" | "APP_IPHONE_55" | "APP_IPHONE_47" | "APP_IPHONE_40" | "APP_IPHONE_35" | … | |
screenshotId required | string | appScreenshots resource id from apple_screenshots_get |
platform | "IOS" | "MAC_OS" | "TV_OS" | "VISION_OS" | default = the display type's own; a mismatch is refused |
rationale required | string | |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
apple_screenshots_copy write
Apple: copy one localization's screenshots to another (gated). Copies the screenshot sets of `from_locale` onto `to_locale` of the SAME platform's EDITABLE App Store version (every display type, or only `display_types`).
| Argument | Type | What it is |
|---|---|---|
app required | string | |
from_locale required | string | the localization to copy FROM, e.g. en-US |
to_locale required | string | the localization to copy TO, e.g. en-CA (must already exist on the editable version) |
display_types | array of "APP_IPHONE_67" | "APP_IPHONE_65" | "APP_IPHONE_61" | "APP_IPHONE_58" | "APP_IPHONE_55" | "APP_IPHONE_47" | "APP_IPHONE_40" | "APP_IPHONE_35" | … | only these sets; default every set of from_locale on the platform |
platform | "IOS" | "MAC_OS" | "TV_OS" | "VISION_OS" | default = the display types' own platform, else IOS |
replace_existing | boolean | delete the target's screenshots of each copied display type first (default: refuse when it has any) |
expect_editable_version_id | string | from commit_args; required on the commit, refused on mismatch |
expect_source_ids | array of string | from commit_args: <displayType>:<id> of every source shot; required on the commit, refused on mismatch |
expect_target_ids | array of string | from commit_args: <displayType>:<id> of every target shot replaced ([] = none); required on the commit, refused on mismatch |
rationale required | string | why — stored in the audit log |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
apple_release_status read
Apple: release state (live / in review / waiting build). Reads the app's release pipeline live from App Store Connect: every App Store version (versionString, appVersionState, platform, createdDate, releaseType) with its attached build (version, processingState,…
| Argument | Type | What it is |
|---|---|---|
app required | string | app slug, Apple app id, or app name |
apple_cloud_workflow_update write
Apple: make an Xcode Cloud workflow archive a platform for the App Store (gated). Adds an APP_STORE_ELIGIBLE ARCHIVE action for a platform to an Xcode Cloud workflow (default "Release (tag)"), or lifts an existing archive of that platform to APP_STORE_ELIGIBLE — the way to get macOS builds of a Mac…
| Argument | Type | What it is |
|---|---|---|
app required | string | |
platform required | "MACOS" | "IOS" | "VISIONOS" | the platform to archive for the App Store |
workflow | string | workflow id or exact name; default "Release (tag)" |
expect_workflow_id | string | from commit_args; required on the commit |
expect_actions | string | from commit_args: the action list the preview saw; required on the commit |
rationale required | string | why — stored in the audit log |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
apple_cloud_build_create write
Apple: start an Xcode Cloud release build (gated). Starts ONE Xcode Cloud build of the app's store-eligible workflow on a branch or tag — the way to get a build App Review accepts without a Mac.
| Argument | Type | What it is |
|---|---|---|
app required | string | |
git_reference required | string | branch or tag name to build, e.g. main or v1.2.0 |
workflow | string | workflow id or exact name; default = the one store-eligible workflow, preferring "Release (tag)" |
expect_workflow_id | string | from commit_args: the workflow the preview resolved; required on the commit |
expect_git_reference_id | string | from commit_args: the git reference the preview resolved; required on the commit |
rationale required | string | why — stored in the audit log |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
apple_version_submit write
Apple: submit a prepared version for review (gated). Submits an EXISTING App Store version for App Review — attaches nothing new.
| Argument | Type | What it is |
|---|---|---|
app required | string | |
version_string required | string | exact versionString of the prepared App Store version, e.g. 3.2.0 |
expect_build_id | string | the build id the preview showed (from commit_args); required on the commit, refused on mismatch |
with_products | boolean | also submit every READY_TO_SUBMIT subscription / in-app purchase with this version (first products must ride with a version) |
expect_products | array of string | from commit_args (with_products only): the kind:id list of products the preview saw; required on the commit, refused on mismatch |
expect_submission_id | string | from commit_args (resubmission only): the UNRESOLVED_ISSUES submission id the preview saw; required on the commit, refused on mismatch |
platform | "IOS" | "MAC_OS" | "TV_OS" | "VISION_OS" | which platform's version to submit when the same versionString exists on several (default IOS) |
expect_draft_submission_id | string | from commit_args: the empty never-submitted draft submission the preview chose to reuse (Apple will not cancel one); refused on mismatch |
rationale required | string | why — stored in the audit log |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
apple_version_release write
Apple: release an approved version that waits on a manual release (gated). Releases an App Store version that App Review has ALREADY approved and that waits on the developer (appVersionState PENDING_DEVELOPER_RELEASE — a version created with release_type MANUAL).
| Argument | Type | What it is |
|---|---|---|
app required | string | app slug, Apple app id, or app name |
platform | "IOS" | "MAC_OS" | "TV_OS" | "VISION_OS" | default IOS — each platform's version is released separately |
expect_version_id | string | from commit_args: the pending version id the preview showed; required on the commit, refused on mismatch |
rationale required | string | why — stored in the audit log |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
apple_submission_cancel write
Apple: withdraw a version from App Review / cancel a review submission (gated). Cancels ONE open review submission of a platform — App Store Connect's "Remove from Review" / "Cancel Submission" — with PATCH /v1/reviewSubmissions/{id} {canceled:true}.
| Argument | Type | What it is |
|---|---|---|
app required | string | app slug, Apple app id, or app name |
platform | "IOS" | "MAC_OS" | "TV_OS" | "VISION_OS" | default IOS — review submissions are per platform |
submission_id | string | the review submission to cancel (apple_release_status review_submissions); default = the one open on the platform |
expect_submission_id | string | from commit_args: the submission the preview chose; required on the commit, refused on mismatch |
expect_state | string | from commit_args: its state when the preview ran; required on the commit, refused on mismatch |
rationale required | string | why — stored in the audit log |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
apple_builds_list read
Apple: list TestFlight builds (newest first). Lists the newest TestFlight builds for an app live from App Store Connect: id, build_number (CFBundleVersion), pre_release_version (the marketing version), platform, processing_state, uploaded_at, expired,…
| Argument | Type | What it is |
|---|---|---|
app required | string | app slug, Apple app id, or app name |
limit | integer 1-25 | newest N builds, default 10 |
platform | "IOS" | "MAC_OS" | "TV_OS" | "VISION_OS" | default IOS |
apple_testflight_overview read
Apple: TestFlight overview — beta groups, testers, builds in testing, tester feedback. Reads an app's TestFlight state live from App Store Connect — the truthful, citable answer to App Review's "what beta testing did you do?": every beta group (name, internal / external, public link enabled + URL + limit,…
| Argument | Type | What it is |
|---|---|---|
app required | string | app slug, Apple app id, or app name |
platform | "IOS" | "MAC_OS" | "TV_OS" | "VISION_OS" | only this platform's builds; default = every platform the app has builds for |
builds_per_platform | integer 1-25 | newest N builds per platform, default 5 |
feedback_limit | integer 1-50 | newest N feedback items of each kind, default 20 |
apple_version_create write
Apple: create the next App Store version (gated). Creates the NEXT App Store version (PREPARE_FOR_SUBMISSION) for a platform and optionally attaches a TestFlight build to it (ids from apple_builds_list).
| Argument | Type | What it is |
|---|---|---|
app required | string | |
version_string required | string | the marketing version to create, e.g. 1.4.0 |
platform | "IOS" | "MAC_OS" | "TV_OS" | "VISION_OS" | default IOS |
build_id | string | TestFlight build id to attach right after creating (from apple_builds_list) |
copyright | string | e.g. 2026 Example Inc. |
release_type | "MANUAL" | "AFTER_APPROVAL" | "SCHEDULED" | MANUAL | AFTER_APPROVAL | SCHEDULED |
earliest_release_date | string | ISO 8601; required with (and only with) release_type SCHEDULED |
expect_editable_version_id | string | null | from commit_args: null = the preview saw no editable version for the platform; required on the commit, refused on mismatch |
rationale required | string | why — stored in the audit log |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
apple_version_build_attach write
Apple: attach a TestFlight build to the editable version (gated). Attaches (or replaces) the TestFlight build on the EDITABLE App Store version of a platform (PREPARE_FOR_SUBMISSION / *_REJECTED) — the step between apple_version_create and apple_version_submit.
| Argument | Type | What it is |
|---|---|---|
app required | string | |
build_id required | string | TestFlight build id to attach (from apple_builds_list) |
platform | "IOS" | "MAC_OS" | "TV_OS" | "VISION_OS" | default IOS |
expect_build_id | string | null | from commit_args: the build id attached when the preview ran (null = none); required on the commit when a build is attached, refused on mismatch |
rationale required | string | why — stored in the audit log |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
apple_app_setup_update write
Apple: first-release App Store setup — content rights, free price, privacy URL, copyright, App Review details (gated). Sets the first-release fields App Review refuses a submission without, through App Store Connect's public API: content_rights_declaration (PATCH /v1/apps), price: "free" (POST /v1/appPriceSchedules, base territory USA,…
| Argument | Type | What it is |
|---|---|---|
app required | string | app slug, Apple app id, or app name |
platform | "IOS" | "MAC_OS" | "TV_OS" | "VISION_OS" | default IOS — the platform whose editable version copyright / review_detail land on |
version_string | string | the editable version to target; default the platform's editable version |
content_rights_declaration | "DOES_NOT_USE_THIRD_PARTY_CONTENT" | "USES_THIRD_PARTY_CONTENT" | does the app show, include or access third-party content? |
price | string | "free" only — anything else is refused (paid pricing is an owner decision) |
privacy_policy_url | string (uri) | https URL of the privacy policy |
privacy_policy_locales | array of string | only these appInfo locales; default every locale of the editable appInfo |
copyright | string, ≤ 200 chars | e.g. "© 2026 14930398 Canada Inc." |
review_detail | object | App Review contact + sign-in details for the version |
review_detail_from_platform | "IOS" | "MAC_OS" | "TV_OS" | "VISION_OS" | instead of review_detail: copy the App Review details (demo password included, never shown) from this other platform's newest version |
review_detail_from_app | string | instead of review_detail: copy ONLY the App Review contact (first/last name, phone, e-mail) from this other app's newest version — never its demo account or notes |
expect_editable_version_id | string | null | from commit_args: the editable version id the preview saw (null = none); required on the commit, refused on mismatch |
rationale required | string | why — stored in the audit log |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
play_listing_get read
Play: get store listing. Read a Google Play store listing live from androidpublisher (title, short/full description, video, image counts per type).
| Argument | Type | What it is |
|---|---|---|
app required | string | app slug or Play package name |
locale | string | BCP-47 Play language, e.g. en-US. Omit for all locales. |
play_listing_locales read
Play: list every localized store listing. Every localization of a Google Play store listing, live from androidpublisher edits.listings.list (language, title, shortDescription, fullDescription, video + character counts against Play's limits).
| Argument | Type | What it is |
|---|---|---|
app required | string | app slug or Play package name |
play_listing_update write
Play: update store listing, or add a new language (gated). Change Play listing text, or CREATE a localization by passing a `locale` the listing does not have yet together with `create_locale: true` (then title, shortDescription and fullDescription are all required — Play…
| Argument | Type | What it is |
|---|---|---|
app required | string | |
locale required | string | Play language, e.g. en-US (case-sensitive). A language the listing does not have yet is CREATED only with create_locale: true. |
fields required | object | only the fields you want to change (all three text fields when creating a new locale) |
keep_existing_fields | boolean | default true: fields you do not pass keep their live value. false: the localization becomes exactly the fields you pass. |
create_locale | boolean | default false: a locale the listing does not have is REFUSED. true: create it (all three text fields required). |
rationale required | string | why this change is being made — stored in the audit log |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
play_app_details_get read
Play: contact details + default language. The app's store contact details (contactEmail, contactPhone, contactWebsite) and default language, live from androidpublisher edits.details through a throwaway edit that is always deleted.
| Argument | Type | What it is |
|---|---|---|
app required | string | app slug or Play package name |
play_app_details_update write
Play: set contact details / default language (gated). Sets the store contact e-mail, phone, website and/or default language (a Play dashboard setup task) through edits.details.
| Argument | Type | What it is |
|---|---|---|
app required | string | |
fields required | object | |
rationale required | string | why — stored in the audit log |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
play_data_safety_update write
Play: replace the Data safety declaration (gated). Replaces the app's whole Data safety declaration through applications.dataSafety, using the CSV format Play Console exports (App content → Data safety → Export to CSV; columns Question ID / Response ID / Response value…
| Argument | Type | What it is |
|---|---|---|
app required | string | |
file_path | string | not usable in the cloud (a server directory); pass csv instead |
csv | string, ≤ 200000 chars | the CSV text itself |
rationale required | string | why — stored in the audit log |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
play_release_status read
Play: release state per track. Reads every Play track (internal, alpha, beta, production, custom) live from androidpublisher with its releases: status (draft | inProgress | halted | completed), name, versionCodes, userFraction for staged rollouts,…
| Argument | Type | What it is |
|---|---|---|
app required | string | app slug or Play package name |
play_release_promote write
Play: promote a release to another track (gated). Promotes the latest completed (else in-progress) release of `from_track` onto `to_track` via edits.tracks.update + edits.commit.
| Argument | Type | What it is |
|---|---|---|
app required | string | |
from_track required | string | internal | alpha | beta | production | a custom track name |
to_track required | string | |
user_fraction | number 0-1 | staged rollout fraction, e.g. 0.1 for 10%; omit or 1 = full release |
release_notes | object | { 'en-US': 'What changed' } — replaces the source release's notes |
replace_draft | boolean | true = discard a never-rolled DRAFT on to_track that carries the same version codes and put the promoted release there instead (that draft's notes are lost); without it such a draft is a refusal, and the flag with no such draft is refused too |
expect_version_codes | array of integer -9007199254740991-9007199254740991 | the version codes the preview showed (from commit_args); required on the commit, refused on mismatch |
rationale required | string | why — stored in the audit log |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
play_rollout_update write
Play: change or halt a staged rollout (gated). Moves a track's staged rollout: `user_fraction` raises it (Play never lets a fraction go down; 1 completes the rollout), `halt: true` halts it.
| Argument | Type | What it is |
|---|---|---|
app required | string | |
track required | string | the track carrying the staged rollout, usually production |
user_fraction | number 0-1 | new fraction, must be above the current one; 1 = complete the rollout |
halt | boolean | true = halt the rollout (mutually exclusive with user_fraction) |
expect_version_codes | array of integer -9007199254740991-9007199254740991 | the version codes the preview showed (from commit_args); required on the commit, refused on mismatch |
rationale required | string | why — stored in the audit log |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
ms_listing_get read
Microsoft Store listing (live). Live Partner Center listing for an app: description, short description, features, search terms, image slots.
| Argument | Type | What it is |
|---|---|---|
app required | string | app slug, app name, or Microsoft product id |
lang | string | listing locale, default en-us |
ms_release_status read
Microsoft Store release state (live). Live Partner Center release state for an app: the last published submission and the pending one — status, statusDetails (errors, warnings, certification reports), targetPublishMode, and every package with its version,…
| Argument | Type | What it is |
|---|---|---|
app required | string | app slug, app name, or Microsoft product id |
ms_listing_update write
Microsoft Store listing update (gated write). Propose a Microsoft Store listing change.
| Argument | Type | What it is |
|---|---|---|
app required | string | app slug, app name, or Microsoft product id |
lang required | string | listing locale, e.g. en-us |
fields required | object | only the listing fields you want changed |
rationale required | string | why this change — stored in the listing_changes audit log |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
ms_submission_create write
Microsoft Store: create a pending submission (gated). Creates a new pending submission on an app, cloned from the last published one (POST /submissions) — the first step of a release: create, upload the package (package upload is not in the cloud yet), then…
| Argument | Type | What it is |
|---|---|---|
app required | string | app slug, app name, or Microsoft product id |
rationale | string | why — stored in the audit log; defaults to a per-tool line naming the app + submission so commit_args always re-validates |
expect_pending_submission_id | string | null | from the preview's commit_args: null = no pending submission existed; required on the commit |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
ms_submission_commit write
Microsoft Store: commit the pending submission (gated). Commits the app's pending submission (POST /submissions/{id}/commit): Partner Center then runs pre-processing and certification, and publishes per the submission's targetPublishMode (a Manual mode still needs a human…
| Argument | Type | What it is |
|---|---|---|
app required | string | app slug, app name, or Microsoft product id |
rationale | string | why — stored in the audit log; defaults to a per-tool line naming the app + submission so commit_args always re-validates |
expect_submission_id | string | the pending submission id the preview showed (from commit_args); required on the commit, refused on mismatch |
expect_status | string | the submission status the preview showed (PendingCommit); required on the commit, refused on mismatch |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
ms_submission_delete write
Microsoft Store: delete the pending submission (gated). Deletes the app's pending submission (DELETE /submissions/{id}) — the last published submission is untouched.
| Argument | Type | What it is |
|---|---|---|
app required | string | app slug, app name, or Microsoft product id |
rationale | string | why — stored in the audit log; defaults to a per-tool line naming the app + submission so commit_args always re-validates |
expect_submission_id | string | the pending submission id the preview showed (from commit_args); required on the commit, refused on mismatch |
apply | boolean | true = commit for real. Requires the confirmToken returned by the preceding dry-run of this exact call. |
confirmToken | string | The confirm_token from the dry-run preview (single use, 10-minute TTL). |
release_status read
Release state across stores (live). One compact row per app x store, read live: live_version, pending_version, pending_state, latest_build, blocked_reason (null when nothing waits on you).
| Argument | Type | What it is |
|---|---|---|
app | string | app slug, app name, or a store id; omit for every app |
stores | array of "apple" | "play" | "microsoft" | restrict to these stores (default: every configured store) |
review_watch_status read
App Review check state (no store call). What this workspace's App Review check saw on its last run, read from its saved state: NO store call.
| Argument | Type | What it is |
|---|---|---|
app | string | app slug to narrow to; omit for every app |