Appstoreconnect MCP
App Store Connect for MCP clients: PPP pricing, subscriptions, TestFlight, reviews, reports & more
Connector by akoskomuves · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/akoskomuves-appstoreconnect-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: mobile-development, payments-billing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 264 read · 242 write · 81 delete
- Secrets
- None asked for
- Install scripts
- Not scanned yet
- Runs as
- Node.js package
Tools by what they do 587
Read from the source code; the running server may list different tools.
Read 264 · Look things up without changing anything.
asc_export_iap_offer_code_one_time_use_valuesasc_export_subscription_offer_code_one_time_use_valuesasc_get_actorasc_get_age_rating_declarationasc_get_appasc_get_app_alternative_distribution_keyasc_get_app_asset_libraryasc_get_app_availability_v2asc_get_app_beta_license_agreementasc_get_app_clipasc_get_app_clip_advanced_experienceasc_get_app_clip_advanced_experience_image
Show 252 more tools
asc_get_app_clip_app_store_review_detailasc_get_app_clip_default_experienceasc_get_app_clip_default_experience_localizationasc_get_app_clip_default_experience_release_versionasc_get_app_clip_header_imageasc_get_app_custom_product_pageasc_get_app_custom_product_page_localizationasc_get_app_custom_product_page_versionasc_get_app_encryption_declarationasc_get_app_encryption_declaration_documentasc_get_app_end_user_license_agreementasc_get_app_eventasc_get_app_event_localizationasc_get_app_event_screenshotasc_get_app_event_video_clipasc_get_app_game_center_detailasc_get_app_infoasc_get_app_info_localizationasc_get_app_perf_power_metricsasc_get_app_previewasc_get_app_preview_setasc_get_app_screenshotasc_get_app_screenshot_setasc_get_app_store_review_detailasc_get_app_store_versionasc_get_app_store_version_app_clip_default_experienceasc_get_app_store_version_localizationasc_get_app_store_version_phased_releaseasc_get_asset_library_placementasc_get_asset_library_ref_dataasc_get_background_assetasc_get_background_asset_upload_fileasc_get_background_asset_versionasc_get_background_asset_version_releaseasc_get_beta_app_clip_invocationasc_get_beta_app_localizationasc_get_beta_app_review_detailasc_get_beta_app_review_submissionasc_get_beta_build_localizationasc_get_beta_feedback_crash_logasc_get_beta_feedback_crash_submissionasc_get_beta_feedback_screenshot_submissionasc_get_beta_groupasc_get_beta_group_recruitment_criterionasc_get_beta_license_agreementasc_get_beta_license_agreement_appasc_get_beta_recruitment_compatible_build_checkasc_get_beta_testerasc_get_buildasc_get_build_app_encryption_declarationasc_get_build_beta_detailasc_get_build_bundle_app_clip_domain_statusasc_get_build_perf_power_metricsasc_get_build_uploadasc_get_build_upload_fileasc_get_bundle_idasc_get_certificateasc_get_ci_artifactasc_get_ci_build_runasc_get_ci_workflowasc_get_customer_reviewasc_get_customer_review_responseasc_get_diagnostic_logsasc_get_end_user_license_agreementasc_get_finance_reportasc_get_game_center_activityasc_get_game_center_activity_imageasc_get_game_center_activity_localizationasc_get_game_center_activity_versionasc_get_game_center_app_versionasc_get_game_center_challengeasc_get_game_center_challenge_imageasc_get_game_center_challenge_localizationasc_get_game_center_challenge_versionasc_get_game_center_detailasc_get_game_center_detail_groupasc_get_game_center_groupasc_get_game_center_matchmaking_queueasc_get_game_center_matchmaking_queue_metricsasc_get_game_center_matchmaking_rule_metricsasc_get_game_center_matchmaking_rule_setasc_get_iapasc_get_iap_availabilityasc_get_iap_localizationasc_get_iap_offer_codeasc_get_iap_offer_code_custom_codeasc_get_iap_offer_code_one_time_use_codesasc_get_marketplace_search_detailasc_get_merchant_idasc_get_nominationasc_get_pass_type_idasc_get_pre_release_versionasc_get_profileasc_get_promoted_purchaseasc_get_review_submissionasc_get_sales_reportasc_get_subscriptionasc_get_subscription_availabilityasc_get_subscription_grace_periodasc_get_subscription_groupasc_get_subscription_group_localizationasc_get_subscription_introductory_offerasc_get_subscription_localizationasc_get_subscription_offer_codeasc_get_subscription_promotional_offerasc_get_subscription_win_back_offerasc_get_userasc_get_user_invitationasc_get_version_alternative_distribution_packageasc_get_version_experimentasc_get_webhookasc_list_accessibility_declarationsasc_list_actorsasc_list_alternative_distribution_domainsasc_list_alternative_distribution_keysasc_list_alternative_distribution_package_deltasasc_list_alternative_distribution_package_variantsasc_list_alternative_distribution_package_versionsasc_list_analytics_report_instancesasc_list_analytics_report_requestsasc_list_analytics_report_segmentsasc_list_analytics_reportsasc_list_app_categoriesasc_list_app_clip_advanced_experiencesasc_list_app_clip_default_experience_localizationsasc_list_app_clip_default_experiencesasc_list_app_clipsasc_list_app_custom_product_page_localizationsasc_list_app_custom_product_page_versionsasc_list_app_custom_product_pagesasc_list_app_encryption_declarationsasc_list_app_event_localizationsasc_list_app_event_screenshotsasc_list_app_event_video_clipsasc_list_app_eventsasc_list_app_info_localizationsasc_list_app_infosasc_list_app_preview_setsasc_list_app_previewsasc_list_app_price_pointsasc_list_app_pricesasc_list_app_screenshot_setsasc_list_app_screenshotsasc_list_app_store_version_localizationsasc_list_app_store_versionsasc_list_app_tagsasc_list_appsasc_list_background_asset_upload_filesasc_list_background_asset_versionsasc_list_background_assetsasc_list_beta_app_localizationsasc_list_beta_app_review_detailsasc_list_beta_app_review_submissionsasc_list_beta_build_localizationsasc_list_beta_feedback_crash_submissionsasc_list_beta_feedback_screenshot_submissionsasc_list_beta_groupsasc_list_beta_license_agreementsasc_list_beta_recruitment_criterion_optionsasc_list_beta_testersasc_list_build_bundle_beta_app_clip_invocationsasc_list_build_bundle_file_sizesasc_list_build_bundlesasc_list_build_upload_filesasc_list_build_uploadsasc_list_buildsasc_list_bundle_idsasc_list_certificatesasc_list_ci_artifactsasc_list_ci_build_actionsasc_list_ci_build_run_buildsasc_list_ci_build_runsasc_list_ci_environment_versionsasc_list_ci_issuesasc_list_ci_productsasc_list_ci_test_resultsasc_list_ci_workflowsasc_list_customer_review_summarizationsasc_list_customer_reviewsasc_list_devicesasc_list_diagnostic_signaturesasc_list_end_user_license_agreement_territoriesasc_list_experiment_treatmentsasc_list_game_center_activity_localizationsasc_list_game_center_activity_versionsasc_list_game_center_app_versionsasc_list_game_center_blocked_playersasc_list_game_center_challenge_localizationsasc_list_game_center_challenge_versionsasc_list_game_center_group_detailsasc_list_game_center_groupsasc_list_game_center_leaderboard_score_moderationsasc_list_game_center_leaderboard_set_member_localizationsasc_list_game_center_matchmaking_queuesasc_list_game_center_matchmaking_rule_setsasc_list_game_center_matchmaking_rulesasc_list_game_center_matchmaking_teamsasc_list_iap_available_territoriesasc_list_iap_localizationsasc_list_iap_offer_code_custom_codesasc_list_iap_offer_code_one_time_use_codesasc_list_iap_offer_code_pricesasc_list_iap_offer_codesasc_list_iap_price_pointsasc_list_iap_pricesasc_list_iapsasc_list_localization_placementsasc_list_marketplace_webhooksasc_list_merchant_id_certificatesasc_list_merchant_idsasc_list_nominationsasc_list_pass_type_id_certificatesasc_list_pass_type_idsasc_list_pre_release_versionsasc_list_profilesasc_list_promoted_purchasesasc_list_review_submissionsasc_list_sandbox_testersasc_list_scm_git_referencesasc_list_scm_providersasc_list_scm_pull_requestsasc_list_scm_repositoriesasc_list_search_keywordsasc_list_subscription_available_territoriesasc_list_subscription_group_localizationsasc_list_subscription_groupsasc_list_subscription_introductory_offersasc_list_subscription_localizationsasc_list_subscription_offer_code_custom_codesasc_list_subscription_offer_code_one_time_use_codesasc_list_subscription_offer_codesasc_list_subscription_plan_availabilitiesasc_list_subscription_plan_available_territoriesasc_list_subscription_price_pointsasc_list_subscription_pricesasc_list_subscription_promotional_offer_pricesasc_list_subscription_promotional_offersasc_list_subscription_win_back_offer_pricesasc_list_subscription_win_back_offersasc_list_subscriptionsasc_list_territoriesasc_list_territory_availabilitiesasc_list_treatment_localizationsasc_list_user_invitation_visible_appsasc_list_user_invitationsasc_list_user_visible_appsasc_list_usersasc_list_version_experimentsasc_list_webhook_deliveriesasc_list_webhooksppp_compute_proposalppp_load_index
Write 242 · Create, change, send or run things.
asc_add_beta_group_buildsasc_add_beta_group_testersasc_add_game_center_app_version_compatibilityasc_add_game_center_leaderboard_set_membersasc_add_user_visible_appsasc_download_analytics_report_segmentasc_end_app_availability_pre_orderasc_patch_accessibility_declarationasc_patch_age_rating_declarationasc_patch_app_clip_advanced_experienceasc_patch_app_clip_app_store_review_detailasc_patch_app_clip_default_experience
Show 230 more tools
asc_patch_app_clip_default_experience_localizationasc_patch_app_clip_default_experience_release_versionasc_patch_app_custom_product_pageasc_patch_app_custom_product_page_localizationasc_patch_app_encryption_declaration_documentasc_patch_app_eventasc_patch_app_event_localizationasc_patch_app_event_screenshotasc_patch_app_event_video_clipasc_patch_app_infoasc_patch_app_info_localizationasc_patch_app_previewasc_patch_app_screenshotasc_patch_app_store_review_detailasc_patch_app_store_versionasc_patch_app_store_version_app_clip_default_experienceasc_patch_app_store_version_localizationasc_patch_app_store_version_phased_releaseasc_patch_app_tagasc_patch_asset_library_imageasc_patch_asset_library_videoasc_patch_background_assetasc_patch_background_asset_upload_fileasc_patch_beta_app_clip_invocationasc_patch_beta_app_clip_invocation_localizationasc_patch_beta_app_localizationasc_patch_beta_app_review_detailasc_patch_beta_build_localizationasc_patch_beta_groupasc_patch_beta_license_agreementasc_patch_beta_recruitment_criterionasc_patch_buildasc_patch_build_app_encryption_declarationasc_patch_build_beta_detailasc_patch_build_upload_fileasc_patch_bundle_idasc_patch_bundle_id_capabilityasc_patch_ci_workflowasc_patch_deviceasc_patch_end_user_license_agreementasc_patch_experiment_treatmentasc_patch_game_center_achievementasc_patch_game_center_activityasc_patch_game_center_activity_imageasc_patch_game_center_activity_localizationasc_patch_game_center_activity_versionasc_patch_game_center_app_versionasc_patch_game_center_challengeasc_patch_game_center_challenge_imageasc_patch_game_center_challenge_localizationasc_patch_game_center_detailasc_patch_game_center_detail_playerasc_patch_game_center_groupasc_patch_game_center_leaderboardasc_patch_game_center_leaderboard_setasc_patch_game_center_leaderboard_set_member_localizationasc_patch_game_center_matchmaking_queueasc_patch_game_center_matchmaking_ruleasc_patch_game_center_matchmaking_rule_setasc_patch_game_center_matchmaking_teamasc_patch_game_center_score_moderationasc_patch_iapasc_patch_iap_localizationasc_patch_iap_offer_codeasc_patch_iap_offer_code_custom_codeasc_patch_iap_offer_code_one_time_use_codesasc_patch_marketplace_search_detailasc_patch_marketplace_webhookasc_patch_merchant_idasc_patch_nominationasc_patch_pass_type_idasc_patch_promoted_purchaseasc_patch_promoted_purchases_orderasc_patch_review_submissionasc_patch_sandbox_testerasc_patch_subscriptionasc_patch_subscription_grace_periodasc_patch_subscription_groupasc_patch_subscription_group_localizationasc_patch_subscription_introductory_offerasc_patch_subscription_localizationasc_patch_subscription_offer_codeasc_patch_subscription_offer_code_custom_codeasc_patch_subscription_offer_code_one_time_use_codesasc_patch_subscription_plan_availabilityasc_patch_subscription_promotional_offer_pricesasc_patch_subscription_win_back_offerasc_patch_territory_availabilityasc_patch_userasc_patch_version_experimentasc_patch_webhookasc_post_accessibility_declarationasc_post_alternative_distribution_domainasc_post_alternative_distribution_keyasc_post_alternative_distribution_packageasc_post_analytics_report_requestasc_post_app_availability_v2asc_post_app_clip_advanced_experienceasc_post_app_clip_advanced_experience_imageasc_post_app_clip_app_store_review_detailasc_post_app_clip_default_experienceasc_post_app_clip_default_experience_localizationasc_post_app_clip_header_imageasc_post_app_custom_product_pageasc_post_app_custom_product_page_localizationasc_post_app_custom_product_page_versionasc_post_app_encryption_declarationasc_post_app_encryption_declaration_documentasc_post_app_eventasc_post_app_event_localizationasc_post_app_event_screenshotasc_post_app_event_video_clipasc_post_app_info_localizationasc_post_app_previewasc_post_app_preview_setasc_post_app_price_scheduleasc_post_app_screenshotasc_post_app_screenshot_setasc_post_app_store_review_detailasc_post_app_store_versionasc_post_app_store_version_localizationasc_post_app_store_version_phased_releaseasc_post_app_store_version_release_requestasc_post_asset_library_imageasc_post_asset_library_placementasc_post_asset_library_placement_ordering_requestasc_post_asset_library_videoasc_post_background_assetasc_post_background_asset_upload_fileasc_post_background_asset_versionasc_post_beta_app_clip_invocationasc_post_beta_app_clip_invocation_localizationasc_post_beta_app_localizationasc_post_beta_app_review_submissionasc_post_beta_build_localizationasc_post_beta_groupasc_post_beta_recruitment_criterionasc_post_beta_testerasc_post_beta_tester_invitationasc_post_build_beta_notificationasc_post_build_uploadasc_post_build_upload_fileasc_post_bundle_idasc_post_bundle_id_capabilityasc_post_certificateasc_post_ci_build_runasc_post_customer_review_responseasc_post_deviceasc_post_end_user_license_agreementasc_post_experiment_treatmentasc_post_game_center_achievementasc_post_game_center_activityasc_post_game_center_activity_imageasc_post_game_center_activity_localizationasc_post_game_center_activity_versionasc_post_game_center_app_versionasc_post_game_center_challengeasc_post_game_center_challenge_imageasc_post_game_center_challenge_localizationasc_post_game_center_challenge_versionasc_post_game_center_detailasc_post_game_center_groupasc_post_game_center_leaderboardasc_post_game_center_leaderboard_entry_submissionasc_post_game_center_leaderboard_setasc_post_game_center_leaderboard_set_member_localizationasc_post_game_center_matchmaking_queueasc_post_game_center_matchmaking_ruleasc_post_game_center_matchmaking_rule_setasc_post_game_center_matchmaking_teamasc_post_game_center_player_achievement_submissionasc_post_iapasc_post_iap_availabilityasc_post_iap_localizationasc_post_iap_offer_codeasc_post_iap_offer_code_custom_codeasc_post_iap_offer_code_one_time_use_codesasc_post_iap_price_scheduleasc_post_iap_submissionasc_post_marketplace_search_detailasc_post_merchant_idasc_post_nominationasc_post_pass_type_idasc_post_profileasc_post_promoted_purchaseasc_post_review_submissionasc_post_review_submission_itemasc_post_subscriptionasc_post_subscription_availabilityasc_post_subscription_groupasc_post_subscription_group_localizationasc_post_subscription_group_submissionasc_post_subscription_introductory_offerasc_post_subscription_localizationasc_post_subscription_offer_codeasc_post_subscription_offer_code_custom_codeasc_post_subscription_offer_code_one_time_use_codesasc_post_subscription_plan_availabilityasc_post_subscription_priceasc_post_subscription_promotional_offerasc_post_subscription_submissionasc_post_subscription_win_back_offerasc_post_treatment_localizationasc_post_user_invitationasc_post_version_experimentasc_post_webhookasc_post_webhook_pingasc_post_webhook_redeliveryasc_set_game_center_challenge_leaderboardasc_set_game_center_leaderboard_set_membersasc_set_user_visible_appsasc_sign_introductory_offer_eligibilityasc_sign_promotional_offerasc_sign_promotional_offer_legacyasc_test_game_center_matchmaking_rule_setasc_upload_app_clip_advanced_experience_imageasc_upload_app_clip_header_imageasc_upload_app_encryption_declaration_documentasc_upload_app_event_screenshotasc_upload_app_event_video_clipasc_upload_app_previewasc_upload_asset_chunkasc_upload_asset_library_imageasc_upload_asset_library_videoasc_upload_background_asset_fileasc_upload_buildasc_upload_game_center_activity_imageasc_upload_game_center_challenge_imageasc_upload_screenshotppp_apply_proposal
Delete 81 · Delete, drop, revoke or wipe things.
asc_delete_accessibility_declarationasc_delete_alternative_distribution_domainasc_delete_alternative_distribution_keyasc_delete_analytics_report_requestasc_delete_app_clip_default_experienceasc_delete_app_clip_default_experience_localizationasc_delete_app_clip_header_imageasc_delete_app_custom_product_pageasc_delete_app_custom_product_page_localizationasc_delete_app_custom_product_page_versionasc_delete_app_eventasc_delete_app_event_localization
Show 69 more tools
asc_delete_app_event_screenshotasc_delete_app_event_video_clipasc_delete_app_info_localizationasc_delete_app_previewasc_delete_app_preview_setasc_delete_app_screenshotasc_delete_app_screenshot_setasc_delete_app_store_versionasc_delete_app_store_version_localizationasc_delete_app_store_version_phased_releaseasc_delete_asset_library_placementasc_delete_beta_app_clip_invocationasc_delete_beta_app_clip_invocation_localizationasc_delete_beta_app_localizationasc_delete_beta_build_localizationasc_delete_beta_feedback_crash_submissionasc_delete_beta_feedback_screenshot_submissionasc_delete_beta_groupasc_delete_beta_recruitment_criterionasc_delete_beta_testerasc_delete_build_uploadasc_delete_bundle_idasc_delete_bundle_id_capabilityasc_delete_certificateasc_delete_customer_review_responseasc_delete_end_user_license_agreementasc_delete_experiment_treatmentasc_delete_game_center_activityasc_delete_game_center_activity_imageasc_delete_game_center_activity_localizationasc_delete_game_center_challengeasc_delete_game_center_challenge_imageasc_delete_game_center_challenge_localizationasc_delete_game_center_groupasc_delete_game_center_leaderboard_set_member_localizationasc_delete_game_center_matchmaking_queueasc_delete_game_center_matchmaking_ruleasc_delete_game_center_matchmaking_rule_setasc_delete_game_center_matchmaking_teamasc_delete_iapasc_delete_iap_localizationasc_delete_marketplace_search_detailasc_delete_marketplace_webhookasc_delete_merchant_idasc_delete_nominationasc_delete_pass_type_idasc_delete_profileasc_delete_promoted_purchaseasc_delete_review_submission_itemasc_delete_subscriptionasc_delete_subscription_groupasc_delete_subscription_group_localizationasc_delete_subscription_introductory_offerasc_delete_subscription_localizationasc_delete_subscription_priceasc_delete_subscription_promotional_offerasc_delete_subscription_win_back_offerasc_delete_treatment_localizationasc_delete_userasc_delete_user_invitationasc_delete_version_experimentasc_delete_webhookasc_post_marketplace_webhookasc_post_sandbox_testers_clear_purchase_historyasc_remove_beta_group_buildsasc_remove_beta_group_testersasc_remove_game_center_app_version_compatibilityasc_remove_game_center_leaderboard_set_membersasc_remove_user_visible_apps
Secrets and settings it asks for
Other settings (environment variables or headers).
ASC_ISSUER_IDASC_KEY_IDASC_PRIVATE_KEY_PATHASC_VENDOR_NUMBER
Files it touches
- Any path the agent passes to its tools
Tools (587)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
asc_add_beta_group_buildsAssign builds to a beta groupAssign builds to a beta group via POST /v1/betaGroups/{id}/relationships/builds. Builds must be in VALID processingState; Apple rejects PROCESSING/FAILED/INVALID. For external groups, the first build to be distributed externally must clear beta review (handled by the beta-review sub-domain). Use asc_patch_build_beta_detail to control autoNotifyEnabled per build.
asc_add_beta_group_testersAdd beta testers to a groupAdd existing BetaTester records to a beta group via POST /v1/betaGroups/{id}/relationships/betaTesters. Pass tester IDs (NOT emails — use asc_post_beta_tester to look up or create from an email). Idempotent on the wire (re-adding a member is a no-op). Apple does not push a fresh invite email on re-add.
asc_add_game_center_app_version_compatibilityDescription is built at runtime.
asc_add_game_center_leaderboard_set_membersAdd leaderboards to a setAdd leaderboards to a leaderboard set (POST …/relationships/gameCenterLeaderboards). Existing members stay.
asc_add_user_visible_appsGive a user access to apps (confirm-gated)🔒 TEAM-CHANGE GATE: refuses and sends nothing unless confirm: true; the refusal lists the apps by name and what the user loses. Adds apps to the user's visible-apps list; existing ones stay. Has no effect while the user has allAppsVisible (or an all-app role like ADMIN).
asc_delete_accessibility_declarationDelete an accessibility declarationDELETE /v1/accessibilityDeclarations/{id} — remove a DRAFT declaration. Published declarations are superseded by publishing a new draft (REPLACED), not deleted.
asc_delete_alternative_distribution_domainDelete an alternative distribution domain⚠️ DELETE /v1/alternativeDistributionDomains/{id} — apps distributed from this domain stop being installable from it. Confirm intent first.
asc_delete_alternative_distribution_keyDelete an alternative distribution key⚠️ DELETE /v1/alternativeDistributionKeys/{id} — artifacts signed against this key stop validating. Confirm intent first.
asc_delete_analytics_report_requestDelete an analytics report requestDELETE /v1/analyticsReportRequests/{id} — stop report generation for this request and drop access to its report chain. Recreating later starts fresh (ONGOING resumes from creation; ONE_TIME_SNAPSHOT re-backfills).
asc_delete_app_clip_default_experienceDelete an App Clip default experienceDELETE a default experience with its localizations, header images and review detail. Only an experience not yet live can be deleted.
asc_delete_app_clip_default_experience_localizationDelete an App Clip default experience localizationDELETE one localization (and its header image) from a default experience.
asc_delete_app_clip_header_imageDelete an App Clip header imageDELETE the header image of a default experience localization.
asc_delete_app_custom_product_pageDelete an AppCustomProductPageDELETE an AppCustomProductPage. Removes the page + every version + every localization + every asset set under it. The public CPP URL stops resolving immediately. Apple may refuse if a version is currently IN_REVIEW.
asc_delete_app_custom_product_page_localizationDelete an AppCustomProductPageLocalizationDELETE an AppCustomProductPageLocalization. Customers in this locale fall back to the parent AppStoreVersionLocalization. Apple may refuse if the parent version is in a frozen state.
asc_delete_app_custom_product_page_versionDelete an AppCustomProductPageVersionDELETE an AppCustomProductPageVersion. Removes every localization + asset set under it. Apple gates this — versions in WAITING_FOR_REVIEW / IN_REVIEW typically cannot be deleted directly.
Show 572 more tools
asc_delete_app_eventDelete an AppEventDELETE an AppEvent. Removes the event + every localization + every asset. Apple may refuse if the event is PUBLISHED or IN_REVIEW.
asc_delete_app_event_localizationDelete an AppEventLocalizationDELETE an AppEventLocalization. Removes the per-locale copy + every event screenshot + video clip under it. Customers in this locale fall back to the event's primaryLocale.
asc_delete_app_event_screenshotDelete an AppEventScreenshot (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced in-app event screenshots with the App Asset Library. Use asc_upload_asset_library_image + asc_post_asset_library_placement (parentType appEventLocalizations, placementType EVENT_CARD_ASSET or EVENT_DETAILS_PAGE_ASSET) instead; asc_list_localization_placements lists what a localization shows. DELETE an AppEventScreenshot. Removes the asset under its slot; if the slot goes empty Apple may reject the event for review with an asset-missing error.
asc_delete_app_event_video_clipDelete an AppEventVideoClip (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced in-app event video clips with the App Asset Library. Use asc_upload_asset_library_video + asc_post_asset_library_placement (parentType appEventLocalizations, placementType EVENT_CARD_ASSET or EVENT_DETAILS_PAGE_ASSET) instead; asc_list_localization_placements lists what a localization shows. DELETE an AppEventVideoClip. Removes the video asset; if both screenshot + video slot are emptied, Apple may reject the event for review with an asset-missing error.
asc_delete_app_info_localizationDelete an AppInfo localizationDELETE an AppInfoLocalization. The locale-specific app-level copy is removed (subtitle, privacy URLs, etc.). Customers in that locale fall back to the default locale's AppInfoLocalization. Apple may reject if the parent AppInfo is in a frozen state.
asc_delete_app_previewDelete an AppPreview (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced app preview sets with the App Asset Library. Use asc_upload_asset_library_video + asc_post_asset_library_placement (placementType APP_PREVIEW) instead; asc_list_localization_placements lists what a localization shows. DELETE an AppPreview. Removes the video asset + its slot in the set; if all previews are removed the parent localization may need a new upload before submission.
asc_delete_app_preview_setDelete an AppPreviewSet (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced app preview sets with the App Asset Library. Use asc_upload_asset_library_video + asc_post_asset_library_placement (placementType APP_PREVIEW) instead; asc_list_localization_placements lists what a localization shows. DELETE an AppPreviewSet. All AppPreview resources under the set are removed as well.
asc_delete_app_screenshotDelete an AppScreenshot (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced screenshot sets with the App Asset Library. Use asc_upload_asset_library_image + asc_post_asset_library_placement instead; asc_list_localization_placements lists what a localization shows. DELETE an AppScreenshot. Removes the asset + its slot in the set; if the set goes empty the parent localization will need a new upload before the App Store version can be submitted.
asc_delete_app_screenshot_setDelete an AppScreenshotSet (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced screenshot sets with the App Asset Library. Use asc_upload_asset_library_image + asc_post_asset_library_placement instead; asc_list_localization_placements lists what a localization shows. DELETE an AppScreenshotSet. All AppScreenshot resources under the set are removed as well. Use when retiring a device class for a locale or rebuilding a set from scratch.
asc_delete_app_store_versionDelete an App Store versionDELETE an App Store version. Allowed only when the version is in an editable state (PREPARE_FOR_SUBMISSION, *_REJECTED, INVALID_BINARY, DEVELOPER_REMOVED_FROM_SALE). The tool pre-checks the state with one GET and refuses client-side for frozen states (under review) or live states (READY_FOR_SALE — would orphan customers; release-pending — Apple rejects).
asc_delete_app_store_version_localizationDelete an App Store version localizationDELETE an AppStoreVersionLocalization. The locale is removed for this version; users in that locale fall back to the default locale's copy on the product page. Doesn't affect other versions or other locales. Apple may reject if the version is in a state that locks localizations (e.g. in review).
asc_delete_app_store_version_phased_releaseCancel / delete a phased releaseDELETE an AppStoreVersionPhasedRelease — cancels the staged rollout and reverts the version to standard immediate release (all users on the next App Store refresh). Apple may refuse if the rollout has already reached COMPLETE.
asc_delete_asset_library_placementRemove a placementDELETE a placement: takes the asset off that localization slot. The asset itself stays in the library (and on any other placements).
asc_delete_beta_app_clip_invocationDelete a beta App Clip invocationDELETE a TestFlight App Clip invocation and its localized titles.
asc_delete_beta_app_clip_invocation_localizationDelete a beta App Clip invocation titleDELETE one localized title from a TestFlight App Clip invocation.
asc_delete_beta_app_localizationDelete a per-app beta localizationDELETE a BetaAppLocalization. The locale-specific copy is removed; testers in that locale fall back to whatever default TestFlight uses. Per-build "What to Test" localizations are NOT affected.
asc_delete_beta_build_localizationDelete a per-build "What to Test" localizationDELETE a BetaBuildLocalization. The locale is removed for this build; testers in that locale fall back to whatever default locale TestFlight chooses. Doesn't affect the build itself.
asc_delete_beta_feedback_crash_submissionDelete a beta feedback crash submissionDELETE /v1/betaFeedbackCrashSubmissions/{id}. Permanently removes the crash feedback record (including its crash log) from App Store Connect. Irreversible; the tester is not notified.
asc_delete_beta_feedback_screenshot_submissionDelete a beta feedback screenshot submissionDELETE /v1/betaFeedbackScreenshotSubmissions/{id}. Permanently removes the feedback record and its screenshot images from App Store Connect — same as dismissing it in the TestFlight feedback UI. Irreversible; the tester is not notified.
asc_delete_beta_groupDelete a beta groupDELETE a beta group. Apple supports DELETE on this resource (unlike offer codes). All tester + build linkages are removed atomically. Testers themselves are NOT deleted — they remain as BetaTester records, just unassigned from this group. Builds are NOT affected.
asc_delete_beta_recruitment_criterionDelete a recruitment criterionDELETE /v1/betaRecruitmentCriteria/{id} — remove the criterion entirely; the public link goes back to accepting ANY device. The beta group and its public link are untouched.
asc_delete_beta_testerDelete a beta testerDELETE a beta tester record from the team. All group memberships and build accesses for this tester are removed atomically. The tester loses access to every app + build they had. To remove a tester from only ONE group while keeping them on others, use asc_remove_beta_group_testers instead — DELETE on /v1/betaTesters/{id} is team-wide nuclear.
asc_delete_build_uploadDelete a build uploadDelete a build upload slot — e.g. one stuck in AWAITING_UPLOAD after an interrupted upload. It does not delete a processed build; expire builds with asc_patch_build.
asc_delete_bundle_idDelete a bundle IDDelete a bundle-ID record. Apple refuses while any app is attached to it — this only works for unused registrations. Profiles built on it become invalid.
asc_delete_bundle_id_capabilityDisable a capability on a bundle IDDisable a capability (DELETE the capability record). Apps relying on the entitlement lose it on their next profile regeneration — verify nothing ships with it first.
asc_delete_certificateRevoke a signing certificate⚠️ DELETE = REVOKE. Shipped App Store builds keep working, but any CI pipeline or colleague signing with this certificate breaks immediately, and every provisioning profile referencing it becomes invalid. Verify nothing depends on it (asc_list_profiles) before revoking.
asc_delete_customer_review_responseDelete a developer responseDELETE /v1/customerReviewResponses/{id} — remove your public reply from the App Store. The review itself is untouched (customer reviews cannot be deleted by developers). Get the response ID from asc_get_customer_review_response or the list digest.
asc_delete_end_user_license_agreementDelete a custom EULADelete the app's custom EULA. The product page falls back to Apple's standard EULA in every territory. Customer-visible.
asc_delete_experiment_treatmentDelete an experiment treatmentDELETE /v1/appStoreVersionExperimentTreatments/{id} — remove a variant (and its localizations/assets) from a pre-submission experiment.
asc_delete_game_center_activityDelete a Game Center activityDescription is built at runtime.
asc_delete_game_center_activity_imageDelete a Game Center activity imageDescription is built at runtime.
asc_delete_game_center_activity_localizationDelete a Game Center activity localizationDescription is built at runtime.
asc_delete_game_center_challengeDelete a Game Center challengeDescription is built at runtime.
asc_delete_game_center_challenge_imageDelete a Game Center challenge imageDescription is built at runtime.
asc_delete_game_center_challenge_localizationDelete a Game Center challenge localizationDescription is built at runtime.
asc_delete_game_center_groupDelete a Game Center groupDELETE a GameCenterGroup. The tool pre-checks the member apps and refuses while any app is still in the group (their shared achievements and leaderboards live on it). Pass force:true to skip the pre-check and let Apple judge.
asc_delete_game_center_leaderboard_set_member_localizationDelete a leaderboard-set member localizationDELETE a leaderboard-set member localization; the leaderboard falls back to its own name in that set.
asc_delete_game_center_matchmaking_queueDelete a Game Center matchmaking queueDELETE /v1/gameCenterMatchmakingQueues/{id}. ⚠️ Shipped builds that request this queue name stop finding matches. Confirm no live build uses it first.
asc_delete_game_center_matchmaking_ruleDelete a Game Center matchmaking ruleDELETE /v1/gameCenterMatchmakingRules/{id}. Live queues on the rule set stop applying it at once.
asc_delete_game_center_matchmaking_rule_setDelete a Game Center matchmaking rule setDELETE /v1/gameCenterMatchmakingRuleSets/{id}. Check asc_list_game_center_matchmaking_queues with ruleSetId first: a queue using it would lose its rules.
asc_delete_game_center_matchmaking_teamDelete a Game Center matchmaking teamDELETE /v1/gameCenterMatchmakingTeams/{id}. Rules that name the team stop matching it.
asc_delete_iapDelete an in-app purchaseDELETE /v2/inAppPurchases/{id}. Only drafts can be deleted; the tool reads the state first and refuses for IAPs under review or ever approved. Deleting does NOT free the productId. To stop selling an approved IAP use asc_post_iap_availability. force:true skips the pre-check and lets Apple decide (the shipped-state gate is inferred from Apple's documented states).
asc_delete_iap_localizationDelete an IAP localizationDELETE an InAppPurchaseLocalization. The locale-specific copy is removed; customers in that locale fall back to the default. Apple may reject if the IAP is in a state that locks localizations.
asc_delete_marketplace_search_detailDelete a marketplace search detailDELETE /v1/marketplaceSearchDetails/{id}.
asc_delete_marketplace_webhookDelete a marketplace webhookStop marketplace update notifications. DELETE /v1/webhooks/{id} by default; legacy:true deletes a deprecated /v1/marketplaceWebhooks record.
asc_delete_merchant_idDelete a Merchant ID⚠️ Deleting a Merchant ID breaks Apple Pay for every app and website that processes payments through it, immediately. Check asc_list_merchant_id_certificates first.
asc_delete_nominationDelete a featuring nominationDelete a nomination (drafts). For a submitted one, archive instead (asc_patch_nomination archived:true).
asc_delete_pass_type_idDelete a Pass Type ID⚠️ Deleting a Pass Type ID revokes its certificates: passes already in users’ wallets stay, but can no longer be updated or receive push updates. Check asc_list_pass_type_id_certificates first.
asc_delete_profileDelete a provisioning profileDelete a provisioning profile. Installed copies keep working until expiry; CI that fetches it fresh breaks. The standard rotate move is delete + asc_post_profile with the same name.
asc_delete_promoted_purchaseDelete a PromotedPurchaseDELETE a PromotedPurchase. Removes the IAP / subscription from the promoted slots on the storefront. The underlying IAP / subscription is NOT deleted — only the promotion linkage.
asc_delete_review_submission_itemRemove an item from a review submissionDELETE a ReviewSubmissionItem from a draft submission. Only valid while the parent submission is READY_FOR_REVIEW — after submission, items cannot be removed (use asc_patch_review_submission action: "cancel" to cancel the whole submission).
asc_delete_subscriptionDelete a subscriptionDELETE an auto-renewable Subscription. Only draft products can be deleted (MISSING_METADATA / READY_TO_SUBMIT / DEVELOPER_ACTION_NEEDED / REJECTED). The tool pre-checks the state with one GET and refuses client-side for products under review or already approved. ** Deleting does not free the productId ** — Apple never allows a product identifier to be reused on an account, even for a deleted draft. To stop selling an APPROVED subscription, reduce its territories with asc_post_subscription_availability instead; existing subscribers continue to renew regardless. Pass force:true to skip the pre-c…
asc_delete_subscription_groupDelete a subscription groupDELETE a SubscriptionGroup. Only possible while every subscription inside it is still a draft. The tool lists the group's subscriptions first and refuses client-side, naming the specific products that block the delete, rather than letting Apple return a bare 409. A group that has ever held an approved subscription can never be deleted — leave it; an unused group is invisible to customers and costs nothing. Pass force:true to skip the pre-check and let Apple judge — this gate is inferred from how Apple treats the child products, not observed directly.
asc_delete_subscription_group_localizationDelete a subscription group localizationDELETE a SubscriptionGroupLocalization. Customers in that locale fall back to another locale's group heading. Apple rejects the delete if it would leave the group with no localizations while the group is live.
asc_delete_subscription_introductory_offerDelete a subscription introductory offerDelete a pending or active introductory offer by ID. Apple refuses to delete an offer that is currently redeemable by users — to stop an active offer, PATCH endDate to today instead.
asc_delete_subscription_localizationDelete a subscription localizationDELETE a SubscriptionLocalization. The locale-specific copy is removed; subscribers in that locale fall back to the default locale. Apple may reject if the subscription is in a state that locks localizations.
asc_delete_subscription_priceCancel a pending subscription price changeDelete a pending scheduled subscription price by ID. Use this to roll back a change that has not yet activated.
asc_delete_subscription_promotional_offerDelete a subscription promotional offerDelete a promotional offer by ID. Returns 204 on success. Apple does not document whether the offerCode is immediately reusable after delete — recommend appending a suffix when rotating campaigns rather than reusing the same code.
asc_delete_subscription_win_back_offerDelete a subscription win-back offerDelete a win-back offer by its Apple resource ID. Returns 204 on success. This is the only way to change an immutable attribute (offerId, duration, offerMode, periodCount) or the prices — delete and re-create.
asc_delete_treatment_localizationDelete a treatment localizationDELETE /v1/appStoreVersionExperimentTreatmentLocalizations/{id} — remove a locale (and its variant assets) from a treatment.
asc_delete_userRemove a user from the team (confirm-gated)🔒 TEAM-CHANGE GATE: refuses and sends nothing unless confirm: true; the refusal names the person and their current roles. Removes the user from the App Store Connect team — they lose all access immediately. Re-adding means a new invitation. Apple refuses to remove the Account Holder.
asc_delete_user_invitationCancel a pending invitation (confirm-gated)🔒 TEAM-CHANGE GATE: refuses and sends nothing unless confirm: true; the refusal names the invitee. Cancels a pending invitation — the emailed link stops working. Already-accepted invitations are users; remove those with asc_delete_user.
asc_delete_version_experimentDelete a product-page experimentDELETE /v2/appStoreVersionExperiments/{id} — removes the experiment and its treatments/localizations. Works on un-started experiments; running experiments should be stopped through App Store Connect first.
asc_delete_webhookDelete a webhookDELETE /v1/webhooks/{id} — permanently remove the webhook and stop all deliveries. Delivery history is gone with it. To pause instead of delete, PATCH enabled=false.
asc_download_analytics_report_segmentDownload an analytics report segmentFetch a segment URL from asc_list_analytics_report_segments (pre-signed — fetched WITHOUT the ASC auth header; the signature lives in the URL) and gunzip the CSV. Returns header + row preview; saveTo writes the full decoded CSV to disk. Expired URL → re-list segments for a fresh one.
asc_end_app_availability_pre_orderEnd app pre-order in selected territoriesPOST an EndAppAvailabilityPreOrder resource carrying the list of TerritoryAvailability IDs in which to end pre-order. Apple stops accepting pre-orders in those territories — the app either goes live (if past releaseDate) or back to "not-yet-available". Relationships-only body (no attributes). Pass the opaque base64 IDs from asc_list_territory_availabilities (NOT bare 3-letter codes).
asc_export_iap_offer_code_one_time_use_valuesExport IAP one-time-use code values as CSVFetch the redeemable strings of an IAP one-time-use batch. Apple serves text/csv; passed through verbatim. Treat them as secrets. raw: true drops the summary line.
asc_export_subscription_offer_code_one_time_use_valuesExport one-time-use code values as CSVFetch the redeemable code strings inside a one-time-use batch. Apple serves the response as text/csv directly — this tool passes it through verbatim. These are the strings to hand to customers; treat them as secrets. Use `raw: true` to skip the leading summary line and return only the CSV body, suitable for piping to a file.
asc_get_actorGet an actorFetch one actor (type, user name/email or API key id). Read-only.
asc_get_age_rating_declarationGet the age rating declarationRead an app's age-rating questionnaire — the answers App Review scores the rating from. Pass appId (resolved via the app's appInfo) or an explicit declarationId. Returns a grouped table of the non-default answers plus every override; pass raw:true for all 29 attributes. Age rating is per-APP metadata (it hangs off appInfo), not per-version — there is no separate rating per release.
asc_get_appGet appFetch a single app by its App Store Connect ID.
asc_get_app_alternative_distribution_keyGet an app's alternative distribution keyGET /v1/apps/{id}/alternativeDistributionKey — the app's registered public key (to-one).
asc_get_app_asset_libraryGet an app's App Asset LibraryFetch the App Asset Library of an app (App Store Connect API 4.5.1). Every app has exactly one; its id is the app id. The library holds uploaded images and videos; they reach the store only through placements. Next: asc_list_asset_library_images / asc_list_asset_library_videos, or asc_get_asset_library_ref_data for what sizes and counts each device slot accepts.
asc_get_app_availability_v2Get the AppAvailabilityV2 for an appFetch the current AppAvailabilityV2 for an app. Returns the master `availableInNewTerritories` flag (whether Apple auto-adds the app when new territories launch) + the linkage to the territoryAvailabilities the app is currently sold in. Use asc_list_territory_availabilities to enumerate the territories.
asc_get_app_beta_license_agreementGet an app's beta license agreementFetch the app's TestFlight beta license agreement (its id feeds asc_patch_beta_license_agreement).
asc_get_app_clipGet an App ClipFetch one App Clip (bundle ID) with its app and default experiences included.
asc_get_app_clip_advanced_experienceGet an App Clip advanced experienceFetch one advanced experience with its header image and localizations (language, title, subtitle) included, plus the place card when it has one.
asc_get_app_clip_advanced_experience_imageGet an App Clip advanced experience imageFetch an advanced experience header image: fileName, fileSize, assetDeliveryState, imageAsset once processed, and uploadOperations[] while AWAITING_UPLOAD.
asc_get_app_clip_app_store_review_detailGet an App Clip App Store review detailFetch the App Review detail of a default experience — the invocation URLs App Review uses to open the clip. Pass reviewDetailId, or defaultExperienceId to fetch the experience's (data: null when it has none).
asc_get_app_clip_default_experienceGet an App Clip default experienceFetch one default experience with its App Clip, release version, localizations and App Review detail included.
asc_get_app_clip_default_experience_localizationGet an App Clip default experience localizationFetch one localization with its default experience and header image included.
asc_get_app_clip_default_experience_release_versionGet the version an App Clip default experience releases withFetch the App Store version linked to a default experience (releaseWithAppStoreVersion). Returns data: null when none is linked.
asc_get_app_clip_header_imageGet an App Clip header imageFetch a default experience header image: fileName, fileSize, assetDeliveryState, imageAsset once processed, and uploadOperations[] while AWAITING_UPLOAD. Pass headerImageId, or localizationId to fetch that localization's image (data: null when none).
asc_get_app_custom_product_pageGet an AppCustomProductPageFetch a single AppCustomProductPage with its versions expanded. Returns the page metadata + every AppCustomProductPageVersion under it (with state + deepLink). Use to navigate from a page to its current version.
asc_get_app_custom_product_page_localizationGet an AppCustomProductPageLocalizationFetch a single AppCustomProductPageLocalization by ID. Returns locale + promotionalText + the relationship IDs for any attached screenshot sets, preview sets, and search keywords.
asc_get_app_custom_product_page_versionGet an AppCustomProductPageVersionFetch a single AppCustomProductPageVersion with its localizations expanded. Returns the version metadata (state, deepLink) + every AppCustomProductPageLocalization under it.
asc_get_app_encryption_declarationGet an AppEncryptionDeclarationFetch a single AppEncryptionDeclaration by ID with its document relationship expanded. Returns the full attribute surface including the 4 deprecated read-only fields (usesEncryption, uploadedDate, documentURL, documentName, documentType) for legacy declarations.
asc_get_app_encryption_declaration_documentGet an AppEncryptionDeclarationDocumentFetch a single AppEncryptionDeclarationDocument by ID. Returns fileName / fileSize / sourceFileChecksum / assetDeliveryState / the downloadUrl once Apple has processed the upload (wire-key gotcha: Swift `downloadURL` → wire `downloadUrl`).
asc_get_app_end_user_license_agreementGet an app's custom EULAFetch the app's custom End User License Agreement (text + territories). An empty answer (data: null) means the app has no custom EULA and the App Store shows Apple's standard one — the tool reports that instead of an error.
asc_get_app_eventGet an AppEventFetch a single AppEvent by ID with its localizations expanded. Returns the full attribute surface including territorySchedules (writable per-territory schedule entries) and archivedTerritorySchedules (read-only history).
asc_get_app_event_localizationGet an AppEventLocalizationFetch a single AppEventLocalization by ID. Returns the locale + name + shortDescription + longDescription + the relationship IDs for any attached event screenshots and video clips.
asc_get_app_event_screenshotGet an AppEventScreenshot (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced in-app event screenshots with the App Asset Library. Use asc_upload_asset_library_image + asc_post_asset_library_placement (parentType appEventLocalizations, placementType EVENT_CARD_ASSET or EVENT_DETAILS_PAGE_ASSET) instead; asc_list_localization_placements lists what a localization shows. Fetch a single AppEventScreenshot by ID. Returns fileName / fileSize / appEventAssetType / assetDeliveryState / the imageAsset URLs once processed / the uploadOperations[] before commit.
asc_get_app_event_video_clipGet an AppEventVideoClip (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced in-app event video clips with the App Asset Library. Use asc_upload_asset_library_video + asc_post_asset_library_placement (parentType appEventLocalizations, placementType EVENT_CARD_ASSET or EVENT_DETAILS_PAGE_ASSET) instead; asc_list_localization_placements lists what a localization shows. Fetch a single AppEventVideoClip by ID. Returns the upload metadata + previewFrameTimeCode + (post-ingest) videoUrl + previewImage. Wire-key gotcha: Apple emits `videoUrl` (camelCase) where Swift names it `videoURL`.
asc_get_app_game_center_detailGet an app's Game Center detailFetch an app's GameCenterDetail — the root every Game Center tool hangs off (one per app). Its id is the gameCenterDetailId the achievement / leaderboard / leaderboard-set tools take. Includes the app's Game Center group (if the app shares Game Center data with other apps) and the default leaderboards. An app without Game Center answers data: null (the tool says so); create the detail with asc_post_game_center_detail.
asc_get_app_infoGet an AppInfoFetch a single AppInfo with its category relationships + localizations expanded. The relationships block carries the IDs for primary/secondary categories + subcategories — use asc_list_app_categories to resolve those IDs to human-readable names.
asc_get_app_info_localizationGet an AppInfo localizationFetch a single AppInfoLocalization by ID. Returns the full name + subtitle + privacy URLs/text for the locale.
asc_get_app_perf_power_metricsGet perf/power metrics of an appGET /v1/apps/{id}/perfPowerMetrics — Xcode-metrics percentile curves (LAUNCH, MEMORY, BATTERY, HANG, DISK, ANIMATION, TERMINATION, STORAGE) per device class, rolling across recent versions. NOT JSON:API: content type application/vnd.apple.xcode-metrics+json, returned as raw JSON (capped at maxChars). Narrow with metricType/deviceType (e.g. deviceType "iPhone15,2") — the full document is large.
asc_get_app_previewGet an AppPreview (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced app preview sets with the App Asset Library. Use asc_upload_asset_library_video + asc_post_asset_library_placement (placementType APP_PREVIEW) instead; asc_list_localization_placements lists what a localization shows. Fetch a single AppPreview by ID. Returns the upload metadata + previewFrameTimeCode + (post-ingest) videoUrl and previewImage. Wire-key gotcha: Apple emits `videoUrl` (camelCase) where Swift names it `videoURL`.
asc_get_app_preview_setGet an AppPreviewSet (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced app preview sets with the App Asset Library. Use asc_upload_asset_library_video + asc_post_asset_library_placement (placementType APP_PREVIEW) instead; asc_list_localization_placements lists what a localization shows. Fetch a single AppPreviewSet by ID with its previews expanded. The included AppPreview resources carry fileName, fileSize, previewFrameTimeCode, mimeType, and the video delivery state.
asc_get_app_screenshotGet an AppScreenshot (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced screenshot sets with the App Asset Library. Use asc_upload_asset_library_image + asc_post_asset_library_placement instead; asc_list_localization_placements lists what a localization shows. Fetch a single AppScreenshot by ID. Returns the upload metadata (fileName, fileSize, sourceFileChecksum), assetDeliveryState, the imageAsset URLs once processed, and — if the reservation has not been committed yet — the uploadOperations[] needed to PUT chunks to Apple storage.
asc_get_app_screenshot_setGet an AppScreenshotSet (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced screenshot sets with the App Asset Library. Use asc_upload_asset_library_image + asc_post_asset_library_placement instead; asc_list_localization_placements lists what a localization shows. Fetch a single AppScreenshotSet by ID with its screenshots expanded. The included AppScreenshot resources carry fileName, fileSize, assetDeliveryState, and sourceFileChecksum for each captured screenshot.
asc_get_app_store_review_detailGet the App Review detail of a versionFetch the appStoreReviewDetail of an App Store version — App Review contact info, demo account, notes, plus the detail id needed for PATCH and for attaching review attachments. To-one per version; Apple returns data:null when none exists yet (create with asc_post_app_store_review_detail).
asc_get_app_store_versionGet an App Store versionFetch a single App Store version with relationships expanded (app + appStoreVersionLocalizations + build). Use to see which locales already have copy and which still need localizing — the appStoreVersionLocalizations to-many relationship is the typical entry point for the v0.10 'translate release notes into N locales' workflow.
asc_get_app_store_version_app_clip_default_experienceGet an App Store version's App Clip default experienceFetch the App Clip default experience attached to an App Store version, with its localizations and review detail included. Returns data: null when the version has none.
asc_get_app_store_version_localizationGet an App Store version localizationFetch a single App Store version localization by ID. Returns the full whatsNew + description + keywords + promotionalText + marketingUrl + supportUrl text. Use as the source-of-truth read before PATCH (so the LLM can diff before writing).
asc_get_app_store_version_phased_releaseGet the phased release for an App Store versionFetch the AppStoreVersionPhasedRelease attached to an AppStoreVersion. Returns the current phasedReleaseState (INACTIVE / ACTIVE / PAUSED / COMPLETE), startDate, totalPauseDuration (seconds the rollout has been paused), and currentDayNumber (how many days into Apple's 7-day rollout the release is on). Returns `{ data: null }` if no phased release is attached (NOT a 404).
asc_get_asset_library_placementGet an App Asset Library placementFetch one placement with its asset and parent localization included: placementType, placementGroup, mediaType, state and stateDetails.
asc_get_asset_library_ref_dataGet App Asset Library reference dataApple's catalog of what the App Asset Library accepts, as data: placement groups per device (IPHONE_DYNAMIC_ISLAND_LARGE_PROFILE, IPAD_13_PROFILE, IPHONE_DUO_PROFILE, …), the max number of assets per (feature, placementType, group) — e.g. 10 screenshots per iPhone group — and the image/video specs (pixel sizes, aspect, formats, fps, duration) each group takes. One row; not paginated. The full document is ~130 KB, so narrow it: `sections` picks parts, the filters pick placement types / groups / features / spec ids. Example: placementProfileGroups=['IPHONE_DUO_PROFILE'] shows the iPhone Duo slot…
asc_get_background_assetGet a background asset (asset pack)Fetch one asset pack with the versions live on each track (internal beta, external beta, App Store) included.
asc_get_background_asset_upload_fileGet a background asset upload fileFetch one upload file: assetType, fileName, fileSize, assetDeliveryState (with errors), and uploadOperations[] while AWAITING_UPLOAD.
asc_get_background_asset_versionGet a background asset versionFetch one asset pack version with its release states, asset file and manifest file included. stateDetails explains a FAILED version.
asc_get_background_asset_version_releaseGet a background asset version releaseFetch the release record of an asset pack version on one track: internalBeta (READY_FOR_TESTING / SUPERSEDED), externalBeta (READY_FOR_BETA_SUBMISSION → … → READY_FOR_TESTING) or appStore (PREPARE_FOR_SUBMISSION → … → READY_FOR_DISTRIBUTION). The release ID is in the version's internalBetaRelease / externalBetaRelease / appStoreRelease relationship (asc_get_background_asset_version).
asc_get_beta_app_clip_invocationGet a beta App Clip invocationFetch one TestFlight App Clip invocation (the URL testers open the clip with) with its localized titles included.
asc_get_beta_app_localizationGet a per-app beta localizationFetch a single BetaAppLocalization by ID.
asc_get_beta_app_review_detailGet a beta app review detailFetch the per-app BetaAppReviewDetail. Returns contact info + demo account + notes + demoAccountRequired flag. Apple stores demo passwords in cleartext on this record — treat it as a secret; rotate after each review cycle.
asc_get_beta_app_review_submissionGet a beta app review submissionFetch a single BetaAppReviewSubmission with the build relationship expanded. Use to check current betaReviewState — APPROVED unlocks external distribution, REJECTED requires re-submission after fixes.
asc_get_beta_build_localizationGet a per-build "What to Test" localizationFetch a single BetaBuildLocalization by ID. Returns the locale + the full whatsNew text. Use before PATCH to read current copy.
asc_get_beta_feedback_crash_logGet the crash log for a crash feedback submissionGET /v1/betaFeedbackCrashSubmissions/{id}/crashLog — returns the betaCrashLogs resource whose logText attribute is the full symbolicated-or-raw crash log. Logs can be large; output is capped at maxChars (default 200k) with a truncation note. Use after asc_list_beta_feedback_crash_submissions to drill into a specific crash. NOTE: Apple stores logs for a limited time — older submissions 404 here even though their metadata still lists (observed live on ~4-month-old submissions); the submission record itself remains readable.
asc_get_beta_feedback_crash_submissionGet a beta feedback crash submissionFetch one crash feedback submission with full device context. include=build,tester for triage context. This returns the submission METADATA only — for the crash log text itself use asc_get_beta_feedback_crash_log.
asc_get_beta_feedback_screenshot_submissionGet a beta feedback screenshot submissionFetch one screenshot feedback submission with full device context (connection type, battery, disk, uptime, screen size) and the screenshots array — each entry carries url + width + height + expirationDate. The URLs are time-limited Apple-signed download links; if one has expired, re-run this tool for fresh URLs. include=build,tester for triage context.
asc_get_beta_groupGet a beta groupFetch a single beta group with relationships expanded (app + builds + betaTesters). Use to see the full membership before adding/removing testers or builds. Apple's tester list under a group can be large — paginate via asc_list_beta_testers with the group filter if you need the full list cleanly.
asc_get_beta_group_recruitment_criterionGet the recruitment criterion of a beta groupGET /v1/betaGroups/{id}/betaRecruitmentCriteria — the group's single recruitment criterion (a beta group has at most one; the plural path segment is Apple's naming, the response is one resource). Returns deviceFamilyOsVersionFilters + lastModifiedDate. When the group has NO criterion yet, Apple answers 409 ENTITY_ERROR (observed live) — this tool translates that to a clear 'no criterion yet' message; create one with asc_post_beta_recruitment_criterion.
asc_get_beta_license_agreementGet a beta license agreementFetch one beta license agreement by id, with its app.
asc_get_beta_license_agreement_appGet the app of a beta license agreementResolve which app a beta license agreement belongs to.
asc_get_beta_recruitment_compatible_build_checkCheck recruitment criteria against available buildsGET /v1/betaGroups/{id}/betaRecruitmentCriterionCompatibleBuildCheck — hasCompatibleBuild tells you whether the group currently distributes at least one build that devices matching the recruitment criteria could install. false means public-link joiners who pass the criteria would find NO installable build — fix the criteria or assign a compatible build before promoting the link. 404s when the group has no criterion at all (observed live) — the check only exists once a criterion does.
asc_get_beta_testerGet a beta testerFetch a single beta tester with relationships expanded (apps + betaGroups + builds). Use to inspect which groups and apps a tester has been onboarded to before changing membership.
asc_get_buildGet a TestFlight buildFetch a single build with relationships expanded (app + preReleaseVersion + buildBetaDetail + betaBuildLocalizations + betaGroups + betaAppReviewSubmission). Useful before deciding to retire, assign to a group, or submit for beta review.
asc_get_build_app_encryption_declarationGet the AppEncryptionDeclaration linked to a buildFetch the AppEncryptionDeclaration currently linked to a build. Each build has at most ONE declaration. Returns 404 if no declaration is linked.
asc_get_build_beta_detailGet a build's BuildBetaDetail companion recordFetch the BuildBetaDetail for a build — carries `autoNotifyEnabled` (whether Apple auto-pushes the build to assigned testers on availability) + `internalBuildState` + `externalBuildState` (Apple-managed beta-review reflections). The state fields are read-only; PATCH this resource via asc_patch_build_beta_detail to toggle autoNotifyEnabled.
asc_get_build_bundle_app_clip_domain_statusGet App Clip domain status of a build bundleValidation status of an App Clip bundle's associated domains (per domain: valid or the error, e.g. CANNOT_REACH_AASA_FILE, BAD_JSON_CONTENT). kind=cache reads Apple's CDN-cached result (what devices see); kind=debug reads the live developer-mode check. Only App Clip bundles have this.
asc_get_build_perf_power_metricsGet perf/power metrics of a buildGET /v1/builds/{id}/perfPowerMetrics — same Xcode-metrics document as the app-level tool but scoped to ONE build (compare a new build against the app-level rolling baseline). Same filters and raw-JSON output.
asc_get_build_uploadGet a build uploadFetch one build upload with its full state object (errors / warnings / infos with codes and descriptions), its files and, once processed, the build.
asc_get_build_upload_fileGet a build upload fileFetch one build upload file, including its uploadOperations (while awaiting upload) and assetDeliveryState.
asc_get_bundle_idGet a bundle ID with capabilities + profilesFetch one bundle-ID record including its enabled capabilities and the provisioning profiles built on it (capability ids feed the capability PATCH/DELETE tools).
asc_get_certificateGet a certificate (with content)Fetch one certificate including `certificateContent` — the base64 DER to install in a keychain / CI secret.
asc_get_ci_artifactGet an Xcode Cloud artifact (with download URL)Fetch one artifact including its downloadUrl. The URL is pre-signed and TIME-LIMITED — download promptly, and fetch it WITHOUT the ASC bearer token (same pattern as analytics report segments).
asc_get_ci_build_runGet an Xcode Cloud build runFetch one build run with source/destination commit details, issue counts, progress/completion status and start/cancel reasons. Raw JSON (the commit structs are nested).
asc_get_ci_workflowGet an Xcode Cloud workflow (full configuration)Fetch a workflow with its complete configuration: enabled/locked flags, start conditions (branch/tag/PR/scheduled/manual) with their branch patterns, actions[] (build/test/archive/analyze steps with platform + scheme + destination), container file path, and the RESOLVED Xcode + macOS versions. Returns a compact summary by default. Pass raw:true only when you need the full JSON:API document — Apple attaches every test destination × runtime to the included ciXcodeVersion there, which runs to ~90k characters and can blow a tool-result token cap on its own.
asc_get_customer_reviewGet a customer reviewGET /v1/customerReviews/{id} with the developer response included — the full review body (the list digest previews it) plus response state if one exists.
asc_get_customer_review_responseGet the developer response to a reviewGET /v1/customerReviews/{id}/response — the review's single developer response (responseBody, state PUBLISHED / PENDING_PUBLISH, lastModifiedDate). A review with no response returns 200 with data:null (observed live, NOT an error) — the tool reports that plainly.
asc_get_diagnostic_logsGet the call-stack logs of a diagnostic signatureGET /v1/diagnosticSignatures/{id}/logs — the anonymized call-stack documents behind one signature. NOT JSON:API: content type application/vnd.apple.diagnostic-logs+json with callStackTree nodes. Returned as raw JSON (capped at maxChars).
asc_get_end_user_license_agreementGet a EULA by idFetch one custom EULA by id, including its app and territories.
asc_get_finance_reportDownload a finance reportGET /v1/financeReports — gzipped TSV download of Apple's monthly financial report (what Apple actually pays out, post-commission, in payout currency). ALL params required by Apple: regionCode (a currency/region like "US", "EU", "JP" — or "ZZ" for the consolidated all-regions FINANCIAL report), reportDate (YYYY-MM, Apple's FISCAL months — Apple's fiscal calendar is offset from calendar months), reportType FINANCIAL or FINANCE_DETAIL (FINANCE_DETAIL only supports regionCode Z1). Returns header + row preview; saveTo for the full file.
asc_get_game_center_activityGet a Game Center activityDescription is built at runtime.
asc_get_game_center_activity_imageGet a Game Center activity imageFetch a activity image by imageId, the image of a localization (localizationId), or a version's default image (versionId). Pass exactly one. Returns null data when none is set.
asc_get_game_center_activity_localizationGet a Game Center activity localizationDescription is built at runtime.
asc_get_game_center_activity_versionGet a Game Center activity versionDescription is built at runtime.
asc_get_game_center_app_versionGet a Game Center app versionGET /v1/gameCenterAppVersions/{id} with its App Store version included. withAppStoreVersion=true returns only the App Store version (GET …/appStoreVersion).
asc_get_game_center_challengeGet a Game Center challengeDescription is built at runtime.
asc_get_game_center_challenge_imageGet a Game Center challenge imageFetch a challenge image by imageId, the image of a localization (localizationId), or a version's default image (versionId). Pass exactly one. Returns null data when none is set.
asc_get_game_center_challenge_localizationGet a Game Center challenge localizationDescription is built at runtime.
asc_get_game_center_challenge_versionGet a Game Center challenge versionDescription is built at runtime.
asc_get_game_center_detailGet a Game Center detailFetch a GameCenterDetail by id with its app, group and default leaderboards (V2 relationships).
asc_get_game_center_detail_groupGet a Game Center detail's groupFetch the GameCenterGroup an app belongs to (data: null when the app is not in a group).
asc_get_game_center_groupGet a Game Center groupFetch one GameCenterGroup with its member Game Center details.
asc_get_game_center_matchmaking_queueGet a Game Center matchmaking queueGET /v1/gameCenterMatchmakingQueues/{id} with its rule set and experiment rule set included.
asc_get_game_center_matchmaking_queue_metricsGet Game Center matchmaking queue metricsTime-series metrics for a matchmaking queue: matchmakingRequests (count + seconds in queue, by result MATCHED/CANCELED/EXPIRED), matchmakingQueueSizes (requests waiting), matchmakingSessions (matches made + player count), and the experiment* variants for the experiment rule set. groupBy / filters / sort are checked against the chosen metric.
asc_get_game_center_matchmaking_rule_metricsGet Game Center matchmaking rule metricsTime-series metrics for one matchmaking rule: matchmakingBooleanRuleResults (true/false counts), matchmakingNumberRuleResults (value distribution), matchmakingRuleErrors (expression errors). Group or filter by queue.
asc_get_game_center_matchmaking_rule_setGet a Game Center matchmaking rule setGET /v1/gameCenterMatchmakingRuleSets/{id}.
asc_get_iapGet an in-app purchaseFetch a single in-app purchase (v2) by its ASC ID.
asc_get_iap_availabilityGet the availability of an in-app purchaseFetch an IAP's InAppPurchaseAvailability — availableInNewTerritories plus the record id to pass to asc_list_iap_available_territories. Reads through the V2 parent (/v2/inAppPurchases/{id}/inAppPurchaseAvailability).
asc_get_iap_localizationGet an IAP localizationFetch a single InAppPurchaseLocalization by ID. Returns name + description + locale + state.
asc_get_iap_offer_codeGet an IAP offer code campaignFetch one IAP offer-code campaign with its prices, one-time-use batches and custom codes included.
asc_get_iap_offer_code_custom_codeGet an IAP custom offer codeFetch one custom (multi-use) code of an IAP offer code by ID.
asc_get_iap_offer_code_one_time_use_codesGet an IAP one-time-use code batchFetch one one-time-use code batch of an IAP offer code by ID.
asc_get_marketplace_search_detailGet an app's marketplace search detailGET /v1/apps/{id}/marketplaceSearchDetail — the catalogUrl for a MARKETPLACE app (alternative app store). Observed live: calling this on a NON-marketplace app returns an Apple-side 500 UNEXPECTED_ERROR rather than a clean 404 — that 500 means "not a marketplace app", not an outage.
asc_get_merchant_idGet a Merchant IDFetch one Merchant ID with its certificates (without certificateContent — use asc_get_certificate for that).
asc_get_nominationGet a featuring nominationFetch one nomination with its full description, notes, publish window, device families, locales, supplemental links, and related apps/events/territories.
asc_get_pass_type_idGet a Pass Type IDFetch one Pass Type ID with its certificates (without certificateContent — use asc_get_certificate for that).
asc_get_pre_release_versionGet a pre-release versionFetch a single PreReleaseVersion with its builds relationship expanded. Returns version + platform + the to-many builds linkage. Read-only.
asc_get_profileGet a provisioning profile (with content)Fetch one profile including `profileContent` — base64 of the actual .mobileprovision file (decode and drop into ~/Library/MobileDevice/Provisioning Profiles or a CI secret). Includes the bundle ID, certificates, and devices it was built from.
asc_get_promoted_purchaseGet a PromotedPurchaseFetch a single PromotedPurchase by ID with its linked IAP / subscription expanded. Returns visibleForAllUsers + enabled + state + the relationship info for the promoted item.
asc_get_review_submissionGet a review submissionFetch a single review submission with its items + app relationship expanded. Use to see the current state and which items (App Store versions, etc.) are attached. The items relationship surfaces ReviewSubmissionItem state (READY_FOR_REVIEW / ACCEPTED / APPROVED / REJECTED / REMOVED), useful for diagnosing partial-approval scenarios.
asc_get_sales_reportDownload a sales reportGET /v1/salesReports — gzipped TSV download, NOT a JSON:API list. Pick reportType (SALES = units by day/week/month; SUBSCRIPTION = active sub counts; SUBSCRIPTION_EVENT = renew/cancel events; SUBSCRIBER = per-subscriber detail; INSTALLS, PRE_ORDER, …), reportSubType, frequency, and reportDate matching the frequency granularity (DAILY/WEEKLY → YYYY-MM-DD, MONTHLY → YYYY-MM, YEARLY → YYYY). Omit reportDate for the latest available — SALES-family only; subscription-family types have NO latest-default on Apple's side (observed live), so the tool defaults their DAILY date to yesterday. Subscription…
asc_get_subscriptionGet a subscriptionFetch a single auto-renewable Subscription by ID. Returns name (internal), productId, subscriptionPeriod, state, groupLevel, familySharable, multiSeatStatus, marketSettings. The customer-facing name and description live on the subscription localizations (asc_list_subscription_localizations).
asc_get_subscription_availabilityGet the availability of a subscriptionFetch a subscription's standard availability — availableInNewTerritories plus the record id to pass to asc_list_subscription_available_territories. Reads /v1/subscriptions/{id}/planAvailabilities and returns the UPFRONT plan record, which is what the deprecated SubscriptionAvailability resource mirrored (same territory set, verified live). Any MONTHLY (12-month-commitment) plan record is listed too. Returns a note, not an error, when the subscription has no availability yet.
asc_get_subscription_grace_periodGet the billing grace period of an appFetch an app's subscriptionGracePeriod — whether billing grace period is opted in (production + sandbox separately), its duration (THREE_DAYS / SIXTEEN_DAYS / TWENTY_EIGHT_DAYS) and renewalType (ALL_RENEWALS / PAID_TO_PAID_ONLY). Grace period keeps subscribers entitled while Apple retries a failed renewal payment. Returns the record id needed for PATCH.
asc_get_subscription_groupGet a subscription groupFetch a single SubscriptionGroup by ID. Returns its internal referenceName. The customer-facing group heading is NOT here — it lives on the group localizations (asc_list_subscription_group_localizations).
asc_get_subscription_group_localizationGet a subscription group localizationFetch a single SubscriptionGroupLocalization by ID. Returns name + customAppName + locale + state.
asc_get_subscription_introductory_offerGet a subscription introductory offerFetch a single introductory offer by ID.
asc_get_subscription_localizationGet a subscription localizationFetch a single SubscriptionLocalization by ID. Returns name + description + locale + state.
asc_get_subscription_offer_codeGet a subscription offer code campaignFetch a single offer-code campaign by ID, including its per-territory prices, one-time-use code batches, and custom codes (if any).
asc_get_subscription_promotional_offerGet a subscription promotional offerFetch a single promotional offer by ID, including its per-territory prices.
asc_get_subscription_win_back_offerGet a subscription win-back offerFetch a single win-back offer by its Apple resource ID, including its subscription and per-territory prices.
asc_get_userGet a team userFetch one user with roles, allAppsVisible, provisioningAllowed and the visible-app ids. Read-only.
asc_get_user_invitationGet a user invitationFetch one pending invitation with roles, expiry and visible-app ids. Read-only.
asc_get_version_alternative_distribution_packageGet a version's alternative distribution packageGET /v1/appStoreVersions/{id}/alternativeDistributionPackage — the to-one package record for a version (or an error when none was created).
asc_get_version_experimentGet a product-page experimentGET /v2/appStoreVersionExperiments/{id} with treatments + latestControlVersion included — the full experiment record for inspecting state before submitting, starting, or stopping.
asc_get_webhookGet a webhookGET /v1/webhooks/{id} — one webhook with its app relationship. The secret is write-only and never returned. For delivery history use asc_list_webhook_deliveries.
asc_list_accessibility_declarationsList accessibility declarations of an appGET /v1/apps/{id}/accessibilityDeclarations — the per-device-family accessibility feature declarations ("Accessibility Nutrition Labels"). Filter by deviceFamily and/or state (DRAFT / PUBLISHED / REPLACED). The digest shows one row per declaration with the supported-feature flags.
asc_list_actorsList actorsResolve actors — the 'who' behind changes (a USER, an API_KEY, XCODE_CLOUD or APPLE). Apple requires filter[id]: pass the actor ids you got from another resource's actor relationship. Read-only.
asc_list_alternative_distribution_domainsList alternative distribution domainsGET /v1/alternativeDistributionDomains — team-level registered website domains for EU web distribution. Entitlement-gated (403 = account not enrolled).
asc_list_alternative_distribution_keysList alternative distribution keysGET /v1/alternativeDistributionKeys — the PUBLIC signing keys registered with Apple (the private halves never leave your infrastructure). Use asc_get_app_alternative_distribution_key for the to-one app linkage.
asc_list_alternative_distribution_package_deltasList deltas of a package versionGET /v1/alternativeDistributionPackageVersions/{id}/deltas — update deltas (smaller downloads from prior versions) with pre-signed URLs. Raw JSON (URLs verbatim).
asc_list_alternative_distribution_package_variantsList variants of a package versionGET /v1/alternativeDistributionPackageVersions/{id}/variants — per-device-thinning variants with pre-signed download URLs + key blobs. Raw JSON (URLs verbatim).
asc_list_alternative_distribution_package_versionsList versions of an alternative distribution packageGET /v1/alternativeDistributionPackages/{id}/versions — the dated builds of a package. State COMPLETED = downloadable via the pre-signed url (time-limited per urlExpirationDate — download promptly, re-list for fresh URLs, and NEVER send the ASC bearer to the download host). Variants/deltas per version via the dedicated list tools.
asc_list_analytics_report_instancesList instances of an analytics reportGET /v1/analyticsReports/{id}/instances — the dated materializations of one report, one row per (granularity, processingDate). Filter granularity DAILY/WEEKLY/MONTHLY and/or processingDate (YYYY-MM-DD). Take an instance ID into asc_list_analytics_report_segments. Empty within ~48h of creating the request is normal.
asc_list_analytics_report_requestsList analytics report requests of an appGET /v1/apps/{id}/analyticsReportRequests — the existing requests (at most one ONGOING + one ONE_TIME_SNAPSHOT). stoppedDueToInactivity=true on an ONGOING request means Apple auto-paused it; delete + recreate to resume.
asc_list_analytics_report_segmentsList segments of an analytics report instanceGET /v1/analyticsReportInstances/{id}/segments — the downloadable chunks of one instance: checksum, sizeInBytes, and a PRE-SIGNED TIME-LIMITED url. Download promptly with asc_download_analytics_report_segment (pass the URL through verbatim); if a URL expires, re-list segments for fresh ones.
asc_list_analytics_reportsList reports under an analytics report requestGET /v1/analyticsReportRequests/{id}/reports — the report catalog: one row per report name (e.g. "App Store Installation and Deletion Standard") within a category. Filter by category (COMMERCE for downloads/proceeds, APP_USAGE for sessions/crashes, APP_STORE_ENGAGEMENT for impressions/page views) or exact name. Take a report ID into asc_list_analytics_report_instances.
asc_list_app_categoriesList App Store category catalogList Apple's App Store category catalog with subcategories included. Read-only. Each category carries the platforms it applies to (IOS/MAC_OS/TV_OS/VISION_OS); subcategories are returned in `included[]` via the parent → subcategories relationship. Use to resolve human-readable category names to category IDs before calling asc_patch_app_info to set primary/secondary categories. Categories are app-scope, not app-store-version-scope — changing them mutates the AppInfo record.
asc_list_app_clip_advanced_experiencesList App Clip advanced experiencesList an App Clip's advanced experiences — per-URL cards for App Clip Codes, NFC tags, QR codes and Apple Maps place cards. Each row: invocation link, status (RECEIVED / DEACTIVATED / APP_TRANSFER_IN_PROGRESS), place match status, action, business category, default language, localization count and version. Filters: status, placeStatus, action.
asc_list_app_clip_default_experience_localizationsList App Clip default experience localizationsList a default experience's localizations: locale, card subtitle and the header image (ID + delivery state). Filter with locale.
asc_list_app_clip_default_experiencesList App Clip default experiencesList an App Clip's default experiences — the card shown for Safari Smart App Banners, Messages links and the default App Clip link. One per app version: each row shows the action (OPEN / VIEW / PLAY), the version it releases with, the localization count and the review detail ID. withReleaseVersion=true keeps only experiences linked to a version (exists[releaseWithAppStoreVersion]).
asc_list_app_clipsList an app's App ClipsList the App Clips of an app (one per App Clip target). An App Clip record appears after a build containing the clip is uploaded; the API cannot create one. Each row: the clip bundle ID and how many default experiences it has. Next: asc_list_app_clip_default_experiences / asc_list_app_clip_advanced_experiences.
asc_list_app_custom_product_page_localizationsList localizations for a CPP versionList AppCustomProductPageLocalization records under an AppCustomProductPageVersion. Each row carries locale + promotionalText length + a short preview + the localization ID. Per (version, locale).
asc_list_app_custom_product_page_versionsList versions for a Custom Product PageList AppCustomProductPageVersion records under a CPP. Each row carries the version string (typically auto-generated), state (PREPARE_FOR_SUBMISSION / READY_FOR_REVIEW / WAITING_FOR_REVIEW / IN_REVIEW / ACCEPTED / APPROVED / REPLACED_WITH_NEW_VERSION / REJECTED), deepLink, and version ID.
asc_list_app_custom_product_pagesList Custom Product Pages for an appList AppCustomProductPage records under an app. Each row carries the page name, the public URL (once a version is APPROVED), the visible flag (wire `visible`, Swift `isVisible`), and the page ID. Use to inspect which CPP variants exist before patching, adding versions, or deleting.
asc_list_app_encryption_declarationsList App Encryption Declarations for an appList AppEncryptionDeclaration records under an app. Each row carries the appDescription, current state (CREATED / IN_REVIEW / APPROVED / REJECTED / INVALID / EXPIRED), codeValue (ECCN export classification once Apple has reviewed), the exempt flag, and the three encryption flags (proprietary / thirdParty / availableOnFrenchStore). Used to find a declaration to link a build to.
asc_list_app_event_localizationsList AppEvent localizationsList AppEventLocalization records under an AppEvent. Each row carries locale + name + shortDescription length + longDescription length + the localization ID. Per (event, locale). Use to inspect existing per-locale copy before adding new locales or patching existing ones.
asc_list_app_event_screenshotsList event screenshots under a localization (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced in-app event screenshots with the App Asset Library. Use asc_upload_asset_library_image + asc_post_asset_library_placement (parentType appEventLocalizations, placementType EVENT_CARD_ASSET or EVENT_DETAILS_PAGE_ASSET) instead; asc_list_localization_placements lists what a localization shows. List AppEventScreenshot records under an AppEventLocalization. Each row carries fileName + fileSize + the asset slot (EVENT_CARD / EVENT_DETAILS_PAGE) + assetDeliveryState (UPLOAD_COMPLETE / PROCESSING / COMPLETE / FAILED). Use to inspect upload pro…
asc_list_app_event_video_clipsList event video clips under a localization (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced in-app event video clips with the App Asset Library. Use asc_upload_asset_library_video + asc_post_asset_library_placement (parentType appEventLocalizations, placementType EVENT_CARD_ASSET or EVENT_DETAILS_PAGE_ASSET) instead; asc_list_localization_placements lists what a localization shows. List AppEventVideoClip records under an AppEventLocalization. Each row carries fileName + fileSize + previewFrameTimeCode + asset slot (EVENT_CARD / EVENT_DETAILS_PAGE) + the two delivery states (assetDeliveryState for the source file, videoDelivery…
asc_list_app_eventsList App Events for an appList AppEvent records for an app. Each row carries the referenceName, current eventState (DRAFT / READY_FOR_REVIEW / WAITING_FOR_REVIEW / IN_REVIEW / REJECTED / ACCEPTED / APPROVED / PUBLISHED / PAST / ARCHIVED), badge, purpose, priority, primaryLocale, and the count of territory schedules. Use to find the event ID before fetching its localizations or assets.
asc_list_app_info_localizationsList AppInfo localizationsList AppInfoLocalization records under an AppInfo. Each row carries locale + name + subtitle + privacy URLs/text. Use to inspect existing per-locale copy before adding new locales or patching existing ones.
asc_list_app_infosList App Infos for an appList AppInfo records for an app. Apps typically have one AppInfo per distribution track — most apps have just one (the App Store track); macOS notarization can introduce a second. Each row shows the state, appStoreState (mirrored from the linked AppStoreVersion), and appStoreAgeRating. Use to find the AppInfo ID before patching categories or fetching localizations.
asc_list_app_preview_setsList preview sets under a parent localization (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced app preview sets with the App Asset Library. Use asc_upload_asset_library_video + asc_post_asset_library_placement (placementType APP_PREVIEW) instead; asc_list_localization_placements lists what a localization shows. List AppPreviewSet records under a parent localization (an AppStoreVersionLocalization, an AppCustomProductPageLocalization, or an AppStoreVersionExperimentTreatmentLocalization). Each row carries the previewType (IPHONE_67, IPAD_PRO_129, …) and the set ID. Note: PreviewType values are distinct from ScreenshotDisplayType —…
asc_list_app_previewsList previews under a set (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced app preview sets with the App Asset Library. Use asc_upload_asset_library_video + asc_post_asset_library_placement (placementType APP_PREVIEW) instead; asc_list_localization_placements lists what a localization shows. List AppPreview records under an AppPreviewSet. Each row carries fileName + fileSize + previewFrameTimeCode + the two delivery states (assetDeliveryState for the source file, videoDeliveryState for Apple-side transcode).
asc_list_app_price_pointsList app price pointsList the valid price points a paid app can be set to in a given territory. Apple rotates these IDs; cache only within a single run. Pass nearAmount when you already know the target price — the response is narrowed to the nearest tiers client-side (Apple does not support a near-amount filter server-side, so the full list is still paginated but only the nearest tiers are surfaced).
asc_list_app_pricesList app pricesList the current price schedule for a paid app across territories. Returns both manual (per-territory) overrides and automatic prices derived from the base territory. Auto-paginates; pass raw:true for the full JSON:API payload.
asc_list_app_screenshot_setsList screenshot sets under a parent localization (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced screenshot sets with the App Asset Library. Use asc_upload_asset_library_image + asc_post_asset_library_placement instead; asc_list_localization_placements lists what a localization shows. List AppScreenshotSet records under a parent localization (an AppStoreVersionLocalization, an AppCustomProductPageLocalization, or an AppStoreVersionExperimentTreatmentLocalization). Each row carries the screenshotDisplayType (APP_IPHONE_67, APP_IPAD_PRO_129, …) and the set ID. Use to find the set for a given (locale, device-class) pair before listing…
asc_list_app_screenshotsList screenshots under a set (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced screenshot sets with the App Asset Library. Use asc_upload_asset_library_image + asc_post_asset_library_placement instead; asc_list_localization_placements lists what a localization shows. List AppScreenshot records under an AppScreenshotSet. Each row carries fileName + fileSize + assetDeliveryState (UPLOAD_COMPLETE / PROCESSING / COMPLETE / FAILED) + a short marker showing whether sourceFileChecksum has been committed. Use to inspect upload progress or to enumerate IDs for deletion.
asc_list_app_store_version_localizationsList App Store version localizationsList App Store version localizations under one version. Each row carries locale + whatsNew length/preview + description length + keywords + promotionalText. Use to see which locales already have copy before adding/patching more. THIS IS THE LLM-WIN ENTRY POINT: list, pick a source locale, translate into target locales, patch each.
asc_list_app_store_versionsList App Store versions for an appList App Store versions for ONE app. appId is required — Apple's /v1/appStoreVersions collection is write-only on the GET side (returns FORBIDDEN_ERROR: "does not allow GET_COLLECTION"), so the only way to enumerate versions is via the per-app relationship path /v1/apps/{id}/appStoreVersions. Returns rows with platform, versionString, current state, and IDs in Apple's default order (no `sort` parameter is accepted on this path — Apple rejects it). Use raw:true and post-sort client-side if a specific order is needed.
asc_list_app_tagsList structured-ASO tags on an appList the AppTag membership for an app — Apple's structured-ASO tag surface. Each row shows the tag name and isVisibleInAppStore flag. Tag membership management (adding/removing tags) is via the App.appTags linkage, which v0.12 does not yet wrap — coming in v0.12.1.
asc_list_appsList appsList apps on the App Store Connect account. Returns a compact table by default; pass raw:true to get the full JSON:API response.
asc_list_background_asset_upload_filesList background asset upload filesList the files of an asset pack version: assetType (ASSET / MANIFEST), file name, size and delivery state (AWAITING_UPLOAD → UPLOAD_COMPLETE → COMPLETE / FAILED).
asc_list_background_asset_versionsList background asset versionsList an asset pack's versions: version number, processing state (AWAITING_UPLOAD → PROCESSING → COMPLETE / FAILED), platforms, locale, and the release state on each track (internal beta, external beta, App Store). Filters on each of those.
asc_list_background_assetsList an app's background assets (asset packs)List an app's Apple-hosted background asset packs. Each row: assetPackIdentifier, archived, storage used, and the version number live on each track (internal TestFlight, external TestFlight, App Store). Filters: archived, assetPackIdentifier, and the locale / platforms of the pack's versions.
asc_list_beta_app_localizationsList per-app beta localizationsList BetaAppLocalizations under an app. Each row carries description + feedbackEmail + marketingUrl + privacyPolicyUrl + tvOsPrivacyPolicy + locale. These are the standing beta-app fields shown in TestFlight above each build's "What to Test".
asc_list_beta_app_review_detailsList beta app review details (typically one per app)List BetaAppReviewDetail records. Filter by appId to scope to one app (typically returns one record per app). The detail record persists across builds — same contact info + demo account + notes are reused for every submission unless you patch it.
asc_list_beta_app_review_submissionsList beta app review submissionsList beta-app-review submissions across the team, with the optional buildId filter to narrow to a single build's submissions (typically 0 or 1 per build — re-submissions are rare). Each row shows betaReviewState (WAITING_FOR_REVIEW / IN_REVIEW / APPROVED / REJECTED) and submittedDate.
asc_list_beta_build_localizationsList per-build "What to Test" localizationsList BetaBuildLocalizations under a build. Each row is one locale's "What to Test" entry for that build (max 4000 chars). Use to see what locales already have copy before adding/patching more.
asc_list_beta_feedback_crash_submissionsList beta feedback crash submissionsList crash feedback testers agreed to share from TestFlight via GET /v1/apps/{id}/betaFeedbackCrashSubmissions. Same filters as the screenshot list (build, tester, device, OS, platform). Each record has a crashLog relationship — pull the log text with asc_get_beta_feedback_crash_log. Read-only resource.
asc_list_beta_feedback_screenshot_submissionsList beta feedback screenshot submissionsList screenshot feedback testers sent from TestFlight via GET /v1/apps/{id}/betaFeedbackScreenshotSubmissions. Each row shows created date, device, OS, comment preview, screenshot count, and build/tester linkage. Filter by build to triage feedback per release ("summarize feedback on build 132"). Read-only resource — testers create these from the device.
asc_list_beta_groupsList beta groupsList beta groups. Pass appId to scope to a single app (the common case). Each row shows name, kind (INT/EXT), tester-count via the betaTesters relationship if requested, public-link state, and ID. Use to find a group before assigning a build or inviting testers.
asc_list_beta_license_agreementsList TestFlight beta license agreementsList beta license agreements (one per app, created by Apple), optionally for given app ids. Empty text = Apple standard terms.
asc_list_beta_recruitment_criterion_optionsList valid recruitment criterion optionsGET /v1/betaRecruitmentCriterionOptions — the device families and OS versions Apple currently accepts in deviceFamilyOsVersionFilters. Consult before creating/patching a criterion so min/max values are valid.
asc_list_beta_testersList beta testersList beta testers. Pass betaGroupId to scope to one group, or omit it to list team-wide. Per-app scoping is NOT supported by Apple — /v1/apps/{id}/betaTesters returns 403 FORBIDDEN_ERROR ("does not allow GET_RELATED. Allowed operation is: DELETE"). To get every tester on an app, list the app's groups with asc_list_beta_groups, then iterate this tool with each betaGroupId and dedupe by tester ID. Each row shows email + firstName + lastName + invite state.
asc_list_build_bundle_beta_app_clip_invocationsList TestFlight App Clip invocations of a build bundleList the TestFlight App Clip invocations (URL + localized titles) configured on an App Clip build bundle — the entries testers tap to launch the clip.
asc_list_build_bundle_file_sizesList download and install sizes of a build bundlePer-device download and install sizes of a build bundle (App Thinning variants) — the numbers behind App Store Connect's App File Sizes page and the 200 MB cellular-download limit.
asc_list_build_bundlesList the bundles of a buildList the bundles inside a processed build (the app, App Clips, extensions): bundle id, type, file name, minimum OS, SDK, architectures. The ids feed asc_list_build_bundle_file_sizes and the App Clip domain-status tools.
asc_list_build_upload_filesList the files of a build uploadList the files reserved in a build upload: name, asset type (ASSET = the binary), UTI, size and delivery state.
asc_list_build_uploadsList build uploadsList an app's build uploads (binaries sent through the App Store Connect API, Xcode or Transporter), newest first: version, build number, platform, state (AWAITING_UPLOAD / PROCESSING / COMPLETE / FAILED, plus error and warning counts), upload date and the resulting build id once processed (it equals the upload id). Slots abandoned mid-upload stay AWAITING_UPLOAD and sort first; remove them with asc_delete_build_upload. Use it to watch a fresh upload finish processing or to read why one FAILED.
asc_list_buildsList TestFlight buildsList TestFlight builds. Pass appId to scope to a single app (the common case — Apple paginates global build lists across the whole team). Optional processingState filter narrows to a single state (VALID is usually what you want — that's the testable subset). The digest shows version + processingState + uploadedDate + expiration in a compact table.
asc_list_bundle_idsList registered bundle IDsList the bundle IDs registered on the developer portal. The BUNDLE_ID_RECORD column is the opaque resource id the other provisioning tools take — not the reverse-DNS identifier. Optional identifier filter matches exactly. Requires an Admin-role API key.
asc_list_certificatesList signing certificatesList the signing certificates of the team with type, serial and expiry. Filter by certificateType to find e.g. all DISTRIBUTION certs. Requires an Admin-role API key.
asc_list_ci_artifactsList the artifacts of a build actionList the artifacts an action produced (archive, logs, result bundles, symbols). Fetch a single artifact with asc_get_ci_artifact to get its pre-signed downloadUrl.
asc_list_ci_build_actionsList the actions of a build runList the build actions (build / test / archive / analyze steps) of a run, with per-action status and issue counts. Action ids feed asc_list_ci_issues / asc_list_ci_test_results / asc_list_ci_artifacts.
asc_list_ci_build_run_buildsList the TestFlight builds a run producedList the TestFlight builds created by an Xcode Cloud run — the handoff point from CI to the v0.9 TestFlight surface (beta groups, testers, submit).
asc_list_ci_build_runsList Xcode Cloud build runsList build runs of a workflow (workflowId) or across a whole product (productId) — pass exactly one. Newest runs carry executionProgress until they finish, then completionStatus. The ISSUES column is errors/warnings/testFailures/analyzerWarnings.
asc_list_ci_environment_versionsList Xcode Cloud environment versions (Xcode + macOS)The Xcode and macOS versions Xcode Cloud currently offers — what a workflow's xcodeVersion / macOsVersion relationships can point at. Raw JSON (testDestinations nested under each Xcode version).
asc_list_ci_issuesList the issues of a build actionList the compiler/analyzer/test issues an action produced (type, category, file:line, message). The digest truncates messages at 120 chars — raw:true for full text.
asc_list_ci_productsList Xcode Cloud productsList Xcode Cloud products — one per app/framework onboarded to Xcode Cloud. The product id is the root of the CI hierarchy (workflows hang off it).
asc_list_ci_test_resultsList the test results of a build actionList per-test results of a TEST action (class, test name, status, failure message). Per-device destination details are in raw:true.
asc_list_ci_workflowsList Xcode Cloud workflows of a productList a product's workflows with their isEnabled / isLockedForEditing / clean flags. Use asc_get_ci_workflow for the full start-condition + actions configuration.
asc_list_customer_review_summarizationsList customer review summarizationsGET /v1/apps/{id}/customerReviewSummarizations — Apple's AI-aggregated review summary per (platform, territory, locale): the same summary text shown on the App Store product page. filter[platform] is REQUIRED by Apple; territory optional. Summarizations exist only where Apple has rolled the feature out and the app has enough reviews — an empty list is common.
asc_list_customer_reviewsList customer reviewsList published App Store reviews via GET /v1/apps/{id}/customerReviews (or scope to one version via appStoreVersionId — pass exactly one of the two). Filter by star rating (strings "1".."5"), territory, and whether a developer response already exists (hasPublishedResponse=false → the unanswered queue). Sort by createdDate or rating. Each row shows rating, title, reviewer, territory, response state, and IDs. No sentiment filter exists on Apple's side — use rating as the proxy ("1-star reviews mentioning the export bug" → filter ratings:["1"], then read bodies).
asc_list_devicesList registered devicesList the registered test devices of the team (name, class, model, status, UDID). Disabled devices still count against the 100-per-class membership-year limit until Apple’s annual reset.
asc_list_diagnostic_signaturesList diagnostic signatures of a buildGET /v1/builds/{id}/diagnosticSignatures — Apple's aggregated problem hotspots for one build (DISK_WRITES / HANGS / LAUNCHES), weighted by impact (weight sums to ~1 per type). Drill a signature's anonymized call stacks with asc_get_diagnostic_logs. Populates only with enough opted-in usage — empty on small apps is normal.
asc_list_end_user_license_agreement_territoriesList the territories a EULA coversList every territory the custom EULA applies to (all of them, paginated).
asc_list_experiment_treatmentsList treatments of an experimentGET /v2/appStoreVersionExperiments/{id}/appStoreVersionExperimentTreatments — the variants under test. PROMOTED column shows when a winning treatment was promoted to the real product page.
asc_list_game_center_activity_localizationsList Game Center activity localizationsList the localizations (locale, name, description) of a Game Center activity version.
asc_list_game_center_activity_versionsList Game Center activity versionsList the versions of a Game Center activity (version number, review state). Players see the LIVE one; edits go on a PREPARE_FOR_SUBMISSION version, which ships with the next app review.
asc_list_game_center_app_versionsList Game Center app versionsList an app's Game Center app versions: one per App Store version, saying whether Game Center is enabled for it. Pass appId or gameCenterDetailId; enabled filters. compatibilityVersionsOf lists the versions a given Game Center app version is compatible with instead.
asc_list_game_center_blocked_playersList blocked Game Center playersList the players blocked on an app's Game Center (their scores are hidden from leaderboards). Unblock with asc_patch_game_center_detail_player blocked:false. ⚠️ Live 2026-10-24 Apple answered 404 PATH_ERROR for this path (in the spec, not switched on yet); the tool says so when it happens.
asc_list_game_center_challenge_localizationsList Game Center challenge localizationsList the localizations (locale, name, description) of a Game Center challenge version.
asc_list_game_center_challenge_versionsList Game Center challenge versionsList the versions of a Game Center challenge (version number, review state). Players see the LIVE one; edits go on a PREPARE_FOR_SUBMISSION version, which ships with the next app review.
asc_list_game_center_group_detailsList the apps in a Game Center groupList the GameCenterDetails (one per app) that belong to a group, with the app name and bundle id.
asc_list_game_center_groupsList Game Center groupsList the Game Center groups on the account. A group lets several apps share achievements, leaderboards and leaderboard sets. Pass gameCenterDetailId to find the group one app is in.
asc_list_game_center_leaderboard_score_moderationsList leaderboard entries for moderationList the score entries on a leaderboard with rank, score, player and blocked flag — the moderation view for hiding cheated scores. blocked:true/false filters on exists[blocked]. Hide one with asc_patch_game_center_score_moderation, or block the player outright with asc_patch_game_center_detail_player. ⚠️ Live 2026-10-24 Apple answered 404 PATH_ERROR for this path (in the spec, not switched on yet); the tool says so when it happens.
asc_list_game_center_leaderboard_set_member_localizationsList leaderboard-set member localizationsList the per-locale names a leaderboard shows INSIDE a given leaderboard set (it can differ from the leaderboard's own name). Apple requires both ids.
asc_list_game_center_matchmaking_queuesList Game Center matchmaking queuesList matchmaking queues on this team, or only those using a rule set (ruleSetId). A queue is what your game names in GKMatchRequest.queueName.
asc_list_game_center_matchmaking_rule_setsList Game Center matchmaking rule setsList the rule sets on this team (account-wide, not per app). A rule set holds the rules and teams a matchmaking queue uses. Next: asc_list_game_center_matchmaking_rules / _teams / _queues with ruleSetId.
asc_list_game_center_matchmaking_rulesList Game Center matchmaking rulesList the rules of a matchmaking rule set (type, expression, weight).
asc_list_game_center_matchmaking_teamsList Game Center matchmaking teamsList the teams of a matchmaking rule set (name, min/max players).
asc_list_iap_available_territoriesList territories an in-app purchase is available inList the Territory rows behind an InAppPurchaseAvailability (bare 3-letter ISO ids). Pass the availability id from asc_get_iap_availability.
asc_list_iap_localizationsList IAP localizationsList InAppPurchaseLocalizations under an IAP. Each row carries locale + name + description + state. v2 IAPs only — legacy v1 IAPs aren't supported on this surface. Use asc_list_iaps to find an IAP ID first.
asc_list_iap_offer_code_custom_codesList custom codes of an IAP offer codeList the custom multi-use codes under an IAP offer-code campaign: the string itself, redemption cap, expiry, active, created.
asc_list_iap_offer_code_one_time_use_codesList one-time-use batches of an IAP offer codeList the one-time-use code batches under an IAP offer-code campaign (size, environment, expiry, active, created). The code strings come from asc_export_iap_offer_code_one_time_use_values.
asc_list_iap_offer_code_pricesList IAP offer code pricesList the per-territory prices of an IAP offer-code campaign: territory, customer price, proceeds and the inAppPurchasePricePoints id. Prices are set at create and cannot be changed.
asc_list_iap_offer_codesList IAP offer code campaignsList offer-code campaigns of an in-app purchase (consumable, non-consumable or non-renewing subscription). Each row: name, customer eligibility (NON_SPENDER / ACTIVE_SPENDER / CHURNED_SPENDER), active flag, production/sandbox code counts, number of territory prices. Auto-renewable subscriptions use asc_list_subscription_offer_codes instead. Pass territoryId to keep only campaigns priced in that territory.
asc_list_iap_price_pointsList IAP price pointsList the valid Apple price tiers for an in-app purchase in a given territory. Apple rotates these IDs; cache only within a single run. Pass nearAmount when you already know the target price — the response is narrowed to the nearest tiers client-side (Apple does not support a near-amount filter server-side, so the full list is still paginated but only the nearest tiers are surfaced).
asc_list_iap_pricesList IAP pricesList the current price schedule for an in-app purchase across territories. Like apps (and unlike subs), the schedule is one object with manual + automatic price children. Apple may reject chained includes or fields[inAppPurchasePricePoints] selectors on this endpoint (matches the appPriceSchedule pattern); we ask only for top-level relationships and resolve amounts separately via asc_list_iap_price_points.
asc_list_iapsList in-app purchasesList in-app purchases for an app (v2 surface — consumables, non-consumables, non-renewing subscriptions). Auto-renewable subscriptions are NOT listed here; use asc_list_subscriptions instead. Returns a compact table by default; pass raw:true for the full JSON:API payload. If this returns zero rows for an app you know has IAPs, the IAPs may be legacy-only (v1, deprecated) — migrate via the App Store Connect web UI.
asc_list_localization_placementsList the asset placements on a localizationList the App Asset Library placements on one localization — what a version / Custom Product Page / experiment treatment / in-app event localization shows, per placementType and device group, in storefront order. The replacement for listing screenshot sets + screenshots (and event screenshots / video clips). Each row names the placed asset. Filter by placementType (APP_SCREENSHOT, APP_PREVIEW, EVENT_CARD_ASSET, …), placementGroup (IPHONE_DYNAMIC_ISLAND_LARGE_PROFILE, …) or state. Live rows use ACTIVE / INACTIVE, which Apple's spec does not list.
asc_list_marketplace_webhooksList marketplace webhooksList the webhooks that notify a MARKETPLACE app about apps it distributes: GET /v1/apps/{marketplaceAppId}/webhooks, narrowed to webhooks subscribed to an ALTERNATIVE_DISTRIBUTION_* event (Apple's replacement for the deprecated /v1/marketplaceWebhooks). Pass legacy:true (no app id needed) to list the old team-level records instead. Secret is write-only and never shown.
asc_list_merchant_id_certificatesList the certificates of a Merchant IDList the signing certificates attached to a Merchant ID, with type, serial and expiry. Create new ones with asc_post_certificate.
asc_list_merchant_idsList Merchant IDsList the team's registered Merchant IDs. The ID column is the opaque record id the other Merchant ID tools take. Optional exact filters on identifier and name. Requires an Admin-role API key.
asc_list_nominationsList featuring nominationsList the team's App Store featuring nominations, filterable by app, state (DRAFT / SUBMITTED / ARCHIVED) and type. Newest-modified first.
asc_list_pass_type_id_certificatesList the certificates of a Pass Type IDList the signing certificates attached to a Pass Type ID, with type, serial and expiry. Create new ones with asc_post_certificate.
asc_list_pass_type_idsList Pass Type IDsList the team's registered Pass Type IDs. The ID column is the opaque record id the other Pass Type ID tools take. Optional exact filters on identifier and name. Requires an Admin-role API key.
asc_list_pre_release_versionsList pre-release versionsList pre-release versions (one per version string Apple has seen, across all platforms). Pass appId to scope to one app. Useful for grouping builds by version train (e.g. find every build of "2.5.0"). The /v1/preReleaseVersions resource is read-only — Apple creates and ages these records automatically based on uploaded builds.
asc_list_profilesList provisioning profilesList the provisioning profiles of the team with type, state (ACTIVE / INVALID) and expiry. Filter by profileType. INVALID profiles (after a cert revoke or capability change) need delete + re-create — profiles have no PATCH.
asc_list_promoted_purchasesList Promoted Purchases for an appList PromotedPurchase records under an app. Each row carries the visibleForAllUsers flag, enabled flag, current state (PREPARE_FOR_SUBMISSION / IN_REVIEW / APPROVED / REJECTED), the linked IAP / subscription ID, and the promoted-purchase ID. Use to inspect which promotions exist before patching, reordering, or deleting.
asc_list_review_submissionsList review submissionsList review submissions filtered by app. Filter[app]={appId} is required — Apple's collection isn't directly listable without it. Each row shows platform, state (READY_FOR_REVIEW / WAITING_FOR_REVIEW / IN_REVIEW / UNRESOLVED_ISSUES / CANCELING / COMPLETING / COMPLETE), and submittedDate. Use to find an in-flight submission before patching (submit/cancel) or adding items.
asc_list_sandbox_testersList sandbox testersList the StoreKit sandbox test accounts of the team — name, Apple Account (acAccountName), territory, accelerated subscription renewal rate, interrupt-purchases flag. Testers are created in the ASC UI; the API manages their settings. Lives on /v2 (no v1 surface).
asc_list_scm_git_referencesList the git references of a repositoryList the branches + tags of a repository as Apple tracks them. The reference id (NOT the bare branch name) is what asc_post_ci_build_run takes as sourceBranchOrTag.
asc_list_scm_providersList source-control providersList the SCM connections of the team (GitHub / GitHub Enterprise / GitLab / Bitbucket), with provider type + endpoint URL. Provider ids feed asc_list_scm_repositories.
asc_list_scm_pull_requestsList the pull requests of a repositoryList the pull requests of a repository as Apple tracks them — number, title, source→destination branches, open/closed.
asc_list_scm_repositoriesList source-control repositoriesList the repositories Xcode Cloud can see — all of them, or those of one provider (providerId). Repo ids feed the git-reference and pull-request listings.
asc_list_search_keywordsList indexed search keywords for an appList Apple's aggregated AppKeyword records for an app — every keyword Apple has indexed across the app's localizations. Optional filter[platform] + filter[locale] to narrow. Read-only at this surface; actual keyword writes still happen via the per-version `keywords` field on AppStoreVersionLocalization (v0.10's asc_patch_app_store_version_localization). Use this to inspect what Apple is actually indexing — useful for diagnosing ASO underperformance when your version-level keywords seemingly aren't surfacing in search.
asc_list_subscription_available_territoriesList territories a subscription is available inList the Territory rows (bare 3-letter ISO ids) a subscription is available in. Pass the plan-availability id from asc_get_subscription_availability, or the subscription id itself (the old SubscriptionAvailability id) — the tool then reads that subscription's UPFRONT plan. Uses /v1/subscriptionPlanAvailabilities/{id}/availableTerritories; the deprecated /v1/subscriptionAvailabilities path is no longer called.
asc_list_subscription_group_localizationsList subscription group localizationsList the customer-facing GROUP display names configured for a subscription group, one row per locale, with state (PREPARE_FOR_SUBMISSION / WAITING_FOR_REVIEW / APPROVED / REJECTED). Use to see which locales already have a group heading before adding more. Not to be confused with asc_list_subscription_localizations, which is the copy for one product inside the group.
asc_list_subscription_groupsList subscription groupsList subscription groups for an app.
asc_list_subscription_introductory_offersList subscription introductory offersList introductory offers (free trial / pay-as-you-go / pay-up-front) configured for a subscription. A PPP-aware offer is created one-per-territory, so an unfiltered call can return ~175 rows — pass territoryId (e.g. "USA") when you care about a single market, or the response can blow a tool-result token cap. Auto-paginates; pass raw:true for the full JSON:API payload. Wildcard offers (Apple's "all territories") show TERR as "(all)" and are ALWAYS kept when territoryId is set — a wildcard offer is live in every market, so hiding it would misreport the territory.
asc_list_subscription_localizationsList subscription localizationsList SubscriptionLocalizations under a subscription. Each row carries locale + name + description + state (PREPARE_FOR_SUBMISSION / WAITING_FOR_REVIEW / APPROVED / REJECTED). Use to see which locales already have copy before adding more.
asc_list_subscription_offer_code_custom_codesList custom (multi-use) codes for an offer code campaignList custom multi-use codes under an offer-code campaign. Each custom code is a single developer-chosen string redeemable by many customers (up to numberOfCodes redemptions total). Unlike one-time-use batches, the redeemable string IS the resource attribute — no separate /values export step. Useful for public marketing codes (e.g. "LAUNCH2026" usable by the first 500 customers).
asc_list_subscription_offer_code_one_time_use_codesList one-time-use code batches for an offer code campaignList one-time-use code batches under an offer-code campaign. Each batch carries numberOfCodes, expirationDate, active, and createdDate — the actual redeemable strings are retrieved with asc_export_subscription_offer_code_one_time_use_values against a specific batch.
asc_list_subscription_offer_codesList subscription offer code campaignsList offer-code campaigns configured for a subscription. Each campaign carries name, customer-eligibility cohorts (NEW/EXISTING/EXPIRED), offer mode, duration, and an active flag. Per-territory prices are linked via the prices relationship; one-time-use code batches and custom codes hang off the campaign via separate endpoints.
asc_list_subscription_plan_availabilitiesList plan availabilities of a subscriptionList a subscription's SubscriptionPlanAvailability records — per-plan-type (MONTHLY / UPFRONT) territory availability. Returns each record's id, planType and availableInNewTerritories; drill territories with asc_list_subscription_plan_available_territories.
asc_list_subscription_plan_available_territoriesList territories a subscription plan is available inList the Territory rows behind a SubscriptionPlanAvailability (bare 3-letter ISO ids). Pass the record id from asc_list_subscription_plan_availabilities.
asc_list_subscription_price_pointsList subscription price pointsList the valid price points a subscription can be set to in a given territory. Apple rotates these IDs; cache only within a single run. Pass nearAmount when you already know the target price — the response is narrowed to the nearest candidates client-side (Apple does not support a near-amount filter server-side, so the full list is still paginated but only the nearest tiers are surfaced).
asc_list_subscription_pricesList subscription pricesList the current price schedule for a subscription. Apple returns one row PER TERRITORY, so an unfiltered call on a worldwide subscription is ~175 rows — pass territoryId (e.g. "USA") whenever you care about a single market, or the response will be large enough to blow a tool-result token cap. Returns a compact table by default; pass raw:true for the full JSON:API payload (note: when territoryId is set the raw payload is narrowed too, though included[] still carries every territory).
asc_list_subscription_promotional_offer_pricesList subscription promotional offer pricesList the per-territory price rows attached to a promotional offer. Each row is a (territory, subscriptionPricePoint) pair — the price-point amount is resolved via the included subscriptionPricePoints resources.
asc_list_subscription_promotional_offersList subscription promotional offersList promotional offers (PAY_AS_YOU_GO / PAY_UP_FRONT / FREE_TRIAL) configured for a subscription. Promo offers target existing or lapsed subscribers (intro offers target new subscribers). Apple caps active promo offers at 10 per subscription.
asc_list_subscription_win_back_offer_pricesList subscription win-back offer pricesList the per-territory price rows attached to a win-back offer. Each row is a (territory, subscriptionPricePoint) pair — the price-point amount is resolved via the included subscriptionPricePoints resources. Prices are immutable after creation.
asc_list_subscription_win_back_offersList subscription win-back offersList win-back offers configured for a subscription. Win-back offers target LAPSED subscribers (intro offers target new subscribers; promo offers target existing/lapsed subscribers via a redeemed code). Apple surfaces win-back offers automatically to eligible churned customers based on the offer's customerEligibility* rules.
asc_list_subscriptionsList subscriptionsList auto-renewable subscriptions in a subscription group.
asc_list_territoriesList territoriesList App Store territories with their currency codes.
asc_list_territory_availabilitiesList territory availabilities for an appList TerritoryAvailability records for an app. The digest TERR column shows the decoded 3-letter ISO territory code (e.g. USA / BRA / JPN), but the actual TERR_ID column is an Apple-opaque base64 composite — `{"s":<appId>,"t":<code>}`. Each row carries whether the app is currently `available`, releaseDate (soft-launch date if scheduled), preOrderEnabled, preOrderPublishDate. Pass the TERR_ID (not the 3-letter code) to asc_post_app_availability_v2 / asc_end_app_availability_pre_order. NOTE: Apple's AppAvailability resource ID equals the app ID — both surfaces share the numeric identifier.
asc_list_treatment_localizationsList localizations of a treatmentGET /v1/appStoreVersionExperimentTreatments/{id}/appStoreVersionExperimentTreatmentLocalizations — the per-locale containers for variant assets. Hang screenshot/preview sets off each with the v0.13 asset tools (parentType appStoreVersionExperimentTreatmentLocalizations).
asc_list_user_invitation_visible_appsList the apps an invitation grantsList the apps a pending invitation will make visible. Read-only.
asc_list_user_invitationsList pending user invitationsList invitations that have not been accepted yet (accepted ones become users). Filter by email, roles or a visible app id. Read-only.
asc_list_user_visible_appsList the apps a user can seeList the apps in a user's visible-apps list. Meaningless while the user has allAppsVisible (or an all-app role like ADMIN) — they see every app then. Read-only.
asc_list_usersList team usersList the App Store Connect team's users with roles, app visibility (ALL or the visible app ids) and provisioning access. Filter by username (exact email), roles, or an app id the user can see. Read-only. Requires an Admin-role API key.
asc_list_version_experimentsList product-page experiments of an appGET /v1/apps/{id}/appStoreVersionExperimentsV2 (note: a /v1 path listing the V2, app-attached experiments — the modern surface). Each row shows name, state (9-state lifecycle), platform, traffic %, review-required flag, and start/end dates. Filter client-side by state from the digest.
asc_list_webhook_deliveriesList webhook deliveriesGET /v1/webhooks/{id}/deliveries — per-attempt delivery records: state (SUCCEEDED / FAILED / PENDING), event type, sent date, response HTTP status, error message, and whether the attempt was a redelivery. Filter by state and createdDate window to find failures ('list FAILED deliveries since yesterday'), then retry them with asc_post_webhook_redelivery. Apple REQUIRES the createdAfterOrAt filter (observed live) — when omitted, this tool defaults it to the widest window Apple accepts (~10 days back). Apple retains delivery history for 10 days at most.
asc_list_webhooksList webhooks of an appGET /v1/apps/{id}/webhooks — every webhook configured on the app: name, enabled state, endpoint URL, subscribed event types, and ID. The secret is write-only and never appears. Webhooks are per-app; list each app separately.
asc_patch_accessibility_declarationPatch / publish an accessibility declaration⚠️ publish=true is CUSTOMER-FACING: PATCH /v1/accessibilityDeclarations/{id} with publish=true puts the accessibility label live on the App Store product page (state → PUBLISHED; a previously published declaration for the family becomes REPLACED). Without publish, mutates the supports* flags on a DRAFT. Wire-key gotchas pinned by tests: `publish` (Swift isPublish) and the nine `supports*` flags (Swift isSupports*). Get explicit human approval before publishing.
asc_patch_age_rating_declarationUpdate the age rating declarationAnswer the age-rating questionnaire. Every field is optional and Apple MERGES — omitted keys keep their current value, so a partial update is safe, but you cannot clear a field by omitting it (send the explicit NONE / false). Content questions take a frequency: NONE / INFREQUENT_OR_MILD / FREQUENT_OR_INTENSE (some newer categories use INFREQUENT / FREQUENT). Raising any answer raises the computed rating. Overrides can only push the rating UP, never down. Writes to /v1/ageRatingDeclarations/{id}; the id equals the appInfo id and is resolved for you from appId. ⚠️ This drives the public age rati…
asc_patch_app_clip_advanced_experienceUpdate an App Clip advanced experienceUpdate an advanced experience: action, isPoweredBy, businessCategory, defaultLanguage, place, a new headerImageId, or localizations (the list replaces the current ones — pass all of them). removed=true takes the experience down. The link cannot change. Pass at least one field.
asc_patch_app_clip_app_store_review_detailUpdate an App Clip App Store review detailReplace the invocation URLs of an App Clip review detail. The list you pass is the whole new list.
asc_patch_app_clip_default_experienceUpdate an App Clip default experienceChange the action (OPEN / VIEW / PLAY) and/or the app version the default experience releases with. Pass at least one.
asc_patch_app_clip_default_experience_localizationUpdate an App Clip default experience localizationChange the card subtitle of one localization. The locale cannot change.
asc_patch_app_clip_default_experience_release_versionLink an App Clip default experience to a versionSet the App Store version a default experience releases with (PATCH relationships/releaseWithAppStoreVersion). Same link as asc_patch_app_store_version_app_clip_default_experience, set from the experience side. The API cannot unlink — link another version instead.
asc_patch_app_custom_product_pagePatch an AppCustomProductPage (name / visible)Update name and/or visibility on an existing AppCustomProductPage. Wire-key gotcha: Swift `isVisible` → wire `visible` (same strip pattern as AppTag.visibleInAppStore). Toggling visible=false retracts the public URL without deleting the page. Tool refuses empty PATCH.
asc_patch_app_custom_product_page_localizationPatch an AppCustomProductPageLocalizationUpdate promotionalText on an existing CPP localization. promotionalText is the ONLY mutable field (locale is immutable). Tool refuses empty PATCH; pass an empty string to clear if Apple allows it.
asc_patch_app_encryption_declaration_documentCommit an AppEncryptionDeclarationDocument upload (raw step 3)RAW step 3 of the three-step upload flow. PATCH with sourceFileChecksum (lowercase hex MD5 of the full file) + uploaded=true to commit. Wire-key gotcha: Swift `isUploaded` → wire `uploaded` (same strip as v0.13 / v0.14). Pass at least one of the two — empty PATCH refused. The composite asc_upload_app_encryption_declaration_document handles this automatically.
asc_patch_app_eventPatch an AppEventUpdate an AppEvent's attributes. Pre-check refuses for clearly frozen states (WAITING_FOR_REVIEW, IN_REVIEW). All attrs encodeIfPresent — only what you pass is sent. Tool refuses empty PATCH.
asc_patch_app_event_localizationPatch an AppEventLocalizationUpdate name / shortDescription / longDescription on an existing AppEventLocalization. Locale is immutable (excluded from UpdateRequest). All three attrs are encodeIfPresent. Tool refuses empty PATCH.
asc_patch_app_event_screenshotCommit an AppEventScreenshot upload (raw step 3) (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced in-app event screenshots with the App Asset Library. Use asc_upload_asset_library_image + asc_post_asset_library_placement (parentType appEventLocalizations, placementType EVENT_CARD_ASSET or EVENT_DETAILS_PAGE_ASSET) instead; asc_list_localization_placements lists what a localization shows. RAW step 3 of the three-step upload flow. PATCH with uploaded=true to commit the reservation. Wire-key gotcha: Swift `isUploaded` → wire `uploaded` (same strip as v0.13 AppScreenshot). The composite asc_upload_app_event_screenshot handles this autom…
asc_patch_app_event_video_clipPatch / commit an AppEventVideoClip (raw step 3) (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced in-app event video clips with the App Asset Library. Use asc_upload_asset_library_video + asc_post_asset_library_placement (parentType appEventLocalizations, placementType EVENT_CARD_ASSET or EVENT_DETAILS_PAGE_ASSET) instead; asc_list_localization_placements lists what a localization shows. RAW step 3 of the three-step upload flow + the only way to tweak previewFrameTimeCode on an existing clip. PATCH with uploaded=true to commit a reservation, or with previewFrameTimeCode alone to change the poster frame without re-uploading. Wire-key…
asc_patch_app_infoPatch an AppInfo (set category relationships)Set primary/secondary category + subcategory relationships on an AppInfo. AppInfoUpdateRequest is RELATIONSHIPS-ONLY (no mutable attributes). Each slot accepts a category ID (set/swap) or null (clear). All six slots are independently optional. Pre-check refuses for clearly frozen states (WAITING_FOR_REVIEW, IN_REVIEW) where Apple holds the resource during review. Other states pass through — Apple's PATCH rules vary subtly with state. Use asc_list_app_categories first to resolve human-readable category names to category IDs.
asc_patch_app_info_localizationPatch an AppInfo localizationUpdate name / subtitle / privacy fields on an existing AppInfoLocalization. All five attrs are encodeIfPresent (only what you pass is sent). Locale is immutable. Wire-key gotcha: privacyPolicyUrl / privacyChoicesUrl are camelCase (NOT Swift's all-caps URL suffix). Tool refuses empty PATCH.
asc_patch_app_previewPatch / commit an AppPreview (raw step 3) (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced app preview sets with the App Asset Library. Use asc_upload_asset_library_video + asc_post_asset_library_placement (placementType APP_PREVIEW) instead; asc_list_localization_placements lists what a localization shows. RAW step 3 of the three-step upload flow + the only way to tweak previewFrameTimeCode on an existing preview. PATCH with sourceFileChecksum + uploaded=true to commit a reservation, or with previewFrameTimeCode alone to change the poster frame without re-uploading the video. Wire-key gotcha: Swift `isUploaded` → wire `uploa…
asc_patch_app_screenshotCommit an AppScreenshot upload (raw step 3) (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced screenshot sets with the App Asset Library. Use asc_upload_asset_library_image + asc_post_asset_library_placement instead; asc_list_localization_placements lists what a localization shows. RAW step 3 of the three-step upload flow. PATCH the AppScreenshot with sourceFileChecksum (lowercase hex MD5 of the full file) + uploaded=true to commit the reservation. Wire-key gotcha: Swift `isUploaded` → wire `uploaded`. Pass at least one of the two — empty PATCH is refused. The composite asc_upload_screenshot handles this automatically.
asc_patch_app_store_review_detailUpdate the App Review detailPATCH an appStoreReviewDetail by id (get it from asc_get_app_store_review_detail). Apple merges — omitted attributes keep their current value; send an empty string to clear a text field. Pass at least one attribute.
asc_patch_app_store_versionPatch an App Store versionMutate version-level attributes: versionString, copyright, reviewType, releaseType, earliestReleaseDate, downloadable. Plus the build relationship (attach/swap/clear). All attrs are encodeIfPresent (only what you pass is sent). Wire-key gotcha: Swift `isDownloadable` → wire `downloadable`. STATE GATING IS DEFERRED — Apple's field-by-state matrix is not exhaustively documented and the rules vary (e.g. versionString is immutable post-release, but releaseType + earliestReleaseDate are mutable in PENDING_DEVELOPER_RELEASE to allow rescheduling). The tool does NOT pre-check; Apple's 409 STATE_ERROR…
asc_patch_app_store_version_app_clip_default_experienceAttach an App Clip default experience to a versionAttach a default experience to an App Store version (PATCH /v1/appStoreVersions/{id}/relationships/appClipDefaultExperience). The version must be editable. The API cannot detach — attach another experience instead. ⚠️ Changes the App Clip card that ships with that version.
asc_patch_app_store_version_localizationPatch an App Store version localizationUpdate attrs on an existing AppStoreVersionLocalization. ** PARENT VERSION STATE GATES WHICH FIELDS ARE MUTABLE: ** (a) In PREPARE_FOR_SUBMISSION / *_REJECTED / DEVELOPER_REMOVED_FROM_SALE — all six fields editable. (b) In READY_FOR_SALE / PENDING_DEVELOPER_RELEASE / REPLACED_WITH_NEW_VERSION / REMOVED_FROM_SALE — ONLY promotionalText is editable. To change anything else, create a new App Store version (asc_post_app_store_version — coming in v0.10.x). (c) In WAITING_FOR_REVIEW / IN_REVIEW / PROCESSING_FOR_APP_STORE — NOTHING is editable until Apple finishes the cycle. The tool pre-checks the p…
asc_patch_app_store_version_phased_releaseChange the state of a phased release (pause / resume / complete)PATCH the phasedReleaseState on an existing AppStoreVersionPhasedRelease. Apple's valid transitions: INACTIVE → ACTIVE (start the rollout), ACTIVE ↔ PAUSED (developer pause / resume), ACTIVE → COMPLETE (force immediate 100% rollout). Apple rejects invalid transitions with a clear error — pass through. This is the only mutable attr.
asc_patch_app_tagToggle App Store visibility on an AppTagToggle whether an AppTag is shown in the App Store search/product page UI. Wire key `visibleInAppStore` (stripped from Swift `isVisibleInAppStore`). Setting false hides the tag without removing it from the app's tag list — flip true to re-show. This is the ONLY mutable attribute on AppTag; categories/territories management lives on other linkage endpoints (v0.12.1).
asc_patch_asset_library_imageUpdate an App Asset Library imagePATCH a library image: uploaded=true commits a reservation (raw step 3), archived=true retires it from the library without deleting it (archived=false restores), referenceName renames it. Pass at least one.
asc_patch_asset_library_videoUpdate an App Asset Library videoPATCH a library video: uploaded=true commits a reservation (raw step 3), archived=true retires it (archived=false restores), referenceName renames it, previewFrameTimeCode moves the poster frame. Pass at least one.
asc_patch_background_assetArchive or restore a background assetArchive (archived=true) or restore (archived=false) an asset pack. archived is the only mutable field. ⚠️ Archiving stops serving the pack to new installs.
asc_patch_background_asset_upload_fileCommit a background asset file upload (raw step 3)RAW step 3: commit an upload file with the whole file's checksum (sent as sourceFileChecksums.file — hex MD5 by default, or SHA_256) and uploaded=true. Pass at least one.
asc_patch_beta_app_clip_invocationUpdate a beta App Clip invocationChange the URL of a TestFlight App Clip invocation.
asc_patch_beta_app_clip_invocation_localizationUpdate a beta App Clip invocation titleChange one localized title of a TestFlight App Clip invocation.
asc_patch_beta_app_localizationPatch a per-app beta localizationUpdate one or more attrs on an existing BetaAppLocalization. All five attrs are individually optional (encodeIfPresent — only what you pass is sent). Locale is immutable. Tool refuses an empty PATCH (no attrs passed) at the tool layer.
asc_patch_beta_app_review_detailPatch a beta app review detailUpdate the contact info, demo account, and notes on a BetaAppReviewDetail. All eight attrs are individually optional (encodeIfPresent). Set demoAccountRequired=true ONLY when the app gates content behind login — Apple's reviewer will use the demo credentials. Set demoAccountRequired=false to skip demo credential rendering on the review tool (omit demoAccountName/Password if so). Wire-key note: `demoAccountRequired` is the on-the-wire name (Apple strips the `is` prefix). Tool layer refuses empty PATCH.
asc_patch_beta_build_localizationPatch a per-build "What to Test" localizationUpdate the whatsNew body on an existing BetaBuildLocalization. Apple PATCH on this resource accepts ONLY whatsNew — locale is immutable. Pass the new copy verbatim (no diff/merge); the value replaces what's there.
asc_patch_beta_groupPatch a beta groupMutate a beta group's attributes. Apple PATCH on this resource accepts name, public-link state (publicLinkEnabled/publicLinkLimitEnabled/publicLinkLimit), feedbackEnabled, and the Apple Silicon Mac / Apple Vision build-availability flags. isInternalGroup and hasAccessToAllBuilds are IMMUTABLE — Apple rejects them in PATCH bodies. Tester and build membership is managed via the dedicated linkage tools (asc_add_beta_group_testers, asc_add_beta_group_builds, etc.) — not through this PATCH.
asc_patch_beta_license_agreementUpdate the beta license agreement textReplace the TestFlight beta license agreement text. Testers accept it before installing a build. There is no create or delete — every app has exactly one.
asc_patch_beta_recruitment_criterionPatch a recruitment criterionPATCH /v1/betaRecruitmentCriteria/{id} — REPLACES the whole deviceFamilyOsVersionFilters array (no per-entry add/remove on the wire). Read the current set first with asc_get_beta_group_recruitment_criterion, then send the complete desired set.
asc_patch_buildPatch a TestFlight build (expire / encryption flag)Mutate a build's `expired` flag (retire a build early — Apple normally expires 90 days after upload, but security holes or broken releases warrant immediate retirement) or `usesNonExemptEncryption` (compliance flag required before some submissions). Apple's PATCH schema on this resource ONLY accepts these two attributes — version/minOsVersion/processingState/etc are all immutable. Pass at least one of the two flags; omitting both no-ops at the wire (Apple returns the unchanged resource).
asc_patch_build_app_encryption_declarationLink a build to an AppEncryptionDeclaration (or null to unlink)Set the AppEncryptionDeclaration for a build. PATCH /v1/builds/{id}/relationships/appEncryptionDeclaration. Pass `appEncryptionDeclarationId` to link, pass null to clear the linkage. Each build can have at most ONE declaration. Apple's inverse linkage (declaration → builds[]) is DEPRECATED and not wrapped here — manage the linkage from the build side.
asc_patch_build_beta_detailPatch a build's BuildBetaDetail (auto-notify flag)Toggle `autoNotifyEnabled` on a BuildBetaDetail — when true, Apple pushes a TestFlight notification to every assigned tester the moment the build clears review + processing. Apple's PATCH schema on this resource ONLY accepts autoNotifyEnabled; internal/external build state attrs are Apple-managed reflections of review state and rejected from PATCH bodies.
asc_patch_build_upload_fileCommit a build upload file (raw step 4)RAW last step: mark a build upload file uploaded, with the whole file’s checksum (hex MD5 by default, or SHA_256). Apple then processes the build; follow it with asc_get_build_upload.
asc_patch_bundle_idRename a bundle IDUpdate a bundle-ID record's display name — the only mutable attribute (the reverse-DNS identifier is fixed at creation).
asc_patch_bundle_id_capabilityUpdate the settings of a capabilityUpdate a capability's settings (capability id from asc_get_bundle_id's included capabilities). capabilityType must be re-stated on the PATCH. Profiles on the bundle ID must be regenerated afterwards.
asc_patch_ci_workflowUpdate an Xcode Cloud workflow (simple attributes)PATCH a workflow: isEnabled (pause/resume it — the main use), clean, name, description. Deliberately does NOT expose the start-condition / actions[] structures — edit those in Xcode where they are validated. Pass at least one attribute. Wire note: the attribute really is `isEnabled` — Xcode Cloud keeps is-prefixes on the wire.
asc_patch_deviceRename or enable/disable a deviceUpdate a registered device: name and/or status (ENABLED / DISABLED). DISABLED removes it from new profiles but does NOT free its slot in the membership-year device count. Pass at least one attribute.
asc_patch_end_user_license_agreementUpdate a custom EULAChange the EULA text and/or REPLACE its territory set (territories not listed drop back to the standard EULA). Customer-visible. Pass at least one field.
asc_patch_experiment_treatmentPatch an experiment treatmentPATCH /v1/appStoreVersionExperimentTreatments/{id} — mutate name and/or appIconName (pre-submission). Pass at least one.
asc_patch_game_center_achievementUpdate a Game Center achievementPATCH a Game Center achievement: referenceName, points, showBeforeEarned, repeatable, activityProperties, or archived:true to hide a live achievement (Apple does not delete live ones). vendorIdentifier is immutable.
asc_patch_game_center_activityUpdate a Game Center activityPATCH /v1/gameCenterActivities/{id} — referenceName, playStyle, player counts, supportsPartyCode, properties, archived. archived=true retires the activity without deleting it. vendorIdentifier cannot change.
asc_patch_game_center_activity_imageCommit a Game Center activity imageDescription is built at runtime.
asc_patch_game_center_activity_localizationUpdate a Game Center activity localizationDescription is built at runtime.
asc_patch_game_center_activity_versionUpdate a Game Center activity versionPATCH /v1/gameCenterActivityVersions/{id} — fallbackUrl (where players without the game go). Pass null to clear it.
asc_patch_game_center_app_versionEnable or disable Game Center for an app versionPATCH /v1/gameCenterAppVersions/{id} — enabled. ⚠️ enabled=false turns Game Center off for players on that App Store version; confirm intent first.
asc_patch_game_center_challengeUpdate a Game Center challengePATCH /v1/gameCenterChallenges/{id} — referenceName, repeatable, archived, and optionally the v2 leaderboard (leaderboardId). archived=true retires the challenge without deleting it.
asc_patch_game_center_challenge_imageCommit a Game Center challenge imageDescription is built at runtime.
asc_patch_game_center_challenge_localizationUpdate a Game Center challenge localizationDescription is built at runtime.
asc_patch_game_center_detailUpdate a Game Center detailPATCH a GameCenterDetail's relationships: move the app into a Game Center group (gameCenterGroupId — shared achievements/leaderboards across apps; Apple treats joining a group as one-way for live games), and set the default leaderboard (defaultLeaderboardId) or default group leaderboard (defaultGroupLeaderboardId) shown first in the Game Center dashboard. Pass at least one.
asc_patch_game_center_detail_playerBlock or unblock a Game Center playerPATCH a GameCenterDetailPlayer: blocked:true hides the player's scores on this app's leaderboards (cheaters), blocked:false restores them. Player ids come from asc_list_game_center_blocked_players or the `player` of asc_list_game_center_leaderboard_score_moderations. ⚠️ Changes what players see on live leaderboards.
asc_patch_game_center_groupRename a Game Center groupPATCH a GameCenterGroup referenceName (its only attribute).
asc_patch_game_center_leaderboardUpdate a Game Center leaderboardPATCH a Game Center leaderboard: referenceName, defaultFormatter, submissionType, scoreSortType, score range, recurrence, visibility (SHOW_FOR_ALL / HIDE_FOR_ALL), activityProperties, or archived:true to retire a live leaderboard (Apple does not delete live ones). Pass null to clear the score range or recurrence fields. vendorIdentifier is immutable. ⚠️ Changing sort or submission type on a live leaderboard changes how existing scores rank.
asc_patch_game_center_leaderboard_setRename a Game Center leaderboard setPATCH a leaderboard set referenceName (its only mutable attribute). Change its members with asc_add / asc_set / asc_remove_game_center_leaderboard_set_members.
asc_patch_game_center_leaderboard_set_member_localizationRename a leaderboard-set member localizationPATCH the name of a leaderboard-set member localization (locale is immutable).
asc_patch_game_center_matchmaking_queueUpdate a Game Center matchmaking queuePATCH /v1/gameCenterMatchmakingQueues/{id} — swap the rule set or experiment rule set, or replace classicMatchmakingBundleIds (the list is replaced, not merged). Live players move to the new rules at once.
asc_patch_game_center_matchmaking_ruleUpdate a Game Center matchmaking rulePATCH /v1/gameCenterMatchmakingRules/{id} — description, expression, weight. referenceName and type are fixed. A queue using this rule set picks the change up at once.
asc_patch_game_center_matchmaking_rule_setUpdate a Game Center matchmaking rule setPATCH /v1/gameCenterMatchmakingRuleSets/{id} — minPlayers and/or maxPlayers.
asc_patch_game_center_matchmaking_teamUpdate a Game Center matchmaking teamPATCH /v1/gameCenterMatchmakingTeams/{id} — minPlayers and/or maxPlayers.
asc_patch_game_center_score_moderationHide or restore a leaderboard entryPATCH a leaderboard score entry: blocked:true hides it from the leaderboard, blocked:false restores it. ⚠️ Changes what players see on a live leaderboard.
asc_patch_iapUpdate an in-app purchasePATCH /v2/inAppPurchases/{id} — name (internal), reviewNote, familySharable. Pass null to clear a field. productId and inAppPurchaseType are immutable and never sent. Apple refuses turning familySharable OFF on a live product.
asc_patch_iap_localizationPatch an IAP localizationUpdate name and/or description on an existing InAppPurchaseLocalization. Both optional (encodeIfPresent). Locale immutable; state server-managed. Tool refuses empty PATCH. ** PARENT-STATE GATE (likely): ** Same structural pattern as SubscriptionLocalization, where the gate is now CONFIRMED (409 ENTITY_ERROR.ATTRIBUTE.INVALID.UNMODIFIABLE, "Cannot edit ... when it is in ACTIVE state", observed live 2026-09-13 on APPROVED copy under a live parent). Expect Apple to lock name/description here the same way once the IAP is live or in review. Not yet observed on this resource, so it is not pre-checke…
asc_patch_iap_offer_codeToggle an IAP offer code campaign active flagActivate or deactivate an IAP offer-code campaign — the only mutable attribute. Deactivating stops redemption of every batch and custom code under it; completed redemptions are kept. On subscriptions deactivation is one-way (Apple refuses reactivation) and the same is expected here.
asc_patch_iap_offer_code_custom_codeToggle an IAP custom offer code active flagActivate or deactivate a custom (multi-use) code of an IAP offer code. Deactivating stops further redemptions of the string; on subscriptions this is one-way and Apple stamps today into expirationDate, and the same is expected here.
asc_patch_iap_offer_code_one_time_use_codesToggle an IAP one-time-use batch active flagActivate or deactivate a one-time-use batch of an IAP offer code. Deactivating revokes its unredeemed codes without touching the campaign — the way to kill a leaked batch.
asc_patch_marketplace_search_detailPatch a marketplace search detailPATCH /v1/marketplaceSearchDetails/{id} — update the catalogUrl.
asc_patch_marketplace_webhookPatch a marketplace webhookUpdate a marketplace webhook: endpointUrl, rotate the secret (update the receiver first), and — for regular webhooks — name, eventTypes, enabled. PATCH /v1/webhooks/{id} by default; legacy:true PATCHes a deprecated /v1/marketplaceWebhooks record (endpointUrl + secret only). Pass at least one field.
asc_patch_merchant_idRename a Merchant IDUpdate a Merchant ID's display name — the only mutable attribute.
asc_patch_nominationUpdate a featuring nomination (or submit / archive it)⚠️ PATCH a nomination. Apple REQUIRES submitted or archived on EVERY patch (400 PARAMETER_ERROR.REQUIRED otherwise — caught live 2026-08-13): pass submitted:false when editing a draft (keeps it a draft), submitted:true to SEND it to Apple's editorial team (one-way, no un-submit), or archived:true to shelve it. Other attributes edit in place; relationship arrays (appIds / inAppEventIds / territoryIds) REPLACE the existing set when passed.
asc_patch_pass_type_idRename a Pass Type IDUpdate a Pass Type ID's display name — the only mutable attribute.
asc_patch_promoted_purchasePatch a PromotedPurchase (visibility / enabled)Update visibleForAllUsers and/or enabled on an existing PromotedPurchase. Wire-key gotchas: Swift `isVisibleForAllUsers` / `isEnabled` → wire `visibleForAllUsers` / `enabled`. Toggle enabled=false to retire a promotion without deleting the linkage. Tool refuses empty PATCH.
asc_patch_promoted_purchases_orderSet the storefront display order of an app's Promoted PurchasesPATCH /v1/apps/{id}/relationships/promotedPurchases with the ordered list of promoted-purchase IDs. The order in the array IS the storefront display order — slot 1 is the first ID, slot 2 the second, etc. Send the FULL ordered list; Apple replaces the entire ordering. Use asc_list_promoted_purchases to enumerate current IDs first.
asc_patch_review_submissionSubmit or cancel a review submissionTrigger the submit or cancel action on a review submission. The action enum (submit | cancel) is the friendly wrapper around Apple's mutually-exclusive `submitted: true` / `canceled: true` wire fields. submit: only valid in READY_FOR_REVIEW (Apple flips state to WAITING_FOR_REVIEW). cancel: only valid in WAITING_FOR_REVIEW or IN_REVIEW (Apple flips to CANCELING then COMPLETE). COMPLETE / COMPLETING / CANCELING / UNRESOLVED_ISSUES reject both — Apple already finished or is finishing the cycle. Wire-key gotcha: Apple strips the 'is' prefix on both attrs (`submitted`, `canceled`).
asc_patch_sandbox_testerUpdate a sandbox testerUpdate a sandbox tester's settings: territory (3-letter ISO — changes the storefront the tester purchases against), interruptPurchases (forces the App Store 'ask to buy'-style interruption sheet on every purchase), subscriptionRenewalRate (accelerated renewals — e.g. a month renews every 5 minutes — for testing renewal/billing-retry/grace flows). Pass at least one. Sandbox-only; no production effect.
asc_patch_subscriptionPatch a subscriptionUpdate the mutable attributes of a Subscription: name (internal), subscriptionPeriod, familySharable, reviewNote, groupLevel, multiSeatStatus, marketSettings. Pass only what changes; the tool refuses an empty PATCH. marketSettings REPLACES the list of markets (App Store / Apple School Manager / Apple Business Manager): pass every market to keep. ** productId is NOT patchable ** and the tool has no codepath that sends it — the identifier is fixed for the life of the product. Apple locks most of these once the subscription has been approved: expect a 409 when changing the period or turning famil…
asc_patch_subscription_grace_periodUpdate the billing grace period of an appPATCH an app's subscriptionGracePeriod (id from asc_get_subscription_grace_period): optIn / sandboxOptIn toggles, duration (THREE_DAYS / SIXTEEN_DAYS / TWENTY_EIGHT_DAYS), renewalType (ALL_RENEWALS / PAID_TO_PAID_ONLY). Affects real billing behaviour for existing subscribers — during grace the user keeps access while Apple retries payment and the developer keeps being paid. Pass at least one attribute.
asc_patch_subscription_groupRename a subscription groupUpdate a SubscriptionGroup's internal referenceName. This is the only mutable attribute on the resource — a group cannot be moved between apps. Renaming is safe at any point in the lifecycle: the value is invisible to customers and changing it does not trigger review.
asc_patch_subscription_group_localizationPatch a subscription group localizationUpdate name and/or customAppName on an existing SubscriptionGroupLocalization. Both optional; the tool refuses an empty PATCH. Pass customAppName: null to CLEAR an existing override (Apple marks the attribute nullable) — omitting it leaves the current value alone. Locale is immutable and state is server-managed. Apple locks this copy once it is live, the same way it locks SubscriptionLocalization: expect 409 ENTITY_ERROR.ATTRIBUTE.INVALID.UNMODIFIABLE on an approved group whose app is shipping. Unlike the subscription-localization tool there is NO client-side pre-check here, because the constr…
asc_patch_subscription_introductory_offerPatch a subscription introductory offerUpdate an introductory offer's window or price point. Apple's PATCH is narrow: only startDate, endDate, and pricePointId can change. To change offerMode / duration / numberOfPeriods, delete the offer and create a new one. Most common use: extending endDate to keep a campaign running.
asc_patch_subscription_localizationPatch a subscription localizationUpdate name and/or description on an existing SubscriptionLocalization. Both optional (encodeIfPresent). Locale is immutable; state is server-managed and rejected from PATCH bodies. Tool refuses empty PATCH. ** PARENT-STATE GATE (CONFIRMED live 2026-09-13): ** once the copy is APPROVED and its parent subscription is live, Apple REFUSES the PATCH — 409 ENTITY_ERROR.ATTRIBUTE.INVALID.UNMODIFIABLE, "Cannot edit SubscriptionLocalization when it is in ACTIVE state". Note ACTIVE is in neither public enum, and the list endpoint still reports the locale as APPROVED, so the resource's own state does no…
asc_patch_subscription_offer_codeToggle a subscription offer code campaign active flagActivate or deactivate an offer-code campaign. Apple PATCH on this resource only permits flipping `active` — name, eligibilities, mode, duration, numberOfPeriods, and prices are all immutable. Deactivating a campaign stops new redemptions across every batch and custom code under it; existing subscribers who already redeemed keep their offer.
asc_patch_subscription_offer_code_custom_codeToggle a custom (multi-use) offer code active flagActivate or deactivate a custom multi-use code. PATCH only flips `active` — customCode, numberOfCodes, and expirationDate are immutable. Deactivating revokes further redemptions of the string; completed redemptions are untouched. Use this to kill a leaked public code without nuking the parent campaign. DEACTIVATION IS ONE-WAY: Apple rejects reactivation with STATE_ERROR "Given custom code is inactive". Side effect: Apple silently stamps today's date into expirationDate when you deactivate, so the row reads as an expired code from then on. Deactivated custom codes still count toward productionC…
asc_patch_subscription_offer_code_one_time_use_codesToggle a one-time-use code batch active flagActivate or deactivate a one-time-use code batch. Apple PATCH on this resource only permits flipping `active` — numberOfCodes and expirationDate are immutable. Deactivating a batch stops further redemption of any unredeemed code in the batch; redemptions already completed are untouched. Use this to kill a leaked batch without nuking the parent campaign.
asc_patch_subscription_plan_availabilityUpdate a subscription plan availabilityPATCH a SubscriptionPlanAvailability: availableInNewTerritories and/or the availableTerritories list (FULL replacement of the territory set when passed — bare 3-letter ISO codes). planType is immutable. Pass at least one of the two. ⚠️ Removing territories is customer-facing.
asc_patch_subscription_promotional_offer_pricesReplace the prices on a promotional offerUpdate the per-territory prices on an existing promotional offer. Apple PATCH on this resource only permits price changes — name, offerCode, mode, duration, and numberOfPeriods are immutable post-create. FOOTGUN: Apple's wire semantic is REPLACE — the prices array becomes the new post-state, dropping any territory not listed. This tool's mode parameter abstracts that: 'replace' (raw wire semantic — you pass the full new set), 'add' (reads current prices, appends/overrides your entries by territory, posts the union — safe when extending an offer to new markets without dropping existing ones), '…
asc_patch_subscription_win_back_offerUpdate a subscription win-back offerUpdate the mutable attributes of an existing win-back offer: eligibility (customerEligibility* fields), schedule (startDate/endDate), priority, and promotionIntent. referenceName, offerId, duration, offerMode, periodCount, targetSubscriptionPlanType and the prices are IMMUTABLE — to change any of those, delete and re-create the offer. Pass only the fields you want to change; at least one is required.
asc_patch_territory_availabilityPatch a territory availability (pre-order / release date)PATCH /v1/territoryAvailabilities/{id} — per-territory pre-order + release control: available (sell here or not), releaseDate (YYYY-MM-DD; with preOrderEnabled=true this is the announced release date customers pre-order against), preOrderEnabled (start taking pre-orders in this territory; end them with asc_end_app_availability_pre_order). The ID is the APPLE-OPAQUE composite from asc_list_territory_availabilities — bare 3-letter codes are rejected. Pass at least one attribute. ⚠️ available=false pulls the app from sale in that territory — customer-facing; confirm intent first.
asc_patch_userChange a user's roles or app access (confirm-gated)🔒 TEAM-CHANGE GATE: refuses and sends nothing unless confirm: true; the refusal shows exactly what would change for whom. Change a user's roles, allAppsVisible, provisioningAllowed and/or visible apps. `roles` REPLACES the whole role list (anything not listed is removed); `visibleAppIds` REPLACES the visible set. Pass at least one field. Changing a role can lock a real person out of the account.
asc_patch_version_experimentPatch / start a product-page experiment⚠️ started=true is CUSTOMER-FACING: PATCH /v2/appStoreVersionExperiments/{id} with started=true begins serving treatment pages to real App Store traffic (requires state APPROVED). Also mutates name and trafficProportion while still in PREPARE_FOR_SUBMISSION. Wire-key gotcha pinned by tests: the start flag is `started` (Swift isStarted). There is no started=false — stopping is its own semantics via Apple (STOPPED is terminal); confirm intent before starting.
asc_patch_webhookPatch a webhookPATCH /v1/webhooks/{id} — mutate name, url, secret (rotation), eventTypes (whole-array replace), or enabled (pause/resume deliveries). All attributes optional; pass at least one. Rotating the secret: update the receiving side FIRST, then PATCH — deliveries signed with the new secret start immediately.
asc_post_accessibility_declarationCreate an accessibility declaration (DRAFT)POST /v1/accessibilityDeclarations — create a DRAFT declaration for one device family (required) with any subset of the nine supports* flags (omitted ≠ false: omitted flags are simply not declared). Drafts are invisible until published via asc_patch_accessibility_declaration publish=true. One DRAFT per device family at a time.
asc_post_alternative_distribution_domainRegister an alternative distribution domainPOST /v1/alternativeDistributionDomains — register a website domain (e.g. "example.com") for EU web distribution. Both attributes required: domain + referenceName. Apple verifies domain ownership out-of-band (apple-developer-domain-association file). No PATCH exists — delete + re-create to change.
asc_post_alternative_distribution_keyRegister an alternative distribution keyPOST /v1/alternativeDistributionKeys — register the PUBLIC key (PEM string) used to verify your signed alternative-distribution artifacts. Optionally scope to one app via appId. The private key stays with you — never paste it anywhere; this tool takes the PUBLIC half only.
asc_post_alternative_distribution_packageCreate an alternative distribution packagePOST /v1/alternativeDistributionPackages — start packaging an App Store Version for alternative distribution. Relationships-only body (appStoreVersion). Apple builds the signed package asynchronously; poll asc_list_alternative_distribution_package_versions until a version reaches COMPLETED.
asc_post_analytics_report_requestCreate an analytics report requestPOST /v1/analyticsReportRequests — turn on analytics report generation for an app. accessType ONGOING (Apple keeps producing daily/weekly/monthly instances; may auto-pause after inactivity — stoppedDueToInactivity=true — delete + recreate to resume) or ONE_TIME_SNAPSHOT (single historical backfill). One request per (app, accessType); duplicates are rejected. Instances appear up to ~48h later — an empty chain right after creation is normal.
asc_post_app_availability_v2Replace the AppAvailabilityV2 for an app (POST-only — full replacement)Create a new AppAvailabilityV2 for an app — Apple atomically swaps over to it. There is NO PATCH for this resource; you replace the whole availability by POSTing a new record. Required: appId + availableInNewTerritories + the FULL list of TerritoryAvailability IDs the app should be sold in (Apple-opaque base64 composites from asc_list_territory_availabilities; missing ones get removed). Wire-key gotcha: Swift `isAvailableInNewTerritories` → wire `availableInNewTerritories`. The IDs are NOT 3-letter codes — they are per-(app, territory) opaque blobs.
asc_post_app_clip_advanced_experienceCreate an App Clip advanced experienceCreate an advanced experience: a card for one invocation URL (link, https, under a domain the clip has associated). Required: link, isPoweredBy (show "Powered by <app>"), defaultLanguage, a committed header image (upload it first with asc_upload_app_clip_advanced_experience_image) and at least one localization (language + title + subtitle), created inline. Optional: action, businessCategory, and place (an Apple Maps place card) for a location-based experience. ⚠️ Goes live for that URL once Apple processes it.
asc_post_app_clip_advanced_experience_imageReserve an App Clip advanced experience image (raw step 1)RAW step 1 of the advanced experience image upload. The image has no parent at reserve time: reserve, PUT chunks (asc_upload_asset_chunk), commit (asc_patch_app_clip_advanced_experience_image), then pass its ID as headerImageId when creating or patching the advanced experience. Most callers should use asc_upload_app_clip_advanced_experience_image.
asc_post_app_clip_app_store_review_detailCreate an App Clip App Store review detailCreate the App Review detail of a default experience: the invocation URLs (https) App Review opens to test the clip. One per default experience.
asc_post_app_clip_default_experienceCreate an App Clip default experienceCreate a default experience for an App Clip. action is the card button (OPEN / VIEW / PLAY). releaseWithAppStoreVersionId ties it to the app version that ships it (an editable version). templateDefaultExperienceId copies an existing experience's localizations and header images — the usual way to carry the card forward to a new version. Then add localizations (asc_post_app_clip_default_experience_localization), a header image per localization and the App Review detail.
asc_post_app_clip_default_experience_localizationCreate an App Clip default experience localizationAdd a locale to a default experience, with the card subtitle (Apple limit: 56 characters). Then upload its header image with asc_upload_app_clip_header_image.
asc_post_app_clip_header_imageReserve an App Clip header image upload (raw step 1)RAW step 1 of the header image upload for one default experience localization: reserves fileName + fileSize and returns uploadOperations[]. PUT each with asc_upload_asset_chunk, then commit with asc_patch_app_clip_header_image (sourceFileChecksum + uploaded=true). Most callers should use asc_upload_app_clip_header_image.
asc_post_app_custom_product_pageCreate an AppCustomProductPageCreate an AppCustomProductPage for an app with a reference name (UI-only, not customer-facing). Required: appId + name. Apple automatically creates an initial AppCustomProductPageVersion in PREPARE_FOR_SUBMISSION — fetch it via asc_get_app_custom_product_page and attach localizations / asset sets to that version.
asc_post_app_custom_product_page_localizationCreate an AppCustomProductPageLocalizationCreate an AppCustomProductPageLocalization under a CPP version for ONE locale. Required: appCustomProductPageVersionId + locale. Optional: promotionalText (170 chars). The (version, locale) pair must be unique. Pre-check refuses for frozen states (WAITING_FOR_REVIEW, IN_REVIEW).
asc_post_app_custom_product_page_versionCreate an AppCustomProductPageVersionCreate a new AppCustomProductPageVersion under a CPP. Required: appCustomProductPageId. Optional: deepLink (URL appended to the CPP click-through). No-attrs-block gotcha: when deepLink is omitted, the body sends NO attributes key at all (Apple rejects bare attrs:{} on this endpoint, same as v0.9 AppInfo PATCH). New versions land in PREPARE_FOR_SUBMISSION.
asc_post_app_encryption_declarationCreate an AppEncryptionDeclarationCreate an AppEncryptionDeclaration for an app. Required: appId + appDescription + containsProprietaryCryptography + containsThirdPartyCryptography + availableOnFrenchStore. Apple reviews the declaration server-side; state walks CREATED → IN_REVIEW → APPROVED / REJECTED. There is NO PATCH for declarations — create a new one to refresh the answers. Wire-key gotcha: Swift `isAvailableOnFrenchStore` → wire `availableOnFrenchStore`. NOTE: the deprecated `usesEncryption` attribute is not accepted on writes — Apple's modern path uses `exempt` (server-set) instead.
asc_post_app_encryption_declaration_documentReserve an AppEncryptionDeclarationDocument upload (raw step 1)RAW step 1 of the three-step upload flow (same shape as v0.13 AppScreenshot). Reserves an AppEncryptionDeclarationDocument under a declaration with fileName + fileSize. Returns the resource with uploadOperations[] populated. Use asc_upload_asset_chunk to PUT each, then asc_patch_app_encryption_declaration_document to commit. Most callers should use the composite asc_upload_app_encryption_declaration_document instead.
asc_post_app_eventCreate an AppEventCreate an AppEvent on an app. Required: appId + referenceName (internal-only, NOT customer-facing — set per-locale name via asc_post_app_event_localization). Optional: badge, deepLink, purchaseRequirement, primaryLocale, priority, purpose, territorySchedules. New events land in DRAFT. Add localizations + screenshots + video clips before submitting for review.
asc_post_app_event_localizationCreate an AppEventLocalizationCreate an AppEventLocalization for ONE (event, locale) pair. Required: appEventId + locale. Optional copy attrs: name (30 chars), shortDescription (50 chars), longDescription (120 chars). The (event, locale) pair must be unique — Apple rejects duplicates. Pre-check refuses for frozen parent-event states (WAITING_FOR_REVIEW, IN_REVIEW).
asc_post_app_event_screenshotReserve an AppEventScreenshot upload (raw step 1) (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced in-app event screenshots with the App Asset Library. Use asc_upload_asset_library_image + asc_post_asset_library_placement (parentType appEventLocalizations, placementType EVENT_CARD_ASSET or EVENT_DETAILS_PAGE_ASSET) instead; asc_list_localization_placements lists what a localization shows. RAW step 1 of the three-step upload flow (same shape as v0.13 AppScreenshot). Reserves an AppEventScreenshot under an event localization with fileName + fileSize + appEventAssetType (EVENT_CARD / EVENT_DETAILS_PAGE). Returns the resource with upload…
asc_post_app_event_video_clipReserve an AppEventVideoClip upload (raw step 1) (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced in-app event video clips with the App Asset Library. Use asc_upload_asset_library_video + asc_post_asset_library_placement (parentType appEventLocalizations, placementType EVENT_CARD_ASSET or EVENT_DETAILS_PAGE_ASSET) instead; asc_list_localization_placements lists what a localization shows. RAW step 1 of the three-step upload flow (same shape as v0.13 AppPreview). Reserves an AppEventVideoClip under an event localization with fileName + fileSize + appEventAssetType (+ optional previewFrameTimeCode for the poster frame). Returns the res…
asc_post_app_info_localizationCreate an AppInfo localizationCreate an AppInfoLocalization for ONE AppInfo + ONE locale. Required: appInfoId + locale + name (30 chars). Optional: subtitle (30 chars), privacyPolicyUrl, privacyChoicesUrl (CCPA/CPRA flows), privacyPolicyText (inline text for territories that require it). Wire-key gotcha: Swift `privacyPolicyURL` / `privacyChoicesURL` map to wire-camelCase `privacyPolicyUrl` / `privacyChoicesUrl`. The (appInfo, locale) pair must be unique — Apple rejects a duplicate. Locale is immutable post-create.
asc_post_app_previewReserve an AppPreview upload (raw step 1) (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced app preview sets with the App Asset Library. Use asc_upload_asset_library_video + asc_post_asset_library_placement (placementType APP_PREVIEW) instead; asc_list_localization_placements lists what a localization shows. RAW step 1 of the three-step upload flow for previews. Reserves an AppPreview under a set with fileName + fileSize (+ optional previewFrameTimeCode + mimeType), and returns the resource with uploadOperations[] populated. Most callers should use the composite asc_upload_app_preview instead — this exists for manual control.
asc_post_app_preview_setCreate an AppPreviewSet (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced app preview sets with the App Asset Library. Use asc_upload_asset_library_video + asc_post_asset_library_placement (placementType APP_PREVIEW) instead; asc_list_localization_placements lists what a localization shows. Create an AppPreviewSet for ONE (parent localization, previewType) pair. Required: parentType + parentLocalizationId + previewType. Apple enforces uniqueness — a duplicate (parent, previewType) is rejected.
asc_post_app_price_scheduleReplace the entire app price scheduleReplace the price schedule for a paid app. IMPORTANT: this is REPLACE, not merge — any manual override or scheduled change not in `prices[]` is wiped. At least one entry MUST target `baseTerritory` with no startDate (= active now). Changing `baseTerritory` from the current value deletes any pending scheduled price changes (Apple behavior); set `acknowledgeDeletesScheduledIfBaseChanges: true` if you intend that. Apps have NO grandfather mechanism — new prices activate atomically at each entry's startDate.
asc_post_app_screenshotReserve an AppScreenshot upload (raw step 1) (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced screenshot sets with the App Asset Library. Use asc_upload_asset_library_image + asc_post_asset_library_placement instead; asc_list_localization_placements lists what a localization shows. RAW step 1 of the three-step upload flow. Reserves an AppScreenshot under a set with fileName + fileSize, and returns the created resource with uploadOperations[] populated. Each uploadOperation has method=PUT + url + length + offset + requestHeaders for one chunk of the file. Use asc_upload_asset_chunk to PUT each, then asc_patch_app_screenshot to co…
asc_post_app_screenshot_setCreate an AppScreenshotSet (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced screenshot sets with the App Asset Library. Use asc_upload_asset_library_image + asc_post_asset_library_placement instead; asc_list_localization_placements lists what a localization shows. Create an AppScreenshotSet for ONE (parent localization, screenshotDisplayType) pair. Required: parentType + parentLocalizationId + screenshotDisplayType. The parent must be one of appStoreVersionLocalizations / appCustomProductPageLocalizations / appStoreVersionExperimentTreatmentLocalizations. Apple enforces uniqueness — a duplicate (parent, display…
asc_post_app_store_review_detailCreate the App Review detail of a versionCreate the appStoreReviewDetail for an App Store version (to-one — Apple 409s if one already exists; PATCH instead). All attributes optional: contact person, demo account (set demoAccountRequired=true when the reviewer needs it), notes. Demo-account credentials go to App Review only, not the public store.
asc_post_app_store_versionCreate an App Store versionCreate a new App Store version on an app. Required: appId + platform + versionString. The versionString must compare HIGHER than every prior version for this (app, platform) — Apple rejects duplicates or decreasing values. Optional: copyright, reviewType (APP_STORE default / NOTARIZATION for macOS notarization-only), releaseType (MANUAL / AFTER_APPROVAL / SCHEDULED), earliestReleaseDate (required if releaseType=SCHEDULED). Optional buildId attaches a build at create time — useful for the end-to-end flow "TestFlight build → App Store version → submit for review". The build must be in VALID proc…
asc_post_app_store_version_localizationCreate an App Store version localizationCreate an AppStoreVersionLocalization for ONE version + ONE locale. Required: appStoreVersionId + locale. Optional: whatsNew (release notes, 4000), description (4000), keywords (100 TOTAL chars), promotionalText (170), marketingUrl, supportUrl. Apple requires supportUrl per locale for review; submissions without it are rejected. The (version, locale) pair must be unique — Apple rejects a duplicate. Locale is immutable post-create.
asc_post_app_store_version_phased_releaseCreate / start a phased release on an App Store versionCreate a new AppStoreVersionPhasedRelease attached to an AppStoreVersion. Required: appStoreVersionId. Optional: phasedReleaseState — pass `ACTIVE` to start the rollout immediately, omit to land in INACTIVE. NO-ATTRS-BLOCK GOTCHA: when state is omitted, the body builder omits the entire `attributes` key (Apple rejects bare attrs:{}). Apple's rollout schedule: 1% day 1, 2% day 2, 5% day 3, 10% day 4, 20% day 5, 50% day 6, 100% day 7.
asc_post_app_store_version_release_requestRelease an approved version to the App Store now⚠️ CUSTOMER-FACING: POST an appStoreVersionReleaseRequest to release a version that App Review has approved (state PENDING_DEVELOPER_RELEASE) to the public App Store immediately — the automated form of the manual "Release this version" click. Only valid for versions whose release option was "manually release"; there is no undo — once live, rollback means shipping a new version. Confirm the version id and intent before calling.
asc_post_asset_library_imageReserve an App Asset Library image upload (raw step 1)RAW step 1 of the library upload. Reserves an image in the app's library (fileName + fileSize + category) and returns it with uploadOperations[]. PUT each with asc_upload_asset_chunk, then commit with asc_patch_asset_library_image uploaded=true (no checksum in this API). Most callers should use the composite asc_upload_asset_library_image.
asc_post_asset_library_placementPlace a library asset on a localizationPut one App Asset Library image or video on one localization in a placementType + placementGroup slot — the replacement for creating a screenshot/preview set and uploading into it. Pass exactly one of imageId / videoId and the parent localization. The group is the device profile (IPHONE_DYNAMIC_ISLAND_LARGE_PROFILE, IPAD_13_PROFILE, IPHONE_DUO_PROFILE, DEFAULT_PROFILE for event assets); asc_get_asset_library_ref_data lists the groups, their size specs and max counts. The asset must match a spec the group accepts. Product-page header image or video: placementType PRODUCT_PAGE_HEADER_ASSET, plac…
asc_post_asset_library_placement_ordering_requestReorder the placements in a groupSet the display order of the placements in ONE placementGroup on one localization (version, Custom Product Page or experiment treatment — events have no ordering). orderedPlacementIds is the new order, first = first on the store; pass every placement in that group (get them from asc_list_localization_placements filtered to the group). Replaces reordering screenshots inside a set.
asc_post_asset_library_videoReserve an App Asset Library video upload (raw step 1)RAW step 1 of the library upload for a video (app preview or event video). Reserves it with fileName + fileSize + category (+ optional previewFrameTimeCode, the poster frame as HH:MM:SS:FF) and returns uploadOperations[]. PUT each with asc_upload_asset_chunk, then commit with asc_patch_asset_library_video uploaded=true. Most callers should use asc_upload_asset_library_video.
asc_post_background_assetCreate a background asset (asset pack)Register an Apple-hosted asset pack for an app. assetPackIdentifier must match the ID in the pack's manifest and cannot change later. Then create a version (asc_post_background_asset_version) and upload its files (asc_upload_background_asset_file).
asc_post_background_asset_upload_fileReserve a background asset file upload (raw step 1)RAW step 1 of the asset pack file upload: reserves assetType (ASSET / MANIFEST) + fileName + fileSize on a version and returns uploadOperations[]. PUT each with asc_upload_asset_chunk, then commit with asc_patch_background_asset_upload_file. Most callers should use asc_upload_background_asset_file.
asc_post_background_asset_versionCreate a background asset versionStart a new version of an asset pack. Apple assigns the version number. The version waits in AWAITING_UPLOAD until its files are uploaded with asc_upload_background_asset_file (the ASSET archive, and the MANIFEST if your pack has one).
asc_post_beta_app_clip_invocationCreate a beta App Clip invocationAdd a TestFlight invocation to a build's App Clip: the URL testers open the clip with, and its title per locale (created inline, at least one). buildBundleId is the App Clip's build bundle in the build (the build's buildBundles relationship), not the bundle ID string.
asc_post_beta_app_clip_invocation_localizationAdd a beta App Clip invocation titleAdd a localized title to a TestFlight App Clip invocation.
asc_post_beta_app_localizationCreate a per-app beta localizationCreate a BetaAppLocalization for ONE app + ONE locale. Required: appId + locale. Optional: description, feedbackEmail, marketingUrl (camelCase wire key — NOT marketingURL), privacyPolicyUrl, tvOsPrivacyPolicy. The (app, locale) pair must be unique — Apple rejects a duplicate. Locale is immutable post-create.
asc_post_beta_app_review_submissionSubmit a build for beta reviewSubmit a build for Apple beta review. Required: buildId. The body has NO attributes — only the build relationship. Once submitted, betaReviewState walks WAITING_FOR_REVIEW → IN_REVIEW → APPROVED (or REJECTED), typically over 24-48h. Preconditions Apple enforces server-side: build must be VALID processingState, the per-app BetaAppReviewDetail must have contact info + demo account (if demoAccountRequired=true), and the BetaAppLocalization for at least one locale must exist. The MCP server does NOT pre-flight these — Apple's error message is the source of truth.
asc_post_beta_build_localizationCreate a per-build "What to Test" localizationCreate a BetaBuildLocalization for ONE build + ONE locale. whatsNew is optional at create time (you can leave it blank and patch later). The (build, locale) pair must be unique — Apple rejects a duplicate. Locale is immutable post-create; to change locale, delete this resource and re-create.
asc_post_beta_groupCreate a beta groupCreate a beta group on an app. Required: name + appId. Optional: isInternalGroup (default false → external), hasAccessToAllBuilds (default false), public-link settings (external only), feedbackEnabled, and pre-seeded testers/builds. isInternalGroup and hasAccessToAllBuilds are IMMUTABLE after create — pick them carefully. To change later, delete and re-create. Pre-seeded testers/builds are added atomically; passing IDs that don't exist or aren't valid (e.g. expired build) rejects the whole POST.
asc_post_beta_recruitment_criterionCreate a recruitment criterion on a beta groupPOST /v1/betaRecruitmentCriteria — gate public-link auto-recruitment on a beta group to devices matching the given device-family + OS-version windows. The group should be EXTERNAL with the public link enabled (see asc_patch_beta_group) for the criterion to have any effect. One criterion per group — if one already exists, PATCH it instead. Valid OS versions per family: asc_list_beta_recruitment_criterion_options. After creating, sanity-check with asc_get_beta_recruitment_compatible_build_check that matching devices can actually install a build.
asc_post_beta_testerCreate a beta tester recordCreate a BetaTester record from an email. Apple uses the email as the uniqueness key per team; a duplicate email surfaces as an API error verbatim. This endpoint creates the record but does NOT send an invite email — that requires a separate call to asc_post_beta_tester_invitation. Optional: pre-assign the tester to betaGroups and/or builds in the same atomic POST (the IDs you pass become to-many relationships at create time).
asc_post_beta_tester_invitationSend / resend a beta tester invitation emailSend (or resend) the TestFlight invite email for a tester on a specific app. Required: appId. betaTesterId is OPTIONAL and Apple has marked it DEPRECATED in the contract — the modern flow targets just (app), and the tester is resolved by the email on the BetaTester record they're a member of. Pass betaTesterId only if you need the legacy per-tester invitation shape. POST /v1/betaTesterInvitations. The body carries NO attributes — only relationships (app + optionally betaTester). Apple's email delivery is fire-and-forget; retry by re-calling this tool.
asc_post_build_beta_notificationNotify testers about a buildPOST /v1/buildBetaNotifications — send the "new build available" TestFlight notification to every tester who has access to the build. Fire-and-forget: Apple returns an acknowledgment resource with no attributes, and there is no way to list or revoke a sent notification. Use for builds where autoNotifyEnabled is off (see asc_patch_build_beta_detail), or to re-ping testers. The build must be in VALID processingState and already distributed to at least one group/tester.
asc_post_build_uploadCreate a build upload (raw step 1)RAW step 1 of a build upload: create the upload slot for an app + version + build number + platform. The version and build number must match the binary’s Info.plist (CFBundleShortVersionString / CFBundleVersion) and the build number must be new for that version. Next: asc_post_build_upload_file. asc_upload_build does all steps from a local file.
asc_post_build_upload_fileReserve a build upload file (raw step 2)RAW step 2: reserve one file in a build upload. Returns uploadOperations[] — PUT each chunk with asc_upload_asset_chunk, then commit with asc_patch_build_upload_file. assetType ASSET is the .ipa / .pkg itself.
asc_post_bundle_idRegister a bundle IDRegister a new bundle ID on the developer portal. The reverse-DNS identifier is IMMUTABLE after creation (only the display name can change later), so double-check it — a typo means registering another one and abandoning this record.
asc_post_bundle_id_capabilityEnable a capability on a bundle IDEnable a capability (PUSH_NOTIFICATIONS, ICLOUD, APPLE_PAY, HEALTHKIT, …) on a bundle ID. `settings` is a raw passthrough array of CapabilitySetting objects — shapes vary per capability; most capabilities need none. Existing provisioning profiles on the bundle ID become invalid and must be regenerated after capability changes.
asc_post_certificateCreate a signing certificate from a CSRCreate a certificate from a PEM certificate-signing request. csrContent is the full PEM text (including the BEGIN/END CERTIFICATE REQUEST lines) — generate one with `openssl req -new -newkey rsa:2048 -nodes -keyout key.pem -out csr.pem`. The private key NEVER goes to Apple; the response carries the signed certificateContent (base64 DER). Team certificate-count limits apply (typically 2 distribution certs).
asc_post_ci_build_runStart an Xcode Cloud buildStart a build run of a workflow. Defaults to the workflow's configured branch; pass gitReferenceId (from asc_list_scm_git_references — the reference id, not a bare branch name) to build a specific branch/tag, and clean:true to skip the derived-data cache. Uses compute hours from the team's Xcode Cloud allowance.
asc_post_customer_review_responseRespond to a customer review (PUBLIC)⚠️ PUBLIC-FACING WRITE: POST /v1/customerReviewResponses publishes your reply ON THE APP STORE under the review (state PENDING_PUBLISH → PUBLISHED, usually within a day; the reviewer is notified by Apple). One response per review — posting against an already-answered review REPLACES the previous response. Draft the text, show it to the human, and only call this after explicit approval.
asc_post_deviceRegister a deviceRegister a test device by UDID. ⚠️ Registration is effectively permanent: devices can never be deleted (only DISABLED) and count against the 100-per-class membership-year limit until Apple’s yearly reset — check the UDID carefully.
asc_post_end_user_license_agreementCreate a custom EULACreate the app's custom EULA for the given territories. Customer-visible: it replaces Apple's standard EULA on the product page in those territories. An app can have only one — if it already has one, PATCH it instead.
asc_post_experiment_treatmentCreate an experiment treatmentPOST /v1/appStoreVersionExperimentTreatments — add a variant to an experiment (PREPARE_FOR_SUBMISSION only). name required; appIconName optional (tests an alternate icon — the icon must ship in the app binary as an alternate icon). Relationship emitted is appStoreVersionExperimentV2 (the modern surface). After creating: asc_post_treatment_localization per locale, then v0.13 asset tools for variant screenshots.
asc_post_game_center_achievementCreate a Game Center achievementCreate a Game Center achievement (v2) with its first version in one POST. points: 0–100 per achievement (live achievements with 0 exist), 1000 per game in total. showBeforeEarned:false makes it hidden until earned. repeatable lets players earn it again (no extra points). vendorIdentifier is immutable and can never be reused, even after delete. Then add per-locale copy to the version.
asc_post_game_center_activityCreate a Game Center activityPOST /v1/gameCenterActivities. Creates an activity in an app (appId or gameCenterDetailId) or a Game Center group (gameCenterGroupId) — exactly one owner. vendorIdentifier is the id your game uses in GKGameActivity and is fixed after create. Next: asc_post_game_center_activity_version, then localizations and an image.
asc_post_game_center_activity_imageReserve a Game Center activity imageDescription is built at runtime.
asc_post_game_center_activity_localizationCreate a Game Center activity localizationDescription is built at runtime.
asc_post_game_center_activity_versionCreate a Game Center activity versionDescription is built at runtime.
asc_post_game_center_app_versionCreate a Game Center app versionPOST /v1/gameCenterAppVersions. Turns on Game Center tracking for one App Store version. Usually App Store Connect creates these itself when Game Center is on; use this when one is missing.
asc_post_game_center_challengeCreate a Game Center challengePOST /v1/gameCenterChallenges. Creates a leaderboard challenge in an app (appId or gameCenterDetailId) or a Game Center group (gameCenterGroupId) — exactly one owner. leaderboardId is the v2 leaderboard the challenge scores on. vendorIdentifier is fixed after create. Next: asc_post_game_center_challenge_version, then localizations and an image.
asc_post_game_center_challenge_imageReserve a Game Center challenge imageDescription is built at runtime.
asc_post_game_center_challenge_localizationCreate a Game Center challenge localizationDescription is built at runtime.
asc_post_game_center_challenge_versionCreate a Game Center challenge versionDescription is built at runtime.
asc_post_game_center_detailSet up Game Center for an appCreate the GameCenterDetail of an app — turns on Game Center configuration in App Store Connect so achievements and leaderboards can be added. One per app; Apple refuses a second. The app still needs the Game Center capability in its bundle id and must ship a version with Game Center enabled for players to see anything. (challengeEnabled is deprecated and not sent.)
asc_post_game_center_groupCreate a Game Center groupCreate a GameCenterGroup (referenceName is internal only). Then move apps into it with asc_patch_game_center_detail gameCenterGroupId, and create shared achievements / leaderboards with gameCenterGroupId as the owner.
asc_post_game_center_leaderboardCreate a Game Center leaderboardCreate a Game Center leaderboard (v2) with its first version in one POST. Classic: omit the recurrence fields. Recurring: pass all three of recurrenceStartDate, recurrenceDuration, recurrenceRule. scoreRangeStart/End reject scores outside the range. Optionally add it to leaderboard sets at once (leaderboardSetIds). vendorIdentifier is immutable and never reusable.
asc_post_game_center_leaderboard_entry_submissionSubmit a leaderboard score (server-side)Submit a score for a player to a leaderboard from your server (POST /v1/gameCenterLeaderboardEntrySubmissions). For games that validate scores server-side. ⚠️ Writes a real entry a live leaderboard shows — use preReleased:true while testing.
asc_post_game_center_leaderboard_setCreate a Game Center leaderboard setCreate a Game Center leaderboard set (v2) with its first version in one POST — a named group of leaderboards shown together. Optionally seed it with leaderboardIds (in display order). vendorIdentifier is immutable and never reusable.
asc_post_game_center_leaderboard_set_member_localizationAdd a leaderboard-set member localizationSet the name one leaderboard shows inside one leaderboard set, for one locale.
asc_post_game_center_matchmaking_queueCreate a Game Center matchmaking queuePOST /v1/gameCenterMatchmakingQueues. Creates a queue on a rule set. experimentRuleSetId runs a second rule set on part of the traffic (compare with the experiment* metrics). classicMatchmakingBundleIds lets older builds that use classic matchmaking join the queue.
asc_post_game_center_matchmaking_ruleCreate a Game Center matchmaking rulePOST /v1/gameCenterMatchmakingRules. Adds a rule to a rule set. type: COMPATIBLE (can two requests match), DISTANCE (prefer close values), MATCH (must hold for the whole match), TEAM (must hold per team). expression is in Apple's matchmaking rule language (JMESPath-based): literals go in backticks, e.g. requests[0].secondsInQueue >= `5` — a bare 5 is a 409 compile error. Test with asc_test_game_center_matchmaking_rule_set before a live queue uses it.
asc_post_game_center_matchmaking_rule_setCreate a Game Center matchmaking rule setPOST /v1/gameCenterMatchmakingRuleSets. referenceName and ruleLanguageVersion are fixed after create. Then add rules and teams, and point a queue at it.
asc_post_game_center_matchmaking_teamCreate a Game Center matchmaking teamPOST /v1/gameCenterMatchmakingTeams. Adds a team (e.g. "red", "blue") with its player range to a rule set.
asc_post_game_center_player_achievement_submissionReport achievement progress (server-side)Report a player's progress on an achievement from your server (POST /v1/gameCenterPlayerAchievementSubmissions); percentageAchieved 100 awards it. ⚠️ Awards a real achievement on a live game — use preReleased:true while testing.
asc_post_iapCreate an in-app purchasePOST /v2/inAppPurchases — create a consumable, non-consumable or non-renewing-subscription IAP on an app. Required: appId + productId + name + inAppPurchaseType. ** productId is PERMANENT ** and can never be reused on the account, even after a delete. name is internal only. A new IAP starts in MISSING_METADATA and is not purchasable. To finish it: asc_post_iap_localization → asc_post_iap_price_schedule → asc_post_iap_availability → asc_upload_iap_review_screenshot → asc_post_iap_submission.
asc_post_iap_availabilityReplace the availability of an in-app purchase (POST-only — full replacement)Create a new InAppPurchaseAvailability — Apple atomically swaps over to it. There is NO PATCH; POST the FULL territory list (bare 3-letter ISO codes) every time; missing territories get removed. ⚠️ Removing a territory pulls the IAP from sale there — customer-facing.
asc_post_iap_localizationCreate an IAP localizationCreate an InAppPurchaseLocalization for ONE v2 IAP + ONE locale. Required: iapId (v2 IAP only — legacy v1 not supported) + name (30 chars) + locale. Optional: description (45 chars). (IAP, locale) must be unique. Locale immutable post-create.
asc_post_iap_offer_codeCreate an IAP offer code campaignCreate an offer-code campaign on an in-app purchase: name + customer eligibility + every territory price in one POST. Name, eligibility and prices are immutable afterwards, PATCH only flips `active`, and Apple has no DELETE, so the campaign stays forever. ppp pre-flights a 10-campaign cap and name uniqueness on the product and refuses with a remedy. Then generate codes with asc_post_iap_offer_code_one_time_use_codes or asc_post_iap_offer_code_custom_code. For auto-renewable subscriptions use asc_post_subscription_offer_code.
asc_post_iap_offer_code_custom_codeCreate an IAP custom (multi-use) offer codeCreate a developer-chosen code string under an IAP offer-code campaign, redeemable by up to numberOfCodes customers (min 500, max 25,000 on subscriptions; assumed the same here). Optional expirationDate; omit for no expiry. Immutable; PATCH only flips `active`; no DELETE. ppp refuses if the campaign already has a custom code with the same string.
asc_post_iap_offer_code_one_time_use_codesGenerate a batch of IAP one-time-use offer codesGenerate a batch of single-redemption codes under an IAP offer-code campaign. Apple creates the strings; fetch them with asc_export_iap_offer_code_one_time_use_values. numberOfCodes, expirationDate and environment are immutable; PATCH only flips `active`. Use environment SANDBOX for test accounts.
asc_post_iap_price_scheduleReplace the entire IAP price scheduleReplace the price schedule for an in-app purchase (v2 IAPs only — consumables, non-consumables, non-renewing subs). IMPORTANT: this is REPLACE, not merge — any manual override or scheduled change not in `prices[]` is wiped. At least one entry MUST target `baseTerritory` with no startDate (= active now). IAPs have NO grandfather mechanism (no preserveCurrentPrice analog) — new prices activate atomically at each entry's startDate. For auto-renewable subscriptions use asc_post_subscription_price instead.
asc_post_iap_submissionSubmit an in-app purchase for review (standalone)POST an inAppPurchaseSubmission — sends an IAP's pending metadata changes (price, localizations, review screenshot) to App Review on their own, without a version release. The IAP must have complete metadata including its review screenshot (asc_upload_iap_review_screenshot). Irreversible once submitted — Apple reviews the pending changes as-is.
asc_post_marketplace_search_detailCreate a marketplace search detailPOST /v1/marketplaceSearchDetails — set a MARKETPLACE app's catalogUrl (the catalog Apple's MarketplaceKit queries). Wire key catalogUrl (Swift catalogURL — pinned by tests). One per app; PATCH to change.
asc_post_marketplace_webhookCreate a marketplace webhookCreate the webhook that notifies a MARKETPLACE app about apps it distributes (new version available, remove a version, remove all versions). POST /v1/webhooks on the marketplace app, subscribed to the ALTERNATIVE_DISTRIBUTION_* events (all three by default) — Apple's replacement for the deprecated POST /v1/marketplaceWebhooks, which this tool no longer calls. secret is the HMAC signing key, WRITE-ONLY: store it on the receiving side first; rotatable via PATCH.
asc_post_merchant_idRegister a Merchant IDRegister a new Merchant ID. The reverse-DNS identifier (e.g. merchant.com.example.store) is IMMUTABLE after creation — only the name can change later.
asc_post_nominationCreate a featuring nomination (as a draft by default)Create a featuring nomination pitching a release to Apple's editorial team. Defaults to a DRAFT (submitted:false) so it can be reviewed with asc_get_nomination before anything reaches Apple — flip it live later with asc_patch_nomination submitted:true, or pass submitted:true here to send immediately. ⚠️ Submission is one-way: there is no un-submit, only archive. publishStartDate is the start of the release's relevance window (e.g. the launch date).
asc_post_pass_type_idRegister a Pass Type IDRegister a new Pass Type ID. The reverse-DNS identifier (e.g. pass.com.example.membership) is IMMUTABLE after creation — only the name can change later.
asc_post_profileCreate a provisioning profileGenerate a provisioning profile: name + profileType + the bundle-ID record + certificate ids (+ device ids for DEVELOPMENT/ADHOC types — App Store types take none). The response carries profileContent (base64 .mobileprovision) immediately. Profiles are immutable — to change one later, delete and re-create.
asc_post_promoted_purchaseCreate a PromotedPurchaseCreate a PromotedPurchase on an app, linking it to ONE IAP (inAppPurchaseV2Id) OR ONE subscription (subscriptionId) — pass exactly one. Required: appId + visibleForAllUsers. Optional: enabled. Wire-key gotchas: Swift `isVisibleForAllUsers` / `isEnabled` → wire `visibleForAllUsers` / `enabled` (same is-prefix-strip family as v0.13 AppCustomProductPage.isVisible). New promoted purchases land in PREPARE_FOR_SUBMISSION.
asc_post_review_submissionCreate a review submission (draft)Create a DRAFT review submission on an app. Required: appId. Optional: platform (Apple recommends passing it; defaults to all platforms the app supports). The submission lands in READY_FOR_REVIEW state — you must add at least one item (asc_post_review_submission_item) before submitting. Submitting before adding items returns an Apple validation error. This is the V2 surface. The legacy V1 /v1/appStoreVersionSubmissions endpoint still exists but only supports single-version submissions and is being deprecated; new code should use V2.
asc_post_review_submission_itemAdd an App Store version to a review submissionAdd an App Store version as an item under a draft review submission. The parent submission must be in READY_FOR_REVIEW state (drafts only — once submitted, the item set is frozen). One item per call. v0.11 only exposes the appStoreVersion slot; Apple's ReviewSubmissionItem is polymorphic and also accepts IAPs, in-app events, custom product page versions, and experiments — those slots will be wrapped when those domains ship in v0.12+.
asc_post_sandbox_testers_clear_purchase_historyClear the purchase history of sandbox testersWipe the SANDBOX purchase records of the listed testers so IAP/subscription flows can be re-tested from scratch (intro-offer eligibility resets too). Sandbox-only — production purchases are never touched. Relationships-only POST to /v2/sandboxTestersClearPurchaseHistoryRequest.
asc_post_subscriptionCreate a subscriptionCreate an auto-renewable Subscription inside an existing group. Required: groupId + name + productId. ** productId is PERMANENT. ** It is the StoreKit product identifier the app requests and every receipt keys off it; it cannot be changed later and cannot be reused on this account even after the subscription is deleted. Pick the final reverse-DNS string now (e.g. "com.example.app.pro.monthly"). name is INTERNAL ONLY — customers see the per-locale copy from asc_post_subscription_localization instead. subscriptionPeriod is optional at create (Apple allows setting it later) but required before th…
asc_post_subscription_availabilityReplace the availability of a subscription (full replacement)Set where a subscription is sold. Pass the FULL territory list (bare 3-letter ISO codes) every time; missing territories get removed. availableInNewTerritories controls whether Apple auto-adds the subscription when new storefronts launch. Writes the subscription's UPFRONT plan availability (the replacement for the deprecated SubscriptionAvailability): PATCHes the existing record, or POSTs one with planType UPFRONT if the subscription has none. Use asc_post_subscription_plan_availability for the MONTHLY (12-month commitment) plan. ⚠️ Removing a territory pulls the subscription from sale there —…
asc_post_subscription_groupCreate a subscription groupCreate a SubscriptionGroup on an app — the container every auto-renewable subscription must live in. This is step 1 of monetizing an app with subscriptions; nothing else in the subscription surface works until a group exists. referenceName is INTERNAL ONLY (App Store Connect + sales reports); customers never see it. Give the group a customer-facing heading with asc_post_subscription_group_localization afterwards. An app may have several groups, but a customer can hold only ONE active subscription per group — so products that should be mutually exclusive (Monthly vs Yearly of the same plan) bel…
asc_post_subscription_group_localizationCreate a subscription group localizationGive a subscription group its CUSTOMER-FACING heading for ONE locale. Required: groupId + name + locale. Optional: customAppName (overrides how the app name reads inside the subscription sheet — usually omit it). This is the name customers see above the plan choices in the App Store subscription sheet and in Settings -> Subscriptions, so it should read as a product ("MeritValue Premium"), not as an internal label. The (group, locale) pair must be unique, and locale is immutable afterwards. A group with no localization at all cannot be submitted for review.
asc_post_subscription_group_submissionSubmit a subscription group for review (standalone)POST a subscriptionGroupSubmission — sends a subscription group's pending changes (group localizations + member subscriptions' metadata) to App Review without a version release. Irreversible once submitted.
asc_post_subscription_introductory_offerCreate a subscription introductory offerCreate an introductory offer on a subscription. Server-side checks: pricePointId required unless offerMode=FREE_TRIAL; numberOfPeriods required when offerMode=PAY_AS_YOU_GO, and sent for PAY_UP_FRONT too (Apple requires it — defaults to 1, the single up-front period); territoryId omitted = Apple's "all territories" wildcard (uses the literal price point in every market — for PPP-aware multi-territory offers, create one per territory). startDate must be ≥ today+24h (Apple); ≥7 days recommended.
asc_post_subscription_localizationCreate a subscription localizationCreate a SubscriptionLocalization for ONE subscription + ONE locale. Required: subscriptionId + name (30 chars max) + locale. Optional: description (45 chars max). The (subscription, locale) pair must be unique. Locale is immutable post-create.
asc_post_subscription_offer_codeCreate a subscription offer code campaignCreate an offer-code campaign atomically: name + customer eligibilities + mode + duration + all per-territory prices in one POST. Apple caps active campaigns at 10 per subscription; this tool pre-flights the count and refuses if at the limit. Immutability: name, customerEligibilities, offerEligibility, offerMode, duration, numberOfPeriods, and per-territory prices are ALL immutable after creation. PATCH only toggles `active`. Apple does NOT expose DELETE on this resource — the only retirement path is PATCH active=false, which renders the campaign inert but leaves the row in App Store Connect (…
asc_post_subscription_offer_code_custom_codeCreate a custom (multi-use) offer codeCreate a custom multi-use code against an existing offer-code campaign. The developer picks the redeemable string (customCode), the redemption cap (numberOfCodes — MINIMUM 500, ceiling 25,000), and optionally an expiration date. The same string is then redeemable by up to numberOfCodes customers, first-come-first-served. customCode must be unique across the subscription's custom codes. Immutable post-create — PATCH only flips `active`. Apple does NOT expose DELETE on this resource (same constraint as the parent campaign).
asc_post_subscription_offer_code_one_time_use_codesGenerate a batch of one-time-use offer codesCreate a batch of unique single-redemption codes against an existing offer-code campaign. Apple generates the code strings server-side — retrieve them with asc_export_subscription_offer_code_one_time_use_values. numberOfCodes and expirationDate are immutable after creation; PATCH only toggles `active` (deactivating revokes unredeemed codes in the batch). Apple's per-batch cap is 25,000 codes (working assumption; if Apple disagrees, the error surfaces verbatim).
asc_post_subscription_plan_availabilityCreate a subscription plan availabilityCreate a SubscriptionPlanAvailability — per-plan-type (planType MONTHLY | UPFRONT) territory availability on a subscription. Pass the full territory list as bare 3-letter ISO codes. Unlike subscription/IAP availability this resource supports PATCH afterwards (asc_patch_subscription_plan_availability).
asc_post_subscription_priceSchedule a subscription price changeSet the price of a single (subscription, territory) — either the initial price or a scheduled change. ** ORDER MATTERS (both steps confirmed live): territory availability -> undated baseline price -> dated changes. ** (1) The subscription must already be AVAILABLE in the territory (asc_post_subscription_availability). If it is not, this call 409s with ENTITY_ERROR.RELATIONSHIP.INVALID pointing at the price point — misleading, since the price point is fine; Apple just cannot price a territory the product is not sold in. (2) ** OMIT startDate for a subscription's FIRST price in a territory. ** T…
asc_post_subscription_promotional_offerCreate a subscription promotional offerCreate a promotional offer with name + offerCode + mode + duration plus all per-territory prices in one atomic POST. Apple caps active promo offers at 10 per subscription; this tool pre-flights the count and refuses if at the limit. Immutability: name, offerCode, mode, duration, and numberOfPeriods are immutable after creation — to change any of them, delete and re-create. Use asc_patch_subscription_promotional_offer_prices to update prices only. numberOfPeriods is required for PAY_AS_YOU_GO; for PAY_UP_FRONT it defaults to 1 (single up-front period) when omitted. offerCode must be unique with…
asc_post_subscription_submissionSubmit a subscription for review (standalone)POST a subscriptionSubmission — sends a subscription's pending metadata changes to App Review without a version release. The subscription needs complete metadata including its review screenshot (asc_upload_subscription_review_screenshot). Irreversible once submitted.
asc_post_subscription_win_back_offerCreate a subscription win-back offerCreate a win-back offer targeting lapsed subscribers, with eligibility rules + schedule + all per-territory prices in one atomic POST. Immutability: referenceName, offerId, duration, offerMode, periodCount, targetSubscriptionPlanType and the PRICES are immutable post-create — to change any of them, delete and re-create (use asc_patch_subscription_win_back_offer to change eligibility, dates, priority, or promotionIntent). offerId must be unique within the subscription (StoreKit offer identifier); this tool pre-flights for a collision and refuses on a duplicate. periodCount is required for every…
asc_post_treatment_localizationCreate a treatment localizationPOST /v1/appStoreVersionExperimentTreatmentLocalizations — add a locale to a treatment (locale required, e.g. "en-US"). Then create variant screenshot/preview sets against it with asc_post_app_screenshot_set / asc_post_app_preview_set (parentType appStoreVersionExperimentTreatmentLocalizations) and upload with the v0.13 composite tools.
asc_post_user_invitationInvite a person to the team (confirm-gated)🔒 TEAM-CHANGE GATE: refuses and sends nothing unless confirm: true; the refusal shows who would be invited with which roles and apps. Sends an App Store Connect invitation email. Without allAppsVisible: true (or an all-app role like ADMIN / FINANCE), pass visibleAppIds — otherwise the person sees no apps. Invitations can't be edited: cancel and re-invite.
asc_post_version_experimentCreate a product-page experimentPOST /v2/appStoreVersionExperiments — create an A/B test on the product page. ALL THREE attributes required: name, platform, trafficProportion (1–99% of page traffic, split across treatments). Created in PREPARE_FOR_SUBMISSION; it shows nothing publicly until submitted (V2 review submission flow, v0.11 tools) AND explicitly started (asc_patch_version_experiment started=true after APPROVED). Build flow: create → add treatments → add treatment localizations → attach variant screenshots via the v0.13 asset tools → submit → start.
asc_post_webhookCreate a webhookPOST /v1/webhooks — register an HTTPS endpoint to receive App Store Connect event notifications for ONE app. ALL FIVE attributes are required: name, url (HTTPS), secret (HMAC-SHA256 signing key — store it on the receiving side first; it is write-only and never readable back), eventTypes (at least one of the 12), enabled. After creating, verify the endpoint with asc_post_webhook_ping. Useful pairing: BETA_FEEDBACK_*_CREATED events + the v0.16 asc_list_beta_feedback_* read tools.
asc_post_webhook_pingSend a test ping to a webhookPOST /v1/webhookPings — have Apple send a test event to the webhook endpoint NOW (arrives with ping=true in the payload). The response resource is id-only; check the result via asc_list_webhook_deliveries (the ping shows up as a delivery). Use right after create/patch to verify the endpoint + signature handling.
asc_post_webhook_redeliveryRetry a webhook deliveryPOST /v1/webhookDeliveries — re-send a previous delivery (typically a FAILED one from asc_list_webhook_deliveries). The body carries only a `template` relationship pointing at the existing delivery; Apple creates a NEW delivery attempt with redelivery=true. The original record is untouched.
asc_remove_beta_group_buildsUnassign builds from a beta groupUnassign builds from a beta group via DELETE /v1/betaGroups/{id}/relationships/builds. The build itself is not deleted; only the group→build linkage is removed. Testers in the group lose visibility of these builds in TestFlight.
asc_remove_beta_group_testersRemove beta testers from a groupRemove testers from a beta group via DELETE /v1/betaGroups/{id}/relationships/betaTesters. Pass only the IDs you want removed — Apple uses the body, not a "clear all" semantic. The BetaTester records themselves are NOT deleted (use asc_delete_beta_tester for that). Removed testers immediately lose access to the group's builds in TestFlight.
asc_remove_game_center_app_version_compatibilityDescription is built at runtime.
asc_remove_game_center_leaderboard_set_membersRemove leaderboards from a setRemove leaderboards from a leaderboard set (DELETE …/relationships/gameCenterLeaderboards). The leaderboards themselves stay.
asc_remove_user_visible_appsRemove a user's access to apps (confirm-gated)🔒 TEAM-CHANGE GATE: refuses and sends nothing unless confirm: true; the refusal lists the apps by name and what the user loses. Removes only the listed apps from the user's visible-apps list. Has no effect while the user has allAppsVisible (or an all-app role like ADMIN).
asc_set_game_center_challenge_leaderboardSet the leaderboard of a Game Center challengePATCH /v1/gameCenterChallenges/{id}/relationships/leaderboardV2. Points the challenge at a v2 leaderboard.
asc_set_game_center_leaderboard_set_membersReplace (and reorder) the leaderboards of a setReplace the member list of a leaderboard set (PATCH …/relationships/gameCenterLeaderboards) — the list order becomes the display order. Leaderboards left out are removed from the set.
asc_set_user_visible_appsReplace a user's visible apps (confirm-gated)🔒 TEAM-CHANGE GATE: refuses and sends nothing unless confirm: true; the refusal lists the apps by name and what the user loses. REPLACES the user's visible-apps list with exactly appIds — every app not listed is removed. An empty list removes all. Has no effect while the user has allAppsVisible (or an all-app role like ADMIN).
asc_sign_introductory_offer_eligibilitySign an introductory-offer eligibility overrideSign a JWS that overrides StoreKit's default introductory-offer eligibility check. Use this when you want to grant a returning customer a fresh introductory offer (which StoreKit normally only allows once per subscription group per Apple ID), or deny an offer the customer would otherwise be eligible for. Same signing key as promo offers; aud="introductory-offer-eligibility". Pair with StoreKit 2's Product.PurchaseOption.introductoryOfferEligibility(...). Signature valid for 24 hours from iat.
asc_sign_promotional_offerSign a promotional offer (JWS v2)Sign a promotional-offer redemption payload using the JWS v2 format (recommended for new code; introduced WWDC 2025, back-deployed to iOS 15). Use this when your iOS app uses StoreKit 2's newer Product.PurchaseOption.promotionalOffer / subscriptionPromotionalOffer APIs. Returns the JWS compact serialization (header.payload.signature, base64url-encoded). Pass it directly to the StoreKit API expecting a JWS string. transactionId is optional but strongly recommended — use the customer's appTransactionId. The signature is valid for 24 hours from the iat claim; re-sign per redemption attempt.
asc_sign_promotional_offer_legacySign a promotional offer (legacy format)Sign a promotional-offer redemption payload using the legacy ECDSA-concatenated format. Use this when your iOS app uses StoreKit 1 (SKPaymentDiscount) or StoreKit 2's Product.PurchaseOption.promotionalOffer(offerID:keyID:nonce:signature:timestamp:). For new code on iOS 15+, prefer asc_sign_promotional_offer (JWS v2). Returns the base64 signature plus the nonce, timestamp, and keyId — pass all four back to StoreKit alongside the offerID. The signature is valid for 24 hours from timestampMs; re-sign per redemption attempt, do not pre-sign and cache.
asc_test_game_center_matchmaking_rule_setTest a Game Center matchmaking rule setPOST /v1/gameCenterMatchmakingRuleSetTests. Runs made-up matchmaking requests through a rule set and returns which requests Apple would match and onto which teams. No real players are involved and nothing is saved on the rule set — use it to check rules before pointing a live queue at them.
asc_upload_app_clip_advanced_experience_imageUpload an App Clip advanced experience image (composite)Composite tool. Reads localFilePath, reserves an advanced experience image, PUTs every chunk, then commits with the file's MD5 + uploaded=true. Returns the image ID to pass as headerImageId to asc_post_app_clip_advanced_experience / asc_patch_app_clip_advanced_experience. Same image rules as the default experience header (3:2 PNG or JPEG, no transparency).
asc_upload_app_clip_header_imageUpload an App Clip header image (composite)Composite tool. Reads localFilePath, reserves a header image on one default experience localization, PUTs every chunk to Apple storage, then commits with the file's MD5 + uploaded=true. The image must be a 3:2 PNG or JPEG without transparency; Apple checks the size while processing (see assetDeliveryState). A localization holds one; delete the old one first to replace it.
asc_upload_app_encryption_declaration_documentUpload an encryption-declaration document from a local file (composite)Composite tool. Reads localFilePath from disk (typically a PDF questionnaire), reserves an AppEncryptionDeclarationDocument under the given declaration with fileName + fileSize derived from the file, PUTs every uploadOperation chunk to Apple storage in sequence, then commits with sourceFileChecksum (md5 hex) + uploaded=true. Returns the final committed resource + per-chunk summary. Tilde paths (~/...) are expanded. Same protocol as v0.13 asc_upload_screenshot.
asc_upload_app_event_screenshotUpload an event screenshot from a local file (composite) (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced in-app event screenshots with the App Asset Library. Use asc_upload_asset_library_image + asc_post_asset_library_placement (parentType appEventLocalizations, placementType EVENT_CARD_ASSET or EVENT_DETAILS_PAGE_ASSET) instead; asc_list_localization_placements lists what a localization shows. Composite tool. Reads localFilePath from disk, reserves an AppEventScreenshot under the given event localization for the given asset slot (EVENT_CARD / EVENT_DETAILS_PAGE), PUTs every uploadOperation chunk to Apple storage in sequence, then commits …
asc_upload_app_event_video_clipUpload an event video clip from a local file (composite) (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced in-app event video clips with the App Asset Library. Use asc_upload_asset_library_video + asc_post_asset_library_placement (parentType appEventLocalizations, placementType EVENT_CARD_ASSET or EVENT_DETAILS_PAGE_ASSET) instead; asc_list_localization_placements lists what a localization shows. Composite tool. Reads localFilePath from disk (.mov H.264/HEVC recommended), reserves an AppEventVideoClip under the given event localization for the given asset slot (EVENT_CARD / EVENT_DETAILS_PAGE), PUTs every uploadOperation chunk to Apple stora…
asc_upload_app_previewUpload an app preview video from a local file (composite) (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced app preview sets with the App Asset Library. Use asc_upload_asset_library_video + asc_post_asset_library_placement (placementType APP_PREVIEW) instead; asc_list_localization_placements lists what a localization shows. Composite tool. Reads localFilePath from disk (Apple's recommended: .mov H.264/HEVC, ≤500 MB, 15–30s), reserves an AppPreview under the given set, PUTs every uploadOperation chunk to Apple storage in sequence, then commits with sourceFileChecksum + uploaded=true. Optionally sets previewFrameTimeCode (poster frame) at reser…
asc_upload_asset_chunkUpload one asset chunk to Apple storage (raw step 2)RAW step 2 of the three-step upload flow (App Asset Library images/videos, and the legacy screenshots / previews). Apple's reserve response returns uploadOperations[] — one per chunk, each with method (always PUT), url (Apple's pre-signed storage URL), length, offset, and requestHeaders. This tool executes ONE operation: reads localFilePath at [offset, offset+length), PUTs the bytes to url with all requestHeaders, and returns the HTTP status. Apple's storage URLs are pre-signed — no ASC bearer auth is applied. Tilde paths (~/...) are expanded.
asc_upload_asset_library_imageUpload an image to the App Asset Library (composite)Composite tool. Reads localFilePath, reserves a library image in the app's App Asset Library, PUTs every chunk to Apple storage, then commits with uploaded=true. Returns the committed image (UPLOAD_COMPLETE, then COMPLETE once Apple processes it and matches it to a spec). Uploading does not show it anywhere: follow with asc_post_asset_library_placement. Replaces asc_upload_screenshot / asc_upload_app_event_screenshot from the deprecated set-based API. category defaults to APP_SCREENSHOTS_AND_PREVIEWS; pass CREATIVE_ASSETS for a product-page header image (PRODUCT_PAGE_HEADER_ASSET), a search-re…
asc_upload_asset_library_videoUpload a video to the App Asset Library (composite)Composite tool. Reads localFilePath, reserves a library video (app preview or event video) in the app's App Asset Library, PUTs every chunk to Apple storage, then commits with uploaded=true. Optional previewFrameTimeCode sets the poster frame. Uploading does not show it anywhere: follow with asc_post_asset_library_placement. Replaces asc_upload_app_preview / asc_upload_app_event_video_clip from the deprecated set-based API. category defaults to APP_SCREENSHOTS_AND_PREVIEWS; pass CREATIVE_ASSETS for a product-page header video (PRODUCT_PAGE_HEADER_ASSET), a search-results asset or an event vide…
asc_upload_background_asset_fileUpload a background asset file (composite)Composite tool. Reads localFilePath, reserves it on an asset pack version as assetType ASSET (the pack archive) or MANIFEST, PUTs every chunk to Apple storage, then commits with the file's MD5 + uploaded=true. Apple then processes the version (asc_get_background_asset_version shows state and any errors).
asc_upload_buildUpload a build from a local fileUpload an .ipa or .pkg through the App Store Connect API in one call: create the build upload → reserve the file → PUT every chunk to Apple storage → commit with the file’s MD5. Version and build number must match the binary’s Info.plist and the build number must be new. Returns the upload id; Apple then processes it (minutes) — poll asc_get_build_upload or asc_list_build_uploads, which show the build id when COMPLETE or the error codes when FAILED. If a step fails after the slot exists, the slot id is reported so you can retry or asc_delete_build_upload it. dryRun checks the file and prints b…
asc_upload_game_center_activity_imageUpload a Game Center activity image (composite)Composite tool. Reads localFilePath, reserves a activity image on a localization or as a version's default image, PUTs every chunk to Apple storage, then commits with uploaded=true. Pass exactly one of localizationId or versionId.
asc_upload_game_center_challenge_imageUpload a Game Center challenge image (composite)Composite tool. Reads localFilePath, reserves a challenge image on a localization or as a version's default image, PUTs every chunk to Apple storage, then commits with uploaded=true. Pass exactly one of localizationId or versionId.
asc_upload_screenshotUpload a screenshot from a local file (composite) (deprecated)DEPRECATED in App Store Connect API 4.5.1, which replaced screenshot sets with the App Asset Library. Use asc_upload_asset_library_image + asc_post_asset_library_placement instead; asc_list_localization_placements lists what a localization shows. Composite tool. Reads localFilePath from disk, reserves an AppScreenshot under the given set with fileName + fileSize derived from the file, PUTs every uploadOperation chunk to Apple storage in sequence, then commits with sourceFileChecksum (md5 hex) + uploaded=true. Returns the final committed resource + a per-chunk summary. Tilde paths (~/...) are e…
ppp_apply_proposalApply PPP rebalance proposalCompute a PPP rebalance proposal, then schedule the price changes against App Store Connect. Works for subscriptions (per-territory POSTs with preserveCurrentPrice grandfathering), paid apps (one whole-schedule-replace POST — wipes any manual override or pending change not in the proposal), IAPs (same whole-schedule-replace semantics as apps), subscription introductory offers (one POST to /v1/subscriptionIntroductoryOffers per change row, paced at maxConcurrency), subscription promotional offers (single atomic POST to /v1/subscriptionPromotionalOffers creating the offer + all per-territory pri…
ppp_compute_proposalCompute PPP rebalance proposalCompute a proposed per-territory price schedule using the bundled Apple Music index as the PPP signal. Read-only — does not write to App Store Connect. Works for subscriptions (resourceType: "subscription", default), paid apps (resourceType: "app"), IAPs (resourceType: "iap"), subscription introductory offers (resourceType: "introductoryOffer" — pass subscriptionId, offerMode, duration; PAY_AS_YOU_GO also needs numberOfPeriods, PAY_UP_FRONT defaults it to 1), subscription promotional offers (resourceType: "promotionalOffer" — also needs promoOfferName and promoOfferCode), and subscription offe…
ppp_load_indexLoad Apple Music PPP indexReturns the bundled Apple Music Individual plan price snapshot used by the ppp_* tools. Refresh by editing data/apple-music-prices.json upstream.
Compare and alternatives
Featured in
Signals
- Stars
- 5
- Forks
- 2
- Open issues
- 0
- Weekly downloads
- 1,120
- Last commit
- Oct 23, 2026 (6 days ago)
- Last release
- Oct 23, 2026 (6 days ago)
- Last package publish
- Oct 23, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.akoskomuves/appstoreconnect-mcp- Version
- 1.0.1
- Auth
- No auth
- Packages
- npm @akoskomuves/appstoreconnect-mcp
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 25, 2026
Cite this page
Appstoreconnect MCP. Agent Mart. https://agentmart.dev/connectors/akoskomuves-appstoreconnect-mcp (last updated 2026-10-25)