API Coverage Map
Maps every Google Play Developer API endpoint that GPC implements to a CLI command.
Last audited against Google's live discovery documents on 2026-09-08.
GPC interacts with four separate Google APIs:
| API | Base URL | Purpose |
|---|---|---|
| Android Publisher API v3 | androidpublisher.googleapis.com | Publishing, monetization, reviews, purchases, users |
| Play Developer Reporting API v1beta1 | playdeveloperreporting.googleapis.com | Vitals, crash rates, ANR, performance metrics |
| Play Custom App Publishing API v1 | playcustomapp.googleapis.com | Managed Google Play private app publishing |
| Games Configuration API v1configuration | gamesconfiguration.googleapis.com | Play Games achievement and leaderboard configuration |
Edits
The Edits resource is the transactional wrapper for most write operations. Edits are managed internally; users never interact with them directly.
| API Endpoint | Method | GPC Command |
|---|---|---|
edits.insert | POST | (internal, auto-managed) |
edits.get | GET | (internal) |
edits.commit | POST | (internal, auto on success) |
edits.validate | POST | (internal, pre-commit check) |
edits.delete | DELETE | (internal, auto on failure) |
Edits: Bundles
| API Endpoint | Method | GPC Command |
|---|---|---|
edits.bundles.list | GET | gpc bundles list |
edits.bundles.upload | POST | gpc releases upload <file.aab> |
Edits: APKs
| API Endpoint | Method | GPC Command |
|---|---|---|
edits.apks.list | GET | (via SDK) |
edits.apks.upload | POST | gpc releases upload <file.apk> |
edits.apks.addExternallyHosted | POST | (via SDK) |
Edits: Tracks
| API Endpoint | Method | GPC Command |
|---|---|---|
edits.tracks.list | GET | gpc tracks list |
edits.tracks.get | GET | gpc releases status --track <track> |
edits.tracks.update | PUT | gpc tracks update <track> |
edits.tracks.patch | PATCH | gpc tracks update <track> |
edits.tracks.create | POST | gpc tracks create <name> |
Release Lifecycle
| API Endpoint | Method | GPC Command |
|---|---|---|
applications.tracks.releases.list | GET | gpc releases status |
Edits: Deobfuscation Files
| API Endpoint | Method | GPC Command |
|---|---|---|
edits.deobfuscationfiles.upload | POST | gpc releases upload --mapping <file> |
Edits: Expansion Files
| API Endpoint | Method | GPC Command |
|---|---|---|
edits.expansionfiles.get | GET | (via SDK) |
edits.expansionfiles.update | PUT | (via SDK) |
edits.expansionfiles.patch | PATCH | (via SDK) |
edits.expansionfiles.upload | POST | (via SDK) |
Edits: Listings
| API Endpoint | Method | GPC Command |
|---|---|---|
edits.listings.list | GET | gpc listings get (all languages) |
edits.listings.get | GET | gpc listings get --lang <lang> |
edits.listings.update | PUT | gpc listings update --lang <lang> |
edits.listings.delete | DELETE | gpc listings delete --lang <lang> |
edits.listings.deleteall | DELETE | (via SDK) |
edits.listings.patch | PATCH | gpc listings update --lang <lang> |
Edits: Images
| API Endpoint | Method | GPC Command |
|---|---|---|
edits.images.list | GET | gpc listings images list |
edits.images.upload | POST | gpc listings images upload |
edits.images.delete | DELETE | gpc listings images delete |
edits.images.deleteall | DELETE | gpc listings images sync --delete |
Edits: Details
| API Endpoint | Method | GPC Command |
|---|---|---|
edits.details.get | GET | gpc apps info <package> |
edits.details.update | PUT | gpc apps update |
edits.details.patch | PATCH | gpc apps update |
Edits: Country Availability
| API Endpoint | Method | GPC Command |
|---|---|---|
edits.countryavailability.get | GET | gpc listings availability |
Edits: Testers
| API Endpoint | Method | GPC Command |
|---|---|---|
edits.testers.get | GET | gpc testers list --track <track> |
edits.testers.update | PUT | gpc testers add / remove |
edits.testers.patch | PATCH | gpc testers import |
Reviews
| API Endpoint | Method | GPC Command |
|---|---|---|
reviews.list | GET | gpc reviews list |
reviews.get | GET | gpc reviews get <id> |
reviews.reply | POST | gpc reviews reply <id> |
In-App Products
| API Endpoint | Method | GPC Command |
|---|---|---|
inappproducts.list | GET | gpc iap list |
inappproducts.get | GET | gpc iap get <sku> |
inappproducts.insert | POST | gpc iap create |
inappproducts.update | PUT | gpc iap update <sku> |
inappproducts.delete | DELETE | gpc iap delete <sku> |
inappproducts.patch | PATCH | gpc iap update <sku> |
inappproducts.batchGet | POST | gpc iap batch-get |
inappproducts.batchUpdate | POST | gpc iap sync |
inappproducts.batchDelete | POST | (via SDK) |
Monetization: Subscriptions
| API Endpoint | Method | GPC Command |
|---|---|---|
monetization.subscriptions.list | GET | gpc subscriptions list |
monetization.subscriptions.get | GET | gpc subscriptions get <id> |
monetization.subscriptions.create | POST | gpc subscriptions create |
monetization.subscriptions.patch | PATCH | gpc subscriptions update <id> |
monetization.subscriptions.delete | DELETE | gpc subscriptions delete <id> |
monetization.subscriptions.batchGet | GET | (via SDK) |
monetization.subscriptions.batchUpdate | POST | (via SDK) |
Monetization: Base Plans
| API Endpoint | Method | GPC Command |
|---|---|---|
basePlans.activate | POST | gpc subscriptions base-plans activate |
basePlans.deactivate | POST | gpc subscriptions base-plans deactivate |
basePlans.delete | DELETE | gpc subscriptions base-plans delete |
basePlans.migratePrices | POST | gpc subscriptions base-plans migrate-prices |
basePlans.batchMigratePrices | POST | (via SDK) |
Monetization: Subscription Offers
| API Endpoint | Method | GPC Command |
|---|---|---|
offers.list | GET | gpc subscriptions offers list |
offers.get | GET | gpc subscriptions offers get |
offers.create | POST | gpc subscriptions offers create |
offers.patch | PATCH | gpc subscriptions offers update |
offers.delete | DELETE | gpc subscriptions offers delete |
offers.activate | POST | gpc subscriptions offers activate |
offers.deactivate | POST | gpc subscriptions offers deactivate |
Purchases
| API Endpoint | Method | GPC Command |
|---|---|---|
purchases.products.get | GET | gpc purchases get <product-id> <token> |
purchases.products.acknowledge | POST | gpc purchases acknowledge <token> |
purchases.products.consume | POST | gpc purchases consume <token> |
purchases.subscriptions.get | GET | gpc purchases subscription get <token> |
purchases.subscriptions.acknowledge | POST | (via SDK) |
purchases.subscriptions.cancel | POST | gpc purchases subscription cancel <token> |
purchases.subscriptions.defer | POST | gpc purchases subscription defer <token> |
purchases.subscriptionsv2.get | GET | gpc purchases subscription get <token> |
purchases.subscriptionsv2.revoke | POST | gpc purchases subscription revoke <token> |
purchases.subscriptionsv2.cancel | POST | gpc purchases subscription cancel-v2 <token> |
purchases.subscriptionsv2.defer | POST | gpc purchases subscription defer-v2 <token> |
purchases.productsv2.get | GET | gpc purchases product get-v2 <id> <token> |
purchases.voidedpurchases.list | GET | gpc purchases voided list |
Orders
| API Endpoint | Method | GPC Command |
|---|---|---|
orders.get | GET | gpc purchases orders get <order-id> |
orders.batchGet | GET | gpc purchases orders batch-get --ids |
orders.refund | POST | gpc purchases orders refund <order-id> |
orders.reviewRefund | POST | gpc purchases orders review-refund <order-id> |
Monetization: Pricing
| API Endpoint | Method | GPC Command |
|---|---|---|
monetization.convertRegionPrices | POST | gpc pricing convert --from USD --amount 9.99 |
Users
Developer-account user management lives at a separate base URL (androidpublisher.googleapis.com/androidpublisher/v3/developers/{developerId}) and is exposed through UsersApiClient.
| API Endpoint | Method | GPC Command |
|---|---|---|
users.list | GET | gpc users list |
users.create | POST | gpc users invite |
users.patch | PATCH | gpc users update |
users.delete | DELETE | gpc users remove |
Grants
| API Endpoint | Method | GPC Command |
|---|---|---|
grants.list | GET | gpc grants list |
grants.create | POST | gpc grants create |
grants.patch | PATCH | gpc grants update |
grants.delete | DELETE | gpc grants delete |
Reports
Bulk reports are served from the Play-linked Cloud Storage bucket (pubsite_prod_<developerId>) via the GCS JSON API, not the Publisher API (v0.9.93+).
| API Endpoint | Method | GPC Command |
|---|---|---|
storage.objects.list | GET | gpc reports list |
storage.objects.get (financial) | GET | gpc reports download financial |
storage.objects.get (stats) | GET | gpc reports download stats |
Play Developer Reporting API: Vitals
| API Endpoint | Method | GPC Command |
|---|---|---|
crashRateMetricSet.query | POST | gpc vitals crashes |
anrRateMetricSet.query | POST | gpc vitals anr |
slowStartRateMetricSet.query | POST | gpc vitals startup |
slowRenderingRateMetricSet.query | POST | gpc vitals rendering |
excessiveWakeupRateMetricSet.query | POST | gpc vitals battery / gpc vitals wakeup |
stuckBackgroundWakelockRateMetricSet.query | POST | gpc vitals memory |
lmkRateMetricSet.query | POST | gpc vitals lmk |
anonRssAndSwapMemoryUsageMetricSet.query | POST | gpc vitals memory-rss |
bitmapMemoryUsageMetricSet.query | POST | gpc vitals memory-bitmap |
errorCountMetricSet.query | POST | gpc vitals error-count |
*.get metric-set metadata and freshness routes | GET | Used automatically before each query |
anomalies.list | GET | gpc vitals anomalies |
errorIssues.search | GET | gpc vitals errors search |
errorReports.search | GET | gpc vitals errors search (sample reports) |
App Recovery Actions
| API Endpoint | Method | GPC Command |
|---|---|---|
appRecoveries.list | GET | gpc recovery list |
appRecoveries.create | POST | gpc recovery create |
appRecoveries.cancel | POST | gpc recovery cancel |
appRecoveries.deploy | POST | gpc recovery deploy |
appRecoveries.addTargeting | POST | gpc recovery add-targeting |
Data Safety
| API Endpoint | Method | GPC Command |
|---|---|---|
dataSafety.update | POST | gpc data-safety update |
App Signing
Advanced Play App Signing operations for enterprise organizations that retain signing-key custody in Google Cloud KMS. Standard Google-managed Play App Signing remains a Play Console workflow.
| API Endpoint | Method | GPC Command |
|---|---|---|
appsigning.enrollApp | POST | gpc app-signing enroll |
appsigning.rotateAppSigningKey | POST | gpc app-signing rotate |
External Transactions
| API Endpoint | Method | GPC Command |
|---|---|---|
externaltransactions.createExternalTransaction | POST | gpc ext-txn create |
externaltransactions.getExternalTransaction | GET | gpc ext-txn get |
externaltransactions.refundExternalTransaction | POST | gpc ext-txn refund |
Device Tiers
| API Endpoint | Method | GPC Command |
|---|---|---|
deviceTierConfigs.list | GET | gpc device-tiers list |
deviceTierConfigs.get | GET | gpc device-tiers get <config-id> |
deviceTierConfigs.create | POST | gpc device-tiers create --file |
Internal App Sharing
| API Endpoint | Method | GPC Command |
|---|---|---|
internalappsharing.artifacts.uploadbundle | POST | gpc internal-sharing upload <file> |
internalappsharing.artifacts.uploadapk | POST | gpc internal-sharing upload <file> |
Generated APKs
| API Endpoint | Method | GPC Command |
|---|---|---|
generatedapks.list | GET | gpc generated-apks list <version-code> |
generatedapks.download | GET | gpc generated-apks download <vc> <apk-id> |
System APKs
System APKs are bundled, unsigned variants produced for a specific version. Used by OEMs and enterprise deployments.
| API Endpoint | Method | GPC Command |
|---|---|---|
systemApks.list | GET | gpc system-apks list <version> |
systemApks.get | GET | gpc system-apks get <version> <id> |
systemApks.create | POST | gpc system-apks create <version> |
systemApks.download | GET | gpc system-apks download <id> |
One-Time Products
| API Endpoint | Method | GPC Command |
|---|---|---|
monetization.oneTimeProducts.list | GET | gpc otp list |
monetization.oneTimeProducts.get | GET | gpc otp get <id> |
monetization.onetimeproducts.patch | PATCH | gpc otp create (allowMissing), gpc otp update <id> |
monetization.oneTimeProducts.delete | DELETE | gpc otp delete <id> |
oneTimeProducts.offers.list | GET | gpc otp offers list |
oneTimeProducts.offers.activate | POST | (via SDK) |
oneTimeProducts.offers.deactivate | POST | (via SDK) |
oneTimeProducts.offers.cancel | POST | gpc otp offers cancel |
oneTimeProducts.offers.batchGet | POST | gpc otp offers batch-get, offers get |
oneTimeProducts.offers.batchUpdate | POST | gpc otp offers batch-update, offers create, offers update |
oneTimeProducts.offers.batchUpdateStates | POST | gpc otp offers batch-update-states |
oneTimeProducts.offers.batchDelete | POST | gpc otp offers batch-delete, offers delete |
oneTimeProducts.purchaseOptions.batchDelete | POST | gpc otp purchase-options batch-delete |
oneTimeProducts.purchaseOptions.batchUpdateStates | POST | gpc otp purchase-options batch-update-states |
Google Play publishes no single-offer get, create, patch, or delete route for one-time products -- only the batch endpoints above. gpc otp offers get|create|update|delete are therefore single-item batch requests, which is why they need --purchase-option <id>.
Managed Google Play (Play Custom App Publishing API)
Private app publishing for enterprise customers. Separate Google API (playcustomapp.googleapis.com). GPC is the first publishing CLI to support it. See the Enterprise publishing guide.
| API Endpoint | Method | GPC Command |
|---|---|---|
accounts.customApps.create | POST | gpc enterprise publish <bundle> or gpc enterprise create |
Coverage Summary
| Domain | Endpoints | API |
|---|---|---|
| Edits (internal transactional ops) | 5 | Publisher |
| Edits: Bundles + APKs | 5 | Publisher |
| Edits: Tracks + Release Lifecycle | 6 | Publisher |
| Edits: Deobfuscation + Expansion | 5 | Publisher |
| Edits: Listings + Images | 10 | Publisher |
| Edits: Details | 3 | Publisher |
| Edits: Country Availability | 1 | Publisher |
| Edits: Testers | 3 | Publisher |
| Reviews | 3 | Publisher |
| In-App Products | 9 | Publisher |
| Subscriptions + Base Plans + Offers | 19 | Publisher |
| Purchases | 13 | Publisher |
| Orders | 4 | Publisher |
| Monetization (pricing) | 1 | Publisher |
| Users + Grants | 8 | Publisher |
| Reports | 3 | Publisher |
| Vitals (metric sets + metadata) | 13 | Reporting |
| App Recovery | 5 | Publisher |
| Data Safety | 1 | Publisher |
| App Signing | 2 | Publisher |
| External Transactions | 3 | Publisher |
| Device Tiers | 3 | Publisher |
| Internal App Sharing | 2 | Publisher |
| Generated APKs | 2 | Publisher |
| System APKs | 4 | Publisher |
| One-Time Products + Offers | 14 | Publisher |
| Managed Google Play (Custom Apps) | 1 | Custom App |
| Play Games (Achievements + Leaderboards) | 10 | Games Config |
| Total publisher-focused endpoints covered | ~234 |
The domain rows above are a grouped view, not a one-to-one enumeration, so they do not sum exactly to the headline figure. The ~234 total is GPC's tracked count of the publisher-focused operations it covers across four Google Play APIs (Android Publisher v3, Play Developer Reporting v1beta1, Play Custom App Publishing v1, and Games Configuration v1configuration); a single grouped row can map to several underlying endpoints. Counts are approximate: some operations share one Google URL (for example, reports.download serves both financial and stats buckets via query parameters).
Planned coverage
Tracked against the live discovery docs audited 2026-09-08:
androidpublisher v3, revision20260908: 134 / 137 publisher-app methods covered (3 intentional gaps:monetization.subscriptions.archiveplus two hard-deprecated v1 subscription methods). Google's discovery document also contains 8 methods exclusively for operators enrolled in the Third-party app store on Play program; these are outside GPC's Google Play publisher scope.playdeveloperreporting v1beta1, revision20260907: 23 / 25 methods covered through the generic metric-set client and error/anomaly commands; the 2appsmethods remain planned below.playcustomapp v1, revision20260907: 1 / 1 methods covered.gamesconfiguration v1configuration, revision20260907: 10 / 10 publisher configuration methods covered. See Games APIs below.
Third-party app store APIs: intentionally excluded
The Android Publisher discovery document now includes 8 methods for businesses operating a third-party Android app store:
appstoreappsreview: create/update a hosted app, update its publish status, and upload its APK, images, and policy declaration files (6 methods)appstorecatalog: read recent eligible-app views and update events (2 methods)
These endpoints serve app-store operators registered in Google's Third-party app store on Play program. They do not publish an Android app to Google Play, so they are not included in GPC's coverage headline. If GPC later targets app-store operators, they should ship as a clearly separate command surface rather than being mixed into ordinary Play publishing commands.
Recent API field additions (shipped in GPC types)
These fields were added by Google in 2025-2026 and are already present in GPC's SubscriptionPurchaseV2 / SubscriptionPurchaseLineItem types:
| Field | Added | Notes |
|---|---|---|
SubscriptionPurchaseLineItem.latestSuccessfulOrderId | May 2025 | Replaces deprecated latestOrderId |
SubscriptionPurchaseLineItem.autoRenewingPlan.priceStepUpConsentDetails | Sep 2025 | Consent status + timestamp for price step-ups |
SubscriptionPurchaseLineItem.itemReplacement | Nov 2025 | Details about the item being replaced |
SubscriptionPurchaseV2.outOfAppPurchaseContext | Nov 2025 | Links resubscriptions from Play Store to expired subscriptions |
SubscriptionPurchaseLineItem.offerPhase | Jan 2026 | Current phase: free trial, intro price, base plan, prorated |
Orders.offerPhaseDetails | Nov 2025 | Detailed info on orders funding a prorated period |
RTDN event types
GPC's RTDN decoder covers all documented event types: 18 subscription (1-13, 17-20, 22), 2 OTP, plus voided-purchase and test-notification handlers.
Play Developer Reporting API: planned additions
| Endpoint | Use-case | Target |
|---|---|---|
apps.search | Reporting-ACL app discovery, to back a future --source option on gpc apps list | Future |
apps.fetchReleaseFilterOptions | Validate --version-code / --track filters, power shell completion for vitals queries | Future |
errorIssues.search (extended params) | Add orderBy, sampleErrorReportLimit, interval.* windowing to gpc vitals errors search | Future |
Fixed
gpc vitals errors search now calls the correct GET /apps/{pkg}/errorReports:search endpoint with an errorIssueId filter for its sample reports.
Managed Google Play (playcustomapp): minor polish
| Item | Notes |
|---|---|
Accept BCP 47 hyphen form (en-US) | Currently only en_US is documented; both work, hyphen is canonical |
| Pre-validate 10 GiB upload cap | Clearer error than mid-stream upload failure |
No spec-driven changes needed: accounts.customApps.create is the entire API surface (1 method). Google has not added methods since v0.9.56 shipped (2026-04-11).
Games APIs
GPC v0.9.86 implements the full live gamesconfiguration v1configuration API (revision 20260907, 10 endpoints) for publisher CRUD on achievement and leaderboard definitions:
| Resource | Methods (5 each) | Status |
|---|---|---|
achievementConfigurations | list, get, insert, update, delete | Done |
leaderboardConfigurations | list, get, insert, update, delete | Done |
The live discovery document contains no imageConfigurations resource. Achievement and leaderboard icon upload was removed from the published API surface in revision 20260820; GPC retains the legacy call only to return a clear API_ENDPOINT_RETIRED error when Google rejects the route.
The runtime games v1 API (revision 20260907) is preserved read-only under gpc games runtime for inspection. The former games events command was removed (runtime-only, no publisher equivalent).
gamesManagement v1management (revision 20260907, 18 methods) will not be expanded. It is a QA/reset and player-moderation surface that requires a developer-console user or whitelisted tester account, rather than GPC's service-account publishing workflow.
Deprecation watch
Formal deprecation wave (May 21, 2025)
Google formally deprecated these subscription APIs with shutdown scheduled for August 31, 2027 (extension available to November 1, 2027):
| Deprecated | Replacement | GPC status |
|---|---|---|
purchases.subscriptions.get | purchases.subscriptionsv2.get | Emits warning, redirects to v2 |
purchases.subscriptions.refund | orders.refund (via subscriptionsv2.get for order ID) | Removed; users directed to gpc purchases orders refund |
purchases.subscriptions.revoke | purchases.subscriptionsv2.revoke | v2 method available |
SubscriptionPurchaseV2.latestOrderId | SubscriptionPurchaseLineItem.latestSuccessfulOrderId | Types updated |
SUBSCRIPTION_PRICE_CHANGE_CONFIRMED RTDN | SUBSCRIPTION_PRICE_CHANGE_UPDATED | Both mapped in RTDN decoder |
Client libraries released after November 1, 2025 no longer include the deprecated methods. GPC's typed API client already prefers v2 surfaces.
Other deprecation signals
- Developer Verification API (2026 rollout): not yet present in
androidpublisher v3discovery as of revision20260416. Monitoring for a new discovery doc (likelyplaydeveloperverification-style) or Console-only feature. See Developer Verification guide for current posture. - Soft-deprecated (no formal deadline yet): Google's discovery doesn't flag these but their descriptions point callers at v2 equivalents:
purchases.subscriptions.{acknowledge, cancel, defer}→ prefersubscriptionsv2.*inappproducts.*(for subscriptions only) → prefermonetization.subscriptions.*
inappproductsfor one-time products: Google deprecated this endpoint for OTP management (shutdown August 2027). GPC routes throughmonetization.oneTimeProductsinternally and emits a warning on legacy IAP commands.
GPC currently emits deprecation warnings on purchases.subscriptions.get and legacy inappproducts IAP operations. Expanding warning coverage to the remaining soft-deprecated surfaces is a candidate for a future release.
