google-play-cli

module
v0.17.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 23, 2026 License: MIT

README

Latest Release GitHub Stars Go Version License Status

gplay

Every team shipping an Android app eventually hits the same wall: Fastlane supply drags a Ruby runtime into your CI image, output meant for humans, and generic exit codes that make retry logic guesswork. gplay is what you'd build today if you started fresh — one static binary, no runtime, JSON output that matches the Google Play Developer API verbatim, semantic exit codes, safe production defaults.

Two ways to drive it: the raw CLI (flags, scripts, CI) or agent skills that run it from natural-language prompts.

Public preview — pre-1.0. A broad surface is already implemented: auth, apps, releases, tracks, reviews, metadata, compliance (Data Safety), team, and closed-track testers. Breaking changes are still possible before v1.0. See docs/BACKLOG.md for what's out of scope and ADR-0010 for the versioning policy.

Why

  • Standalone Go binary. No Ruby, no Node, no Python — one file in your CI image.
  • Built for CI and agents. TTY-aware output (table by default, json in pipes), explicit flags, semantic exit codes for retry decisions.
  • API-faithful. --output json returns the raw Google Play Developer API response shape — no custom envelope to learn. The Google docs are the schema docs.
  • Safe by default on production. Uploading or promoting to the production track creates a draft release unless you explicitly --complete or --staged <fraction>. See ADR-0002.

Install

All install methods are live: go install, Homebrew, the install script, and pre-built binaries for Linux, macOS, and Windows on the releases page.

# go install
go install github.com/PollyGlot/google-play-cli/cmd/gplay@latest

# Homebrew
brew install PollyGlot/tap/gplay

# Install script
curl -fsSL https://gplay.sh/install | sh

The install script verifies the archive's SHA-256 against the release checksums.txt and fails closed — a missing, incomplete, or mismatched checksum aborts the install. Set GPLAY_INSTALL_NO_VERIFY=1 to bypass (prints a warning, greppable in CI). To add cosign and provenance checks on top, see Verify a release.

Agent skills

gplay is built to be driven by AI agents, not just typed by hand. Agent skills turn a natural-language prompt into the right gplay invocation, with the safety rails baked in:

"Promote the latest internal build of com.example.myapp to beta." → the gplay-release-flow skill runs gplay releases promote --from internal --to beta for you.

Install them in one step — the one gplay command that needs Node/npx:

gplay install-skills

That wraps the skills CLI (npx skills add PollyGlot/google-play-cli-skills --global --agent '*' --yes), installing every skill for every detected agent. No Node? Run that npx line yourself, or browse the skills by hand. (Driving the Play API itself stays Node-free — install-skills is a workstation convenience, never on the CI path.)

Skills live in a companion repo — PollyGlot/google-play-cli-skills. Each is a folder with a SKILL.md documenting its intent, the commands it runs, and the rails it enforces. The roster is fixed by ADR-0021: one skill per shipped namespace, plus a gplay-cli-usage foundation.

Skill Drives
gplay-cli-usage Cross-cutting conventions (foundation)
gplay-setup Auth onboarding
gplay-apps Apps registry + details
gplay-release-flow upload / promote / rollout
gplay-tracks Tracks + testers
gplay-reviews reviews list / reply
gplay-metadata-sync Listings + images
gplay-compliance Data Safety
gplay-team users / grants / permissions

gplay-vitals and gplay-subscription-management are gated until those CLI surfaces land (#49, #51).

Quick start

# Point gplay at a Google Cloud service account JSON.
gplay auth login --service-account ./service_account.json

# List configured accounts and see which one is active.
gplay auth list
gplay auth status

# Verify the SA actually has access to your app.
gplay auth doctor --package com.example.myapp

# Bootstrap a project-local config (cascading: project → user → defaults).
gplay init

Full command reference: gplay --help (or gplay <subcommand> --help).

The Fastlane-replacement surface

The CLI the skills above drive — all working today (public preview):

# Upload an AAB to the internal track, with localized release notes.
gplay releases upload app.aab \
  --package com.example.myapp \
  --track internal \
  --release-notes-dir ./whatsnew

# Promote the latest internal build to beta.
gplay releases promote --package com.example.myapp --from internal --to beta

# Stage a production rollout, then advance it.
gplay releases rollout --package com.example.myapp --track production --to 0.10

# Read the most recent reviews (API exposes the last 7 days only) and reply.
gplay reviews list --package com.example.myapp --stars 1-2
gplay reviews reply --review-id REVIEW_ID --reply "Thanks for the feedback!"

How it's set up

Documentation-first: decisions are pinned before code so contributors and agents converge.

  • CLAUDE.md — project context and agent working instructions (read order, conventions, build/test, PR gate).
  • CONTEXT.md — glossary of canonical terms (Edit, Account, Project, ...). Use them verbatim.
  • docs/DESIGN.md — CLI conventions across commands (auth precedence, exit codes, output format, verbosity, edit lifecycle).
  • docs/BACKLOG.md — explicitly out-of-scope features.
  • docs/CI_CD.md — how to wire gplay into a CI pipeline (GitHub Actions example).
  • docs/adr/ — Architecture Decision Records.

Verify a release

Confirm an artifact came from this repo's release pipeline (cosign + provenance).

Every release publishes a cosign signature over checksums.txt and a GitHub build-provenance attestation over each archive — two independent ways to confirm an artifact really came from this repo's release pipeline before you trust it in CI.

# 1. Build-provenance attestation (needs the GitHub CLI; no extra download).
#    Proves the archive was built by this repo's release workflow.
gh attestation verify gplay_<version>_<os>_<arch>.tar.gz \
  -R PollyGlot/google-play-cli

# 2. cosign signature over checksums.txt (needs cosign). The checksum file
#    transitively covers every archive it lists, so verify it, then check
#    your archive against it.
cosign verify-blob checksums.txt \
  --bundle checksums.txt.sigstore.json \
  --certificate-identity-regexp '^https://github.com/PollyGlot/google-play-cli/\.github/workflows/release\.yml@' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com
shasum -a 256 -c <(grep " gplay_<version>_<os>_<arch>.tar.gz$" checksums.txt)

Download checksums.txt and checksums.txt.sigstore.json from the same release as the archive. The install script already checks the SHA-256 against checksums.txt and fails closed; these commands add provenance and signature verification on top.

Contributing

See CONTRIBUTING.md. TL;DR: open an issue first for anything bigger than a typo, branch from main, open a PR.

License

MIT — © 2026 Pavlo Trinko and contributors.

Not affiliated with Google

gplay is an independent open-source project. It uses the public Google Play Developer API and is not endorsed by, affiliated with, or sponsored by Google LLC. "Google Play" is a trademark of Google LLC.

Directories

Path Synopsis
cmd
gplay command
commands
apps/accessiblecmd
Package accessiblecmd implements `gplay apps accessible list`: the server-authoritative enumeration of the Apps the active credential can access, via the Play Developer Reporting `apps.search` method (#347, ADR-0039).
Package accessiblecmd implements `gplay apps accessible list`: the server-authoritative enumeration of the Apps the active credential can access, via the Play Developer Reporting `apps.search` method (#347, ADR-0039).
apps/addcmd
Package addcmd implements `gplay apps add`: register one or more Android packages under the active Account, each with a cheap edits.insert+delete access probe (skippable via --no-verify) so typos and missing per-app permission grants are caught at registration time rather than weeks later in CI.
Package addcmd implements `gplay apps add`: register one or more Android packages under the active Account, each with a cheap edits.insert+delete access probe (skippable via --no-verify) so typos and missing per-app permission grants are caught at registration time rather than weeks later in CI.
apps/detailscmd
Package detailscmd implements `apps details`, a pure grouping noun over the App details resource — the app-global edits.details record holding defaultLanguage and the user-visible contact email/phone/website.
Package detailscmd implements `apps details`, a pure grouping noun over the App details resource — the app-global edits.details record holding defaultLanguage and the user-visible contact email/phone/website.
apps/initcmd
Package initcmd implements `gplay init`: pin a package name to the current repo by writing .gplay/config.json (committed) and an adjacent .gplay/.gitignore.
Package initcmd implements `gplay init`: pin a package name to the current repo by writing .gplay/config.json (committed) and an adjacent .gplay/.gitignore.
apps/listcmd
Package listcmd implements `gplay apps list`: print every Android package registered under the active Account, marking the one pinned by the current repo's .gplay/config.json.
Package listcmd implements `gplay apps list`: print every Android package registered under the active Account, marking the one pinned by the current repo's .gplay/config.json.
apps/removecmd
Package removecmd implements `gplay apps remove`: drop an Android package from the active Account's local registry.
Package removecmd implements `gplay apps remove`: drop an Android package from the active Account's local registry.
apps/viewcmd
Package viewcmd implements `gplay apps view`: a read-only sanity check on what the active service account sees for a given app.
Package viewcmd implements `gplay apps view`: a read-only sanity check on what the active service account sees for a given app.
auth/doctor
Package doctor implements `gplay auth doctor`: ordered diagnostic checks (per docs/DESIGN.md §1) that catch credential misconfiguration before any other command tries to talk to the API.
Package doctor implements `gplay auth doctor`: ordered diagnostic checks (per docs/DESIGN.md §1) that catch credential misconfiguration before any other command tries to talk to the API.
auth/list
Package list implements `gplay auth list`: print every registered Account with the active one marked.
Package list implements `gplay auth list`: print every registered Account with the active one marked.
auth/login
Package login implements `gplay auth login`: register a service-account JSON as a named Account in the keystore and mark it active in the config.
Package login implements `gplay auth login`: register a service-account JSON as a named Account in the keystore and mark it active in the config.
auth/logout
Package logout implements `gplay auth logout <name>`: remove a registered Account from both the config and the keystore.
Package logout implements `gplay auth logout <name>`: remove a registered Account from both the config and the keystore.
auth/status
Package status implements `gplay auth status`: print which Account is active, the underlying client_email, the keystore backend in use, and (when applicable) the on-disk credential path.
Package status implements `gplay auth status`: print which Account is active, the underlying client_email, the keystore backend in use, and (when applicable) the on-disk credential path.
compliance/datasafety/set
Package set implements `gplay compliance datasafety set`: it pushes the app's Data Safety declaration to Google from the canonical CSV.
Package set implements `gplay compliance datasafety set`: it pushes the app's Data Safety declaration to Google from the canonical CSV.
compliance/datasafety/validate
Package validatecmd implements `gplay compliance datasafety validate`: an OFFLINE structural check of the canonical Data Safety CSV.
Package validatecmd implements `gplay compliance datasafety validate`: an OFFLINE structural check of the canonical Data Safety CSV.
customapps/create
Package create implements `gplay customapps create`: create a private app distributed to one organisation through managed Google Play, via playcustomapp.accounts.customApps.create — the one Developer API path that creates an app *record* (ADR-0032).
Package create implements `gplay customapps create`: create a private app distributed to one organisation through managed Google Play, via playcustomapp.accounts.customApps.create — the one Developer API path that creates an app *record* (ADR-0032).
device-tiers/create
Package create implements `gplay device-tiers create`: create a new (immutable) Device Tier Config on Play from a JSON DeviceTierConfig body read from --file or stdin.
Package create implements `gplay device-tiers create`: create a new (immutable) Device Tier Config on Play from a JSON DeviceTierConfig body read from --file or stdin.
device-tiers/devicetierscmd
Package devicetierscmd holds the wiring shared by the three `gplay device-tiers` leaves (create/view/list): package resolution, the ADR-0018 shared table machinery, and 404/403 hint classification.
Package devicetierscmd holds the wiring shared by the three `gplay device-tiers` leaves (create/view/list): package resolution, the ADR-0018 shared table machinery, and 404/403 hint classification.
device-tiers/list
Package list implements `gplay device-tiers list`: list the app's device tier configs (newest first).
Package list implements `gplay device-tiers list`: list the app's device tier configs (newest first).
device-tiers/view
Package view implements `gplay device-tiers view <deviceTierConfigId>`: read a single device tier config by its server-assigned int64 id.
Package view implements `gplay device-tiers view <deviceTierConfigId>`: read a single device tier config by its server-assigned int64 id.
edits/begin
Package begin implements `gplay edits begin`: open an explicit Edit on a package and persist its ID to .gplay/edit-<package>.json, so subsequent write commands in the same project reuse it instead of opening their own (the explicit Edit lifecycle, docs/DESIGN.md §4).
Package begin implements `gplay edits begin`: open an explicit Edit on a package and persist its ID to .gplay/edit-<package>.json, so subsequent write commands in the same project reuse it instead of opening their own (the explicit Edit lifecycle, docs/DESIGN.md §4).
edits/commit
Package commit implements `gplay edits commit`: commit the explicit Edit pinned in .gplay/edit-<package>.json (edits.commit) and clear the pin on success.
Package commit implements `gplay edits commit`: commit the explicit Edit pinned in .gplay/edit-<package>.json (edits.commit) and clear the pin on success.
edits/discard
Package discard implements `gplay edits discard`: discard the explicit Edit pinned in .gplay/edit-<package>.json (edits.delete) and clear the pin.
Package discard implements `gplay edits discard`: discard the explicit Edit pinned in .gplay/edit-<package>.json (edits.delete) and clear the pin.
edits/editscmd
Package editscmd holds the wiring shared by the four `gplay edits` leaves (begin/commit/discard/status): package resolution, locating the project's .gplay/ pin directory, the operator-facing error shapes (CLI misuse → exit 2, no-open-Edit / already-open state → exit 60), and the small renderable the leaves return.
Package editscmd holds the wiring shared by the four `gplay edits` leaves (begin/commit/discard/status): package resolution, locating the project's .gplay/ pin directory, the operator-facing error shapes (CLI misuse → exit 2, no-open-Edit / already-open state → exit 60), and the small renderable the leaves return.
edits/status
Package status implements `gplay edits status`: report the open explicit Edit pinned in .gplay/edit-<package>.json, or "no open explicit edit" when none is pinned.
Package status implements `gplay edits status`: report the open explicit Edit pinned in .gplay/edit-<package>.json, or "no open explicit edit" when none is pinned.
games/achievements/create
Package create implements `gplay games achievements create --application-id <id>`: insert a new achievement configuration (achievementConfigurations.insert).
Package create implements `gplay games achievements create --application-id <id>`: insert a new achievement configuration (achievementConfigurations.insert).
games/achievements/delete
Package delete implements `gplay games achievements delete <achievementId>`: delete an achievement configuration (achievementConfigurations.delete).
Package delete implements `gplay games achievements delete <achievementId>`: delete an achievement configuration (achievementConfigurations.delete).
games/achievements/list
Package list implements `gplay games achievements list --application-id <id>`: list a game's achievement configurations (achievementConfigurations.list).
Package list implements `gplay games achievements list --application-id <id>`: list a game's achievement configurations (achievementConfigurations.list).
games/achievements/update
Package update implements `gplay games achievements update <achievementId>`: replace an achievement configuration's metadata (achievementConfigurations.update, PUT).
Package update implements `gplay games achievements update <achievementId>`: replace an achievement configuration's metadata (achievementConfigurations.update, PUT).
games/achievements/view
Package view implements `gplay games achievements view <achievementId>`: read a single achievement configuration (achievementConfigurations.get).
Package view implements `gplay games achievements view <achievementId>`: read a single achievement configuration (achievementConfigurations.get).
games/gamescmd
Package gamescmd holds the wiring shared by the ten `gplay games` leaves (achievements + leaderboards × list/view/create/update/delete): Play Games application-ID resolution, the destructive-tier --confirm gate, the ADR-0018 shared table machinery, request-body construction for the writes, and 404/403 hint classification.
Package gamescmd holds the wiring shared by the ten `gplay games` leaves (achievements + leaderboards × list/view/create/update/delete): Play Games application-ID resolution, the destructive-tier --confirm gate, the ADR-0018 shared table machinery, request-body construction for the writes, and 404/403 hint classification.
games/gamescmd/gamescmdtest
Package gamescmdtest is the test-only seam shared by the `gplay games` leaf tests: a RoundTripper that fakes the OAuth2 /token exchange plus a RunContext wired with a throwaway service account, so each leaf test asserts addressing and pass-through without re-copying the auth dance (mirrors the harness the device-tiers leaf tests inline).
Package gamescmdtest is the test-only seam shared by the `gplay games` leaf tests: a RoundTripper that fakes the OAuth2 /token exchange plus a RunContext wired with a throwaway service account, so each leaf test asserts addressing and pass-through without re-copying the auth dance (mirrors the harness the device-tiers leaf tests inline).
games/leaderboards/create
Package create implements `gplay games leaderboards create --application-id <id>`: insert a new leaderboard configuration (leaderboardConfigurations.insert).
Package create implements `gplay games leaderboards create --application-id <id>`: insert a new leaderboard configuration (leaderboardConfigurations.insert).
games/leaderboards/delete
Package delete implements `gplay games leaderboards delete <leaderboardId>`: delete a leaderboard configuration (leaderboardConfigurations.delete).
Package delete implements `gplay games leaderboards delete <leaderboardId>`: delete a leaderboard configuration (leaderboardConfigurations.delete).
games/leaderboards/list
Package list implements `gplay games leaderboards list --application-id <id>`: list a game's leaderboard configurations (leaderboardConfigurations.list).
Package list implements `gplay games leaderboards list --application-id <id>`: list a game's leaderboard configurations (leaderboardConfigurations.list).
games/leaderboards/update
Package update implements `gplay games leaderboards update <leaderboardId>`: replace a leaderboard configuration's metadata (leaderboardConfigurations.update, PUT).
Package update implements `gplay games leaderboards update <leaderboardId>`: replace a leaderboard configuration's metadata (leaderboardConfigurations.update, PUT).
games/leaderboards/view
Package view implements `gplay games leaderboards view <leaderboardId>`: read a single leaderboard configuration (leaderboardConfigurations.get).
Package view implements `gplay games leaderboards view <leaderboardId>`: read a single leaderboard configuration (leaderboardConfigurations.get).
help/exitcodes
Package exitcodes registers `gplay exit-codes` (also reachable as `gplay help exit-codes`): a help topic that prints gplay's semantic exit-code taxonomy (docs/DESIGN.md §9).
Package exitcodes registers `gplay exit-codes` (also reachable as `gplay help exit-codes`): a help topic that prints gplay's semantic exit-code taxonomy (docs/DESIGN.md §9).
installskills
Package installskills implements `gplay install-skills`: a flat, category-3 meta-command (DESIGN §0) that installs the companion agent skills by shelling out to `npx skills add` (ADR-0028).
Package installskills implements `gplay install-skills`: a flat, category-3 meta-command (DESIGN §0) that installs the companion agent skills by shelling out to `npx skills add` (ADR-0028).
metadata/apply
Package apply implements `gplay metadata apply`: reconcile the local Metadata tree with the Listings live on Google Play.
Package apply implements `gplay metadata apply`: reconcile the local Metadata tree with the Listings live on Google Play.
metadata/images/apply
Package imagesapply implements `gplay metadata images apply`: reconcile the local Store-image tree with the images live on Google Play.
Package imagesapply implements `gplay metadata images apply`: reconcile the local Store-image tree with the images live on Google Play.
metadata/images/list
Package imageslist implements `gplay metadata images list`: a read-only summary of the Store images live on Google Play for a package — one row per non-empty slot (a (locale, imageType) pair), showing the image count and each image's content sha256.
Package imageslist implements `gplay metadata images list`: a read-only summary of the Store images live on Google Play for a package — one row per non-empty slot (a (locale, imageType) pair), showing the image count and each image's content sha256.
metadata/images/pull
Package imagespull implements `gplay metadata images pull`: it rapatriates the Store images live on Google Play for a package into the local Metadata tree on disk, under each locale's images/ sub-directory, alongside the text Listing `.txt` files.
Package imagespull implements `gplay metadata images pull`: it rapatriates the Store images live on Google Play for a package into the local Metadata tree on disk, under each locale's images/ sub-directory, alongside the text Listing `.txt` files.
metadata/images/validate
Package imagesvalidate implements `gplay metadata images validate`: an OFFLINE lint of the on-disk Store-image tree.
Package imagesvalidate implements `gplay metadata images validate`: an OFFLINE lint of the on-disk Store-image tree.
metadata/list
Package list implements `gplay metadata list`: a read-only summary of the Store front Listings live on Google Play for a package — one row per locale, showing which managed fields each locale has and the character length of each.
Package list implements `gplay metadata list`: a read-only summary of the Store front Listings live on Google Play for a package — one row per locale, showing which managed fields each locale has and the character length of each.
metadata/pull
Package pull implements `gplay metadata pull`: it rapatriates the Store front Listings live on Google Play for a package into the local Metadata tree on disk.
Package pull implements `gplay metadata pull`: it rapatriates the Store front Listings live on Google Play for a package into the local Metadata tree on disk.
metadata/validate
Package validatecmd implements `gplay metadata validate`: an OFFLINE lint of the on-disk Metadata tree.
Package validatecmd implements `gplay metadata validate`: an OFFLINE lint of the on-disk Metadata tree.
orders/orderscmd
Package orderscmd holds the wiring shared by the `gplay orders` leaves: package resolution, the exit-2 usage error, and the 404/403 hint classification that turns a bare API rejection into an agent-resolvable refusal.
Package orderscmd holds the wiring shared by the `gplay orders` leaves: package resolution, the exit-2 usage error, and the 404/403 hint classification that turns a bare API rejection into an agent-resolvable refusal.
orders/refund
Package refund implements `gplay orders refund <orderId> --confirm [--revoke]`: the money-moving, irreversible refund of a single Google Play order (orders.refund, POST, no body).
Package refund implements `gplay orders refund <orderId> --confirm [--revoke]`: the money-moving, irreversible refund of a single Google Play order (orders.refund, POST, no body).
orders/view
Package view implements `gplay orders view <orderId> [<orderId>...]`: a Google Play order lookup by order ID, end-to-end.
Package view implements `gplay orders view <orderId> [<orderId>...]`: a Google Play order lookup by order ID, end-to-end.
recovery/add-targeting
Package addtargeting implements `gplay recovery add-targeting <appRecoveryId>`: widen the audience of a recovery action.
Package addtargeting implements `gplay recovery add-targeting <appRecoveryId>`: widen the audience of a recovery action.
recovery/cancel
Package cancel implements `gplay recovery cancel <appRecoveryId>`: terminate an app recovery action.
Package cancel implements `gplay recovery cancel <appRecoveryId>`: terminate an app recovery action.
recovery/create
Package create implements `gplay recovery create`: create a DRAFT app recovery action targeting users on a bad versionCode.
Package create implements `gplay recovery create`: create a DRAFT app recovery action targeting users on a bad versionCode.
recovery/deploy
Package deploy implements `gplay recovery deploy <appRecoveryId>`: activate a draft recovery action — the production-impacting moment that force-pushes impacted users to a safe app version.
Package deploy implements `gplay recovery deploy <appRecoveryId>`: activate a draft recovery action — the production-impacting moment that force-pushes impacted users to a safe app version.
recovery/list
Package list implements `gplay recovery list`: list the recovery actions for a given (bad) versionCode.
Package list implements `gplay recovery list`: list the recovery actions for a given (bad) versionCode.
recovery/recoverycmd
Package recoverycmd holds the wiring shared by the `gplay recovery` leaves: package resolution, the ADR-0018 list-table machinery, and 404/403 hint classification.
Package recoverycmd holds the wiring shared by the `gplay recovery` leaves: package resolution, the ADR-0018 list-table machinery, and 404/403 hint classification.
releases/expansion-files/expansionfilescmd
Package expansionfilescmd holds the wiring shared by the `releases expansion-files` leaves (upload/set/view): package resolution, --type validation, and a shared ExpansionFile renderer.
Package expansionfilescmd holds the wiring shared by the `releases expansion-files` leaves (upload/set/view): package resolution, --type validation, and a shared ExpansionFile renderer.
releases/expansion-files/set
Package set implements `gplay releases expansion-files set`: declaratively point an APK's expansion file at another APK versionCode's already-uploaded file (no new binary).
Package set implements `gplay releases expansion-files set`: declaratively point an APK's expansion file at another APK versionCode's already-uploaded file (no new binary).
releases/expansion-files/upload
Package upload implements `gplay releases expansion-files upload`: upload a legacy .obb expansion file and attach it to an already-published APK versionCode, through the full Edit lifecycle (insert → upload → commit).
Package upload implements `gplay releases expansion-files upload`: upload a legacy .obb expansion file and attach it to an already-published APK versionCode, through the full Edit lifecycle (insert → upload → commit).
releases/expansion-files/view
Package view implements `gplay releases expansion-files view`: read an APK's expansion file configuration (fileSize XOR referencesVersion) for a given versionCode and type.
Package view implements `gplay releases expansion-files view`: read an APK's expansion file configuration (fileSize XOR referencesVersion) for a given versionCode and type.
releases/generated/download
Package download implements `gplay releases generated download <downloadId>`: fetch one APK Play generated from a bundle, streaming the raw signed bytes to a local file (or stdout with `--dest -`).
Package download implements `gplay releases generated download <downloadId>`: fetch one APK Play generated from a bundle, streaming the raw signed bytes to a local file (or stdout with `--dest -`).
releases/generated/generatedcmd
Package generatedcmd holds the wiring shared by the `gplay releases generated` leaves (list/download): package resolution, the ADR-0018 list-table machinery that flattens the grouped-by-signing-key GeneratedApksListResponse to one row per artifact, and 404/403 hint classification.
Package generatedcmd holds the wiring shared by the `gplay releases generated` leaves (list/download): package resolution, the ADR-0018 list-table machinery that flattens the grouped-by-signing-key GeneratedApksListResponse to one row per artifact, and 404/403 hint classification.
releases/generated/list
Package list implements `gplay releases generated list`: enumerate the APKs Play generated and signed from an uploaded AAB for a given versionCode.
Package list implements `gplay releases generated list`: enumerate the APKs Play generated and signed from an uploaded AAB for a given versionCode.
releases/list
Package list implements `gplay releases list`: a read-only listing of every release currently attached to a track (draft, inProgress, halted, completed).
Package list implements `gplay releases list`: a read-only listing of every release currently attached to a track (draft, inProgress, halted, completed).
releases/mappings
Package mappings implements `gplay releases mappings upload`: attach a ProGuard/R8 deobfuscation file (a Mapping, per CONTEXT.md) to an already-published versionCode after the fact, so Play vitals can symbolicate that version's obfuscated crash stacks.
Package mappings implements `gplay releases mappings upload`: attach a ProGuard/R8 deobfuscation file (a Mapping, per CONTEXT.md) to an already-published versionCode after the fact, so Play vitals can symbolicate that version's obfuscated crash stacks.
releases/promote
Package promote implements `gplay releases promote`: the CLI glue that parses --from/--to plus the status overrides (per ADR-0002), resolves --package, and hands a PromoteOpts payload to internal/releases/orchestrator.
Package promote implements `gplay releases promote`: the CLI glue that parses --from/--to plus the status overrides (per ADR-0002), resolves --package, and hands a PromoteOpts payload to internal/releases/orchestrator.
releases/rollout
Package rollout implements the staged-rollout state machine as four sibling commands — `gplay releases rollout / halt / resume / complete`.
Package rollout implements the staged-rollout state machine as four sibling commands — `gplay releases rollout / halt / resume / complete`.
releases/sharing/upload
Package upload implements `gplay releases sharing upload`: upload an APK or AAB to Google Play Internal App Sharing and print the private, shareable download link (CONTEXT.md: Internal App Sharing).
Package upload implements `gplay releases sharing upload`: upload an APK or AAB to Google Play Internal App Sharing and print the private, shareable download link (CONTEXT.md: Internal App Sharing).
releases/trackhint
Package trackhint maps the one operator-facing failure that `releases upload` and `releases promote` share when they target a custom closed track that has not been created yet — a tracks.update 404 — to an actionable error pointing at `gplay tracks create <name>`.
Package trackhint maps the one operator-facing failure that `releases upload` and `releases promote` share when they target a custom closed track that has not been created yet — a tracks.update 404 — to an actionable error pointing at `gplay tracks create <name>`.
releases/upload
Package upload implements `gplay releases upload`: the CLI glue that resolves --package, parses the status flags (per ADR-0002), and hands an Opts payload to internal/releases/orchestrator.
Package upload implements `gplay releases upload`: the CLI glue that resolves --package, parses the status flags (per ADR-0002), and hands an Opts payload to internal/releases/orchestrator.
reviews/history
Package history implements `gplay reviews history`: the full-history channel for user reviews, beyond `reviews list`'s 7-day API window.
Package history implements `gplay reviews history`: the full-history channel for user reviews, beyond `reviews list`'s 7-day API window.
reviews/list
Package list implements `gplay reviews list`: a read-only listing of the user reviews the Google Play API exposes for a package.
Package list implements `gplay reviews list`: a read-only listing of the user reviews the Google Play API exposes for a package.
reviews/reply
Package reply implements `gplay reviews reply`: post developer responses to user reviews, one at a time (--review-id + --reply) or in bulk from a TSV stream (--batch <file>|-).
Package reply implements `gplay reviews reply`: post developer responses to user reviews, one at a time (--review-id + --reply) or in bulk from a TSV stream (--batch <file>|-).
reviews/reviewerr
Package reviewerr maps the two operator-facing failures of the Reviews API — a service account lacking the "Reply to reviews" permission (403) and an unknown package (404) — to actionable, hinted errors.
Package reviewerr maps the two operator-facing failures of the Reviews API — a service account lacking the "Reply to reviews" permission (403) and an unknown package (404) — to actionable, hinted errors.
reviews/view
Package view implements `gplay reviews view <reviewId>`: a read-only, deep view of ONE user review, addressed by reviewId — the `reviews` analogue of `apps view` / `team users view`.
Package view implements `gplay reviews view <reviewId>`: a read-only, deep view of ONE user review, addressed by reviewId — the `reviews` analogue of `apps view` / `team users view`.
schema
Package schema implements `gplay schema`: an OFFLINE, no-auth, `[experimental]` reference command that introspects the Android Publisher API surface from an embedded Schema index (ADR-0022).
Package schema implements `gplay schema`: an OFFLINE, no-auth, `[experimental]` reference command that introspects the Android Publisher API surface from an embedded Schema index (ADR-0022).
team/grants/list
Package list implements `gplay team grants list`: list the per-app Grants across the Developer account's members.
Package list implements `gplay team grants list`: list the per-app Grants across the Developer account's members.
team/grants/remove
Package remove implements `gplay team grants remove <email> --package <pkg>`: remove a member's access to one app via grants.delete, targeted by email+package path (no pre-read), WITHOUT removing them from the account.
Package remove implements `gplay team grants remove <email> --package <pkg>`: remove a member's access to one app via grants.delete, targeted by email+package path (no pre-read), WITHOUT removing them from the account.
team/grants/set
Package set implements `gplay team grants set <email> --package <pkg>`: grant or adjust a member's per-app access via an UPSERT by read-then-decide (ADR-0007 instinct): read the member's current grants → grants.create if the app grant is absent, grants.patch if present.
Package set implements `gplay team grants set <email> --package <pkg>`: grant or adjust a member's per-app access via an UPSERT by read-then-decide (ADR-0007 instinct): read the member's current grants → grants.create if the app grant is absent, grants.patch if present.
team/permissions
Package permissions implements `gplay team permissions`: an OFFLINE leaf (no API, no auth, zero network) that publishes gplay's permission vocabulary — the curated aliases (alias → account `_GLOBAL` enum → app enum → label → including-bundles) and the frozen role bundles.
Package permissions implements `gplay team permissions`: an OFFLINE leaf (no API, no auth, zero network) that publishes gplay's permission vocabulary — the curated aliases (alias → account `_GLOBAL` enum → app enum → label → including-bundles) and the frozen role bundles.
team/teamcmd
Package teamcmd holds the helpers shared by every `gplay team` leaf command: today, resolving the Developer account id (ADR-0015 cascade) and the type-once persistence that makes it sticky.
Package teamcmd holds the helpers shared by every `gplay team` leaf command: today, resolving the Developer account id (ADR-0015 cascade) and the type-once persistence that makes it sticky.
team/users/add
Package add implements `gplay team users add <email>`: invite a member with account-wide permissions via users.create.
Package add implements `gplay team users add <email>`: invite a member with account-wide permissions via users.create.
team/users/list
Package list implements `gplay team users list`: the first gplay command keyed by the Developer account rather than a package (ADR-0015).
Package list implements `gplay team users list`: the first gplay command keyed by the Developer account rather than a package (ADR-0015).
team/users/remove
Package remove implements `gplay team users remove <email>`: off-board a member via users.delete, targeted by email path (no pre-read).
Package remove implements `gplay team users remove <email>`: off-board a member via users.delete, targeted by email path (no pre-read).
team/users/set
Package set implements `gplay team users set <email>`: replace a member's account-wide permissions declaratively via users.patch (like `testers set`).
Package set implements `gplay team users set <email>`: replace a member's account-wide permissions declaratively via users.patch (like `testers set`).
team/users/view
Package view implements `gplay team users view <email>`: a read-only, deep view of ONE member of the Developer account, addressed by email — the `team users` analogue of `apps view` / `tracks view`.
Package view implements `gplay team users view <email>`: a read-only, deep view of ONE member of the Developer account, addressed by email — the `team users` analogue of `apps view` / `tracks view`.
testers/list
Package list implements `gplay testers list`: a read-only view of the authorized audience (Google Groups) of a single track.
Package list implements `gplay testers list`: a read-only view of the authorized audience (Google Groups) of a single track.
testers/set
Package set implements `gplay testers set`: it replaces the authorized audience (Google Groups) of a single track, declaratively — the whole list is sent, mapping 1:1 to edits.testers.update (there is no add/remove).
Package set implements `gplay testers set`: it replaces the authorized audience (Google Groups) of a single track, declaratively — the whole list is sent, mapping 1:1 to edits.testers.update (there is no add/remove).
tracks/availability
Package availability implements `tracks availability`, a pure grouping noun over the Country availability of a single track — which countries an app's artifacts are distributed to on --track.
Package availability implements `tracks availability`, a pure grouping noun over the Country availability of a single track — which countries an app's artifacts are distributed to on --track.
tracks/create
Package create implements `gplay tracks create <name>`: the CLI glue that creates a custom closed-testing track.
Package create implements `gplay tracks create <name>`: the CLI glue that creates a custom closed-testing track.
tracks/list
Package list implements `gplay tracks list`: a read-only, cross-track listing of every track configured for a package — the four standard tracks (internal, alpha, beta, production) plus any custom closed tracks the service account can see — with a one-line summary of the top release on each.
Package list implements `gplay tracks list`: a read-only, cross-track listing of every track configured for a package — the four standard tracks (internal, alpha, beta, production) plus any custom closed tracks the service account can see — with a one-line summary of the top release on each.
tracks/view
Package view implements `gplay tracks view`: a read-only, deep view of a single track tuned for the "is something wrong right now?" question.
Package view implements `gplay tracks view`: a read-only, deep view of a single track tuned for the "is something wrong right now?" question.
vitals/anomaliescmd
Package anomaliescmd implements `gplay vitals anomalies`: Play-detected metric anomalies (unexpected spikes in crash/ANR/etc.
Package anomaliescmd implements `gplay vitals anomalies`: Play-detected metric anomalies (unexpected spikes in crash/ANR/etc.
vitals/errorscmd
Package errorscmd implements `gplay vitals errors`: the error-reporting surface of the Play Developer Reporting API (#49).
Package errorscmd implements `gplay vitals errors`: the error-reporting surface of the Play Developer Reporting API (#49).
vitals/query
Package query implements `gplay vitals query <metric-set>`: the generic, read-only escape hatch over the Play Developer Reporting API metric sets (ADR-0026 full coverage).
Package query implements `gplay vitals query <metric-set>`: the generic, read-only escape hatch over the Play Developer Reporting API metric sets (ADR-0026 full coverage).
vitals/vitalscmd
Package vitalscmd is the shared orchestration behind every `gplay vitals` metric-set command: the generic `vitals query <metric-set>` escape hatch and the opinionated presets (`vitals crashes`, `vitals anr`, …).
Package vitalscmd is the shared orchestration behind every `gplay vitals` metric-set command: the generic `vitals query <metric-set>` escape hatch and the opinionated presets (`vitals crashes`, `vitals anr`, …).
internal
apps/registry
Package registry is the pure-data registry of Android package names known to each gplay Account.
Package registry is the pure-data registry of Android package names known to each gplay Account.
auth/doctor
Package doctor runs ordered diagnostic checks against a resolved service-account credential and reports a structured result per check.
Package doctor runs ordered diagnostic checks against a resolved service-account credential and reports a structured result per check.
auth/keystore
Package keystore stores service-account JSON credentials by name.
Package keystore stores service-account JSON credentials by name.
auth/resolver
Package resolver picks the credential the next API call will use.
Package resolver picks the credential the next API call will use.
auth/serviceaccount
Package serviceaccount loads and validates Google Cloud service-account JSON files.
Package serviceaccount loads and validates Google Cloud service-account JSON files.
auth/token
Package token mints OAuth2 access tokens for the Google Play Developer API from a parsed service account.
Package token mints OAuth2 access tokens for the Google Play Developer API from a parsed service account.
compliance/datasafety
Package datasafety owns the OFFLINE structural validation of an app's Data Safety CSV — the canonical on-disk artifact for the applications.dataSafety declaration (ADR-0014).
Package datasafety owns the OFFLINE structural validation of an app's Data Safety CSV — the canonical on-disk artifact for the applications.dataSafety declaration (ADR-0014).
config
Package config owns gplay's cascading configuration model.
Package config owns gplay's cascading configuration model.
discovery
Package discovery fetches, normalizes, and derives an offline snapshot of a Google API Discovery document (see issue #52).
Package discovery fetches, normalizes, and derives an offline snapshot of a Google API Discovery document (see issue #52).
discovery/cmd/discovery-update command
Command discovery-update regenerates the offline Discovery snapshots under docs/discovery/ (issue #52).
Command discovery-update regenerates the offline Discovery snapshots under docs/discovery/ (issue #52).
discovery/cmd/schema-index-update command
Command schema-index-update derives the embedded Schema index (internal/schemaindex/schema_index.json) from the committed Discovery snapshots under docs/discovery/ (issue #200).
Command schema-index-update derives the embedded Schema index (internal/schemaindex/schema_index.json) from the committed Discovery snapshots under docs/discovery/ (issue #200).
editpin
Package editpin persists the open *explicit* Edit ID for a package to .gplay/edit-<package>.json — the file `gplay edits begin` writes and every write command consults to reuse an open Edit instead of opening its own (docs/DESIGN.md §4 / CONTEXT.md "Edit").
Package editpin persists the open *explicit* Edit ID for a package to .gplay/edit-<package>.json — the file `gplay edits begin` writes and every write command consults to reuse an open Edit instead of opening its own (docs/DESIGN.md §4 / CONTEXT.md "Edit").
exit
Package exit maps typed errors to the semantic exit codes documented in docs/DESIGN.md §9.
Package exit maps typed errors to the semantic exit codes documented in docs/DESIGN.md §9.
kernel
Package kernel owns the per-invocation boot sequence shared by every gplay command: build the Boot once in cmd/gplay/main.go, the cobra layer captures the request-shaped Inputs, and kernel.Run resolves Format and the Account *name* once before handing a populated RunContext to the command's business function.
Package kernel owns the per-invocation boot sequence shared by every gplay command: build the Boot once in cmd/gplay/main.go, the cobra layer captures the request-shaped Inputs, and kernel.Run resolves Format and the Account *name* once before handing a populated RunContext to the command's business function.
metadata/diff
Package diff is the pure reconciliation engine at the heart of `gplay metadata apply`.
Package diff is the pure reconciliation engine at the heart of `gplay metadata apply`.
metadata/imagediff
Package imagediff is the Store-image reconciliation engine: the pure comparison of a local image sequence (files sorted by name, by sha256) against the live sequence (images.list, which carries a sha256 per image but no order field — display order is list order).
Package imagediff is the Store-image reconciliation engine: the pure comparison of a local image sequence (files sorted by name, by sha256) against the live sequence (images.list, which carries a sha256 per image but no order field — display order is list order).
metadata/imageorchestrator
Package imageorchestrator is the side-effecting glue behind `gplay metadata images apply`.
Package imageorchestrator is the side-effecting glue behind `gplay metadata images apply`.
metadata/imagetree
Package imagetree is the filesystem codec for the Store-image side of the Metadata tree: the pure, I/O-only translation between an on-disk `<dir>/<locale>/images/...` layout and the in-memory Tree.
Package imagetree is the filesystem codec for the Store-image side of the Metadata tree: the pure, I/O-only translation between an on-disk `<dir>/<locale>/images/...` layout and the in-memory Tree.
metadata/imagevalidate
Package imagevalidate is the offline Store-image rule engine: the image analog of internal/metadata/validate's char-limit check.
Package imagevalidate is the offline Store-image rule engine: the image analog of internal/metadata/validate's char-limit check.
metadata/listing
Package listing is the leaf model shared by every metadata module: the codec (internal/metadata/tree), the validator (internal/metadata/validate), and the diff engine (internal/metadata/diff).
Package listing is the leaf model shared by every metadata module: the codec (internal/metadata/tree), the validator (internal/metadata/validate), and the diff engine (internal/metadata/diff).
metadata/locale
Package locale is the embedded registry of Google Play store-listing locale codes gplay's `metadata validate` lints against.
Package locale is the embedded registry of Google Play store-listing locale codes gplay's `metadata validate` lints against.
metadata/orchestrator
Package orchestrator is the side-effecting glue behind `gplay metadata apply`.
Package orchestrator is the side-effecting glue behind `gplay metadata apply`.
metadata/tree
Package tree is the filesystem codec for the Metadata tree: the pure, I/O-only translation between an on-disk `<dir>/<locale>/<field>.txt` layout and the typed listing.Tree model.
Package tree is the filesystem codec for the Metadata tree: the pure, I/O-only translation between an on-disk `<dir>/<locale>/<field>.txt` layout and the typed listing.Tree model.
metadata/validate
Package validate is the pure, offline linter for a Metadata tree.
Package validate is the pure, offline linter for a Metadata tree.
output
Package output owns Format selection and rendering dispatch for gplay commands.
Package output owns Format selection and rendering dispatch for gplay commands.
output/outputtest
Package outputtest is the test-only seam for internal/output.
Package outputtest is the test-only seam for internal/output.
play/accessibleapps
Package accessibleapps talks to the Play Developer Reporting API's `apps.search` method (`playdeveloperreporting.apps.search`) — the server-authoritative enumeration of the Apps the calling credential can access, backing `gplay apps accessible list` (#347, ADR-0039).
Package accessibleapps talks to the Play Developer Reporting API's `apps.search` method (`playdeveloperreporting.apps.search`) — the server-authoritative enumeration of the Apps the calling credential can access, backing `gplay apps accessible list` (#347, ADR-0039).
play/api
Package api owns the shared low-level concerns of every internal/play/* module: the canonical androidpublisher base URLs, the per-response body-size caps, and the HTTP status → gplay exit-code mapping plus the API error-envelope parser.
Package api owns the shared low-level concerns of every internal/play/* module: the canonical androidpublisher base URLs, the per-response body-size caps, and the HTTP status → gplay exit-code mapping plus the API error-envelope parser.
play/apks
Package apks uploads a legacy APK to a specific Edit via the edits.apks.upload endpoint.
Package apks uploads a legacy APK to a specific Edit via the edits.apks.upload endpoint.
play/bundles
Package bundles uploads an AAB to a specific Edit via the edits.bundles.upload endpoint.
Package bundles uploads an AAB to a specific Edit via the edits.bundles.upload endpoint.
play/countryavailability
Package countryavailability reads the Country availability of a track via edits.countryavailability.get, inside an Edit the caller has already opened.
Package countryavailability reads the Country availability of a track via edits.countryavailability.get, inside an Edit the caller has already opened.
play/customapps
Package customapps creates a private, organisation-scoped app through managed Google Play via playcustomapp.accounts.customApps.create — the one Developer API path that creates an app *record* (public apps are Console-only).
Package customapps creates a private, organisation-scoped app through managed Google Play via playcustomapp.accounts.customApps.create — the one Developer API path that creates an app *record* (public apps are Console-only).
play/datasafety
Package datasafety performs the write-only Data Safety declaration POST.
Package datasafety performs the write-only Data Safety declaration POST.
play/details
Package details reads app-level metadata.
Package details reads app-level metadata.
play/devicetiers
Package devicetiers performs the hand-rolled HTTP calls for an app's Device Tier Configs (the applications.deviceTierConfigs resource; ADR-0007 raw HTTP).
Package devicetiers performs the hand-rolled HTTP calls for an app's Device Tier Configs (the applications.deviceTierConfigs resource; ADR-0007 raw HTTP).
play/edits
Package edits owns the Google Play Edit transactional lifecycle.
Package edits owns the Google Play Edit transactional lifecycle.
play/expansionfiles
Package expansionfiles performs the hand-rolled HTTP calls for the legacy OBB expansion-file surface (edits.expansionfiles; ADR-0007 raw HTTP).
Package expansionfiles performs the hand-rolled HTTP calls for the legacy OBB expansion-file surface (edits.expansionfiles; ADR-0007 raw HTTP).
play/games
Package games performs the hand-rolled HTTP calls for a game's Play Games Services configuration — the achievementConfigurations and leaderboardConfigurations resources of the gamesConfiguration service (ADR-0007 raw HTTP, ADR-0033).
Package games performs the hand-rolled HTTP calls for a game's Play Games Services configuration — the achievementConfigurations and leaderboardConfigurations resources of the gamesConfiguration service (ADR-0007 raw HTTP, ADR-0033).
play/gcs
Package gcs is gplay's minimal, resource-agnostic client for the Google Cloud Storage JSON API.
Package gcs is gplay's minimal, resource-agnostic client for the Google Cloud Storage JSON API.
play/generatedapks
Package generatedapks reads (and, via Download, fetches) the APKs Google Play generates and signs from an uploaded App Bundle, via the generatedapks.list / generatedapks.download endpoints.
Package generatedapks reads (and, via Download, fetches) the APKs Google Play generates and signs from an uploaded App Bundle, via the generatedapks.list / generatedapks.download endpoints.
play/images
Package images reads and writes the per-locale Store images of a Google Play app within an open Edit (edits.images).
Package images reads and writes the per-locale Store images of a Google Play app within an open Edit (edits.images).
play/listings
Package listings reads and writes the per-locale Store front Listings of a Google Play app within an open Edit.
Package listings reads and writes the per-locale Store front Listings of a Google Play app within an open Edit.
play/mappings
Package mappings uploads a ProGuard/R8 deobfuscation file (a Mapping, per CONTEXT.md) to a specific Edit via the Android Publisher edits.deobfuscationfiles.upload endpoint.
Package mappings uploads a ProGuard/R8 deobfuscation file (a Mapping, per CONTEXT.md) to a specific Edit via the Android Publisher edits.deobfuscationfiles.upload endpoint.
play/orders
Package orders reads Google Play Order resources via the Android Publisher orders endpoints.
Package orders reads Google Play Order resources via the Android Publisher orders endpoints.
play/recovery
Package recovery performs the hand-rolled HTTP calls for App Recovery (the apprecovery resource; ADR-0007 raw HTTP).
Package recovery performs the hand-rolled HTTP calls for App Recovery (the apprecovery resource; ADR-0007 raw HTTP).
play/reviews
Package reviews reads the user reviews of a Google Play app via the reviews.list endpoint.
Package reviews reads the user reviews of a Google Play app via the reviews.list endpoint.
play/sharing
Package sharing uploads an APK or AAB to Google Play Internal App Sharing via the internalappsharingartifacts.uploadapk / uploadbundle endpoints and returns the resulting shareable artifact.
Package sharing uploads an APK or AAB to Google Play Internal App Sharing via the internalappsharingartifacts.uploadapk / uploadbundle endpoints and returns the resulting shareable artifact.
play/team
Package team performs the hand-rolled HTTP calls for the Google Play Developer account's people/permissions surface — `users.*` and `grants.*` under developers/{developerId} (ADR-0007: raw HTTP, not the generated SDK).
Package team performs the hand-rolled HTTP calls for the Google Play Developer account's people/permissions surface — `users.*` and `grants.*` under developers/{developerId} (ADR-0007: raw HTTP, not the generated SDK).
play/testers
Package testers reads and replaces the authorized audience (Google Groups) of a track via edits.testers.get / edits.testers.update, inside an open Edit.
Package testers reads and replaces the authorized audience (Google Groups) of a track via edits.testers.get / edits.testers.update, inside an open Edit.
play/tracks
Package tracks reads and updates the release configuration of Google Play tracks within an open Edit.
Package tracks reads and updates the release configuration of Google Play tracks within an open Edit.
play/vitals
Package vitals talks to the Play Developer Reporting API's read-only metric sets (crashes/ANR and the other post-launch quality signals, #49).
Package vitals talks to the Play Developer Reporting API's read-only metric sets (crashes/ANR and the other post-launch quality signals, #49).
releases/notes
Package notes loads release notes from CLI input — either a single text string (assigned to the app's default language) or a directory of per-locale files (`<locale>.txt`) with an optional `default.txt` fallback for the default language.
Package notes loads release notes from CLI input — either a single text string (assigned to the app's default language) or a directory of per-locale files (`<locale>.txt`) with an optional `default.txt` fallback for the default language.
releases/orchestrator
Package orchestrator — UploadMapping owns the standalone mapping-upload choreography behind `gplay releases mappings upload`: open an Edit, POST the deobfuscation file keyed by an explicit versionCode, and commit.
Package orchestrator — UploadMapping owns the standalone mapping-upload choreography behind `gplay releases mappings upload`: open an Edit, POST the deobfuscation file keyed by an explicit versionCode, and commit.
reviews/batch
Package batch parses the TSV stream consumed by `gplay reviews reply --batch`: one `<review-id>\t<reply text>` record per line.
Package batch parses the TSV stream consumed by `gplay reviews reply --batch`: one `<review-id>\t<reply text>` record per line.
reviews/filter
Package filter implements the client-side `--stars` selector for `gplay reviews list`.
Package filter implements the client-side `--stars` selector for `gplay reviews list`.
reviews/history
Package history parses the monthly reviews CSV report Google deposits in the developer's reporting bucket — the full-history channel behind `gplay reviews history` beyond reviews.list's 7-day window (#94 / ADR-0037).
Package history parses the monthly reviews CSV report Google deposits in the developer's reporting bucket — the full-history channel behind `gplay reviews history` beyond reviews.list's 7-day window (#94 / ADR-0037).
schemaindex
Package schemaindex defines the normalized, embeddable projection of a Google API Discovery document — the Schema index (see CONTEXT.md and ADR-0022) that `gplay schema` queries offline.
Package schemaindex defines the normalized, embeddable projection of a Google API Discovery document — the Schema index (see CONTEXT.md and ADR-0022) that `gplay schema` queries offline.
team/addressing
Package addressing resolves the Developer account id every `gplay team` command is keyed by (ADR-0015).
Package addressing resolves the Developer account id every `gplay team` command is keyed by (ADR-0015).
team/vocab
Package vocab is gplay's offline permission vocabulary for `gplay team`: the curated aliases, the frozen role bundles, the raw-`CAN_*` escape hatch, and the admin-conferring detection.
Package vocab is gplay's offline permission vocabulary for `gplay team`: the curated aliases, the frozen role bundles, the raw-`CAN_*` escape hatch, and the admin-conferring detection.
teamtest
Package teamtest is the shared test scaffolding for the `gplay team` command e2e suites.
Package teamtest is the shared test scaffolding for the `gplay team` command e2e suites.
transport
Package transport exposes the HTTP middleware gplay layers on top of the oauth2 client.
Package transport exposes the HTTP middleware gplay layers on top of the oauth2 client.
walkup
Package walkup walks up from a starting directory looking for a file, mirroring git's `.git/` discovery.
Package walkup walks up from a starting directory looking for a file, mirroring git's `.git/` discovery.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL