Google Play Developer Mcp

io.github.devinwang由 GitHub 帳號 devinwang 發布v0.2.0更新於 Oct 29, 2026

MCP server for Google Play: full Android Publisher API v3 and Play Developer Reporting API.

概覽

AI 產生的概覽

本機 MCP 伺服器,透過 Android Publisher API v3 與 Play Developer Reporting API 連接 Google Play 管理中心,讓助理管理發布、商店資訊、付費商品與當機報告。

可以做什麼
  • 註冊、切換並驗證多個 Play 管理中心帳號,只記錄本機服務帳戶金鑰檔路徑
  • 列出可存取的應用程式,建立、驗證、提交或放棄編輯工作階段,讀取應用程式詳細資料與國家可用性
  • 管理商店呈現:各語言商店資訊、圖片、應用程式詳細資料、AAB、APK、擴充檔與混淆對照檔
  • 管理發布軌道、測試人員、訂閱、單次購買商品、優惠與區域定價
  • 查詢購買、訂單、退款、外部交易、評論與團隊授權
  • 查詢當機率、ANR、啟動、轉譯、耗電、記憶體與錯誤等報表指標
適用情境
適合用 AI 助理操作 Google Play 管理中心的場合:發布或推進版本、編輯商店資訊與截圖、維護訂閱與商品目錄、回覆評論,或排查當機與效能指標。
執行需求
以 npm 套件形式在本機透過 stdio 執行(需 Node.js)。需要已啟用 Play Android Developer 與 Play Developer Reporting API 的 Google Cloud 服務帳戶 JSON 金鑰,並在 Play 管理中心邀請該服務帳戶並授予適當權限;需向伺服器登記金鑰檔路徑。Play 管理中心權限生效最長可能需要 24 小時。
安裝前請注意
服務帳戶金鑰是高權限憑證:請放在任何 git 儲存庫之外,只授予所需的最小角色,並定期輪換。許多工具會寫入或發布:提交編輯會發布版本與商店資訊,delete_all 類工具會刪除商店資訊或圖片。購買、訂單與退款工具會影響真實使用者交易與金流。授予完整管理員權限後,助理可刪除應用程式中繼資料。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Google Play Developer Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

google-play-developer-mcp

The complete Model Context Protocol (MCP) server for Google Play. 157 tools. Full Android Publisher API v3 + Play Developer Reporting API v1beta1. No deprecated endpoints. Works with Claude, Cursor, VS Code Copilot, Gemini CLI, or any MCP client.

[npm version] [npm downloads] [CI] [License: MIT] [Node] [Tools: 157] [API: v3] [Reporting: v1beta1] [MCP] [TypeScript]

See also: app-store-connect-mcp — the same philosophy for Apple's App Store Connect.


Table of Contents


Why this exists

Google Play Console has an API, but its surface is wide and moves fast. Existing community MCPs each cover a slice — one does store listings, another does releases, a third does reviews — and all lag behind Google's deprecations.

google-play-developer-mcp is the one that covers everything.

PropertyThis serverTypical community MCP
Android Publisher API v3✅ FullPartial
Play Developer Reporting API✅ Full❌ Missing
monetization.onetimeproducts (post-2025 catalog)✅Uses deprecated inappproducts
purchases.subscriptionsv2 / productsv2✅Often still on v1
2026 features (OfferPhase, cancel/defer, priceStepUp)✅❌
Multi-account✅Usually one
Credential safetyNo keys in repo, strict .gitignoreVaries
Public release under semver✅ v1.0.0Mostly pre-1.0

If you drive Google Play Console with an AI assistant — release automation, review triage, subscription catalog management, crash triage — this gives the assistant a full toolbox in one install.


Feature matrix

157 tools across 33 groups. Every non-deprecated endpoint in both APIs.

Android Publisher API v3
GroupToolsCovers
accounts_*6Local registry — add / list / switch / remove / update multiple Play Console accounts
auth_*1Verify the service account can acquire a token
apps_*2List every app the service account can see, get app details
edits_*5Managed-publishing transactions: insert, get, validate, commit, delete
details_*3App-level contact email / phone / website, default language
country_availability_*1Per-country availability within an edit
listings_*6Per-locale title / short description / full description / video. Includes delete_all
images_*4Icon, feature graphic, promo graphic, phone/tablet/TV/wear screenshots. List, upload, delete, delete-all
bundles_*2Upload and list Android App Bundles (AAB)
apks_*3Upload / list APKs + register externally-hosted APK (enterprise)
deobfuscation_files_*1Upload ProGuard / native code mapping
expansion_files_*4OBB — get / upload / update / patch
tracks_*5internal, alpha, beta, production, plus custom closed-testing tracks. List, get, update, patch, create
testers_*3Google Groups allowlists for internal / closed tracks
onetime_products_*17✨ New monetization catalog for non-subscription products. Three-level hierarchy: product → purchase option → offer. Complete CRUD + batch on all three levels
subscriptions_*8Subscription catalog: list, create, update, delete, archive, batch-get, batch-update
subscription_base_plans_*7Monthly/annual plans. Activate, deactivate, migrate prices, batch migrate, batch update + states
subscription_offers_*10Free trials / introductory prices. Create, update, delete, activate, deactivate + batch flavours
monetization_convert_region_prices1Compute comparable region prices from one input price
purchases_products_v2_*1Verify one-time-product purchases (supports multiple purchase options + offers)
purchases_products_*2Acknowledge / consume one-time purchases (productsv2 only exposes get)
purchases_subscriptions_v2_*4Get, revoke, cancel, defer. Includes 2026 OfferPhase, outOfAppPurchaseContext, priceStepUp consent, item-based refund
purchases_subscriptions_acknowledge1v1 acknowledge (retained — still the right call for acknowledging initial purchase)
purchases_voided_list1Refund / chargeback feed
orders_*5List, get, batch-get, refund, review refund (get + batch-get added 2025-05, review_refund added 2026-07 for collaborative chargebacks)
external_transactions_*3Alternative Billing (Korea / EU) — get / create / refund
reviews_*3List, get, reply
users_* + grants_*7Team members & per-app grants
device_tier_configs_*3Device-tier targeting for AAB
app_recovery_*5Recovery actions: list, create, deploy, cancel, add targeting
generated_apks_*2List and download generated APKs from an AAB
system_apks_variants_*4System APK variants for preload scenarios
internal_app_sharing_*2Upload APK or AAB for internal link sharing
Play Developer Reporting API v1beta1
GroupToolsCovers
reports_apps_*2search, fetch_release_filter_options
reports_anomalies_list1Detected anomalies across all metric sets
reports_crash_rate_*2Crash rate — metadata + time-series query
reports_anr_rate_*2ANR rate
reports_slow_start_rate_*2Slow start (cold launch)
reports_slow_rendering_rate_*2Slow rendering (jank)
reports_excessive_wakeup_rate_*2Battery — excessive wake-ups
reports_stuck_background_wake_lock_rate_*2Battery — stuck wake locks
reports_lmk_rate_*2Low-memory killer rate
reports_anon_rss_swap_memory_*2Anonymous RSS + swap memory usage
reports_bitmap_memory_*2Bitmap memory usage
reports_errors_counts_*2Aggregate error counts
reports_errors_issues_search1Grouped ErrorIssue search
reports_errors_reports_search1Raw ErrorReport search

Quick start

bash
npm install -g google-play-developer-mcp

Then in your MCP client config (e.g. ~/.config/claude/config.json, Cursor MCP config, or VS Code mcp.json):

json
{  "mcpServers": {    "google-play-developer": {      "command": "google-play-developer-mcp"    }  }}

Next, tell the server which Play Console account to use — see the setup guide below.


Step-by-step setup

1. Create a Google Cloud service account

  1. Open the Google Cloud Console.
  2. Select or create a project (any project — this is just where the service account lives).
  3. APIs & Services → Library — enable both of these:
    • Google Play Android Developer API
    • Google Play Developer Reporting API
  4. IAM & Admin → Service Accounts → Create service account.
  5. Once created, open the account → Keys → Add key → JSON. Download the JSON file.
  6. Move the JSON file somewhere safe and outside any git repo. A good location: ~/.config/google-play-developer-mcp/service-account.json.

2. Authorize the service account in Play Console

  1. Open Play Console.
  2. Users and permissions → Invite new user. Paste the service account email (it looks like [email protected]).
  3. Assign permissions:
    • Admin (all permissions) for full access.
    • Or narrower combinations (View app information, Manage store presence, Manage orders and subscriptions, etc.) if you want to restrict what the MCP can do.
  4. Wait up to 24 hours. Play Console takes time to propagate the new authorization — this is a common gotcha. If early API calls return PERMISSION_DENIED, this is usually why.

3. Register the account with the MCP server

Launch any MCP client that has the server configured, then run:

accounts_add --name my-app \  --keyFile /Users/you/.config/google-play-developer-mcp/service-account.json \  --description "My company's Play Console"

(Or manually create ~/.google-play-developer-mcp/accounts.json — see the file format below.)

4. Verify

auth_status

Should return { ok: true, email: "..." }.

apps_list

Lists the apps the service account can see.


Register with your MCP client

Claude Desktop

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%/Claude/claude_desktop_config.json

json
{  "mcpServers": {    "google-play-developer": {      "command": "google-play-developer-mcp"    }  }}

Claude Code

bash
claude mcp add google-play-developer google-play-developer-mcp

Or edit ~/.claude.json:

json
{  "mcpServers": {    "google-play-developer": {      "command": "google-play-developer-mcp"    }  }}

Cursor

Settings → MCP → Add new MCP server:

json
{  "google-play-developer": {    "command": "google-play-developer-mcp"  }}

VS Code (GitHub Copilot agent mode)

.vscode/mcp.json:

json
{  "servers": {    "google-play-developer": {      "type": "stdio",      "command": "google-play-developer-mcp"    }  }}

Gemini CLI / Codex CLI / Windsurf / Continue

Any MCP-compliant client accepts the same command entry — point it at the globally installed google-play-developer-mcp binary (or at node /path/to/dist/index.js if running from source).

Running from source (no npm install -g)

bash
git clone https://github.com/devinwang/google-play-developer-mcp.gitcd google-play-developer-mcpnpm installnpm run build

Then in your MCP client config:

json
{  "mcpServers": {    "google-play-developer": {      "command": "node",      "args": ["/absolute/path/to/google-play-developer-mcp/dist/index.js"]    }  }}

Usage examples

Release a new build to internal testing

accounts_switch --name my-app
# Open an edit, upload bundle, route it to the internal track, commit.edits_insert --packageName com.example.app# → { id: "EDIT_ID", expiryTimeSeconds: "..." }
bundles_upload --packageName com.example.app --editId EDIT_ID \  --file /path/to/app-release.aab# → { versionCode: 47, sha256: "..." }
tracks_update --packageName com.example.app --editId EDIT_ID \  --track internal \  --releases '[{"versionCodes":["47"],"status":"completed","releaseNotes":[{"language":"en-US","text":"Fixes a crash on startup."}]}]'
edits_commit --packageName com.example.app --editId EDIT_ID

Promote a release from beta to production with staged rollout

edits_insert --packageName com.example.app# → EDIT_ID
# Promote the beta versionCodes to production with 10% staged rollout.tracks_update --packageName com.example.app --editId EDIT_ID \  --track production \  --releases '[{"versionCodes":["47"],"status":"inProgress","userFraction":0.1}]'
edits_commit --packageName com.example.app --editId EDIT_ID

Reply to reviews

reviews_list --packageName com.example.app --maxResults 50# → { reviews: [{ reviewId, authorName, comments, ... }] }
reviews_reply --packageName com.example.app --reviewId REVIEW_ID \  --replyText "Thanks for the feedback! The crash is fixed in v1.2 — please update."

Create a subscription with a free-trial offer

# 1. Create the subscription (product)subscriptions_create --packageName com.example.app --productId plus_monthly \  --subscription '{"listings":[{"languageCode":"en-US","title":"Plus","benefits":["All premium features"]}],"taxAndComplianceSettings":{"taxTier":"TAX_TIER_UNSPECIFIED"}}'
# 2. Create a base plansubscription_base_plans_batch_update --packageName com.example.app --productId plus_monthly \  --requests '[{"basePlan":{"basePlanId":"monthly","autoRenewingBasePlanType":{"billingPeriodDuration":"P1M","accountHoldDuration":"P30D"},"state":"DRAFT","regionalConfigs":[{"regionCode":"US","price":{"currencyCode":"USD","units":"9","nanos":990000000}}]},"updateMask":"autoRenewingBasePlanType,regionalConfigs"}]'
# 3. Activate the base plansubscription_base_plans_activate --packageName com.example.app \  --productId plus_monthly --basePlanId monthly
# 4. Create a 7-day free-trial offersubscription_offers_create --packageName com.example.app --productId plus_monthly \  --basePlanId monthly --offerId new-user-trial \  --offer '{"phases":[{"duration":"P7D","regionalConfigs":[{"regionCode":"US","free":true}]}],"state":"DRAFT"}'
subscription_offers_activate --packageName com.example.app \  --productId plus_monthly --basePlanId monthly --offerId new-user-trial

Verify a purchase token server-side (backend use case)

# For a one-time product (consumable or non-consumable)purchases_products_v2_get --packageName com.example.app --token PURCHASE_TOKEN
# For a subscription — includes 2026 OfferPhase, priceChangeState, etc.purchases_subscriptions_v2_get --packageName com.example.app --token PURCHASE_TOKEN

Triage crashes

reports_crash_rate_query \  --name "apps/com.example.app/crashRateMetricSet" \  --dimensions '["versionCode","countryCode"]' \  --metrics '["crashRate","distinctUsers"]' \  --timelineSpec '{"aggregationPeriod":"DAILY","startTime":{"year":2026,"month":4,"day":1},"endTime":{"year":2026,"month":4,"day":8}}'
reports_errors_issues_search --parent "apps/com.example.app" \  --filter "errorIssueType = \"CRASH\""

Tool reference

All tools use snake_case names following the resource_action convention, consistent with the Android Publisher URL structure. See the Feature matrix for the full group breakdown.

Each tool accepts a JSON object of arguments — inspect the schema from your MCP client (Claude Code: /mcp tools, Claude Desktop: show tool list in chat, Cursor: MCP panel) to see the exact shape.

Complex body arguments (e.g. subscription, offer, appRecoveryAction, subscription releases) accept the Google-documented JSON schema directly — see the official reference.


Security

This repo ships with zero credentials. You bring a service-account JSON key; the server records only the path.

What is and isn't on disk:

WhereWhat
~/.google-play-developer-mcp/accounts.jsonAccount name + key-file path + description. No secrets. Created with 0600 permissions.
~/.config/…/service-account.json (you place it)The actual Google Cloud service-account JSON. Never committed. Never emitted by any tool.
Repo contentsCode only.

.gitignore blocks

  • *.json.key, *service-account*.json, *service_account*.json, *-sa.json, *-sa-key.json
  • gcp-key*.json, google-credentials*.json, play-credentials*.json
  • .env, .env.* (but keeps .env.example)
  • accounts.json, credentials/, keys/, secrets/
  • *.pem, *.p12, *.pfx, *.key, id_rsa*

Recommended hygiene

  • Keep your service-account JSON outside any git repo on your machine.
  • Grant the service account the narrowest role that your workflow needs. Full admin grants the MCP permission to delete app metadata — give it only what you need.
  • Rotate the service-account key yearly: delete the old key in Google Cloud Console, create a new one, run accounts_update --keyFile <newPath>.
  • auth_status never returns the actual token; only a boolean and the service-account email.

Audit trail

Every write operation on the Android Publisher API is logged by Google Cloud IAM under the service account's identity. If you ever suspect misuse, IAM → Audit Logs in the Cloud Console will show which endpoints were called.


Design notes

  • Edit-session-aware. Every write on the Android Publisher API runs inside an edit. The server exposes edits_insert / edits_commit / edits_delete directly so you can hold an edit open across many tool calls — the most common multi-step flow. If you forget to commit, nothing ships. Safe by default.
  • Multi-account. One server process can manage many Play Console accounts. Switch with accounts_switch. State lives in ~/.google-play-developer-mcp/accounts.json.
  • No deprecated endpoints. Catalogue endpoints use monetization.onetimeproducts (not the deprecated inappproducts). Purchase verification uses purchasesV2 / subscriptionsV2.
  • Forward-compatible types. Where Google ships an API feature faster than the googleapis TypeScript typings, we cast through publisherAny() / reportingAny(). The HTTP calls are identical — only TypeScript's static check is skipped on the known-drifting surfaces.
  • Good error messages. Every Google API error is translated — 401 becomes "your token is wrong", 403 becomes "permission not propagated, wait 24h", 429 becomes "quota exhausted", etc.
  • Stateless transport. Server is stdio, no network listener, no persistent state beyond the accounts file.
  • Zero telemetry. The server never phones home.

Contributing

PRs welcome. Before you submit:

  • npm run typecheck passes (CI will also run this)
  • Never include a service-account key or token in an issue or PR. If you need to share a reproduction, redact the token (X-Goog-Api-Client: ...REDACTED...).
  • New tools follow the resource_action naming convention.
  • If you add a tool that hits a new API surface, add it to the Feature matrix so the doc stays in sync.

Version history

0.2.0 — 2026-10-21

  • 157 MCP tools (+7). New: orders_review_refund, purchases_products_acknowledge, purchases_products_consume, reports_anon_rss_swap_memory_{get,query}, reports_bitmap_memory_{get,query}.
  • Upgraded googleapis 171 → 187.

0.1.0 — 2026-04-20 (first public release)

  • 150 MCP tools covering the full Android Publisher API v3 and Play Developer Reporting API v1beta1.
  • Latest-generation endpoints only. Uses monetization.onetimeproducts (replaces deprecated inappproducts), purchases.productsv2 / subscriptionsv2 (replaces v1).
  • 2026 features. SubscriptionPurchaseV2.offerPhase, purchases.subscriptionsv2.cancel/defer, orders.batchGet, offerPhaseDetails, price step-up consent, outOfAppPurchaseContext.
  • Multi-account support with on-disk registry.
  • Zero credentials in the repository. Comprehensive .gitignore.
  • Error translation for all common Google API failure modes.

References


License

MIT — see LICENSE.

來源:README.md,提交 ffe25df

工具

157

accounts_list

List every Play Console account registered with the MCP server (names + key-file paths, no secrets).

無需輸入參數。

accounts_current

Show which account is currently active. All subsequent API calls target this account.

無需輸入參數。

accounts_add

Register a new Play Console account. Provide a local filesystem path to a Google Cloud service-account JSON key. The key stays on disk — the MCP only records its path.

輸入參數name必填keyFile必填description

accounts_remove

Remove an account from the local registry. Does NOT delete the key file.

輸入參數name必填

accounts_switch

Make an existing registered account the active one.

輸入參數name必填

accounts_update

Change the key-file path or description of an existing account.

輸入參數name必填keyFiledescription

auth_status

Verify that the active account can acquire a Google OAuth token. Returns the service-account email plus whether a token was obtained.

無需輸入參數。

apps_list

List every Android app the active service account can access. Uses the Play Developer Reporting API's apps.search.

輸入參數pageSizepageToken

apps_get

Open a fresh edit and return the details resource (contact email/phone/website + default language) for one app.

輸入參數packageName必填

edits_insert

Open a new edit session for an app. Returns the edit id plus its expiry. Subsequent edits.* tool calls must pass this id.

輸入參數packageName必填

edits_get

Fetch an existing edit — useful to check expiry before work.

輸入參數editId必填packageName必填

edits_validate

Validate an edit without committing. Catches schema/media errors before you publish.

輸入參數editId必填packageName必填

edits_commit

Commit and publish all changes in the edit. Pass changesNotSentForReview=true to skip automatic review submission.

輸入參數editId必填packageName必填changesNotSentForReview

edits_delete

Abandon an edit. All pending changes are discarded.

輸入參數editId必填packageName必填

details_get

Get app-level details (contact email/phone/website + default language).

輸入參數editId必填packageName必填

details_update

Overwrite app-level details. Full replacement — unspecified fields are cleared.

輸入參數editId必填packageName必填contactEmailcontactPhonecontactWebsitedefaultLanguage

details_patch

Partial update — only the provided fields change.

輸入參數editId必填packageName必填contactEmailcontactPhonecontactWebsitedefaultLanguage

country_availability_get

Fetch per-country availability for a given track within an edit.

輸入參數track必填editId必填packageName必填

listings_list

List every locale listing within an edit.

輸入參數editId必填packageName必填

listings_get

Get one locale's listing.

輸入參數editId必填language必填packageName必填

listings_update

Full replacement update of a locale listing. Fields: title (30), shortDescription (80), fullDescription (4000), video (YouTube URL).

輸入參數titlevideoeditId必填language必填packageName必填fullDescriptionshortDescription

listings_patch

Partial update — unspecified fields preserved.

輸入參數titlevideoeditId必填language必填packageName必填fullDescriptionshortDescription

listings_delete

Delete the listing for one locale.

輸入參數editId必填language必填packageName必填

listings_delete_all

Delete ALL locale listings in this edit. Irreversible within the edit.

輸入參數editId必填packageName必填

images_list

List uploaded images for a specific type and locale.

輸入參數editId必填language必填imageType必填packageName必填

images_upload

Upload a new image. `file` is a local filesystem path. MIME is auto-detected from extension (png/jpg).

輸入參數file必填editId必填language必填imageType必填packageName必填

images_delete

Delete a single image by id.

輸入參數editId必填imageId必填language必填imageType必填packageName必填

images_delete_all

Delete every image of a given type in one locale.

輸入參數editId必填language必填imageType必填packageName必填

bundles_list

List all AAB uploads in the current edit.

輸入參數editId必填packageName必填

bundles_upload

Upload a new App Bundle (.aab). Returns versionCode and sha256. Commit the edit separately to publish to a track.

輸入參數file必填editId必填packageName必填deviceTierConfigIdackBundleInstallationWarning

apks_list

List all APK uploads in the edit.

輸入參數editId必填packageName必填

apks_upload

Upload a new APK. Prefer AAB via `bundles_upload`.

輸入參數file必填editId必填packageName必填

apks_add_externally_hosted

Register an APK that is hosted outside Google Play (enterprise-only, requires allowlist).

輸入參數editId必填packageName必填externallyHostedApk必填

deobfuscation_files_upload

Upload a ProGuard mapping file for a specific version code. Use deobfuscationFileType='proguard' or 'nativeCode'.

輸入參數file必填editId必填packageName必填apkVersionCode必填deobfuscationFileType必填

expansion_files_get

Get expansion file metadata for a version code.

輸入參數editId必填packageName必填apkVersionCode必填expansionFileType必填

expansion_files_upload

Upload expansion file contents (OBB).

輸入參數file必填editId必填packageName必填apkVersionCode必填expansionFileType必填

expansion_files_update

Full update of expansion file metadata.

輸入參數editId必填fileSizepackageName必填apkVersionCode必填expansionFileType必填referencesVersion

expansion_files_patch

Partial update of expansion file metadata.

輸入參數editId必填fileSizepackageName必填apkVersionCode必填expansionFileType必填referencesVersion

tracks_list

List every track visible in this edit (includes default internal/alpha/beta/production + any custom closed-testing tracks).

輸入參數editId必填packageName必填

tracks_get

Get one track — includes all releases currently staged.

輸入參數track必填editId必填packageName必填

tracks_update

Full replacement of track state. `releases` is an array of release objects — versionCodes, status (draft|inProgress|halted|completed), userFraction (0-1 for staged rollout), inAppUpdatePriority (0-5), countryTargeting, and releaseNotes.

輸入參數track必填editId必填releases必填packageName必填

tracks_patch

Partial update of track state.

輸入參數track必填editId必填releases必填packageName必填

tracks_create

Create a brand-new custom closed-testing track. The new id is set on the server. Type can only be closedTesting.

輸入參數typetrack必填editId必填packageName必填trackConfigurations

testers_get

Get the current tester allowlist for a track.

輸入參數track必填editId必填packageName必填

testers_update

Full replacement of the tester allowlist.

輸入參數track必填editId必填packageName必填googleGroups

testers_patch

Partial update of the tester allowlist.

輸入參數track必填editId必填packageName必填googleGroups

onetime_products_list

List all one-time products.

輸入參數pageSizepageTokenpackageName必填

onetime_products_get

Get a single one-time product.

輸入參數productId必填packageName必填

onetime_products_create

Create a one-time product. Pass the full OneTimeProduct body.

輸入參數product必填productId必填packageName必填regionsVersion

onetime_products_update

Update a one-time product (patch semantics, with updateMask).

輸入參數product必填productId必填updateMaskpackageName必填regionsVersionlatencyTolerance

onetime_products_delete

Delete a one-time product.

輸入參數productId必填packageName必填latencyTolerance

onetime_products_batch_get

Fetch up to 100 one-time products in one call.

輸入參數productIds必填packageName必填

onetime_products_batch_update

Update up to 100 one-time products in one call.

輸入參數requests必填packageName必填

onetime_products_batch_delete

Delete up to 100 one-time products in one call.

輸入參數requests必填packageName必填

onetime_product_purchase_options_batch_update

Update or create up to 100 purchase options for a one-time product.

輸入參數requests必填productId必填packageName必填

onetime_product_purchase_options_batch_update_states

Activate or deactivate up to 100 purchase options in one call.

輸入參數requests必填productId必填packageName必填

onetime_product_purchase_options_batch_delete

Delete up to 100 purchase options.

輸入參數requests必填productId必填packageName必填

onetime_product_offers_list

List offers attached to a purchase option. `purchaseOptionId` is required — use '-' to list across all options.

輸入參數pageSizepageTokenproductId必填packageName必填purchaseOptionId必填

onetime_product_offers_get

Get one offer on a purchase option.

輸入參數offerId必填productId必填packageName必填purchaseOptionId必填

onetime_product_offers_batch_get

Batch-get up to 100 offers.

輸入參數requests必填productId必填packageName必填purchaseOptionId必填

onetime_product_offers_batch_update

Batch-update up to 100 offers (creates or updates).

輸入參數requests必填productId必填packageName必填purchaseOptionId必填

onetime_product_offers_batch_update_states

Activate/deactivate/cancel up to 100 offers.

輸入參數requests必填productId必填packageName必填purchaseOptionId必填

onetime_product_offers_batch_delete

Delete up to 100 offers.

輸入參數requests必填productId必填packageName必填purchaseOptionId必填

subscriptions_list

List all subscriptions.

輸入參數pageSizepageTokenpackageName必填showArchived

subscriptions_get

Get a single subscription.

輸入參數productId必填packageName必填

subscriptions_create

Create a subscription.

輸入參數productId必填packageName必填subscription必填regionsVersion

subscriptions_update

Patch-update a subscription. Pass `updateMask` to limit the fields updated.

輸入參數productId必填updateMaskpackageName必填allowMissingsubscription必填regionsVersionlatencyTolerance

subscriptions_delete

Delete a subscription. Only works on subscriptions with no active base plans/offers.

輸入參數productId必填packageName必填latencyTolerance

subscriptions_archive

Archive a subscription. Archived subscriptions are hidden from new purchases but existing subscribers keep access.

輸入參數productId必填packageName必填

subscriptions_batch_get

Get up to 100 subscriptions in one call.

輸入參數productIds必填packageName必填

subscriptions_batch_update

Update up to 100 subscriptions in one call.

輸入參數requests必填packageName必填

subscription_base_plans_activate

Activate a base plan — starts making it available for purchase.

輸入參數productId必填basePlanId必填packageName必填

subscription_base_plans_deactivate

Deactivate a base plan — no new purchases; existing subscribers unaffected.

輸入參數productId必填basePlanId必填packageName必填

subscription_base_plans_delete

Delete a base plan (must be inactive).

輸入參數productId必填basePlanId必填packageName必填

subscription_base_plans_migrate_prices

Apply a price change to existing subscribers of a base plan in specific regions.

輸入參數productId必填basePlanId必填packageName必填regionsVersionlatencyToleranceregionalPriceMigrations必填

subscription_base_plans_batch_migrate_prices

Migrate prices on up to 100 base plans in one call.

輸入參數requests必填productId必填packageName必填

subscription_base_plans_batch_update

Upsert up to 100 base plans.

輸入參數requests必填productId必填packageName必填

subscription_base_plans_batch_update_states

Activate/deactivate up to 100 base plans.

輸入參數requests必填productId必填packageName必填

subscription_offers_list

List offers for a base plan. `basePlanId` supports '-' wildcard to list across all.

輸入參數pageSizepageTokenproductId必填basePlanId必填packageName必填

subscription_offers_get

Get a single offer.

輸入參數offerId必填productId必填basePlanId必填packageName必填

subscription_offers_create

Create an offer on a base plan (free trial, intro pricing, etc.).

輸入參數offer必填offerId必填productId必填basePlanId必填packageName必填regionsVersion

subscription_offers_update

Patch-update an offer.

輸入參數offer必填offerId必填productId必填basePlanId必填updateMaskpackageName必填allowMissingregionsVersionlatencyTolerance

subscription_offers_delete

Delete an offer.

輸入參數offerId必填productId必填basePlanId必填packageName必填

subscription_offers_activate

Activate an offer — starts making it available for purchase.

輸入參數offerId必填productId必填basePlanId必填packageName必填

subscription_offers_deactivate

Deactivate an offer.

輸入參數offerId必填productId必填basePlanId必填packageName必填

subscription_offers_batch_get

Batch-get up to 100 offers.

輸入參數requests必填productId必填basePlanId必填packageName必填

subscription_offers_batch_update

Upsert up to 100 offers.

輸入參數requests必填productId必填basePlanId必填packageName必填

subscription_offers_batch_update_states

Activate/deactivate up to 100 offers.

輸入參數requests必填productId必填basePlanId必填packageName必填

monetization_convert_region_prices

Utility: convert a price in one region to comparable prices in every other region. Use before setting prices on a base plan.

輸入參數price必填packageName必填

purchases_products_v2_get

Get current state of a one-time product purchase. Supports multiple purchase options + offers (replaces legacy purchases.products).

輸入參數token必填packageName必填

purchases_products_acknowledge

Acknowledge a one-time product purchase. Unacknowledged purchases are refunded by Play after 3 days.

輸入參數token必填productId必填packageName必填developerPayload

purchases_products_consume

Consume a consumable one-time product so the user can buy it again. Consuming also acknowledges the purchase.

輸入參數token必填productId必填packageName必填

purchases_subscriptions_v2_get

Get full state of a subscription purchase (SubscriptionPurchaseV2). Includes OfferPhase (2026), outOfAppPurchaseContext, latestSuccessfulOrderId, priceChangeState, priceStepUpConsentDetails.

輸入參數token必填packageName必填

purchases_subscriptions_v2_revoke

Revoke a subscription (refund + terminate access). 2025-05 added `itemBasedRefund` option for per-item refunds.

輸入參數token必填packageName必填revocationContext

purchases_subscriptions_v2_cancel

Cancel a subscription (2025-09+). `cancellationType`: USER_REQUESTED, DEVELOPER_REQUESTED, or SYSTEM_INITIATED.

輸入參數token必填packageName必填cancellationTypecancelSurveyReason

purchases_subscriptions_v2_defer

Defer billing for a subscription (2026-01 supports subscriptions with add-ons too). Pass DeferralInfo with expectedExpiryTime + desiredExpiryTime.

輸入參數token必填packageName必填deferralInfo必填

purchases_subscriptions_acknowledge

Acknowledge a subscription purchase. 2025-11+ accepts optional `externalAccountId` for account-linking. (v1 endpoint retained for compatibility.)

輸入參數token必填packageName必填subscriptionIddeveloperPayloadexternalAccountId

purchases_voided_list

List voided purchases (refunded/charged-back). Supports filtering by time range + voided source.

輸入參數typetokenendTimestartTimemaxResultsstartIndexpackageName必填includeQuantityBasedPartialRefunds

orders_list

List orders within a time window. Returns OrderId, productId, purchase state, quantity, offerPhaseDetails.

輸入參數endTimeorderIdspageTokenstartTimemaxResultspackageName必填

orders_get

Get one order by order id.

輸入參數orderId必填packageName必填

orders_batch_get

Get up to 100 orders in one call.

輸入參數orderIds必填packageName必填

orders_refund

Refund an order. Pass `revoke=true` to also cancel the entitlement (subscription) or consumable.

輸入參數revokeorderId必填packageName必填

orders_review_refund

Respond to a pending refund review (collaborative chargeback, 2026-07). Call within 24 hours of a PendingRefundReviewNotification. Supply `refundPreference` and optional usage evidence so Play can dispute the chargeback.

輸入參數orderId必填packageName必填refundPreference必填pendingRefundToken必填sampleContentProvided必填consumptionUsageEventsconsumptionPercentageMilliunits

external_transactions_get

Get an external transaction (Alternative Billing).

輸入參數parent必填externalTransactionId必填

external_transactions_create

Register a new external transaction (Alternative Billing).

輸入參數parent必填transaction必填externalTransactionId必填

external_transactions_refund

Report a refund on an external transaction.

輸入參數parent必填refund必填externalTransactionId必填

reviews_list

List reviews from the last 7 days. Use token from the previous page for pagination. Optional filters: language, translationLanguage, device.

輸入參數tokenmaxResultsstartIndexpackageName必填translationLanguage

reviews_get

Get a single review by id.

輸入參數reviewId必填packageName必填translationLanguage

reviews_reply

Post a public reply to a review. Replies can be edited by calling this again.

輸入參數reviewId必填replyText必填packageName必填

users_list

List all users on a developer account. `parent` is the developer account id in the form `developers/{developerId}` (find it in the Play Console URL).

輸入參數parent必填pageSizepageToken

users_create

Add a new team member to the developer account. Pass the user resource with email + roles + optional expirationTime.

輸入參數user必填parent必填

users_update

Patch-update a team member (roles, access level).

輸入參數name必填user必填updateMask

users_delete

Remove a user from the developer account.

輸入參數name必填

grants_create

Grant a user access to one app. `parent` is developers/{dev}/users/{user}. Grant body contains packageName + appLevelPermissions.

輸入參數grant必填parent必填

grants_update

Patch a grant (change appLevelPermissions).

輸入參數name必填grant必填updateMask

grants_delete

Revoke a grant.

輸入參數name必填

device_tier_configs_list

List all device-tier configs for an app.

輸入參數pageSizepageTokenpackageName必填

device_tier_configs_create

Create a new device-tier config.

輸入參數packageName必填deviceTierConfig必填allowUnknownDevices

device_tier_configs_get

Get a device-tier config by id.

輸入參數packageName必填deviceTierConfigId必填

app_recovery_list

List app recovery actions for a versionCode.

輸入參數packageName必填versionCode必填

app_recovery_create

Create an app recovery action.

輸入參數packageName必填appRecoveryAction必填

app_recovery_deploy

Deploy an app recovery action to users.

輸入參數packageName必填appRecoveryId必填

app_recovery_cancel

Cancel an in-flight app recovery action.

輸入參數packageName必填appRecoveryId必填

app_recovery_add_targeting

Add targeting (country/locale/version) to an in-progress recovery action.

輸入參數packageName必填appRecoveryId必填targetingUpdate必填

generated_apks_list

List generated (split + standalone) APKs for a given bundle versionCode.

輸入參數packageName必填versionCode必填

generated_apks_download

Download a specific generated APK. `downloadId` is the id from `generated_apks_list`. Returns the binary as a base64 string.

輸入參數downloadId必填packageName必填versionCode必填

system_apks_variants_list

List system APK variants created for a given versionCode.

輸入參數packageName必填versionCode必填

system_apks_variants_create

Create a new system APK variant for a versionCode.

輸入參數variant必填packageName必填versionCode必填

system_apks_variants_get

Get a system APK variant.

輸入參數variantId必填packageName必填versionCode必填

system_apks_variants_download

Download a built system APK variant. Returns base64.

輸入參數variantId必填packageName必填versionCode必填

internal_app_sharing_upload_apk

Upload an APK for internal app sharing. Returns a link you can distribute internally.

輸入參數file必填packageName必填

internal_app_sharing_upload_bundle

Upload an AAB for internal app sharing.

輸入參數file必填packageName必填

reports_apps_fetch_release_filter_options

List the release-filter dimensions available for an app (version codes, track, staged rollout).

輸入參數name必填

reports_anomalies_list

List detected anomalies across metric sets for an app.

輸入參數filterparent必填pageSizepageToken

reports_crash_rate_get

Get crash-rate metric-set metadata (available dimensions, metrics, freshness).

輸入參數name必填

reports_crash_rate_query

Query crash-rate timeline with dimensions, metrics, filter.

輸入參數name必填filtermetricspageSizepageTokendimensionsuserCohorttimelineSpec

reports_anr_rate_get

Get ANR-rate metric-set metadata.

輸入參數name必填

reports_anr_rate_query

Query ANR-rate timeline.

輸入參數name必填filtermetricspageSizepageTokendimensionsuserCohorttimelineSpec

reports_anon_rss_swap_memory_get

Get anonymous RSS + swap memory usage metric-set metadata. Format: apps/{packageName}/anonRssAndSwapMemoryUsageMetricSet

輸入參數name必填

reports_anon_rss_swap_memory_query

Query anonymous RSS + swap memory usage timeline.

輸入參數name必填filtermetricspageSizepageTokendimensionsuserCohorttimelineSpec

reports_bitmap_memory_get

Get bitmap memory usage metric-set metadata. Format: apps/{packageName}/bitmapMemoryUsageMetricSet

輸入參數name必填

reports_bitmap_memory_query

Query bitmap memory usage timeline.

輸入參數name必填filtermetricspageSizepageTokendimensionsuserCohorttimelineSpec

reports_slow_start_rate_get

Get slow-start-rate metadata.

輸入參數name必填

reports_slow_start_rate_query

Query slow-start-rate timeline.

輸入參數name必填filtermetricspageSizepageTokendimensionsuserCohorttimelineSpec

reports_slow_rendering_rate_get

Get slow-rendering-rate metadata.

輸入參數name必填

reports_slow_rendering_rate_query

Query slow-rendering-rate timeline.

輸入參數name必填filtermetricspageSizepageTokendimensionsuserCohorttimelineSpec

reports_excessive_wakeup_rate_get

Get excessive-wake-up-rate metadata.

輸入參數name必填

reports_excessive_wakeup_rate_query

Query excessive-wake-up-rate timeline.

輸入參數name必填filtermetricspageSizepageTokendimensionsuserCohorttimelineSpec

reports_stuck_background_wake_lock_rate_get

Get stuck-background-wake-lock-rate metadata.

輸入參數name必填

reports_stuck_background_wake_lock_rate_query

Query stuck-background-wake-lock-rate timeline.

輸入參數name必填filtermetricspageSizepageTokendimensionsuserCohorttimelineSpec

reports_lmk_rate_get

Get Low-Memory-Killer (LMK) rate metadata.

輸入參數name必填

reports_lmk_rate_query

Query LMK-rate timeline.

輸入參數name必填filtermetricspageSizepageTokendimensionsuserCohorttimelineSpec

reports_errors_counts_get

Get error-counts metric-set metadata.

輸入參數name必填

reports_errors_counts_query

Query aggregated error-count timelines.

輸入參數name必填filtermetricspageSizepageTokendimensionsuserCohorttimelineSpec

版本歷史

1
  1. v0.2.0最新Oct 21, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分