accounts_list
List every App Store Connect account registered locally. Returns names, key ids, issuer ids, key-file paths, and descriptions. Never returns key material.
Takes no parameters.

io.github.devinwangPublished by GitHub account devinwangv0.5.0Updated Nov 4, 2026
MCP server for Apple's App Store Connect API: 1316 tools generated from the official OpenAPI spec.
Local MCP server exposing Apple's App Store Connect API as 1316 tools, so an assistant can manage apps, TestFlight, IAP, reviews, analytics and Xcode Cloud.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
The complete Model Context Protocol (MCP) server for Apple's App Store Connect API. 1316 tools. 100% coverage of every non-deprecated operation in Apple's official OpenAPI spec — TestFlight, Xcode Cloud, Game Center, App Clips, in-app purchases, subscriptions, review submissions, analytics, provisioning, and everything else Apple exposes. Works with Claude, Cursor, VS Code Copilot, Codex CLI, Gemini CLI, Windsurf, or any MCP client.
[npm version] [npm downloads] [CI] [License: MIT] [Node] [Tools: 1316] [Spec: 4.3] [MCP] [TypeScript]
See also: google-play-developer-mcp — the same philosophy for the Google Play Console.
asc-mcp (zelentsov-dev)App Store Connect is huge. Apple's own OpenAPI spec currently lists 1303 operations across 203 resource groups — TestFlight, Xcode Cloud, Game Center, App Clips, in-app purchases, subscriptions, offer codes, review submissions, alternative distribution (EU DMA), analytics, metrics, privacy manifests, provisioning, users… the list goes on.
Every community MCP covers a slice. None covers everything.
app-store-connect-mcp does.
If you drive App Store Connect with an AI assistant — submission automation, TestFlight management, IAP / subscription catalog, review triage, analytics, or Xcode Cloud orchestration — this gives the assistant the full toolbox in one install.
1316 tools total (as of spec v4.5.1):
accounts_* — local multi-account registry (add / list / switch / remove / update / current)auth_* — auth_status (readiness) and auth_revoke_cacheasset_upload_file — step 2 of the 3-step asset upload protocol (screenshots, previews, review attachments, IAP review screenshots, App Clip header images, Game Center images, routing app coverages)sales_reports_download — downloads and un-gzips sales reports, returns parsed TSVfinance_reports_download — same for finance reportsanalytics_report_instance_wait — poll until a report is COMPLETED/FAILEDci_build_run_wait — poll an Xcode Cloud build run to completionRun auth_status, then apps_get_collection to verify end-to-end.
Install from npm:
Or run without installing:
About the package name. The package on npm is
apple-app-store-connect-mcp. After install, the command on your$PATHisapp-store-connect-mcp(the bin name) — that's what your MCP client config below points at.
Then add to your MCP client config (example, Claude Code):
Finally, register your App Store Connect API key (details below):
AuthKey_<KEYID>.p8 file. You only get this download once. Store it outside any git repo, for example at ~/.config/app-store-connect-mcp/AuthKey_AB12CD34EF.p8 with chmod 600.Launch any MCP client that has the server configured, then call:
Should return { source: "accounts", tokenAcquired: true, expiresAt: ... }.
Lists the apps the key can see.
All subsequent calls target the currently-switched account.
ASC_ACCOUNT)currentAccount is a single global value in accounts.json, shared by every MCP client on
the machine. If you work on more than one App Store Connect account, that is a footgun: an
accounts_switch in one project silently retargets every other project, and an assistant in
project A can end up writing to account B's apps.
Pin the account per server process instead. Set ASC_ACCOUNT in the MCP client config:
With a pin in effect:
currentAccount happens to be.accounts_switch to any other account fails loudly instead of silently retargeting.accounts_remove refuses to delete the pinned account.auth_status and accounts_current report pinnedTo, so it is always visible which account
a session is on.If ASC_ACCOUNT names an account that isn't registered, calls fail with an explicit error rather
than falling back to some other account.
Give each project its own pin — then no project depends on the shared global at all.
For compatibility with older setups (e.g. zelentsov-dev/asc-mcp), the server also accepts:
If no account is registered via accounts_add, the server falls back to these env vars. accounts_* tools always take precedence.
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
Or edit ~/.claude.json:
If you work on more than one App Store Connect account, put the server in each project's
.mcp.json instead and pin it — see Pinning one account per project:
Settings → MCP → Add new MCP server:
.vscode/mcp.json:
Any MCP-compliant client accepts the same command entry — point it at the globally installed app-store-connect-mcp binary, or at node /path/to/dist/index.js when running from source.
Then in your MCP client config:
Returns parsed rows. Add parse: false to get raw TSV.
asc-mcp (zelentsov-dev)This server replaces github.com/zelentsov-dev/asc-mcp. Key differences:
zelentsov-dev/asc-mcp uses simplified names like apps_search, reviews_list, app_versions_submit_for_review. This server uses Apple's official operationId snake-cased — apps_get_collection, customer_reviews_get_collection, review_submissions_create_instance. There's no auto-translation: update any prompts or scripts that assumed the old names.ASC_KEY_ID, ASC_ISSUER_ID, ASC_PRIVATE_KEY_PATH) still work, so you don't need to move the .p8 to migrate. You'll get a one-time stderr warning recommending you register via accounts_add for multi-account support.company_* → accounts_*. Rename mental model: a "company" in the old server is an "account" here.A comprehensive name-by-name mapping is included in docs/MIGRATION.md.
This repo ships with zero credentials. You bring an App Store Connect API .p8; the server records only its path.
.gitignore blocks*.p8, AuthKey_*, AuthKey_*.p8*.pem, *.p12, *.pfx, *.key, id_rsa*accounts.json, .app-store-connect-mcp/credentials/, keys/, secrets/.env, .env.* (keeps .env.example).p8 outside any git repo on your machine.Admin lets this MCP do anything including deleting store metadata. Restrict as appropriate.accounts_update --keyFile <newPath>.auth_status returns only the key id, issuer id, a boolean, and the JWT expiry timestamp. It never returns the JWT or the .p8 content.dist/.Apple logs every API call against your key id. If you ever suspect misuse, open App Store Connect → Users and Access → Integrations and revoke the key; any outstanding JWTs signed with it stop working immediately.
spec/app-store-connect-openapi.json). When Apple ships a new version, npm run spec:download && npm run codegen && npm run build is all it takes to update.operationId values converted to snake_case. This means the MCP names match the official REST reference, so when an LLM reads Apple's docs it can pick the right tool without translation.filter[name], fields[apps], limit[appStoreVersions]). Request bodies are z.record(z.unknown()) with a description pointing at the OpenAPI component schema — ASC validates them server-side and our error translator surfaces mistakes clearly. Generating full zod trees for every JSON:API envelope would balloon the server by 10× and add negligible value.401 becomes "JWT rejected — rotate or check clock skew", 403 becomes "key isn't authorized for this endpoint", 422 surfaces the exact source.pointer from the ASC response, 429 explains the per-team quota, 5xx points at https://developer.apple.com/system-status/.PRs welcome. Before you submit:
npm run typecheck + npm run build pass on Node 18 / 20 / 22 (CI also runs this)..p8, a real keyId, a real issuerId, or a real JWT in an issue, PR, fixture, or example.npm run spec:downloadnpm run codegen — regenerates src/tools/generated/ and spec/coverage-report.txtnpm run buildspec/coverage-report.txt diff — a delta of 10+ tools or a new top-level tag should get a CHANGELOG note.src/tools/overrides.ts and must have names that don't collide with any generated name.[DEPRECATED] prefix..gitignore, .p8 content never cached in process memory, in-memory-only JWT cache, universal output redaction.~/.app-store-connect-mcp/accounts.json (path storage only).ASC_KEY_ID / ASC_ISSUER_ID / ASC_PRIVATE_KEY_PATH env vars (drop-in replacement for zelentsov-dev/asc-mcp setups).npm run codegen.MIT — see LICENSE.
Source: README.md at commit 00a92f9
List every App Store Connect account registered locally. Returns names, key ids, issuer ids, key-file paths, and descriptions. Never returns key material.
Takes no parameters.
Show which account is currently active. All subsequent API calls use this account's credentials. If `pinnedTo` is set, this server was pinned to that account via ASC_ACCOUNT and cannot be switched.
Takes no parameters.
Register a new App Store Connect account. Provide the Key ID, Issuer ID, and an absolute path to the `.p8` file. The key file stays on disk — the MCP records only its path.
namerequiredkeyIdrequiredscopekeyFilerequiredissuerIdrequireddescriptionRemove an account from the local registry. Does NOT delete the `.p8` file on disk.
namerequiredMake an existing registered account the active one.
namerequiredChange one or more fields of an existing account. Provide only the fields you want to update.
namerequiredkeyIdscopekeyFileissuerIddescriptionVerify that the active account can acquire an App Store Connect JWT. Returns identifiers and a boolean readiness flag. Never returns the JWT itself or the `.p8` contents.
Takes no parameters.
Drop the in-memory JWT cache so the next API call re-signs. Useful after rotating the `.p8`.
Takes no parameters.
POST /v1/accessibilityDeclarations (POST /v1/accessibilityDeclarations) Body shape: see OpenAPI components.schemas.AccessibilityDeclarationCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/accessibilityDeclarations/{id} (GET /v1/accessibilityDeclarations/{id})
idrequiredfields_accessibilityDeclarationsPATCH /v1/accessibilityDeclarations/{id} (PATCH /v1/accessibilityDeclarations/{id}) Body shape: see OpenAPI components.schemas.AccessibilityDeclarationUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredDELETE /v1/accessibilityDeclarations/{id} (DELETE /v1/accessibilityDeclarations/{id})
idrequiredGET /v1/actors (GET /v1/actors)
limitfilter_idfields_actorsGET /v1/actors/{id} (GET /v1/actors/{id})
idrequiredfields_actorsPATCH /v1/ageRatingDeclarations/{id} (PATCH /v1/ageRatingDeclarations/{id}) Body shape: see OpenAPI components.schemas.AgeRatingDeclarationUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredGET /v1/alternativeDistributionDomains (GET /v1/alternativeDistributionDomains)
limitfields_alternativeDistributionDomainsPOST /v1/alternativeDistributionDomains (POST /v1/alternativeDistributionDomains) Body shape: see OpenAPI components.schemas.AlternativeDistributionDomainCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/alternativeDistributionDomains/{id} (GET /v1/alternativeDistributionDomains/{id})
idrequiredfields_alternativeDistributionDomainsDELETE /v1/alternativeDistributionDomains/{id} (DELETE /v1/alternativeDistributionDomains/{id})
idrequiredGET /v1/alternativeDistributionKeys (GET /v1/alternativeDistributionKeys)
limitexists_appfields_alternativeDistributionKeysPOST /v1/alternativeDistributionKeys (POST /v1/alternativeDistributionKeys) Body shape: see OpenAPI components.schemas.AlternativeDistributionKeyCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/alternativeDistributionKeys/{id} (GET /v1/alternativeDistributionKeys/{id})
idrequiredfields_alternativeDistributionKeysDELETE /v1/alternativeDistributionKeys/{id} (DELETE /v1/alternativeDistributionKeys/{id})
idrequiredGET /v1/alternativeDistributionPackageDeltas/{id} (GET /v1/alternativeDistributionPackageDeltas/{id})
idrequiredfields_alternativeDistributionPackageDeltasGET /v1/alternativeDistributionPackageVariants/{id} (GET /v1/alternativeDistributionPackageVariants/{id})
idrequiredfields_alternativeDistributionPackageVariantsGET /v1/alternativeDistributionPackageVersions/{id} (GET /v1/alternativeDistributionPackageVersions/{id})
idrequiredincludelimit_deltaslimit_variantsfields_alternativeDistributionPackagesfields_alternativeDistributionPackageDeltasfields_alternativeDistributionPackageVariantsfields_alternativeDistributionPackageVersionsGET /v1/alternativeDistributionPackageVersions/{id}/relationships/deltas (GET /v1/alternativeDistributionPackageVersions/{id}/relationships/deltas)
idrequiredlimitGET /v1/alternativeDistributionPackageVersions/{id}/deltas (GET /v1/alternativeDistributionPackageVersions/{id}/deltas)
idrequiredlimitfields_alternativeDistributionPackageDeltasGET /v1/alternativeDistributionPackageVersions/{id}/relationships/variants (GET /v1/alternativeDistributionPackageVersions/{id}/relationships/variants)
idrequiredlimitGET /v1/alternativeDistributionPackageVersions/{id}/variants (GET /v1/alternativeDistributionPackageVersions/{id}/variants)
idrequiredlimitfields_alternativeDistributionPackageVariantsPOST /v1/alternativeDistributionPackages (POST /v1/alternativeDistributionPackages) Body shape: see OpenAPI components.schemas.AlternativeDistributionPackageCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/alternativeDistributionPackages/{id} (GET /v1/alternativeDistributionPackages/{id})
idrequiredincludelimit_versionsfields_alternativeDistributionPackagesfields_alternativeDistributionPackageVersionsGET /v1/alternativeDistributionPackages/{id}/relationships/versions (GET /v1/alternativeDistributionPackages/{id}/relationships/versions)
idrequiredlimitGET /v1/alternativeDistributionPackages/{id}/versions (GET /v1/alternativeDistributionPackages/{id}/versions)
idrequiredlimitincludefilter_statelimit_deltaslimit_variantsfields_alternativeDistributionPackagesfields_alternativeDistributionPackageDeltasfields_alternativeDistributionPackageVariantsfields_alternativeDistributionPackageVersionsGET /v1/analyticsReportInstances/{id} (GET /v1/analyticsReportInstances/{id})
idrequiredfields_analyticsReportInstancesGET /v1/analyticsReportInstances/{id}/relationships/segments (GET /v1/analyticsReportInstances/{id}/relationships/segments)
idrequiredlimitGET /v1/analyticsReportInstances/{id}/segments (GET /v1/analyticsReportInstances/{id}/segments)
idrequiredlimitfields_analyticsReportSegmentsPOST /v1/analyticsReportRequests (POST /v1/analyticsReportRequests) Body shape: see OpenAPI components.schemas.AnalyticsReportRequestCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/analyticsReportRequests/{id} (GET /v1/analyticsReportRequests/{id})
idrequiredincludelimit_reportsfields_analyticsReportsfields_analyticsReportRequestsDELETE /v1/analyticsReportRequests/{id} (DELETE /v1/analyticsReportRequests/{id})
idrequiredGET /v1/analyticsReportRequests/{id}/relationships/reports (GET /v1/analyticsReportRequests/{id}/relationships/reports)
idrequiredlimitGET /v1/analyticsReportRequests/{id}/reports (GET /v1/analyticsReportRequests/{id}/reports)
idrequiredlimitfilter_namefilter_categoryfields_analyticsReportsGET /v1/analyticsReportSegments/{id} (GET /v1/analyticsReportSegments/{id})
idrequiredfields_analyticsReportSegmentsGET /v1/analyticsReports/{id} (GET /v1/analyticsReports/{id})
idrequiredfields_analyticsReportsGET /v1/analyticsReports/{id}/relationships/instances (GET /v1/analyticsReports/{id}/relationships/instances)
idrequiredlimitGET /v1/analyticsReports/{id}/instances (GET /v1/analyticsReports/{id}/instances)
idrequiredlimitfilter_granularityfilter_processingDatefields_analyticsReportInstancesPOST /v1/androidToIosAppMappingDetails (POST /v1/androidToIosAppMappingDetails) Body shape: see OpenAPI components.schemas.AndroidToIosAppMappingDetailCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/androidToIosAppMappingDetails/{id} (GET /v1/androidToIosAppMappingDetails/{id})
idrequiredfields_androidToIosAppMappingDetailsPATCH /v1/androidToIosAppMappingDetails/{id} (PATCH /v1/androidToIosAppMappingDetails/{id}) Body shape: see OpenAPI components.schemas.AndroidToIosAppMappingDetailUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredDELETE /v1/androidToIosAppMappingDetails/{id} (DELETE /v1/androidToIosAppMappingDetails/{id})
idrequiredGET /v1/appAssetLibraries/{id} (GET /v1/appAssetLibraries/{id})
idrequiredfields_appAssetLibrariesGET /v1/appAssetLibraries/{id}/relationships/images (GET /v1/appAssetLibraries/{id}/relationships/images)
idrequiredlimitGET /v1/appAssetLibraries/{id}/images (GET /v1/appAssetLibraries/{id}/images)
idrequiredsortlimitincludefilter_idfilter_statefilter_specIdfilter_categorylimit_placementsfilter_referenceNamefields_appAssetLibraryImagesfields_appAssetLibraryPlacementsGET /v1/appAssetLibraries/{id}/relationships/videos (GET /v1/appAssetLibraries/{id}/relationships/videos)
idrequiredlimitGET /v1/appAssetLibraries/{id}/videos (GET /v1/appAssetLibraries/{id}/videos)
idrequiredsortlimitincludefilter_idfilter_statefilter_specIdfilter_categorylimit_placementsfilter_referenceNamefields_appAssetLibraryVideosfields_appAssetLibraryPlacementsPOST /v1/appAssetLibraryImages (POST /v1/appAssetLibraryImages) Body shape: see OpenAPI components.schemas.AppAssetLibraryImageCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/appAssetLibraryImages/{id} (GET /v1/appAssetLibraryImages/{id})
idrequiredincludelimit_placementsfields_appAssetLibraryImagesfields_appAssetLibraryPlacementsPATCH /v1/appAssetLibraryImages/{id} (PATCH /v1/appAssetLibraryImages/{id}) Body shape: see OpenAPI components.schemas.AppAssetLibraryImageUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredDELETE /v1/appAssetLibraryImages/{id} (DELETE /v1/appAssetLibraryImages/{id})
idrequiredGET /v1/appAssetLibraryImages/{id}/relationships/placements (GET /v1/appAssetLibraryImages/{id}/relationships/placements)
idrequiredlimitGET /v1/appAssetLibraryImages/{id}/placements (GET /v1/appAssetLibraryImages/{id}/placements)
idrequiredsortlimitincludefilter_idfilter_statefilter_videofilter_placementTypefilter_placementGroupfilter_appEventLocalizationfields_appAssetLibraryImagesfields_appAssetLibraryVideos+8 morePOST /v1/appAssetLibraryPlacementOrderingRequests (POST /v1/appAssetLibraryPlacementOrderingRequests) Body shape: see OpenAPI components.schemas.AppAssetLibraryPlacementOrderingRequestCreateRequest for the full JSON:API envelope.
bodyrequiredincludelimit_orderedPlacementsfields_appAssetLibraryPlacementsfields_appAssetLibraryPlacementOrderingRequestsPOST /v1/appAssetLibraryPlacements (POST /v1/appAssetLibraryPlacements) Body shape: see OpenAPI components.schemas.AppAssetLibraryPlacementCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/appAssetLibraryPlacements/{id} (GET /v1/appAssetLibraryPlacements/{id})
idrequiredincludefields_appAssetLibraryImagesfields_appAssetLibraryVideosfields_appEventLocalizationsfields_appAssetLibraryPlacementsfields_appStoreVersionLocalizationsfields_appCustomProductPageLocalizationsfields_appStoreVersionExperimentTreatmentLocalizationsDELETE /v1/appAssetLibraryPlacements/{id} (DELETE /v1/appAssetLibraryPlacements/{id})
idrequiredGET /v1/appAssetLibraryRefData (GET /v1/appAssetLibraryRefData)
filter_specsfilter_featuresfilter_placementTypesfields_appAssetLibraryRefDatafilter_placementProfileGroupsGET /v1/appAssetLibraryRefData/{id} (GET /v1/appAssetLibraryRefData/{id})
idrequiredfields_appAssetLibraryRefDataPOST /v1/appAssetLibraryVideos (POST /v1/appAssetLibraryVideos) Body shape: see OpenAPI components.schemas.AppAssetLibraryVideoCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/appAssetLibraryVideos/{id} (GET /v1/appAssetLibraryVideos/{id})
idrequiredincludelimit_placementsfields_appAssetLibraryVideosfields_appAssetLibraryPlacementsPATCH /v1/appAssetLibraryVideos/{id} (PATCH /v1/appAssetLibraryVideos/{id}) Body shape: see OpenAPI components.schemas.AppAssetLibraryVideoUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredDELETE /v1/appAssetLibraryVideos/{id} (DELETE /v1/appAssetLibraryVideos/{id})
idrequiredGET /v1/appAssetLibraryVideos/{id}/relationships/placements (GET /v1/appAssetLibraryVideos/{id}/relationships/placements)
idrequiredlimitGET /v1/appAssetLibraryVideos/{id}/placements (GET /v1/appAssetLibraryVideos/{id}/placements)
idrequiredsortlimitincludefilter_idfilter_imagefilter_statefilter_placementTypefilter_placementGroupfilter_appEventLocalizationfields_appAssetLibraryImagesfields_appAssetLibraryVideos+8 morePOST /v2/appAvailabilities (POST /v2/appAvailabilities) Body shape: see OpenAPI components.schemas.AppAvailabilityV2CreateRequest for the full JSON:API envelope.
bodyrequiredGET /v2/appAvailabilities/{id} (GET /v2/appAvailabilities/{id})
idrequiredincludefields_appAvailabilitieslimit_territoryAvailabilitiesfields_territoryAvailabilitiesGET /v2/appAvailabilities/{id}/relationships/territoryAvailabilities (GET /v2/appAvailabilities/{id}/relationships/territoryAvailabilities)
idrequiredlimitGET /v2/appAvailabilities/{id}/territoryAvailabilities (GET /v2/appAvailabilities/{id}/territoryAvailabilities)
idrequiredlimitincludefields_territoriesfields_territoryAvailabilitiesGET /v1/appCategories (GET /v1/appCategories)
limitincludeexists_parentfilter_platformslimit_subcategoriesfields_appCategoriesGET /v1/appCategories/{id} (GET /v1/appCategories/{id})
idrequiredincludelimit_subcategoriesfields_appCategoriesGET /v1/appCategories/{id}/relationships/parent (GET /v1/appCategories/{id}/relationships/parent)
idrequiredGET /v1/appCategories/{id}/parent (GET /v1/appCategories/{id}/parent)
idrequiredfields_appCategoriesGET /v1/appCategories/{id}/relationships/subcategories (GET /v1/appCategories/{id}/relationships/subcategories)
idrequiredlimitGET /v1/appCategories/{id}/subcategories (GET /v1/appCategories/{id}/subcategories)
idrequiredlimitfields_appCategoriesPOST /v1/appClipAdvancedExperienceImages (POST /v1/appClipAdvancedExperienceImages) Body shape: see OpenAPI components.schemas.AppClipAdvancedExperienceImageCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/appClipAdvancedExperienceImages/{id} (GET /v1/appClipAdvancedExperienceImages/{id})
idrequiredfields_appClipAdvancedExperienceImagesPATCH /v1/appClipAdvancedExperienceImages/{id} (PATCH /v1/appClipAdvancedExperienceImages/{id}) Body shape: see OpenAPI components.schemas.AppClipAdvancedExperienceImageUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredPOST /v1/appClipAdvancedExperiences (POST /v1/appClipAdvancedExperiences) Body shape: see OpenAPI components.schemas.AppClipAdvancedExperienceCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/appClipAdvancedExperiences/{id} (GET /v1/appClipAdvancedExperiences/{id})
idrequiredincludefields_appClipslimit_localizationsfields_appClipAdvancedExperiencesfields_appClipAdvancedExperienceImagesfields_appClipAdvancedExperienceLocalizationsPATCH /v1/appClipAdvancedExperiences/{id} (PATCH /v1/appClipAdvancedExperiences/{id}) Body shape: see OpenAPI components.schemas.AppClipAdvancedExperienceUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredPOST /v1/appClipAppStoreReviewDetails (POST /v1/appClipAppStoreReviewDetails) Body shape: see OpenAPI components.schemas.AppClipAppStoreReviewDetailCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/appClipAppStoreReviewDetails/{id} (GET /v1/appClipAppStoreReviewDetails/{id})
idrequiredincludefields_appClipDefaultExperiencesfields_appClipAppStoreReviewDetailsPATCH /v1/appClipAppStoreReviewDetails/{id} (PATCH /v1/appClipAppStoreReviewDetails/{id}) Body shape: see OpenAPI components.schemas.AppClipAppStoreReviewDetailUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredPOST /v1/appClipDefaultExperienceLocalizations (POST /v1/appClipDefaultExperienceLocalizations) Body shape: see OpenAPI components.schemas.AppClipDefaultExperienceLocalizationCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/appClipDefaultExperienceLocalizations/{id} (GET /v1/appClipDefaultExperienceLocalizations/{id})
idrequiredincludefields_appClipHeaderImagesfields_appClipDefaultExperiencesfields_appClipDefaultExperienceLocalizationsPATCH /v1/appClipDefaultExperienceLocalizations/{id} (PATCH /v1/appClipDefaultExperienceLocalizations/{id}) Body shape: see OpenAPI components.schemas.AppClipDefaultExperienceLocalizationUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredDELETE /v1/appClipDefaultExperienceLocalizations/{id} (DELETE /v1/appClipDefaultExperienceLocalizations/{id})
idrequiredGET /v1/appClipDefaultExperienceLocalizations/{id}/relationships/appClipHeaderImage (GET /v1/appClipDefaultExperienceLocalizations/{id}/relationships/appClipHeaderImage)
idrequiredGET /v1/appClipDefaultExperienceLocalizations/{id}/appClipHeaderImage (GET /v1/appClipDefaultExperienceLocalizations/{id}/appClipHeaderImage)
idrequiredincludefields_appClipHeaderImagesfields_appClipDefaultExperienceLocalizationsPOST /v1/appClipDefaultExperiences (POST /v1/appClipDefaultExperiences) Body shape: see OpenAPI components.schemas.AppClipDefaultExperienceCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/appClipDefaultExperiences/{id} (GET /v1/appClipDefaultExperiences/{id})
idrequiredincludefields_appClipsfields_appStoreVersionsfields_appClipDefaultExperiencesfields_appClipAppStoreReviewDetailslimit_appClipDefaultExperienceLocalizationsfields_appClipDefaultExperienceLocalizationsPATCH /v1/appClipDefaultExperiences/{id} (PATCH /v1/appClipDefaultExperiences/{id}) Body shape: see OpenAPI components.schemas.AppClipDefaultExperienceUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredDELETE /v1/appClipDefaultExperiences/{id} (DELETE /v1/appClipDefaultExperiences/{id})
idrequiredGET /v1/appClipDefaultExperiences/{id}/relationships/appClipAppStoreReviewDetail (GET /v1/appClipDefaultExperiences/{id}/relationships/appClipAppStoreReviewDetail)
idrequiredGET /v1/appClipDefaultExperiences/{id}/appClipAppStoreReviewDetail (GET /v1/appClipDefaultExperiences/{id}/appClipAppStoreReviewDetail)
idrequiredincludefields_appClipDefaultExperiencesfields_appClipAppStoreReviewDetailsGET /v1/appClipDefaultExperiences/{id}/relationships/appClipDefaultExperienceLocalizations (GET /v1/appClipDefaultExperiences/{id}/relationships/appClipDefaultExperienceLocalizations)
idrequiredlimitGET /v1/appClipDefaultExperiences/{id}/appClipDefaultExperienceLocalizations (GET /v1/appClipDefaultExperiences/{id}/appClipDefaultExperienceLocalizations)
idrequiredlimitincludefilter_localefields_appClipHeaderImagesfields_appClipDefaultExperiencesfields_appClipDefaultExperienceLocalizationsGET /v1/appClipDefaultExperiences/{id}/relationships/releaseWithAppStoreVersion (GET /v1/appClipDefaultExperiences/{id}/relationships/releaseWithAppStoreVersion)
idrequiredPATCH /v1/appClipDefaultExperiences/{id}/relationships/releaseWithAppStoreVersion (PATCH /v1/appClipDefaultExperiences/{id}/relationships/releaseWithAppStoreVersion) Body shape: see OpenAPI components.schemas.AppClipDefaultExperienceReleaseWithAppStoreVersionLinkageRequest for the full JSON:API envelope.
idrequiredbodyrequiredGET /v1/appClipDefaultExperiences/{id}/releaseWithAppStoreVersion (GET /v1/appClipDefaultExperiences/{id}/releaseWithAppStoreVersion)
idrequiredincludefields_appsfields_buildsfields_appStoreVersionsfields_routingAppCoveragesfields_appStoreReviewDetailsfields_gameCenterAppVersionsfields_appClipDefaultExperienceslimit_appStoreVersionExperimentsfields_appStoreVersionExperimentsfields_appStoreVersionSubmissions+5 morePOST /v1/appClipHeaderImages (POST /v1/appClipHeaderImages) Body shape: see OpenAPI components.schemas.AppClipHeaderImageCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/appClipHeaderImages/{id} (GET /v1/appClipHeaderImages/{id})
idrequiredincludefields_appClipHeaderImagesfields_appClipDefaultExperienceLocalizationsPATCH /v1/appClipHeaderImages/{id} (PATCH /v1/appClipHeaderImages/{id}) Body shape: see OpenAPI components.schemas.AppClipHeaderImageUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredDELETE /v1/appClipHeaderImages/{id} (DELETE /v1/appClipHeaderImages/{id})
idrequiredGET /v1/appClips/{id} (GET /v1/appClips/{id})
idrequiredincludefields_appsfields_appClipslimit_appClipDefaultExperiencesfields_appClipDefaultExperiencesGET /v1/appClips/{id}/relationships/appClipAdvancedExperiences (GET /v1/appClips/{id}/relationships/appClipAdvancedExperiences)
idrequiredlimitGET /v1/appClips/{id}/appClipAdvancedExperiences (GET /v1/appClips/{id}/appClipAdvancedExperiences)
idrequiredlimitincludefilter_actionfilter_statusfields_appClipsfilter_placeStatuslimit_localizationsfields_appClipAdvancedExperiencesfields_appClipAdvancedExperienceImagesfields_appClipAdvancedExperienceLocalizationsGET /v1/appClips/{id}/relationships/appClipDefaultExperiences (GET /v1/appClips/{id}/relationships/appClipDefaultExperiences)
idrequiredlimitGET /v1/appClips/{id}/appClipDefaultExperiences (GET /v1/appClips/{id}/appClipDefaultExperiences)
idrequiredlimitincludefields_appClipsfields_appStoreVersionsfields_appClipDefaultExperiencesexists_releaseWithAppStoreVersionfields_appClipAppStoreReviewDetailslimit_appClipDefaultExperienceLocalizationsfields_appClipDefaultExperienceLocalizationsPOST /v1/appCustomProductPageLocalizations (POST /v1/appCustomProductPageLocalizations) Body shape: see OpenAPI components.schemas.AppCustomProductPageLocalizationCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/appCustomProductPageLocalizations/{id} (GET /v1/appCustomProductPageLocalizations/{id})
idrequiredincludelimit_placementslimit_appPreviewSetslimit_searchKeywordsfields_appPreviewSetslimit_appScreenshotSetsfields_appScreenshotSetsfields_appAssetLibraryPlacementsfields_appCustomProductPageVersionsfields_appCustomProductPageLocalizationsPATCH /v1/appCustomProductPageLocalizations/{id} (PATCH /v1/appCustomProductPageLocalizations/{id}) Body shape: see OpenAPI components.schemas.AppCustomProductPageLocalizationUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredDELETE /v1/appCustomProductPageLocalizations/{id} (DELETE /v1/appCustomProductPageLocalizations/{id})
idrequiredGET /v1/appCustomProductPageLocalizations/{id}/relationships/appPreviewSets (GET /v1/appCustomProductPageLocalizations/{id}/relationships/appPreviewSets)
idrequiredlimitGET /v1/appCustomProductPageLocalizations/{id}/appPreviewSets (GET /v1/appCustomProductPageLocalizations/{id}/appPreviewSets)
idrequiredlimitincludelimit_appPreviewsfields_appPreviewsfilter_previewTypefields_appPreviewSetsfilter_appStoreVersionLocalizationfields_appStoreVersionLocalizationsfields_appCustomProductPageLocalizationsfilter_appStoreVersionExperimentTreatmentLocalizationfields_appStoreVersionExperimentTreatmentLocalizationsGET /v1/appCustomProductPageLocalizations/{id}/relationships/appScreenshotSets (GET /v1/appCustomProductPageLocalizations/{id}/relationships/appScreenshotSets)
idrequiredlimitGET /v1/appCustomProductPageLocalizations/{id}/appScreenshotSets (GET /v1/appCustomProductPageLocalizations/{id}/appScreenshotSets)
idrequiredlimitincludelimit_appScreenshotsfields_appScreenshotsfields_appScreenshotSetsfilter_screenshotDisplayTypefilter_appStoreVersionLocalizationfields_appStoreVersionLocalizationsfields_appCustomProductPageLocalizationsfilter_appStoreVersionExperimentTreatmentLocalizationfields_appStoreVersionExperimentTreatmentLocalizationsGET /v1/appCustomProductPageLocalizations/{id}/relationships/placements (GET /v1/appCustomProductPageLocalizations/{id}/relationships/placements)
idrequiredlimitGET /v1/appCustomProductPageLocalizations/{id}/placements (GET /v1/appCustomProductPageLocalizations/{id}/placements)
idrequiredsortlimitincludefilter_idfilter_imagefilter_statefilter_videofilter_placementTypefilter_placementGroupfilter_appEventLocalizationfields_appAssetLibraryImages+8 moreGET /v1/appCustomProductPageLocalizations/{id}/relationships/searchKeywords (GET /v1/appCustomProductPageLocalizations/{id}/relationships/searchKeywords)
idrequiredlimitPOST /v1/appCustomProductPageLocalizations/{id}/relationships/searchKeywords (POST /v1/appCustomProductPageLocalizations/{id}/relationships/searchKeywords) Body shape: see OpenAPI components.schemas.AppCustomProductPageLocalizationSearchKeywordsLinkagesRequest for the full JSON:API envelope.
idrequiredbodyrequiredDELETE /v1/appCustomProductPageLocalizations/{id}/relationships/searchKeywords (DELETE /v1/appCustomProductPageLocalizations/{id}/relationships/searchKeywords) Body shape: see OpenAPI components.schemas.AppCustomProductPageLocalizationSearchKeywordsLinkagesRequest for the full JSON:API envelope.
idrequiredbodyrequiredGET /v1/appCustomProductPageLocalizations/{id}/searchKeywords (GET /v1/appCustomProductPageLocalizations/{id}/searchKeywords)
idrequiredlimitfilter_localefilter_platformfields_appKeywordsPOST /v1/appCustomProductPageVersions (POST /v1/appCustomProductPageVersions) Body shape: see OpenAPI components.schemas.AppCustomProductPageVersionCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/appCustomProductPageVersions/{id} (GET /v1/appCustomProductPageVersions/{id})
idrequiredincludefields_appCustomProductPagesfields_appCustomProductPageVersionslimit_appCustomProductPageLocalizationsfields_appCustomProductPageLocalizationsPATCH /v1/appCustomProductPageVersions/{id} (PATCH /v1/appCustomProductPageVersions/{id}) Body shape: see OpenAPI components.schemas.AppCustomProductPageVersionUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredGET /v1/appCustomProductPageVersions/{id}/relationships/appCustomProductPageLocalizations (GET /v1/appCustomProductPageVersions/{id}/relationships/appCustomProductPageLocalizations)
idrequiredlimitGET /v1/appCustomProductPageVersions/{id}/appCustomProductPageLocalizations (GET /v1/appCustomProductPageVersions/{id}/appCustomProductPageLocalizations)
idrequiredlimitincludefilter_localelimit_placementsfields_appKeywordslimit_appPreviewSetslimit_searchKeywordsfields_appPreviewSetslimit_appScreenshotSetsfields_appScreenshotSetsfields_appAssetLibraryPlacements+2 morePOST /v1/appCustomProductPages (POST /v1/appCustomProductPages) Body shape: see OpenAPI components.schemas.AppCustomProductPageCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/appCustomProductPages/{id} (GET /v1/appCustomProductPages/{id})
idrequiredincludefields_appsfields_appCustomProductPageslimit_appCustomProductPageVersionsfields_appCustomProductPageVersionsPATCH /v1/appCustomProductPages/{id} (PATCH /v1/appCustomProductPages/{id}) Body shape: see OpenAPI components.schemas.AppCustomProductPageUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredDELETE /v1/appCustomProductPages/{id} (DELETE /v1/appCustomProductPages/{id})
idrequiredGET /v1/appCustomProductPages/{id}/relationships/appCustomProductPageVersions (GET /v1/appCustomProductPages/{id}/relationships/appCustomProductPageVersions)
idrequiredlimitGET /v1/appCustomProductPages/{id}/appCustomProductPageVersions (GET /v1/appCustomProductPages/{id}/appCustomProductPageVersions)
idrequiredlimitincludefilter_statefields_appCustomProductPagesfields_appCustomProductPageVersionslimit_appCustomProductPageLocalizationsfields_appCustomProductPageLocalizationsPOST /v1/appEncryptionDeclarationDocuments (POST /v1/appEncryptionDeclarationDocuments) Body shape: see OpenAPI components.schemas.AppEncryptionDeclarationDocumentCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/appEncryptionDeclarationDocuments/{id} (GET /v1/appEncryptionDeclarationDocuments/{id})
idrequiredfields_appEncryptionDeclarationDocumentsPATCH /v1/appEncryptionDeclarationDocuments/{id} (PATCH /v1/appEncryptionDeclarationDocuments/{id}) Body shape: see OpenAPI components.schemas.AppEncryptionDeclarationDocumentUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredGET /v1/appEncryptionDeclarations (GET /v1/appEncryptionDeclarations)
limitincludefilter_appfields_appslimit_buildsfields_buildsfilter_buildsfilter_platformfields_appEncryptionDeclarationsfields_appEncryptionDeclarationDocumentsPOST /v1/appEncryptionDeclarations (POST /v1/appEncryptionDeclarations) Body shape: see OpenAPI components.schemas.AppEncryptionDeclarationCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/appEncryptionDeclarations/{id} (GET /v1/appEncryptionDeclarations/{id})
idrequiredincludefields_appslimit_buildsfields_buildsfields_appEncryptionDeclarationsfields_appEncryptionDeclarationDocuments[DEPRECATED] GET /v1/appEncryptionDeclarations/{id}/relationships/app (GET /v1/appEncryptionDeclarations/{id}/relationships/app)
idrequired[DEPRECATED] GET /v1/appEncryptionDeclarations/{id}/app (GET /v1/appEncryptionDeclarations/{id}/app)
idrequiredfields_appsGET /v1/appEncryptionDeclarations/{id}/relationships/appEncryptionDeclarationDocument (GET /v1/appEncryptionDeclarations/{id}/relationships/appEncryptionDeclarationDocument)
idrequiredGET /v1/appEncryptionDeclarations/{id}/appEncryptionDeclarationDocument (GET /v1/appEncryptionDeclarations/{id}/appEncryptionDeclarationDocument)
idrequiredfields_appEncryptionDeclarationDocuments[DEPRECATED] POST /v1/appEncryptionDeclarations/{id}/relationships/builds (POST /v1/appEncryptionDeclarations/{id}/relationships/builds) Body shape: see OpenAPI components.schemas.AppEncryptionDeclarationBuildsLinkagesRequest for the full JSON:API envelope.
idrequiredbodyrequiredPOST /v1/appEventLocalizations (POST /v1/appEventLocalizations) Body shape: see OpenAPI components.schemas.AppEventLocalizationCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/appEventLocalizations/{id} (GET /v1/appEventLocalizations/{id})
idrequiredincludefields_appEventslimit_placementslimit_appEventVideoClipsfields_appEventVideoClipslimit_appEventScreenshotsfields_appEventScreenshotsfields_appEventLocalizationsfields_appAssetLibraryPlacementsPATCH /v1/appEventLocalizations/{id} (PATCH /v1/appEventLocalizations/{id}) Body shape: see OpenAPI components.schemas.AppEventLocalizationUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredDELETE /v1/appEventLocalizations/{id} (DELETE /v1/appEventLocalizations/{id})
idrequiredGET /v1/appEventLocalizations/{id}/relationships/appEventScreenshots (GET /v1/appEventLocalizations/{id}/relationships/appEventScreenshots)
idrequiredlimitGET /v1/appEventLocalizations/{id}/appEventScreenshots (GET /v1/appEventLocalizations/{id}/appEventScreenshots)
idrequiredlimitincludefields_appEventScreenshotsfields_appEventLocalizationsGET /v1/appEventLocalizations/{id}/relationships/appEventVideoClips (GET /v1/appEventLocalizations/{id}/relationships/appEventVideoClips)
idrequiredlimitGET /v1/appEventLocalizations/{id}/appEventVideoClips (GET /v1/appEventLocalizations/{id}/appEventVideoClips)
idrequiredlimitincludefields_appEventVideoClipsfields_appEventLocalizationsGET /v1/appEventLocalizations/{id}/relationships/placements (GET /v1/appEventLocalizations/{id}/relationships/placements)
idrequiredlimitGET /v1/appEventLocalizations/{id}/placements (GET /v1/appEventLocalizations/{id}/placements)
idrequiredsortlimitincludefilter_idfilter_imagefilter_statefilter_videofilter_placementTypefilter_placementGroupfields_appAssetLibraryImagesfields_appAssetLibraryVideos+8 morePOST /v1/appEventScreenshots (POST /v1/appEventScreenshots) Body shape: see OpenAPI components.schemas.AppEventScreenshotCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/appEventScreenshots/{id} (GET /v1/appEventScreenshots/{id})
idrequiredincludefields_appEventScreenshotsfields_appEventLocalizationsPATCH /v1/appEventScreenshots/{id} (PATCH /v1/appEventScreenshots/{id}) Body shape: see OpenAPI components.schemas.AppEventScreenshotUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredDELETE /v1/appEventScreenshots/{id} (DELETE /v1/appEventScreenshots/{id})
idrequiredPOST /v1/appEventVideoClips (POST /v1/appEventVideoClips) Body shape: see OpenAPI components.schemas.AppEventVideoClipCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/appEventVideoClips/{id} (GET /v1/appEventVideoClips/{id})
idrequiredincludefields_appEventVideoClipsfields_appEventLocalizationsPATCH /v1/appEventVideoClips/{id} (PATCH /v1/appEventVideoClips/{id}) Body shape: see OpenAPI components.schemas.AppEventVideoClipUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredDELETE /v1/appEventVideoClips/{id} (DELETE /v1/appEventVideoClips/{id})
idrequiredPOST /v1/appEvents (POST /v1/appEvents) Body shape: see OpenAPI components.schemas.AppEventCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/appEvents/{id} (GET /v1/appEvents/{id})
idrequiredincludefields_appEventslimit_localizationsfields_appEventLocalizationsPATCH /v1/appEvents/{id} (PATCH /v1/appEvents/{id}) Body shape: see OpenAPI components.schemas.AppEventUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredDELETE /v1/appEvents/{id} (DELETE /v1/appEvents/{id})
idrequiredGET /v1/appEvents/{id}/relationships/localizations (GET /v1/appEvents/{id}/relationships/localizations)
idrequiredlimitGET /v1/appEvents/{id}/localizations (GET /v1/appEvents/{id}/localizations)
idrequiredlimitincludefields_appEventslimit_placementslimit_appEventVideoClipsfields_appEventVideoClipslimit_appEventScreenshotsfields_appEventScreenshotsfields_appEventLocalizationsfields_appAssetLibraryPlacementsPOST /v1/appInfoLocalizations (POST /v1/appInfoLocalizations) Body shape: see OpenAPI components.schemas.AppInfoLocalizationCreateRequest for the full JSON:API envelope.
bodyrequiredGET /v1/appInfoLocalizations/{id} (GET /v1/appInfoLocalizations/{id})
idrequiredincludefields_appInfosfields_appInfoLocalizationsPATCH /v1/appInfoLocalizations/{id} (PATCH /v1/appInfoLocalizations/{id}) Body shape: see OpenAPI components.schemas.AppInfoLocalizationUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredDELETE /v1/appInfoLocalizations/{id} (DELETE /v1/appInfoLocalizations/{id})
idrequiredGET /v1/appInfos/{id} (GET /v1/appInfos/{id})
idrequiredincludefields_appsfields_appInfosfields_appCategorieslimit_appInfoLocalizationsfields_appInfoLocalizationsfields_ageRatingDeclarationsPATCH /v1/appInfos/{id} (PATCH /v1/appInfos/{id}) Body shape: see OpenAPI components.schemas.AppInfoUpdateRequest for the full JSON:API envelope.
idrequiredbodyrequiredGET /v1/appInfos/{id}/relationships/ageRatingDeclaration (GET /v1/appInfos/{id}/relationships/ageRatingDeclaration)
idrequiredGET /v1/appInfos/{id}/ageRatingDeclaration (GET /v1/appInfos/{id}/ageRatingDeclaration)
idrequiredfields_ageRatingDeclarationsGET /v1/appInfos/{id}/relationships/appInfoLocalizations (GET /v1/appInfos/{id}/relationships/appInfoLocalizations)
idrequiredlimitGET /v1/appInfos/{id}/appInfoLocalizations (GET /v1/appInfos/{id}/appInfoLocalizations)
idrequiredlimitincludefilter_localefields_appInfosfields_appInfoLocalizationsGET /v1/appInfos/{id}/relationships/primaryCategory (GET /v1/appInfos/{id}/relationships/primaryCategory)
idrequiredGET /v1/appInfos/{id}/primaryCategory (GET /v1/appInfos/{id}/primaryCategory)
idrequiredincludelimit_subcategoriesfields_appCategoriesGET /v1/appInfos/{id}/relationships/primarySubcategoryOne (GET /v1/appInfos/{id}/relationships/primarySubcategoryOne)
idrequiredGET /v1/appInfos/{id}/primarySubcategoryOne (GET /v1/appInfos/{id}/primarySubcategoryOne)
idrequiredincludelimit_subcategoriesfields_appCategoriesGET /v1/appInfos/{id}/relationships/primarySubcategoryTwo (GET /v1/appInfos/{id}/relationships/primarySubcategoryTwo)
idrequiredGET /v1/appInfos/{id}/primarySubcategoryTwo (GET /v1/appInfos/{id}/primarySubcategoryTwo)
idrequiredincludelimit_subcategoriesfields_appCategoriesGET /v1/appInfos/{id}/relationships/secondaryCategory (GET /v1/appInfos/{id}/relationships/secondaryCategory)
idrequiredGET /v1/appInfos/{id}/secondaryCategory (GET /v1/appInfos/{id}/secondaryCategory)
idrequiredincludelimit_subcategoriesfields_appCategoriesGET /v1/appInfos/{id}/relationships/secondarySubcategoryOne (GET /v1/appInfos/{id}/relationships/secondarySubcategoryOne)
idrequiredGET /v1/appInfos/{id}/secondarySubcategoryOne (GET /v1/appInfos/{id}/secondarySubcategoryOne)
idrequiredincludelimit_subcategoriesfields_appCategoriesGET /v1/appInfos/{id}/relationships/secondarySubcategoryTwo (GET /v1/appInfos/{id}/relationships/secondarySubcategoryTwo)
idrequiredGET /v1/appInfos/{id}/secondarySubcategoryTwo (GET /v1/appInfos/{id}/secondarySubcategoryTwo)
idrequiredincludelimit_subcategoriesfields_appCategories90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
npm install -g apple-app-store-connect-mcpnpx -y apple-app-store-connect-mcp{ "mcpServers": { "app-store-connect": { "command": "app-store-connect-mcp" } }}accounts_add name: my-app keyId: AB12CD34EF issuerId: 69a6de70-... keyFile: /Users/you/.config/app-store-connect-mcp/AuthKey_AB12CD34EF.p8accounts_add name: my-app keyId: <the 10-char Key ID> issuerId: <the UUID shown above the API keys list> keyFile: /absolute/path/to/AuthKey_XXXXXXXXXX.p8 description: (optional)auth_statusapps_get_collectionaccounts_add name: client-a keyId: ... issuerId: ... keyFile: ...accounts_add name: client-b keyId: ... issuerId: ... keyFile: ...accounts_switch name: client-baccounts_list{ "mcpServers": { "app-store-connect": { "command": "app-store-connect-mcp", "env": { "ASC_ACCOUNT": "acme-app" } } }}ASC_KEY_ID="..."ASC_ISSUER_ID="..."ASC_PRIVATE_KEY_PATH="/absolute/path/to/AuthKey_XXX.p8"{ "mcpServers": { "app-store-connect": { "command": "app-store-connect-mcp" } }}claude mcp add app-store-connect app-store-connect-mcp{ "mcpServers": { "app-store-connect": { "command": "app-store-connect-mcp" } }}{ "mcpServers": { "app-store-connect": { "command": "app-store-connect-mcp", "env": { "ASC_ACCOUNT": "acme-app" } } }}{ "app-store-connect": { "command": "app-store-connect-mcp" }}{ "servers": { "app-store-connect": { "type": "stdio", "command": "app-store-connect-mcp" } }}git clone https://github.com/devinwang/app-store-connect-mcp.gitcd app-store-connect-mcpnpm installnpm run build{ "mcpServers": { "app-store-connect": { "command": "node", "args": ["/absolute/path/to/app-store-connect-mcp/dist/index.js"] } }}accounts_switch name: my-appauth_statusapps_get_collectionbuilds_get_collection "filter[preReleaseVersion.version]": "1.2.0" "filter[version]": "147"
beta_groups_get_collection "filter[app]": <APP_ID> "fields[betaGroups]": "name,publicLinkEnabled"
builds_beta_groups_create_to_many_relationship id: <BUILD_ID> body: data: - type: betaGroups id: <BETA_GROUP_ID>
builds_update_instance id: <BUILD_ID> body: data: type: builds id: <BUILD_ID> attributes: expired: falseapp_screenshots_create_instance body: data: type: appScreenshots attributes: fileName: "en-US-iphone-6_9-1.png" fileSize: 2415122 relationships: appScreenshotSet: data: { type: appScreenshotSets, id: <SET_ID> }# → response includes the new `data.id` (asset is now AWAITING_UPLOAD)
asset_upload_file filePath: /abs/path/to/screenshot.png assetType: appScreenshots # preferred: tool fetches uploadOperations assetId: <SCREENSHOT_ID> # server-side (signature stays server-side)# (legacy: pass `uploadOperations: [...]` from the create response instead)
app_screenshots_update_instance id: <SCREENSHOT_ID> body: data: type: appScreenshots id: <SCREENSHOT_ID> attributes: uploaded: true sourceFileChecksum: <MD5>ci_build_runs_create_instance body: data: type: ciBuildRuns relationships: workflow: data: { type: ciWorkflows, id: <WORKFLOW_ID> }# → response includes `data.id`
ci_build_run_wait id: <BUILD_RUN_ID> timeoutMs: 3600000customer_reviews_get_collection "filter[app]": <APP_ID> "sort": "-createdDate" "limit": 10
customer_review_responses_v1_create_instance body: data: type: customerReviewResponses attributes: responseBody: "Thanks for the feedback — we fixed this crash in 1.2.1. Please give it another try!" relationships: review: data: { type: customerReviews, id: <REVIEW_ID> }sales_reports_download "filter[frequency]": DAILY "filter[reportType]": SALES "filter[reportSubType]": SUMMARY "filter[vendorNumber]": "12345678" "filter[reportDate]": "2026-04-20"subscription_groups_create_instance body: { data: { type: subscriptionGroups, attributes: { referenceName: "Premium" }, relationships: { app: { data: { type: apps, id: <APP_ID> } } } } }
subscriptions_create_instance body: { data: { type: subscriptions, attributes: { productId: "com.example.premium.monthly", name: "Premium Monthly", subscriptionPeriod: "ONE_MONTH" }, relationships: { group: { data: { type: subscriptionGroups, id: <GROUP_ID> } } } } }
subscription_prices_create_instance body: { data: { type: subscriptionPrices, relationships: { subscription: { data: { type: subscriptions, id: <SUB_ID> } }, territory: { data: { type: territories, id: "USA" } }, subscriptionPricePoint: { data: { type: subscriptionPricePoints, id: <PRICE_POINT_ID> } } } } }