storebound/docs/api.md
CRT 710c3a53d0 README, docs and site: one story (the whole job, no avoidable rejections, the desktop app, your AI, install)
README is a short front page (about 120 lines) with one real visual per section; every former section moved
unchanged into docs/*.md with a docs/README.md index (journey, rejections, getting-started, commands, growth,
studios, store-art, listing-languages, api, skills, mcp, safety, faq, project). The site tells the same story on one
page: the teaser in the hero, real CLI output as text, the desktop app as a section with light/dark captures of eight
screens and the per-system downloads (desktop/latest.json); /desktop/ redirects to /#download. New capture tools:
tools/site-desktop-shots.ts (fixture-mode desktop frames) and tools/site-term-shots.ts (real CLI output as text and
WebP). tests/docs-links.test.ts checks README, docs and site links resolve.
2026-10-13 03:29:59 +08:00

33 lines
2.2 KiB
Markdown

# Every endpoint
The commands above cover the journey. For anything else, `storebound api` calls **every operation** of the App Store
Connect API (1303 operations, OpenAPI 4.5.1) and of the Google Play Developer APIs (Android Publisher v3: 145,
Play Developer Reporting v1beta1: 25), generated from the official specs pinned in `specs/` (source URLs, dates and
SHA-256 in `specs/SOURCES.json`). Same credentials, same retries on 429 / 5xx (Retry-After honoured), JSON:API
documents on the Apple side.
```sh
storebound api list --store apple --search "customerReviews" # find an operation
storebound api apple apps_getCollection --param 'filter[bundleId]=com.example.app'
storebound api apple GET /v1/apps/123/appStoreVersions --all-pages # METHOD path works too
storebound api play reviews.list --param packageName=com.example.app --all-pages --json
storebound api play POST /v1beta1/apps/com.example.app/crashRateMetricSet:query --body query.json
storebound api coverage # counts per API and resource, what commands wrap
```
- **GET runs right away** (so do the Reporting API `:query` calls and other POSTs that only read).
- **Every write is a dry run by default**: it prints the exact request (method, URL, body; the credential is never
shown) and is only sent with `--yes` from an interactive terminal.
- **Owner-only operations** (submit, release, delete, cancel, refunds, prices, testers and users, review replies,
product page tests, Play `edits.commit`, app signing; the list is in `cli/api/gate.ts`) also ask you to type the
operation id before anything is sent.
- **Agents read, never write**: MCP has one tool for this, `api_get` (GET operations only). Under MCP or the desktop
app no write goes out, whatever the flags.
- Small on purpose: one table row per operation plus generic helpers (`cli/api/`), typed from the rows (path and
required parameters, JSON:API request and response shapes). `bun tools/gen-api.ts` regenerates the tables and
[docs/api-coverage.md](api-coverage.md) (every operation, its gate and the commands that already call it);
CI fails when they are stale.
---
[All docs](README.md) · [README](../README.md)